*20 /FFOURIER /LINC TAPE COOLEY TUKEY /FAST FOURIER TRANSFORM /FROM DECUS L-25 /BY J.BRYAN /FOR PDP-12A /BINARY MUST BE IN BN 60-65 ON UNIT 0 /USES BLOCKS 0-22 ON UNIT 1 / /CONSTANTS A4=60 /FFOURIER BINARY BN0 C4=64 /SINEWAVE BN0 D4=10 E4=66 U5=70 F4=100 G4=105 *0 / 0 /SET LOCS 0-17=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 *20 JMP A1 0 0 /RESERVED FOR BN 0 /RESERVED FOR SEG 0 A1, RDC I 1\A4+1 /2ND QUARTER PROG CLR ADD 22 STA 00 A3+3 ADA I 0 6001 STC H2+3 ADD 22 ADA I 0 4001 STA 00 P1+3 STC P1+15 ADD 23 STA 00 R1 ROL 1 STC F2 /PRESET /SAMPLE SIZE Q1, LDA I 0 377 /SCALING CODE STC L1+4 RDC I 2\C4 RDC I 3\C4+1 LDA I 0 4000 JMP A3 LDA I 0 5000 JMP A3 LDA I 0 7000 JMP A3 LDA I 0 -5 ADM 00 A3+3 MTB 10 0 SET I 1 2377 SET I 2 2777 SET I 3 1777-400 LDA I 1 STA I 2 XSK I 3 JMP .-3 SET I 1 3777 JMP P2 SET I 1 2777 JMP P2 JMP B1 /SUB TO /READ INPUT /ENTER WITH /QUARTER THOU /IN ACC A3, SET 1 0 ADA I 0 0 /INITIAL BN STC .+2 RDC I 10 0 /BN SRO I 0 2222 JMP B3 LDA I 0 5 C3, ADM 00 A3+3 JMP 1 B3, LDA I 0 1 ADM 00 A3+3 JMP 1 /SUB TO /GATE P2, CLR ADD 0 STC I3 SET I 2 1777-1000 SET I 3 0 J3, CLR ADD 3 SCR 1 ADA I 0 5200 STC 4 LDA I 1 MUL 04 STA 01 XSK I 3 XSK I 2 JMP J3 I3, 0 /EXIT E1, 1777 / 1777-TERMS B1, SET I 13 /LOOP PRESETS 3777 SET I 14 2777 LDA I 0 D1, 400 ADA I 0 1777 STC 15 ADD D1 ADA I 0 2777 STC 16 ADD D1 COM ADA I 0 1777 STC E1 JMP S6 /INDEX PRESETS C1, JMP N6 SCR 1 ADA I 0 5000 STA 00 11 ADA I 0 200 BCL I 0 2000 STC 12 SET 17 E1 F1, JMP A6 /MULT AND SUM CLR ADD B6 COM ADA I 13 SCR 1 STA 015 CLR ADD B6+1 COM ADA I 14 SCR 1 STA 016 LDA 013 ADD B6 SCR 1 STA 013 LDA 014 ADD B6+1 SCR 1 STA 014 XSK I 17 JMP F1 XSK 016 JMP J1 JMP K1 G1, 0 /SCRATCH 0 /SCRATCH /COMPLEX MULT /SUBROUTINE A6, LDA I 15 MUL 011 STC B6 LDA I 16 MUL 012 COM ADM 00 B6 LDA 016 MUL 011 STC B6+1 LDA 015 MUL 012 ADM 00 B6+1 JMP 0 B6, 0 /RESULT RE 0 /RESULT IM K1, LDA I 0 -1 ADM I 0 L1, 11 AZE I JMP M1 SRO I 0 377 JMP .+4 LDA I 0 NOP JMP .+3 LDA I 0 SCR 1 STA 00 F1+5 STA 00 F1+13 STA 00 F1+17 STC F1+23 ADD D1 SCR 1 STC D1 JMP B1 J1, CLR ADD 13 ADD D1 STA 00 13 ADD D1 STC 15 ADD 14 ADD D1 STA 00 14 ADD D1 STC 16 JMP C1 M1, LDA I 0 2000 STC T6 JMP U6 LDA I 0 3777 STC C7 JMP A7 LDA I 0 3000 STC T6 JMP U6 LDA I 0 2777 STC C7 JMP A7 JMP P1 P1, SET I 1 1777-4 WRI I 10 4\D4 LDA I 0 1001 ADM 00 .-4 XSK I 1 JMP .-7 SET I 1 1777-4 CHK I 10 4\D4 SAE I 0 7777 JMP .+2 JMP .+10 LDA I 0 3773 ADM 00 P1+3 STA 00 P1+15 JMP P1 LDA I 0 1001 ADM 00 P1+15 XSK I 1 JMP P1+14 LDA I 0 -1 ADM I 0 R1, 0 AZE I JMP A2 LDA I 0 4001 ADM 00 P1+3 STA 00 P1+15 LDA I 0 11 STC L1 LDA I 0 400 STC D1 JMP Q1 /TRAN SUB A7, CLR ADD 0 STC B7 SET I 17 777 SET I 4 C7, 0 SET I 13 1777-1000 D7, LDA I 17 STA I 14 XSK I 13 JMP D7 B7, 0 /EXIT /SORT SUB U6, CLR ADD 0 STC V6 JMP S6 SET I 16 777 SET I 15 1777-1000 W6, JMP N6 ADA I 0 T6, 0 STC 1 LDA 01 STA I 16 XSK I 15 JMP W6 V6, 0 /EXIT O6, 0 4 2 6 1 5 3 7 0 S6, SET I 6 O6-1 SET I 7 O6-1 SET I 10 O6-1 JMP 0 /INDEX SUB N6, CLR ADD 0 STC R6 LDA I 6 AZE I JMP P6 ROL 3 ADA 07 AZE I JMP Q6 ROL 3 ADA 010 R6, 0 /EXIT P6, XSK I 7 SET I 6 O6 JMP 0 Q6, XSK I 10 SET I 7 O6 JMP 0 E2, LDA I 0 -1 ADM I 0 F2, 0 AZE I JMP G2 LDA I 0 5777 ADM 00 H2+3 JMP H2 A2, RDC I 2\A4+2 RDC 3\A4+3 SET I 1 3777 SET I 2 1777-1000 LDA I 0 -40 STA I 1 XSK I 2 JMP .-2 H2, SET I 1 1777-2 RDC I 10 6\D4 LDA I 0 1001 ADM 00 .-4 XSK I 1 JMP .-7 MTB 10 0 SRO I 2525 JMP B2 LDA I 0 2 ADM 00 H2+3 JMP B2 C2, -400 0 B2, SET I 17 3002 SET I 16 3775 SET I 13 2004 SET I 12 1777-310 D2, SET 4 17 JMP M2 SET 4 16 JMP M2 LDA I 0 -1 ADM 00 16 XSK I 17 XSK I 13 XSK I 13 XSK I 12 JMP D2 JMP E2 M2, CLR ADD 0 STC N2 LDA 04 STC O2+1 STC O2 SET I 1 O2+1 JMP Z5 JMP M5 O2 O2 O2 JMP A5 O2 -13 -13 N2, 0 /EXIT O2, 0 /SCRATCH 0 /SCRATCH /CONVERT RESULTS /TO FIXED POINT G2, SET I 17 2000 SET I 16 3377 W2, SET 1 17 LDA I 0 /SCALING EXP Q2, 2 JMP I5 STA I 16 XSK I 17 XSK I 17 XSK 016 JMP W2 /DISPLAY /Y AXIS R2, SET I 2 40 SET I 1 260 LDA 00 1 SET I 3 1777-13 DIS 02 LDA I 0 -50 ADM 00 1 XSK I 3 JMP .-6 /X AXIS S2, SET I 2 37 SET I 1 -340 SET I 3 1777-311 LDA 00 1 DIS I 2 XSK I 2 XSK I 3 JMP .-3 /X CAL MARKS SET I 2 40 SET I 1 -350 SET I 3 1777-11 T2, LDA 00 1 DIS 02 LDA I 0 62 ADM 00 2 XSK I 3 JMP T2 SET I 2 3400 SET I 1 42 SET I 3 1777-310 LDA I 2 ADA I 0 -336 JMP V2 XSK I 1 XSK I 1 XSK I 3 JMP .-7 U2, KST JMP R2 JMP KBD SAE I 0 0325 /U JMP .+2 JMP X2 SAE I 0 0327 JMP .+2 JMP Y2 SAE I 0 0323 /S JMP .+2 JMP Z2 JMP R2 X2, LDA I 0 1 ADM 00 Q2 JMP G2 Y2,SET I 5 -3 CLR STC KBSTR DE3,KST JMP .-1 IOB 6036 ADA I -260 ADD KBSTR XSK I 5 JMP DE5 BSE I 7000 STC SPECW WRC U SPECW,0 RDC 0056 SNS 3 HLT JMP 20 DE5,ROL 3 STC KBSTR JMP DE3 KBSTR,0 Z2, LDA I 0 /SCALING EXP 2 STC Q2 JMP G2 /PLOT POINT /SUBROUTINE 0 /SCRATCH V2, SET 4 0 SNS I 0 JMP .+3 DIS 01 JMP 4 STA 00 V2-1 DIS 01 LDA I 0 -1 ADM 00 V2-1 SAE I 0 -341 JMP .-7 JMP 4 D5, SET 2 0 JMP D5+77 ADD D5+205 AZE JMP .+5 LDA I 0 13 ADM D5+202 CLR ADD D5+204 COM ADD D5+202 ADD D5+206 STA 1 CLR STA I 1 ADD D5+205 MUL D5+4203 LDA D5+205 APO I COM STC D5+205 ADD D5+203 APO COM STC D5+203 SET I 3 1777-13 LDA D5+203 ADD D5+205 AZE I JMP .+3 APO JMP D5+67 ROL 1 STC D5+203 LDA 1 ROL 1 ADD D5+206 STA 1 XSK I 3 JMP D5+40 LZE JMP D5+64 JMP D5+145 CLR JMP 2 COM STA 1 JMP D5+61 LDA D5+203 ROL 1 STC D5+203 LDA 1 ROL 1 STA 1 JMP D5+55 LDA 0 STC D5+133 ADD 2 BCL I 0 6000 STC 2 LDA 2 JMP D5+134 STC 1 LDA 1 STC D5+202 LDA I 1 STC D5+203 LDA I 2 JMP D5+134 STC 1 LDA 1 STC D5+204 LDA I 1 STC D5+205 LDA I 2 JMP D5+134 STC 1 ADD 2 ADA I 0 6001 STC 2 JMP 0 APO I JMP 0 BCO I 0 5777 STC .+1 0 JMP 0 Z5, LDA 1 ROL I 1 LDA 0 STC D5+201 SET I 3 0 LDA 1 AZE I JMP D5+372 ROL I 1 LZE JMP .+4 APO I JMP .+4 JMP .+5 APO I JMP .+3 XSK I 3 JMP .-11 ROR I 1 STA 1 LDA I 0 -1 ADM 1 LDA 3 COM ADM 1 0 0 0 0 0 1 -1 0 M5, SET 2 0 JMP D5+77 ADD D5+202 ADD D5+204 STA 1 LDA D5+203 MUL D5+4205 STA I 1 CLR JMP D5+145 CLR JMP 2 S5, SET 2 0 JMP D5+77 LDA D5+205 COM STC D5+205 JMP D5+247 SET I 3 D5+204 COM JMP D5+257 A5, SET 2 0 JMP D5+77 LDA D5+202 COM ADD D5+204 APO JMP D5+240 SET I 3 D5+202 STA D5+210 ADA I 0 -14 AZE I JMP .+3 APO I JMP D5+302 LDA D5+210 ADA I 0 SCR I STC .+4 LDA I 3 SCR I 1 ROL I 1 0 STA 3 JMP D5+304 CLR STA I 3 LDA 3 APO JMP .+4 LZE ADD D5+206 JMP .+3 LZE I ADD D5+207 STA 3 LDA 3 SAE I 0 D5+205 JMP .+4 LDA D5+202 JMP .+3 LDA D5+204 ADD D5+206 STA 1 CLR ADD D5+203 BCO 00 D5+205 APO JMP D5+362 CLR ADD D5+203 LAM D5+205 LZE ADD D5+206 ROR I 1 STA I 1 JMP D5+145 LDA I 1 APO JMP .+4 LZE ADD D5+206 JMP .+3 LZE I ADD D5+207 STA 1 JMP 2 CLR ADD D5+203 ADD D5+205 SCR I 1 STA I 1 JMP D5+145 LDA I 1 JMP 2 SET I 3 20 JMP D5+170 /FLP TO FIXP I5, SET 2 0 STC I5+33 LDA 01 STC I5+31 LDA I 1 STC I5+32 ADD I5+33 ADD I5+31 AZE I JMP I5+27 APO JMP I5+21 CLR COM ROL I 1 JMP 2 ADD I5+34 STC I5+31 ADD I5+32 SCR 1 STC I5+32 JMP I5+10 ADD I5+32 JMP 2 0 0 0 1 /READ KEYBOARD KBD, LDA 00 /GET RTN JUMP 0 STC KBTY2 /SAVE IT IOB 6031/KSF - NEW CHARACTER ? JMP KBTY5 /NO-RETURN IOB 6036/KRB - READ CHARACTER KBTY5, DJR KBTY2, JMP 0 /REPLACED BY RTN JMP /ASCII IN AC /END OF FFOURIER PGM / / /SINE TABLE FOR FFOURIER /ASSEMBLES FOR Q6 & Q7 /MUST RESIDE IN BN64 & 65 ON UNIT 0 / SEGMNT 3 *1000 3777 3777 3777 3776 3775 3774 3772 3770 3766 3763 3760 3755 3751 3745 3741 3735 3730 3723 3716 3710 3702 3674 3665 3656 3647 3640 3630 3620 3610 3577 3566 3555 3544 3532 3520 3505 3473 3460 3445 3431 3416 3402 3365 3351 3334 3317 3302 3264 3246 3230 3212 3173 3154 3135 3116 3076 3057 3037 3016 2776 2755 2734 2713 2671 2650 2626 2604 2561 2537 2514 2471 2446 2423 2377 2353 2330 2303 2257 2233 2206 2161 2134 2107 2062 2034 2007 1761 1733 1705 1657 1630 1602 1553 1524 1475 1446 1417 1370 1341 1311 1261 1232 1202 1152 1122 1072 1042 1011 761 731 700 650 617 566 536 505 454 423 372 341 310 257 226 175 144 113 62 31 0 7746 /-31 7715 /-62 7664 /-113 7633 /-144 7602 /-175 7551 /-226 7520 /-257 7467 /-310 7436 /-341 7405 /-372 7354 /-423 7323 /-454 7272 /-505 7241 /-536 7211 /-566 7160 /-617 7127 /-650 7077 /-700 7046 /-731 7016 /-761 6766 /-1011 6735 /-1042 6705 /-1072 6655 /-1122 6625 /-1152 6575 /-1202 6545 /-1232 6516 /-1261 6466 /-1311 6436 /-1341 6407 /-1370 6360 /-1417 6331 /-1446 6302 /-1475 6253 /-1524 6224 /-1553 6175 /-1602 6147 /-1630 6120 /-1657 6072 /-1705 6044 /-1733 6016 /-1761 5770 /-2007 5743 /-2034 5715 /-2062 5670 /-2107 5643 /-2134 5616 /-2161 5571 /-2206 5544 /-2233 5520 /-2257 5473 /-2304 5447 /-2330 5423 /-2354 5400 /-2377 5354 /-2423 5331 /-2446 5306 /-2471 5263 /-2514 5240 /-2537 5216 /-2561 5173 /-2604 5151 /-2626 5127 /-2650 5106 /-2671 5064 /-2713 5043 /-2734 5022 /-2755 5001 /-2776 4761 /-3016 4740 /-3037 4720 /-3057 4701 /-3076 4661 /-3116 4642 /-3135 4623 /-3154 4604 /-3173 4565 /-3212 4547 /-3230 4531 /-3246 4513 /-3264 4475 /-3302 4460 /-3317 4443 /-3334 4426 /-3351 4412 /-3365 4375 /-3402 4361 /-3416 4346 /-3431 4332 /-3445 4317 /-3460 4304 /-3473 4272 /-3505 4257 /-3520 4245 /-3532 4233 /-3544 4222 /-3555 4211 /-3566 4200 /-3577 4167 /-3610 4157 /-3620 4147 /-3630 4137 /-3640 4130 /-3647 4121 /-3656 4112 /-3665 4103 /-3674 4075 /-3702 4067 /-3710 4061 /-3716 4054 /-3723 4047 /-3730 4042 /-3735 4036 /-3741 4032 /-3745 4026 /-3751 4022 /-3755 4017 /-3760 4014 /-3763 4011 /-3766 4007 /-3770 4005 /-3772 4003 /-3774 4002 /-3775 4001 /-3776 4000 /-3777 4000 /-3777 4000 /-3777 4000 /-3777 4000 /-3777 4001 /-3776 4002 /-3775 4003 /-3774 4005 /-3772 4007 /-3770 4011 /-3766 4014 /-3763 4017 /-3760 4022 /-3755 4026 /-3751 4032 /-3745 4036 /-3741 4042 /-3735 4047 /-3730 4054 /-3723 4061 /-3716 4067 /-3710 4075 /-3702 4103 /-3674 4112 /-3665 4121 /-3656 4130 /-3647 4137 /-3640 4147 /-3630 4157 /-3620 4167 /-3610 4200 /-3577 4211 /-3566 4222 /-3555 4233 /-3544 4245 /-3532 4257 /-3520 4272 /-3505 4304 /-3473 4317 /-3460 4332 /-3445 4346 /-3431 4361 /-3416 4375 /-3402 4412 /-3365 4426 /-3351 4443 /-3334 4460 /-3317 4475 /-3302 4513 /-3264 4531 /-3246 4547 /-3230 4565 /-3212 4604 /-3173 4623 /-3154 4642 /-3135 4661 /-3116 4701 /-3076 4720 /-3057 4740 /-3037 4761 /-3016 5001 /-2776 5022 /-2755 5043 /-2734 5064 /-2713 5106 /-2671 5127 /-2650 5151 /-2626 5173 /-2604 5216 /-2561 5240 /-2537 5263 /-2514 5306 /-2471 5331 /-2446 5354 /-2423 5400 /-2377 5424 /-2353 5447 /-2330 5474 /-2303 5520 /-2257 5544 /-2233 5571 /-2206 5616 /-2161 5643 /-2134 5670 /-2107 5715 /-2062 5743 /-2034 5770 /-2007 6016 /-1761 6044 /-1733 6072 /-1705 6120 /-1657 6147 /-1630 6175 /-1602 6224 /-1553 6253 /-1524 6302 /-1475 6331 /-1446 6360 /-1417 6407 /-1370 6436 /-1341 6466 /-1311 6516 /-1261 6545 /-1232 6575 /-1202 6625 /-1152 6655 /-1122 6705 /-1072 6735 /-1042 6766 /-1011 7016 /-761 7046 /-731 7077 /-700 7127 /-650 7160 /-617 7211 /-566 7241 /-536 7272 /-505 7323 /-454 7354 /-423 7405 /-372 7436 /-341 7467 /-310 7520 /-257 7551 /-226 7602 /-175 7633 /-144 7664 /-113 7715 /-62 7746 /-31 0 31 62 113 144 175 226 257 310 341 372 423 454 505 536 566 617 650 700 731 761 1011 1042 1072 1122 1152 1202 1232 1261 1311 1341 1370 1417 1446 1475 1524 1553 1602 1630 1657 1705 1733 1761 2007 2034 2062 2107 2134 2161 2206 2233 2257 2304 2330 2354 2377 2423 2446 2471 2514 2537 2561 2604 2626 2650 2671 2713 2734 2755 2776 3016 3037 3057 3076 3116 3135 3154 3173 3212 3230 3246 3264 3302 3317 3334 3351 3365 3402 3416 3431 3445 3460 3473 3505 3520 3532 3544 3555 3566 3577 3610 3620 3630 3640 3647 3656 3665 3674 3702 3710 3716 3723 3730 3735 3741 3745 3751 3755 3760 3763 3766 3770 3772 3774 3775 3776 3777 3777 /END OF FFOURIER $2 2107 2134 2161 2206 2233 2257 2304 2330 2354 2377 2423 2446 2471 2514 2537 2561 2604 2626 2650 2671 2713 2734 2755 2776 3016 3037 3057 3076 3116 3135 3154 3173 3212 3230 3246 3264 3302 3317 3334 3351 3365 3402 3416 3431 3445 3460 3473 3505 3520 3532 3544 3555 3566 3577 3610