100 '**************************************************************** 110 '* DETERMINES THE SUPURIOUS PRODUCTS FROM 3 SPECIFIED * 120 '* FREQUENCIES * 130 '* * 140 '* By H. Aicher, from "News from Rhode and Schwarz", * 150 '* ISSN 0028-9108 (1981) No. 94 pp 30-31 * 160 '* * 170 '* Keyed in AND various format modifications by * 180 '* Bill Bolton, Channel 0/28, Sydney, AUSTRALIA * 190 '* February 26, 1982 * 200 '**************************************************************** 210 ' 220 PRINT 230 PRINT 240 PROMPT$="PRODUCT OF THREE FREQUENCIES" 250 PRINT TAB((79-(LEN(PROMPT$)))/2);PROMPT$ 260 ' 270 PRINT 280 PROMPT$ = "Enter IF and BANDWIDTH :" 290 PRINT PROMPT$ 300 PRINT 310 OFFSET = LEN(PROMPT$) + 3 320 PRINT TAB(OFFSET);"IF Frequency = "; 330 INPUT "",Z 340 PRINT TAB(OFFSET);"Bandwidth = "; 350 INPUT "",B 360 PRINT 370 PRINT "Enter the INPUT FREQUENCIES and MAX. ORDER numbers :" 380 PRINT 390 PRINT TAB(OFFSET);"Frequency 1 = "; 400 INPUT "",F1 410 PRINT TAB(OFFSET);"Max. order 1 = "; 420 INPUT "",M1 430 PRINT 440 PRINT TAB(OFFSET);"Frequency 2 = "; 450 INPUT "",F2 460 PRINT TAB(OFFSET);"Max. order 2 = "; 470 INPUT "",M2 480 PRINT 490 PRINT TAB(OFFSET);"Frequency 3 = "; 500 INPUT "",F3 510 PRINT TAB(OFFSET);"Max. order 3 = "; 520 INPUT "",M3 530 ' 540 'Display the entered values 550 ' 560 PRINT 570 PRINT 580 PRINT "F1 = ";F1,"F2 = ";F2,"F3 = ";F3 590 PRINT "IF = ";Z,"BW = ";B 600 ' 610 'Display the column headings 620 ' 630 PRINT 640 PRINT 650 PRINT "N1"; TAB(5);"N2"; TAB(9);"N3"; TAB(14);"N1*F1"; 660 PRINT TAB(26);"N2*F2"; TAB(38);"N3*F3"; 670 PRINT TAB(51);"DIFFERENCE"; TAB(64);"PRODUCT" 680 PRINT 690 ' 700 'The condition for a spurious product falling 710 'within the IF region with a sideband of BW is: 720 ' || +- N1*F1 +- N2*F2 | - IF | <= BW 730 ' 740 'Calculate the column enteries and display them 750 ' 760 FOR N1 = 0 TO M1 770 FOR N2 = 0 TO M2 780 FOR N3 = 0 TO M3 790 ' 800 'Calculate multiples of individual frequencies 810 ' 820 V1 = N1 * F1 830 V2 = N2 * F2 840 V3 = N3 * F3 850 ' 860 'Calculate sum frequencies 870 ' 880 S1 = V1 + V2 890 S2 = V1 + V3 900 S3 = V2 + V3 910 S4 = V1 + V2 + V3 920 ' 930 'Calculate difference frequencies 940 ' 950 D1 = V1 - V2 960 E1 = V2 - V1 970 D2 = V1 - V3 980 E2 = V3 - V1 990 D3 = V2 - V3 1000 E3 = V3 - V2 1010 D4 = S1 - V3 1020 E4 = V3 - S1 1030 D5 = S2 - V2 1040 E5 = V2 - S2 1050 D6 = S3 - V1 1060 E6 = V1 - S3 1070 ' 1080 'Check if product within bandwidth 1090 ' 1100 IF V1 = 0 OR N2 > 0 OR N3 > 0 THEN 1180 1110 D = V1 - Z 1120 IF ABS(D) > B THEN 1180 1130 PRINT N1;TAB(5);" .";TAB(9);" .";TAB(13);V1 1140 PRINT TAB(25);" ."; TAB(38);" ."; TAB(51);D; TAB(64);"V1"; 1150 ' 1160 '************************************************** 1170 ' 1180 IF V2 = 0 OR N1 > 0 OR N3 > 0 THEN 1260 1190 D2 = V2 - Z 1200 IF ABS(D) > B THEN 1260 1210 PRINT " .";TAB(5);N2;TAB(9);" .";TAB(13);" ."; 1220 PRINT TAB(25);V2;TAB(38);" .";TAB(51);D;TAB(64);"V2" 1230 ' 1240 '*************************************************** 1250 ' 1260 IF V3 = 0 OR N1 > 0 OR N2 > 0 THEN 1340 1270 D = V3 - Z 1280 IF ABS(D)>B THEN 1340 1290 PRINT " ";TAB(5);" .";TAB(9);N3;TAB(13);" ."; 1300 PRINT TAB(25);" .";TAB(38);V3;TAB(51);D;TAB(64);"V3" 1310 ' 1320 '*************************************************** 1330 ' 1340 IF V1 = 0 OR V2 = 0 OR N3 > 0 THEN 1420 1350 D = S1 - Z 1360 IF ABS(D)>B THEN 1420 1370 GOSUB 3000 1380 PRINT TAB(64);"V1+V2" 1390 ' 1400 '*************************************************** 1410 ' 1420 IF V1 = 0 OR V3 = 0 OR N2 > 0 THEN 1500 1430 D = S2 - Z 1440 IF ABS(D)>B THEN 1500 1450 GOSUB 3040 1460 PRINT TAB(64);"V1+V3" 1470 ' 1480 '*************************************************** 1490 ' 1500 IF V2 = 0 OR V3 = 0 OR N1 > 0 THEN 1580 1510 D = S3 - Z 1520 IF ABS(D)>B THEN 1580 1530 GOSUB 3080 1540 PRINT TAB(64);"V2+V3" 1550 ' 1560 '*************************************************** 1570 ' 1580 IF V1 = 0 OR V2 = 0 OR V3 = 0 THEN 1660 1590 D = S4 - Z 1600 IF ABS(D)>B THEN 1660 1610 GOSUB 3120 1620 PRINT TAB(64);"V1+V2+V3" 1630 ' 1640 '*************************************************** 1650 ' 1660 IF V1 = 0 OR V2 = 0 OR N3 > 0 THEN 1780 1670 D = D1 - Z 1680 IF ABS(D)>B THEN 1710 1690 GOSUB 3000 1700 PRINT TAB(64);"V1-V2" 1710 D = E1 -Z 1720 IF ABS(D)>B THEN 1780 1730 GOSUB 3000 1740 PRINT TAB(64);"V2-V1" 1750 ' 1760 '*************************************************** 1770 ' 1780 IF V1 = 0 OR V3 = 0 OR N2 > 0 THEN 1900 1790 D = D2 - Z 1800 IF ABS(D)>B THEN 1830 1810 GOSUB 3040 1820 PRINT TAB(64);"V1-V3" 1830 D = E2 - Z 1840 IF ABS(D)>B THEN 1900 1850 GOSUB 3040 1860 PRINT TAB(64);"V3-V1" 1870 ' 1880 '************************************************* 1890 ' 1900 IF V2 = 0 OR V3 = 0 OR N1 > 0 THEN 2050 1910 D = D3 - Z 1920 IF ABS(D)>B THEN 1980 1930 GOSUB 3080 1940 PRINT TAB(64);"V2-V3" 1950 ' 1960 '************************************************ 1970 ' 1980 D = E3 - Z 1990 IF ABS(D)>B THEN 2050 2000 GOSUB 3080 2010 PRINT TAB(64);"V3-V2" 2020 ' 2030 '************************************************ 2040 ' 2050 IF V1 = 0 OR V2 = 0 OR V3 = 0 THEN 2440 2060 D = D4 - Z 2070 IF ABS(D)>B THEN 2130 2080 GOSUB 3120 2090 PRINT TAB(64);"V1+V2+V3" 2100 ' 2110 '*********************************************** 2120 ' 2130 D = E4 - Z 2140 IF ABS(D)>B THEN 2200 2150 GOSUB 3120 2160 PRINT TAB(64);"V3-(V1+V2)" 2170 ' 2180 '*********************************************** 2190 ' 2200 D = D5 - Z 2210 IF ABS(D)>B THEN 2260 2220 GOSUB 3120 2230 PRINT TAB(64);"V1+V3-V2" 2240 ' 2250 '*********************************************** 2260 D = E5 - Z 2270 IF ABS(D)>B THEN 2330 2280 GOSUB 3120 2290 PRINT TAB(64);"V2-(V1+V3)" 2300 ' 2310 '********************************************** 2320 ' 2330 D = D6 - Z 2340 IF ABS(D)>B THEN 2400 2350 GOSUB 3120 2360 PRINT TAB(64);"V2+V3-V1" 2370 ' 2380 '********************************************* 2390 ' 2400 D = E6 - Z 2410 IF ABS(D)>B THEN 2440 2420 GOSUB 3120 2430 PRINT TAB(64);"V1-(V2+V3)" 2440 NEXT N3 2450 NEXT N2 2460 NEXT N1 2470 ' 2480 PRINT 2490 PRINT "V1 TO V3 ARE MULTIPLES OF INDIVIDUAL FREQUENCIES!" 2500 PRINT 2510 PRINT 2520 END 2530 ' 2540 ' 3000 PRINT N1;TAB(5);N2;TAB(9);" .";TAB(13);V1; 3010 PRINT TAB(25);V2;TAB(38);" .";TAB(51);D; 3020 RETURN 3030 ' 3040 PRINT N1;TAB(5);" .";TAB(9);N3;TAB(13);V1; 3050 PRINT TAB(25);" .";TAB(38);V3;TAB(51);D; 3060 RETURN 3070 ' 3080 PRINT " .";TAB(5);N2;TAB(9);N3;TAB(13);" ."; 3090 PRINT TAB(25);V2;TAB(38);V3;TAB(51);D; 3100 RETURN 3110 ' 3120 PRINT N1;TAB(5);N2;TAB(9);N3;TAB(13);V1; 3130 PRINT TAB(25);V2;TAB(38);V3;TAB(51);D; 3140 RETURN