home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / ee3 / imd5.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1989-01-22  |  4.4 KB  |  128 lines

  1. 1  REM INTERMODULATION DISTORTION PROGRAM BASED ON ORIGINAL POROGRAM
  2. 2  REM BY A. KATZ.  WRITTEN BY H. CHARLES ROSS FOR USE IN COMMUNICATIONS
  3. 3  REM SYSTEMS
  4. 4  REM CALCULATES EACH FREQUENCY PRODUCED AND THAT FREQUENCY's amplitude.
  5. 5  REM
  6. 6  REM
  7. 7  REM
  8. 8  REM
  9. 9  REM
  10. 100  GOSUB 910 :REM CLEAR SCREEN
  11. 110  PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT"            Intermodulation Product Calculation":PRINT:PRINT:PRINT:PRINT
  12. 120  PRINT"            for up to fifth order functions":PRINT:PRINT:PRINT
  13. 125  PRINT:PRINT:PRINT:PRINT"                                            BY: H. Charles Ross Jr.":PRINT:PRINT,"via k2uyh/wa2tif":PRINT
  14. 130  GOSUB 1130:REM DELAY
  15. 140  DIM X(30),H(30)
  16. 150  GOSUB 910 :REM CLEAR SCREEN
  17. 160  INPUT"Non-linear Coefficients A1, A2, A3, A4, A5 ";A1,A2,A3,A4,A5
  18. 170  INPUT"Frequency F1 and F2";F1,F2
  19. 180  INPUT"Amplitudes V1 and V2";V1,V2
  20. 190  INPUT"Do you want hard copy ";DV$
  21. 200  DV=0
  22. 210  IF LEFT$(DV$,1)="Y" OR LEFT$(DV$,1)="y" THEN DV=2
  23. 220  GOSUB 910 :REM CLEAR SCREEN
  24. 230  PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT"          T H I N K I N G"
  25. 240  X(1)=F1 :X(2)=F2 :X(3)=2*F1 :X(4)=2*F2
  26. 250  X(5)=3*F1 :X(6)=3*F2 :X(7)=4*F1 :X(8)=4*F2
  27. 260  X(9)=5*F1 :X(10)=5*F2 :X(11)=F1+F2 :X(12)=ABS(F1-F2)
  28. 270  X(13)=2*F1+F2 :X(14)=ABS(F2-(2*F1)) :X(15)=2*F2+F1 :X(16)=ABS(F1-(2*F2))
  29. 280  X(17)=3*F1+F2 :X(18)=ABS(F2-(3*F1)) :X(19)=ABS((2*F2)-(2*F1)) :X(20)=(2*F1)+(2*F2)
  30. 290  X(21)=ABS(F1-(3*F2)) :X(22)=3*F2+F1 :X(23)=ABS((3*F1)-(2*F2)) :X(24)=(3*F1)+(2*F2)
  31. 300  X(25)=ABS(F2-(4*F1)) :X(26)=4*F1+F2 :X(27)=ABS((3*F2)-(2*F1)) :X(28)=(3*F2)+(2*F1)
  32. 310  X(29)=ABS(F1-(4*F2)) :X(30)=4*F2+F1
  33. 320  REM CALCULATE THE AMPLITUDES ....
  34. 330  FOR K=1 TO 30
  35. 340  ON K GOSUB 930,940,950,960,970,980,990,1000,1010,1020,1030,1040,1040,1050,1050,1060,1060,1080,1080,1070,1070,1090,1090,1110,1110,1100,1100,1120,1120
  36. 350  H(K)=G
  37. 360  NEXT K
  38. 370  REM INPUT FREQUENCYS AND AMPLITUDES IN ORDER OF FREQUENCY
  39. 380  MV=5*(F1+F2):REM THIS IS TO NOT PRINT FREQ's with 0 amp., but I don't use it.
  40. 390  FOR J=1 TO 30
  41. 400  FOR I=J TO 30
  42. 410  IF X(I)<X(J) THEN GOSUB 450 :REM SWITCH
  43. 420  NEXT I
  44. 430  NEXT J
  45. 440  GOTO 490 :REM CONTINUE
  46. 450  REM SWITCH ROUTINE
  47. 460  Q=X(I)   :X(I)=X(J)   :X(J)=Q
  48. 470  Q=H(I)   :H(I)=H(J)   :H(J)=Q
  49. 480  RETURN
  50. 490  IF DV=2 THEN 750
  51. 500  REM SCREEN PRINT ROUTINE
  52. 510  GOSUB 910 :REM CLEAR SCREEN
  53. 520  GOSUB 840 :REM PRINT HEADING
  54. 530  PRINT:FOR I=1 TO 15
  55. 540  PRINTI;")          Frequency = ";X(I),"Amplitude = ";H(I)
  56. 550  NEXT I
  57. 560  PRINT:PRINT:INPUT"Press RETURN to continue -->  ";DV$
  58. 565  GOSUB 910 :REM CLEAR SCREEN
  59. 570  GOSUB 840 :REM PRINT HEADING
  60. 580  PRINT:FOR I=16 TO 30
  61. 590  PRINTI;")          Frequency = ";X(I),"Amplitude = ";H(I)
  62. 600  NEXT I
  63. 610  PRINT:PRINT:INPUT"Press RETURN to continue -->  ";DV$
  64. 620  GOSUB 910 :REM CLEAR SCREEN
  65. 630  PRINT:PRINT:PRINT:INPUT"Do you want to continue";DV$
  66. 640  IF LEFT$(DV$,1)<>"Y" AND LEFT$(DV$,1)<>"y" THEN PRINTCHR$(26):END
  67. 650  GOSUB 910 :REM CLEAR SCREEN
  68. 660  PRINT:PRINT:PRINT:INPUT"Do you want to change (ALL,AMP,FREQ,COEF,NONE) ";DV$
  69. 670  IF DV$="ALL" THEN 150 ELSE IF DV$="NONE" THEN 1160
  70. 680  IF DV$<>"AMP" THEN 700
  71. 690  INPUT"Amplitude V1 and V2 ";V1,V2  : GOTO 190
  72. 700  IF DV$<>"COEF" THEN 720
  73. 710  INPUT "Coefficients A1, A2, A3, A4, A5 ";A1,A2,A3,A4,A5  : GOTO 190
  74. 720  IF DV$<>"FREQ" THEN 620
  75. 730  INPUT "Frequencies F1 and F2";F1,F2
  76. 740  GOTO 190
  77. 750  REM HARD COPY ROUTINE
  78. 760  GOSUB 910 :REM CLEAR SCREEN
  79. 770  PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT"       P r i n t i n g":PRINT:PRINT:PRINT:PRINT:PRINT
  80. 775  LPRINT,CHR$(12) :REM FORM FEED
  81. 780  GOSUB 840 :REM PRINT HEADING
  82. 790  FOR I=1 TO 30
  83. 800  LPRINT,I;")          Frequency = ";X(I),"Amplitude = ";H(I)
  84. 810  NEXT I
  85. 820  LPRINT,CHR$(12) :REM FORM FEED
  86. 830  GOTO 620
  87. 840  REM PRINT HEADING
  88. 850  LPRINT DV,:LPRINT DV,:LPRINT DV,:LPRINT DV,
  89. 860  LPRINT DV,"Intermodulation Products":LPRINT DV,
  90. 870  LPRINT DV,"Frequencies = ";F1;" and ";F2
  91. 880  LPRINT DV,"Amplitudes  = ";V1;" and ";V2
  92. 890  LPRINT DV,"Coefficients= ";A1;", ";A2;", ";A3;", ";A4;", and ";A5
  93. 900  RETURN
  94. 910  REM  CLEAR SCREEN ROUTINE
  95. 920  PRINTCHR$(26):RETURN
  96. 930  G=(A1*V1)+(3*A3*V1^3/4)+(3*A3*V1*V2^2/2)+(5*A5*V1^5/8)+(3*A5*V2^2*V1^3/2)+(9*A5*V1*V2^4/8):RETURN
  97. 940  G=(A1*V2)+(3*A3*V2^3/4)+(3*A3*V2*V1^2/2)+(5*A5*V2^5/8)+(3*A5*V1^2*V2^3/2)+(9*A5*V2*V1^4/8):RETURN
  98. 950  G=(A2*V1^2/2)+(A4*V1^4/2)+(A4*V1^2*V2^2/2):RETURN
  99. 960  G=(A2*V2^2/2)+(A4*V2^4/2)+(A4*V1^2*V2^2/2):RETURN
  100. 970  G=(A3*V1^3/4)+(5*A5*V1^5/16)+(A5*V2^2*V1^3/2):RETURN
  101. 980  G=(A3*V2^3/4)+(5*A5*V2^5/16)+(A5*V1^2*V2^3/2):RETURN
  102. 990  G=A4*V1^4/8:RETURN
  103. 1000  G=A4*V2^4/8:RETURN
  104. 1010  G=A5*V1^5/16:RETURN
  105. 1020  G=A5*V2^5/16:RETURN
  106. 1030  G=(A2*V1*V2)+(3*A4*V2*V1^3/4)+(3*A4*V1*V2^3/4):RETURN
  107. 1040  G=(3*A3*V2*V1^2/4)+(3*A5*V2*V1^4/4)+(3*A5*V1^2*V2^3/4):RETURN
  108. 1050  G=(3*A3*V1*V2^2/4)+(3*A5*V1*V2^4/4)+(3*A5*V2^2*V1^3/4):RETURN
  109. 1060  G=A4*V2*V1^3/4:RETURN
  110. 1070  G=A4*V1*V2^3/4:RETURN
  111. 1080  G=A4*V1^2*V2^2/4:RETURN
  112. 1090  G=A5*V2^2*V3^3/4:RETURN
  113. 1100  G=A5*V1^2*V2^3/4:RETURN
  114. 1110  G=3*A5*V2*V1^4/16:RETURN
  115. 1120  G=3*A5*V1*V2^4/16:RETURN
  116. 1130  REM DELAY ROUTINE
  117. 1140  FOR I=1 TO 5000:NEXT I
  118. 1150  RETURN
  119. 1160  REM ROUTINE FOR HARDCOPY/SCREEN DISPLAY SWITCH FO SAME DATA
  120. 1170  INPUT "Do you want Hard Copy ";DV$
  121. 1180  DV=0
  122. 1190  IF LEFT$(DV$,1)="Y" OR LEFT$(DV$,1)="y"THEN DV=2
  123. 1200  GOTO 490
  124. 2000  INPUT "Is this an 80 column or a 132 column printer";W
  125. 2010  OPTION #2,"W",W
  126. 2020  PRINT#2,CHR$(12)
  127. 2030  LIST#2
  128.