home *** CD-ROM | disk | FTP | other *** search
/ World of Ham Radio 1997 / WOHR97_AmSoft_(1997-02-01).iso / basic / smith.bas < prev    next >
BASIC Source File  |  1997-02-01  |  4KB  |  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=.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.00999 AND THETA1 => 90 THEN THETA1 = 90.00999
  28. 330 TN=TAN(THETA1*3.141592654#/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.999001 THEN G=9.999001
  36. 362 IF B>9.999001 THEN B=9.999001
  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/(.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.