Reading CDDA sound levels
Registers REG_CDDALEFTL ($FF0188) and REG_CDDARIGHTL ($FF01AA) hold the values of the currently streamed CD audio data, in a reversed 16bit 2's complement format suited for the LC78815 DAC (Sample rate =~ 100kHz ?).
The CD2 BIOS uses the following code to reverse the bits:
;D1:Input
;D0:Output
reverse16bits:
moveq #16-1,d7
moveq #0,d0
rev:
lsr #1,d1
bcc zerobit
bset d7,d0
zerobit:
dbf d7,rev
And this to get its absolute value:
abs:
tst d1
bpl notneg
not d1
notneg:
The CD2 BIOS reads both registers multiple times during each frame (by using the raster interrupt) to get an average value. The displayed vu-meters use a double buffer to avoid getting updated with the average of only the first few register reads (those that were made before the vu-meters were actually drawn to the screen).
[Youtube video of a standalone vu-meter] (need source for this)