home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / hamstuff / smith.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-06-13  |  3.1 KB  |  71 lines

  1. 10  CLEAR:DEF SEG:KEY OFF:DEFINT I,J,K,M,N: FALSE = 0:TRUE = NOT FALSE:CLS:COLOR 7,0
  2. 20  PRINT STRING$(40,"#");:LOCATE 2,1: PRINT"#"TAB(40)"#"
  3. 30  PRINT "#    DIGITAL SMITH CHART by AA4L";:LOCATE ,40:PRINT "#"
  4. 40  PRINT"#"TAB(40)"#":PRINT "#    October 8th 1982"TAB(40)"#"
  5. 50  PRINT"#" TAB(40) "#":PRINT "#    Public Domain" TAB(40)"#"
  6. 60  PRINT "#" TAB(40) "#":PRINT STRING$(40,"#")
  7. 62  PRINT :PRINT :COLOR 15,0:PRINT "Note: Calculations are TOWARDS GENERATOR FROM KNOWN POINT!!"
  8. 63  PRINT "Values TOWARD LOAD may be derived by analyzing data backwards from"
  9. 64  PRINT "the point 180 degrees from the known point.":COLOR 7,0
  10. 70  PRINT :PRINT :BEEP:PRINT "Any Key"
  11. 80  ANY$=INKEY$: IF ANY$="" THEN GOTO 80
  12. 90  CLS
  13. 100  BEEP:INPUT "Line Z0 {default is 50}==> ";Z0:IF Z=0 THEN Z0=50
  14. 110  BEEP:PRINT :INPUT "Known R ==> ";R0
  15. 120  BEEP:PRINT :INPUT "Known X===> ";X0
  16. 130  BEEP:PRINT :INPUT "Calculation start at: (deg) {default 0} ";STRT
  17. 140  BEEP:PRINT :INPUT "Calculation end at: (deg) {default 180} ";ENDC:IF ENDC =0 THEN ENDC =180 ELSE IF ENDC > 180 THEN ENDC=180
  18. 150  BEEP:PRINT:INPUT "Calculation interval (deg) {default 10} ";DINTV: IF DINTV=0 THEN DINTV =10
  19. 160  BEEP:PRINT :INPUT "Frequency (mHz) {default is 7.15} ==> ";FREQ: IF FREQ=0 THEN FREQ=7.15
  20. 165  BEEP:PRINT :INPUT"Velocity factor {default 0.66} ==> ";VF:IF VF=0 THEN VF=0.66
  21. 170  BEEP:PRINT:INPUT "Hardcopy (y/n) {default no} ";PRT$: IF PRT$="y" OR PRT$ ="Y" THEN PRT = TRUE ELSE PRT = FALSE
  22. 175  IF PRT THEN GOTO 2000
  23. 180  GOSUB 1000
  24. 200  R0=R0/Z0:X0=X0/Z0
  25. 300  FOR THETA = STRT TO ENDC STEP DINTV
  26. 310  THETA1 =THETA: IF THETA1 >89.99 AND THETA1 <=90 THEN THETA1=89.99
  27. 320  IF THETA1<90.01 AND THETA1 => 90 THEN THETA1 = 90.01
  28. 330  TN=TAN(THETA1*3.14159/180)
  29. 340  R=Z0*R0*(1+TN*TN)/((1-X0*TN)*(1-X0*TN)+(R0*TN)*(R0*TN))
  30. 350  X=Z0*(X0*(1-TN*TN)+(1-(R0*R0)-(X0*X0))*TN)/((1-X0*TN)*(1-X0*TN)+(R0*TN)*(R0*TN))
  31. 352  IF R>9999 THEN R=9999
  32. 353  IF X>9999 THEN X=9999
  33. 354  IF X<-9999 THEN X=-9999
  34. 360  G=R/(R*R + X*X):B= -X/(R*R + X*X)
  35. 361  IF G>9.999 THEN G=9.999
  36. 362  IF B>9.999 THEN B=9.999
  37. 365  IF PRT GOTO 375
  38. 370  PRINT SPC(2);:PRINT USING"###.#";THETA;:PRINT SPC(2)"|"SPC(4);:PRINT USING"#####.##";R;:PRINT SPC(2)"|"SPC(4);:PRINT USING"#####.##";X;:PRINT SPC(2)"|"SPC(7);:PRINT USING"#.###";G;:PRINT SPC(2)"|"SPC(6);:PRINT USING"#.###";B;:PRINT SPC(2)"|";
  39. 371  GOTO 380
  40. 375  LPRINT SPC(2);:LPRINT USING"###.#";THETA;:LPRINT SPC(2)"|"SPC(4);:LPRINT USING"#####.##";R;:LPRINT SPC(2)"|"SPC(4);:LPRINT USING"#####.##";X;:LPRINT SPC(2)"|"SPC(7);:LPRINT USING"#.###";G;:LPRINT SPC(2)"|"SPC(6);:LPRINT USING"#.###";B;
  41. 376  LPRINT SPC(2)"|";
  42. 380  LENG=(THETA/(0.367*FREQ))*VF:LENGFT=INT(LENG):LENGIN=12*(LENG-LENGFT)
  43. 385  IF PRT GOTO 395
  44. 390  PRINT SPC(1);:PRINT USING"###";LENGFT;:PRINT"'";:PRINT USING "##.#";LENGIN;:PRINT CHR$(34)
  45. 391  GOTO 400
  46. 395  LPRINT SPC(1);:LPRINT USING"###";LENGFT;:LPRINT"'";:LPRINT USING "##.#";LENGIN;:LPRINT CHR$(34)
  47. 396  GOTO 500
  48. 400  IF CSRLIN<24 THEN GOTO 500
  49. 410  BEEP
  50. 420  WT$=INKEY$:IF WT$="" THEN GOTO 420
  51. 430  CLS:GOSUB 1000
  52. 500  NEXT
  53. 505  IF PRT THEN GOTO 530
  54. 510  BEEP:PRINT :PRINT "any key":
  55. 520  WT$=INKEY$:IF WT$=""THEN GOTO 520
  56. 530  R0=R0*Z0:X0=X0*Z0:RHO=SQR(((R0-Z0)*(R0-Z0)+X0*X0)/((Z0+R0)*(Z0+R0)+X0*X0)):SWR=(1+RHO)/(1-RHO)
  57. 535  IF PRT THEN GOTO 545
  58. 540  CLS: PRINT"Freq ==> ";FREQ:PRINT :PRINT "rho ==>   ";:PRINT USING"#.###";RHO:PRINT:PRINT"vswr ==> ";:PRINT USING"##.##";SWR
  59. 541  GOTO 550
  60. 545  LPRINT:LPRINT"Freq ==> ";FREQ:LPRINT :LPRINT "rho ==>   ";:LPRINT USING"#.###";RHO:LPRINT:LPRINT"vswr ==> ";:LPRINT USING"##.##";SWR
  61. 546  LPRINT CHR$(12)
  62. 550  BEEP:PRINT:PRINT"Again? (y/n)"
  63. 560  YN$=INKEY$:IF YN$=""THEN GOTO 560 ELSE IF YN$="y" OR YN$="Y" THEN GOTO 90 ELSE CHAIN "MENUB.BAS"
  64. 999  CHAIN "MENUB.BAS"
  65. 1000  CLS:COLOR 0,7:PRINT SPACE$(80);:LOCATE 1,1
  66. 1010  PRINT TAB(3) "Deg" TAB(10) "|      R" TAB(25) "|      X" TAB(40) "|      G" TAB(55) "|      B" TAB(69) "|   Length":COLOR 7,0
  67. 1020  RETURN
  68. 1999  CHAIN "MENUB.BAS"
  69. 2000  LPRINT TAB(3) "Deg" TAB(10) "|      R" TAB(25) "|      X" TAB(40) "|      G" TAB(55) "|      B" TAB(69) "|   Length"
  70. 2010  LPRINT STRING$ (80,"*");:GOTO 200
  71.