home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / eepub11 / 8970a.asc next >
Text File  |  1987-01-21  |  27KB  |  765 lines

  1. 10  ! PROGRAM "8970A" for HP9845 COMPUTER, Ver. 2.0, October 1986
  2. 20  ! I.ANGELOV, S.HAIMOV  Institute of Electronics
  3. 30  !                      blvd. Lenin 72, 1784 SOFIA, BULGARIA
  4. 40  ! --------------------------------------------------------------------------
  5. 50  ! The description of this program is given in DATA file "8970D" and in our
  6. 60  ! paper"COMPUTER-AIDED MICROWAVE NOISE MEASUREMENT",MICROWAVE JOURNAL,7,1986
  7. 70  ! --------------------------------------------------------------------------
  8. 80    OPTION BASE 1
  9. 90    DIM Title$[55],N(100,3),Lc3(100),Lc4(100)
  10. 100   EXIT GRAPHICS
  11. 110   PRINTER IS 16
  12. 120   PRINT PAGE
  13. 130 ! --------------------------------------------------------------------------
  14. 140 ! Initial interface values, PRESET for NFM and LO
  15. 150   Sel=7           !  Interface select code
  16. 160   Anf=8           !  8970A HPIB address
  17. 170   Alo=19          !  8350A or 8672A HPIB address
  18. 180   Dummy=7         !  Dummy device address
  19. 190   Plotad=5        !  8972A  HPIB address
  20. 200   Plotter$="8972A"!  Plotter identifier string expression
  21. 210   ABORTIO Sel
  22. 220   REMOTE Sel,Anf,Alo
  23. 230   CLEAR Sel
  24. 240   OUTPUT Sel,Anf;"PR"
  25. 250   OUTPUT Sel,Alo;"IP"
  26. 260 ! --------------------------------------------------------------------------
  27. 270 ! Initial data: Date and Ambient temperature(Tec). No check for correct
  28. 280 !               input of the date. Tec=(5-40)deg.
  29. 290   LINPUT "ENTER THE DATE (Format:99/99/99, Default: No Date)?",Date$
  30. 300   Tec=25
  31. 310   INPUT "ENTER AMBIENT TEMPERATURE (degrees Celsium,Default 25)?",Tec
  32. 320   IF (Tec<5) OR (Tec>40) THEN 300
  33. 330 ! --------------------------------------------------------------------------
  34. 340 ! External LO Programs for HP8350A or HP86721
  35. 350   Lo=1
  36. 360   INPUT "ENTER THE OSCILLATOR: 8350(2-40GHz),8672(2-18GHz)?",Lo
  37. 370   IF (Lo=8350) OR (Lo=1) THEN Lo=1
  38. 380   IF (Lo=8672) OR (Lo=2) THEN Lo=2
  39. 390   IF (Lo<>1) AND (Lo<>2) THEN 360
  40. 400   IF Lo=1 THEN OUTPUT Sel,Anf;"J0"
  41. 410   IF Lo=2 THEN OUTPUT Sel,Anf;"J2","AC","EN","EN","EN",52,"EN","IF"
  42. 420   IF Lo=2 THEN OUTPUT Sel,Alo;"K0L3M0N7O3"
  43. 430 ! --------------------------------------------------------------------------
  44. 440 ! Measurement Device Selection
  45. 450   PRINT PAGE
  46. 460   PRINT "Amplifier : 1) 10-1500MHz - Mode 1.0"
  47. 470   PRINT "            2) 2000-60000MHz - Mode 1.1, with Ext.mixer, variable "
  48. 480   PRINT "               LO and fixed IF frequency(10<=IF<=1500)"
  49. 490   PRINT "            3) Mode 1.2 - fixed LO and variable IF(10<=IF<=1500)-"
  50. 500   PRINT "               frequency conversion in the measurement system"
  51. 510   PRINT "               (single sideband measurement)"
  52. 520   PRINT 
  53. 530   PRINT "Mixer     : Mixer or receiver with fixed IF frequency, external"
  54. 540   PRINT "            LO and frequency conversion in the DUT - Mode 1.3"
  55. 550   PRINT 
  56. 560   PRINT "Receiver  : Receiver or mixer with fixed frequency external LO an
  57. d"
  58. 570   PRINT "            testing over a variable IF range - Mode 1.4"
  59. 580   A$="IF"
  60. 590   Loss$="N"
  61. 600   T_loss=Tec
  62. 610   Change$="First"
  63. 620   Kind$="A"
  64. 630   INPUT "WHAT ARE YOU GOING TO MEASURE([A]mplifier,[M]ixer,[R]eceiver)
  65. ?",Kind$
  66. 640   PRINT PAGE
  67. 650   IF Kind$="A" THEN Amplifier
  68. 660   IF Kind$="M" THEN Mixer
  69. 670   IF Kind$="R" THEN Receiver
  70. 680   BEEP
  71. 690   GOTO 620
  72. 700 ! --------------------------------------------------------------------------
  73. 710 Amplifier: ! *****
  74. 720   INPUT "WHAT KIND OF AMPLIFIER: Fix.[IF](Mode 1.0 or 1.1) , [V]ar.IF(Mo
  75. de 1.2)?",A$
  76. 730   IF A$="V" THEN A$="LO-"
  77. 740   IF A$="LO-" THEN INPUT "SELECT SINGLE SIDEBAND OFFSET(LSB or USB): Fix.[L
  78. O-]IF , Fix.[LO+]IF ?",A$
  79. 750   IF (A$<>"LO-") AND (A$<>"LO+") AND (A$<>"IF") THEN 580
  80. 760   IF A$="IF" THEN 950
  81. 770 ! 
  82. 780 !  Amplifier with LO-IF or LO+IF
  83. 790   INPUT "ENTER: Start freq., Stop freq., Step size, LO freq.(All in MHz)?"
  84. ,F1,F2,F3,F4
  85. 800   IF (F1>F2) OR (F3>F2-F1) OR (F2-F1>1500) OR (F3<=0) OR (F4<2000) OR (F4>60
  86. 000) THEN 790
  87. 810   IF A$="LO-" THEN OUTPUT Sel,Anf;"B1"
  88. 820   IF A$="LO+" THEN OUTPUT Sel,Anf;"B2"
  89. 830   OUTPUT Sel,Anf;"E2"
  90. 840   A$="LO"
  91. 850   OUTPUT Sel,Anf;"FA",F1,"EN","FB",F2,"EN","SS",F3,"EN","LF",F4,"EN","TC",27
  92. 3.2+Tec,"EN"
  93. 860   Fr1=F1
  94. 870   Fr2=F2
  95. 880   Fr3=F3
  96. 890   Fr4=F4
  97. 900   ON Lo GOSUB S8350a,S8672a
  98. 910   GOSUB Smooth
  99. 920   Title$="CONNECT FILTER AND EXT. MIXER!"
  100. 930   GOTO 1330
  101. 940 ! 
  102. 950 ! Amplifier with Fix.IF
  103. 960   INPUT "ENTER:Start freq.,Stop freq.,Step size,IF freq.(All in MHZ)?",F1,
  104. F2,F3,F4
  105. 970   IF (F3<=0) OR (F1<10) OR (F1>F2) OR (F1<2000) AND (F2>1500) OR (F2>60000) 
  106. OR (F3>F2-F1) THEN 960
  107. 980   IF (F1>=2000) AND ((F4<10) OR (F4>1500)) THEN 960
  108. 990   Fr1=F1
  109. 1000  Fr2=F2
  110. 1010  Fr3=F3
  111. 1020  Fr4=F4
  112. 1030  IF F1<=1500 THEN OUTPUT Sel,Anf;"E0"
  113. 1040  IF F1>=2000 THEN OUTPUT Sel,Anf;"E1"
  114. 1050  GOSUB Smooth
  115. 1060  OUTPUT Sel,Anf;"FA",F1,"EN","FB",F2,"EN","SS",F3,"EN","TC",273.2+Tec,"EN"
  116. 1070  IF F1<=1500 THEN 1320
  117. 1080  OUTPUT Sel,Anf;"IF",F4,"EN"
  118. 1090  Title$="CONNECT EXT. MIXER"
  119. 1100  GOTO 1330
  120. 1110 ! -------------------------------------------------------------------------
  121. -
  122. 1120 Mixer:! *****
  123. 1130  OUTPUT Sel,Anf;"E3"
  124. 1140  PRINT "10<=IF<=1500"
  125. 1150  F4=150
  126. 1160  INPUT "ENTER: IF_freq.(Default 150MHz)?",F4
  127. 1170  IF (F4<10) OR (F4>1500) THEN 1140
  128. 1180  GOSUB Smooth
  129. 1190  OUTPUT Sel,Anf;"IF",F4,"EN","TC",273.2+Tec,"EN"
  130. 1200  GOTO 1320
  131. 1210 ! -------------------------------------------------------------------------
  132. 1220 Receiver:! *****
  133. 1230  OUTPUT Sel,Anf;"E4"
  134. 1240  PRINT "10<=IF<=1500"
  135. 1250  INPUT "ENTER: Start IF_freq.,Stop IF_freq.,Step size (All in MHz)?",F1,F
  136. 2,F3
  137. 1260  IF (F1<=10) OR (F2>1500) OR (F2<F1) OR (F3<=0) OR (F3>F2-F1) THEN 1250
  138. 1270  Fr1=F1
  139. 1280  Fr2=F2
  140. 1290  Fr3=F3
  141. 1300  GOSUB Smooth
  142. 1310  OUTPUT Sel,Anf;"FA",F1,"EN","FB",F2,"EN","SS",F3,"EN","TC",273.2+Tec,"EN"
  143. 1320  Title$="CONNECT NOISE SOURCE DIRECTLY TO NOISE FIGURE METER"
  144. 1330  PRINT PAGE
  145. 1340 ! -------------------------------------------------------------------------
  146. 1350 ! Calibration
  147. 1360  PRINT "CONNECT SYSTEM FOR CALIBRATION"
  148. 1370  PRINT Title$
  149. 1380  BEEP
  150. 1390  INPUT "WHEN READY, PRESS CONT KEY",T$
  151. 1400  GOSUB Calibrate
  152. 1410  PRINT PAGE
  153. 1420 ! -------------------------------------------------------------------------
  154. 1430 ! Transfer control, Loss compensation, LO Output power(only for HP8672A)
  155. 1440  IF Change$="N" THEN LINPUT "CHANGE: Trans.control,Loss comp.,Freq.range,LO
  156.  power or Smooth.factor [Y/N]?",Change$
  157. 1450  IF (Change$<>"Y") AND (Change$<>"First") THEN Change$="N"
  158. 1460  IF Change$="N" THEN 1640
  159. 1470  LINPUT "Transfer control of LO [Y/N]?",T$
  160. 1480  IF T$="Y" THEN GOSUB Trans_control
  161. 1490  GOSUB Loss
  162. 1500  IF Kind$<>"M" THEN 1530
  163. 1510  INPUT "ENTER: Start LO_freq.,Stop LO_freq.,Step size(All in MHz)?",F1,F2
  164. ,F3
  165. 1520  IF (F1<10) OR (F1>F2) OR (F1<2000) AND (F2>1500) OR (F2>60000) OR (F3<=0) 
  166. OR (F3>F2-F1) THEN 1510
  167. 1530  IF Lo=1 THEN 1630
  168. 1540  IF (Kind$="A") AND (A$="IF") AND (F1<=1500) THEN 1630
  169. 1550  C=10
  170. 1560  INPUT "ENTER: Local Oscillator OUTPUT POWER (6dBm,8dBm,10dBm)?",C
  171. 1570  IF (C<>10) AND (C<>8) AND (C<>6) THEN 1550
  172. 1580  IF C=6 THEN OUTPUT Sel,Alo;"L7"
  173. 1590  IF C=8 THEN OUTPUT Sel,Alo;"L5"
  174. 1600  IF C=10 THEN OUTPUT Sel,Alo;"L3"
  175. 1610 ! -------------------------------------------------------------------------
  176. 1620 ! Measures and Prints DUT Data
  177. 1630  PRINT PAGE
  178. 1640  IF Kind$="A" THEN PRINT "CONNECT AMPLIFIER"
  179. 1650  IF Kind$="M" THEN PRINT "CONNECT MIXER"
  180. 1660  IF Kind$="R" THEN PRINT "CONNECT RECEIVER"
  181. 1670  LINPUT "ENTER LABEL?",Title$
  182. 1680  IF Kind$="R" THEN 1720
  183. 1690  GOSUB Measure
  184. 1700  GOSUB Output
  185. 1710  GOTO 1740
  186. 1720  GOSUB Meas_rec
  187. 1730  GOSUB Output_rec
  188. 1740 List: BEEP
  189. 1750  LINPUT "[L]IST DATA, [P]LOT, [N]EXT MEASUREMENT,[S]TOP THE PROGRAM
  190. ?",L$
  191. 1760  IF L$="S" THEN 1820
  192. 1770  Change$="N"
  193. 1780  IF L$="N" THEN 1410
  194. 1790  IF ((L$="L") OR (L$="") OR (L$="P")) AND (Kind$<>"R") THEN 1700
  195. 1800  IF ((L$="L") OR (L$="") OR (L$="P")) AND (Kind$="R") THEN 1730
  196. 1810  GOTO 1750
  197. 1820  PRINT PAGE
  198. 1830  DISP "THE PROGRAM IS COMPLETED."
  199. 1840  WAIT 8000
  200. 1850  DISP ""
  201. 1860  END  ! ---------------  End of the Main Program  --------------------
  202. 1870 ! ..........................  SUBROUTINES  ................................
  203. 1880 Smooth:  !  ENTER SMOOTHING FACTOR TO HP8970A
  204. 1890  F5=8
  205. 1900  INPUT "ENTER:Smoothing factor(in power of two,Min=1,Max=64,Default 8)?
  206. ",F5
  207. 1910  IF (F5=1) OR (F5=2) OR (F5=4) OR (F5=8) OR (F5=16) OR (F5=32) OR (F5=64) T
  208. HEN 1940
  209. 1920  BEEP
  210. 1930  GOTO 1890
  211. 1940  OUTPUT Sel,Anf;"AF",F5,"EN"
  212. 1950  RETURN 
  213. 1960 ! .........................................................................
  214. .
  215. 1970 Trans_control: ! TRANSFER CONTROL OF THE LO FROM HP9845 TO 8970A
  216. 1980                ! AND BACK AGAIN
  217. 1990  OUTPUT Sel,Anf;"T0"
  218. 2000  LOCAL Sel,Anf
  219. 2010  PASS CONTROL Sel,Dummy
  220. 2020  PRINT PAGE
  221. 2030  PRINT "**** 8970A is now in LOCAL mode and can control the LO by pressing 
  222. 4.1 SP ****"
  223. 2040  PRINT "WHEN READY TO TRANSFER CONTROL TO 9845,KEY IN 4.0 SP ON THE 8970A F
  224. RONT PANEL."
  225. 2050  PRINT "PRESS CONT KEY ON THE 9845 "
  226. 2060  BEEP
  227. 2070  INPUT "PROGRAMM IS WAITING!",T$
  228. 2080  ABORTIO Sel
  229. 2090  REMOTE Sel,Anf
  230. 2100  IF Lo=2 THEN OUTPUT Sel,Alo;"K0L3M0N7O3"
  231. 2110  PRINT PAGE
  232. 2120  DISP "**9845 IS NOW THE CONTROLER*"
  233. 2130  RETURN 
  234. 2140 ! ........................................................................
  235. 2150 S8672a:       ! CONTROL FOR 8672A
  236. 2160  IMAGE "P",5Z,"Z0"
  237. 2170  IF (F<2000) AND ((Kind$="M") OR (Kind$="A") AND (A$="IF")) OR (Fr<2000) AN
  238. D (Kind$="R") THEN RETURN 
  239. 2180  IF Kind$="R" THEN OUTPUT Sel,Alo USING 2160;Fr
  240. 2190  IF (Kind$="M") OR (Kind$="A") AND (A$="IF") THEN OUTPUT Sel,Alo USING 2160
  241. ;F
  242. 2200  IF (Kind$="A") AND (A$="LO") THEN OUTPUT Sel,Alo USING 2160;F4
  243. 2210  WAIT 20
  244. 2220  RETURN 
  245. 2230 ! ........................................................................
  246. 2240 S8350a:       ! CONTROL FOR 8350A
  247. 2250  IF (F<2000) AND ((Kind$="M") OR (Kind$="A") AND (A$="IF")) OR (Fr<2000) AN
  248. D (Kind$="R") THEN RETURN 
  249. 2260  IMAGE "CW",5Z,"MZ"
  250. 2270  IF Kind$="R" THEN OUTPUT Sel,Alo USING 2260;Fr
  251. 2280  IF (Kind$="M") OR (Kind$="A") AND (A$="IF") THEN OUTPUT Sel,Alo USING 2260
  252. ;F
  253. 2290  IF (Kind$="A") AND (A$="LO") THEN OUTPUT Sel,Alo USING 2260;F4
  254. 2300  OUTPUT Sel,Alo;"M1","M0"
  255. 2310  WAIT 60
  256. 2320  RETURN 
  257. 2330 ! .........................................................................
  258. 2340 Loss:  !  ENTER OR MEASUREMENT LOSS COMPENSATION
  259. 2350  OUTPUT Sel,Anf;"L0"
  260. 2360  PRINT "PERMITTED RESPONSES:"
  261. 2370  PRINT "N    - without compensation;"
  262. 2380  PRINT 
  263. 2390  PRINT "F    - fixed input and output losses (in dB);"
  264. 2400  PRINT 
  265. 2410  PRINT "V    - varying losses will be measured or manually entered"
  266. 2420  PRINT "       (only for amplyfiers);"
  267. 2430  PRINT 
  268. 2440  PRINT "M    - measured losses in the Mode V will be used."
  269. 2450  Ncab=0
  270. 2460  DISP "LOSS COMPESATION:[N]o,[F]ix.,[V]ar.,[M]easured Var. (Default
  271.  ";CHR$(135);Loss$;CHR$(128);")?";
  272. 2470  INPUT "",Loss$
  273. 2480  PRINT PAGE
  274. 2490  T_loss=Tec
  275. 2500  IF (Loss$="N") OR (Loss$="F") OR (Loss$="V") OR (Loss$="M") THEN 2540
  276. 2510  Loss$="N"
  277. 2520  BEEP
  278. 2530  GOTO 2360
  279. 2540  IF Loss$="N" THEN RETURN 
  280. 2550  IF Loss$="F" THEN 2900
  281. 2560  IF ((Kind$="R") OR (Kind$="M")) AND ((Loss$="V") OR (Loss$="M")) THEN 2510
  282. 2570  IF Loss$="V" THEN 2600
  283. 2580  Loss$="V"
  284. 2590  RETURN 
  285. 2600  LINPUT "[M]anual entry or Measurement with [N]oise Figure Meter?",T$
  286. 2610  IF T$="M" THEN 3140
  287. 2620  IF (T$<>"") AND (T$<>"N") THEN 2600
  288. 2630  Key=1
  289. 2640  ! 
  290. 2650  ! Loss compensation measurement
  291. 2660  BEEP
  292. 2670  INPUT "CONNECT INPUT CABLE!(then press CONT key)",T$
  293. 2680  GOSUB Measure
  294. 2690  C=0
  295. 2700  FOR F=F1 TO F2 STEP F3
  296. 2710  C=C+1
  297. 2720  Lc3(C)=-N(C,1)
  298. 2730  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  299. 2740  NEXT F
  300. 2750  BEEP
  301. 2760  INPUT "CONNECT OUTPUT CABLE!(then press CONT key)",T$
  302. 2770  GOSUB Measure
  303. 2780  C=0
  304. 2790  FOR F=F1 TO F2 STEP F3
  305. 2800  C=C+1
  306. 2810  Lc4(C)=-N(C,1)
  307. 2820  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  308. 2830  NEXT F
  309. 2840  BEEP
  310. 2850  Key=0
  311. 2860  DISP "ENTER LOSS TEMPERATURE( Default ";CHR$(135);VAL$(T_loss)&CHR$(179)&C
  312. HR$(128)&"C ";")?";
  313. 2870  INPUT "",T_loss ! No check for correct input
  314. 2880  PRINT PAGE
  315. 2890  RETURN 
  316. 2900  Ncab=1
  317. 2910  IF Kind$="R" THEN 3000
  318. 2920  PRINT "PERMITTED RESPONSES:"
  319. 2930  PRINT "1 - one pairs of cables working at the temperature of measurement
  320. "
  321. 2940  PRINT 
  322. 2950  PRINT "2 - two pairs of cables: the first working at the temperature of"
  323. 2960  PRINT "    measurement, and the second - at the ambient temperature."
  324. 2970  INPUT "One or two pairs of cables [1,2]?",Ncab
  325. 2980  IF (Ncab<>1) AND (Ncab<>2) THEN 2900
  326. 2990  IF Ncab=2 THEN PRINT USING "19(/),11A";"First pair:"
  327. 3000  DISP "LOSS COMPENS. before DUT(Default";CHR$(135);Lc1;CHR$(128);"dB) and a
  328. fter DUT(Default";CHR$(135);Lc2;CHR$(128);"dB) ?";
  329. 3010  INPUT "",Lc1,Lc2  ! No check for correct input
  330. 3020  IF Ncab<>2 THEN 3080
  331. 3030  PRINT USING "19(/),12A";"Second pair:"
  332. 3040  DISP "LOSS COMPENS. before DUT(Default";CHR$(135);Lc5;CHR$(128);"dB) and a
  333. fter DUT(Default";CHR$(135);Lc6;CHR$(128);"dB) ?";
  334. 3050  INPUT "",Lc5,Lc6  ! No check for correct input
  335. 3060  PRINT PAGE
  336. 3070  DISP "First pair:";
  337. 3080  DISP "ENTER LOSS TEMPERATURE( Default ";CHR$(135);VAL$(T_loss)&CHR$(179)&C
  338. HR$(128)&"C ";")?";
  339. 3090  INPUT "",T_loss ! No check for correct input
  340. 3100  OUTPUT Sel,Anf;"LA",Lc1,"EN","LB",Lc2,"EN","LT",273.2+T_loss,"EN","L1"
  341. 3110  RETURN 
  342. 3120  ! 
  343. 3130  ! Manual entry the Loss compensation
  344. 3140  L$=""
  345. 3150  MAT Lc3=ZER
  346. 3160  MAT Lc4=ZER
  347. 3170  T$="INPUT"
  348. 3180  FOR J=1 TO 2
  349. 3190  IF (L$="") OR (L$="N") AND (J=2) THEN PRINT PAGE
  350. 3200  IF (J=2) AND (L$="N") THEN PRINT USING "#,59A//16A";"Values which don't ne
  351. ed correction are passed by CONT key","CORRECTION FOR  "
  352. 3210  PRINT USING "6A,6A";T$," CABLE"
  353. 3220  C=0
  354. 3230  FOR F=F1 TO F2 STEP F3
  355. 3240  C=C+1
  356. 3250  IMAGE +,"Frequency = ",5D," MHz"
  357. 3260  PRINT USING 3250;F
  358. 3270  IF J=1 THEN D=Lc3(C)
  359. 3280  IF J=2 THEN D=Lc4(C)
  360. 3290  DISP "Loss compensation (Default ";CHR$(135);D;CHR$(128);" dB)?";
  361. 3300  INPUT "",D
  362. 3310  IF J=1 THEN Lc3(C)=D
  363. 3320  IF J=2 THEN Lc4(C)=D
  364. 3330  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  365. 3340  NEXT F
  366. 3350  T$="OUTPUT"
  367. 3360  NEXT J
  368. 3370  PRINT PAGE
  369. 3380  PRINT "LOSS COMPENSATION FOR INPUT CABLE (in dB)"
  370. 3390  REDIM Lc3(C),Lc4(C)
  371. 3400  PRINT Lc3(*);
  372. 3410  PRINT 
  373. 3420  PRINT "LOSS COMPENSATION FOR OUTPUT CABLE(in dB)"
  374. 3430  PRINT Lc4(*);
  375. 3440  REDIM Lc3(100),Lc4(100)
  376. 3450  LINPUT "Loss values OK [Y/N]?",L$
  377. 3460  IF L$<>"N" THEN 2860
  378. 3470  PRINT PAGE
  379. 3480  PRINT USING "#,59A//16A";"Values which don't need correction are passed by
  380.  CONT key","CORRECTION FOR  "
  381. 3490  GOTO 3170
  382. 3500 ! .........................................................................
  383. 3510 Calibrate:  ! CALIBRATE THE SYSTEM
  384. 3520  PRINT PAGE
  385. 3530  PRINT "CALIBRATE"
  386. 3540  OUTPUT Sel,Anf;"Q1,T1,CA"
  387. 3550  STATUS Sel,Anf;R0
  388. 3560  FOR J=1 TO 3
  389. 3570  IF Kind$="M" THEN 3600
  390. 3580  FOR F=F1 TO F2 STEP F3
  391. 3590  IF (Kind$="A") AND (A$="IF") THEN ON Lo GOSUB S8350a,S8672a
  392. 3600  OUTPUT Sel,Anf;"T2"
  393. 3610  STATUS Sel,Anf;R0
  394. 3620  IF BIT(R0,0)<>1 THEN 3610
  395. 3630  IF Kind$="M" THEN 3670
  396. 3640  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  397. 3650  DISP F;"MHz"
  398. 3660  NEXT F
  399. 3670  NEXT J
  400. 3680  OUTPUT Sel,Anf;"Q0","T0","M2"
  401. 3690  BEEP
  402. 3700  RETURN 
  403. 3710 ! .......................................................................
  404. 3720 Measure: ! MEASURE/STORE AMPLIFIER or MIXER DATA and VARYING LOSSES
  405. 3730  PRINT PAGE
  406. 3740  IF (Loss$="V") AND (Key=1) THEN 3820
  407. 3750  IF (Kind$="M") OR (Change$<>"Y") THEN 3830
  408. 3760  LINPUT "Do you want to reduce frequency range[Y/N]?",T$
  409. 3770  IF T$<>"Y" THEN 3800
  410. 3780  INPUT "ENTER:Start freq.,Stop freq.,Step size(All in MHZ)?",F1,F2,F3
  411. 3790  IF (F1<Fr1) OR (F2>Fr2) OR (F3>F2-F1) OR (F1>F2) OR (F3<=0) THEN 3780
  412. 3800  LINPUT "Do you want new Smoothing factor[Y/N]?",T$
  413. 3810  IF T$="Y" THEN GOSUB Smooth
  414. 3820  IF (Loss$="V") AND (Key=1) THEN PRINT "MEASUREMENT LOSSES"
  415. 3830  IF (Kind$="A") AND (Key=0) THEN PRINT "MEASUREMENT AMPLIFIER"
  416. 3840  IF (Kind$="M") AND (Key=0) THEN PRINT "MEASUREMENT MIXER"
  417. 3850  OUTPUT Sel,Anf;"M2,H1,T1"
  418. 3860  C=0
  419. 3870  FOR F=F1 TO F2 STEP F3
  420. 3880  C=C+1
  421. 3890  IF (Loss$<>"V") OR (Loss$="V") AND (Key=1) THEN 3920
  422. 3900  OUTPUT Sel,Anf;"L0"
  423. 3910  OUTPUT Sel,Anf;"LA",Lc3(C),"EN","LB",Lc4(C),"EN","LT",273.2+T_loss,"EN","L
  424. 1"
  425. 3920  IF (F1>=2000) AND ((Kind$="M") OR (Kind$="A") AND (A$="IF")) THEN ON Lo GO
  426. SUB S8350a,S8672a
  427. 3930  DISP F;"MHZ"
  428. 3940  IMAGE "FR",5D,"EN","T2"
  429. 3950  OUTPUT Sel,Anf USING 3940;F
  430. 3960  ENTER Sel,Anf USING "H,H,H";X,N(C,1),N(C,2)
  431. 3970  ON ERROR GOTO 3990
  432. 3980  N(C,3)=(10^(N(C,2)/10)-1)*(273.2+T_loss)   ! To be tested !
  433. 3990  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  434. 4000  OFF ERROR
  435. 4010  NEXT F
  436. 4020  OUTPUT Sel,Anf;"T0"
  437. 4030 RETURN 
  438. 4040 ! ........................................................................
  439. 4050 Meas_rec: ! MEASURE/STORE RECEIVER DATA
  440. 4060  PRINT PAGE
  441. 4070  IF Change$<>"First" THEN 4100
  442. 4080  INPUT "ENTER:Start LO_freq.,Stop LO_freq.,Step size(All in MHz)?",F4,F6,
  443. F7
  444. 4090  IF (F4<10) OR (F6>60000) OR (F6<F4) OR (F7>F6-F4) OR (F7<=0) OR (F6>1500) 
  445. AND (F4<2000) THEN 4080
  446. 4100  IF (Change$="N") OR (Change$="First") THEN 4170
  447. 4110  LINPUT "Do you want to reduce IF frequency range[Y/N]?",T$
  448. 4120  IF T$<>"Y" THEN 4150
  449. 4130  INPUT "ENTER:Start IF_freq.,Stop IF_freq.,Step size(All in MHz)?",F1,F2,
  450. F3
  451. 4140  IF (F1<Fr1) OR (F2>Fr2) OR (F2<F1) OR (F3>F2-F1) OR (F3<=0) THEN 4130
  452. 4150  LINPUT "Do you want new Smoothing factor[Y/N]?",T$
  453. 4160  IF T$="Y" THEN GOSUB Smooth
  454. 4170  PRINT "MEASUREMENT RECEIVER"
  455. 4180  OUTPUT Sel,Anf;"M2,H1,T1"
  456. 4190  C=0
  457. 4200  FOR Fr=F4 TO F6 STEP F7
  458. 4210  IF Fr>=2000 THEN ON Lo GOSUB S8350a,S8672a
  459. 4220  IMAGE "LF",5D,"EN"
  460. 4230  OUTPUT Sel,Anf USING 4220;Fr
  461. 4240  FOR F=F1 TO F2 STEP F3
  462. 4250  C=C+1
  463. 4260  IMAGE "FR",4D,"EN","T2"
  464. 4270  OUTPUT Sel,Anf USING 4260;F
  465. 4280  IF Fr>=2000 THEN DISP "LO_freq.=";Fr;"MHz","IF_freq.=";F;"MHz"
  466. 4290  IF Fr<2000 THEN DISP "Freq.=";Fr;"MHz","IF_freq.=";F;"MHz"
  467. 4300  ENTER Sel,Anf USING "H,H,H";X,N(C,1),N(C,2)
  468. 4310  ON ERROR GOTO 4330
  469. 4320  N(C,3)=(10^(N(C,2)/10)-1)*(T_loss+273.2)    !  To be tested !
  470. 4330  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  471. 4340  OFF ERROR
  472. 4350  NEXT F
  473. 4360  IF (Fr+F7>F6) AND (Fr<>F6) THEN Fr=F6-F7
  474. 4370  NEXT Fr
  475. 4380  OUTPUT Sel,Anf;"T0"
  476. 4390  RETURN 
  477. 4400 ! .......................................................................
  478. 4410 Output:  ! PRINTS/DRAWS DUT(Amplifier or Mixer) DATA TABLE
  479. 4420  PRINTER IS 16
  480. 4430  PRINT PAGE
  481. 4440  IF L$="P" THEN Plot
  482. 4450  PRINT TAB(28);Title$
  483. 4460  PRINT 
  484. 4470  IF Date$="" THEN 4500
  485. 4480  PRINT TAB(55);"Date:";Date$
  486. 4490  PRINT 
  487. 4500  IMAGE /,17X,"FREQ.",8X,"GAIN ",8X,"NF",10X,"NF"/17X,"[MHZ]",8X,"[DB]",8X,"
  488. [DB]",8X,"Te[K]"/
  489. 4510  IMAGE /,17X,"LO FREQ.",5X,"GAIN ",8X,"NF",10X,"NF"/17X,"[MHZ]",8X,"[DB]",8
  490. X,"[DB]",8X,"Te[K]"/
  491. 4520  IF Kind$<>"M" THEN PRINT USING 4500
  492. 4530  IF Kind$="M" THEN PRINT USING 4510
  493. 4540  C=0
  494. 4550  FOR F=F1 TO F2 STEP F3
  495. 4560  C=C+1
  496. 4570  E=N(C,2)/1E6
  497. 4580  IF E<90000 THEN GOTO 4650
  498. 4590  E=E-90000
  499. 4600  IMAGE 16X,5D,X,"ERROR=",2D," SEE PULLOUT CARD"
  500. 4610  PRINT USING 4600;F,E
  501. 4620  GOTO 4690
  502. 4630  IMAGE 16X,5D,7X,3D.2D,6X,3D.2D,6X,5D
  503. 4640  IF Ncab<>2 THEN 4680
  504. 4650  N(C,1)=N(C,1)+Lc5+Lc6                      !  To be tested !
  505. 4660  N(C,2)=N(C,2)-Lc5                          !  To be tested !
  506. 4670  N(C,3)=(10^(N(C,2)/10)-1)*(273.2+Tec)      !  To be tested !
  507. 4680  PRINT USING 4630;F,N(C,1),N(C,2),N(C,3)
  508. 4690  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  509. 4700  NEXT F
  510. 4710  IF Ncab=2 THEN Ncab=3
  511. 4720  IMAGE //23X,3A,4D,"MHZ",5X,"SMOOTHING=",3D
  512. 4730  IMAGE 10X,"LOSS COMPENSATION: before DUT=",DD.D,"dB",3X,"after DUT=",DD.D,
  513. "dB",3X,"T=",SDDD,A,"C"
  514. 4740  IMAGE 10X,"                   before DUT=",DD.D,"dB",3X,"after DUT=",DD.D,
  515. "dB",3X,"T=",SDDD,A,"C"
  516. 4750  IF (A$="IF") AND (F1<=1500) THEN PRINT SPA(31);"SMOOTHING=";F5
  517. 4760  IF NOT ((A$="IF") AND (F1<=1500)) THEN PRINT USING 4720;A$&"=",F4,F5
  518. 4770  IF Loss$="F" THEN PRINT USING 4730;Lc1,Lc2,T_loss,CHR$(179)
  519. 4780  IF (Loss$="F") AND (Ncab=3) THEN PRINT USING 4740;Lc5,Lc6,Tec,CHR$(179)
  520. 4790  IF Loss$="V" THEN PRINT SPA(10),"LOSS COMPENSATION: varying"
  521. 4800  IF Hard=1 THEN 4860
  522. 4810  LINPUT "DO YOU WANT A HARD COPY[Y/N]?",T$
  523. 4820  IF T$<>"Y" THEN 4870
  524. 4830  PRINTER IS 0
  525. 4840  Hard=1
  526. 4850  GOTO 4450
  527. 4860  Hard=0
  528. 4870  PRINTER IS 16
  529. 4880  RETURN 
  530. 4890 ! ........................................................................
  531. 4900 Output_rec: ! PRINTS/DRAWS DUT(Receiver) DATA TABLE
  532. 4910  PRINTER IS 16
  533. 4920  PRINT PAGE
  534. 4930  IF L$="P" THEN Plot
  535. 4940  C=0
  536. 4950  Num=(F2-F1)/F3+1
  537. 4960  IF INT(Num)<>Num THEN Num=INT(Num)+1
  538. 4970  FOR Fr=F4 TO F6 STEP F7
  539. 4980  PRINT 
  540. 4990  PRINT TAB(24);Title$
  541. 5000  PRINT 
  542. 5010  IF Date$="" THEN 5040
  543. 5020  PRINT TAB(55);"Date:";Date$
  544. 5030  PRINT 
  545. 5040  PRINT TAB(24);"LO_freq.=";Fr;"MHz"
  546. 5050  IMAGE /,17X," IF .",8X,"GAIN ",8X,"NF",10X,"NF"/17X,"[MHZ]",8X,"[DB]",8X,"
  547. [DB]",8X,"Te[K]"/
  548. 5060  PRINT USING 5050
  549. 5070  C=C-Num*Hard
  550. 5080  FOR F=F1 TO F2 STEP F3
  551. 5090  C=C+1
  552. 5100  E=N(C,2)/10^6
  553. 5110  IF E<90000 THEN GOTO 5160
  554. 5120  E=E-90000
  555. 5130  IMAGE X,"LO_freq.=",5D,3X,"IF_freq=",4D,2X,"ERROR=",2D," SEE PULLOUT CARD"
  556. 5140  PRINT USING 5130;Fr,F,E
  557. 5150  GOTO 5180
  558. 5160  IMAGE 16X,5D,7X,3D.2D,6X,3D.2D,6X,5D.D
  559. 5170  PRINT USING 5160;F,N(C,1),N(C,2),N(C,3)
  560. 5180  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  561. 5190  NEXT F
  562. 5200  IF Hard=1 THEN 5280
  563. 5210  LINPUT "DO YOU WANT A HARD COPY[Y/N]?",T$
  564. 5220  IF T$<>"Y" THEN 5320
  565. 5230  PRINTER IS 0
  566. 5240  Hard=1
  567. 5250  GOTO 4980
  568. 5260  PRINT 
  569. 5270  PRINT 
  570. 5280  IF Hard=1 THEN PRINT USING 5340;F5,T_loss,CHR$(179)
  571. 5290  IF (Hard=1) AND (Loss$="F") THEN PRINT USING 5350;Lc1,Lc2
  572. 5300  Hard=0
  573. 5310  PRINTER IS 16
  574. 5320  IF (Fr+F7>F6) AND (Fr<>F6) THEN Fr=F6-F7
  575. 5330  NEXT Fr
  576. 5340  IMAGE //25X,"SMOOTHING=",2D,3X,"T=",SDDD,A,"C"
  577. 5350  IMAGE 10X,"LOSS COMPENSATION: before DUT=",DD.D,"dB",3X,"after DUT=",DD.D,
  578. "dB"
  579. 5360  PRINT USING 5340;F5,T_loss,CHR$(179)
  580. 5370  IF Loss$="F" THEN PRINT USING 5350;Lc1,Lc2
  581. 5380  Hard=0
  582. 5390  PRINTER IS 16
  583. 5400  RETURN 
  584. 5410 ! .........................................................................
  585. 5420 Plot:  ! DRAW GAIN and NOISE FIGURE GRAPHICS
  586. 5430  ! INITIAL VALUES
  587. 5440  D=Num=Fr=Bg=Tg=0
  588. 5450  IF Kind$<>"R" THEN 5540
  589. 5460  Fr=F4
  590. 5470  Num=(F2-F1)/F3+1
  591. 5480  IF INT(Num)<>Num THEN Num=INT(Num)+1
  592. 5490  PRINT "LO_frequency=";Fr
  593. 5500  LINPUT "DO YOU WANT GRAPHICS FOR THIS FREQUENCY[Y/N]?",T$
  594. 5510  IF T$<>"Y" THEN 7130
  595. 5520  IF Fr<>F4 THEN LINPUT "DO YOU WANT TO CHANGE DIMENSIONS[Y/N]?",T$
  596. 5530  IF T$<>"Y" THEN 5650
  597. 5540  LINPUT "Noise [F]igure or Noise [T]emperature?",T$
  598. 5550  Bn=0
  599. 5560  Tn=8
  600. 5570  IF T$<>"T" THEN INPUT "Noise Figure:BOTTOM SCALE,TOP SCALE(in dB, Default 
  601. 0,8)?",Bn,Tn  ! No check for correct input
  602. 5580  IF T$="T" THEN Tn=400
  603. 5590  IF T$="T" THEN INPUT "Noise Temperature:BOTTOM SCALE,TOP SCALE(in degrees 
  604. Kelvin,Default 0,400)?",Bn,Tn  ! No check for correct input
  605. 5600  Nt=2
  606. 5610  IF T$="T" THEN Nt=3
  607. 5620  Bg=0
  608. 5630  Tg=40
  609. 5640  INPUT "Gain:BOTTOM SCALE,TOP SCALE(in dB, Default 0,40)?",Bg,Tg ! No
  610.  check      for correct input
  611. 5650  PLOTTER IS 13,"GRAPHICS"
  612. 5660  GRAPHICS
  613. 5670  Plotter=13
  614. 5680  Ff=F2-F1
  615. 5690  C=Tn-Bn
  616. 5700  PEN 1
  617. 5710  LINE TYPE 1
  618. 5720  !    DEFINE THE AREAS.
  619. 5730  LOCATE 16,17,11,80
  620. 5740  SCALE 0,1,Bn,Tn
  621. 5750  AXES 0,C/8,1,Bn
  622. 5760  LOCATE 106,107,11,80
  623. 5770  SCALE 0,-1,Bn,Tn
  624. 5780  AXES 0,C/8,0,Bn
  625. 5790  LOCATE 17,106,10,11
  626. 5800  SCALE F1,F2,0,1
  627. 5810  AXES Ff/8,0,F1,1
  628. 5820  !    DRAW NOISE GRAPHIC.
  629. 5830  LOCATE 17,106,12,80
  630. 5840  SCALE F1,F2,Bn,Tn
  631. 5850  C=0
  632. 5860  PEN 2
  633. 5870  MOVE F1,N(1+D*Num,Nt)
  634. 5880  FOR F=F1 TO F2 STEP F3
  635. 5890  C=C+1
  636. 5900  DRAW F,N(C+D*Num,Nt)
  637. 5910  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  638. 5920  NEXT F
  639. 5930  !    DRAW GAIN GRAPHIC.
  640. 5940  LOCATE 17,106,12,80
  641. 5950  SCALE F1,F2,Bg,Tg
  642. 5960  C=0
  643. 5970  PEN 3
  644. 5980  IF Plotter=13 THEN LINE TYPE 5,1
  645. 5990  MOVE F1,N(1+D*Num,1)
  646. 6000  FOR F=F1 TO F2 STEP F3
  647. 6010  C=C+1
  648. 6020  DRAW F,N(C+D*Num,1)
  649. 6030  IF (F+F3>F2) AND (F<>F2) THEN F=F2-F3
  650. 6040  NEXT F
  651. 6050  !     TITLES THE X-Y COORDINATES AND LABELS.
  652. 6060  PEN 4
  653. 6070  C=Tg-Bg
  654. 6080  LINE TYPE 1
  655. 6090  LORG 4
  656. 6100  IF Date$="" THEN 6140
  657. 6110  CSIZE 2.5,1
  658. 6120  MOVE F1+.5*Ff,Tg+.09*C
  659. 6130  LABEL "Date:";Date$
  660. 6140  MOVE F1+.5*Ff,Tg+.05*C
  661. 6150  LABEL Title$
  662. 6160  IF Plotter<>13 THEN 6280
  663. 6170  MOVE F1+Ff/16,Bg
  664. 6180  DRAW F1+3*Ff/16,Bg
  665. 6190  CSIZE 2.5,.619
  666. 6200  MOVE F1+4.1*Ff/16,Bg
  667. 6210  LABEL "NOISE"
  668. 6220  LINE TYPE 5,1
  669. 6230  MOVE F1+3*Ff/8,Bg
  670. 6240  DRAW F1+4*Ff/8,Bg
  671. 6250  LINE TYPE 1
  672. 6260  MOVE F1+4.50*Ff/8,Bg
  673. 6270  LABEL "GAIN"
  674. 6280  CSIZE 2.8,.619
  675. 6290  PEN 1
  676. 6300  FOR F=F1 TO F2 STEP Ff/8
  677. 6310  MOVE F,Bg-.06*C
  678. 6320  LABEL USING "K";F
  679. 6330  NEXT F
  680. 6340  MOVE F1+.5*Ff,Bg-.13*C
  681. 6350  CSIZE 3,.8
  682. 6360  IF Kind$<>"R" THEN LABEL "FREQUENCY [MHz]"
  683. 6370  IF Kind$="R" THEN LABEL "IF FREQUENCY [MHz]"
  684. 6380  PEN 4
  685. 6390  MOVE F1+.5*Ff,Tg
  686. 6400  IF (Kind$<>"R") AND NOT ((A$="IF") AND (F1<=1500)) THEN LABEL A$;" freq.="
  687. ;F4;"MHz"
  688. 6410  IF Kind$="R" THEN LABEL "LO freq.=";Fr;"MHz"
  689. 6420  LORG 2
  690. 6430  PEN 3
  691. 6440  CSIZE 2.8,.619
  692. 6450  FOR F=Bg TO Tg STEP C/8
  693. 6460  MOVE F2+.03*Ff,F
  694. 6470  LABEL USING "3D.DD";F
  695. 6480  NEXT F
  696. 6490  LORG 4
  697. 6500  DEG
  698. 6510  LDIR 90
  699. 6520  SETGU
  700. 6530  CSIZE 3,.8
  701. 6540  MOVE 123,50
  702. 6550  LABEL "GAIN [dB]"
  703. 6560  RAD
  704. 6570  LDIR 0
  705. 6580  SETUU
  706. 6590  SCALE F1,F2,Bn,Tn
  707. 6600  PEN 2
  708. 6610  LORG 8
  709. 6620  C=Tn-Bn
  710. 6630  CSIZE 2.8,.619
  711. 6640  FOR F=Bn TO Tn STEP C/8
  712. 6650  MOVE F1-.025*Ff,F
  713. 6660  IF Nt=2 THEN LABEL USING "3D.DD";F
  714. 6670  IF Nt=3 THEN LABEL USING "4D";F
  715. 6680  NEXT F
  716. 6690  DEG
  717. 6700  LDIR 90
  718. 6710  LORG 6
  719. 6720  SETGU
  720. 6730  CSIZE 3,.8
  721. 6740  MOVE 0,50
  722. 6750  IF Nt=2 THEN LABEL "NOISE FIGURE [dB]"
  723. 6760  IF Nt=3 THEN LABEL "NOISE TEMPERATURE [K]"
  724. 6770  RAD
  725. 6780  LDIR 0
  726. 6790  SETUU
  727. 6800  BEEP
  728. 6810  IF Plotter=9872 THEN 7000
  729. 6820  SETGU
  730. 6830  LORG 3
  731. 6840  MOVE 0,95
  732. 6850  LABEL "TO CONTINUE PRESS CONT KEY"
  733. 6860  PRINT "TO CONTINUE PRESS CONT KEY"
  734. 6870  PAUSE 
  735. 6880  PRINT PAGE
  736. 6890  LINPUT "DUMP GRAPHICS[Y/N]?",T$
  737. 6900  IF T$<>"Y" THEN 7040
  738. 6910  PEN -1
  739. 6920  MOVE 0,95
  740. 6930  LABEL "TO CONTINUE PRESS CONT KEY"
  741. 6940  OUTPUT 0 USING "#,K";CHR$(27)&"&l0T" !The perforations is ignored
  742. 6950  DUMP GRAPHICS 
  743. 6960  OUTPUT 0 USING "#,K";CHR$(27)&"&l36T" !The perforations is retrieved
  744. 6970  GOTO 7030
  745. 6980  ! 
  746. 6990  !   MODES.
  747. 7000  PEN 4
  748. 7010  LINPUT "LETTER MODE[Y/N]?",T$
  749. 7020  IF T$="Y" THEN LETTER
  750. 7030  PEN 0
  751. 7040  SETUU
  752. 7050  LINPUT "DO YOU WANT THE PLOTTER HARD COPY[Y/N]?",T$
  753. 7060  IF T$<>"Y" THEN 7110
  754. 7070  PEN 1
  755. 7080  Plotter=9872
  756. 7090  PLOTTER IS Sel,Plotad,Plotter$
  757. 7100  GOTO 5690
  758. 7110  IF Plotter=9872 THEN PLOTTER Sel,Plotad IS OFF
  759. 7120  IF Kind$<>"R" THEN 7160
  760. 7130  Fr=Fr+F7
  761. 7140  D=(Fr-F4)/F7
  762. 7150  IF Fr<=F6 THEN 5490
  763. 7160  EXIT GRAPHICS
  764. 7170  RETURN 
  765.