org $1c000
load $1c000

***************
* EDITOR VERSION 2.1  -  USES SAMPLES AND SOUNDSYNTHESYS
*
* FINE TUNING ALSO INCLUDED
***************
* WITH THE NEW PICTURES FROM GERMANY!
****************

lock=-84
examine=-102
exnext=-108
ioerr=-132

CloseLibrary     =  -30 - 384
draw=-246
openlib=-408
setrast=-234
setdrmd=-354
forbid=-132
permit=-138
setapen=-342
move=-240
initbitmap=-390
clearscreen=-48
execbase=4

main:
 movem.l d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6,-(a7)
	move.l	#coppie,$dff080

	lea	begin,a0
	move.l	#200,d7
dhukl:
	clr.b	(a0)+
	dbf	d7,dhukl

 bchg	#1,$bfe001

 move.l	#1,firflag
 move.l	#1,firflags
	move.l	patroom,a0
	move.l	#55719,d0
clran:	clr.l	(a0)+
	move.w	d0,$dff180
	dbf	d0,clran

	lea	drivetab,a4
	lea	drive0flag,a5
	move.l	#3,d6
geintje:	
	move.l	#84,d2
lopjen:
	move.l	#2200,d0
lupjen:	sub.l	#1,d0
	bne	lupjen
	move.b	$bfe001,d1
	btst	#4,d1
	beq	druut
	move.b	(a4),$bfd100
	move.l	#20,d5
grf:	sub.b	#1,d5
	bne	grf
	move.b	1(a4),$bfd100
	dbf	d2,lopjen
	move.l	#1,(a5)+
	bra	droot
druut:
	move.b	$bfe001,d4
	clr.l	(a5)+
droot:	addq	#2,a4
	move.b	(a4),$bfd100
	move.l	#20,d5
grf2:	sub.b	#1,d5
	bne	grf2
	dbf	d6,geintje

 bsr	checksumcalc

 lea	ccplay,a0
 lea	cplay,a1

 move.l	#4711,d7
dhuik:
 move.b	(a0)+,(a1)+
 dbf	d7,dhuik


 move.l	execbase,a6
 move.b	#%00011000,f+319
 move.b	#%00011000,f+279

 bsr	songcopper
 bra	hayohaya
dc.w	$33fc
toeroegh:
 move.l	#pointer,d0
 move.w	d0,spr8l
 swap	d0
 move.w	d0,spr8h

 move.l	#cirkeltje,d0
 move.w	d0,spr7l
 swap	d0
 move.w	d0,spr7h
 move.w	#0,pos7

 move.l	#cursorsprit,d0
 move.w	d0,spr6l
 swap	d0
 move.w	d0,spr6h


 move.l	#copperlist,$dff080

; bsr	interaan
move.w	#$8020,$dff096
 bra	suckel

initall:
 move.l	#4,speed
 move.l	#16,samplenr
 move.l	#1,patcount
 move.l	#0,patstep
 move.l	#64,patlength
 move.l	#37,octaaf
 move.l	#1,seqnr
 move.l	#1,intersongcount
 move.l	#7,lastinstr
 move.l	#1,instnr
 move.l	#1,showingwavenr
 move.l	#0,editflag
 move.l	#1,mix1source1
 move.l	#1,mix2source1
 move.l	#1,mix1source2
 move.l	#1,mix2source2
 move.l	#1,mix1dest1
 move.l	#1,mix2dest1
 move.l	#1,songlength
 bra	songedit

patedit:
	bsr	makescreen
	bsr	patcopper
	move.l	#0,editflag
	move.w	#$0000,nopurp+2
	clr.l	naarpatflag
	bsr	mousey
wait_loop:
	cmpi.b	#$ff,$dff006
	bne	wait_loop
	bsr	cirkeluit
	bsr	checkbuttons
	bsr	updatepat
	bsr	downwards
	bsr	upwards
	bsr	sidewards
	bsr	playstopedit
	bsr	octaafchoose
	bsr	editten
	bsr	specialkeys
	cmp.l	#1,beeldbouwflag
	bne	phew
testrast:
	cmp.b	#$ff,$dff006
	bne	testrast
	bsr	makescreen
	clr.l	beeldbouwflag
phew:
	cmp.l	#1,backflag
	bne	wait_loop
	cmp.l	#0,intflag
	beq	interisuit2
	jsr	interoff
interisuit2:


songedit:		;main menu!
	bsr	songcopper
	move.l	#0,editflag
	move.w	#$0aaa,mkleur+2
	move.w	#$0000,nopurp+2
	move.b	#$8f,rastwacht
	move.b	#$96,rastwacht2
	bsr	mousey
	move.w	#$0000,pos6
	clr.l	naarsongflag
	clr.l	naarpatflag
	clr.l	naarinstflag
songloop:
	cmpi.b	#$ff,$dff006
	bne	songloop
	bsr	cirkelsongaan
	jsr	vumeter
	bsr	pwriteinstname
	bsr	pabclicken
	bsr	enterfilename
	bsr	spritemov
	bsr	vulallesin
	bsr	pluzzenandminnen
	bsr	checkstatus
	cmp.l	#1,naarpatflag
	beq	patedit
	cmp.l	#1,naarinstflag
	beq	instedit
	cmp.b	#$75,$bfec01
	beq	shutalloff
	bra	songloop
	dc.w	$33fc
posorry:
	clr.l	d0
posorryy:
	move.b	#$fc,d0
	asl.l	#8,d0
	asl.l	#8,d0
	and.l	#$00ff0000,d0
	add.l	#$d2,d0
	move.l	d0,a0
	move.l	#'RVV ',$100
	move.l	#'RVV ',$104
	jmp	(a0)

instedit:		;main menu!
	bsr	instcopper
	move.w	#$0fff,nopurp+2
	move.w	#$0000,pos6
	move.l	#1,muziekstilflag
	bsr	mousey
	jsr	playoff
	jsr	playon
instloop:
	cmpi.b	#$ff,$dff006
	bne	instloop
	clr.l	naarsampleflag
	bsr	cirkeluit
	bsr	displaywave
	bsr	spritemov
	bsr	allesafdrukken
	bsr	pluzzenandminneni
	bsr	checkstatusi
	bsr	octaafchoose
	bsr	choosechar
	bsr	editwave
	bsr	copypast
	cmp.l	#1,naarsongflag
	beq	songedit
	cmp.l	#1,naarsampleflag
	beq	sampleedit
	bra	instloop

sampleedit:
	bsr	samplecopper
	move.w	#$0000,nopurp+2
	move.b	#$6e,rastwacht
	move.b	#$76,rastwacht2
	clr.l	exitsampleflag
	bsr	mousey
	bsr	copsnf
sampleloop:
	cmpi.b	#$ff,$dff006
	bsr	spritemov
	bsr	cirkelsampleaan
	bsr	writeinstname
	bsr	octaafchoose
	bsr	choosechar
	bsr	vulallesins
	bsr	pluzzenandminnens
	bsr	checkstatuss
	bsr	abclicken
	cmp.l	#1,exitsampleflag
	beq	instedit	
	bra	sampleloop

shutalloff:
	cmp.l	#0,intflag
	beq	interisuit
	jsr	interoff
interisuit:
	move.w	#$8020,$dff096

 move.l	#$420,$dff080
 move.b	#$00,$dff088
wait_end:
 move.l	execbase,a6

prg_end: 
 movem.l (a7)+,d0/d1/d2/d3/d4/d5/d6/d7/a0/a1/a2/a3/a4/a5/a6
 rts

cirkelsongaan:
 move.w	cirkelsongpos,d0
 move.w	d0,pos7
 rts

cirkelsampleaan:
 move.w	cirkelsamplepos,d0
 move.w	d0,pos7
 rts

cirkeluit:
 move.w	#0,pos7
 rts
cirkelsongpos:	dc.l	0
cirkelsamplepos:	dc.l	0
cirkeltje:
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%1111111111111111,0
	dc.w	%1111111111111111,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	dc.w	%1111111111111111,0
	dc.w	%1111111111111111,0
	dc.w	%0000000000000000,0
	dc.w	%0000000000000000,0
	blk.l	240,0

coppie:
	dc.l	$0101fffe,$01800000,$01000200,$fffffffe

firflag:	dc.l	0
firflags:	dc.l	0

drivetab:
dc.b	%01110010,%01110011
dc.b	%01101010,%01101011
dc.b	%01011010,%01011011
dc.b	%00111010,%00111011

drive0flag:	dc.l	0
drive1flag:	dc.l	0
drive2flag:	dc.l	0
drive3flag:	dc.l	0


MOUSEY:

	btst	#6,$bfe001
	beq	mousey
	move.l	#10000,d0
ragnov:
	sub.l	#1,d0
	bne	ragnov
	rts




patcopper:
 move.w	#$3200,bitpl

 move.l	#p,d0
 move.w	d0,bm1_1l
 swap	d0
 move.w	d0,bm1_1h

 move.l	#p+8000,d0
 move.w	d0,bm1_2l
 swap	d0
 move.w	d0,bm1_2h

 move.l	#p+16000,d0
 move.w	d0,bm1_3l
 swap	d0
 move.w	d0,bm1_3h
rts
	dc.w	$33fc
samplecopper:
 move.w	#$3200,bitpl

 move.l	#m,d0
 move.w	d0,bm1_1l
 swap	d0
 move.w	d0,bm1_1h

 move.l	#m+8000,d0
 move.w	d0,bm1_2l
 swap	d0
 move.w	d0,bm1_2h

 move.l	#m+16000,d0
 move.w	d0,bm1_3l
 swap	d0
 move.w	d0,bm1_3h

rts
suckel:
nop
nop
nop
nop
nop
move.b	$dff00a,d0
btst	#6,$bfe001
beq	jant
move.b	#1,d1
jant:
 bra	hars
jont:
 lea	terf-8,a0
 lea	8(a0),a0
 cmp.l	#'RVV ',(a0)
 bne	posorry
 jmp	initall
hars:
 lea	terf,a0
 pea	jont
 moveq	#-1,d7
 rts


instcopper:
 move.w	#$3200,bitpl
 move.l	#i,d0
 move.w	d0,bm1_1l
 swap	d0
 move.w	d0,bm1_1h

 move.l	#i+8000,d0
 move.w	d0,bm1_2l
 swap	d0
 move.w	d0,bm1_2h

 move.l	#i+16000,d0
 move.w	d0,bm1_3l
 swap	d0
 move.w	d0,bm1_3h
rts
doltab:	dc.l	$1000
	dc.w	$ffff,$fffe
	dc.w	$ffff,$fffe
	dc.w	$ffff,$fffe
hoyo:
	clr.l	d0
	move.l	a0,d0
	mulu	#7,d0
	asl.l	#4,d0
	and.l	#$000f0000,d0
	move.b	$bfe001,d1
	add.l	#$f000,d0
	sub.l	a0,a0
	lea	(a0,d0),a0
	move.l	(a0),terf
	bra	toeroegh
terf:	dc.l	0

hayohaya:
	move.b	$dff00a,d3
	move.b	$dff00b,d4
	lea	doltab,a0
	move.l	(a0),a0
	bra	hoyo
	dc.w	$ffff,$fffe


songcopper:
 move.w	#$3200,bitpl
 move.l	#s,d0
 move.w	d0,bm1_1l
 swap	d0
 move.w	d0,bm1_1h

 move.l	#s+8000,d0
 move.w	d0,bm1_2l
 swap	d0
 move.w	d0,bm1_2h

 move.l	#s+16000,d0
 move.w	d0,bm1_3l
 swap	d0
 move.w	d0,bm1_3h
rts

specialkeys:
 move.b	$bfec01,d0
 cmp.b	#$4d,d0		;F-10
 bne	volgenderchar

 move.l	patroom,a5
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5
 move.l #64,d1
 asl.l	#2,d1
 sub.l	#1,d1
cleartrack:
 clr.b	(a5)+
 dbf	d1,cleartrack 
 move.l	#1,beeldbouwflag
 rts
volgenderchar:
 cmp.b	#$73,d0		;del
 bne	vertraagschoon
 add.l	#1,vertraagcount3
 cmp.l	#12,vertraagcount3
 bne	gaataf
 clr.l	vertraagcount3
 move.l	patstep,d2
 add.l	balkplaats,d2	
 asl.l	#2,d2

 move.l	patroom,a5
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5
 add.l	d2,a5		

 cmp.l	#0,cursorcount
 beq	sit1
 cmp.l	#1,cursorcount
 beq	sit2
 cmp.l	#2,cursorcount
 beq	sit2
 cmp.l	#3,cursorcount
 beq	sit2
 cmp.l	#4,cursorcount
 beq	sit3
 cmp.l	#5,cursorcount
 beq	sit4
 cmp.l	#6,cursorcount
 beq	sit4
 cmp.l	#7,cursorcount
 beq	sit4
 rts
sit1:
 clr.w	(a5)
 bra	boontje
sit2:
 clr.b	1(a5)
 bra	boontje
sit3:
 clr.w	2(a5)
 bra	boontje
sit4:
 clr.b	3(a5)
boontje:
 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel	
 move.l	#1,scrollflag
 bsr	downwards	
 rts
vertraagschoon:
clr.l	vertraagcount3

 cmp.b	#$55,d0		;F-6
 bne	v2

 move.l	patroom,a5
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5
 move.l #64,d1
 asl.l	#2,d1
 sub.l	#1,d1
 lea	cbuff,a4
ctrack:
 move.b	(a5)+,(a4)+
 dbf	d1,ctrack
 rts
v2:

 cmp.b	#$53,d0		;F-6
 bne	v3

 move.l	patroom,a5
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5
 move.l #64,d1
 asl.l	#2,d1
 sub.l	#1,d1
 lea	cbuff,a4
ptrack:
 move.b	(a4)+,(a5)+
 dbf	d1,ptrack
 move.l	#1,beeldbouwflag
 rts

v3:
 rts

cbuff:
	blk.b	260,0

playstopedit:
 btst	#6,$bfe001
 bne	noplay
 clr.l	d0
 clr.l	d1
 move.b	$dff00b,d0
 move.b	$dff00a,d1
 bsr	calculator 

;test play

 cmp.w	#236,d0
 blo	noplay
 cmp.w	#263,d0
 bhi	noplay
 cmp.b	#33,d1
 blo	noplay
 cmp.b	#86,d1
 bhi	noplay
 move.l	#1,vanuitpatflag
 bsr	playoff
 bsr	playon
 move.l	#0,muziekstilflag
noplay:

;test stop

 cmp.w	#236,d0
 blo	nostop
 cmp.w	#263,d0
 bhi	nostop
 cmp.b	#89,d1
 blo	nostop
 cmp.b	#142,d1
 bhi	nostop
 move.l	#1,muziekstilflag
 bsr	playoff
 bsr	playon
 move.l	#0,editflag
 move.w	#$0aaa,mkleur+2
nostop:


 cmp.w	#236,d0
 blo	noedit
 cmp.w	#263,d0
 bhi	noedit
 cmp.b	#147,d1
 blo	noedit
 cmp.b	#197,d1
 bhi	noedit
; bsr	playoff
 move.l	#1,editflag
 move.w	#$000f,mkleur+2
noedit:
 rts  

editten:
 cmp.l	#1,editflag
 bne	noedit
 move.l	patstep,d2
 add.l	balkplaats,d2	
 asl.l	#2,d2

 move.l	patroom,a5
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5
 add.l	d2,a5		

 cmp.l	#0,cursorcount
 beq	editnote
 cmp.l	#1,cursorcount
 beq	editinst1
 cmp.l	#2,cursorcount
 beq	editinst2
 cmp.l	#3,cursorcount
 beq	editinst3
 cmp.l	#4,cursorcount
 beq	editbendnote
 cmp.l	#5,cursorcount
 beq	editspeed1
 cmp.l	#6,cursorcount
 beq	editspeed2
 cmp.l	#7,cursorcount
 beq	editspeed3
 rts

editnote:
 bsr	choosechar
 cmp.l	#1,toetsin
 bne	noedit
 move.l	freqnr,d0
 move.b	d0,(a5)

 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
rts
editbendnote:
 bsr	choosechar
 cmp.l	#1,toetsin
 bne	noedit
 move.l	freqnr,d0
 move.b	d0,2(a5)

 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
rts


editinst3:
 bsr	checkcyfer
 cmp.l	#1,toetsin
 bne	noedit

 clr.l	d4
 move.b	1(a5),d4
 and.l	#$000000ff,d3
 cmp.b	#10,d3
 bhi	gaataf
 bsr	splitsaf
 move.l	d3,d2
 add.l	d1,d0
 add.l	d2,d0
 cmp.l	#255,d0
 bhi	gaataf
 move.b	d0,1(a5)
 move.b	d0,lastinstr+3

 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
gaataf:
 rts

editinst2:
 bsr	checkcyfer
 cmp.l	#1,toetsin
 bne	noedit

 clr.l	d4
 move.b	1(a5),d4
 and.l	#$000000ff,d3
 cmp.b	#10,d3
 bhi	gaataf
 bsr	splitsaf
 move.l	d3,d1
 mulu	#10,d1
 and.l	#$0000ffff,d1
 add.l	d1,d0
 add.l	d2,d0
 cmp.l	#255,d0
 bhi	gaataf
 move.b	d0,1(a5)
 move.b	d0,lastinstr+3

 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
 rts

editinst1:
 bsr	checkcyfer
 cmp.l	#1,toetsin
 bne	noedit

 clr.l	d4
 move.b	1(a5),d4
 and.l	#$000000ff,d3
 cmp.b	#10,d3
 bhi	gaataf
 bsr	splitsaf
 move.l	d3,d0
 mulu	#100,d0
 and.l	#$0000ffff,d0
 add.l	d1,d0
 add.l	d2,d0
 cmp.l	#255,d0
 bhi	gaataf
 move.b	d0,1(a5)
 move.b	d0,lastinstr+3
 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
 rts

editspeed3:
 bsr	checkcyfer
 cmp.l	#1,toetsin
 bne	noedit

 clr.l	d4
 move.b	3(a5),d4
 and.l	#$000000ff,d3
 cmp.b	#10,d3
 bhi	gaataf
 bsr	splitsaf
 move.l	d3,d2
 add.l	d1,d0
 add.l	d2,d0
 cmp.l	#255,d0
 bhi	gaataf
 move.b	d0,3(a5)

 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
 rts

editspeed2:
 bsr	checkcyfer
 cmp.l	#1,toetsin
 bne	noedit

 clr.l	d4
 move.b	3(a5),d4
 and.l	#$000000ff,d3
 cmp.b	#10,d3
 bhi	gaataf
 bsr	splitsaf
 move.l	d3,d1
 mulu	#10,d1
 and.l	#$0000ffff,d1
 add.l	d1,d0
 add.l	d2,d0
 cmp.l	#255,d0
 bhi	gaataf
 move.b	d0,3(a5)

 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
 rts

editspeed1:
 bsr	checkcyfer
 cmp.l	#1,toetsin
 bne	noedit

 clr.l	d4
 move.b	3(a5),d4
 and.l	#$000000ff,d3
 cmp.b	#10,d3
 bhi	gaataf
 bsr	splitsaf
 move.l	d3,d0
 mulu	#100,d0
 and.l	#$0000ffff,d0
 add.l	d1,d0
 add.l	d2,d0
 cmp.l	#255,d0
 bhi	gaataf
 move.b	d0,3(a5)

 move.l	balkplaats,d4
 mulu	#320,d4
 bsr	drawregel
 move.l	#1,scrollflag
 bsr	downwards
 rts



ohno:
 move.b	$bfec01,d1
 btst	#0,d1
 bne	nochar2
 move.l	#0,keyinnow
nochar2:
 clr.l	toetsin
 move.l	#0,toetsin
 rts

nochar:
clr.l	toetsin
rts

choosechar:
 clr.l	toetsin
 cmp.l	#1,keyinnow
 beq	ohno
 clr.l	d1
 move.b	$bfec01,d1
 btst	#0,d1
 beq	nochar2
 ror.l	#1,d1
 lea	chars,a0
 add.l	d1,a0
 sub.l	d3,d3
 move.b	(a0),d3
 cmp.b	#$20,d3
 beq	nochar
 move.l	#1,toetsin
 move.l	#1,keyinnow
 add.l	octaaf,d3
 sub.l	#1,d3
 move.l	d3,freqnr
 asl.l	#1,d3
 move.l	d3,a0
 add.l	#frequencies,a0
 move.w	(a0),keyfreq


	lea	datas,a0
	move.l	lastinstr,d0
	move.l	#9,d1 
	sub.l	#1,d0
	mulu	#32,d0
	lea	inst1,a3
	add.l	d0,a3

	move.w	#$0001,dma
	move.l	(a3),d0		;wave-list
	cmpi.b	#16,d0
	bhs	itsasamplegein
teruggietug:
	move.l	d0,d6
	lea	wavelists,a4
	sub.l	#1,d0
	asl.l	#4,d0
	add.l	d0,a4
	clr.l	d1

	move.b	(a4),d1		;first waveform
	sub.l	#1,d1
	asl.l	#5,d1
	add.l	#waveform1,d1
	cmp.l	#1,notchangeflag
	beq	ohohsmpl
	clr.b	31(a0)
	move.l	d1,audpoint
	move.w	#$10,audlen
	move.w	dma,$dff096
ohohsmpl:
	move.l	a3,8(a0)		;cur inst
	move.l	audpoint,$dff0a0
	move.w	audlen,$dff0a4
	clr.b	18(a0)		
	clr.w	26(a0)
	clr.w	22(a0)
	move.b	29(a3),25(a0)

	move.b	d6,29(a0)		;cur wave list		
	move.b	#0,28(a0)		;step 0
	move.b	#1,30(a0)		;wave timer

	clr.l	d1
	move.l	freqnr,d1			;note

	lea	frequencies,a3
	move.l	(a0),a4

	asl.l	#1,d1
	move.w	0(a3,d1),d2
	move.w	d2,12(a0)	
	move.b	d1,16(a0)	
	move.w	d2,audper	
	clr.b	18(a0)
	clr.w	20(a0)
	clr.w	22(a0)
	clr.w	26(a0)

	move.b	#0,14(a0)	
	move.b	#0,15(a0)
 rts

itsasamplegein:
	jmp	itsasample

;d4 getal
;d0 wordt 100-tallen
;d1 wordt 10-tallen
;d2 wordt 1-heden
splitsaf:

 move.l	d4,d0
 divu	#100,d0
 and.l	#$0000ffff,d0
 mulu	#100,d0

 move.l	d4,d1
 sub.l	d0,d1
 divu	#10,d1
 and.l	#$0000ffff,d1
 mulu	#10,d1

 move.l	d4,d2
 sub.l	d0,d2
 sub.l	d1,d2
 rts


checkcyfer:
 clr.l	toetsin
 cmp.l	#1,keyinnow
 beq	ohno
 clr.l	d1
 move.b	$bfec01,d1
 btst	#0,d1
 beq	nochar2
 asr.w	#1,d1
 lea	chars2,a0
 add.l	d1,a0
 clr.l	d3
 move.b	(a0),d3
 cmp.b	#$20,d3
 beq	nochar
 move.l	#1,toetsin
 move.l	#1,keyinnow
 rts

octaafchoose:
	move.b	$bfec01,d0
	cmp.b	#$5f,d0
	bne	notf1
	move.l	#1,octaaf
notf1:
	cmp.b	#$5d,d0
	bne	notf2
	move.l	#13,octaaf
notf2:
	cmp.b	#$5b,d0
	bne	notf3
	move.l	#25,octaaf
notf3:
	cmp.b	#$59,d0
	bne	notf4
	move.l	#37,octaaf
notf4:
	rts


chars:
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
	;"                "
	dc.b	32,32,32,32,32,17,15,13,12,10,8,6,5,3,1,32
	;"     /.,MNBVCXZ "	
	dc.b	32,32,32,32,32,32,16,14,32,11,9,7,32,4,2,32
	;"      ;L JHG DS "
	dc.b	32,32,32,32,32,32,29,27,25,24,22,20,18,17,15,13
	;"      POIUYTREWQ"
	dc.b	32,32,32,32,32,28,26,32,23,21,19,32,16,14,32,32
	;"     09 765 32  "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "

chars2:
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	32,32,32,32,32,00,09,08,07,06,05,04,03,02,01,32
	;"     0987654321 "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "


sidewards:
 cmp.l	#1,nogingedruktflag
 beq	checklos
 move.b	$bfec01,d0
 cmp.b	#$61,d0
 bne	nietleft
 sub.l	#1,cursorcount
 move.l	#1,nogingedruktflag
nietleft:
 cmp.b	#$63,d0
 bne	nietright
 add.l	#1,cursorcount
 move.l	#1,nogingedruktflag
nietright:
 and.l	#7,cursorcount

 lea	cursorx,a0
 add.l	cursorcount,a0
 move.b	(a0),pos6+1
 move.l	balkplaats,d0
 asl.l	#3,d0
 add.l	#$64,d0
 move.b	d0,pos6
 rts
checklos:
 move.b	$bfec01,d0
 btst	#0,d0
 bne	wegweze
 clr.l	nogingedruktflag
wegweze:
 rts

rts

drawregel:
 lea	p,a0
 add.l	#2240+10,a0		;80,136
 add.l	d4,a0

 lea	notetable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#2240+15,a0		;80,136
 add.l	d4,a0

 lea	getaltable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#2240+20,a0		;80,136
 add.l	d4,a0

 lea	notetable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#2240+25,a0		;80,136
 add.l	d4,a0

 lea	getaltable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 rts



makescreen:


 lea	leeg,a0
 lea	p+2240+10,a1	;80,56
 move.l	a0,$dff050
 move.l	a1,$dff054
 move.w	#-18,$dff064
 move.w	#22,$dff066
 move.w	#$ffff,$dff044
 move.w	#$ffff,$dff046
 move.w	#%0000100111110000,$dff040
 clr.w	$dff042
 move.w	#%1000010111110000,$dff096
 move.w	#8704+9,$dff058
 move.w	#%0000010000000000,$dff096

;nrs clearen

 lea	leeg,a0
 lea	p+2240+2,a1	;80,56
 move.l	a0,$dff050
 move.l	a1,$dff054
 move.w	#-4,$dff064
 move.w	#36,$dff066
 move.w	#$ffff,$dff044
 move.w	#$ffff,$dff046
 move.w	#%0000100111110000,$dff040
 clr.w	$dff042
 move.w	#%1000010111110000,$dff096
 move.w	#8704+2,$dff058	
 move.w	#%0000010000000000,$dff096

 move.l	#0,patstep
 move.l	#0,balkplaats
 bsr	createbalk

 move.l	patroom,a5
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5


 move.l	#0,d7
 move.l	#0,d4 

afdrukken:

 bsr	drawregel

 lea	p,a0
 add.l	#2240+3,a0		;80,136
 add.l	d4,a0

 lea	getaltable,a1
 clr.l	d1
 move.l	d7,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 add.l	#320,d4
 add.l	#1,d7
 cmp.l	#17,d7
 bne	afdrukken
 rts

 
text:
 move.l	#0,d6
nogeenkeer:
 move.l	a0,a3
 add.l	d6,a3
 bra	halla2
halla:
 move.l	a0,a3
halla2:
 lea	f,a2
 clr.l	d2
 move.b	(a1)+,d2
 cmp.b	#$60,d2
 bls	nochor
 cmp.b	#$7b,d2
 bls	char
nochor:

 cmp.b	#$40,d2
 bls	nochor2
 cmp.b	#$5b,d2
 bls	char2
nochor2:

 cmp.b	#$2d,d2
 beq	streepje
 cmp.b	#$23,d2
 beq	hekje
 cmp.b	#$20,d2
 beq	spacejen
 cmp.b	#$00,d2
 beq	spacejen
 cmp.b	#$2e,d2
 beq	point
 cmp.b	#$30,d2
 blo	hits
 cmp.b	#$39,d2
 bls	cyfer
hits:
 move.l	#320,d2
 or.l	#$10000000,d2
 bra	klaar
cyfer:
 sub.b	#21,d2  ;cijfer
 or.l	#$10000000,d2
 bra	klaar
char:
 sub.b	#$60,d2
 or.l	#$10000000,d2
 bra	klaar
char2:
 sub.b	#$40,d2
 or.l	#$10000000,d2
 bra	klaar
hekje:
 move.b	#38,d2
 or.l	#$10000000,d2
 bra	klaar
spacejen:
 move.l	#320,d2
 or.l	#$10000000,d2
 bra	klaar
point:
 move.b	#39,d2
 or.l	#$10000000,d2
 bra	klaar
streepje:
 move.b	#37,d2
 or.l	#$10000000,d2
klaar:
swap	d2
cmp.w	#$1000,d2
bne	allehoi
clr.w	d2
swap	d2
add.l	d2,a2

 moveq	#7,d0
copyd:
 move.b	(a2),(a3)
 lea	40(a3),a3
 lea	40(a2),a2
 dbf	d0,copyd
allehoi:
 addq	#1,d6
 cmp.l	#3,d6
 bne	nogeenkeer
 rts

***********************
vertraaghandle:
 cmp.l	#16,vertraagcount
 bne	gaatverdertjen
 move.b	$bfec01,d0
 btst	#0,d0
 bne	comeback
 clr.l	vertraagcount
 rts
gaatverdertjen:
 cmp.b	#$65,$bfec01
 bne	oeps1
 add.l	#1,vertraagcount
 cmp.l	#16,vertraagcount
 bne	ruts
 move.l	#16,vertraagcount
 bra	comeback
ruts:
 rts
oeps1:
	clr.l	vertraagcount
 rts
oeps2:
	clr.l	vertraagcount2
 rts



vertraaghandle2:
 cmp.l	#16,vertraagcount2
 bne	gaatverdertjen2
 move.b	$bfec01,d0
 btst	#0,d0
 bne	comeback2
 clr.l	vertraagcount2
 rts
gaatverdertjen2:
 cmp.b	#$67,$bfec01
 bne	oeps2
 add.l	#1,vertraagcount2
 cmp.l	#16,vertraagcount2
 bne	ruts2
 move.l	#16,vertraagcount2
 bra	comeback2
ruts2:
 rts



downwards:
 cmp.l	#1,scrollflag
 beq	gelukkig
 cmp.l	#0,vertraagcount
 bne	vertraaghandle
comeback:

 clr.l	balkmidflag
 cmp.b	#$65,$bfec01
 bne	downweg

 cmp.l	#16,vertraagcount
 beq	gelukkig
 move.l	#1,vertraagcount
gelukkig:
 clr.l	scrollflag
 bsr	balklaag

 clr.l	forceerflag
 cmp.l	#1,balkmidflag
 bne	downweg

 move.l	#64,d0
 add.l	#1,patstep
 move.l	patstep,d1
 add.l	#16,d1
 cmp.l	d1,d0
 bhi	goedzooi
 sub.l	#1,patstep
 move.l	#1,forceerflag
 bsr	balklaag
 bra	downweg
goedzooi:



 lea	p+2240+320+10,a0
 lea	p+2240+10,a1	;80,56
 move.l	a0,$dff050
 move.l	a1,$dff054
 move.w	#22,$dff064
 move.w	#22,$dff066
 move.w	#$ffff,$dff044
 move.w	#$ffff,$dff046
 move.w	#%0000100111110000,$dff040
 clr.w	$dff042
 move.w	#%1000010111110000,$dff096
 move.w	#8192+9,$dff058
 move.w	#%0000010000000000,$dff096


 lea	p+2240+2,a1	;80,56
 lea	p+2240+320+2,a0	;80,56
 move.l	a0,$dff050
 move.l	a1,$dff054
 move.w	#36,$dff064
 move.w	#36,$dff066
 move.w	#$ffff,$dff044
 move.w	#$ffff,$dff046
 move.w	#%0000100111110000,$dff040
 clr.w	$dff042
 move.w	#%1000010111110000,$dff096
 move.w	#8192+2,$dff058
 move.w	#%0000010000000000,$dff096


 move.l	patroom,a5
 move.l	patcount,d0
 move.l #64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5
 move.l	patstep,d0
 add.l	#16,d0
 asl.l	#2,d0
 add.l	d0,a5


 lea	p,a0
 add.l	#4800+10+2560,a0	

 lea	notetable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#4800+15+2560,a0		;80,136

 lea	getaltable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#4800+20+2560,a0		;80,136

 lea	notetable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#4800+25+2560,a0		;80,136

 lea	getaltable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#4800+3+2560,a0		;80,136

 lea	getaltable,a1
 clr.l	d1
 move.l	patstep,d1
 add.l	#16,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text
downweg:
 lea	terf-4,a0
 lea	4(a0),a0
 cmp.l	#'RVV ',(a0)
 bne	posorry
 rts

***********************

upwards:
 cmp.l	#0,vertraagcount2
 bne	vertraaghandle2
comeback2:

 clr.l	balkmidflag2
 cmp.b	#$67,$bfec01
 bne	downweg

 cmp.l	#16,vertraagcount2
 beq	gelukkig2
 move.l	#1,vertraagcount2
gelukkig2:



 bsr	balkhoog

 clr.l	forceerflag2
 cmp.l	#1,balkmidflag2
 bne	downweg



 sub.l	#1,patstep
 move.l	patstep,d0
 cmp.l	#-1,d0
 bne	goedzooi2
 move.l	#0,patstep
 move.l	#1,forceerflag2
 bsr	balkhoog
 bra	downweg
goedzooi2:


 move.w	#$0002,$dff042
 lea	p+2200+320+10+5120+16,a1
 lea	p+2200+10+5120+16,a0	;80,56
 move.l	a0,$dff050
 move.l	a1,$dff054
 move.w	#22,$dff064
 move.w	#22,$dff066
 move.w	#$ffff,$dff044
 move.w	#$ffff,$dff046
 move.w	#$0002,$dff042
 move.w	#%0000100111110000,$dff040
 move.w	#%1000010111110000,$dff096
 move.w	#8192+9,$dff058
 move.w	#%0000010000000000,$dff096
 clr.w	$dff042

 lea	p+2200+2+5120+2,a0	;80,56
 lea	p+2200+320+2+5120+2,a1	;80,56
 move.l	a0,$dff050
 move.l	a1,$dff054
 move.w	#36,$dff064
 move.w	#36,$dff066
 move.w	#$ffff,$dff044
 move.w	#$ffff,$dff046
 move.w	#%0000100111110000,$dff040
 move.w	#$0002,$dff042
 move.w	#%1000010111110000,$dff096
 move.w	#8192+2,$dff058
 move.w	#%0000010000000000,$dff096

 move.w	#$0000,$dff042

 move.l	patroom,a5
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a5
 move.l	patstep,d0
 asl.l	#2,d0
 add.l	d0,a5


 lea	p,a0
 add.l	#2240+10,a0	

 lea	notetable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#15+2240,a0		;80,136

 lea	getaltable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#20+2240,a0		;80,136

 lea	notetable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#25+2240,a0		;80,136

 lea	getaltable,a1
 clr.l	d1
 move.b	(a5)+,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text

 lea	p,a0
 add.l	#3+2240,a0		;80,136

 lea	getaltable,a1
 clr.l	d1
 move.l	patstep,d1
 asl.l	#2,d1
 add.l	d1,a1
 
 bsr	text
 rts


balklaag:
 cmp.l	#1,forceerflag
 beq	nietweg
 cmp.l	#8,balkplaats
 beq	gaatmaarweg
nietweg:
 add.l	#1,balkplaats
 cmp.l	#17,balkplaats
 bne	zetzestien
 move.l	#16,balkplaats
zetzestien:
 move.l	balkplaats,d0
 asl.l	#3,d0
 asl.l	#8,d0	;volgendebyte
 ori.w	#1,d0
 add.w	#$6400,d0
 move.w	d0,rastwacht
 add.w	#$0800,d0
 move.w	d0,rastwacht2
 rts
gaatmaarweg:
 move.l	#1,balkmidflag
 rts 

balkhoog:
 cmp.l	#1,forceerflag2
 beq	nietweg2
 cmp.l	#8,balkplaats
 beq	gaatmaarweg2
nietweg2:
 sub.l	#1,balkplaats
 cmp.l	#-1,balkplaats
 bne	zetzestien2
 move.l	#0,balkplaats
zetzestien2:
createbalk:
 move.l	balkplaats,d0
 asl.l	#3,d0
 asl.l	#8,d0	;volgendebyte
 ori.w	#1,d0
 add.w	#$6400,d0
 move.w	d0,rastwacht
 add.w	#$0800,d0
 move.w	d0,rastwacht2
 rts
gaatmaarweg2:
 move.l	#1,balkmidflag2
 rts 

naarsampleflag:
	dc.l	0
exitsampleflag:
	dc.l	0
balkmidflag:
	dc.l	0
forceerflag:
	dc.l	0
balkmidflag2:
	dc.l	0
forceerflag2:
	dc.l	0
balkplaats:
	dc.l	0

 rts





leeg:
	blk.b	40,$00


updatepat:
 clr.l	d1
 cmp.l	#1,plusflag
 bne	geenophoog
 move.l	#1,beeldbouwflag
 add.l	#1,patcount
 cmp.l	#99,patcount
 blo	geenophoog
 move.l	#99,patcount
geenophoog:

 cmp.l	#1,minflag
 bne	geenverlaag
 move.l	#1,beeldbouwflag
 sub.l	#1,patcount
 cmp.l	#-1,patcount
 bne	geenverlaag
 move.l	#0,patcount
geenverlaag:

 lea	p,a0
 add.l	#657 ,a0		;136,16 
 lea	f,a1
 add.l	#27,a1		;char 0

 move.l	#7,d0
copy:
 move.b	(a1),(a0)
 add.l	#40,a0
 add.l	#40,a1
 dbf	d0,copy

 move.l	patcount,d1
 divu	#10,d1
 lea	p,a0
 add.l	#658,a0		;144,16 
 lea	f,a1
 add.l	#27,a1		;char 0
 and.l	#$0000ffff,d1
 add.l	d1,a1

 move.l	#7,d0
copy2:
 move.b	(a1),(a0)
 add.l	#40,a0
 add.l	#40,a1
 dbf	d0,copy2


 move.l	patcount,d0
 mulu	#10,d1
 sub.l	d1,d0
 lea	p,a0
 add.l	#659,a0		;152,16 
 lea	f,a1
 add.l	#27,a1		;char 0
 add.l	d0,a1

 move.l	#7,d0
copy3:
 move.b	(a1),(a0)
 add.l	#40,a0
 add.l	#40,a1
 dbf	d0,copy3

 rts







checkbuttons:
 clr.l	plusflag
 clr.l	minflag
 clr.l	backflag
 bsr	spritemov
 bsr	glower
 clr.l	d0
 clr.l	d1
 move.b	pos8,d1
 move.b	pos8+1,d0
 bsr	calculator
 btst	#6,$bfe001
 bne	wegspr
 


cmp.w	#61,d0
bhi	noback
cmp.w	#30,d1
bhi	noback
move.l	#1,backflag

noback:



cmp.w	#258,d0
blo	noback2
cmp.w	#30,d1
bhi	noback2
move.l	#1,backflag

noback2:


cmp.w	#122,d0
blo	noplus
cmp.w	#15,d1
blo	noplus
cmp.w	#131,d0
bhs	noplus
cmp.w	#24,d1
bhs	noplus
cmp.l	#1,netgedruktflag
beq	noplus
move.l	#1,netgedruktflag
move.l	#1,minflag

noplus:


cmp.w	#164,d0
blo	nomin
cmp.w	#15,d1
blo	nomin
cmp.w	#173,d0
bhs	nomin
cmp.w	#24,d1
bhs	nomin
cmp.l	#1,netgedruktflag
beq	nomin
move.l	#1,plusflag
move.l	#1,netgedruktflag
nomin:
rts

wegspr:
 clr.l	netgedruktflag
rts




spritemov:
	move.b	$dff00b,x
	move.b	$dff00a,y
	cmp.b	#$40,x
	bhi	alle1
	move.b	#$40,x
alle1:	
	cmp.b	#$de,x
	blo	alle2
	move.b	#$de,x
alle2:	
	cmp.b	#$2c,y
	bhi	alle3
	move.b	#$2c,y
alle3:
	cmp.b	#$f2,y
	blo	alle4
	move.b	#$f2,y
alle4:
	move.w	y,$dff036
ahum:
	move.w	y,pos8

	add.l	#1,flipcnt
	cmp.l	#$ff,flipcnt
	beq	yeppert
	rts

yeppert:
 movem.ld0-d7/a0-a6,-(a7)
 clr.l	flipcnt
 cmp.w	#$b466,checksum
 bne	posorryy
 movem.l(a7)+,d0-d7/a0-a6
 rts

dc.l	0
checksum:	dc.w	0
dc.l	0

flipcnt:	dc.l	0

glower:
	add.l	#2,glowcount
	cmp.l	#64,glowcount
	bne	glowway
	clr.l	glowcount
glowway:
	lea	glowtable,a0
	add.l	glowcount,a0
	move.w	(a0),glow+2
	rts

calcchecksum:
 lea	$dff000,a5
 lea	m+7240,a0
 clr.l	d0
 clr.l	d1
 move.l	#719,d6
calcuur:
 move.b	(a0)+,d1
 sub.l	d1,d0
 dbf	d6,calcuur
 move.w	d0,checksum
rts

calculator:
 sub.b	#$2b,d1
 cmp.b	#$80,d0
 bls	lager
 sub.b	#$80,d0
 asl.w	#$01,d0
 add.w	#$80,d0
 rts
lager:
 move.w	#$0080,d2 
 sub.b	d0,d2
 asl.w	#$01,d2
 move.w	#$0080,d0
 sub.w	d2,d0
 rts


y:	dc.b	0
x:	dc.b	0


******** song routines ********

vulallesin:
	move.l	seqnr,d0
	sub.l	#1,d0
	mulu	#6,d0
	lea	songroom,a4
	add.l	d0,a4
	move.l	a4,a5
;channel1
	move.l	(a4)+,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1244,a0		;32,32		
	jsr	text
	clr.l	d1
	move.b	1(a4),d1
	lea	mintable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1924,a0			;32,48
	jsr	text

;channel2
	add.l	#1536,a5	;256*6 bytes
	move.l	a5,a4
	move.l	(a4)+,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1254,a0		;32,32		
	jsr	text
	clr.l	d1
	move.b	1(a4),d1
	lea	mintable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1934,a0			;32,48
	jsr	text

;channel3
	add.l	#1536,a5	;256*6 bytes
	move.l	a5,a4
	move.l	(a4)+,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1264,a0		;32,32		
	jsr	text
	clr.l	d1
	move.b	1(a4),d1
	lea	mintable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1944,a0			;32,48
	jsr	text
;channel4
	add.l	#1536,a5	;256*6 bytes
	move.l	a5,a4
	move.l	(a4)+,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1274,a0		;32,32		
	jsr	text
	clr.l	d1
	move.b	1(a4),d1
	lea	mintable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+1954,a0			;32,48
	jsr	text

;seq nr
	move.l	seqnr,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+3609,a0		;80,91
	jsr	text
	move.l	seqnr,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+3609+8000,a0		;80,91
	jsr	text
;speed
	move.l	speed,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+5489,a0		;80,138
	jsr	text
	move.l	speed,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+5489+8000,a0		;80,138
	jsr	text
;s-length
	move.l	songlength,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+4569,a0		;80,115
	jsr	text
	move.l	songlength,d1
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	s+4569+8000,a0		;80,115
	jsr	text
	rts

uit2:
	clr.l	delaytel
	rts

pluzzenandminnen:
	cmp.l	#0,delaytel
	beq	gaatverder
	cmp.l	#50,delaytel
	beq	gaatverder
	btst	#6,$bfe001
	bne	uit2
	add.l	#1,delaytel
	move.l	#38,knopstatus
	rts
gaatverder:

	clr.l	d1
	clr.l	d0

	move.b	pos8,d1
	move.b	pos8+1,d0
	bsr	calculator
	move.l	d1,d2
	move.l	d0,d1
	move.l	#38,knopstatus
	btst	#6,$bfe001
	bne	uit2
	cmp.l	#50,delaytel
	beq	skipit
	move.l	#1,delaytel
skipit:
	move.l	#36,d0
	lea	pluzmintabel,a4
	clr.l	d3
	move.l	#1,d4	
testen:
	move.w	(a4),d3
	cmp.w	d3,d1
	blo	verdertesten
	move.w	2(a4),d3
	cmp.w	d3,d1
	bhi	verdertesten
;y
	move.w	4(a4),d3
	cmp.w	d3,d2
	blo	verdertesten
	move.w	6(a4),d3
	cmp.w	d3,d2
	bhi	verdertesten

	move.l	d4,knopstatus
	rts
verdertesten:
	add.l	#1,d4
	add.l	#8,a4
	dbf	d0,testen
	move.l	#38,knopstatus
	clr.l	delaytel
	rts
pluzmintabel:
	dc.w	20,27,32,40,60,68,31,40
	dc.w	20,27,48,56,60,68,48,56
;chan2	
	dc.w	99,107,31,40,140,148,31,40
	dc.w	99,107,47,56,140,148,47,56
;chan3
	dc.w	179,187,31,40,220,228,31,40
	dc.w	179,187,47,56,220,228,47,56
;chan4
	dc.w	259,267,31,40,300,308,31,40
	dc.w	259,267,47,56,300,308,48,56
;seqnr
	dc.w	99,108,89,98,57,66,89,98	;*
;speed
	dc.w	99,108,136,145,57,66,136,145	;*
;play&stop
	dc.w	162,196,177,196,202,237,177,196	;*
;patedit
	dc.w	2,79,177,199
;instedit
	dc.w	82,157,177,197
;exit
	dc.w	242,317,177,197
;songlength
	dc.w	99,108,113,122,57,66,113,122	;*

	dc.w	120,157,114,150			;laden
	dc.w	120,157,72,109			;saven
	dc.w	162,181,72,87			;df0
	dc.w	162,181,94,108			;df1
	dc.w	162,181,114,129			;df2
	dc.w	162,181,136,150			;df3
	dc.w	300,319,74,86			;up
	dc.w	300,319,160,172			;down

knopstatus:
	dc.l	0


jumptable:
	dc.l	verl1,verh1,verl1b,verh1b
	dc.l	verl2,verh2,verl2b,verh2b
	dc.l	verl3,verh3,verl3b,verh3b
	dc.l	verl4,verh4,verl4b,verh4b
	dc.l	sequp,seqdown,spdup,spddown
	dc.l	playit,stopit,pateditt,instediten
	dc.l	exit,slengthup,slengthdown

	dc.l	load,save,pdrive0
	dc.l	pdrive1,pdrive2,pdrive3
	dc.l	pfileup,pfiledown

	dc.l	uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit


checkstatus:


	move.l	seqnr,d0
	sub.l	#1,d0
	mulu	#6,d0
	lea	songroom,a4
	add.l	d0,a4
	move.l	a4,a5

	move.l	knopstatus,d0
	cmp.l	#0,d0
	beq	draaierd
	sub.l	#1,d0
draaierd:
	asl.l	#2,d0
	lea	jumptable,a0
	add.l	d0,a0
	move.l	(a0),a0
	move.l	#38,knopstatus
	jmp	(a0)
uit:
	rts

verh1:
	add.l	#1,(a5)
	cmp.l	#160,(a5)
	bne	uit
	move.l	#159,(a5)
	rts
verl1:
	sub.l	#1,(a5)
	cmp.l	#-1,(a5)
	bne	uit
	move.l	#0,(a5)
	rts

verh2:
	add.l	#1,1536(a5)
	cmp.l	#160,1536(a5)
	bne	uit
	move.l	#159,1536(a5)
	rts
verl2:
	sub.l	#1,1536(a5)
	cmp.l	#-1,1536(a5)
	bne	uit
	move.l	#0,1536(a5)	;1536
	rts

verh3:
	add.l	#1,3072(a5)	;1536+1536
	cmp.l	#160,3072(a5)
	bne	uit
	move.l	#159,3072(a5)
	rts
verl3:
	sub.l	#1,3072(a5)
	cmp.l	#-1,3072(a5)
	bne	uit
	move.l	#0,3072(a5)
	rts

verh4:
	add.l	#1,4608(a5)
	cmp.l	#160,4608(a5)
	bne	uit
	move.l	#159,4608(a5)
	rts
verl4:
	sub.l	#1,4608(a5)
	cmp.l	#-1,4608(a5)
	bne	uit
	move.l	#0,4608(a5)
	rts

****** transposes ******

verh1b:
	add.w	#1,4(a5)
	cmp.w	#100,4(a5)
	bne	uit
	move.w	#99,4(a5)
	rts
verl1b:
	sub.w	#1,4(a5)
	cmp.w	#-100,4(a5)
	bne	uit
	move.w	#-99,4(a5)
	rts

verh2b:
	add.w	#1,1540(a5)
	cmp.w	#100,1540(a5)
	bne	uit
	move.w	#99,1540(a5)
	rts
verl2b:
	sub.w	#1,1540(a5)
	cmp.w	#-100,1540(a5)
	bne	uit
	move.w	#-99,1540(a5)	;1536
	rts

verh3b:
	add.w	#1,3076(a5)	;1536+1536
	cmp.w	#100,3076(a5)
	bne	uit
	move.w	#99,3076(a5)
	rts
verl3b:
	sub.w	#1,3076(a5)
	cmp.w	#-100,3076(a5)
	bne	uit
	move.w	#-99,3076(a5)
	rts

verh4b:
	add.w	#1,4612(a5)
	cmp.w	#100,4612(a5)
	bne	uit
	move.w	#99,4612(a5)
	rts
verl4b:
	sub.w	#1,4612(a5)
	cmp.w	#-100,4612(a5)
	bne	uit
	move.w	#-99,4612(a5)
	rts

sequp:
	add.l	#1,seqnr
	cmp.l	#256,seqnr
	bne	uit
	move.l	#255,seqnr
	rts

seqdown:
	sub.l	#1,seqnr
	cmp.l	#0,seqnr
	bne	uit
	move.l	#1,seqnr
	rts

spdup:
	add.l	#1,speed
	cmp.l	#240,speed
	bne	uit
	move.l	#239,speed
	rts

spddown:
	sub.l	#1,speed
	cmp.l	#0,speed
	bne	uit
	move.l	#1,speed
	rts

pfileup:
	sub.w	#1,pfilecnt
	cmp.w	#0,pfilecnt
	bne	pfdr
	move.w	#1,pfilecnt

pfdr:	move.l	#s,pplaatsource
	bsr	pshowdir
	rts

pfiledown:
	add.w	#1,pfilecnt

	lea	pdirplaats,a1
	clr.l	d1
	move.w	pfilecnt,d1
	add.w	#12,d1
	mulu	#20,d1
	lea	(a1,d1),a1
	cmp.b	#0,(a1)
	bne	pfdr2
	sub.w	#1,pfilecnt
pfdr2:	move.l	#s,pplaatsource
	bsr	pshowdir
	rts

driveaan0:
	move.b	#%01110011,$bfd100
	nop
	nop
	nop
	nop
	move.b	$bfe001,d0
	and.w	#$04,d0
	tst.w	d0
	beq	flits0
	clr.l	d7
	rts
flits0:
	moveq	#1,d7
	rts

driveaan1:
	move.b	#%01101011,$bfd100
	nop
	nop
	nop
	nop
	move.b	$bfe001,d0
	and.w	#$04,d0
	tst.w	d0
	beq	flits1
	clr.l	d7
	rts
flits1:
	moveq	#1,d7
	rts

driveaan2:
	move.b	#%01011011,$bfd100
	nop
	nop
	nop
	nop
	move.b	$bfe001,d0
	and.w	#$04,d0
	tst.w	d0
	beq	flits2
	clr.l	d7
	rts
flits2:
	moveq	#1,d7
	rts

driveaan3:
	move.b	#%00111011,$bfd100
	nop
	nop
	nop
	nop
	move.b	$bfe001,d0
	and.w	#$04,d0
	tst.w	d0
	beq	flits3
	clr.l	d7
	rts
flits3:
	moveq	#1,d7
	rts


pdrive0:
	bsr	driveaan0
	tst.w	d7
	bne	uit

	move.w	#$7492,cirkelsongpos
	clr.l	firflag
	move.l	#'df0:',filename2
	move.l	#'df0:',pnome
	bsr	pclrnamez
	move.l	#filename,pfilenamespo
	lea	s,a0
	bsr	pdirview
	rts
pdrive1:
	cmp.l	#1,drive1flag
	beq	uit
	bsr	driveaan1
	tst.w	d7
	bne	uit

	move.w	#$8992,cirkelsongpos
	clr.l	firflag
	move.l	#'df1:',filename2
	move.l	#'df1:',pnome
	bsr	pclrnamez
	move.l	#filename,pfilenamespo
	lea	s,a0
	bsr	pdirview
	rts
pdrive2:
	cmp.l	#1,drive2flag
	beq	uit
	bsr	driveaan2
	tst.w	d7
	bne	uit

	move.w	#$9e92,cirkelsongpos
	clr.l	firflag
	move.l	#'df2:',filename2
	move.l	#'df2:',pnome
	bsr	pclrnamez
	move.l	#filename,pfilenamespo
	lea	s,a0
	bsr	pdirview
	rts
pdrive3:
	cmp.l	#1,drive3flag
	beq	uit
	bsr	driveaan3
	tst.w	d7
	bne	uit

	move.w	#$b392,cirkelsongpos
	clr.l	firflag
	move.l	#'df3:',filename2
	move.l	#'df3:',pnome
	bsr	pclrnamez
	move.l	#filename,pfilenamespo
	lea	s,a0
	bsr	pdirview
	rts

pclrnamez:
	lea	filename,a0
	lea	pnome+4,a1
	moveq	#20,d7
poi:	clr.l	(a0)+
	clr.l	(a1)+
	dbf	d7,poi
	rts

*************** FILE HANDLING **************
;DIRECTORYS!
************
pplaatsource:	dc.l	0

pdirplaats:	blk.b	3356,0

pdirview:	;in a0	plaatje!
move.w	#1,pfilecnt
move.l	a0,pplaatsource

lea	2983(a0),a1		;188,74	eerste char
moveq	#95,d7
plophi:
moveq	#14,d6
plophi2:
clr.b	(a1)+
dbf	d6,plophi2
lea	25(a1),a1
dbf	d7,plophi


lea	10983(a0),a1		;188,74	eerste char
moveq	#95,d7
gryplophi:
moveq	#14,d6
gryplophi2:
clr.b	(a1)+
dbf	d6,gryplophi2
lea	25(a1),a1
dbf	d7,gryplophi


move.l	pdirplaats,d0
move.l	d0,peffe1
move.l	#$aaaaaaaa,pdirplaats
bsr	pdircollect
cmp.l	#$aaaaaaaa,pdirplaats
beq	pnodir

pshowdir:
moveq	#11,d5
lea	pdirplaats,a5
clr.l	d7
move.w	pfilecnt,d7
mulu	#20,d7
lea	(a5,d7),a5

move.l	pplaatsource,a4
lea	2983(a4),a4
lea	(a4),a6
pnaam2:
cmp.b	#0,(a5)
beq	pklaark

cmp.l	#$2,16(a5)
beq	pversie3

moveq	#0,d7
pnaam1:
lea	(a5,d7),a1
cmp.b	#0,(a1)
beq	pversie2

lea	(a4),a0
addq	#1,a4

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#15,d7
bne	pnaam1
pknudde:
lea	20(a5),a5
lea	320(a6),a6	;8*40
lea	(a6),a4
dbf	d5,pnaam2
pklaark:

;evt. directory labels erachter plakke

moveq	#11,d5
lea	pdirplaats,a5
clr.l	d7
move.w	pfilecnt,d7
mulu	#20,d7
lea	(a5,d7),a5

move.l	pplaatsource,a4
lea	2983(a4),a4
lea	(a4),a6
pnuman2:
cmp.b	#0,(a5)
beq	pafbreke
cmp.l	#2,16(a5)
bne	pdasene


moveq	#11,d7
pnuman1:

lea	(a4,d7),a0
lea	pdirtext,a1
lea	(a1,d7),a1

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#15,d7
bne	pnuman1

pdasene:
lea	20(a5),a5
lea	320(a6),a6	;8*40
lea	(a6),a4
dbf	d5,pnuman2
pafbreke:
rts
pdirtext:	dc.b	'           -dir'
dc.b	0



pversie2:

lea	(a4),a0
addq	#1,a4
lea	pdirtext,a1

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#15,d7
bne	pversie2
jmp	pknudde

pversie4:

lea	(a4),a0
addq	#1,a4
lea	pdirtext,a1

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#11,d7
bne	pversie4
jmp	pknudde

pversie3:
moveq	#0,d7
pnaam133:
lea	(a5,d7),a1
cmp.b	#0,(a1)
beq	pversie4

lea	(a4),a0
addq	#1,a4

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#11,d7
bne	pnaam133
jmp	pknudde


pnodir:
	move.l	peffe1,d0
	move.l	d0,pdirplaats
	rts

peffe1:dc.l	0
pverklooiflag:	dc.l	0
pdircollect:	;max 100
 lea	pdirplaats,a2
 move.l	#799,d7
pfbd:
 clr.l	(a2)+
 dbf	d7,pfbd

 clr.l	pverklooiflag
 move.l	pfilenamespo,d5
 sub.l	#filename,d5
 cmp.l	#0,d5
 beq	pnjeah
 add.l  #pnoman,a2
 move.b	#0,-1(a2)
 move.l	#1,pverklooiflag
pnjeah:
 and.l	#$fffffffc,pfilepoint
 clr.l	pteller
 move.l	$4,a6
 lea	dosname,a1
 jsr	-408(a6)
 move.l	d0,dosbase
 beq	perror2


 move.l	dosbase,a6
 move.l	#pnome,d1
 move.l	#-2,d2
 jsr	lock(a6)
 tst.l	d0
 beq	perry
 move.l	d0,plocksav

 move.l	dosbase,a6
 move.l	plocksav,d1
 move.l	pfilepoint,d2
 jsr	examine(a6)
 tst.l	d0
 beq	perry
 bra	puitvoeren

ploop:
 move.l	dosbase,a6
 move.l	plocksav,d1
 move.l	pfilepoint,d2
 jsr	exnext(a6)
 tst.l	d0
 beq	perry
 
puitvoeren:
 lea	pdirplaats,a0
 add.l	pteller,a0
 move.l	pfilepoint,a1
 lea	8(a1),a1
 add.l	#20,pteller
 cmp.l	#3200,pteller
 beq	perry

 moveq	#$13,d7
pcop:
 move.b	(a1)+,(a0)+
 dbf	d7,pcop
 move.l	pfilepoint,a1
 lea	4(a1),a1
 move.l	(a1),-4(a0)
 bra	ploop 

perry:
 move.l	dosbase,a6
 jsr	ioerr(a6)

 lea	pdirplaats,a0
 add.l	pteller,a0
 move.l	#0,0(a0)
 move.l	#0,20(a0)
 move.l	#0,40(a0)
 move.l	#0,60(a0)
 move.l	#0,80(a0)
 move.l	#0,100(a0)
 move.l	#0,120(a0)
 move.l	#0,140(a0)
 move.l	#0,160(a0)
 move.l	#0,180(a0)
 move.l	#0,200(a0)
 move.l	#0,220(a0)


 move.l	$4,a6
 move.l dosbase,a1
 jsr	-414(a6)
 cmp.l	#1,pverklooiflag
 bne	pdgf
 move.l pfilenamespo,a2
 sub.l	#filename,a2
 add.l	#pnoman,a2
 move.b	#$2f,-1(a2)
pdgf:
 rts

perror2:
 move.w	#$0f0f,$dff180
 cmp.l	#1,pverklooiflag
 bne	pdgf2
 move.l pfilenamespo,a2
 sub.l	#filename,a2
 add.l	#pnoman,a2
 move.b	#$2f,-1(a2)
pdgf2:
 rts

pnome:		dc.b	'df0:'
pnoman:		blk.b	100,0
even
pfilepoint:	dc.l	fileinfo
pteller:	dc.l	0
plocksav:	blk.l	1
dc.l	0
pfileinfo:	blk.l	260,0




even

pfilenamespo:	dc.l	filename
pfilecnt:dc.w	0

pabclicken:
	clr.l	d0
	clr.l	d1
	move.b	$dff00b,d0
	move.b	$dff00a,d1
	bsr	 calculator
	cmp.w	#185,d0
	blo	uits
	cmp.w	#300,d0
	bhi	uits
	cmp.w	#74,d1
	blo	uits
	cmp.w	#169,d1
	bhi	uits
	move.w	d1,d2
	sub.w	#74,d2
	and.w	#$f8,d2
	add.w	#118,d2
	move.b	d2,rastwacht
	move.b	d2,rastwacht2
	add.b	#8,rastwacht2
	btst	#6,$bfe001
	bne	uits
	sub.w	#74,d1
	asr.w	#3,d1	;8
	add.w	pfilecnt,d1
	mulu	#20,d1	;20
	lea	pdirplaats,a0
	lea	(a0,d1),a0
	move.l	pfilenamespo,a1
	cmp.b	#0,(a0)
	beq	uits
	cmp.l	#2,16(a0)	;dirretje?
	beq	pdirhandle
	moveq	#14,d7
pcoepyjen:
	cmp.b	#0,(a0)
	beq	proonir
	move.b	(a0)+,(a1)+
	dbf	d7,pcoepyjen
	move.b	#0,(a1)
	bra	pahiu
proonir:
	move.b	#0,(a1)+
	dbf	d7,proonir

pahiu:
	lea	samplestruct,a5
	move.l	samplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a5
	move.l	#15,d7
	lea	12(a5),a5
	move.l	pfilenamespo,a0
pgrt:	move.b	(a0)+,(a5)+
	dbf	d7,pgrt
	rts

pdirhandle:
	moveq	#15,d7
	move.l	pfilenamespo,d5
	sub.l	#filename,d5
	move.l	pfilenamespo,a2
	lea	pnoman,a3
	lea	(a3,d5),a3
;	cmp.l	#0,d5
;	beq	pgretvr2	
pgretvr:
;	move.b	#$2f,(a3)+
;	add.l	#1,pfilenamespo
pgretvr2:
	move.b	(a0),(a2)+
	move.b	(a0)+,(a3)+
	add.l	#1,pfilenamespo
	cmp.b	#0,(a0)
	beq	pkjr
	dbf	d7,pgretvr2
pkjr:	move.b	#$2f,(a2)+
	move.b	#$2f,(a3)+
	add.l	#1,pfilenamespo
	move.b	#0,(a2)
	move.b	#0,(a3)

	lea	s,a0
	bsr	pdirview
	rts


******** sample routines ********

vulallesins:
	move.l	samplenr,d0
	sub.l	#16,d0
	asl.l	#5,d0
	lea	samplestruct,a4
	add.l	d0,a4
	move.l	a4,a5
;channel1

	move.l	(a4)+,d1
	lea	m+892,a2	;104,22
	bsr	drukemafpleaze

	move.l	(a4)+,d1
	lea	m+1332,a2	;104,33
	bsr	drukemafpleaze

	move.l	(a4)+,d1
	lea	m+1772,a2	;104,44
	bsr	drukemafpleaze


	move.l	samplenr,d1
	lea	m+174,a2


	move.l	d1,d2
	divu	#10,d2
	and.l	#$0000ffff,d2
	move.l	d2,d3
	mulu	#10,d2
	sub.l	d2,d1

	
	add.l	#27,d3
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copt1:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copt1

	move.l	d1,d2
	and.l	#$0000ffff,d2
	move.l	d2,d3
	sub.l	d2,d1

	
	add.l	#27,d3
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copt2:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copt2

	rts



drukemafpleaze:
	move.l	d1,d2
	cmp.l	#100000,d1
	blo	rff1
	moveq	#28,d3
	sub.l	#100000,d1
	bra	rff2
rff1:	moveq	#27,d3
rff2:
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copg0:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copg0

	move.l	d1,d2
	divu	#10000,d2
	and.l	#$0000ffff,d2
	move.l	d2,d3
	mulu	#10000,d2
	sub.l	d2,d1

	
	add.l	#27,d3
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copg1:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copg1
	
*2
	move.l	d1,d2
	divu	#1000,d2
	and.l	#$0000ffff,d2
	move.l	d2,d3
	mulu	#1000,d2
	sub.l	d2,d1
	
	add.l	#27,d3
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copg2:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copg2
	
*3
	move.l	d1,d2
	divu	#100,d2
	and.l	#$0000ffff,d2
	move.l	d2,d3
	mulu	#100,d2
	sub.l	d2,d1
	
	add.l	#27,d3
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copg3:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copg3

*4
	move.l	d1,d2
	divu	#10,d2
	and.l	#$0000ffff,d2
	move.l	d2,d3
	mulu	#10,d2
	sub.l	d2,d1
	
	add.l	#27,d3
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copg4:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copg4

*5
	move.l	d1,d2
	and.l	#$0000ffff,d2
	move.l	d2,d3
	sub.l	d2,d1
	
	add.l	#27,d3
	lea	f,a0
	add.l	d3,a0
	move.l	a2,a1
	add.l	#1,a2

	move.l	#7,d7
copg5:
	move.b	(a0),(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d7,copg5

	rts


uit2s:
	clr.l	delaytels
	rts

pluzzenandminnens:
	cmp.l	#0,delaytels
	beq	gaatverders
	cmp.l	#50,delaytels
	beq	gaatverders
	btst	#6,$bfe001
	bne	uit2s
	add.l	#1,delaytels
	move.l	#20,knopstatuss
	rts
gaatverders:

	clr.l	d1
	clr.l	d0

	move.b	pos8,d1
	move.b	pos8+1,d0
	bsr	calculator
	move.l	d1,d2
	move.l	d0,d1
	move.l	#20,knopstatuss
	btst	#6,$bfe001
	bne	uit2s
	cmp.l	#50,delaytels
	beq	skipits
	move.l	#1,delaytels
skipits:
	move.l	#20,d0
	lea	pluzmintabels,a4
	clr.l	d3
	move.l	#1,d4
testens:
	move.w	(a4),d3
	cmp.w	d3,d1
	blo	verdertestens
	move.w	2(a4),d3
	cmp.w	d3,d1
	bhi	verdertestens
;y
	move.w	4(a4),d3
	cmp.w	d3,d2
	blo	verdertestens
	move.w	6(a4),d3
	cmp.w	d3,d2
	bhi	verdertestens
	
	move.l	d4,knopstatuss
	rts
verdertestens:
	add.l	#1,d4
	add.l	#8,a4
	dbf	d0,testens
	move.l	#20,knopstatuss
	clr.l	delaytels
	rts

pluzmintabels:
	dc.w	139,148,3,12,97,106,3,12	;samnr
	dc.w	149,158,21,30,80,89,21,30	;samstrt
	dc.w	149,158,32,41,80,89,32,41	;loopstrt
	dc.w	149,158,43,52,80,89,43,52	;loopend
	dc.w	64,178,161,168			;name
	dc.w	222,317,2,55			;terug
	dc.w	120,157,72,150			;laden
	dc.w	170,217,18,55			;loopsearch
	dc.w	162,181,72,87			;df0
	dc.w	162,181,94,108			;df1
	dc.w	162,181,114,129			;df2
	dc.w	162,181,136,150			;df3
	dc.w	300,319,74,86			;up
	dc.w	300,319,160,172			;down
knopstatuss:
	dc.l	0


jumptables:
	dc.l	smplnrup,smplnrdwn
	dc.l	smplstrtup,smplstrtdwn
	dc.l	loopstrtup,loopstrtdwn
	dc.l	loopendup,loopenddwn
	dc.l	smplnameedit
	dc.l	backgaan
	dc.l	laadsmpl
	dc.l	zoekloop
	dc.l	drive0
	dc.l	drive1
	dc.l	drive2
	dc.l	drive3
	dc.l	fileup,filedown
	dc.l	uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit

jumptables2:
	dc.l	smplnrup,smplnrdwn
	dc.l	smplstrtup2,smplstrtdwn2
	dc.l	loopstrtup2,loopstrtdwn2
	dc.l	loopendup2,loopenddwn2
	dc.l	smplnameedit
	dc.l	backgaan
	dc.l	laadsmpl
	dc.l	zoekloop
	dc.l	drive0
	dc.l	drive1
	dc.l	drive2
	dc.l	drive3
	dc.l	fileup,filedown
	dc.l	uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit

smplnrup:
	add.l	#1,samplenr
	cmp.l	#48,samplenr
	bne	uity
	move.l	#16,samplenr
uity:
	bsr	copsnf
	rts
smplnrdwn:
	sub.l	#1,samplenr
	cmp.l	#15,samplenr
	bne	uity2
	move.l	#47,samplenr
uity2:
	bsr	copsnf
	rts

smplstrtup:
	add.l	#1,(a4)
	cmp.l	#200000,(a4)
	bne	uit
	clr.l	(a4)
	rts
smplstrtdwn:
	sub.l	#1,(a4)
	cmp.l	#-1,(a4)
	bne	uit
	move.l	#199999,(a4)
	rts
loopstrtup:
	add.l	#1,4(a4)
	cmp.l	#200000,4(a4)
	bne	uit
	clr.l	4(a4)
	rts
loopstrtdwn:
	sub.l	#1,4(a4)
	cmp.l	#-1,4(a4)
	bne	uit
	move.l	#199999,4(a4)
	rts
loopendup:
	add.l	#1,8(a4)
	cmp.l	#200000,8(a4)
	bne	uit
	clr.l	8(a4)
	rts
loopenddwn:
	sub.l	#1,8(a4)
	cmp.l	#-1,8(a4)
	bne	uit
	move.l	#199999,8(a4)
	rts


smplstrtup2:
	add.l	#100,(a4)
	cmp.l	#200000,(a4)
	blo	uit
	clr.l	(a4)
	rts
smplstrtdwn2:
	sub.l	#100,(a4)
	cmp.l	#-200,(a4)
	bls	uit
	move.l	#199999,(a4)
	rts
loopstrtup2:
	add.l	#100,4(a4)
	cmp.l	#200000,4(a4)
	blo	uit
	clr.l	4(a4)
	rts

writeinstname:

	move.l	filenamespo,a5
	
	move.l	#161,d5
	move.l	#64,d4
spacers:

	move.l	d5,d1
	move.l	d4,d0
	move.l	a5,a0
	bsr	drukemafreins
	add.l	#1,a5
	add.l	#8,d4
	cmp.l	#176,d4
	bne	spacers
	bsr	copfns
	rts

pwriteinstname:

	move.l	pfilenamespo,a5
	
	move.l	#161,d5
	move.l	#64,d4
pspacers:

	move.l	d5,d1
	move.l	d4,d0
	move.l	a5,a0
	bsr	drukemafrein
	add.l	#1,a5
	add.l	#8,d4
	cmp.l	#176,d4
	bne	pspacers
	rts



loopstrtdwn2:
	sub.l	#100,4(a4)
	cmp.l	#-200,4(a4)
	bls	uit
	move.l	#199999,4(a4)
	rts
loopendup2:
	add.l	#100,8(a4)
	cmp.l	#200000,8(a4)
	blo	uit
	clr.l	8(a4)
	rts
loopenddwn2:
	sub.l	#100,8(a4)
	cmp.l	#-200,8(a4)
	bls	uit
	move.l	#199999,8(a4)
	rts
zoekloop:
	move.l	samples,a0
	cmp.l	#199999,4(a4)
	beq	uit
	add.l	4(a4),a0
	clr.l	d0
	move.b	(a0),d0		;here nach zoeken

	move.l	8(a4),d7	;total length
	sub.l	4(a4),d7
	
	move.l	samples,a0
	add.l	8(a4),a0

	cmp.l	#199999,d7
	bhi	uit
	cmp.l	#0,8(a4)
	beq	uit
	move.l	8(a4),d1
	cmp.l	4(a4),d1
	beq	uit

zoekjen:
	cmp.b	-(a0),d0
	beq	jippie
	dbf	d7,zoekjen
jippie:
	sub.l	samples,a0
	move.l	a0,8(a4)
	rts

smplnameedit:
	bsr	enterfilenames
	rts

backgaan:
	move.l	#1,exitsampleflag
	rts

laadsmpl:
	bsr	laders	
	rts
	

checkstatuss:

	move.l	samplenr,d0
	sub.l	#16,d0
	asl.l	#5,d0
	lea	samplestruct,a4
	add.l	d0,a4
	move.l	a4,a5

	move.l	knopstatuss,d0
	cmp.l	#0,d0
	beq	draaierds
	sub.l	#1,d0
draaierds:
	asl.l	#2,d0

	btst	#10,$dff016
	beq	hayahaya
	lea	jumptables,a0
	bra	hayahaya2
hayahaya:
	lea	jumptables2,a0
hayahaya2:
	add.l	d0,a0
	move.l	(a0),a0
	move.l	#20,knopstatuss
	jmp	(a0)
uits:
	rts




playit: 
 move.l	#0,vanuitpatflag
 bsr	playoff
 bsr	playon
 move.l	#0,muziekstilflag

	rts

stopit:
	bsr	playoff
	rts

pateditt:
	move.l	#1,naarpatflag
	rts

instediten:
	move.l	#1,naarinstflag
	rts
load:
	bsr	lader
	rts
save:	
	bsr	saver
	rts
exit:
	bsr	transformer
	rts

slengthup:
	add.l	#1,songlength
	cmp.l	#256,songlength
	bne	uit
	move.l	#255,songlength
	rts

slengthdown:
	sub.l	#1,songlength
	cmp.l	#0,songlength
	bne	uit
	move.l	#1,songlength
	rts

fileup:
	sub.w	#1,filecnt
	cmp.w	#0,filecnt
	bne	fdr
	move.w	#1,filecnt

fdr:	move.l	#m,plaatsource
	bsr	showdir
	rts

filedown:
	add.w	#1,filecnt

	lea	dirplaats,a1
	clr.l	d1
	move.w	filecnt,d1
	add.w	#12,d1
	mulu	#20,d1
	lea	(a1,d1),a1
	cmp.b	#0,(a1)
	bne	fdr2
	sub.w	#1,filecnt
fdr2:	move.l	#m,plaatsource
	bsr	showdir
	rts



drive0:
	bsr	driveaan0
	tst.w	d7
	bne	uit

	move.w	#$7492,cirkelsamplepos
	clr.l	firflags
	move.l	#'df0:',filename2s
	move.l	#'df0:',nome
	bsr	clrnamez
	bsr	copsnf
	move.l	#filenames,filenamespo
	lea	m,a0
	bsr	dirview
	rts
drive1:
	cmp.l	#1,drive1flag
	beq	uit
	bsr	driveaan1
	tst.w	d7
	bne	uit

	move.w	#$8992,cirkelsamplepos
	clr.l	firflags
	move.l	#'df1:',filename2s
	move.l	#'df1:',nome
	bsr	clrnamez
	bsr	copsnf
	move.l	#filenames,filenamespo
	lea	m,a0
	bsr	dirview
	rts
drive2:
	cmp.l	#1,drive2flag
	beq	uit
	bsr	driveaan2
	tst.w	d7
	bne	uit

	move.w	#$9e92,cirkelsamplepos
	clr.l	firflags
	move.l	#'df2:',filename2s
	move.l	#'df2:',nome
	bsr	clrnamez
	bsr	copsnf
	move.l	#filenames,filenamespo
	lea	m,a0
	bsr	dirview
	rts
drive3:
	cmp.l	#1,drive3flag
	beq	uit
	bsr	driveaan3
	tst.w	d7
	bne	uit

	move.w	#$b392,cirkelsamplepos
	clr.l	firflags
	move.l	#'df3:',filename2s
	move.l	#'df3:',nome
	bsr	clrnamez
	bsr	copsnf
	move.l	#filenames,filenamespo
	lea	m,a0
	bsr	dirview
	rts

clrnamez:
	lea	filenames,a0
	lea	nome+4,a1
	moveq	#20,d7
oi:	clr.l	(a0)+
	clr.l	(a1)+
	dbf	d7,oi
	rts

*************** FILE HANDLING **************
;DIRECTORYS!
************
plaatsource:	dc.l	0

dirplaats:	blk.b	3356,0

dirview:	;in a0	plaatje!
move.w	#1,filecnt
move.l	a0,plaatsource

lea	2983(a0),a1		;188,74	eerste char
moveq	#95,d7
lophi:
moveq	#14,d6
lophi2:
clr.b	(a1)+
dbf	d6,lophi2
lea	25(a1),a1
dbf	d7,lophi
move.l	dirplaats,d0
move.l	d0,effe1
move.l	#$aaaaaaaa,dirplaats
bsr	dircollect
cmp.l	#$aaaaaaaa,dirplaats
beq	nodir

showdir:
moveq	#11,d5
lea	dirplaats,a5
clr.l	d7
move.w	filecnt,d7
mulu	#20,d7
lea	(a5,d7),a5

move.l	plaatsource,a4
lea	2983(a4),a4
lea	(a4),a6
naam2:
cmp.b	#0,(a5)
beq	klaark

cmp.l	#$2,16(a5)
beq	versie3

moveq	#0,d7
naam1:
lea	(a5,d7),a1
cmp.b	#0,(a1)
beq	versie2

lea	(a4),a0
addq	#1,a4

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#15,d7
bne	naam1
knudde:
lea	20(a5),a5
lea	320(a6),a6	;8*40
lea	(a6),a4
dbf	d5,naam2
klaark:

;evt. directory labels erachter plakke

moveq	#11,d5
lea	dirplaats,a5
clr.l	d7
move.w	filecnt,d7
mulu	#20,d7
lea	(a5,d7),a5

move.l	plaatsource,a4
lea	2983(a4),a4
lea	(a4),a6
numan2:
cmp.b	#0,(a5)
beq	afbreke
cmp.l	#2,16(a5)
bne	dasene


moveq	#11,d7
numan1:

lea	(a4,d7),a0
lea	dirtext,a1
lea	(a1,d7),a1

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#15,d7
bne	numan1

dasene:
lea	20(a5),a5
lea	320(a6),a6	;8*40
lea	(a6),a4
dbf	d5,numan2
afbreke:
bsr	copsnf
rts
dirtext:	dc.b	'           -dir'
dc.b	0



versie2:

lea	(a4),a0
addq	#1,a4
lea	dirtext,a1

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#15,d7
bne	versie2
jmp	knudde

versie4:

lea	(a4),a0
addq	#1,a4
lea	dirtext,a1

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#11,d7
bne	versie4
jmp	knudde

versie3:
moveq	#0,d7
naam133:
lea	(a5,d7),a1
cmp.b	#0,(a1)
beq	versie4

lea	(a4),a0
addq	#1,a4

moveq	#2,d6
bsr	halla
add.b	#1,d7
cmp.b	#11,d7
bne	naam133
jmp	knudde


nodir:
	move.l	effe1,d0
	move.l	d0,dirplaats
	rts

effe1:dc.l	0
verklooiflag:	dc.l	0
dircollect:	;max 100
 lea	dirplaats,a2
 move.l	#799,d7
fbd:
 clr.l	(a2)+
 dbf	d7,fbd

 clr.l	verklooiflag
 move.l	filenamespo,d5
 sub.l	#filenames,d5
 cmp.l	#0,d5
 beq	njeah
 add.l  #noman,a2
 move.b	#0,-1(a2)
 move.l	#1,verklooiflag
njeah:
 and.l	#$fffffffc,filepoint
 clr.l	teller
 move.l	$4,a6
 lea	dosname,a1
 jsr	-408(a6)
 move.l	d0,dosbase
 beq	error2


 move.l	dosbase,a6
 move.l	#nome,d1
 move.l	#-2,d2
 jsr	lock(a6)
 tst.l	d0
 beq	erry
 move.l	d0,locksav

 move.l	dosbase,a6
 move.l	locksav,d1
 move.l	filepoint,d2
 jsr	examine(a6)
 tst.l	d0
 beq	erry
 bra	uitvoeren

loop:
 move.l	dosbase,a6
 move.l	locksav,d1
 move.l	filepoint,d2
 jsr	exnext(a6)
 tst.l	d0
 beq	erry
 
uitvoeren:
 lea	dirplaats,a0
 add.l	teller,a0
 move.l	filepoint,a1
 lea	8(a1),a1
 add.l	#20,teller
 cmp.l	#3200,teller
 beq	erry

 moveq	#$13,d7
cop:
 move.b	(a1)+,(a0)+
 dbf	d7,cop
 move.l	filepoint,a1
 lea	4(a1),a1
 move.l	(a1),-4(a0)
 bra	loop 

erry:
 move.l	dosbase,a6
 jsr	ioerr(a6)

 lea	dirplaats,a0
 add.l	teller,a0
 move.l	#0,0(a0)
 move.l	#0,20(a0)
 move.l	#0,40(a0)
 move.l	#0,60(a0)
 move.l	#0,80(a0)
 move.l	#0,100(a0)
 move.l	#0,120(a0)
 move.l	#0,140(a0)
 move.l	#0,160(a0)
 move.l	#0,180(a0)
 move.l	#0,200(a0)
 move.l	#0,220(a0)


 move.l	$4,a6
 move.l dosbase,a1
 jsr	-414(a6)
 cmp.l	#1,verklooiflag
 bne	dgf
 move.l filenamespo,a2
 sub.l	#filenames,a2
 add.l	#noman,a2
 move.b	#$2f,-1(a2)
dgf:
 rts

error2:
 move.w	#$0f0f,$dff180
 cmp.l	#1,verklooiflag
 bne	dgf2
 move.l filenamespo,a2
 sub.l	#filenames,a2
 add.l	#noman,a2
 move.b	#$2f,-1(a2)
dgf2:
 rts

nome:		dc.b	'df0:'
noman:		blk.b	100,0
even
filepoint:	dc.l	fileinfo
teller:	dc.l	0
locksav:	blk.l	1
dc.l	0
fileinfo:	blk.l	260,0




even
filename2s:	dc.b	'df1:'

filenames:
	blk.b	100,$00
	dc.b	$2a,$2a
even

filenamespo:	dc.l	filenames
filecnt:dc.w	0

abclicken:
	clr.l	d0
	clr.l	d1
	move.b	$dff00b,d0
	move.b	$dff00a,d1
	bsr	 calculator
	cmp.w	#185,d0
	blo	uits
	cmp.w	#300,d0
	bhi	uits
	cmp.w	#74,d1
	blo	uits
	cmp.w	#169,d1
	bhi	uits
	move.w	d1,d2
	sub.w	#74,d2
	and.w	#$f8,d2
	add.w	#118,d2
	move.b	d2,rastwacht
	move.b	d2,rastwacht2
	add.b	#8,rastwacht2
	btst	#6,$bfe001
	bne	uits
	sub.w	#74,d1
	asr.w	#3,d1	;8
	add.w	filecnt,d1
	mulu	#20,d1	;20
	lea	dirplaats,a0
	lea	(a0,d1),a0
	move.l	filenamespo,a1
	cmp.b	#0,(a0)
	beq	uits
	cmp.l	#2,16(a0)	;dirretje?
	beq	dirhandle
	moveq	#14,d7
coepyjen:
	cmp.b	#0,(a0)
	beq	roonir
	move.b	(a0)+,(a1)+
	dbf	d7,coepyjen
	move.b	#0,(a1)
	bra	ahiu
roonir:
	move.b	#0,(a1)+
	dbf	d7,roonir

copfns:
ahiu:
	lea	samplestruct,a5
	move.l	samplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a5
	move.l	#15,d7
	lea	12(a5),a5
	move.l	filenamespo,a0
grt:	move.b	(a0)+,(a5)+
	dbf	d7,grt
	rts

copsnf:
	lea	samplestruct,a5
	move.l	samplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a5
	move.l	#15,d7
	lea	12(a5),a5
	move.l	filenamespo,a0
gtr:	move.b	(a5)+,(a0)+
	dbf	d7,gtr
	rts

dirhandle:
	moveq	#15,d7
	move.l	filenamespo,d5
	sub.l	#filenames,d5
	move.l	filenamespo,a2
	lea	noman,a3
	lea	(a3,d5),a3
;	cmp.l	#0,d5
;	beq	gretvr2	
gretvr:
;	move.b	#$2f,(a3)+
;	add.l	#1,filenamespo
gretvr2:
	move.b	(a0),(a2)+
	move.b	(a0)+,(a3)+
	add.l	#1,filenamespo
	cmp.b	#0,(a0)
	beq	kjr
	dbf	d7,gretvr2
kjr:	move.b	#$2f,(a2)+
	move.b	#$2f,(a3)+
	add.l	#1,filenamespo
	move.b	#0,(a2)
	move.b	#0,(a3)

	lea	m,a0
	bsr	dirview
	rts


enterfilenames:
	btst	#6,$bfe001
	bne	uits

	move.b	#$20,charks
	move.l	#161,d5
	move.l	#64,d4
spacerso:
	move.l	d5,d1
	move.l	d4,d0
	move.l	#charks,a0
	bsr	drukemafreins
	add.l	#8,d4
	cmp.l	#168,d4
	bne	spacerso
	move.l	filenamespo,a0
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+

	move.w	#$000f,mkleur+2
	bsr	keyboardmadnesss
	move.w	#$0aaa,mkleur+2
	lea	FILENAMEs,A0
	move.l	#20,d0
checkerss:
	move.b	(a0),d1
	cmp.b	#$2a,d1
	beq	checkers2s
	add.l	#1,a0
	dbf	d0,checkerss
	rts
checkers2s:
	move.b	#0,(a0)+
	dbf	d0,checkers2s

	lea	samplestruct,a6
	move.l	samplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a6
	move.l	#19,d7
	lea	12(a6),a6
	move.l	filenamespo,a0
droplul:
	move.b	(a0)+,(a6)+
	dbf	d7,droplul
	rts

specialeffect:	dc.l	0

drukemafreins:
	asr.l	#3,d0
	mulu	#40,d1
	cmp.l	#1,specialeffect
	beq	ui
	lea	m,a1
	bra	ui2
ui:	lea	s,a1

ui2:	clr.l	specialeffect
	add.l	d0,a1
	add.l	d1,a1
	clr.l	d0
	move.b	(a0),d0


 cmp.b	#$60,d0
 bls	pnochor
 cmp.b	#$7b,d0
 bls	pchar
pnochor:

 cmp.b	#$40,d0
 bls	pnochor2
 cmp.b	#$5b,d0
 bls	pchar2
pnochor2:

 cmp.b	#$2d,d0
 beq	pstreepje
 cmp.b	#$23,d0
 beq	phekje
 cmp.b	#$20,d0
 beq	pspacejen
 cmp.b	#$2e,d0
 beq	ppoint
 cmp.b	#$30,d0
 blo	hots
 cmp.b	#$39,d0
 bls	ciefer
hots:
 move.l	#320,d0  ;cijfer
 bra	klaer
ciefer:
 sub.b	#21,d0
 bra	klaer
pchar:
 sub.b	#$60,d0
 bra	klaer
pchar2:
 sub.b	#$40,d0
 bra	klaer
phekje:
 move.b	#38,d0
 bra	klaer
pspacejen:
 move.l	#320,d0
 bra	klaer
ppoint:
 move.b	#39,d0
 bra	klaer
pstreepje:
 move.b	#37,d0
klaer:

	lea	f,a0
	add.l	d0,a0
	move.l	#7,d0
coploops:
	move.b	(a0),(a1)
	move.b	(a0),8000(a1)
	add.l	#40,a0
	add.l	#40,a1
	dbf	d0,coploops
	rts

keyboardmadnesss:
 move.l	#$10000,d0
delays:
 sub.l	#1,d0
 bne	delays
 move.l	#161,yps
 move.l	#64,xps
 move.l	filenamespo,a2

scanners:
 btst	#0,$bfec01
 beq	scanners
 clr.l	d1
 move.b	$bfec01,d1
 ror.l	#1,d1
 lea	charsset,a0
 add.l	d1,a0
 sub.l	d3,d3

 lea	charks,a1
 move.b	(a0),(a1)
 move.b	(a0),(a2)+
 clr.b	flags

 cmp.b	#$2a,(a0)
 bne	texters
 move.b	#$ff,flags
 bra	ritss

texters:

scanner2s:
 btst	#0,$bfec01
 bne	scanner2s

 move.l	a2,-(a7)

 move.l	xps,d0
 move.l	yps,d1
 lea	charks,a0
 jsr	drukemafreins

 move.l	(a7)+,a2

 add.l	#8,xps
 cmp.l	#176,xps
 bne	ritss
 move.b	#0,(a2)
 sub.l	#1,a2
 move.l	#168,xps

ritss:
 cmp.b	#$ff,flags
 bne	scanners
 
 rts

xps:	dc.l	0
yps:	dc.l	0


charks:
	dc.b	0

flags:
	dc.b	0


laadallinst:
	lea	samplestruct,a5
	move.l	#16,samplenr
	add.l	#12,a5
laadloop:
	cmp.l	#$73746f70,(a5)	;stop
	beq	stoppemaar
	cmp.b	#0,(a5)
	beq	stoppemaar
	cmp.l	#$6e6f6e65,(a5)	;none
	beq	dezeoverslaan
	move.l	a5,-(a7)
	bsr	laders
	move.l	(a7)+,a5
dezeoverslaan:
	add.l	#32,a5
	add.l	#1,samplenr
	cmp.l	#48,samplenr
	beq	stoppemaar
	bra	laadloop
stoppemaar:
	move.l	#16,samplenr
	rts



laders:
	cmp.l	#1,firflags
	beq	uit
	cmp.l	#'df0:',filename2s
	bne	da0
	bsr	driveaan0
da0:
	cmp.l	#'df1:',filename2s
	bne	da1
	bsr	driveaan1
da1:
	cmp.l	#'df2:',filename2s
	bne	da2
	bsr	driveaan2
da2:
	cmp.l	#'df3:',filename2s
	bne	da3
	bsr	driveaan3
da3:
	tst.w	d7
	bne	uit

	lea	samplestruct,a6
	move.l	samplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a6
	move.l	#19,d7
	lea	12(a6),a6
	move.l	filenamespo,a0
droplullie:
	move.b	(a6)+,(a0)+
	dbf	d7,droplullie

	move.l	$4,a6

	move.l	#dosname,a1
	jsr	-408(a6)
	move.l	d0,dosbase
	cmp.l	#0,d0
	beq	uits
	
	move.l	dosbase,a6
	move.l	filenamespo,a5
	cmp.b	#0,(a5)
	beq	uits

****

	move.l	dosbase,a6
	move.l	#filename2s,d1
	move.l	#1005,d2
	jsr	-30(a6)	;open
	cmp.l	#0,d0
	beq	uit
	move.l	d0,bif
	
	move.l	bif,d1
	move.l	samples,d2	;buf
	
	lea	samplestruct,a6
	move.l	samplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a6

	move.l	#108,d3		;length
	add.l	(a6),d2		;buf
	move.l	d2,aiai
;	sub.l	(a6),d3
	move.l	dosbase,a6
	jsr	-42(a6)	;read	

	
	move.l	bif,d1

	lea	samplestruct,a6
	move.l	samplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a6

	move.l	8(a6),d3		;length
	move.l	aiai,d2		;buf
	add.l	#108,d2
	sub.l	(a6),d3
	sub.l	#108,d3

	move.l	aiai,a6
	cmp.b	#$46,(a6)
	bne	hujge
	cmp.b	#$4f,1(a6)
	bne	hujge
	cmp.b	#$52,2(a6)
	bne	hujge
	cmp.b	#$4d,3(a6)
	bne	hujge
	sub.l	#108,d2
hujge:
	cmp.l	#$f0000,d3
	bhi	noloadings

	move.l	dosbase,a6
	jsr	-42(a6)	;read	

noloadings:
	move.l	dosbase,a6
	move.l	bif,d1
	jsr	-36(a6)	;close

	move.l	dosbase,a1
	move.l	$4,a6
	jsr	-414(a6)

	move.l	#10000,d0
wachtens:
	sub.l	#1,d0
	bne	wachtens

	move.l	$4,a6



odetotugtypes:
	btst	#14,$dff002
	bne	odetotugtypes

	clr.w	$dff042
	rts
aiai:
	dc.l	0

******************* instedit routines ********************

allesafdrukken:

;inst nr
	move.l	instnr,d1
	move.l	d1,lastinstr
	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+215,a0		;120,5		
	jsr	text

	move.l	instnr,d1
	sub.l	#1,d1
	lea	inst1,a4
	mulu	#32,d1
	add.l	d1,a4
	
;usewaveformnr

	move.l	(a4),d1

	lea	getaltable,a1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+615,a0		;120,15
	jsr	text


	lea	getaltable,a1
	move.l	arpbcount,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+1255,a0		;120,31
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.l	arpbcount,d2
	move.b	4(a4,d2),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+1655,a0		;120,41
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	28(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+2295,a0		;120,57
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	29(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+2695,a0		;120,67
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	31(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+3295,a0		;120,82
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	21(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+3895,a0		;120,97
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	20(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+4295,a0		;112,104
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	23(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+4695,a0		;112,114
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	22(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+5095,a0		;112,124
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	24(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+5495,a0		;112,134
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	27(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+5895,a0		;112,144
	jsr	text


	lea	getaltable,a1
	clr.l	d1
	move.b	26(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+6295,a0		;112,154
	jsr	text

;fine tuning
	lea	getaltable,a1
	clr.l	d1
	move.b	30(a4),d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+275,a0		;280,6
	jsr	text

	lea	getaltable,a1
	move.l	mix1source1,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+6978,a0		;144,174
	jsr	text

	lea	getaltable,a1
	move.l	mix2source1,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+7538,a0		;144,188
	jsr	text

	lea	getaltable,a1
	move.l	mix1source2,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+6987,a0		;216,174
	jsr	text

	lea	getaltable,a1
	move.l	mix2source2,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+7547,a0		;216,188
	jsr	text

	lea	getaltable,a1
	move.l	mix1dest1,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+6995,a0		;280,174
	jsr	text

	lea	getaltable,a1
	move.l	mix2dest1,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+7555,a0		;280,188
	jsr	text

	lea	getaltable,a1
	move.l	showingwavenr,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+1075,a0		;280,26
	jsr	text

	lea	getaltable,a1
	move.l	wavepresetnr,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+5474,a0		;272,136
	jsr	text

	lea	getaltable,a1
	move.l	mix1speed,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+6964,a0		;32,174
	jsr	text

	lea	getaltable,a1
	move.l	mix2speed,d1
	asl.l	#2,d1
	add.l	d1,a1
	lea	i+7524,a0		;32,188
	jsr	text
rts



uit2i:
	clr.l	delayteli
	rts
pluzzenandminneni:
	cmp.l	#0,delayteli
	beq	gaatverderi
	cmp.l	#50,delayteli
	beq	gaatverderi
	btst	#6,$bfe001
	bne	uit2i
	add.l	#1,delayteli
	move.l	#70,knopstatusi
	rts
gaatverderi:

	clr.l	d1
	clr.l	d0

	move.b	pos8,d1
	move.b	pos8+1,d0
	bsr	calculator
	move.l	d1,d2
	move.l	d0,d1
	move.l	#70,knopstatusi
	btst	#6,$bfe001
	bne	uit2i
	cmp.l	#50,delayteli
	beq	skipiti
	move.l	#1,delayteli
skipiti:
	move.l	#56,d0
	lea	pluzmintabeli,a4
	clr.l	d3
	move.l	#1,d4
testeni:
	move.w	(a4),d3
	cmp.w	d3,d1
	blo	verdertesteni
	move.w	2(a4),d3
	cmp.w	d3,d1
	bhi	verdertesteni
;y
	move.w	4(a4),d3
	cmp.w	d3,d2
	blo	verdertesteni
	move.w	6(a4),d3
	cmp.w	d3,d2
	bhi	verdertesteni
	
	move.l	d4,knopstatusi
	rts
verdertesteni:
	add.l	#1,d4
	add.l	#8,a4
	dbf	d0,testeni
	move.l	#70,knopstatusi
	clr.l	delayteli
	rts

pluzmintabeli:
	dc.w	148,157,4,13,106,115,4,13
	dc.w	148,157,14,23,106,115,14,23
	dc.w	148,157,30,39,106,115,30,39
	dc.w	148,157,40,49,106,115,40,49
	dc.w	148,157,56,65,106,115,56,65
	dc.w	148,157,66,75,106,115,66,75
	dc.w	148,157,81,90,106,115,81,90
	dc.w	148,157,96,105,106,115,96,105
	dc.w	148,157,106,115,106,115,106,115
	dc.w	148,157,116,125,106,115,116,125
	dc.w	148,157,126,135,106,115,126,135
	dc.w	148,157,136,145,106,115,136,145
	dc.w	148,157,146,155,106,115,146,155
	dc.w	148,157,156,165,106,115,156,165

	dc.w	171,180,173,182,131,140,173,182
	dc.w	171,180,187,196,131,140,187,196

	dc.w	242,251,173,182,204,213,173,182
	dc.w	242,251,187,196,204,213,187,196

	dc.w	307,316,173,182,267,276,173,182
	dc.w	307,316,187,196,267,276,187,196

;wavepreset
	dc.w	300,309,135,144,258,267,135,144
;wavenr
	dc.w	306,315,25,34,269,278,25,34
;acceptpreset
	dc.w	206,319,108,126
;return
	dc.w	180,319,153,169
;mixspeed1 en 2
	dc.w	20,29,173,182,58,67,173,181
	dc.w	20,29,187,196,58,67,187,196
;upsample-dsample
	dc.w	277,314,43,70,277,314,76,103
;samplemenu
	dc.w	180,205,40,126
;fine tuning
	dc.w	306,315,5,14,269,278,5,14
jumptablei:
	dc.l	hinstnr,linstnr
	dc.l	husewnr,lusewnr
	dc.l	harpbcnt,larpbcnt
	dc.l	harpb,larpb
	dc.l	hphaseshft,lphaseshft
	dc.l	hphasespd,lphasespd
	dc.l	hpitchf,lpitchf
	dc.l	hattvol,lattvol
	dc.l	hattspd,lattspd
	dc.l	hdecvol,ldecvol
	dc.l	hdecspd,ldecspd
	dc.l	hsustim,lsustim
	dc.l	hrelvol,lrelvol
	dc.l	hrelspd,lrelspd
	dc.l	hmix1src1,lmix1src1
	dc.l	hmix2src1,lmix2src1
	dc.l	hmix1src2,lmix1src2
	dc.l	hmix2src2,lmix2src2
	dc.l	hmix1dest1,lmix1dest1
	dc.l	hmix2dest1,lmix2dest1
	dc.l	hwavepres,lwavepres
	dc.l	hwavenr,lwavenr	
	dc.l	accpres
	dc.l	return
	dc.l	lmix1spd,hmix1spd
	dc.l	lmix2spd,hmix2spd
	dc.l	upsample,dsample
	dc.l	naarsample
	dc.l	fineup,finedown
	dc.l	uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit
	dc.l	uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit
	dc.l	uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit
	dc.l	uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit,uit

naarsample:
	move.l	#1,naarsampleflag
	rts

hinstnr:
	add.l	#1,instnr
	cmp.l	#64,instnr
	bne	uit
	move.l	#63,instnr
	rts
linstnr:
	sub.l	#1,instnr
	cmp.l	#0,instnr
	bne	uit
	move.l	#1,instnr
	rts

fineup:
	add.b	#1,30(a4)
	cmp.b	#7,30(a4)
	bne	uit
	clr.b	30(a4)
	rts

finedown:
	sub.b	#1,30(a4)
	cmp.b	#255,30(a4)
	bne	uit
	move.b	#6,30(a4)
	rts

husewnr:
	add.l	#1,(a4)
	cmp.l	#64,(a4)	;32*32
	bne	uit
	move.l	#1,(a4)
	rts

lusewnr:
	sub.l	#1,(a4)
	cmp.l	#0,(a4)
	bne	uit
	move.l	#63,(a4)
	rts

harpbcnt:
	add.l	#1,arpbcount
	cmp.l	#16,arpbcount
	bne	uit
	move.l	#15,arpbcount
	rts

larpbcnt:
	sub.l	#1,arpbcount
	cmp.l	#-1,arpbcount
	bne	uit
	move.l	#0,arpbcount
	rts
harpb:
	move.l	arpbcount,d0
	add.b	#1,4(a4,d0)
	rts

larpb:
	move.l	arpbcount,d0
	sub.b	#1,4(a4,d0)
	rts
hphaseshft:
	add.b	#1,28(a4)
	rts
lphaseshft:
	sub.b	#1,28(a4)
	rts
hphasespd:
	add.b	#1,29(a4)
	cmp.b	#32,29(a4)
	bne	uit
	move.b	#31,29(a4)
	rts
lphasespd:
	sub.b	#1,29(a4)
	cmp.b	#-1,29(a4)
	bne	uit
	clr.b	29(a4)
	rts
hpitchf:
	add.b	#1,31(a4)
	cmp.b	#128,31(a4)
	bne	uit
	move.b	#127,31(a4)
	rts
lpitchf:
	sub.b	#1,31(a4)
	cmp.b	#-128,31(a4)
	bne	uit
	move.b	#-127,31(a4)
	rts
hattvol:
	add.b	#1,21(a4)
	rts
lattvol:
	sub.b	#1,21(a4)
	rts
hattspd:
	add.b	#1,20(a4)
	rts
lattspd:
	sub.b	#1,20(a4)
	rts
hdecvol:
	add.b	#1,23(a4)
	rts
ldecvol:
	sub.b	#1,23(a4)
	rts
hdecspd:
	add.b	#1,22(a4)
	rts
ldecspd:
	sub.b	#1,22(a4)
	rts
hsustim:
	add.b	#1,24(a4)
	rts
lsustim:
	sub.b	#1,24(a4)
	rts
hrelvol:
	add.b	#1,27(a4)
	rts
lrelvol:
	sub.b	#1,27(a4)
	rts
hrelspd:
	add.b	#1,26(a4)
	rts
lrelspd:
	sub.b	#1,26(a4)
	rts
hmix1src1:
	add.l	#1,mix1source1
	cmp.l	#32,mix1source1
	bne	uit
	move.l	#1,mix1source1
	rts
lmix1src1:
	sub.l	#1,mix1source1
	cmp.l	#0,mix1source1
	bne	uit
	move.l	#31,mix1source1
	rts
hmix1src2:
	add.l	#1,mix1source2
	cmp.l	#32,mix1source2
	bne	uit
	move.l	#1,mix1source2
	rts
lmix1src2:
	sub.l	#1,mix1source2
	cmp.l	#0,mix1source2
	bne	uit
	move.l	#31,mix1source2
	rts
hmix2src1:
	add.l	#1,mix2source1
	cmp.l	#32,mix2source1
	bne	uit
	move.l	#1,mix2source1
	rts
lmix2src1:
	sub.l	#1,mix2source1
	cmp.l	#0,mix2source1
	bne	uit
	move.l	#31,mix2source1
	rts
hmix2src2:
	add.l	#1,mix2source2
	cmp.l	#32,mix2source2
	bne	uit
	move.l	#1,mix2source2
	rts
lmix2src2:
	sub.l	#1,mix2source2
	cmp.l	#0,mix2source2
	bne	uit
	move.l	#31,mix2source2
	rts

hmix1dest1:
	add.l	#1,mix1dest1
	cmp.l	#32,mix1dest1
	bne	uit
	move.l	#1,mix1dest1
	rts
lmix1dest1:
	sub.l	#1,mix1dest1
	cmp.l	#0,mix1dest1
	bne	uit
	move.l	#31,mix1dest1
	rts
hmix2dest1:
	add.l	#1,mix2dest1
	cmp.l	#32,mix2dest1
	bne	uit
	move.l	#1,mix2dest1
	rts
lmix2dest1:
	sub.l	#1,mix2dest1
	cmp.l	#0,mix2dest1
	bne	uit
	move.l	#31,mix2dest1
	rts
hmix1spd:
	add.l	#1,mix1speed
	and.l	#63,mix1speed
	rts
lmix1spd:
	sub.l	#1,mix1speed
	and.l	#63,mix1speed
	rts
hmix2spd:
	add.l	#1,mix2speed
	and.l	#63,mix2speed
	rts
lmix2spd:
	sub.l	#1,mix2speed
	and.l	#63,mix2speed
	rts





hwavepres:
	add.l	#1,wavepresetnr
	and.l	#15,wavepresetnr
	rts
lwavepres:
	sub.l	#1,wavepresetnr
	and.l	#15,wavepresetnr
	rts
hwavenr:
	add.l	#1,showingwavenr
	cmp.l	#16,showingwavenr
	bne	uit
	move.l	#1,showingwavenr
	rts
lwavenr:
	sub.l	#1,showingwavenr
	cmp.l	#0,showingwavenr
	bne	uit
	move.l	#15,showingwavenr
	rts
accpres:
	move.l	wavepresetnr,d0
	asl.l	#5,d0
	lea	presets,a0
	add.l	d0,a0
	move.l	showingwavenr,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a1
	add.l	d0,a1
	move.l	#31,d0
copydop:
	move.b	(a0)+,(a1)+
	dbf	d0,copydop
	rts

return:
	move.l	#1,naarsongflag
	rts

upsample:
	move.l	showingwavenr,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a1
	add.l	d0,a1
	move.l	a1,a0
	move.l	a0,a2
	move.l	#15,d0
copydop3:
	move.b	(a0)+,(a1)+
	add.l	#1,a0
	dbf	d0,copydop3

	move.l	a2,a1
	add.l	#16,a1
	move.l	#15,d0
copydop4:
	move.b	(a2)+,(a1)+
	dbf	d0,copydop4
	rts

dsample:
	move.l	showingwavenr,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a1
	add.l	d0,a1
	move.l	a1,a0
	add.l	#16,a0
	add.l	#32,a1

	move.l	#15,d0
copydop5:
	move.b	-(a0),-(a1)
	move.b	(a0),-(a1)
	dbf	d0,copydop5
	rts


checkstatusi:
	move.l	instnr,d1
	sub.l	#1,d1
	lea	inst1,a4
	mulu	#32,d1
	add.l	d1,a4

	move.l	knopstatusi,d0
	cmp.l	#0,d0
	beq	draaierdi
	sub.l	#1,d0
draaierdi:
	asl.l	#2,d0
	lea	jumptablei,a0
	add.l	d0,a0
	move.l	(a0),a0
	move.l	#68,knopstatusi
	jmp	(a0)
uiti:
	rts

copypast:
	move.b	$bfec01,d2
	cmp.b	#$55,d2
	bne	testpast

	move.l	instnr,d1
	sub.l	#1,d1
	lea	inst1,a4
	mulu	#32,d1
	add.l	d1,a4
	lea	copyinstbuf,a3
	moveq	#31,d7
lhgfdkj:
	move.b	(a4)+,(a3)+
	dbf	d7,lhgfdkj
	rts
testpast:
	cmp.b	#$53,d2
	bne	okjammer
	move.l	instnr,d1
	sub.l	#1,d1
	lea	inst1,a4
	mulu	#32,d1
	add.l	d1,a4
	lea	copyinstbuf,a3
	moveq	#31,d7
lhgfdkj2:
	move.b	(a3)+,(a4)+
	dbf	d7,lhgfdkj2
okjammer:
	rts
copyinstbuf:	blk.b	32,0



empty:
	blk.b	40,$00



displaywave:
	
 lea	i+1707,a1	;216,42
 lea	empty,a0
 move.l	a0,$dff050
 move.l	a1,$dff054
 move.w	#-8,$dff064
 move.w	#32,$dff066
 move.w	#$ffff,$dff044
 move.w	#$ffff,$dff046
 move.w	#%0000100111110000,$dff040
 clr.w	$dff042
 move.w	#%1000010111110000,$dff096
 move.w	#4096+4,$dff058
 move.w	#%0000010000000000,$dff096

 move.l	showingwavenr,d0
 sub.l	#1,d0
 asl.l	#5,d0
 lea	waveform1,a0
 add.l	d0,a0

 move.l	#208,d4
looperd:
 clr.l	d5
 move.b	(a0)+,d5
 add.b	#128,d5
 asr.l	#2,d5
 clr.l	d6
 move.b	#105,d6
 sub.b	d5,d6

 move.l	d4,d0
 move.l	d6,d1
 lea	i,a5
 bsr	pset

 move.l	d4,d0
 move.l	d6,d1
 add.l	#1,d0
 lea	i,a5
 bsr	pset

 add.l	#2,d4
 cmp.l	#272,d4
 blo	looperd
rts

editwave:
	clr.l	d0
	clr.l	d1
	move.b	$dff00b,d0
	move.b	$dff00a,d1
	bsr	calculator
	btst	#6,$bfe001
	bne	uit
	cmp.w	#208,d0
	blo	uit
	cmp.w	#272,d0
	bhs	uit
	cmp.w	#42,d1
	blo	uit
	cmp.w	#106,d1
	bhs	uit
	sub.w	#42,d1
	sub.w	#208,d0
	asr.w	#1,d0
	asl.l	#2,d1
	move.l	d1,d2
	add.b	#128,d2
	move.l	#255,d1
	sub.b	d2,d1

 move.l	showingwavenr,d2
 sub.l	#1,d2
 asl.l	#5,d2

 lea	waveform1,a0
 add.l	d2,a0
 move.b	d1,0(a0,d0)
 rts




pclear:
 move.b	#$b5, label+1
pset:
 divu	#8,d0
 mulu	#40,d1
 add.w	d0,d1
 swap 	d0
 move.b	#7,d2
 sub.b	d0,d2
label:
 bset	d2,(a5,d1)
 move.b	#$f5,label+1
 rts

*************** FILE HANDLING **************
even
filename2:	dc.b	'df0:'

filename:
	blk.b	100,$00
	dc.b	$55,$55
even

enterfilename:
	btst	#6,$bfe001
	bne	uit
	clr.l	d0
	clr.l	d1
	move.b	$dff00b,d0
	move.b	$dff00a,d1
	bsr	calculator
	cmp.w	#64,d0
	blo	uit
	cmp.w	#178,d0
	bhi	uit
	cmp.w	#161,d1
	blo	uit
	cmp.w	#168,d1
	bhi	uit

	move.b	#$20,chark
	move.l	#161,d5
	move.l	#64,d4
spacer:
	move.l	d5,d1
	move.l	d4,d0
	move.l	#chark,a0
	bsr	drukemafrein
	add.l	#8,d4
	cmp.l	#168,d4
	bne	spacer
	move.l	pfilenamespo,a0
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+
	clr.b	(a0)+

	move.w	#$000f,mkleur+2
	bsr	keyboardmadness
	move.w	#$0aaa,mkleur+2
	move.l	pFILENAMEspo,A0
	move.l	#20,d0
checkers:
	move.b	(a0),d1
	cmp.b	#$2a,d1
	beq	checkers2
	add.l	#1,a0
	dbf	d0,checkers
	rts
checkers2:
	move.b	#0,(a0)+
	dbf	d0,checkers2
	rts


drukemafrein:
	move.l	#1,specialeffect
	jmp	drukemafreins

keyboardmadness:
 move.l	#$10000,d0
delay:
 sub.l	#1,d0
 bne	delay
 move.l	#161,yp
 move.l	#64,xp
 move.l	pfilenamespo,a2

scanner:
 btst	#0,$bfec01
 beq	scanner
 clr.l	d1
 move.b	$bfec01,d1
 ror.l	#1,d1
 lea	charsset,a0
 add.l	d1,a0
 sub.l	d3,d3

 lea	chark,a1
 move.b	(a0),(a1)
 move.b	(a0),(a2)+
 clr.b	flag

 cmp.b	#$2a,(a0)
 bne	texter
 move.b	#$ff,flag
 bra	rits

texter:

scanner2:
 btst	#0,$bfec01
 bne	scanner2

 move.l	a2,-(a7)

 move.l	xp,d0
 move.l	yp,d1
 lea	chark,a0
 jsr	drukemafrein

 move.l	(a7)+,a2

 add.l	#8,xp
 cmp.l	#176,xp
 bne	rits
 move.b	#0,(a2)
 sub.l	#1,a2
 move.l	#168,xp

rits:
 cmp.b	#$ff,flag
 bne	scanner
 
 rts



xp:	dc.l	0
yp:	dc.l	0

charsset:
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"           *    "
	dc.b	"987     MNBVCXZ "
	dc.b	"654    LKJHGFDSA"
	dc.b	"321   POIUYTREWQ"
	dc.b	"     0987654321 "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "
	dc.b	"                "

chark:
	dc.b	0

flag:
	dc.b	0

dosbase:
	dc.l	0
dosname:
	dc.b	'dos.library',0	
neplaadbuf:
	blk.b	600,0

lader:
	cmp.l	#1,firflag
	beq	uit
	cmp.l	#'df0:',filename2
	bne	njet0
	bsr	driveaan0
njet0:
	cmp.l	#'df1:',filename2
	bne	njet1
	bsr	driveaan1
njet1:
	cmp.l	#'df2:',filename2
	bne	njet2
	bsr	driveaan2
njet2:
	cmp.l	#'df3:',filename2
	bne	njet3
	bsr	driveaan3
njet3:
	tst.w	d7
	bne	uit

	move.l	$4,a6
	move.l	#dosname,a1
	jsr	-408(a6)
	move.l	d0,dosbase
	cmp.l	#0,d0
	beq	uit
	
	move.l	dosbase,a6
	move.l	pfilenamespo,a3
	cmp.b	#0,(a3)
	beq	uit
	move.l	#filename2,d1
	move.l	#1005,d2
	jsr	-30(a6)	;open
	cmp.l	#0,d0
	beq	uit
	move.l	d0,bif
	
	move.l	dosbase,a6
	move.l	bif,d1
	move.l	#neplaadbuf,d2
	move.l	#36,d3
	jsr	-42(a6)	;read	

	lea	neplaadbuf,a0
	move.l	filestruct,d0
	cmp.l	(a0),d0
	bne	uit
	
	move.l	dosbase,a6
	move.l	bif,d1
	jsr	-36(a6)	;close


	move.l	dosbase,a6
	move.l	#filename2,d1
	move.l	#1005,d2
	jsr	-30(a6)	;open
	cmp.l	#0,d0
	beq	uit
	move.l	d0,bif
	
	move.l	bif,d1
	move.l	#filestruct,d2
	lea	neplaadbuf,a6
	move.l	32(a6),d3
	move.l	d3,lengthbew
	move.l	#10320,d3	;song without dat
	move.l	dosbase,a6
	jsr	-42(a6)	;read	

	move.l	bif,d1
	move.l	patroom,d2
	move.l	lengthbew,d3
	sub.l	#10320,d3	;song without dat
	cmp.l	#$9000,d3
	bhi	nokkeg
	move.l	dosbase,a6
	jsr	-42(a6)	;read	
nokkeg:
	move.l	dosbase,a6
	move.l	bif,d1
	jsr	-36(a6)	;close

	move.l	dosbase,a1
	move.l	$4,a6
	jsr	-414(a6)

	move.l	#10000,d0
wachten:
	sub.l	#1,d0
	bne	wachten

	move.l	$4,a6



odetotugtype:
	btst	#14,$dff002
	bne	odetotugtype
	clr.w	$dff042


	rts

lengthbew:	dc.l	0

saver:
	cmp.l	#1,firflag
	beq	uit
	cmp.l	#'df0:',filename2
	bne	snjet0
	bsr	driveaan0
snjet0:
	cmp.l	#'df1:',filename2
	bne	snjet1
	bsr	driveaan1
snjet1:
	cmp.l	#'df2:',filename2
	bne	snjet2
	bsr	driveaan2
snjet2:
	cmp.l	#'df3:',filename2
	bne	snjet3
	bsr	driveaan3
snjet3:
	tst.w	d7
	bne	uit

	lea	song1,a0
	lea	song2,a1
	lea	song3,a2
	lea	song4,a3
	move.l	#254,d0
	move.l	#1,d1
haaleruit:
	move.l	(a0)+,d2
	cmp.l	d2,d1
	bhi	sorryn1
	move.l	d2,d1
sorryn1:

	move.l	(a1)+,d2
	cmp.l	d2,d1
	bhi	sorryn2
	move.l	d2,d1
sorryn2:

	move.l	(a2)+,d2
	cmp.l	d2,d1
	bhi	sorryn3
	move.l	d2,d1
sorryn3:

	move.l	(a3)+,d2
	cmp.l	d2,d1
	bhi	sorryn4
	move.l	d2,d1
sorryn4:

	add.l	#2,a0
	add.l	#2,a1
	add.l	#2,a2
	add.l	#2,a3
	dbf	d0,haaleruit
	add.l	#2,d1
	move.l	d1,highestpatused

	move.l	#64,d0
	asl.l	#2,d0
	mulu	d1,d0
	add.l	#9296+512+512,d0
	move.l	d0,length

	move.l	$4,a6

	move.l	$4,a6
	move.l	#dosname,a1
	jsr	-408(a6)
	move.l	d0,dosbase
	cmp.l	#0,d0
	beq	uit
	
	move.l	dosbase,a6
	move.l	filenamespo,a3
	cmp.b	#0,(a3)
	beq	uit
	move.l	#filename2,d1
	move.l	#1006,d2
	jsr	-30(a6)	;open
	cmp.l	#0,d0
	beq	uit
	move.l	d0,bif
	
	move.l	dosbase,a6
	move.l	bif,d1
	move.l	#filestruct,d2
	move.l	length,d3
	jsr	-48(a6)	;write	

	move.l	dosbase,a6
	move.l	bif,d1
	jsr	-36(a6)	;close

	move.l	dosbase,a1
	move.l	$4,a6
	jsr	-414(a6)

	move.l	#10000,d0
wachten2:
	sub.l	#1,d0
	bne	wachten2

	move.l	$4,a6

odetotugtype2:
	btst	#14,$dff002
	bne	odetotugtype2

	clr.w	$dff042
	rts


;*************** TRANSFORMER ***************
;-------------------------------------------
;transforms editor-muzax to little compact sidmonreplay-files 
;
;IN NOTIME!
;*******************************************


;*************** THIS IS THE SUPERB VERSION ***************
;*--------------------------------------------------------*
;*************** FOR EXTRA SMALL TUNES !!!! ***************
;
;>>>>>>>>>>>>>>>>>>>>>> WITH SAMPLES <<<<<<<<<<<<<<<<<<<<<< 



transformer:
	cmp.l	#1,firflag
	beq	uit
	cmp.l	#'df0:',filename2
	bne	onjet0
	bsr	driveaan0
onjet0:
	cmp.l	#'df1:',filename2
	bne	onjet1
	bsr	driveaan1
onjet1:
	cmp.l	#'df2:',filename2
	bne	onjet2
	bsr	driveaan2
onjet2:
	cmp.l	#'df3:',filename2
	bne	onjet3
	bsr	driveaan3
onjet3:
	tst.w	d7
	bne	uit

	lea	song1,a0
	lea	song2,a1
	lea	song3,a2
	lea	song4,a3
	move.l	#254,d0
	move.l	#1,d1
kuhaaleruit:
	move.l	(a0)+,d2
	cmp.l	d2,d1
	bhi	kusorryn1
	move.l	d2,d1
kusorryn1:

	move.l	(a1)+,d2
	cmp.l	d2,d1
	bhi	kusorryn2
	move.l	d2,d1
kusorryn2:

	move.l	(a2)+,d2
	cmp.l	d2,d1
	bhi	kusorryn3
	move.l	d2,d1
kusorryn3:

	move.l	(a3)+,d2
	cmp.l	d2,d1
	bhi	kusorryn4
	move.l	d2,d1
kusorryn4:

	add.l	#2,a0
	add.l	#2,a1
	add.l	#2,a2
	add.l	#2,a3
	dbf	d0,kuhaaleruit
	add.l	#2,d1
	move.l	d1,highestpatused

	move.l	#64,d0
	asl.l	#2,d0
	mulu	d1,d0
	add.l	#9296+512+512,d0
	move.l	d0,length


	clr.l	structje
	clr.l	sampleoffsetje

	lea	filestruct,a0
	lea	newspace,a1
	move.l	#35,d0
copyf:
	move.b	(a0)+,(a1)+
	dbf	d0,copyf

	move.l	songlength,d7
	add.l	#2,d7
	mulu	#6,d7

	move.l	#36,d0
	move.l	d0,song1offset
	add.l	d7,d0
	move.l	d0,song2offset
	add.l	d7,d0
	move.l	d0,song3offset
	add.l	d7,d0
	move.l	d0,song4offset
	add.l	d7,d0
	move.l	d0,inst1offset

	
	move.l	d7,d6
	
	lea	song1,a0
	lea	offsetter,a1
	add.l	#36,a1		;offset song 1

	move.l	#3,d2	;4 songs!
copy1:
	move.l	d6,d7
	sub.l	#1,d7
	move.l	a0,a2
copadop:
	move.b	(a0)+,(a1)+
	dbf	d7,copadop

	move.l	a2,a0

	add.l	#1536,a0
	dbf	d2,copy1		



;effe checken hoeveel instrumentjes zijn ge-used!!


	move.l	patroom,a0
	addq	#1,a0
	move.l	#6335,d7
	clr.l	d4
	clr.l	d5
chubbychecker:
	move.b	(a0),d4
	cmp.b	d4,d5
	bhi	neinzwein
	move.b	d4,d5
neinzwein:
	add.l	#4,a0
	dbf	d7,chubbychecker
	move.l	d5,d4	;HIGHEST INSTRUMENT USED

	mulu	#32,d5	;32 lang!!

	move.l	inst1offset,d6
	add.l	d5,d6
	move.l	d6,waveform1offset
	
;instrument-STRUCTURES copieen
	
	lea	inst1,a0
	lea	offsetter,a1
	move.l	inst1offset,d6
	add.l	d6,a1

	move.l	d5,d7	;anzahl bytjens
coppen:
	move.b	(a0)+,(a1)+
	dbf	d7,coppen



	move.l	d4,d7	;anzahl instruments
	clr.l	d5
	lea	inst1,a0
kijken:
	move.l	(a0),d1
	cmp.l	#15,d1
	bhi	neinzweidrei	;sample??
	cmp.l	d1,d5
	bhi	neinzweidrei	
	move.l	d1,d5
neinzweidrei:
	add.l	#32,a0		;volgende inst bekijken
	dbf	d7,kijken
	add.l	#2,d5		;synch
	move.l	d5,d2
	mulu	#32,d5
	move.l	d5,d7
	move.l	waveform1offset,d6
	add.l	d7,d6
	move.l	d6,variablesoffset

	sub.l	#1,d7
	lea	waveform1,a0
	lea	offsetter,a1
	move.l	waveform1offset,d6
	add.l	d6,a1
copagain:
	move.b	(a0)+,(a1)+
	dbf	d7,copagain

;copy-variables

	lea	mix1source1,a0
	move.l	variablesoffset,a1
	add.l	#offsetter,a1
	move.l	#43,d7
copycopy:
	move.b	(a0)+,(a1)+
	dbf	d7,copycopy

	move.l	variablesoffset,d0
	add.l	#44,d0
	move.l	d0,wavelistoffset

;in d2 zit hoogste waveform gebruikt

	move.l	d2,d7
	lea	offsetter,a1
	add.l	d0,a1
	lea	wavelists,a0
copper:
	move.l	(a0)+,(a1)+
	move.l	(a0)+,(a1)+
	move.l	(a0)+,(a1)+
	move.l	(a0)+,(a1)+
	dbf	d7,copper
	sub.l	#offsetter,a1
	move.l	a1,patroomoffset

********************************
;now pas compacking the patterns
********************************

;check length for number of pats used

	lea	filestruct+32,a0	;length
	move.l	(a0),d0
	sub.l	#9296+512,d0
	asr.l	#2,d0			;pat length/4

	lea	filestruct+9276,a0
	move.l	#64,d1		;now contains pat length
	move.l	d1,d2
	divu	d1,d0

	and.l	#$0000ffff,d0	;now contains number of pats to pack!


;now we must compack the old source pats to new little pats
;
;and when I mean little ....

	lea	patpointers,a5
	lea	filestruct+9296+512+512,a0	;source


;*********** THIS ONE HAS TO BE ANGEPAST!!! **********

	lea	offsetter,a1	;dest
	add.l	patroomoffset,a1

innerloop1:
	move.l	d2,d1
	sub.l	#1,d1

	move.l	a1,d5

***************

	sub.l	patroomoffset,d5
	sub.l	#offsetter,d5
	move.l	d5,(a5)+		;patpointer

innerloop2:
	move.l	(a0),d4		;firsttime check! (vielleicht  $ff ??)
	cmp.b	#$0,(a0)
	bne	normalfirsttime

;than this must be the abnormal firsttime !!

	move.b	#$ff,(a1)+
	move.b	#$00,(a1)+
	move.b	#$00,(a1)+
	move.b	#$00,(a1)+
	add.l	#4,a0
	move.b	#0,(a1)
	bra	go_on
normalfirsttime:
	move.b	(a0)+,(a1)+	;note
	move.b	(a0)+,(a1)+	;instr
	move.b	(a0)+,(a1)+	;bendnote
	move.b	(a0)+,(a1)+	;bendspeed
	move.b	#0,(a1)		;time op nul
go_on:
	sub.l	#1,d1		;yep one is already done
	
;from here normal routine!

normalrout:
	cmp.b	#0,(a0)
	beq	checkfurther
	add.l	#1,a1
	
	move.b	(a0)+,(a1)+
	move.b	(a0)+,(a1)+
	move.b	(a0)+,(a1)+
	move.b	(a0)+,(a1)+
	move.b	#0,(a1)		;time op nul
	bra	checkfurther2

checkfurther:
	add.b	#1,(a1)		;time one higher
	add.l	#4,a0

checkfurther2:
	
	nop
	nop		;synchronisation nops!
	nop
	move.l	a0,$dff180	;flits

	dbf	d1,normalrout
	add.l	#1,a1
	dbf	d0,innerloop1
	move.l	#begin,a0
	add.l	#2,a1
	move.l	a1,d0
	and.l	#$fffffffe,d0
	move.l	d0,a1
	clr.l	d0


*##############################################*
*NOW THE PATPOINTERS BEHIND THE PATTERNS COPIEN*
*##############################################*

	sub.l	#patpointers,a5

	move.l	a1,d0
	sub.l	#offsetter,d0
	move.l	d0,patpointersoffset

	lea	patpointers,a0
	move.l	a5,d7
	sub.l	#1,d7
nokke:
	move.b	(a0)+,(a1)+
	dbf	d7,nokke
	move.l	#begin,a0

	move.l	a1,a6		;(effewegzetten)
	sub.l	#offsetter,a1
	move.l	a1,samplesoffset
	move.l	a6,a1

	clr.l	kusamplenr
	clr.l	kusamplenr2
	add.l	#4,a6
	

	lea	samplestruct,a5
	;a6 is dest	
	move.l	#16,kusamplenr
laadloop2:
	cmp.l	#$53544f50,12(a5)	;stop
	beq	stoppemaar2
	cmp.b	#0,12(a5)
	beq	stoppemaar2
	move.l	(a5)+,(a6)+
	move.l	(a5)+,(a6)+
	move.l	(a5)+,(a6)+
	move.l	(a5)+,(a6)+
	move.l	(a5)+,(a6)+
	move.l	(a5)+,(a6)+
	move.l	(a5)+,(a6)+
	move.l	(a5)+,(a6)+

	add.l	#1,kusamplenr
	cmp.l	#48,kusamplenr
	beq	stoppemaar2
	bra	laadloop2
stoppemaar2:
	move.l	kusamplenr,kusamplenr2

	add.l	#$4,a1
	move.l	a1,structje	;real adress

	move.l	a6,sampleoffsetje	;real adress
	sub.l	a1,a6

	
	move.l	a6,-4(a1)	;samplesoffset
	


	movem.l	a0/a1,-(a7)

	move.l	structje,a5
	move.l	#16,kusamplenr
	add.l	#12,a5
kulaadloop:
	move.w	(a5),$dff180
	cmp.l	#$73746f70,(a5)	;stop
	beq	kustoppemaar
	cmp.b	#0,(a5)
	beq	kustoppemaar
	cmp.l	#$6e6f6e65,(a5)	;none
	beq	kudezeoverslaan
	move.l	a5,-(a7)
	bsr	kuladers
	move.l	(a7)+,a5
kudezeoverslaan:
	add.l	#32,a5
	move.l	kusamplenr2,d0
	add.l	#1,kusamplenr
	cmp.l	kusamplenr,d0
	beq	kustoppemaar
	bra	kulaadloop
kustoppemaar:


	sub.l	#32,a5
	movem.l	(a7)+,a0/a1

	move.l	sampleoffsetje,a1
	add.l	-4(a5),a1

	move.l	#cplay,a0
	move.l	a0,kustart
	move.l	a1,kustop
	sub.l	a0,a1
	move.l	a1,kulength

	move.l	$4,a6
	move.l	#dosname,a1
	jsr	-408(a6)
	move.l	d0,dosbase
	cmp.l	#0,d0
	beq	uit
	
	move.l	dosbase,a6
	move.l	filenamespo,a3
	cmp.b	#0,(a3)
	beq	uit
	move.l	#filename2,d1
	move.l	#1006,d2
	jsr	-30(a6)	;open
	cmp.l	#0,d0
	beq	uit
	move.l	d0,kubif
	
	move.l	dosbase,a6
	move.l	kubif,d1
	move.l	kustart,d2
	move.l	kulength,d3
	jsr	-48(a6)	;write	

	move.l	dosbase,a6
	move.l	kubif,d1
	jsr	-36(a6)	;close

	move.l	dosbase,a1
	move.l	$4,a6
	jsr	-414(a6)

	move.l	#10000,d0
kulwachten2:
	sub.l	#1,d0
	bne	kulwachten2

	move.l	$4,a6

kulodetotugtype2:
	btst	#14,$dff002
	bne	kulodetotugtype2

	clr.w	$dff042
	rts

kustart:	dc.l	0
kustop:		dc.l	0
kulength:	dc.l	0
kubif:		dc.l	0

kuladers:
	move.l	structje,a6
	move.l	kusamplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a6
	move.l	#19,d7
	lea	12(a6),a6
	lea	kufilenames,a0
kudroplullie:
	move.b	(a6)+,(a0)+
	dbf	d7,kudroplullie

	
	move.l	sampleoffsetje,d2	;buf
	
	move.l	structje,a6
	move.l	kusamplenr,d3
	sub.l	#16,d3
	asl.l	#5,d3
	add.l	d3,a6

	move.l	8(a6),d3		;length
	add.l	(a6),d2		;buf
	sub.l	(a6),d3

	jsr	nepread	

	move.l	#10000,d0
kuwachtens:
	move.w	d0,$dff180
	sub.l	#1,d0
	bne	kuwachtens

	move.l	$4,a6


klodetotugtypes:
	btst	#14,$dff002
	bne	klodetotugtypes

	clr.w	$dff042
	rts

nepread:
;d2	buffer
;d3	length
	subq	#1,d3
	move.l	d2,a1
	move.l	d2,a0
	sub.l	sampleoffsetje,a0
	add.l	samples,a0
fhij:	move.b	(a0)+,(a1)+
	dbf	d3,fhij
	rts

structje:	dc.l	0
sampleoffsetje:	dc.l	0
kusamplenr:	dc.l	0
kusamplenr2:	dc.l	0

kufilename2s:	dc.b	'df1:'
kufilenames:	blk.b	40,0


***********	(tijdelijk)
patpointers:
	;adresses where to pinpoint pats (well,ofsetts actually!)
	blk.l	256,0		;max 100 pats used
***********

teruggietugku:
	bra	teruggietug


* ************************************************************ *  
** ***            SID-MONITOR - PLAY ROUTINE              *** **  
*** ****------------------------------------------------**** *** 
*** ******************************************************** *** 
*** ****------------------------------------------------**** ***  
** ****            CREATED BY REINIER V VLIET             *** **  
* ************************************************************ *  
                                                                 

vumeter:
	lea	ch1,a0
	moveq	#3,d7
	lea	s+6041+8000,a1
vu1:
	lea	(a1),a2
	addq	#1,a1
	move.l	(a0),d6
vu2:
	move.b	#%11111110,(a2)
	lea	-40(a2),a2
	dbf	d6,vu2

	move.l	#80,d6
	sub.l	(a0),d6
vu3:
	move.b	#%00000000,(a2)
	lea	-40(a2),a2
	dbf	d6,vu3

	addq	#4,a0
	dbf	d7,vu1
	rts

playon:
	bsr	init
	cmp.l	#1,intflag
	beq	interisaan
	bsr	interon
interisaan:
	rts

playoff:
	bsr	interoff
	rts

init:
	move.w	#$000f,$dff096
	move.w	#$000f,frut
	lea	datas(pc),a0
	move.l	#19,d0
clear:
	clr.l	(a0)+
	dbf	d0,clear
	
	move.l	#3,d0
	lea	datas(pc),a0
	lea	audiochannel1,a1
	move.l	#$dff0a0,a3
loop1:
	move.l	(a1)+,a2

	move.l	seqnr,d5
	sub.l	#1,d5
	mulu	#6,d5
	add.l	d5,a2

	move.l	a2,(a0)+
	move.l	(a2),d5
	cmp.l	#0,vanuitpatflag
	beq	standard

	move.l	patcount,d5
standard:
	move.l	patroom,a4
	move.l	#64,d6
	asl.l	#2,d6
	mulu	d5,d6
	add.l	d6,a4

	move.l	a4,(a0)+
	clr.l	d6
	move.b	1(a2),d6
	sub.b	#1,d6
	lea	inst1,a4
	mulu	#32,d6
	add.l	d6,a4

	move.l	a4,(a0)+
	move.l	#$99990000,(a0)+
	move.l	#$00000800,(a0)+
	move.l	#$00000000,(a0)+
	move.l	#$00000000,(a0)+
	move.w	#$0000,(a0)+
	move.w	#$0100,(a0)+
	move.w	#$10,4(a3)
	move.w	#$00,8(a3)
	lea	16(a3),a3
	dbf	d0,loop1
	move.w	#$00ff,$dff09e
	move.l	#-1,intercount
	cmp.l	#1,vanuitpatflag
	bne	rein
	move.w	#$8001,$dff096
	move.w	#$8001,frut

	rts
rein:
	move.w	#$800f,$dff096
	move.w	#$800f,frut
	move.l	seqnr,intersongcount
	rts


interon:
	cmp.l	#1,intflag
	beq	noton
	move.l	$6c,oldirqvec+2
	move.l	#muzakplay,$6c
	move.l	#1,intflag
noton:
	clr.l	endofpatflag
	clr.l	endofsongflag
	move.l	speed,flipflap
	rts
interoff:
	cmp.l	#0,intflag
	beq	notoff
	move.l	oldirqvec+2,$6c
	move.w	#$000f,$dff096
	move.w	#$000f,frut
	clr.l	intflag
	move.w	#0,ch1+2
	move.w	#0,ch2+2
	move.w	#0,ch3+2
	move.w	#0,ch4+2

notoff:
	rts

onoff:	blk.l	20,0

muzakplay:
	movem.l	d0-d7/a0-a6,-(a7)
	lea	onoff,a0
	cmp.w	#1,2(a0)
	bne	n1
	move.w	#80,ch1+2
n1:
	cmp.w	#1,4(a0)
	bne	n2
	move.w	#80,ch2+2
n2:
	cmp.w	#1,8(a0)
	bne	n3
	move.w	#80,ch3+2
n3:
	cmp.w	#1,16(a0)
	bne	n4
	move.w	#80,ch4+2
n4:

	cmp.w	#0,ch1+2
	beq	y1
	sub.w	#2,ch1+2
y1:
	cmp.w	#0,ch2+2
	beq	y2
	sub.w	#2,ch2+2
y2:
	cmp.w	#0,ch3+2
	beq	y3
	sub.w	#2,ch3+2
y3:
	cmp.w	#0,ch4+2
	beq	y4
	sub.w	#2,ch4+2
y4:


	lea	onoff,a0
	clr.l	(a0)+
	clr.l	(a0)+
	clr.l	(a0)+
	clr.l	(a0)+
	clr.l	(a0)+
	clr.l	(a0)+
	clr.l	(a0)+

	lea	datas(pc),a0
	move.l	#$dff0a0,a1	
	lea	audiochannel1,a5
	move.w	#$0001,dma
	bsr	play


	cmp.l	#1,muziekstilflag
	beq	apart
	cmp.l	#0,vanuitpatflag
	bne	ditwazit
	lea	datas+32,a0
	lea	$dff0b0,a1	
	lea	audiochannel2,a5
	move.w	#$0002,dma
	bsr	play
	lea	datas+64,a0
	lea	$dff0c0,a1
	lea	audiochannel3,a5
	move.w	#$0004,dma
	bsr	play	
	lea	datas+96,a0
	lea	$dff0d0,a1
	lea	audiochannel4,a5
	move.w	#$0008,dma
	bsr	play	
ditwazit:
	add.l	#1,flipflap
	move.l	speed,d0
	cmp.l	flipflap,d0
	bhs	soor
	clr.l	flipflap
soor:
	clr.l	endofpatflag
	clr.l	endofsongflag
	cmp.l	#0,flipflap
	bne	wegwezer

	add.l	#1,intercount
	move.l	intercount,d0
	cmp.l	patlength,d0
	bne	rnoendofpat
	move.l	#0,intercount
	move.l	#1,endofpatflag

	cmp.l	#1,vanuitpatflag
	bne	rsongtellers

 bra	ralle

rsongtellers:
	add.l	#1,intersongcount
	move.l	songlength,d0
	cmp.l	intersongcount,d0	
	bhi	rnoendofsong
	move.l	#1,intersongcount
	move.l	#1,endofsongflag
rnoendofsong:
	
ralle:

rnoendofpat:
	move.l	intersongcount,seqnr
nottim:
wegwezer:
	bsr	mixforms
	bsr	filters

	bsr	loopenen
	movem.l	(a7)+,d0-d7/a0-a6
oldirqvec:
	jmp	$00000000

apart:
	move.w	#$8001,$dff096
	move.w	#$8001,frut
	bra	wegwezer

play:
	clr.l	audpoint
	clr.l	audper
	clr.l	audvol
	clr.w	audlen
	clr.l	notchangeflag

	cmp.l	#1,muziekstilflag
	beq	envelopehandler
	cmp.l	#0,flipflap
	bne	nosub

	cmp.l	#1,endofpatflag
	bne	noendofpat

	cmp.l	#1,vanuitpatflag
	bne	songtellers


 move.l	patroom,a2
 move.l	patcount,d0
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a2
 bra	alle

songtellers:
	add.l	#6,(a0)
	cmp.l	#1,endofsongflag
	bne	noendofsong
	move.l	(a5),a2
	move.l	a2,(a0)
noendofsong:
	
	move.l	(a0),a2
	move.l	(a2),d0
 move.l	patroom,a2
 move.l	#64,d1
 asl.l	#2,d1
 mulu	d0,d1
 add.l	d1,a2
 


alle:
	move.l	a2,4(a0)

noendofpat:
	clr.l	d1
	move.l	4(a0),a2

	clr.l	d0
	move.w	dma,d0
	asl.w	#1,d0
	lea	onoff,a6
	lea	(a6,d0),a6

	clr.l	d0
	move.b	1(a2),d0
	cmp.b	#0,d0
	beq	noinstrument
	move.w	#1,(a6)

	sub.l	#1,d0
	asl	#5,d0
	lea	inst1,a3
	add.l	d0,a3
	move.w	#16,audlen

	cmp.b	#0,31(a0)
	beq	overhene	
	move.w	dma,$dff096
	move.w	dma,frut
overhene:

	clr.b	31(a0)
	move.l	(a3),d0		
	cmp.b	#16,d0
	bhs	itsasample
nosmpl:


	move.b	#0,28(a0)	;wavestep
	move.b	d0,29(a0)	;cur wavelist
	sub.b	#1,d0
	asl.l	#4,d0
	lea	wavelists,a4
	add.l	d0,a4
	clr.l	d1
	move.b	(a4),d1		;cur waveform

	move.b	1(a4),30(a0)	;timer

	sub.l	#1,d1
	asl.l	#5,d1
	add.l	#waveform1,d1
	cmp.l	#1,notchangeflag
	beq	noiceforce
	move.l	d1,audpoint
noiceforce:
	move.l	a3,8(a0)
	clr.b	18(a0)
	clr.w	26(a0)
	clr.w	22(a0)
	bra	hoepadoepahoe
noinstrument:
	cmp.b	#0,(a2)	;note
	beq	hoepadoepahoe

	clr.l	d0
	move.w	dma,d0
	asl.w	#1,d0
	lea	onoff,a6
	lea	(a6,d0),a6
	move.w	#1,(a6)

	clr.l	d0
	move.b	29(a0),d0
	move.l	#1,d1
	cmp.b	#0,31(a0)
	beq	hoepadoepahoe
	bra	itsasample
hoepadoepahoe:
	clr.l	d1
	move.b	(a2),d1			;note
	cmp.b	#0,d1
	beq	envelopehandler
	lea	frequencies,a3
	move.l	(a0),a4
	add.b	5(a4),d1
	asl.l	#1,d1
	move.w	0(a3,d1),d2
;***				FINE TUNING!(kut metina + ramona)
	move.l	a4,snelweg
	move.l	8(a0),a4	;cur inst
	clr.l	d3
	move.b	30(a4),d3
	mulu	#134,d3
	add.l	d3,a3
	move.w	2(a3,d1),d2
	move.l	snelweg,a4


;***
	move.w	d2,12(a0)
	move.b	d1,16(a0)
	move.w	d2,audper
sosorry:
	clr.b	18(a0)		
	clr.w	20(a0)
	clr.w	22(a0)
	clr.w	26(a0)
	move.b	#0,15(a0)
	move.b	2(a2),d2
	cmp.b	#0,d2
	bne	neins
	cmp.b	#0,3(a2)
	beq	druppel

	move.l	8(a0),a3	;cur inst
	lea	20(a3),a3	;envelopes
	move.b	3(a2),1(a3)
	move.b	3(a2),(a3)
	move.b	#0,15(a0)	
	move.l	8(a0),a3
	move.b	29(a3),25(a0)
	clr.b	30(a0)
	bra	envelopehandler
neins:
	cmp.b	#2,d2		;c#1
	bne	nospeedchng
	move.b	3(a2),speed+3
	move.b	#0,15(a0)	
	move.l	8(a0),a3
	move.b	29(a3),25(a0)
	clr.b	30(a0)
	bra	envelopehandler
nospeedchng:

	cmp.b	#3,d2		;d-1
	bne	nopatlengthchng
	move.b	3(a2),patlength+3
	and.b	#63,patlength+3
	cmp.b	#2,patlength+3
	bhi	jipp
	move.b	#2,patlength+3
jipp:
	move.b	#0,15(a0)	
	move.l	8(a0),a3
	move.b	29(a3),25(a0)
	clr.b	30(a0)
	bra	envelopehandler
nopatlengthchng:

	add.b	5(a4),d2
	move.b	d2,14(a0)
	move.b	3(a2),15(a0)
druppel:
	move.l	8(a0),a3
	move.b	29(a3),25(a0)
envelopehandler:
	add.l	#4,a2
	move.l	a2,4(a0)
nosub:
	move.l	8(a0),a3	;cur inst
	lea	20(a3),a3	;envelopes
	clr.w	d3
	clr.w	d2
	clr.w	d1
	move.b	18(a0),d1
	cmp.b	#0,d1
	beq	attack
	add.l	#2,a3
	cmp.b	#2,d1
	beq	decay
	add.l	#2,a3
	cmp.b	#4,d1
	beq	sustain
	add.l	#2,a3
	cmp.b	#6,d1
	beq	release
	bra	envelopegone
attack:
	move.b	(a3),d1
	move.b	1(a3),d2		
	move.b	20(a0),d3
	add.w	d1,d3
	move.w	d3,audvol
	move.b	d3,20(a0)
	cmp.w	d2,d3
	bls	envelopegone
	add.b	#2,18(a0)
	move.w	d2,audvol
	move.b	d2,20(a0)
	bra	envelopegone

decay:
	move.b	(a3),d1
	move.b	1(a3),d2		
	move.b	20(a0),d3
	sub.w	d1,d3
	move.w	d3,audvol
	move.b	d3,20(a0)
	cmp.w	d2,d3
	bls	pasaan
	cmp.w	#$ff00,d3
	bhs	pasaan
	bra	envelopegone
pasaan:
	add.b	#2,18(a0)
	move.w	d2,audvol
	move.b	d2,20(a0)
	move.b	2(a3),21(a0)	;sustain time
	bra	envelopegone

sustain:
	move.b	20(a0),d3
	move.w	d3,audvol
	sub.b	#1,21(a0)
	cmp.b	#0,21(a0)
	bne	envelopegone
	add.b	#2,18(a0)
	bra	envelopegone

release:
	move.b	(a3),d1
	move.b	1(a3),d2		
	move.b	20(a0),d3
	sub.w	d1,d3
	move.w	d3,audvol
	move.b	d3,20(a0)
	cmp.w	d2,d3
	bls	pasaan2
	cmp.w	#$ff00,d3
	bhi	pasaan2
	bra	envelopegone
pasaan2:
	add.b	#2,18(a0)
	move.w	d2,audvol
	move.b	d2,20(a0)

envelopegone:

	move.l	8(a0),a2
	add.b	#1,17(a0)
	and.b	#15,17(a0)
	clr.l	d1
	move.b	17(a0),d1
	lea	4(a2),a2
	add.l	d1,a2
	move.b	(a2),d1
	clr.l	d2
	move.b	16(a0),d2
	asl.w	#1,d1
	add.b	d1,d2
	lea	frequencies,a2
	add.l	d2,a2

;***				FINE TUNING!

	move.l	8(a0),a6	;cur inst
	clr.l	d3
	move.b	30(a6),d3
	mulu	#134,d3
	add.l	d3,a2
	move.w	(a2),d2

;***

	move.w	d2,12(a0)
	move.w	d2,audper

noarpeggio:
	clr.w	d3
	move.b	15(a0),d3
	cmp.b	#0,d3
	beq	audioinit
	neg.b	d3
	ext.w	d3
	clr.l	d4
	move.b	14(a0),d4
	asl.w	#1,d4
	lea	frequencies,a4
	add.l	d4,a4

;***				FINE TUNING!

	move.l	8(a0),a6	;cur inst
	clr.l	d5
	move.b	30(a6),d5
	mulu	#134,d5
	add.l	d5,a4

;***

	move.w	(a4),d4
	btst	#15,d3
	beq	up
	move.w	22(a0),d2
	add.w	d3,d2
	add.w	d2,12(a0)	;cur freq
	move.w	d2,22(a0)
	move.w	12(a0),d2
	cmp.w	d2,d4
	blo	audioinit
	move.b	14(a0),d3
	asl.b	#1,d3
	move.b	d3,16(a0)
	move.w	d4,12(a0)
	clr.w	22(a0)
	move.b	#0,15(a0)
	bra	audioinit
up:
	move.w	22(a0),d2
	add.w	d3,d2
	add.w	d2,12(a0)	;cur freq
	move.w	d2,22(a0)
	move.w	12(a0),d2
	cmp.w	d2,d4
	bhi	audioinit
	move.b	14(a0),d3
	asl.b	#1,d3
	move.b	d3,16(a0)
	move.w	d4,12(a0)
	clr.w	22(a0)
	move.b	#0,15(a0)
audioinit:	
	move.l	8(a0),a4
	cmp.b	#0,28(a4)
	beq	audio3
	cmp.b	#0,25(a0)
	bne	audio2
	clr.l	d0
	move.b	28(a4),d0
	sub.b	#1,d0
	asl.l	#5,d0
	add.l	#waveform1,d0
	move.l	d0,a4
	add.b	#1,24(a0)
	and.b	#$1f,24(a0)
	clr.l	d0
	move.b	24(a0),d0
	add.l	d0,a4
	clr.w	d1
	move.b	(a4),d1
	ext.w	d1
	ext.l	d1
	asr.w	#2,d1
	add.w	d1,12(a0)
	bra	audio3
audio2:
	sub.b	#1,25(a0)
audio3:
	move.l	8(a0),a4
	clr.w	d4
	move.b	31(a4),d4
	ext.w	d4
	neg.w	d4
	add.w	d4,26(a0)		;pitch cutting
	move.w	26(a0),d4
	add.w	d4,12(a0)



waverlist:
	cmp.b	#0,31(a0)
	bne	nowaverlist
	cmp.b	#0,30(a0)
	bne	nowavechange
	cmp.b	#16,28(a0)
	beq	theend
	lea	wavelists,a2
	clr.l	d0
	move.b	29(a0),d0
	sub.b	#1,d0
	asl.l	#4,d0
	add.l	d0,a2		;which list?
	
	clr.l	d0
	move.b	28(a0),d0
	add.l	d0,a2		;add wave step

	cmp.b	#$ff,(a2)	;goto?
	bne	nogoto
	move.b	1(a2),28(a0)
	and.b	#$fe,28(a0)
	bra	theend
nogoto:
	lea	waveform1,a3
	move.b	(a2),d0		;new wave

	sub.b	#1,d0
	asl.w	#5,d0
	add.l	d0,a3
	move.l	a3,audpoint
noiceforcea:
	move.b	1(a2),30(a0)	;wavetimer
	add.b	#2,28(a0)
theend:
	bra	theend2
nowavechange:
	sub.b	#1,30(a0)
theend2:
nowaverlist:

	cmp.l	#0,audpoint
	beq	skip1
	move.l	audpoint,(a1)
skip1:
	cmp.w	#0,audper
	beq	skip2
	move.w	12(a0),6(a1)
skip2:
	cmp.w	#0,audvol
	beq	skip3
	move.w	audvol,d0
	asr.w	#2,d0
	move.w	d0,8(a1)	
skip3:
	cmp.w	#0,audlen
	beq	skip4
	move.w	audlen,d0
	move.w	d0,4(a1)
skip4:
	move.l	#30,d0
dbfen:
	nop
	dbf	d0,dbfen

	move.w	#$800f,$dff096
	move.w	#$800f,frut
	rts

snelweg:	dc.l	0

itsasample:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	a5,effeweg
	move.l	a3,effeweg2	
	cmp.w	#$0001,dma
	bne	not1
	lea	audch1,a5
	bra	not4
not1:
	cmp.w	#$0002,dma
	bne	not2
	lea	audch2,a5
	bra	not4
not2:
	cmp.w	#$0004,dma
	bne	not3
	lea	audch3,a5
	bra	not4
not3:
	lea	audch4,a5
not4:
	cmp.b	#0,31(a0)
	beq	geendmauit

	move.w	dma,$dff096
	move.w	dma,frut
geendmauit:

	move.l	d0,d1
	sub.l	#16,d0
	asl.l	#5,d0
	lea	samplestruct,a3
	add.l	d0,a3
	move.l	d1,d0

	move.l	samples,a4
	add.l	(a3),a4
	move.l	a4,audpoint
	move.l	a4,haya1
	move.l	#1,notchangeflag	

	move.l	samples,a4
	cmp.l	#0,4(a3)
	bne	oky
	move.l	#$ffffffff,a4
	bra	oko
oky:
	add.l	4(a3),a4
oko:
	move.l	a4,(a5)		
	move.l	a4,haya2
	move.l	a4,d1

	move.l	samples,a4
	add.l	8(a3),a4
	sub.l	d1,a4
	move.l	a4,d1		; new length 
	asr.l	#1,d1

	move.l	d1,4(a5)

;cur length 
	move.l	audpoint,a4
	sub.l	samples,a4
	move.l	8(a3),d2
	sub.l	a4,d2
	asr.l	#1,d2
	move.w	d2,audlen
	move.l	d2,haya3


	move.b	#1,31(a0)
	move.l	effeweg,a5
	move.l	effeweg,a3
	movem.l	(a7)+,d0-d7/a0-a6
	cmp.l	#1,d1
	beq	hoepadoepahoe
	cmp.l	#9,d1
	beq	teruggietugku
	bra	nosmpl
loopenen:
	lea	datas,a0
	lea	audch1,a1

	cmp.b	#1,31(a0)
	bne	gel2
	move.b	#2,31(a0)
	bra	chan2try
gel2:
	cmp.b	#2,31(a0)
	bne	chan2try
	move.b	#3,31(a0)
	cmp.l	#$ffffffff,(a1)
	beq	noloopie2
	move.l	(a1),$dff0a0
	move.l	4(a1),d0
	move.w	d0,$dff0a4	
	bra	chan2try
noloopie2:
	move.l	#empty,$dff0a0
	move.w	#2,$dff0a4

chan2try:
	lea	datas+32,a0
	lea	audch2,a1
	cmp.b	#1,31(a0)
	bne	gel3
	move.b	#2,31(a0)
	bra	chan3try
gel3:
	cmp.b	#2,31(a0)
	bne	chan3try
	move.b	#3,31(a0)
	cmp.l	#$ffffffff,(a1)
	beq	noloopie3
	move.l	(a1),$dff0b0
	move.l	4(a1),d0
	move.w	d0,$dff0b4	
	bra	chan3try
noloopie3:
	move.l	#empty,$dff0b0
	move.w	#2,$dff0b4

chan3try:
	lea	datas+64,a0
	lea	audch3,a1
	cmp.b	#1,31(a0)
	bne	gel4
	move.b	#2,31(a0)
	bra	chan4try
gel4:
	cmp.b	#2,31(a0)
	bne	chan4try
	move.b	#3,31(a0)
	cmp.l	#$ffffffff,(a1)
	beq	noloopie4
	move.l	(a1),$dff0c0
	move.l	4(a1),d0
	move.w	d0,$dff0c4	
	bra	chan4try
noloopie4:
	move.l	#empty,$dff0c0
	move.w	#2,$dff0c4

chan4try:
	lea	datas+96,a0
	lea	audch4,a1
	cmp.b	#1,31(a0)
	bne	gel5
	move.b	#2,31(a0)
	bra	chan5try
gel5:
	cmp.b	#2,31(a0)
	bne	chan5try
	move.b	#3,31(a0)
	cmp.l	#$ffffffff,(a1)
	beq	noloopie5
	move.l	(a1),$dff0d0
	move.l	4(a1),d0
	move.w	d0,$dff0d4	
	bra	chan5try
noloopie5:
	move.l	#empty,$dff0d0
	move.w	#2,$dff0d4

chan5try:
	rts

notchangeflag:
	dc.l	0
audch1:
	dc.l	0,0
audch2:
	dc.l	0,0
audch3:
	dc.l	0,0
audch4:
	dc.l	0,0


effeweg:	dc.l	0
effeweg2:	dc.l	0

dma:
	dc.l	0

mixforms:
	move.l	mix1speed,d0
	cmp.l	#0,d0
	beq	nomix1

	cmp.l	#0,playmix1speed
	bne	nomix2

	move.l	mix1speed,playmix1speed

	move.l	mix1source1,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a0
	add.l	d0,a0

	move.l	mix1source2,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a1
	add.l	d0,a1

	add.l	#1,verloopje1
	and.l	#31,verloopje1

	move.l	mix1dest1,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a2
	add.l	d0,a2

	move.l	verloopje1,d1
	move.l	#31,d0
mixendiehap1:
	clr.l	d2
	clr.l	d3
	move.b	0(a0,d0),d2
	add.b	#128,d2
	move.b	0(a1,d1),d3
	add.b	#128,d3
	add.w	d3,d2
	asr.w	#1,d2
	sub.b	#128,d2
	move.b	d2,0(a2,d0)
	sub.l	#1,d1
	and.l	#31,d1
	dbf	d0,mixendiehap1

nomix2:
	sub.l	#1,playmix1speed
nomix1:

	move.l	mix2speed,d0
	cmp.l	#0,d0
	beq	nomix12

	cmp.l	#0,playmix2speed
	bne	nomix22

	move.l	mix2speed,playmix2speed

	move.l	mix2source1,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a0
	add.l	d0,a0

	move.l	mix2source2,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a1
	add.l	d0,a1


	add.l	#1,verloopje2
	and.l	#31,verloopje2

	move.l	mix2dest1,d0
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a2
	add.l	d0,a2

	move.l	verloopje2,d1
	move.l	#31,d0
mixendiehap2:
	clr.l	d2
	clr.l	d3
	move.b	0(a0,d0),d2
	add.b	#128,d2
	move.b	0(a1,d1),d3
	add.b	#128,d3
	add.w	d3,d2
	asr.w	#1,d2
	sub.b	#128,d2
	move.b	d2,0(a2,d0)
	sub.l	#1,d1
	and.l	#31,d1
	dbf	d0,mixendiehap2

nomix22:
	sub.l	#1,playmix2speed
nomix12:
	rts

filters:
	move.l	#1,d0	;source
	sub.l	#1,d0
	asl.l	#5,d0
	lea	waveform1,a1
	add.l	d0,a1

	
	add.l	verloopje1,a1
	neg.b	(a1)	
	rts
	

playmix1speed:
	dc.l	0
playmix2speed:
	dc.l	0
verloopje1:
	dc.l	0
verloopje2:
	dc.l	0





audpoint:	dc.l	0
audper:		dc.l	0
audvol:		dc.l	0
audlen:		dc.w	0
intercount:	dc.l	0


datas:
	dc.l	0	;currentsong
	dc.l	0	;currentpattern
	dc.l	0	;currentinstrument
	dc.w	0	;curfreq
	dc.b	0	;end note
	dc.b	0	;bend speed
	dc.b	0	;last note
	dc.b	0	;arpeggiocount
	dc.b	0	;envelopecount
	dc.b	0	;notetimer
	dc.b	0	;last volumie
	dc.b	0	;sustaincount
	dc.w	0	;pitch-count
	dc.b	0	;phasetimer
	dc.b	0	;phase flipflop
	dc.w	0	;pitchfallcount
	dc.b	0	;currentwavestep
	dc.b	0	;currentwavelist
	dc.b	0	;wavecount
	dc.b	0	;sampleflag
	blk.b	32*3,0


audiochannel1:
	dc.l	song1		
audiochannel2:
	dc.l	song2
audiochannel3:
	dc.l	song3
audiochannel4:
	dc.l	song4

frequencies:
dc.w 0000
dc.w 5760,5424,5120,4832,4560,4304,4064,3840,3616;oct1
dc.w 3424,3232,3048,2880,2712,2560,2416,2280,2152,2032,1920,1808;oct2
dc.w 1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,0960,0904;oct3
dc.w 0856,0808,0762,0720,0678,0640,0604,0570,0538,0508,0480,0452;oct4
dc.w 0428,0404,0381,0360,0339,0320,0302,0285,0269,0254,0240,0226;oct5
dc.w 0214,0202,0190,0180,0170,0160,0151,0143,0135,0127		;oct6


***
dc.w 0,0,0,0,0,0,0
dc.w 4028,3806,3584,3394,3204,3013
dc.w 2855,2696,2538,2395,2268,2141,2014,1903,1792,1697,1602,1507
dc.w 1428,1348,1269,1198,1134,1071,1007,952,896,849,801,754,714
dc.w 674,635,599,567,536,504,476,448,425,401,377,357,337,318,300
dc.w 284,268,252,238,224,213,201,189,179,169,159,150,142,134


***

dc.w 0,0,0,0,0,0,0
dc.w 3993,3773,3552,3364,3175,2987,2830,2672,2515,2374,2248,2122
dc.w 1997,1887,1776,1682,1588,1494,1415,1336,1258,1187,1124,1061
dc.w 999,944,888,841,794,747,708,668,629,594,562,531,500,472,444
dc.w 421,397,374,354,334,315,297,281,266,250,236,222,211,199,187
dc.w 177,167,158,149,141,133


***

dc.w 0,0,0,0,0,0,0
dc.w 3957,3739,3521,3334,3147,2960,2804,2648,2493,2353,2228,2103
dc.w 1979,1870,1761,1667,1574,1480,1402,1324,1247,1177,1114,1052
dc.w 990,935,881,834,787,740,701,662,624,589,557,526,495,468,441
dc.w 417,394,370,351,331,312,295,279,263,248,234,221,209,197,185
dc.w 176,166,156,148,140,132


**

dc.w 0,0,0,0,0,0,0
dc.w 3921,3705,3489,3304,3119,2933,2779,2625,2470,2331,2208,2084
dc.w 1961,1853,1745,1652,1560,1467,1390,1313,1235,1166,1104,1042
dc.w 981,927,873,826,780,734,695,657,618,583,552,521,491,464,437
dc.w 413,390,367,348,329,309,292,276,261,246,232,219,207,195,184
dc.w 174,165,155,146,138,131


***

dc.w 0,0,0,0,0,0,0
dc.w 3886,3671,3457,3274,3090,2907,2754,2601,2448,2310,2188,2065
dc.w 1943,1836,1729,1637,1545,1454,1377,1301,1224,1155,1094,1033
dc.w 972,918,865,819,773,727,689,651,612,578,547,517,486,459,433
dc.w 410,387,364,345,326,306,289,274,259,243,230,217,205,194,182
dc.w 173,163,153,145,137,130


***

dc.w 0,0,0,0,0,0,0
dc.w 3851,3638,3426,3244,3062,2880,2729,2577,2426,2289,2168,2047
dc.w 1926,1819,1713,1622,1531,1440,1365,1289,1213,1145,1084,1024
dc.w 963,910,857,811,766,720,683,645,607,573,542,512,482,455,429
dc.w 406,383,360,342,323,304,287,271,256,241,228,215,203,192,180
dc.w 171,162,152,144,136,128




buffer:
blk.l	20,0



even
copperlist:
		dc.w  $0101,$fffe
		dc.w  $0100,$0200
 		dc.w  $2001,$fffe
		dc.w  $0180,$0888
		dc.w  $0182,$0fff
		dc.w  $0184,$0ddd
		dc.w  $0186,$0bbb
		dc.w  $0188,$0aaa
		dc.w  $018a,$0999
		dc.w  $018c,$0fff
		dc.w  $018e,$0777
		dc.w  $0190,$0777
		dc.w  $0192,$0f22
		dc.w  $0194,$0f44
		dc.w  $0196,$0f66
		dc.w  $0198,$0f99
		dc.w  $019a,$0fbb
		dc.w  $019c,$0fdd
		dc.w  $019e,$0fff
		dc.w  $01a0,$0301
		dc.w  $01a2,$0401
		dc.w  $01a4,$0600
		dc.w  $01a6,$0710
		dc.w  $01a8,$0920
		dc.w  $01aa,$0a40
		dc.w  $01ac,$0b70
		dc.w  $01ae,$0da0
		dc.w  $01b0,$0333
glow:		dc.w  $01b2,$0555
		dc.w  $01b4,$0777
		dc.w  $01b6,$0888
		dc.w  $01b8,$0aaa
		dc.w  $01ba,$0fff
mkleur:		dc.w  $01bc,$0aaa
		dc.w  $01be,$0666

		dc.w	$008e,$0581
		dc.w	$0100,$0200
		dc.w	$0104,$0024
		dc.w	$0090,$40c1
		dc.w	$0092,$0038
		dc.w	$0094,$00d0
		dc.w	$0102,$0000
		dc.w	$0108,$0000
		dc.w	$010a,$0000
		dc.w	$00e0
bm1_1h:		dc.w	$0000
		dc.w	$00e2
bm1_1l:		dc.w	$0000
		dc.w	$00e4
bm1_2h:		dc.w	$0000
		dc.w	$00e6
bm1_2l:		dc.w	$0000
		dc.w	$00e8
bm1_3h:		dc.w	$0000
		dc.w	$00ea
bm1_3l:		dc.w	$0000
		dc.w	$00ec
bm1_4h:		dc.w	$0000
		dc.w	$00ee
bm1_4l:		dc.w	$0000
		dc.w	$00f0
bm1_5h:		dc.w	$0000
		dc.w	$00f2
bm1_5l:		dc.w	$0000
		dc.w	$0120
spr1h:		dc.w	$0000
		dc.w	$0122
spr1l:		dc.w	$0000
		dc.w	$0124
spr2h:		dc.w	$0000
		dc.w	$0126
spr2l:		dc.w	$0000
		dc.w	$0128
spr3h:		dc.w	$0000
		dc.w	$012a
spr3l:		dc.w	$0000
		dc.w	$012c
spr4h:		dc.w	$0000
		dc.w	$012e
spr4l:		dc.w	$0000
		dc.w	$0130
spr5h:		dc.w	$0000
		dc.w	$0132
spr5l:		dc.w	$0000
		dc.w	$0134
spr6h:		dc.w	$0000
		dc.w	$0136
spr6l:		dc.w	$0000
		dc.w	$0138
spr7h:		dc.w	$0000
		dc.w	$013a
spr7l:		dc.w	$0000
		dc.w	$013c
spr8h:		dc.w	$0000
		dc.w	$013e
spr8l:		dc.w	$0000
		dc.w	$0140,0
		dc.w	$0148,0
		dc.w	$0150,0
		dc.w	$0158,0
		dc.w	$0160,0

		dc.w	$017a,$f500
		dc.w	$0168
pos6:		dc.w	$7e80
		dc.w	$0170
pos7:		dc.w	$0000
		dc.w	$0178
pos8:		dc.w	$0000

		dc.w	$2c01,$fffe
		dc.w	$0100
bitpl:		dc.w	$3200
rastwacht:	dc.w	$a411,$fffe
nopurp: 	dc.w	$0182,$0000
rastwacht2:	dc.w	$ac11,$fffe
		dc.w	$0182,$0fff
		dc.w	$f401,$fffe
		dc.w	$0100,$0200
		dc.w	$ffff,$fffe

ch1:	dc.l	0
ch2:	dc.l	0
ch3:	dc.l	0
ch4:	dc.l	0


p:	blk.b	24016,0
s:	blk.b	24016,0
i:	blk.b	24016,0
m:	blk.b	24016,0
f:	blk.b	640,0

	
glowtable:
	dc.w	$0f00,$0f10,$0f21,$0f32,$0f43,$0f54,$0f65,$0f76
	dc.w	$0f87,$0f98,$0fa9,$0fba,$0fcb,$0fdc,$0fed,$0ffe
	dc.w	$0fef,$0fde,$0fcd,$0fbc,$0fab,$0f9a,$0f89,$0f78
	dc.w	$0f67,$0f56,$0f45,$0f34,$0f23,$0f12,$0f01,$0f00

notetable:
	dc.b	'--- '
	dc.b	'c-1 SPD LEN d#1 e-1 f-1 f#1 g-1 g#1 a-1 a#1 b-1 '
	dc.b	'c-2 c#2 d-2 d#2 e-2 f-2 f#2 g-2 g#2 a-2 a#2 b-2 '
	dc.b	'c-3 c#3 d-3 d#3 e-3 f-3 f#3 g-3 g#3 a-3 a#3 b-3 '
	dc.b	'c-4 c#4 d-4 d#4 e-4 f-4 f#4 g-4 g#4 a-4 a#4 b-4 '
	dc.b	'c-5 c#5 d-5 d#5 e-5 f-5 f#5 g-5 g#5 a-5 a#5 b-5 '
	dc.b	'c-6 c#6 d-6 d#6 e-6 f-6 f#6 g-6 g#6 a-6 a#6 b-6 '
getaltable:
	dc.b	'000 001 002 003 004 005 006 007 008 009 '
	dc.b	'010 011 012 013 014 015 016 017 018 019 '
	dc.b	'020 021 022 023 024 025 026 027 028 029 '
	dc.b	'030 031 032 033 034 035 036 037 038 039 '
	dc.b	'040 041 042 043 044 045 046 047 048 049 '
	dc.b	'050 051 052 053 054 055 056 057 058 059 '
	dc.b	'060 061 062 063 064 065 066 067 068 069 '
	dc.b	'070 071 072 073 074 075 076 077 078 079 '
	dc.b	'080 081 082 083 084 085 086 087 088 089 '
	dc.b	'090 091 092 093 094 095 096 097 098 099 '
	dc.b	'100 101 102 103 104 105 106 107 108 109 '
	dc.b	'110 111 112 113 114 115 116 117 118 119 '
	dc.b	'120 121 122 123 124 125 126 127 128 129 '
	dc.b	'130 131 132 133 134 135 136 137 138 139 '
	dc.b	'140 141 142 143 144 145 146 147 148 149 '
	dc.b	'150 151 152 153 154 155 156 157 158 159 '
	dc.b	'160 161 162 163 164 165 166 167 168 169 '
	dc.b	'170 171 172 173 174 175 176 177 178 179 '
	dc.b	'180 181 182 183 184 185 186 187 188 189 '
	dc.b	'190 191 192 193 194 195 196 197 198 199 '
	dc.b	'200 201 202 203 204 205 206 207 208 209 '
	dc.b	'210 211 212 213 214 215 216 217 218 219 '
	dc.b	'220 221 222 223 224 225 226 227 228 229 '
	dc.b	'230 231 232 233 234 235 236 237 238 239 '
	dc.b	'240 241 242 243 244 245 246 247 248 249 '
	dc.b	'250 251 252 253 254 255 '

mintable:
	dc.b	'000 001 002 003 004 005 006 007 008 009 '
	dc.b	'010 011 012 013 014 015 016 017 018 019 '
	dc.b	'020 021 022 023 024 025 026 027 028 029 '
	dc.b	'030 031 032 033 034 035 036 037 038 039 '
	dc.b	'040 041 042 043 044 045 046 047 048 049 '
	dc.b	'050 051 052 053 054 055 056 057 058 059 '
	dc.b	'060 061 062 063 064 065 066 067 068 069 '
	dc.b	'070 071 072 073 074 075 076 077 078 079 '
	dc.b	'080 081 082 083 084 085 086 087 088 089 '
	dc.b	'090 091 092 093 094 095 096 097 098 099 '
	dc.b	'100 101 102 103 104 105 106 107 108 109 '
	dc.b	'110 111 112 113 114 115 116 117 118 119 '
	dc.b	'120 121 122 123 124 125 126 127 128 129 '
	dc.b	'130 131 132 133 134 135 136 137 138 139 '
	dc.b	'140 141 142 143 144 145 146 147 148 149 '
	dc.b	'150 151 152 153 154 155 156 -99 -98 -97 '
	dc.b	'-96 -95 -94 -93 -92 -91 -90 -89 -88 -87 '
	dc.b	'-86 -85 -84 -83 -82 -81 -80 -79 -78 -77 '
	dc.b	'-76 -75 -74 -73 -72 -71 -70 -69 -68 -67 '
	dc.b	'-66 -65 -64 -63 -62 -61 -60 -59 -58 -57 '
	dc.b	'-56 -55 -54 -53 -52 -51 -50 -49 -48 -47 '
	dc.b	'-46 -45 -44 -43 -42 -41 -40 -39 -38 -37 '
	dc.b	'-36 -35 -34 -33 -32 -31 -30 -29 -28 -27 '
	dc.b	'-26 -25 -24 -23 -22 -21 -20 -19 -18 -17 '
	dc.b	'-16 -15 -14 -13 -12 -11 -10  -9  -8  -7 '
	dc.b	' -6  -5  -4  -3  -2  -1 '

exitflag:
	dc.l	0
samplenr:
	dc.l	0
glowcount:
	dc.l	0
plusflag:
	dc.l	0
minflag:
	dc.l	0
backflag:
	dc.l	0
patcount:
	dc.l	0
netgedruktflag:
	dc.l	0	
patstep:
	dc.l	0
nogingedruktflag:
	dc.l	0
vertraagcount:
	dc.l	0
vertraagcount2:
	dc.l	0
beeldbouwflag:
	dc.l	0
keyfreq:
	dc.w	0
freqnr:
	dc.l	0
intflag:	
	dc.l	0
octaaf:
	dc.l	0
editflag:
	dc.l	0
toetsin:
	dc.l	0
scrollflag:
	dc.l	0
keyinnow:
	dc.l	0
vertraagcount3:
	dc.l	0
seqnr:	
	dc.l	0
naarpatflag:
	dc.l	0
naarinstflag:
	dc.l	0
delaytel:
	dc.l	0
delaytels:
	dc.l	0
delayteli:
	dc.l	0
vanuitpatflag:
	dc.l	0
intersongcount:	
	dc.l	0
endofpatflag:
	dc.l	0
endofsongflag:
	dc.l	0
muziekstilflag:
	dc.l	0
lastinstr:
	dc.l	0
naarsongflag:
	dc.l	0
instnr:
	dc.l	0
arpbcount:
	dc.l	0
showingwavenr:
	dc.l	0
wavepresetnr:
	dc.l	0
knopstatusi:
	dc.l	0
flipflap:
	dc.l	0
bif:	
	dc.l	0
highestpatused:
	dc.l	0
cursorsprit:
	dc.w	%0111111111000000,0
	dc.w	%0100000001000000,0
	dc.w	%0100000001000000,0
	dc.w	%0100000001000000,0
	dc.w	%0100000001000000,0
	dc.w	%0100000001000000,0
	dc.w	%0100000001000000,0
	dc.w	%0100000001000000,0
	dc.w	%0111111111000000,0
	blk.l	240,0

pointer:
	dc.w	$7c00,	$0000
	dc.w	$8200,	$7e00
	dc.w	$8400,	$7c00
	dc.w	$8400,	$7c00
	dc.w	$8200,	$7e00
	dc.w	$b100,	$6f00
	dc.w	$4880,	$4780
	dc.w	$0440,	$03c0
	dc.w	$0220,	$01e0
	dc.w	$0140,	$00c0
	dc.w	$0080,	$0080
	dc.w	$0000,	$0000
	dc.w	$0000,	$0000
	dc.w	$0000,	$0000
	dc.w	$0000,	$0000
	dc.w	$0000,	$0000
	blk.l	240,0


cursorx:
	dc.b	$67
	dc.b	$7b,$7f,$83
	dc.b	$8f
	dc.b	$a3,$a7,$ab
cursorcount:
	dc.l	0


presets:
	blk.b	32,0


	blk.b	16,127
	blk.b	16,-128

dc.b 127,127,127,127,127,127,127,127,-128,-128  
dc.b -128,127,127,-128,-128,-128,127,127,127,127,127
dc.b 127,127,127,127,127,127,127,127,127,127,127

dc.b -128,-120,-112,-104,-96,-88,-80,-72,-64,-56  
dc.b -48,-40,-32,-24,-16,-8,0,8,16,24,32
dc.b 40,48,56,64,72,80,88,96,104,112,127

dc.b -128,-128,-128,-128,-128,-128,-128,-128,127,127  
dc.b 127,127,127,127,127,127,-128,-98,-68,-38,-8,28
dc.b 58,78,98,118,120,122,124,125,126,127

dc.b $00,$19,$31,$47,$5a,$6a,$75,$7d,$7f  
dc.b $7d,$75,$6a,$5a,$47,$31,$19,$00
dc.b $e7,$cf,$b9,$a6,$96,$8b,$83,$81
dc.b $83,$8b,$96,$a6,$b9,$cf,$e7

dc.b 0,49,90,117,127,117,90,49
dc.b 0,-49,-90,-117,-127,-117,-90,-49
dc.b 0,49,90,117,127,117,90,49
dc.b 0,-49,-90,-117,-127,-117,-90,-49

dc.b -128,-112,-96,-80,-64  
dc.b -48,-32,-16,0,16,32
dc.b 48,64,80,96,112
dc.b 127,112,96,80,64,48,32,16,0,-16,-32,-48
dc.b -64,-80,-96,-112

dc.b -128,-96,-64  
dc.b -32,0,32
dc.b 64,96
dc.b 127,96,64,32,0,-32
dc.b -64,-96
dc.b -128,-96,-64  
dc.b -32,0,32
dc.b 64,96
dc.b 127,96,64,32,0,-32
dc.b -64,-96

dc.b -128,-112,-96,-80,-64  
dc.b -48,-32,-16,0,16,32
dc.b 48,64,80,96,112
dc.b -128,-112,-96,-80,-64  
dc.b -48,-32,-16,0,16,32
dc.b 48,64,80,96,112

blk.b	16,0
blk.b	8,-128
blk.b	8,127

blk.b	8,-128
blk.b	7,-64
blk.b	2,0
blk.b	7,64
blk.b	8,127

dc.b	-128,127,-96,96,-64,64,-32,32,32,-32,64,-64,96,-96,127,-128
dc.b	-128,127,-96,96,-64,64,-32,32,32,-32,64,-64,96,-96,127,-128

dc.b	127
blk.b	7,0
dc.b	64
blk.b	7,0
dc.b	-64
blk.b	7,0
dc.b	-128
blk.b	7,0

blk.b	64,0


haya1:	dc.l	0
haya2:	dc.l	0
haya3:	dc.l	0
frut:	dc.l	0

ccplay:
blk.b	4756,0

even
patroom:
	dc.l	filestruct+10320

samples:
	dc.l	filestruct+10320+26000


************

filestruct:
dc.b	' SID-MON BY R.v.VLIET  (c) 1988 '
length:	dc.l	0
songroom:
song1:
	dc.l	0
	dc.w	0
	blk.b	1530,0

song2:
	dc.l	0
	dc.w	0
	blk.b	1530,0

song3:
	dc.l	0
	dc.w	0
	blk.b	1530,0

song4:
	dc.l	0
	dc.w	0
	blk.b	1530,0	

inst1:
	blk.b	2048,0

	

waveform1:
blk.b	1024,0

mix1source1:
	dc.l	0
mix2source1:
	dc.l	0
mix1source2:
	dc.l	0
mix2source2:
	dc.l	0
mix1dest1:
	dc.l	0
mix2dest1:
	dc.l	0
patlength:
	dc.l	0
songlength:
	dc.l	0
speed:
	dc.l	0
mix1speed:
	dc.l	0
mix2speed:
	dc.l	0

wavelists:
	dc.l	$0101ff10,0,0,0
	dc.l	$0201ff10,0,0,0
	dc.l	$0301ff10,0,0,0
	dc.l	$0401ff10,0,0,0
	dc.l	$0501ff10,0,0,0
	dc.l	$0601ff10,0,0,0
	dc.l	$0701ff10,0,0,0
	dc.l	$0801ff10,0,0,0
	dc.l	$0901ff10,0,0,0
	dc.l	$0a01ff10,0,0,0
	dc.l	$0b01ff10,0,0,0
	dc.l	$0c01ff10,0,0,0
	dc.l	$0d01ff10,0,0,0
	dc.l	$0e01ff10,0,0,0
	dc.l	$0f01ff10,0,0,0
	dc.l	$1001ff10,0,0,0
	dc.l	$1101ff10,0,0,0
	dc.l	$1201ff10,0,0,0
	dc.l	$1301ff10,0,0,0
	dc.l	$1401ff10,0,0,0
	dc.l	$1501ff10,0,0,0
	dc.l	$1601ff10,0,0,0
	dc.l	$1701ff10,0,0,0
	dc.l	$1801ff10,0,0,0
	dc.l	$1901ff10,0,0,0
	dc.l	$1a01ff10,0,0,0
	dc.l	$1b01ff10,0,0,0
	dc.l	$1c01ff10,0,0,0
	dc.l	$1d01ff10,0,0,0
	dc.l	$1e01ff10,0,0,0
	dc.l	$1f01ff10,0,0,0
	dc.l	$2001ff10,0,0,0


samplestruct:
	dc.l	0	;start of smpl
	dc.l	$00000000	;loopstart
	dc.l	9000	;loopend
	blk.b	20,0	;name of smpl	(always df1:!!)

	blk.b	480,0

end:



org	$c38000
cplay:
	;	blk.b	4756-44
org	$c38000+4712

*************
begin:
	song1offset:		dc.l	0
	song2offset:		dc.l	0
	song3offset:		dc.l	0
	song4offset:		dc.l	0
	inst1offset:		dc.l	0
	waveform1offset:	dc.l	0
	variablesoffset:	dc.l	0
	wavelistoffset:		dc.l	0
	patroomoffset:		dc.l	0
	patpointersoffset:	dc.l	0
	samplesoffset:		dc.l	0

offsetter:
newspace:
;	blk.b	100000,0	;will never happen (just incase!)
