; power spectrum calculation ; power = (real * real) + (imag * imag) ; power: mov dptr,#real mov r1,#low pabuf ; 'E' pwr1: movx a,@dptr ; get real mov r0,a ; 'C' index into square table mov p2,#high sqadr ; 'B' movx a,@r0 ; get square[r0] mov p2,#high pabuf ; 'D' movx @r1,a ; put (DE) inc r1 inc dptr mov a,r1 jnz pwr1 ; mov dptr,#imag mov r1,#low pabuf pwr2: movx a,@dptr ; get imag mov r0,a mov p2,#high sqadr movx a,@r0 mov r2,a ; r2 = square[r0] mov p2,#high pabuf movx a,@r1 ; get pabuf add a,r2 ; a = pabuf + square[r0] jnc pwr3 mov a,#-1 pwr3: jnb pwramp,pwr4 mov p2,#HIGH sqrut mov r0,a movx a,@r0 ; amp=sqrt(pwr) pwr4: mov p2,#high pabuf movx @r1,a ; put pabuf inc r1 inc dptr mov a,r1 jnz pwr2 ret ;