100 REM PROGRAM 'DMMPOST.BAS' POST-PROCESSES THE DATA FILE 'OUT.DAT' CREATED 110 REM BY ANY OF THE 'DMM----.BAS' RADIOTELESCOPE DATA COLLECTION PROGRAMS. 120 REM BY R. B. MINTON FOR IBM/IBM CLONE IN GW BASIC, 4 NOVEMBER 2000. 130 DEF FNA(X)=INT(X*10+.5)/10: REM ROUND TO 1 DECIMAL POINT 140 DEF FNB(X)=INT(X*100+.5)/100: REM ROUND TO 2 DECIMAL POINTS 150 DEF FNC(X)=INT(X*1000+.5)/1000: REM ROUND TO 3 DECIMAL POINTS 160 DEF FNL(X)=LOG(X)/LOG(10): REM LOG BASE 10 OF X 170 FIL$="OUT.DAT": REM INPUT FILENAME 180 SCREEN 0: KEY OFF: CLS 190 YAM=.316725: REM Y-AXIS MULTIPLIER FOR 30 DB AMP. 200 YOF=100: REM Y-AXIS OFFSET (IN MILLIVOLTS) 210 DROOP=-1.5: REM DROOP OF DISH FROM TRUE AXIS (DEG.) 220 DEC=-15.638: REM CURRENT DECLINATION OF SUN (DEG.) 230 LAT=36.907: REM LATITUDE OF OBSERVER, DEG. (RATON) 240 SEL=180-(LAT+90-(DEC)): REM SOLAR ELEVATION AT TRANSIT, DEG. 250 PEL=SEL-DROOP: REM SETTING FOR PROTRACTOR ELEVATION 260 NSAM=576: REM # SAMPLES (96MIN X 6 SAM/MIN) 270 OPEN FIL$ FOR INPUT AS 3: REM OPEN INPUT FILE 280 INPUT #3,START$,SDATE$,STIME$,UN$: STIME$="11:14:00" 290 INPUT #3,D$,T$,SIG: UN$=" mV" 300 T1$="96 Min. Plot (Max) of 3.7 to 4.2 GHz Radiotelescope Signal Voltage Levels" 310 HSP=640-1: VSP=200-1: REM MAXIMUM SCREEN VALUES 320 CLS: SCREEN 2: REM SET-UP SCREEN 330 VIEW SCREEN (0,0)-(HSP,VSP): REM DEFINE ACTIVE DRAWING AREA 340 TB=17: BB=40: LB=6: RB=57: REM SIZE OF EACH (4) BORDERS 350 NHP=HSP-(LB+RB): NVP=VSP-(TB+BB): REM # AVAIL HORZ/VERT PIXELS 360 LINE (LB,TB)-(HSP-RB,VSP-BB),,B: REM BOX AROUND NEW BORDERS 370 REM --------------------------------- 380 REM DRAW X/Y AXIS LABEL AND TIC MARKS 390 REM --------------------------------- 400 TA$="U146 R60 D146": REM MAJOR VERTICAL TIC STRING 410 DRAW "BM 6,163": REM MOVE TO BOTTOM POSITION 420 FOR I=0 TO 8: REM DRAW TICS 430 DRAW "TA 0;XTA$;": REM TURN ANGLE & TIC 440 NEXT I 450 TB$="U144 R12 D144": REM MINOR VERTICAL TIC STRING 460 DRAW "BM 6,161": REM MOVE TO BOTTOM POSITION 470 FOR I=0 TO 47: REM DRAW TICS 480 DRAW "TA 0;XTB$;": REM TURN ANGLE & TIC 490 NEXT I 500 HO$=" " 510 FOR I=2 TO 16 STEP 2: REM PRINT BLANK LINES AS GRIDS 520 LOCATE I+2,1: PRINT HO$ 530 NEXT I 540 FOR I=0 TO 3: REM DRAW I TIMES 550 LOCATE 22,1+(I*15): REM LOCATE CURSOR FOR TIC # 560 TICNO=I*20: REM COMPUTE TIC # 570 DA$=STR$(TICNO): REM MAKE IT A STRING 580 DA$=RIGHT$(DA$,2): REM USE RIGHT 2 DIGITS 590 PRINT DA$ 600 NEXT I 610 LOCATE 3,75: PRINT UN$ 620 LOCATE 22,49: PRINT"Min." 630 FOR I=2 TO 18 STEP 2: REM PRINT Y-AXIS LABEL 640 LOCATE (2+I),74 650 V$=STR$(50*(9!-(I/2))+YOF) 660 PRINT"_"+V$ 670 NEXT I 680 LOCATE 1,2: PRINT T1$: REM LABEL 1 FOR TOP OF GRAPH 690 SMAX=-9999: SMIN=9999: N=0 700 REM CONTINUE 710 FOR I=1 TO NSAM: REM LOOP FOR # OF DATA POINTS 720 FLG=1: REM SET TO 1 IF NO NEW MAX OR MIN 730 IF I>1 THEN GOTO 780 740 LOCATE 23,2:PRINT" " 750 LOCATE 23,2:PRINT"0 Min. = ";STIME$;" MST/MDT ON ";SDATE$ 760 LOCATE 23,45:PRINT" " 770 LOCATE 23,45:PRINT"Object = Sun, declination ";DEC 780 REM CONTINUE 790 J=INT(I): REM WIDTH OF 1 PIXEL FOR 1 DATA POINT 800 IF EOF (3) THEN GOTO 960: REM EXIT IF EOF 810 INPUT #3,D$,T$,SIG: REM GET ANOTHER DATA POINT 820 N=N+1 830 SIG=FNA(SIG): REM ROUND TO 1 DECIMAL POINT 840 IF SIG>SMAX THEN FLG=2: SMAX=SIG: TMAX$=T$: REM SAVE SIGNAL MAX. 850 IF SIG1 THEN LINE -(XXX,YYY): REM THEN CONNECT WITH LINES 940 GOSUB 1010: REM PRINT MAX/MIN IF REQ'D 950 NEXT I 960 REM CONTINUE 970 CLOSE #3: REM CLOSE 'OUT.DAT' 980 GOSUB 1100: REM FIND TIMES OF 1/2 MAX SIGNAL 990 GOTO 990: REM LOOP FOREVER 1000 END 1010 REM SUBROUTINE TO PRINT MAXIMUM AND MINIMUM ------------------------------ 1020 ON FLG GOTO 1090,1030,1060: REM BRANCH ON FLAG = 1, 2, OR 3 1030 FLG=1: LOCATE 6,52:PRINT"Max: " 1040 LOCATE 6,56:PRINT USING "####.#";SMAX 1050 LOCATE 6,62:PRINT" @ "+TMAX$: GOTO 1090 1060 FLG=1: LOCATE 4,52:PRINT"Min: " 1070 LOCATE 4,56:PRINT USING "####.#";SMIN 1080 LOCATE 4,62:PRINT" @ "+TMIN$: GOTO 1090 1090 RETURN 1100 REM SUBROUTINE TO FIND TIMES OF 1/2 MAX SIGNAL (-3 TO -2 DB) & BEAMWIDTH 1110 DIM MV(N+1),FD(N+1) 1120 OPEN FIL$ FOR INPUT AS 3: REM OPEN INPUT FILE 1130 INPUT #3,START$,SDATE$,STIME$,UN$ 1140 I=0: VMIN=9999: VMAX=-9999 1150 REM CONTINUE: REM READ ANOTHER LINE 1160 IF EOF (3) THEN GOTO 1260: REM EXIT IF EOF 1170 I=I+1 1180 INPUT #3,D$,T$,MV(I) 1190 HR$=(MID$(T$,1,2)): HR=VAL(HR$) 1200 MN$=(MID$(T$,4,2)): MN=VAL(MN$) 1210 SC$=(MID$(T$,7,2)): SC=VAL(SC$) 1220 FD(I)=(HR/24)+(MN/1440)+(SC/86400!): REM FRACTIONAL DAY 1230 IF MV(I)>VMAX THEN VMAX=MV(I): TMAX=FD(I) 1240 IF MV(I)MID THEN TIMEUP=FD(I): FLG=1: GOSUB 1570 1430 IF FD(I)HPP THEN FLG=1: RBW=FNC(I) 1730 NEXT I 1740 RETURN