From ACT_XOVER.SPN, rda instruction with -1 coefficient
Posted: Fri May 25, 2007 9:50 am
First of all the FV-1 is REALLY neat! I'm having a blast playing with the default effects on the eval board.
Anyway, this may be a newbie question but, I'm having a little trouble digesting the algorithm in the ACT_XOVER.SPN file that relates to the tweeter delay. Specifically, if one considers the code snippet from the file:
;write to delay (for tweeter) and get delayed output:
wra del1,1 ;write fp value to del1
rda del1,-1 ;subtract FP value from real value
wra del2,0 ;write error value to del2
rda del1+del,1 ;read delayed FP value
rda del2+del,1 ;add delayed error value
wrax delout,0 ;wrtie value to delay output register.
The second line of code: "rda del1,-1" seems to me, after executing the line immediately above it, would always result in 0 in the ACC.
My logic is: if del1 contained 500 and ACC = 500 (from the previous instruction), then 500 * (-1) = -500, then -500 + 500 = 0.
Or, is there something I am completely missing here? Also, the comments refer to a "floating point" and "real" values, which actually confuses me more. I thought ALL of the data is floating point, so what is mean't by "real"?. I've looked through the instruction set manual, and other examples of code on the website just to check myself. But, what is really going on here?
Anyway, this may be a newbie question but, I'm having a little trouble digesting the algorithm in the ACT_XOVER.SPN file that relates to the tweeter delay. Specifically, if one considers the code snippet from the file:
;write to delay (for tweeter) and get delayed output:
wra del1,1 ;write fp value to del1
rda del1,-1 ;subtract FP value from real value
wra del2,0 ;write error value to del2
rda del1+del,1 ;read delayed FP value
rda del2+del,1 ;add delayed error value
wrax delout,0 ;wrtie value to delay output register.
The second line of code: "rda del1,-1" seems to me, after executing the line immediately above it, would always result in 0 in the ACC.
My logic is: if del1 contained 500 and ACC = 500 (from the previous instruction), then 500 * (-1) = -500, then -500 + 500 = 0.
Or, is there something I am completely missing here? Also, the comments refer to a "floating point" and "real" values, which actually confuses me more. I thought ALL of the data is floating point, so what is mean't by "real"?. I've looked through the instruction set manual, and other examples of code on the website just to check myself. But, what is really going on here?