/ / / / PART 3 A / / / PASSES 3 AND ABOVE / PASSES,JMS SETMUP MIDPAS,JMS SETSS INTPRT,TAD MMU /TAKE INTEGER PART OF (P*2^H) TAD L /ACTUALLY SCALE P (MU-L) MANY PLACES RIGHT SNA /WHAT IF IT IS 0? JMP ZSCAL DCA CNT1 TAD P HALF /SCALE RIGHT 1 BIT ISZ CNT1 /MU-L TIMES? JMP .-2 HAVINT,JMS REVBIT /YES, REVERSE THE BITS DCA K /K=BINARY REVERSE OF / / / FIND SINE AND COSINE VALUES FROM TABLE SINE, TAD K TAD TRIGPT /TABLE ADDRESS DCA TEMP TAD I TEMP DCA SINK /SIN(2*PI*K/N) / COSINE,TAD K /COS(Z)=SIN(Z+PI/2) TAD KPI2 TAD MN SPA CLA /IS K+PI/2>2*PI? JMP COS1 /NO TAD K /YES, PERIODICITY MEANS AND QUADI /GET 1ST QUADRANT PART OF K COS2, TAD TRIGPT /TABLE ADDRESS DCA TEMP TAD I TEMP DCA COSK /COS(2*PI*K/N) JMP COMPUT / COS1, TAD K TAD KPI2 /ADD PI/2 JMP COS2 / / ZSCAL, TAD P /DON'T SCALE P JMP HAVINT / /ROUTINE TO REVERSE BINARY BITS /BY MOVING RIGHT AND SAVING LEFT / ENTER WITH BITS TO BE REVERSED IN THE AC / LEAVE WITH REVERSED BITS IN THE AC / REVBIT,0 DCA TEMP /SAVE THEM TAD MMU DCA CNT1 /MINUS NUMBER OF BITS TO BE REVERSED CLL /MAKE SURE ITS EMPTY ROT, RAL /SHIFT INTO LINK DCA TTEMP /SAVE SHIFTED WORD TAD TEMP /GET BITS TO BE REVERSED RAR /MOVE RIGHT INTO LINK DCA TEMP /SAVE UNSHIFTED BITS GLK /GET THE LINK BIT TAD TTEMP /ADD TO PREVIUS SHIFTS ISZ CNT1 /ALL ? JMP ROT /NO JMP I REVBIT /YES, LEAVE / / / PAGE / PART 3 B / /TWO'S COMPLEMENT SINGLE PRECISION MULTIPLY ROUTINE /RETURN HIGH ORDER PRODUCT IN AC, NO LO ORDER MULT, 0 CLL SPA /TEST FOR NEGATIVE MULTIPLIER CMA CML IAC DCA MP1 /STORE MULTIPLIER DCA MP5 TAD I MULT SNA /TEST FOR ZERO MULTIPLICAND JMP MPSN-2 SPA /TEST FOR NEGATIVE MULTIPLICAND CMA CML IAC DCA MP2 /STORE MULTIPLICAND TAD THIR DCA MP3 MP4, TAD MP1 /MULTIPLY LOOP PROPER RAR DCA MP1 TAD MP5 SZL /TEST IF MULTIPLICAND SHOULD BE ADDED TAD MP2 CLL RAR DCA MP5 ISZ MP3 /TEST FOR END OF LOOP JMP MP4 TAD MP1 RAR MPSN, SZL JMP COMP SPA CLA /ROUND UP? IAC /YES TAD MP5 CLL RAL /TIMES 2 MPZ, ISZ MULT /EXIT JMP I MULT COMP, CMA CLL IAC /COMPLEMENT PRODUCT SPA CLA /ROUND OFF? IAC /YES TAD MP5 CMA SZL IAC CLL RAL /TIMES 2 SMA /DID WE LOSE THE SIGN? TAD K4000 /YES, RESTORE IT JMP MPZ MLTPLY=JMS MULT / / / G=(W^K)*X(P) / / / COMPUTATION SECTION / COMPUT,TAD COSK /START ACTUAL COMPUTATIOMS DCA .+5 TAD I PTR1 SNA JMP .+3 MLTPLY 000 DCA TEMP /COS(K)*XR(P) / TAD SINK DCA .+5 TAD I PTR3 SNA JMP .+3 MLTPLY 000 TAD TEMP DCA GR /GR=COS(K)*XR(P)+SIN(K)*XI(P) / TAD COSK DCA .+5 TAD I PTR3 SNA JMP .+3 MLTPLY 000 DCA TEMP /COS(K)*XI(P) / TAD SINK DCA .+5 TAD I PTR1 SNA JMP .+4 MLTPLY 000 CIA /-SIN(K)*XR(P) TAD TEMP DCA GI /GI=COS(K)*XI(P)-SIN(K)*XR(P) / PART 4 / / X(P)=G+X(Q) / X(Q)=X(Q)-G / COMP0, TAD GR TAD I PTR2 DCA I PTR1 /XR(P)=GR+XR(Q) / TAD GI TAD I PTR4 DCA I PTR3 /XI(P)=GI+XI(Q) / COMP1, TAD GR CIA TAD I PTR2 DCA I PTR2 /XR(Q)=XR(Q)-GR / TAD GI CIA TAD I PTR4 DCA I PTR4 /XI(Q)=XI(Q)-GI / / / / END COMPUTATION SECTION / / CMA TAD P DCA P /P=P-1 / ISZ C /IS C=S? SKP /NOT YET JMP NXTCHK /YES, "DANGER ZONE" JMS RSET JMP COMPUT / / / / / NXTCHK,TAD P CMA TAD S SNA CLA /IS P+1=S? JMP CHKSCL /YES, MAJOR RESET...END OF PASS!!! TAD S CIA TAD P DCA P /P=P-S JMP I .+1 MIDPAS / / / / / / / CHKSCL,TAD RLPTR /NEED WE SCALE? DCA AI10 TAD MTWON DCA CNT1 SCALL, TAD I AI10 SPA /GET ABSOLUTE VALUE CIA TAD M2000 SMA CLA /MORE THAN 2000(8)? JMP SCALE /YES ISZ CNT1 /ALL CHECKED? JMP SCALL /NO, KEEP CHECKING JMP PASSES /YES / PAGE / / /SCALING / SCALE ALL VALUES IN HALF / SCALE, TAD RLPTR DCA AI10 TAD RLPTR DCA AI11 TAD MTWON DCA CNT1 / SCALER,TAD I AI10 /GET UNSCALED VALUE SPA /IS IT POSITIVE? JMP NEGSCL /NEGATIVE HALF /SCALE BY 1/2 PUTBAK,DCA I AI11 /PUT SCALED VALUE IN ISZ CNT1 /ALL SCALED? JMP SCALER /NOPE JMP PASSES /BEGIN NEXT PASS / NEGSCL,STL RAR /PRESERVE SIGN JMP PUTBAK / / / / / / PART 5 / / AT THIS POINT THE TRANSFORMATION HAS TAKEN PLACE / BUT THE COEFFICIENTS ARE IN BIT REVERSE ORDER / SO STRAIGHTEN THEM OUT / / / / PUT THE COEFFICIENTS IN PROPER NUMERICAL ORDER / ORDER, TAD N /Q=N-1 ORDER0,TAD M1 /-1 DCA Q TAD Q JMS REVBIT DCA P TAD P CIA TAD Q SPA CLA /IS P / / SQUARE ALL TERMS SQUARE=JMS I MULTI / MAG1, TAD MTWON DCA CNT1 TAD RLPTR DCA AI10 TAD RLPTR DCA AI11 / MAG, TAD I AI10 SPA /GET ABS VALUE CIA SNA /IS IT 0? JMP MAGCNT-1 /YES DCA MAG0 TAD MAG0 SQUARE MAG0, 000 DCA I AI11 /TERM HAS BEEN SQUARED MAGCNT,ISZ CNT1 /ALL TERMS? JMP MAG /NO / / / SUM SQUARED TERMS TAD RLPTR DCA AI10 TAD IMPTR DCA AI11 TAD RLPTR DCA AI12 / TAD MN DCA CNT1 / MAG2, TAD I AI10 TAD I AI11 /ADD THEM DCA I AI12 ISZ CNT1 /ALL ADDED? JMP MAG2 /NO / / /