	opt	c-,l+

	section muzika,code

	xdef	INSMUS,again

	xref	eflg,hiflg,htuna,htunb,htunc
	xref	putvbl,TUNEA,TUNEB,TUNEC
	xref	_val0,_val1,_val2,_val3,_val4

	include	df0:Custom.i

TEMPO:	equ	6

sviraj:	macro
	bsr	getnot
	move.w	d1,AUD\1PER
	move.w	#SET+AUD\1EN+DMAEN,DMACONW
	endm

lupaj:	macro
	bsr	getnot
	asl.w	#2,d1
	move.w	d1,AUD\1PER
	move.w	#SET+AUD\1EN+DMAEN,DMACONW
	endm

*volume:	macro
*	move.w	#\1,AUD\2VOL
*	endm

off:	macro
	move.w	#CLR+AUD\1EN,DMACONW
	endm

tone:	macro
*	move.b	wos,d1
*	bclr	#\1,d1
*	bset	#\1+3,d1
*	move.b	d1,wos
*	moveq	#7,d0
*	bsr	doreg
	endm

noise:	macro
*	move.b	wos,d1
*	bset	#\1,d1
*	bclr	#\1+3,d1
*	move.b	d1,wos
*	moveq	#7,d0
*	bsr	doreg
	endm

sustain:macro
*	moveq	#12,d0
*	moveq	#\1,d1
*	bsr	doreg
	endm

envelope:macro
*	moveq	#16,d1
*	moveq	#\2+8,d0
*	bsr	doreg
*	moveq	#13,d0
*	moveq	#\1,d1
	endm

pitch:	macro
	move.b	\1,d1
*	moveq	#6,d0
*	bsr	doreg
	endm

INSMUS: JSR	again
	LEA	rotor,A0
	jmp	PUTVBL

; THE MEAN MUSIC ROUTINE BY JANKO
; RUNS ON THE VERY RELIABLE ATARI VBL INTERRUPT
; ARE HOPES ARE WITH U HOO USE ''IT
;(C)1986 PARADOX SOFTWARE LTD.

rotor:	SUBI.B	#1,bigtim
	BEQ.S	SOUNDA
	RTS

SOUNDA:	MOVE.B	#TEMPO,bigtim

	SUBI.B	#1,timera
	Bne	soundb

;SET TIMER-LOOK FOR SPECIAL COMMANDS-EXECUTES SOUNDS
	move.l	LOCA,A1
SS1:	MOVE.B	(A1)+,D0
	CMPI.B	#255,D0
	BEQ	again
	CMPI.B	#254,D0
	BNE.S	SND11
	MOVE.B	(A1)+,D0
	MOVE.B	D0,styla
	BRA.S	SS1
SND11:	MOVE.B	D0,timera
	moveq	#0,d0
	move.b	STYLA,D0
	lea	tab.asound,a2
gotab:	asl.w	#2,d0
	adda.l	d0,a2
	jmp	(a2)

tab.asound:
	bra	PASND0
	bra	PASND1
	bra	PASND2
	bra	PASND3
	bra	PASND4
	bra	PASND5
	bra	PASND6
	bra	PASND0
	bra	PASND8

ESND1:	MOVE.L	A1,loca
	BRA	SOUNDB

PASND0:	move.l	#_val0,AUD0DAT
	move.w	#16,AUD0LEN
pasnd5:
pasnd6:	sviraj	0
	tone	0
	envelope 9,0
	sustain	16
	BRA	ESND1

PASND1:	move.l	#_val4,AUD0DAT
	sviraj	0
	BRA	ESND1

PASND2:
	pitch	(A1)+
	noise	0
	sustain	28
	envelope 9,0
	BRA	ESND1

PASND3: sviraj	0
	tone	0
*	volume	4*13,0
	BRA	ESND1

PASND4:
	pitch	(A1)+
	noise	0
*	volume	4*13,0
	BRA	ESND1

PASND8:	off	0
	BRA	ESND1

SOUNDB:
	MOVE.B	#1,bojaflg
	SUBI.B	#1,timerb
	Bne	soundc

; SET TIMER-LOOK FOR SPECIAL COMMANDS-EXECUTES SOUNDS
NEWSNDB:MOVE.L	locb,A1
SS2:	MOVE.B	(A1)+,D0
	CMPI.B	#255,D0
	BEQ	again
	CMPI.B	#254,D0
	BNE.S	SND22
	MOVE.B	(A1)+,D0
	MOVE.B	D0,stylb
	BRA.S	SS2 
SND22:	MOVE.B	D0,timerb
	moveq	#0,d0
	move.b	STYLB,D0
	lea	tab.bsound,a2
	bra	gotab

tab.bsound:
	bra	PBSND0
	bra	PBSND1
	bra	PBSND2
	bra	PBSND3
	bra	PBSND4
	bra	PBSND5
	bra	PBSND6
	bra	PBSND0
	bra	PBSND8

ESND2:	MOVE.L	A1,locb
	BRA	SOUNDC

PBSND0: move.l	#_val1,AUD1DAT
	move.w	#16,AUD1LEN
pbsnd5:
pbsnd6:	sviraj	1
	tone	1
	sustain	16
	envelope 9,1
	BRA	ESND2

PBSND1: move.l	#_val4,AUD1DAT
	sviraj	1
	BRA	ESND2

PBSND2: pitch	(A1)+
	noise	1
	sustain	28
	envelope 9,1
	BRA	ESND2

PBSND3: sviraj	1
	tone	1
*	volume	4*13,1
	BRA	ESND2

PBSND4: pitch	(A1)+
	noise	1
*	volume	4*13,1
	BRA	ESND2

PBSND8:	off	1
	BRA	ESND2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;C
SOUNDC:
	MOVE.B	#0,bojaflg
	SUBI.B	#1,timerc
	Bne	soundd

;SET TIMER-LOOK FOR SPECIAL COMMANDS-EXECUTES SOUNDS
	MOVE.L	locc,A1
SS3:	MOVE.B	(A1)+,D0
	CMPI.B	#255,D0
	BEQ	again
	CMPI.B	#254,D0
	BNE.S	SND33
	MOVE.B	(A1)+,D0
	MOVE.B	D0,stylc
	BRA.S	SS3 
SND33:	MOVE.B	D0,timerc
	moveq	#0,d0
	move.b	STYLC,D0
	lea	tab.csound,a2
	bra	gotab

tab.csound:
	bra	PCSND0
	bra	PCSND1
	bra	PCSND2
	bra	PCSND3
	bra	PCSND4
	bra	PCSND5
	bra	PCSND6
	bra	PCSND0
	bra	PCSND8

ESND3:	MOVE.L	A1,locc
	BRA	SOUNDD

PCSND0: move.l	#_val2,AUD2DAT
	move.w	#16,AUD2LEN
pcsnd5:
pcsnd6:	sviraj	2
	BRA	ESND3

PCSND1: move.l	#_val4,AUD2DAT
	sviraj	2
	BRA	ESND3

PCSND2: pitch	(A1)+
	noise	2
	sustain	28
	envelope 9,2
	BRA	ESND3

PCSND3: sviraj	2
	tone	2
*	volume	4*13,2
	bra	esnd3

PCSND4: pitch	(A1)+
	noise	2
*	volume	4*13,2
	BRA	ESND2

PCSND8:	off	2
	BRA	ESND3

SOUNDD: RTS

GETNOT: moveq	#0,D1
	MOVE.B	(A1)+,D1
	add.w	d1,d1
	LEA	c3,A2
	MOVE.w	0(A2,D1.W),D1
	RTS

HIGAIN: MOVE.L	#htunA,loca
	move.l	#HTUNB,locb
	move.l	#HTUNC,locc
	BRA	kill

again:	MOVE.B	#0,styla
	MOVE.B	#0,stylb
	MOVE.B	#0,stylc
	MOVE.B	#1,timera
	MOVE.B	#1,timerb
	MOVE.B	#1,timerc
	MOVE.B	#1,bigtim
	CMPI.B	#0,hiflg
	BNE.s	HIGAIN
	move.l	#TUNEA,loca
	move.l	#tuneb,locb
	move.l	#tunec,locc

	move.l	#_val0,AUD0LC
	move.w	#16,AUD0LEN
	move.w	#64-8,AUD0VOL

	move.l	#_val1,AUD1LC
	move.w	#16,AUD1LEN
	move.w	#64-8,AUD1VOL

	move.l	#_val2,AUD2LC
	move.w	#16,AUD2LEN
	move.w	#56,AUD2VOL

	move.l	#_val3,AUD3LC
*	move.w	#256,AUD3LEN
	move.w	#64,AUD3VOL

kill:	move.b	#0,eflg
	move.w	#CLR+AUD0EN+AUD1EN+AUD2EN+AUD3EN,DMACONW
	RTS

	include	df0:note_back.i

	ds.w	0
BIGTIM: DC.B	0
TIMERA: DC.B	0
TIMERB: DC.B	0
TIMERC: DC.B	0
STYLA:	DC.B	0
STYLB:	DC.B	0
STYLC:	DC.B	0
STORA:	DC.B	0
STORB:	DC.B	0
STORC:	DC.B	0
	DS.B	5
BOJAFLG:DC.B	0
	ds.w	0

LOCA:	DC.L	0
LOCB:	DC.L	0
LOCC:	DC.L	0

*sinlen:	dc.w	16
*sindata:dc.b	100,98,92,83,71,56,38,20
*	dc.b	0,-20,-38,-56,-71,-83,-92,-98
*	dc.b	-100,-98,-92,-83,-71,-56,-38,-20
*	dc.b	0,20,38,56,71,83,92,98
*
*trilen:	dc.w	16
*tridata:dc.b	100,88,75,63,50,38,25,13,0
*	dc.b	-13,-25,-38,-50,-63,-75,-88,-100
*	dc.b	-88,-75,-63,-50,-38,-25,-13,0
*	dc.b	13,25,38,50,63,75,88
*
*xxxlen:	dc.w	16
*xxxdata:dc.b	100,100,100,100
*	dc.b	-100,-100,-100,-100
*	dc.b	100,100,100,100
*	dc.b	-100,-100,-100,-100
*	dc.b	100,100,100,100
*	dc.b	-100,-100,-100,-100
*	dc.b	100,100,100,100
*	dc.b	-100,-100,-100,-100
*
*sawlen:	dc.w	16
*sawdata:dc.b	100,88,75,63,50,38,25,13,0
*	dc.b	-13,-25,-38,-50,-63,-75,-88,-100
*	dc.b	100,88,75,63,50,38,25,13,0
*	dc.b	-13,-25,-38,-50,-63,-75,-88,-100

