C C FILE NAME: F T M U L F . B L D C C OPERATING INSTRUCTIONS: C RU FORTRN C FTMULF=FTMULF.BLD C C RU LINK C FTMULF=FTMULF/F C C RU FTMULF C C C SUBROUTINES CALLED: C ASSIGN C DIMENSION NA(1000) DIMENSION NSCRAM(1024),INAME(7),NTRIG(2000),NUM(7),NNAME(7) 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), + NNAME(7)/2HF4,2HF5,2HF6,2HF7,2HF8,2HF9,2HF0/ DATA NUM(1),NUM(2),NUM(3),NUM(4),NUM(5),NUM(6),NUM(7)/ + 1H4,1H5,1H6,1H7,1H8,1H9,1H0/ CALL ASSIGN(6,'TT:') 790 WRITE(6,800) 800 FORMAT(1X,'ENTER THE DESIRED POWER OF TWO (4,5,..9,0[0=10])',/) READ(6,810) NPOWER 810 FORMAT(A1) DO 820 I=1,7 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,'.TITLE ',3A2) WRITE(5,1005) (INAME(I),I=3,5) 1005 FORMAT(9X,'.GLOBL ',3A2,' BUTTOV BUTT BUT225 BUT270 BUT315', + /9X,'.GLOBL LE1,BUT0,OFFSET') N=2**M NADDR=4*N WRITE(5,1006) NADDR,(INAME(I),I=3,5) 1006 FORMAT(9X,'.CSECT XX',/9X,'A=.',/9X,'B=.+',O5,/9X,'.CSECT', + /9X,'.IRPC X,0123456',/9X,'R''X=%''X',/9X,'AC''X=%''X', + /9X,'.ENDM', + /9X,'SP=%6',/9X,'PC=%7',/1X,3A2,':',/9X,'MOV R5,-(SP)', + /9X,'MOV #ARRAY,R5',/9X,'MOV LE1,-(R6)', + /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 NWRITE=0 NCOUNT=0 NTYPE=0 NTYPL=5 WRITE (5,2466) WRITE(5,1466) C DO 20 L=1,M LE=2**L LE1=LE/2 IOFF=6*N/LE DO 2020 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 C 100 NTYPE=1 IF(NTYPE.EQ.NTYPL) GO TO 107 IF(J1.GE.NSIZE) WRITE(5,106) IF(J1.LE.NSIZE) WRITE(5,1066) 106 FORMAT(3X,'0',/6X,'BUTT') 1066 FORMAT(3X,'0',/6X,'BUTTOV') WRITE(5,105) NSCRAM(IP),J1 105 FORMAT(8X,'A+',O5,',COSTBL+',O5) NTYPL=NTYPE GO TO 10 107 WRITE(5,105) NSCRAM(IP),J1 GO TO 10 110 NTYPE=2 IF(NTYPE.EQ.NTYPL) GO TO 117 WRITE(5,116) 116 FORMAT(3X,'0',/6X,'BUT270') WRITE(5,115) NSCRAM(I) 115 FORMAT(8X,'A+',O5) NTYPL=NTYPE GO TO 10 117 WRITE(5,115) NSCRAM(I) GO TO 10 120 NTYPE=3 IF(NTYPE.EQ.NTYPL) GO TO 127 WRITE(5,126) 126 FORMAT(3X,'0',/6X,'BUT315') WRITE(5,125) NSCRAM(IP) 125 FORMAT(8X,'A+',O5) NTYPL=NTYPE GO TO 10 127 WRITE(5,125) NSCRAM(IP) GO TO 10 130 NTYPE=4 IF(NTYPE.EQ.NTYPL) GO TO 137 WRITE(5,136) 136 FORMAT(3X,'0',/6X,'BUT225') WRITE(5,135) NSCRAM(IP) 135 FORMAT(8X,'A+',O5) NTYPL=NTYPE GO TO 10 137 WRITE(5,135) NSCRAM(IP) GO TO 10 140 NTYPE=5 IF(NTYPE.EQ.NTYPL) GO TO 147 WRITE(5,146) 146 FORMAT(3X,'0',/6X,'BUT0') 1466 FORMAT(6X,'BUT0') WRITE(5,145) NSCRAM(I) 145 FORMAT(8X,'A+',O5) NTYPL=NTYPE GO TO 10 147 WRITE(5,145) NSCRAM(I) 10 CONTINUE 2020 CONTINUE WRITE(5,246) 246 FORMAT(3X,'0',/4X,'OFFSET') 2466 FORMAT(4X,'OFFSET',/3X,'0') NTYPL=6 20 CONTINUE C WRITE(5,155) 155 FORMAT(3X,'0',/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,'TST (SP)+',/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))) LE1W=(NSCRAM(2)-NSCRAM(1))*2 WRITE(5,240) LE1W 240 FORMAT('LE1:',2X,O5,/9X,'.END',/) END FILE 5 STOP END