; Scale over-range data ; Scale real and imag if -52 > any data >= 52 ; bugfix - scaling did not cross page to imag array ; scale: mov dptr,#real mov r0,#high 512 mov r1,#low 512 scl2: movx a,@dptr inc dptr cjne a,#-52,scl2a scl2a: jnc scl3 ; < -52 cjne a,#52,scl2b scl2b: jnc scl4 ; >= 52 scl3: djnz r1,scl2 djnz r0,scl2 ret ; scl4: inc sclfct mov dptr,#real mov r0,#high 512 mov r1,#low 512 scl6: movx a,@dptr ; get data mov c,acc.7 ; arithmetic shift right ( hi bit unchanged) rrc a movx @dptr,a ; put scaled data inc dptr djnz r1,scl6 djnz r0,scl6 ret