C C FILE NAME: F T M U L S . B L D C C OPERATING INSTRUCTIONS: C RU FORTRN C FTMULS=FTMULS.BLD C C RU LINK C FTMULS=FTMULS/F C C RU FTMULS C C C SUBROUTINES CALLED: C ASSIGN C DIMENSION NSCRAM(512),INAME(7),NTRIG(770),NUM(6),NNAME(6) DATA INAME(1),INAME(2),INAME(3),INAME(4),INAME(5), + INAME(6),INAME(7)/2HDK,2H0:,2HFT,2HMU,2H ,2H.M,2HAC/ DATA NNAME(1),NNAME(2),NNAME(3),NNAME(4),NNAME(5),NNAME(6) + /2HL4,2HL5,2HL6,2HL7,2HL8,2HL9/ DATA NUM(1),NUM(2),NUM(3),NUM(4),NUM(5),NUM(6) + /1H4,1H5,1H6,1H7,1H8,1H9/ CALL ASSIGN(6,'TT:') 790 WRITE(6,800) 800 FORMAT(1X,'ENTER THE DESIRED POWER OF TWO (BETWEEN 4 & 9)',/) READ(6,810) NPOWER 810 FORMAT(A1) DO 820 I=1,6 IF (NUM(I).EQ.NPOWER) GOTO 830 820 CONTINUE WRITE(6,825) 825 FORMAT(1X,'NUMBER WAS OUT OF RANGE') GOTO 790 830 INAME(5)=NNAME(I) M=I+3 IUNIT=5 CALL ASSIGN(IUNIT,INAME(1),14) WRITE(5,1000) (INAME(I),I=3,5) 1000 FORMAT(9X,'.NLIST TTM',/9X,'.TITLE ',3A2) WRITE(5,1005) (INAME(I),I=3,5) 1005 FORMAT(9X,'.GLOBL ',3A2,' BUTTOV BUTT BUT0 BUT225 BUT270 BUT315') N=2**M NADDR=4*N WRITE(5,1006) NADDR,(INAME(I),I=3,5) 1006 FORMAT(9X,'.CSECT XX',/9X,'A=.',/9X,'B=.+',O4,/9X,'.CSECT', + /9X,'.IRPC X,012345',/9X,'R''X=%''X',/9X,'.ENDM',/9X,'SP=%6' + ,/9X,'PC=%7',/1X,3A2,':',/9X,'MOV R5,-(SP)', + /9X,'MOV #ARRAY,R5',/9X,'JMP @(R5)+',/'ARRAY:') NV2=N/2 NSIZE=N+NV2+4 NM1=N-1 J=1 DO 1 JK=1,N 1 NSCRAM(JK)=4*JK-2 DO 7 I=1,NM1 IF (I.GE.J) GO TO 5 NSCRAM(I)=4*J-2 NSCRAM(J)=4*I-2 5 K=NV2 6 IF (K.GE.J) GO TO 7 J=J-K K=K/2 GO TO 6 7 J=J+K DO 20 L=1,M LE=2**L LE1=LE/2 IOFF=6*N/LE DO 20 J=1,LE1 JM1=J-1 J1=JM1*IOFF+4 IFLAG=1 IF (JM1.NE.0) GO TO 50 IFLAG=5 GO TO 80 50 IF (LE1.LT.2) GO TO 80 IF (JM1.NE.LE1/2) GO TO 52 IFLAG=2 GO TO 80 52 IF (LE1.LT.4) GO TO 80 IF (JM1.NE.LE1/4) GO TO 54 IFLAG=3 GO TO 80 54 IF (JM1.NE.3*LE1/4) GO TO 80 IFLAG=4 80 DO 10 I=J,N,LE IP=I+LE1 GO TO (100,110,120,130,140),IFLAG 100 IF (J1.GE.NSIZE) WRITE(5,105) NSCRAM(IP),J1,NSCRAM(I) IF (J1.LE.NSIZE) WRITE(5,106) NSCRAM(IP),J1,NSCRAM(I) 105 FORMAT(8X,'BUTT , A+',O4,',COSTBL+',O4,',A+',O4) 106 FORMAT(8X,'BUTTOV, A+',O4,',COSTBL+',O4,',A+',O4) GO TO 10 110 WRITE(5,115) NSCRAM(I),NSCRAM(IP) 115 FORMAT(8X,'BUT270, A+',O4,',A+',O4) GO TO 10 120 WRITE(5,125) NSCRAM(IP),NSCRAM(I) 125 FORMAT(8X,'BUT315, A+',O4,',A+',O4) GO TO 10 130 WRITE(5,135) NSCRAM(IP),NSCRAM(I) 135 FORMAT(8X,'BUT225, A+',O4,',A+',O4) GO TO 10 140 WRITE(5,145) NSCRAM(I),NSCRAM(IP) 145 FORMAT(8X,'BUT0 , A+',O4,',A+',O4) 10 CONTINUE 20 CONTINUE WRITE(5,155) 155 FORMAT(9X,'BITREV',/'BITREV:') WRITE(5,900) 900 FORMAT(9X,'MOV #A,R1') DO 30 I=1,N NSC=NSCRAM(I)-2 WRITE(5,910) NSC,NSCRAM(I) 910 FORMAT(9X,'MOV (R1)+,B+',O4,/9X,'MOV (R1)+,B+',O4) 30 CONTINUE WRITE(5,1010) 1010 FORMAT(9X,'MOV (SP)+,R5',/9X,'RTS PC') RMAX=2.**15-1. RMAX1=2.**14-1. PI=3.141592 NV4=N/4 NV4P1=NV4+1 NSIZE=N+NV2 XN=N WRITE(5,200) 200 FORMAT(1X,'COSTBL:') DO 210 I=1,NV4 XI=1-I ARG=2.*PI*XI/XN SINE=SIN(ARG) COSINE=COS(ARG) NTRIG(3*I-2)=RMAX1*(COSINE-SINE)+.5 NTRIG(3*I-1)=RMAX*SINE+.5 NTRIG(3*I)=RMAX*COSINE+.5 210 CONTINUE DO 220 I=NV4P1,NV2 XI=1-I ARG=2.*PI*XI/XN SINE=SIN(ARG) COSINE=COS(ARG) NTRIG(3*I-2)=RMAX*(COSINE-SINE)+.5 NTRIG(3*I-1)=RMAX*SINE+.5 NTRIG(3*I)=RMAX*COSINE+.5 220 CONTINUE WRITE(5,230) (NTRIG(I),I=1,NSIZE) 230 FORMAT((9X,O6,7(',',O6))) WRITE(5,240) 240 FORMAT(9X,'.END',/) END FILE 5 STOP END