home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Software / ANTENNA-SCALE (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  7KB  |  205 lines

  1. 10 REM PARASITIC ANTENNA SCALING PROGRAM (C64)
  2. 20 REM FOR ANY QUAD, YAGI OR QUAGI OF TWO OR MORE ELEMENTS.
  3. 30 OPEN15,8,15
  4. 40 OPEN13,4:REM VIC PRINTER
  5. 50 DIM A(25),E(25):B2=0:CM=2.54
  6. 60 CLS$=CHR$(147):REM CLEAR-SCREEN COMMAND
  7. 70 PRINT CLS$
  8. 80 INV$=CHR$(18):REM VIDEO-INVERSE COMMAND
  9. 90 NML$=CHR$(146):REM VIDEO-NORMAL COMMAND
  10. 100 PRINT " ";INV$;"                                      "
  11. 110 PRINT " ";INV$;"       ANTENNA SCALING PROGRAM        "
  12. 120 PRINT " ";INV$;"                                      ":PRINT NML$
  13. 130 PRINT " HERE ARE YOUR OPTIONS--"
  14. 140 PRINT "    ENTER DIMENSIONS AND SCALE THEM"
  15. 150 PRINT "       TO A NEW FREQUENCY NOW (SCALE)"
  16. 160 PRINT "    CREATE A DATA FILE WITH STANDARD"
  17. 170 PRINT "       DIMENSIONS TO USE LATER (CREATE)"
  18. 180 PRINT "    READ DATA FROM A FILE AND SCALE IT"
  19. 190 PRINT "       TO A NEW FREQUENCY (READ)"
  20. 200 PRINT:PRINT " ENTER 'SCALE','CREATE' OR 'READ'":INPUT O$
  21. 210 IF O$="READ" THEN GOSUB1920:GOTO550
  22. 220 IF O$<>"CREATE" THEN IF O$<>"SCALE" THEN130
  23. 230 REM DATA ENTRY SECTION
  24. 240 PRINT CLS$:REM CLEAR SCREEN
  25. 250 PRINT:PRINT
  26. 260 PRINT "          ENTER THE DIMENSIONS          "
  27. 270 PRINT "        FOR THE ORIGINAL ANTENNA        "
  28. 280 PRINT:PRINT:PRINT "HOW MANY DIRECTORS (IF NONE,'0')":INPUT N
  29. 290 IF N>25 THEN PRINT "TOO MANY. 25 MAXIMUM":GOTO280
  30. 300 IF N<1 THEN360
  31. 310 FOR J=1 TO N
  32. 320 PRINT:PRINT "ENTER THE LENGTH (IN INCHES)"
  33. 330 PRINT "   OF DIRECTOR #";J;
  34. 340 INPUT E(J)
  35. 350 NEXT J
  36. 360 PRINT:PRINT "HOW LONG IS THE DRIVEN ELEMENT":INPUT D:PRINT
  37. 370 PRINT "HOW LONG IS THE REFLECTOR":INPUT R:PRINT:PRINT:PRINT
  38. 380 PRINT:PRINT
  39. 390 PRINT "      NOW ENTER THE ELEMENT SPACING      ":PRINT
  40. 400 PRINT:PRINT:INPUT "REFLECTOR TO DRIVEN ELEMENT";B1
  41. 410 IF N<1 THEN480
  42. 420 PRINT:INPUT "DRIVEN ELEMENT TO DIRECTOR #1";B2
  43. 430 IF N<2 THEN480
  44. 440 FOR J=1 TO (N-1)
  45. 450 PRINT:PRINT "DIRECTOR #";J;"TO DIRECTOR #";J+1
  46. 460 INPUT A(J)
  47. 470 NEXT J
  48. 480 PRINT:PRINT "WHAT IS THE ORIGINAL FREQUENCY (IN MHZ)":INPUT F1
  49. 490 PRINT:PRINT "WHAT IS THE ELEMENT DIAMETER (INCHES)"
  50. 500 PRINT "(USE TYPICAL DIAMETER IF IT VARIES)"
  51. 510 INPUT R1
  52. 520 IF O$="CREATE" THEN1710
  53. 530 REM INFORMATION NEEDED TO SCALE TO A NEW FREQUENCY
  54. 540 PRINT
  55. 550 PRINT:PRINT  "        NOW DESCRIBE THE NEW ANTENNA        "
  56. 560 PRINT:INPUT "ENTER THE NEW FREQUENCY (IN MHZ)";F2
  57. 570 SF=F1/F2:REM SCALING FACTOR
  58. 580 PRINT:PRINT "DO YOU WANT THE DIMENSIONS CORRECTED"
  59. 590 PRINT "FOR LENGTH-TO-DIAMETER RATIO (Y/N)":INPUT A$
  60. 600 IF A$<>"Y" THEN630
  61. 610 PRINT :PRINT "WHAT IS THE NEW ELEMENT DIAMETER"
  62. 620 INPUT "(IN INCHES)";R2
  63. 630 IF SF<1.25 AND S>.8 THEN810
  64. 640 PRINT CLS$:REM CLEAR SCREEN
  65. 650 PRINT:PRINT
  66. 660 PRINT:PRINT
  67. 670 PRINT "****************************************"
  68. 680 PRINT "                WARNING                 "
  69. 690 PRINT "****************************************"
  70. 700 PRINT:PRINT:PRINT NML$:REM VIDEO NORMAL
  71. 710 PRINT "SCALING ANTENNAS MATHEMATICALLY IS A"
  72. 720 PRINT "TRICKY BUSINESS.  THERE ARE NUMEROUS"
  73. 730 PRINT "VARIABLES THAT AFFECT THE OUTCOME.  IF"
  74. 740 PRINT "THE CHANGE IN FREQUENCY IS SMALL, THEY"
  75. 750 PRINT "MAY BE IGNORED.  BUT WHEN A TWO-TO-ONE"
  76. 760 PRINT "OR GREATER CHANGE IS INVOLVED, SOME"
  77. 770 PRINT "EXPERIMENTATION WILL BE NECESSARY, EVEN"
  78. 780 PRINT "IF LENGTH-TO-DIAMETER RATIO IS TAKEN"
  79. 790 PRINT "INTO ACCOUNT IN THE SCALING."
  80. 800 PRINT:PRINT:PRINT
  81. 810 PRINT:PRINT "DO YOU WANT A HARD COPY PRINTOUT? (Y/N)":INPUT LP$
  82. 820 X=R2/R1
  83. 830 L1=D/(.975-.6*R1/D)
  84. 840 L2=L1*SF
  85. 850 L3=L2*(.975-.6*R2/L2)
  86. 860 S=L3/D
  87. 870 IF A$<>"Y" THEN S=SF
  88. 880 REM DISPLAY AND PRINTOUT OF RESULTS
  89. 890 PRINT CLS$:REM CLEAR SCREEN
  90. 900 PRINT:PRINT
  91. 910 DEF FNA(X)=INT(X*100+.5)/100
  92. 920 DEF FNB(X)=INT(S*X*100+.5)/100
  93. 930 DEF FNC(X)=INT(CM*S*X*100+.5)/100
  94. 940 DEF FND(X)=INT(SF*X*100+.5)/100
  95. 950 GOSUB1000:REM VIDEO DATA DISPLAY
  96. 960 IF LP$<>"Y" THEN1880
  97. 970 GOSUB1360:REM PRINTING SUBROUTINE
  98. 980 GOTO1880
  99. 990 REM VIDEO DISPLAY
  100. 1000 PRINT "ANTENNA SCALING FROM ";F1;" TO ";F2;"MHZ"
  101. 1010 PRINT
  102. 1020 IF O$="READ" THEN PRINT TAB(9)"ANTENNA TYPE ";FILE$:PRINT
  103. 1030 F1$="ELE  ORIG L(IN)   NEW L(IN)   NEW L(CM)"
  104. 1040 PRINT F1$:PRINT
  105. 1050 PRINT "REFL";SPC(10-LEN(STR$(FNA(R))));FNA(R);
  106. 1060 PRINT SPC(12-LEN(STR$(FNB(R))));FNB(R);SPC(11-LEN(STR$(FNC(R))));FNC(R)
  107. 1070 PRINT "DE";SPC(12-LEN(STR$(FNA(D))));FNA(D);SPC(12-LEN(STR$(FNB(D))));
  108. 1080 PRINT FNB(D);SPC(11-LEN(STR$(FNC(D))));FNC(D)
  109. 1090 IF N<1 THEN1160
  110. 1100 FOR J=1 TO N
  111. 1110 PRINT "DIR";SPC(11-LEN(STR$(FNA(E(J)))));FNA(E(J));
  112. 1120 PRINT SPC(12-LEN(STR$(FNB(E(J)))));FNB(E(J));
  113. 1130 PRINT SPC(11-LEN(STR$(FNC(E(J)))));FNC(E(J))
  114. 1140 NEXT J
  115. 1150 AA$="":INPUT "<CR> TO CONTINUE";AA$
  116. 1160 PRINT:PRINT
  117. 1170 PRINT TAB(7) "INTER-ELEMENT SPACING DATA":PRINT
  118. 1180 F4$="ELE     ORIG SPACING (IN)      NEW (IN)"
  119. 1190 PRINT F4$:PRINT
  120. 1200 PRINT "REF-DE";SPC(15-LEN(STR$(FNA(B1))));FNA(B1);
  121. 1210 PRINT SPC(16-LEN(STR$(FND(B1))));FND(B1)
  122. 1220 IF N<1 THEN1300
  123. 1230 PRINT "DE-D1";SPC(16-LEN(STR$(FNA(B2))));FNA(B2);
  124. 1240 PRINT SPC(16-LEN(STR$(FND(B2))));FND(B2)
  125. 1250 IF N<2 THEN1300
  126. 1260 FOR J=1 TO N-1
  127. 1270 PRINT "D";J;"-D";J+1;SPC(12-LEN(STR$(FNA(A(J)))));FNA(A(J));
  128. 1280 PRINT SPC(16-LEN(STR$(FND(A(J)))));FND(A(J))
  129. 1290 NEXT J
  130. 1300 PRINT:PRINT
  131. 1310 IF A$="Y" THEN PRINT "LENGTH-TO-DIAMETER RATIO CORRECTED"
  132. 1320 PRINT:PRINT "NOTE: MATHEMATICALLY DERIVED DIMENSIONS"
  133. 1330 PRINT "MAY REQUIRE FINE TUNING IN THE FIELD."
  134. 1340 RETURN
  135. 1350 REM HARD COPY PRINTOUT
  136. 1360 PRINT#13,"";SPC(14)"ANTENNA SCALING FROM ";F1;" TO ";F2;"MHZ"
  137. 1370 PRINT#13,"":PRINT#13,""
  138. 1380 IF O$="READ" THEN PRINT#13,"";SPC(22)"ANTENNA TYPE ";FILE$:PRINT#13,""
  139. 1390 PRINT#13,F1$:PRINT#13,""
  140. 1400 PRINT#13,"REFL";SPC(10-LEN(STR$(FNA(R))));FNA(R);
  141. 1410 PRINT#13,"";SPC(12-LEN(STR$(FNB(R))));FNB(R);
  142. 1420 PRINT#13,"";SPC(12-LEN(STR$(FNC(R))));FNC(R)
  143. 1430 PRINT#13,"DE";SPC(12-LEN(STR$(FNA(D))));FNA(D);
  144. 1440 PRINT#13,"";SPC(12-LEN(STR$(FNB(D))));FNB(D);
  145. 1450 PRINT#13,"";SPC(12-LEN(STR$(FNC(D))));FNC(D)
  146. 1460 IF N<1 THEN1520
  147. 1470 FOR J=1 TO N
  148. 1480 PRINT#13,"DIR";SPC(11-LEN(STR$(FNA(E(J)))));FNA(E(J));
  149. 1490 PRINT#13,"";SPC(12-LEN(STR$(FNB(E(J)))));FNB(E(J));
  150. 1500 PRINT#13,"";SPC(12-LEN(STR$(FNC(E(J)))));FNC(E(J))
  151. 1510 NEXT J
  152. 1520 PRINT#13,"":PRINT#13,"":PRINT#13,""
  153. 1530 PRINT#13,"";SPC(19) "INTER-ELEMENT SPACING DATA":PRINT#13,""
  154. 1540 PRINT#13,F4$:PRINT#13,""
  155. 1550 PRINT#13,"REF-DE";SPC(15-LEN(STR$(FNA(B1))));FNA(B1);
  156. 1560 PRINT#13,"";SPC(16-LEN(STR$(FND(B1))));FND(B1)
  157. 1570 IF N<1 THEN1650
  158. 1580 PRINT#13,"DE-D1";SPC(16-LEN(STR$(FNA(B2))));FNA(B2);
  159. 1590 PRINT#13,"";SPC(16-LEN(STR$(FND(B2))));FND(B2)
  160. 1600 IF N<2 THEN1650
  161. 1610 FOR J=1 TO N-1
  162. 1620 PRINT#13,"D";J;"-D";J+1;SPC(12-LEN(STR$(FNA(A(J)))));FNA(A(J));
  163. 1630 PRINT#13,"";SPC(16-LEN(STR$(FND(A(J)))));FND(A(J))
  164. 1640 NEXT J
  165. 1650 PRINT#13,"":PRINT#13,""
  166. 1660 IF A$="Y" THEN PRINT#13,"     LENGTH-TO-DIAMETER RATIO CORRECTED"
  167. 1670 PRINT#13,:PRINT#13,"     NOTE: MATHEMATICALLY DERIVED DIMENSIONS"
  168. 1680 PRINT#13,"     MAY REQUIRE FINE TUNING IN THE FIELD."
  169. 1690 FOR J=1 TO 1999:PRINT;:NEXT J:RETURN
  170. 1700 REM CREATING A NEW DATA FILE FOR A SPECIFIC ANTENNA DESIGN
  171. 1710 PRINT:PRINT:PRINT "GIVE YOUR DATA FILE A NAME--8 CHARS MAX"
  172. 1720 PRINT "PREFERABLY ONE DESCRIBING THE ANTENNA."
  173. 1730 PRINT "THE FIRST CHARACTER MUST NOT BE A NUMERAL."
  174. 1740 INPUT "--NAME";FILE$
  175. 1750 IF LEN(FILE$)>8 THEN PRINT "TOO LONG":GOTO1710
  176. 1760 PRINT#15,"S0:"+FILE$
  177. 1770 OPEN3,8,3,FILE$+",S,W"
  178. 1780 PRINT#3,N
  179. 1790 IF N<1 THEN1810
  180. 1800 FOR J=1 TO N:PRINT#3,E(J):NEXT J
  181. 1810 PRINT#3,D;",";R
  182. 1820 PRINT#3,B1;",";B2
  183. 1830 IF N<2 THEN1850
  184. 1840 FOR J=1 TO N-1:PRINT#3,A(J):NEXT J
  185. 1850 PRINT#3,F1:PRINT#3,R1
  186. 1860 CLOSE3
  187. 1870 PRINT:PRINT "NEW FILE CREATED"
  188. 1880 CLOSE13:CLOSE15:END
  189. 1890 REM READING AN EXISTING DATA FILE--
  190. 1900 REM THE FILE HAS TO BE ON THE LOGGED DISK DRIVE AND THE
  191. 1910 REM NAME ENTERED MUST MATCH THE FILE NAME.
  192. 1920 PRINT:PRINT "ENTER THE NAME OF THE DATA FILE TO USE":INPUT FILE$
  193. 1930 OPEN3,8,3,FILE$+",S,R"
  194. 1940 INPUT#15,EA,EB$,EC,ED:IF EA<20 THEN1960
  195. 1950 IF EA=62 THEN PRINT EB$:CLOSE3:GOTO1920
  196. 1960 INPUT#3,N
  197. 1970 IF N<1 THEN1990
  198. 1980 FOR J=1 TO N:INPUT#3,E(J):NEXT J
  199. 1990 INPUT#3,D,R:INPUT#3,B1,B2
  200. 2000 IF N<2 THEN2020
  201. 2010 FOR J=1 TO N-1:INPUT#3,A(J):NEXT J
  202. 2020 INPUT#3,F1:INPUT#3,R1
  203. 2030 CLOSE3
  204. 2040 RETURN
  205.