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

  1. 100    '****************************************************************
  2. 110    '*      DETERMINES THE SUPURIOUS PRODUCTS FROM 3 SPECIFIED    *
  3. 120    '*            FREQUENCIES                *
  4. 130    '*                                *
  5. 140    '*    By H. Aicher, from "News from Rhode and Schwarz",    *
  6. 150    '*         ISSN 0028-9108 (1981) No. 94 pp 30-31        *
  7. 160    '*                                *
  8. 170    '*      Keyed in AND various format modifications by        *
  9. 180    '*      Bill Bolton, Channel 0/28, Sydney, AUSTRALIA        *
  10. 190    '*            February 26, 1982            *
  11. 200    '****************************************************************
  12. 210    '
  13. 220    PRINT
  14. 230    PRINT
  15. 240    PROMPT$="PRODUCT OF THREE FREQUENCIES"
  16. 250    PRINT TAB((79-(LEN(PROMPT$)))/2);PROMPT$
  17. 260    '
  18. 270    PRINT
  19. 280    PROMPT$ = "Enter IF and BANDWIDTH :"
  20. 290    PRINT PROMPT$
  21. 300    PRINT
  22. 310    OFFSET = LEN(PROMPT$) + 3
  23. 320    PRINT TAB(OFFSET);"IF Frequency = ";
  24. 330    INPUT "",Z
  25. 340    PRINT TAB(OFFSET);"Bandwidth    = ";
  26. 350    INPUT "",B
  27. 360    PRINT
  28. 370    PRINT "Enter the INPUT FREQUENCIES and MAX. ORDER numbers :"
  29. 380    PRINT
  30. 390    PRINT TAB(OFFSET);"Frequency  1 = ";
  31. 400    INPUT "",F1
  32. 410    PRINT TAB(OFFSET);"Max. order 1 = ";
  33. 420    INPUT "",M1
  34. 430    PRINT
  35. 440    PRINT TAB(OFFSET);"Frequency  2 = ";
  36. 450    INPUT "",F2
  37. 460    PRINT TAB(OFFSET);"Max. order 2 = ";
  38. 470    INPUT "",M2
  39. 480    PRINT
  40. 490    PRINT TAB(OFFSET);"Frequency  3 = ";
  41. 500    INPUT "",F3
  42. 510    PRINT TAB(OFFSET);"Max. order 3 = ";
  43. 520    INPUT "",M3
  44. 530    '
  45. 540    'Display the entered values
  46. 550    '
  47. 560    PRINT
  48. 570    PRINT
  49. 580    PRINT "F1 = ";F1,"F2 = ";F2,"F3 = ";F3
  50. 590    PRINT "IF = ";Z,"BW = ";B
  51. 600    '
  52. 610    'Display the column headings
  53. 620    '
  54. 630    PRINT
  55. 640    PRINT
  56. 650    PRINT "N1"; TAB(5);"N2"; TAB(9);"N3"; TAB(14);"N1*F1";
  57. 660    PRINT TAB(26);"N2*F2"; TAB(38);"N3*F3";
  58. 670    PRINT TAB(51);"DIFFERENCE"; TAB(64);"PRODUCT"
  59. 680    PRINT
  60. 690    '
  61. 700    'The condition for a spurious product falling
  62. 710    'within the IF region with a sideband of BW is:
  63. 720    '     || +- N1*F1 +- N2*F2 | - IF | <= BW
  64. 730    '
  65. 740    'Calculate the column enteries and display them
  66. 750    '
  67. 760    FOR N1 = 0 TO M1
  68. 770        FOR N2 = 0 TO M2
  69. 780            FOR N3 = 0 TO M3
  70. 790            '
  71. 800            'Calculate multiples of individual frequencies
  72. 810            '
  73. 820            V1 = N1 * F1
  74. 830            V2 = N2 * F2
  75. 840            V3 = N3 * F3
  76. 850            '
  77. 860            'Calculate sum frequencies
  78. 870            '
  79. 880            S1 = V1 + V2
  80. 890            S2 = V1 + V3
  81. 900            S3 = V2 + V3
  82. 910            S4 = V1 + V2 + V3
  83. 920            '
  84. 930            'Calculate difference frequencies
  85. 940            '
  86. 950            D1 = V1 - V2
  87. 960            E1 = V2 - V1
  88. 970            D2 = V1 - V3
  89. 980            E2 = V3 - V1
  90. 990            D3 = V2 - V3
  91. 1000            E3 = V3 - V2
  92. 1010            D4 = S1 - V3
  93. 1020            E4 = V3 - S1
  94. 1030            D5 = S2 - V2
  95. 1040            E5 = V2 - S2
  96. 1050            D6 = S3 - V1
  97. 1060            E6 = V1 - S3
  98. 1070            '
  99. 1080            'Check if product within bandwidth
  100. 1090            '
  101. 1100            IF V1 = 0 OR N2 > 0 OR N3 > 0 THEN
  102.                 1180
  103. 1110            D = V1 - Z
  104. 1120            IF ABS(D) > B THEN
  105.                 1180
  106. 1130            PRINT N1;TAB(5);" .";TAB(9);" .";TAB(13);V1
  107. 1140            PRINT TAB(25);" ."; TAB(38);" ."; TAB(51);D; TAB(64);"V1";
  108. 1150            '
  109. 1160            '**************************************************
  110. 1170            '
  111. 1180            IF V2 = 0 OR N1 > 0 OR N3 > 0 THEN
  112.                 1260
  113. 1190            D2 = V2 - Z
  114. 1200            IF ABS(D) > B THEN
  115.                 1260
  116. 1210            PRINT " .";TAB(5);N2;TAB(9);" .";TAB(13);" .";
  117. 1220            PRINT TAB(25);V2;TAB(38);" .";TAB(51);D;TAB(64);"V2"
  118. 1230            '
  119. 1240            '***************************************************
  120. 1250            '
  121. 1260            IF V3 = 0 OR N1 > 0 OR N2 > 0 THEN
  122.                 1340
  123. 1270            D = V3 - Z
  124. 1280            IF ABS(D)>B THEN
  125.                 1340
  126. 1290            PRINT " ";TAB(5);" .";TAB(9);N3;TAB(13);" .";
  127. 1300            PRINT TAB(25);" .";TAB(38);V3;TAB(51);D;TAB(64);"V3"
  128. 1310            '
  129. 1320            '***************************************************
  130. 1330            '
  131. 1340            IF V1 = 0 OR V2 = 0 OR N3 > 0 THEN
  132.                 1420
  133. 1350            D = S1 - Z
  134. 1360            IF ABS(D)>B THEN
  135.                 1420
  136. 1370             GOSUB 3000
  137. 1380            PRINT TAB(64);"V1+V2"
  138. 1390            '
  139. 1400            '***************************************************
  140. 1410            '
  141. 1420            IF V1 = 0 OR V3 = 0 OR N2 > 0 THEN
  142.                 1500
  143. 1430            D = S2 - Z
  144. 1440            IF ABS(D)>B THEN
  145.                 1500
  146. 1450            GOSUB 3040
  147. 1460            PRINT TAB(64);"V1+V3"
  148. 1470            '
  149. 1480            '***************************************************
  150. 1490            '
  151. 1500            IF V2 = 0 OR V3 = 0 OR N1 > 0 THEN
  152.                 1580
  153. 1510             D = S3 - Z
  154. 1520            IF ABS(D)>B THEN
  155.                 1580
  156. 1530            GOSUB 3080
  157. 1540            PRINT TAB(64);"V2+V3"
  158. 1550            '
  159. 1560            '***************************************************
  160. 1570            '
  161. 1580            IF V1 = 0 OR V2 = 0 OR V3 = 0 THEN
  162.                 1660
  163. 1590            D = S4 - Z
  164. 1600            IF ABS(D)>B THEN
  165.                 1660
  166. 1610            GOSUB 3120
  167. 1620            PRINT TAB(64);"V1+V2+V3"
  168. 1630            '
  169. 1640            '***************************************************
  170. 1650            '
  171. 1660            IF V1 = 0 OR V2 = 0 OR N3 > 0 THEN
  172.                 1780
  173. 1670            D = D1 - Z
  174. 1680            IF ABS(D)>B THEN
  175.                 1710
  176. 1690            GOSUB 3000
  177. 1700            PRINT TAB(64);"V1-V2"
  178. 1710            D = E1 -Z
  179. 1720            IF ABS(D)>B THEN
  180.                 1780
  181. 1730            GOSUB 3000
  182. 1740            PRINT TAB(64);"V2-V1"
  183. 1750            '
  184. 1760            '***************************************************
  185. 1770            '
  186. 1780            IF V1 = 0 OR V3 = 0 OR N2 > 0 THEN
  187.                 1900
  188. 1790            D = D2 - Z
  189. 1800            IF ABS(D)>B THEN
  190.                 1830
  191. 1810            GOSUB 3040
  192. 1820            PRINT TAB(64);"V1-V3"
  193. 1830            D = E2 - Z
  194. 1840            IF ABS(D)>B THEN
  195.                 1900
  196. 1850            GOSUB 3040
  197. 1860            PRINT TAB(64);"V3-V1"
  198. 1870            '
  199. 1880            '*************************************************
  200. 1890            '
  201. 1900            IF V2 = 0 OR V3 = 0 OR N1 > 0 THEN
  202.                 2050
  203. 1910            D = D3 - Z
  204. 1920            IF ABS(D)>B THEN
  205.                 1980
  206. 1930            GOSUB 3080
  207. 1940            PRINT TAB(64);"V2-V3"
  208. 1950            '
  209. 1960            '************************************************
  210. 1970            '
  211. 1980            D = E3 - Z
  212. 1990            IF ABS(D)>B THEN
  213.                 2050
  214. 2000            GOSUB 3080
  215. 2010            PRINT TAB(64);"V3-V2"
  216. 2020            '
  217. 2030            '************************************************
  218. 2040            '
  219. 2050            IF V1 = 0 OR V2 = 0 OR V3 = 0 THEN
  220.                 2440
  221. 2060            D = D4 - Z
  222. 2070            IF ABS(D)>B THEN
  223.                 2130
  224. 2080            GOSUB 3120
  225. 2090            PRINT TAB(64);"V1+V2+V3"
  226. 2100            '
  227. 2110            '***********************************************
  228. 2120            '
  229. 2130            D = E4 - Z
  230. 2140            IF ABS(D)>B THEN
  231.                 2200
  232. 2150            GOSUB 3120
  233. 2160            PRINT TAB(64);"V3-(V1+V2)"
  234. 2170            '
  235. 2180            '***********************************************
  236. 2190            '
  237. 2200            D = D5 - Z
  238. 2210            IF ABS(D)>B THEN
  239.                 2260
  240. 2220            GOSUB 3120
  241. 2230            PRINT TAB(64);"V1+V3-V2"
  242. 2240            '
  243. 2250            '***********************************************
  244. 2260            D = E5 - Z
  245. 2270            IF ABS(D)>B THEN
  246.                 2330
  247. 2280            GOSUB 3120
  248. 2290            PRINT TAB(64);"V2-(V1+V3)"
  249. 2300            '
  250. 2310            '**********************************************
  251. 2320            '
  252. 2330            D = D6 - Z
  253. 2340            IF ABS(D)>B THEN
  254.                 2400
  255. 2350            GOSUB 3120
  256. 2360            PRINT TAB(64);"V2+V3-V1"
  257. 2370            '
  258. 2380            '*********************************************
  259. 2390            '
  260. 2400            D = E6 - Z
  261. 2410            IF ABS(D)>B THEN
  262.                 2440
  263. 2420            GOSUB 3120
  264. 2430            PRINT TAB(64);"V1-(V2+V3)"
  265. 2440            NEXT N3
  266. 2450        NEXT N2
  267. 2460    NEXT N1
  268. 2470    '
  269. 2480    PRINT
  270. 2490    PRINT "V1 TO V3 ARE MULTIPLES OF INDIVIDUAL FREQUENCIES!"
  271. 2500    PRINT
  272. 2510    PRINT
  273. 2520    END
  274. 2530    '
  275. 2540    '
  276. 3000    PRINT N1;TAB(5);N2;TAB(9);" .";TAB(13);V1;
  277. 3010    PRINT TAB(25);V2;TAB(38);" .";TAB(51);D;
  278. 3020    RETURN
  279. 3030    '
  280. 3040    PRINT N1;TAB(5);" .";TAB(9);N3;TAB(13);V1;
  281. 3050    PRINT TAB(25);" .";TAB(38);V3;TAB(51);D;
  282. 3060    RETURN
  283. 3070    '
  284. 3080    PRINT " .";TAB(5);N2;TAB(9);N3;TAB(13);" .";
  285. 3090    PRINT TAB(25);V2;TAB(38);V3;TAB(51);D;
  286. 3100    RETURN
  287. 3110    '
  288. 3120    PRINT N1;TAB(5);N2;TAB(9);N3;TAB(13);V1;
  289. 3130    PRINT TAB(25);V2;TAB(38);V3;TAB(51);D;
  290. 3140    RETURN
  291.