decus NO. 8-292 Fast Fourier Transform and Fast Welch-Fourier Transform FWFT - #1 Symbolic 0-177  / OF 512 SAMPLES OF A REAL SIGNAL FROM / CHANNEL 0 OF THE A/D CONVERTER. A / HARDWARE BIT INVERTER IS USED TO REROUTE / INPUT DATA. AUTO-RANGING IS USED TO / REDUCE ROUNDOFF ERROR. *0000 0000 JMP I SER SER,SER0 / POINTER TO INTERRUPT SERVICE NUM,1000 / NUMBER OF COMPLEX POINTS IN TRANSFORM ONE,4000 / (1+0) *0010 MULTR,0 / REAL MULT TERM STORAGE INDX,0 / NODAL INDEX ARG1,0 CNTR,0 PNTR,0 SHIFT,6000 / 1+1/2 FLAG,0 / AUTO-RANGE FLAG PASS,0 / HALF BLOCK LENGTH NEND,-11 / NUMBER OF PASSES END,0 SCALE,0 / SCALE FACTOR SADD,RAR / END OF SCALED ADD UADD,TAD ONE / END OF UNSCALED ADD OPUT,OUTPT / POINTER TO OUTPUT ROUTINE RSA,0600 / INITIAL REAL ARRAY ADDRESS RA,0 RA2,0 FWFT, CLA IAC / FAST WALSH-FOURIER DCA PASS / TRANSFORM START TAD NEND / INITIALIZE PASS COUNTER DCA END IAC DCA FLAG / INITIALIZE AUTO-RANGING DCA SCALE NPASS, DCA INDX / NEW PASS START TAD NUM CLL RAR CIA / INITIALIZE POINTS COUNTER DCA PNTR TAD FLAG / IF AUTO-RANGE FLAG SET, SNA CLA / SCALING IS REQUIRED JMP .+4 / FOR THIS PASS TAD SADD DCA ADDI / SET UP SCALED ADD ROUTINE JMP .+4 TAD UADD / SET UP UNSCALED ADD DCA ADDI ISZ SCALE / INCREMENT SCALE FACTOR DCA FLAG / CLEAR AUTO-RANGE FLAG BLOCK, TAD PASS / BLOCK PROCESSING CIA DCA CNTR / BLOCK END CHECK TAD RSA TAD INDX DCA RA TAD RA / INITIALIZE DATA ARRAY TAD PASS / ADDRESSES DCA RA2 PAIR, TAD I RA / NODE PAIR PROCESSING CLL TAD I RA2 / REAL PART OF 1ST NODE JMS CHK / CHECK FOR OVERFLOW DCA MULTR / TEMPORARY STORE TAD I RA2 CIA CLL TAD I RA JMS CHK DCA I RA2 / REAL PART OF 2ND NODE TAD MULTR DCA I RA ECHK, ISZ PNTR / END OF PASS? SKP / NO JMP PASED / YES ISZ CNTR / END OF BLOCK? SKP / NO JMP BLKED / YES ISZ INDX / INCREMENT NODAL INDEX ISZ RA / INCREMENT DATA ARRAY ISZ RA2 / ADDRESSES JMP PAIR / PROCESS NEXT PAIR IN BLOCK BLKED, TAD INDX / NEXT BLOCK SETUP TAD PASS IAC / RESET NODAL INDEX DCA INDX JMP BLOCK / RETURN FOR NEXT BLOCK PASED, TAD PASS/IS TRANSFORM COMPLETE CLL RAL DCA PASS ISZ END / FINISHED? JMP NPASS / NO, PROCESS NEXT PASS JMP I OPUT / YES, JUMP TO OUTPUT CHK, 0 / OVERFLOW CHECK ROUTINE ADDI, NOP / FINISH ADD MQL / STORE SUM IN MQ CLA MQA TAD SHIFT / IF 1-1/2<1+A<1+1/2,DO SPA SNA / NOT SCALE NEXT PASS; IF DCA FLAG / NOT, SCALE NEXT PASS CLA MQA JMP I CHK / RETURN