home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / w4mb / vol2 / basic / calc.asc < prev    next >
Text File  |  1996-06-30  |  17KB  |  430 lines

  1. 1 CLS
  2. 2 PRINT "   ***************************************************************"
  3. 3 PRINT "   *            RF AND  TRANSMISSION LINE CALCULATIONS           *"
  4. 4 PRINT "   *               PROGRAM  BY  R.P. HAVILAND, W4MB              *"
  5. 5 PRINT "   *                       COPYRGHT 1990                         *"
  6. 6 PRINT "   *          MINILAB BOOKS, DAYTONA BEACH, FL 32121-1086        *"
  7. 7 PRINT "   ***************************************************************"
  8. 8 DEF FNP (X) = INT(100 * X + .5) / 100: PI = 3.1415923#
  9. 9 DEF FNSINH (X) = (EXP(X) + EXP(-X)) / 2
  10. 10 DEF FNCOSH (X) = (EXP(X) - EXP(-X)) / 2
  11. 15 ON ERROR GOTO 64000
  12. 20 PRINT : PRINT " THE ROUTINES HERE ARE PRINARILY INTENDED FOR TRANSMISSION LINE PROBLEMS"
  13. 25 PRINT "  BUT ARE USEFUL FOR MANY GENERAL RF PROBLENS."
  14. 30 PRINT " ROUTINES ARE SELECTED BY CODE LETTER a-z and A-Z,"
  15. 35 PRINT "  OR BY A SEQUENCE OF LETTERS, WHICH WILL BE EXECUTED IN SUCCESSION."
  16. 40 PRINT "   MAXIMUM LENGTH OF SEQUENCE IS 255 LETTERS"
  17. 45 PRINT " IF A PARTICULAR OPERATIONS SET IS TO BE USED OFTEN, IT IS PROBABLY"
  18. 50 PRINT "  WORTHWHILE TO WRITE A SPECIAL INPUT-DRIVER-OUTPUT PROGRAM,"
  19. 55 PRINT "   SELECTING THE APPROPRIATE OPERATIONS FROM THE FULL SET."
  20. 60 PRINT " OPERATIONS ROUTINES AND TRANSMISSION LINE TYPES MAY BE ADDED."
  21. 65 PRINT "  USE CONTROL-C OR BREAK TO HALT PROGRAM."
  22. 70 INPUT " PRESS RETURN TO START"; T$
  23. 75 CLS
  24. 80 PRINT " ENTER LENGTH OF LINE, FEET": INPUT LL
  25. 85 PRINT "  ENTER LINE TYPE:NULL= RG-8A/U,"
  26. 90 PRINT "    OR ENTER TYPE, (RG-57/U, ETC), OR 300-TWIN OR 300-OPEN": INPUT TY$
  27. 100 PRINT : IF TY$ = "" THEN TY$ = "RG-8A/U"
  28. 110 IF TY$ = "RG-8A/U" THEN ZO = 50: ML = .21: XP = .57: PF = 29.5: VF = .66: GOTO 400
  29. 120 IF TY$ = "RG-8F/U" THEN ZO = 50: ML = .15: XP = .53: PF = 25.4: VF = .8: GOTO 400
  30. 130 IF TY$ = "RG-11A/U" THEN ZO = 75: ML = .15: XP = .53: PF = 20.6: VF = .66: GOTO 400
  31. 140 IF TY$ = "RG-58A/U" THEN ZO = 53.5: ML = .33: XP = .58: PF = 28.5: VF = .66: GOTO 400
  32. 150 IF TY$ = "RG-58F/U" THEN ZO = 53.5: ML = .31: XP = .51: PF = 28.5: VF = .79: GOTO 400
  33. 160 IF TY$ = "RG-59A/U" THEN ZO = 73: ML = .31: XP = .51: PF = 21: VF = .66: GOTO 400
  34. 170 IF TY$ = "RG-213/U" THEN ZO = 50: ML = .15: XP = .56: PF = 30.8: VF = .66: GOTO 400
  35. 180 IF TY$ = "RG-246/U" THEN ZO = 75: ML = .048: XP = .48: PF = 16.7: VF = .81: GOTO 400
  36. 190 IF TY$ = "RG-360/U" THEN ZO = 50: ML = .06: XP = .55: PF = 25: VF = .81: GOTO 400
  37. 200 IF TY$ = "30O-OPEN" THEN ZO = 300: ML = 8.999999E-03: XP = 1.12: PF = 5: VF = .95: GOTO 400
  38. 210 IF TY$ = "30O-TWIN" THEN ZO = 300: ML = .08: XP = .56: PF = 4.6: VF = .95: GOTO 400
  39. 216 CLS
  40. 300 PRINT " TYPE  IS NOT IN FILE. ENTER, IN ORDER"
  41. 310 PRINT " ZO,LOSS MULTIPLIIER, LOSS EXPONENT"
  42. 320 INPUT ZO, ML, XP
  43. 330 PRINT " ENTER IN ORDER"
  44. 340 PRINT " CAPACITY PER FOOT, VELOCITY FACTOR"
  45. 350 INPUT PF, VF
  46. 360 GOSUB 21800
  47. 400 PRINT : INPUT "ENTER FREQUENCY, MHZ (CHANGEABLE LATER)"; F
  48. 499 REM SUBROUTINES
  49. 500 CLS : PRINT "          GENERAL INPUT INSTRUCTIONS"
  50. 510 PRINT "  RESISTANCES,REACTANCES IN OHMS, INVERSE IN MILLIMHOS"
  51. 520 PRINT "    VARIABLES AS MAGNITUDE, ANGLE (DEGREES )FOR I/O"
  52. 530 PRINT "    INTERNAL ANGLES IN RADIANS"
  53. 540 PRINT "  PASSING REGISTERS:SM,SA:SN,SB, MAY BE CHANGED BY A ROUTINE"
  54. 550 PRINT "    HOLDING REGISTERS:HM,HA, NOT TO BE CHANGED BY A CALLED ROUTINE ROUTINE"
  55. 560 PRINT "      OTHER VARIABLES ARE GLOBAL"
  56. 570 PRINT "  ENTER OPERATION SYMBOL, LOWER OR UPPER CASE LETTER ONLY"
  57. 580 PRINT "   USE c FOR A chained SEQUENCE OF OPERATIONS"
  58. 590 INPUT " PRESS RETURN FOR AVAILABLE OPERATIONS."; T$
  59. 600 CLS : PRINT "a-ADD                A-SWR>ATTEN."   '6500, 19300
  60. 605 PRINT "b-(spare)            B-(spare)"
  61. 610 PRINT "c-CHAIN, SEQUENCE    C-REF COEFF>SWR"
  62. 615 PRINT "d-DIVIDE             D-WAVELEN>DEG"
  63. 620 PRINT "e-ENTER FILE         E-ELEMENT FACTOR"
  64. 625 PRINT "f-FILE TO DISK       F-WAVELEN>FREQ"        '7000, 19800
  65. 630 PRINT "g-ROTATE>GEN         G-GET FILE"
  66. 635 PRINT "h-(spare)            H-(spare)"
  67. 640 PRINT "i-INVERT             I-INPUT"
  68. 645 PRINT "l-ROTATE>LOAD        L-FREQ>WAVELEN"        '7600, 20400
  69. 650 PRINT "m-MULTIPLY           M-(spare)"
  70. 655 PRINT "o-ORDER FILE         O-OC ZIN"
  71. 660 PRINT "p->POLAR             P-PRINT FILE"
  72. 665 PRINT "q-SQ. ROOT           Q-QUIT"                '8100, 20900
  73. 670 PRINT "r->RECTANGULAR       R-PRINT RESULTS"
  74. 675 PRINT "s-SUBTRACT           S-SC ZIN"
  75. 680 PRINT "t-SET TEST VALUES    T-TEST LOOP"
  76. 685 PRINT "v-VARIABLES INPUT    V-SEQUENCE FILE VARIABLES"
  77. 690 PRINT "w-LOAD Z>SWR         W-POWER>SWR"           '8700, 21500
  78. 695 PRINT "x-XL                 X-XC"
  79. 700 PRINT "z-ZOC,ZSC>ZO         Z-ZA"
  80. 710 INPUT "ENTER COMMAND"; S$: SR = ASC(S$)
  81. 715 IF SR < 65 OR SR > 123 THEN 710
  82. 720 GOSUB 1000
  83. 730 GOTO 600
  84. 1000 IF SR < 75 THEN SR = SR - 64: GOTO 1230
  85. 1010 IF SR < 84 THEN SR = SR - 73: GOTO 1240
  86. 1020 IF SR < 91 THEN SR = SR - 82: GOTO 1250
  87. 1030 IF SR < 97 THEN 1300
  88. 1040 IF SR < 107 THEN SR = SR - 96: GOTO 1200
  89. 1050 IF SR < 117 THEN SR = SR - 106: GOTO 1210
  90. 1060 IF SR < 123 THEN SR = SR - 116: GOTO 1220
  91. 1070 GOTO 1300
  92. 1200 ON SR GOSUB 6500, 6600, 6700, 6800, 6900, 7000, 7100, 7200, 7300, 7400: GOTO 1300
  93. 1210 ON SR GOSUB 7500, 7600, 7700, 7800, 7900, 8000, 8100, 8200, 8300, 8400: GOTO 1300
  94. 1220 ON SR GOSUB 8500, 8600, 8700, 8800, 8900, 9000: GOTO 1300
  95. 1230 ON SR GOSUB 19300, 19400, 19500, 19600, 19700, 19800, 19900, 20000, 20100: GOTO 1300
  96. 1240 ON SR GOSUB 20200, 20300, 20400, 20500, 20600, 20700, 20800, 20900, 21000: GOTO 1300
  97. 1250 ON SR GOSUB 21100, 21200, 21300, 21400, 21500, 21600, 21700, 21800
  98. 1300 RETURN
  99. 6499 REM ADD ROUTINE
  100. 6500 GOSUB 8200
  101. 6505 HP = SM: HQ = SA
  102. 6510 SM = SN: SA = SB
  103. 6515 GOSUB 8200
  104. 6520 SM = SM + HP: SA = SA + HQ
  105. 6525 GOSUB 8000
  106. 6530 RETURN
  107. 6600 RETURN
  108. 6699 REM SEQUENCES
  109. 6700 INPUT "SEE NOTES AND ENTER COMMAND WORD"; W$
  110. 6705 FOR CH = 1 TO LEN(W$)
  111. 6710 S$ = MID$(W$, CH, 1): SR = ASC(S$)
  112. 6715 PRINT " COMPLETED: "; LEFT$(W$, CH - 1), "CURRENT OPERATION: "; S$
  113. 6720 GOSUB 1000
  114. 6725 NEXT CH
  115. 6730 INPUT "PRESS RETURN TO CONTINUE"; T$
  116. 6735 RETURN
  117. 6799 REM DIVISION ROUTINE
  118. 6800 SM = SM / SN: SA = SB - SA
  119. 6805 RETURN
  120. 6899 REM ENTER FILE VALUES
  121. 6900 INPUT "ENTER NUMBER OF DATA SETS TO INPUT, 0=CURRENT ARRAY"; TEM
  122. 6905 IF TEM = 0 THEN 6920
  123. 6910 CO = TEM
  124. 6915 DIM A(CO, 4): RO = 4: LR = RO: LC = CO
  125. 6920 IF CO = 0 THEN PRINT "NO ARRAY IN MEMORY"
  126. 6925 FOR N = 1 TO CO
  127. 6930 INPUT "ENTER FREQUENCY, MAGNITUDE, ANGLE (DEGREES)"; A(N, 0), A(N, 1), A(N, 2)
  128. 6935 NEXT N
  129. 6940 RETURN
  130. 6999 REM SAVE FILE
  131. 7000 INPUT "ENTER FILEPATH, FILE NAME ", FP$, NA$
  132. 7005 OPEN FP$ + NA$ + DATE$ FOR OUTPUT AS #2
  133. 7010 C$ = ","
  134. 7015 PRINT #2, NA$; C$; DATE$; C$; RO; C$; CO; C$; LR; C$; LC
  135. 7020 FOR N = 0 TO RO
  136. 7025 PRINT #2, A(N, 0); C$; A(N, 1); C$; A(N, 2); C$; A(N, 3); C$; A(N, 4)
  137. 7030 NEXT N
  138. 7035 CLOSE 2
  139. 7040 RETURN
  140. 7099 REM ROTATE TO GENERATOR
  141. 7100 FL = 0
  142. 7105 HM = SM: HA = SA
  143. 7110 SM = ZO: SA = ZP
  144. 7115 SN = ZM: SB = ZA
  145. 7120 GOSUB 7700
  146. 7125 SN = HM: SB = HA
  147. 7130 IF FL = 0 THEN 6500
  148. 7135 IF FL = 1 THEN 8300
  149. 7140 SN = HM: SB = HA
  150. 7145 HM = SM: HA = SA
  151. 7150 SM = ZM: SA = ZA
  152. 7155 GOSUB 7700
  153. 7160 SN = ZO: SB = ZP
  154. 7165 IF FL = 0 THEN 6500
  155. 7170 IF FL = 1 THEN 8300
  156. 7175 SN = HM: SB = HA
  157. 7180 GOSUB 6800
  158. 7185 SN = ZM: SB = ZP
  159. 7190 GOSUB 7700
  160. 7200 RETURN
  161. 7299 REM INVERT
  162. 7300 SM = 1 / SM: SA = -SA
  163. 7305 RETURN
  164. 7400 RETURN
  165. 7500 RETURN
  166. 7599 REM ROTATE TO LOAD
  167. 7600 FL = 1
  168. 7605 GOTO 7105
  169. 7699 REM MULTIPLY
  170. 7700 SM = SM * SN: SA = SA + SB
  171. 7705 RETURN
  172. 7800 RETURN
  173. 7899 REM ORDER ARRAY-SHELL SORT
  174. 7900 GA = 2 ^ (INT(LOG(RO / LOG(2))) - 1)
  175. 7905 FOR N = 1 TO RO - GA
  176. 7910 FOR M = N TO 1 STEP -GA
  177. 7915 IF A(M, 1) <= A(M + GA, 1) GOTO 7945
  178. 7920 FOR L = 1 TO 8
  179. 7925 TE = A(M, L)
  180. 7930 A(M, L) = A(M + GA, L)
  181. 7935 F(M + GA, L) = TE
  182. 7940 NEXT L: NEXT M
  183. 7945 NEXT N
  184. 7950 GA = INT(GA / 2)
  185. 7955 IF GA > 0 GOTO 7905
  186. 7960 RETURN
  187. 7999 REM TO POLAR
  188. 8000 TP = SM: TQ = SA: IF TP = 0 THEN TP = .00001
  189. 8005 SM = SQR(TP * TP + TQ * TQ)
  190. 8010 SA = ATN(TQ / TP)
  191. 8015 RETURN
  192. 8099 REM SQUARE ROOT
  193. 8100 SM = SQR(SM): SA = SA / 2
  194. 8110 RETURN
  195. 8199 REM TO RECTANGULAR
  196. 8200 TP = SM: TQ = SA
  197. 8205 SM = TP * COS(TQ): SA = TP * SIN(TQ)
  198. 8210 RETURN
  199. 8299 REM SUBTRACT
  200. 8300 SM = -SM
  201. 8305 GOSUB 6500
  202. 8310 SM = -SM
  203. 8315 RETURN
  204. 8399 REM TEST
  205. 8400 SM = 25: SA = 1: SN = 100: SB = PI / 4
  206. 8405 PRINT "INPUT VALUES ARE SET TO"
  207. 8410 PRINT "SM=25, SA=1 RADIAN=57.3 DEG., SN=100, SB=90 DEG"
  208. 8415 INPUT "PRESS RETURN TO CONTINUE"; T$
  209. 8420 RETURN
  210. 8500 RETURN
  211. 8599 REM VARIABLES INPUT
  212. 8600 INPUT "ENTER LINE LENGTH, FT"; T$: IF T$ <> "" THEN LL = VAL(T$)
  213. 8605 INPUT "ENTER FREQUENCY, MHZ"; T$: IF T$ <> "" THEN F = VAL(T$)
  214. 8610 RETURN
  215. 8615 RETURN
  216. 8699 REM SWR FROM ZL
  217. 8700 INPUT "ENTER LOAD IMPEDANCE, ANGLE, 0,0=USE REGISTER VALUES"; TEM1, TEM2
  218. 8705 IF TEM1 <> 0 THEN SM = TEM1: SA = TEM2
  219. 8710 SM = TEM1: SA = TEM2: SN = ZO: SB = 0
  220. 8715 GOSUB 6500 'ADD
  221. 8720 HM = SM: HB = SA
  222. 8725 SM = TEM1: SA = TEM2: SN = ZO: SB = 0
  223. 8730 GOSUB 8300 'SUB
  224. 8735 SN = HM: SB = HA
  225. 8740 GOSUB 8800  'DIV
  226. 8745 IF SA < 0 THEN SA = SA + PI
  227. 8750 SM = FNP(ABS(SM))
  228. 8755 PRINT " REF. COEFF="; FNP(SM); "AT ANGLE OF "; FNP(57.3 * SA); "DEGREES"
  229. 8760 PRINT " SWR="; (SM) / (1 - SM)
  230. 8765 INPUT "  PRESS RETURN TO CONTINUE"; T$
  231. 8770 RETURN
  232. 8799 REM XL
  233. 8800 INPUT "ENTER INDUCTANCE, MICROHENRIES"; SM
  234. 8805 SM = 2 * PI * F * SM: SA = PI / 2
  235. 8810 PRINT " INDUCTIVE REACTANCE;"; FNP(SM); "OHMS AT 90 DEGREES"
  236. 8815 INPUT "PRESS RETURN TO CONTINUE"; T$
  237. 8820 RETURN
  238. 8900 RETURN
  239. 8999 REM ZOC,ZSC>ZO
  240. 9000 INPUT "ENTER SHORT-CIRCUITED INPUT IMPEDANCE, ANGLE, DEG"; SM, SA
  241. 9005 INPUT "ENTER OPEN-CIRCUITED INPUT IMPEDANCE, ANGLE, DEG"; SN, SB
  242. 9010 SA = SA / 57.3: SB = SB / 57.3
  243. 9015 GOSUB 7700: GOSUB 8100
  244. 9020 PRINT "ZO-MAG", , "ZO-ANG": PRINT SM, , SA
  245. 9025 INPUT "ENTER S=SAVE AS GLOBAL VALUE, R=RETURN"; S$
  246. 9030 IF S$ = "S" THEN ZO = SM: ZP = SA
  247. 9035 RETURN
  248. 19299 REM  ATTENUATION FROM OPEN (OR SHORT) CIRCUIT SWR
  249. 19300 INPUT "ENTER MEASURED SWR"; SW: IF SW = 1 THEN SW = 1.000001
  250. 19305 AT = 2.3 * LOG((SW + 1) / (SW - 1))
  251. 19310 PRINT " ATTENUATION="; FNP(AT); "DB"
  252. 19315 INPUT "PRESS RETURN TO CONTINUE"; T$
  253. 19320 RETURN
  254. 19400 RETURN
  255. 19499 REM REF COEFF TO SWR
  256. 19500 IF SM < 0 THEN SM = -SM
  257. 19505 SM = (1 + SM) / (1 - SM)
  258. 19510 RETURN
  259. 19599 REM DEG FROM FREQ, RF LENGTH
  260. 19600 INPUT "ENTER LINE LENGTH (FEET), VF, 0,0=CURRENT VALUES"; TEM1, TEM2
  261. 19605 IF TEM1 = 0 THEN TEM1 = LL: TEM2 = VF
  262. 19610 LLLAM = TEM1 * F / 984 / TEM2
  263. 19615 LLDEG = LLLAM * 2 * PI * 57.3
  264. 19620 SM = LLLAM
  265. 19625 PRINT "LENGTH, WAVELENGTHS="; FNP(LLLAM)
  266. 19630 PRINT "            DEGREES="; FNP(LLDEG)
  267. 19635 INPUT "PRESS RETURN TO CONTINUE"; T$
  268. 19640 RETURN
  269. 19699 REM ELEMENTS
  270. 19700 PRINT "ENTER ELEMENT DIA., INCHES": INPUT DI
  271. 19705 IF DI <= 0 THEN 19700
  272. 19710 PRINT "ENTER ELEMENT LENGTH, INCHES": INPUT EL
  273. 19715 OM = 2 * LOG(2 * EL / DI)
  274. 19720 PRINT "ELEMENT FACTOR OMEGA="; FNP(OM)
  275. 19725 INPUT "PRESS RETURN TO CONTINUE"; T$
  276. 19730 RETURN
  277. 19799 REM WAVELENGTH TO FREQUENCY
  278. 19800 INPUT "ENTER WAVELENGTH, METERS, 0=USE PASSING REGISTER VALUE"; TEM
  279. 19805 IF TEM <> 0 THEN SM = 300 / TEM: GOTO 19820
  280. 19810 PRINT "WAVELENGTH="; SM; ";"; METERS; ",,"
  281. 19815 SM = 300 / SM
  282. 19820 PRINT "FREQUENCY="; SM; "MHZ"
  283. 19825 INPUT "PRESS RETURN TO CONTINUE"; T$
  284. 19830 RETURN
  285. 19899 REM GET FILE
  286. 19900 INPUT "ENTER FILEPATH FOR DIRECTORY, Q=QUIT, OR NULL TO SKIP"; T$
  287. 19905 IF T$ = "" THEN 19920
  288. 19910 IF T$ = "Q" THEN 19960
  289. 19915 CLS : FILES T$
  290. 19920 INPUT "INPUT FILEPATH, FILE NAME, FILEDATE", FP$, NA$, DA$
  291. 19925 OPEN FP$ + NA$ + DA$ FOR INPUT AS #1
  292. 19930 INPUT #1, NA$, DA$, RO, CO, LR, LC
  293. 19935 FOR N = 0 TO RO
  294. 19940 FOR M = 0 TO CO
  295. 19945 INPUT #2, A(N, M)
  296. 19950 NEXT M: NEXT N
  297. 19955 CLOSE 2
  298. 19960 RETURN
  299. 20000 RETURN
  300. 20099 REM INPUT
  301. 20100 PRINT "   ROUTINE FOR DATA INPUT"
  302. 20110 INPUT "1ST MAGNITUDE, ANGLE,DEG"; SM, SA: SA = SA * PI / 180
  303. 20120 INPUT "2ND MAGNITUDE, ANGLE,DEG, OR NULLS"; SN, SB: SB = SB * PI / 180
  304. 20130 RETURN
  305. 20200 RETURN
  306. 20300 RETURN
  307. 20399 REM FREQUENCY TO WAVELENGTH
  308. 20400 INPUT "ENTER FREQUENCY, MHZ, 0=USE CURRENT VALUE"; TEM
  309. 20405 IF TEM = 0 THEN SM = 984 / F: GOTO 20415
  310. 20410 SM = 984 / TEM
  311. 20415 PRINT " FREQUENCY="; FNP(984 / SM)
  312. 20420 PRINT "  WAVELENGTH="; FNP(SM); "FEET"
  313. 20425 PRINT "          ="; FNP(SM / 984 * 300); "METERS"
  314. 20430 INPUT " PRESS RETURN TO CONTINUE"; T$
  315. 20435 RETURN
  316. 20500 RETURN
  317. 20600 RETURN
  318. 20699 REM INPUT Z, OPEN LINE
  319. 20700 INPUT "ENTER LINE LENGTH, FEET, 0=CURRENT LENGTH"; TEM
  320. 20705 IF TEM = 0 THEN TEM = LL
  321. 20710 LLRAD = TEM * F / 984 * 2 * PI / VF: PRINT "LINE LENGTH="; FNP(LLRAD); "RADIANS"
  322. 20715 SM = ZO / TAN(LLRAD)
  323. 20720 SA = -PI / 4: IF SM < 0 THEN SM = ABS(SM): SA = -SA
  324. 20725 PRINT "AT FREQUENCY="; F; "MHZ"
  325. 20730 PRINT "LINE INPUT IMPEDANCE IS"; FNP(SM); "OHMS AT"; FNP(57.3 * SA); "DEGREES"
  326. 20735 RETURN
  327. 20799 REM PRINT FILE
  328. 20800 PRINT
  329. 20805 PRINT , , "INPUT VALUE", , "OUTPUT VALUES"
  330. 20810 PRINT "#  "; "FREQ", "RESIST.", "REACT.", "RESIST.", "REACT."
  331. 20815 FOR N = 1 TO RO
  332. 20820 PRINT N; FNP(A(0, N)), FNP(A(1, N)), FNP(A(2, N)), FNP(A(3, N)), FNP(A(4, N))
  333. 20825 NEXT N
  334. 20850 INPUT "PRESS RETURN TO CONTINUE"; T$
  335. 20855 RETURN
  336. 20899 REM QUIT
  337. 20900 INPUT "PRESS RETURN TO QUIT, ANY OTHER +RETURN =RESUME"; T$
  338. 20910 IF T$ <> "" THEN RETURN
  339. 20920 STOP
  340. 20999 REM RESULTS PRINT
  341. 21000 PRINT "1ST MAGNITUDE AND ANGLE (DEGREES) ARE"; , SM, SA * 180 / PI
  342. 21010 PRINT "2ND MAGNITUDE AND ANGLE (DEGREES) ARE"; , SN, SB * 180 / PI
  343. 21020 INPUT "PRESS RETURN TO CONTINUE"; T$
  344. 21030 RETURN
  345. 21099 REM INPUT Z, SHORTED LINE
  346. 21100 INPUT "ENTER LINE LENGTH, FEET, 0=CURRENT LENGTH"; TEM
  347. 21105 IF TEM = 0 THEN TEM = LL
  348. 21110 LLRAD = TEM * F / 984 * 2 * PI / VF: PRINT "LINE LENGTH="; FNP(LLRAD); "RADIANS"
  349. 21115 SM = ZO * TAN(LLRAD)
  350. 21120 SA = PI / 4: IF SM < 0 THEN SM = ABS(SM): SA = -SA
  351. 21125 PRINT "AT FREQUENCY="; F; "MHZ"
  352. 21130 PRINT "LINE INPUT IMPEDANCE IS"; FNP(SM); "OHMS AT"; FNP(57.3 * SA); "DEGREES"
  353. 21135 RETURN
  354. 21199 REM TEST WITH INPUT
  355. 21200 PRINT " TEST MODE SET, REPEATS UNTIL TERMINATED"
  356. 21205 INPUT "ENTER ROUTINE CODE TO TEST, UCASE Q=MAIN MENU"; S$: SR = ASC(S$)
  357. 21210 IF SR < 65 OR SR > 218 THEN 21200
  358. 21215 IF S$ = "Q" THEN RETURN
  359. 21220 INPUT "ENTER 1ST TEST MAGNITUDE, ANGLE (DEG), NULLS=OLD"; SM$, SA$
  360. 21225 IF SM$ <> "" THEN SM = VAL(SM$): SA = VAL(SA$) / 180 * PI
  361. 21230 INPUT "ENTER 2ND TEST MAGNITUDE, ANGLE (DEG), NULLS=OLD"; SN$, SB$
  362. 21235 IF SM$ <> "" THEN SN = VAL(SN$): SB = VAL(SB$) / 180 * PI
  363. 21240 PRINT "INPUT DATA (ANGLE IN RADIANS)": GOSUB 21000
  364. 21245 GOSUB 1000
  365. 21250 PRINT "OUTPUT RESULTS": GOSUB 21000
  366. 21255 GOTO 21200
  367. 21300 RETURN
  368. 21399 REM SEQUENCING OF VARIABLES IN A FILE
  369. 21400 INPUT "SEE NOTES AND ENTER COMMAND WORD"; W$
  370. 21405 FOR N = 1 TO CO
  371. 21410 F = A(N, 0): SM = A(N, 1): SA = A(N, 2)
  372. 21415 GOSUB 6705
  373. 21420 A(N, 3) = SM: A(N, 4) = SA
  374. 21425 NEXT N
  375. 21430 RETURN
  376. 21499 REM SWR,REF COEF
  377. 21500 INPUT "FORWARD AND REFLECTED POWER, WATTS"; FWD, REF
  378. 21505 RAT = REF / FWD
  379. 21510 IF RAT >= 1 THEN PRINT "IMPOSSIBLE CONDITION": GOTO 21540
  380. 21515 RAT = SQR(RAT)
  381. 21520 SWR = (1 + RAT) / (1 - RAT)
  382. 21525 RHO = (SWR - 1) / (SWR + 1)
  383. 21530 PRINT " SWR="; FNP(SWR)
  384. 21535 PRINT "   REF. COEFF. RHO="; FNP(RHO)
  385. 21540 INPUT "PRESS RETURN TO CONTINUE"; T$
  386. 21545 RETURN
  387. 21599 REM XC
  388. 21600 INPUT "ENTER CAPACITY, PICOFARADS"; SM
  389. 21605 IF SM = 0 THEN 21600
  390. 21610 SM = 1000000! / (2 * PI * F * SM): SA = -PI / 2
  391. 21615 PRINT " CAPACATIVE REACTANCE;"; FNP(SM); "OHMS AT -90 DEGREES"
  392. 21620 INPUT "PRESS RETURN TO CONTINUE"; T$
  393. 21630 RETURN
  394. 21700 RETURN
  395. 21799 REM DO Z
  396. 21800 LO = ML * F ^ XP * LL / 100
  397. 21805 AL = LO / 8.686
  398. 21810 BE = LL * F * 2 * PI / (984 * VF)
  399. 21815 TP = EXP(4 * AL) + 1 + 2 * EXP(2 * AL) * COS(2 * BE)
  400. 21820 SM = (EXP(4 * AL) - 1) / TP
  401. 21825 SA = 2 * EXP(2 * AL) * SIN(2 * BE) / TP
  402. 21830 GOSUB 8000
  403. 21835 SM = FNCOSH(AL) * COS(BE)
  404. 21840 SA = FNSINH(AL) * SIN(BE)
  405. 21845 GOSUB 8000
  406. 21850 SN = SM
  407. 21855 SB = SA
  408. 21860 SM = FNSINH(AL) * COS(BE)
  409. 21865 SA = FNCOSH(AL) * SIN(BE)
  410. 21870 GOSUB 8000
  411. 21875 GOSUB 6800
  412. 21880 ZM = SM
  413. 21885 ZA = SA
  414. 21890 RETURN
  415. 64000 PRINT "  ERROR"; ERR; "AT LINE"; ERL
  416. 64010 IF ERL = 6710 THEN ERASE A: RESUME
  417. 64020 IF ERL = 6800 THEN SM = .000001: RESUME
  418. 64030 IF ERL = 7005 THEN RESUME 7000
  419. 64040 IF ERL = 7300 THEN SM = .000001: RESUME
  420. 64050 IF ERL = 19800 THEN SM = .000001: RESUME
  421. 64060 IF ERL = 19925 THEN RESUME 19900
  422. 64070 IF ERL = 6800 THEN SM = .000001: RESUME
  423. 64080 IF ERL = 7900 AND ERR = 5 THEN PRINT "NO ARRAY IN MEMORY"
  424. 64090 INPUT "PRESS RETURN TO RETRY, OR Q + RETURN TO QUIT"; T$
  425. 64200 PRINT "NON-RECOVERABLE ERROR IN LINE"; ERL
  426. 64210 INPUT "PRESS RETURN TO RETRY, OR Q + RETURN TO QUIT"; T$
  427. 64220 IF T$ <> "Q" THEN RESUME 600
  428. 64300 STOP
  429.  
  430.