home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design3 / intermod.asc < prev    next >
Text File  |  1986-10-15  |  3KB  |  74 lines

  1. 100 CLS :REM "INTERMOD"
  2. 110 PRINT TAB(15);"**** INTERMODULATION / HARMONIC PRODUCT TABLE ****" :PRINT
  3. 120 REM M.GOLDFARB -1984  REVISED by V.HEESEN -1986
  4. 130 PRINT "THIS PROGRAM COMPUTES the SUM & DIFFERENCE INTERMODULATION PRODUCTS";
  5. 140 PRINT " from a MIXER" :PRINT "or other NON-LINEAR DEVICE. NOTE:   LO & RF";
  6. 150 PRINT " INPUTS may be SWEPT or WIDEBAND."
  7. 160 PRINT :BEEP :PRINT "HARD COPY REQUIRED (Y/N)? "
  8. 170 P$=INKEY$ :IF P$="" THEN 170
  9. 180 IF P$="Y" THEN 190 ELSE IF P$<>"N" THEN 170
  10. 190 PRINT :BEEP :INPUT "ENTER: LO FREQUENCY RANGE  (MHz) (Low,High)";L1,L2
  11. 200 PRINT :BEEP :INPUT "       RF FREQUENCY RANGE  (MHz) (Low,High)";R1,R2
  12. 210 PRINT :BEEP :INPUT "       OUTPUT FREQ. RANGE  (MHz) (Low,High)";I1,I2
  13. 220 PRINT :BEEP :INPUT "       MAXIMUM PRODUCT ORDER (N+M)";Q
  14. 230 L=(L1+L2)/2  'LO Center freq.
  15. 240 R=(R1+R2)/2  'RF Center freq.
  16. 250 B2=(R2-R1)/(R*2)
  17. 260 A1$="Order   RF    LO     Low Product            High Product    Product in"
  18. 270 B$="(N+M)  (M)   (N)       (MR-NL)                (MR+NL)       Output Band"
  19. 280 C$=" ##    ##    ##   ####### to #######     ####### to #######    \    \"
  20. 290 D$="_____________________________________________________________________"
  21. 300 CLS :PRINT TAB(17);"*** INTERMODULATION/HARMONIC PRODUCT TABLE ***" :PRINT
  22. 310 IF P$="N" THEN 370
  23. 320 LPRINT TAB(17);"*** INTERMODULATION/HARMONIC PRODUCT TABLE ***" :LPRINT
  24. 330 LPRINT "LO FREQUENCY RANGE (MHz)    =";L1;" to ";L2
  25. 340 LPRINT "RF FREQUENCY RANGE (MHz)    =";R1;" to ";R2
  26. 350 LPRINT "OUTPUT FREQUENCY RANGE (MHz)=";I1;" to ";I2 :LPRINT :LPRINT
  27. 360 LPRINT A1$ :LPRINT B$
  28. 370 PRINT A1$ :PRINT B$ :PRINT D$
  29. 380 I=8  'PAGE COUNTER
  30. 390 M=0  'INITIALIZE RF COUNTER
  31. 400 N=Q  'START LOOP WITH N=MAX.ORDER
  32. 410 GOSUB 690  'CALCULATE PRODUCTS FOR GIVEN ORDER "Q"
  33. 420 A$="N" :REM TEST FOR SPUR IN THE OUTPUT BAND
  34. 430 IF U1>=I1 AND U1<=I2 THEN A$="Y"
  35. 440 IF U2>=I1 AND U2<=I2 THEN A$="Y"
  36. 450 IF U1>=I1 AND U2<=I2 THEN A$="Y"
  37. 460 IF U1<=I1 AND U2>=I2 THEN A$="Y"
  38. 470 IF M=1 AND N=1 THEN A$="OUTPUT"
  39. 480 IF N+M=4 THEN PRINT  :I=I-1
  40. 490 IF N+M=4 AND P$="Y" THEN LPRINT
  41. 500 IF I=0 THEN PRINT :INPUT "PRESS <ENTER> TO CONTINUE";X$
  42. 510 IF I>0 THEN 560
  43. 520 CLS
  44. 530 PRINT A1$ :PRINT B$ :PRINT D$
  45. 540 PRINT :I=8
  46. 550 IF P$="Y" THEN LPRINT
  47. 560 PRINT USING C$;N+M,M,N,U1,U2,V1,V2,A$
  48. 570 IF P$="Y" THEN LPRINT USING C$;N+M,M,N,U1,U2,V1,V2,A$
  49. 580 I=I-1
  50. 590 N=N-1
  51. 600 IF M=0 AND N=0 THEN 620
  52. 610 IF N>=0 THEN 410
  53. 620 M=M+1 :N=Q-M
  54. 630 PRINT
  55. 640 IF M<=Q THEN 410
  56. 650 PRINT :IF P$="Y" THEN LPRINT CHR$(10)
  57. 660 PRINT :BEEP :PRINT "CONTINUE (Y/N)?"
  58. 670 E$=INKEY$ :IF E$="" THEN 670
  59. 680 IF E$="Y" THEN RUN ELSE IF E$<>"N" THEN 670 ELSE END
  60. 690 REM SUBROUTINE :CALCSPUR
  61. 700 IF M*R>=N*L THEN X=1 ELSE X=0
  62. 710 Y=0
  63. 720 IF X=0 AND N*L1>M*R2 THEN Y=1
  64. 730 IF X=1 AND M*R1>N*L2 THEN Y=1
  65. 740 IF Y=0 THEN U1=0
  66. 750 IF Y=1 AND X=0 THEN U1=N*L1-M*R2
  67. 760 IF Y=1 AND X=1 THEN U1=M*R1-N*L2
  68. 770 IF X=0 THEN U2=N*L2-M*R1 ELSE U2=M*R2-N*L1
  69. 780 V1=M*R1+N*L1
  70. 790 V2=M*R2+N*L2
  71. 800 IF M=0 THEN U1=N*L1
  72. 810 IF N=0 THEN U1=M*R1
  73. 820 RETURN
  74.