home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol074
/
fprod.bas
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
7KB
|
291 lines
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