home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / mininec / amiga / plotprnt.asc < prev    next >
Text File  |  1996-06-30  |  7KB  |  245 lines

  1.  
  2. 2 ON ERROR GOTO 60000
  3. 10 PRINT"      ************************************************"
  4. 20 PRINT"      *   PLOT PROGRAM FOR MININEC3 PATTERN DATA     *"
  5. 30 PRINT"      *  TO OUTPUT PATTERN TO PRINTER AS HARD COPY   *"
  6. 40 PRINT"      *    DESIGNED FOR EPSOM COMPATABLE PRINTERS    *"
  7. 50 PRINT"      *             R.P.HAVILAND, W4MB               *"
  8. 60 PRINT"      *          PROGRAM  COPYRIGHT 1990             *"
  9. 70 PRINT"      *              MINILAB BOOKS                   *"
  10. 80 PRINT"      *        DAYTONA BEACH, FL 32121-1086          *"
  11. 90 PRINT"      ************************************************"
  12. 99 REM SETUP
  13. 100 INPUT "SEE DIRECTORY,Y/N";T$
  14. 110 IF T$<>"Y" THEN 200
  15. 120 INPUT "FILEPATH TO USE,- INCLUDE ANY : AND / ";T$
  16. 130 CLS
  17. 140 PRINT "PRESS RETURN TO CONTINUE"
  18. 150 FILES T$
  19. 160 INPUT T$
  20. 199 REM GET FILED DATA
  21. 200 INPUT "ENTER NAME OF FILE; .PAT IS ADDED";NA$
  22. 210 INPUT "ENTER FILEPATH TO USE- INCLUDE ANY : AND / ";FP$
  23. 220 OPEN FP$+NA$+".PAT" FOR INPUT AS #3
  24. 230 INPUT #3,LE,GA,TY$
  25. 240 DIM A(LE,5)
  26. 250 FOR N=1 TO LE
  27. 260 A(N,0)=N
  28. 270 FOR M=1 TO 5
  29. 280 INPUT #3,A(N,M)
  30. 290 NEXT M
  31. 300 NEXT N
  32. 310 CLOSE 3
  33. 399 REM UV/M TO DB/M
  34. 400 IF TY$="D" THEN 500
  35. 410 FOR N=1 TO LE
  36. 420 FOR M=3 TO 5
  37. 430 A(N,M)=20*LOG(A(N,M))
  38. 440 NEXT M
  39. 450 NEXT N
  40. 499 REM GET MAX VALUES
  41. 500 MX=-999
  42. 510 FOR N=1 TO LE
  43. 520 FOR M=3 TO 5
  44. 530 IF MX < A(N,M) THEN MX=A(N,M)
  45. 540 NEXT M
  46. 550 IF MV < A(N,1) THEN MV=A(N,1)
  47. 560 IF MH < A(N,2) THEN MH=A(N,2)
  48. 570 NEXT N 
  49. 600 DIM BIT%(660,66),MASK%(6)
  50. 610 FOR N= 7 TO 2 STEP -1
  51. 620 MASK%(8-N)=2^N
  52. 630 NEXT N
  53. 640 PI=3.14159:DRAD=2*PI/360
  54. 799 REM ADJUST PLOT VALUES 
  55. 800 FOR N=1 TO LE
  56. 810 FOR M=3 TO 5
  57. 820 A(N,M)=A(N,M)-MX
  58. 830 IF A(N,M)<-100 THEN A(N,M)=-100
  59. 840 NEXT M
  60. 850 NEXT N
  61. 999 REM PLOT QUANTITY SELECT
  62. 1000 PRINT "  ENTER  1=VERTICAL POLARIZATION COMPONENT"
  63. 1010 PRINT "         2=HORIZONTAL POLARIZATION COMPONENT"
  64. 1020 PRINT "         3=TOTAL COMPONENT"
  65. 1030 INPUT PC
  66. 1040 IF ABS(PC-2)>1 THEN 1000
  67. 1050 IF PC=1 THEN PC$="VERTICAL COMPONENT"
  68. 1060 IF PC=2 THEN PC$="HORIZONTAL COMPONENT"
  69. 1070 IF PC=3 THEN PC$="TOTAL COMPONENT"
  70. 1100 PC=PC+2
  71. 1110 PRINT "  ENTER V=VERTICAL PLANE PLOT (ZENITH-NADIR)"
  72. 1120 PRINT "        H=HORIZONTAL PLANE PLOT (ANGLES FROM ZERO DEGREES)"
  73. 1130 INPUT PT$
  74. 1140 IF PT$="V" THEN 3000
  75. 1150 IF PT$<>"H" THEN 1100
  76. 1999 REM DO H-PLANE
  77. 2000 CLS
  78. 2010 PRINT  "ANGLES FROM ZENITH ARE:"
  79. 2020 FOR N=1 TO LE
  80. 2030 PRINT  A(N,1);" ";
  81. 2040 NEXT N
  82. 2050 PRINT 
  83. 2060 PRINT  "**** PLOT ANGLE MUST BE A VALUE FROM THIS TABLE ****"
  84. 2070 INPUT " PLOT ANGLE (90-ANGLE ABOVE HORIZON)";PAH
  85. 2080 IF MH <> 90 THEN IF  MH <> 180 THEN 2200
  86. 2090 INPUT " ENTER 90 OR 180 TO COMPLETE PLOT BY SYMMETRY,OR 0 "; CPS
  87. 2100 PRINT "PRESS RETURN TO TERMINATE PLOT"
  88. 2110 IF CPS=O THEN LIM=0:GOTO 2200
  89. 2120 LIM= 360/CPS-1
  90. 2130 PRINT "   WAIT- PREPARING BIT-MAP, COORDINATES AND DATA"
  91. 2199 REM PREPARE ARRAY
  92. 2200 GOSUB 5000
  93. 2210 FOR J=0 TO LIM 
  94. 2220 REP=0
  95. 2230 FOR K=1 TO LE
  96. 2240 IF A(K,1)<>PAH THEN 2380
  97. 2250 RV=A(K,PC)
  98. 2260 AV=(-1)^(J)*A(K,2)-180*(J>1)
  99. 2270 GOSUB 6000
  100. 2380 NEXT K
  101. 2390 NEXT J
  102. 2400 GOTO 4000  'FOR OUTPUT
  103. 2999 REM DO V-PLANE
  104. 3000 CLS
  105. 3010 PRINT " AZIMUTH ANGLES ARE:"
  106. 3020 FOR N=1 TO 100
  107. 3030 PRINT A(N,2);" ";
  108. 3040 NEXT N
  109. 3050 PRINT 
  110. 3060 PRINT  "**** PLOT ANGLE MUST BE A VALUE FROM THIS TABLE ****"
  111. 3070 INPUT "ENTER AZIMUTH ANGLE TO PLOT";PAZ
  112. 3080 IF MH <> 90 THEN IF  MH <> 180 THEN 3200
  113. 3090 INPUT " ENTER 90 OR 180 TO COMPLETE PLOT BY SYMMETRY,OR 0 "; CPS
  114. 3100 PRINT "PRESS CTRL-C TO TERMINATE PLOT"
  115. 3110 IF CPS=O THEN LIM=0:GOTO 3130
  116. 3120 LIM= 360/CPS-1
  117. 3130 PRINT "   WAIT- PREPARING BIT-MAP, COORDINATES AND DATA"
  118. 3199 REM PREPARE ARRAY
  119. 3200 GOSUB 5000  'FOR COORDINATES
  120. 3210 FOR J=0 TO LIM
  121. 3220 REP=0
  122. 3230 FOR K=1 TO LE
  123. 3240 IF A(K,2)<>PAZ THEN 3280
  124. 3250 RV=A(K,PC)
  125. 3260 AV=(-1)^(J)*A(K,1)-180*(J>1)
  126. 3270 GOSUB 6000  'FOR DATA POINT
  127. 3280 NEXT K
  128. 3290 NEXT J
  129. 3999 REM PLOT TO PRINTER
  130. 4000 OPEN "PAR:" FOR OUTPUT AS #1  
  131. 4010 PRINT #1,CHR$(27);"@"
  132. 4020 PRINT #1,CHR$(27);"A";CHR$(6)
  133. 4030 FOR ROW =O TO 60 
  134. 4040 A$=""
  135. 4050 PRINT #1,CHR$(27);"L";CHR$(150);CHR$(2);
  136. 4060 FOR COL =0 TO  660
  137. 4070 PRINT #1,CHR$(BIT%(COL,ROW));
  138. 4080 NEXT COL
  139. 4090 PRINT #1,CHR$(0)
  140. 4100 NEXT ROW
  141. 4110 PRINT #1,
  142. 4120 PRINT #1,CHR$(27);"@"
  143. 4130 CLOSE 1
  144. 4400 GOTO 7000    
  145. 4999 REM DO COORDINATES
  146. 5000 CIR=200 
  147. 5010 GOSUB 5800
  148. 5020 CIR=168 
  149. 5030 GOSUB 5800
  150. 5040 CIR=112
  151. 5050 GOSUB 5800
  152. 5060 CIR=35
  153. 5070 GOSUB 5800
  154. 5099 REM SET H,V AXES
  155. 5100 X1=0:Y1=200:X2=400:Y2=200
  156. 5110 GOSUB 6500
  157. 5120 X1=200:Y1=0:X2=200:Y2=400
  158. 5130 GOSUB 6500
  159. 5199 REM SET 45 DEG AXES
  160. 5260 CSX=200*SIN(PI/4)
  161. 5270 CSY=200*SIN(PI/4)
  162. 5300 X1=200-CSX:Y1=200-CSY:X2=200+CSX:Y2=200+CSY
  163. 5310 GOSUB 6500
  164. 5320 X1=200-CSX:Y1=200+CSY:X2=200+CSX:Y2=200-CSY 
  165. 5330 GOSUB 6500
  166. 5340 RETURN
  167. 5799 REM SET CIRCLES
  168. 5800 FOR ANG=0 TO 6.283 STEP .06283
  169. 5810 R1=ANG
  170. 5820 R2=(ANG+.06283)
  171. 5830 X1=200-CIR*COS(R1):Y1=200-CIR*SIN(R1)
  172. 5840 X2=200-CIR*COS(R2):Y2=200-CIR*SIN(R2)
  173. 5850 GOSUB 6500
  174. 5860 NEXT ANG
  175. 5870 RETURN
  176. 6000 REP=REP+1
  177. 6010 RPV1=.89125^(-RV/2)
  178. 6020 XPV1=200+200*RPV1*COS(AV*DRAD)
  179. 6030 YPV1=200-200*RPV1*SIN(AV*DRAD)
  180. 6040 IF REP=1 THEN 6070
  181. 6050 X1=XPV2:Y1=YPV2:X2=XPV1:Y2=YPV1 
  182. 6060 GOSUB 6500 'POINT TO ARRAY
  183. 6070 XPV2=XPV1
  184. 6080 YPV2=YPV1
  185. 6090 RETURN
  186. 6499 REM SET LINE INCREMENT
  187. 6500 XL=X2-X1:YL=Y2-Y1
  188. 6510 NX=ABS(XL):NY=ABS(YL)              
  189. 6520 IF NX<NY THEN NX=NY
  190. 6530 NS%=INT(NX+1)                   
  191. 6540 DX=XL/NS%:DY=YL/NS%
  192. 6550 FOR I=1 TO NS%
  193. 6560 X1=X1+DX:Y1=Y1+DY
  194. 6570 GOSUB 6800
  195. 6580 NEXT I
  196. 6590 RETURN
  197. 6799 REM SET PRINTER PIN VALUE
  198. 6800 XX=X1*1.5:YY=Y1*.9    'SCALE FACTORS ARE 1.5,.9
  199. 6810 COL=INT(XX)+1
  200. 6820 ROW=INT (YY/6)
  201. 6830 XIT%=INT(YY-(6*ROW))+1
  202. 6840 BIT%(COL,ROW)=BIT%(COL,ROW) OR MASK%(XIT%)
  203. 6890 RETURN
  204. 6999 REM DO LEGEND
  205. 7000 OPEN "PRT:" FOR OUTPUT AS #1
  206. 7010 PRINT #1,:PRINT #1, PC$;" PATTERN FOR ";NA$
  207. 7020 PRINT #1,"PATTERN IS FOR THE ":PRINT #1,PT$;"-PLANE"
  208. 7030 IF PT$="H" THEN PRINT #1," FOR";90-PAH:PRINT #1,"  DEGREES ABOVE HORIZON"
  209. 7040 IF PT$="V" THEN PRINT #1," AT AN AIMUTH OF":PRINT #1,PAZ;" DEGREES":PRINT 
  210. 7050 PRINT #1,"PLOT REFERENCE GAIN=":PRINT #1,MX;"DB U/V"
  211. 7060 PRINT #1,"= LARGEST LOBE GAIN 
  212. 7070 PRINT #1,"RELATIVE TO ISOTROPIC"
  213. 7080 IF PT$="V" THEN PRINT #1," TOP IS ZENITH"
  214. 7090 IF PT$="H" THEN PRINT #1," TOP IS 90 DEGREES"
  215. 7100 PRINT #1,:PRINT #1,
  216. 7110 PRINT #1,"SCALE,CENTER-OUT"                  
  217. 7120 PRINT #1," -100 DB"
  218. 7130 PRINT #1," - 30 DB"
  219. 7140 PRINT #1,"  -10 DB"
  220. 7150 PRINT #1,"   -3 DB"
  221. 7160 PRINT #1,"    0 DB"
  222. 7170 PRINT #1,"RELATIVE TO"
  223. 7180 PRINT #1," REFERENCE GAIN"
  224. 7190 PRINT #1,:PRINT #1, 
  225. 7200 CLOSE 1
  226. 7210 PRINT "TO PREPARE LABELLED PLOT,USE "CUT AND PASTE" OF PLOT"
  227. 7400 RETURN
  228. 8999 REM DO CLEANUP
  229. 9000 PRINT " ENTER  P=REPLOT"
  230. 9010 PRINT "        R=ANOTHER RUN"
  231. 9020 PRINT "        Q=QUIT
  232. 9030 INPUT T$
  233. 9200 IF T$="Q" THEN STOP
  234. 9210 IF T$="P" THEN G0SUB 7000:GOSUB 4000 
  235. 9220 IF T$<>"R" THEN 9000
  236. 9230 ERASE A
  237. 9240 GOTO 100
  238. 9250 END
  239. 60000 PRINT  "ERROR ";ERR;" AT LINE ";ERL
  240. 60010 IF ERL=150 THEN RESUME 100
  241. 60020 IF ERL=220 THEN RESUME 200
  242. 60030 IF ERL=3130 THEN ERASE BIT%: RESUME 3130
  243. 60040 GOTO 9000
  244.  
  245.