Blame as10k1/examples/tremolo.asm

Packit Service b98cfc
;;; Tremolo Effect 
Packit Service b98cfc
;;; By:	 Daniel Bertrand
Packit Service b98cfc
;;; Oct 29, 2000
Packit Service b98cfc
Packit Service b98cfc
	include "emu_constants.asm"
Packit Service b98cfc
	name "tremolo"
Packit Service b98cfc
Packit Service b98cfc
in	IO
Packit Service b98cfc
out	equ	in
Packit Service b98cfc
	
Packit Service b98cfc
	
Packit Service b98cfc
;;; sinewave generator:
Packit Service b98cfc
delta control 10e-4,0,1e-2 ; controls frequency (2*pi*freq/48000)
Packit Service b98cfc
cosx sta #0.5		 
Packit Service b98cfc
sinx sta 0		
Packit Service b98cfc
depth control &0.001,0,&0.001
Packit Service b98cfc
Packit Service b98cfc
Packit Service b98cfc
tmp  dyn	
Packit Service b98cfc
	
Packit Service b98cfc
delay	delay	&0.01
Packit Service b98cfc
wrt	twrite	delay,0
Packit Service b98cfc
rd	tread	delay,0	
Packit Service b98cfc
rd2	tread	delay,0
Packit Service b98cfc
c1000	sta	$1000
Packit Service b98cfc
	
Packit Service b98cfc
	macs	wrt,in,C_0,C_0
Packit Service b98cfc
;;; sinwave generator:	
Packit Service b98cfc
	macs  sinx,sinx,delta,cosx       
Packit Service b98cfc
	macs1 cosx,cosx,delta,sinx 
Packit Service b98cfc
Packit Service b98cfc
;;; calulate address = depth*sin(wt)+0.5*depth
Packit Service b98cfc
	
Packit Service b98cfc
	
Packit Service b98cfc
	macs tmp,c1000,depth,C_2^30
Packit Service b98cfc
	macs tmp,tmp,sinx,depth
Packit Service b98cfc
	acc3 rd.a,tmp,C_0,wrt.a	
Packit Service b98cfc
	
Packit Service b98cfc
	macints rd2.a,rd.a,C_8,C_256  ;;;next address 
Packit Service b98cfc
	
Packit Service b98cfc
;;; get fractional address:	
Packit Service b98cfc
	macints tmp,C_0,rd.a,C_LSshift
Packit Service b98cfc
;;; linear interpolate fraction between the 2 reads
Packit Service b98cfc
;;; output result	
Packit Service b98cfc
	
Packit Service b98cfc
			
Packit Service b98cfc
	interp  out,rd,tmp,rd2
Packit Service b98cfc
Packit Service b98cfc
	
Packit Service b98cfc
	end
Packit Service b98cfc