/ / / / 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
/
/
/