'RASDISP - program to display SOLRAS data DECLARE SUB Selectfile (ext$, filnam$) DIM lr%(256), lg%(256), lb%(256), mst(8) GOSUB Setups DO CLOSE #1 SCREEN 2 SCREEN 0, 0, 0 GOSUB OpenFile GOSUB InitDisplay IF NOT EOF(1) THEN 'get initial time record rec$ = INPUT$(164, #1) GOSUB GetTimeSpec minrange% = minr% GOSUB TimeAxisLabel LOCATE 25, 32 PRINT hr%; GOSUB DisplayRecord END IF DO DO WHILE NOT EOF(1) rec$ = INPUT$(164, #1) IF rec$ <> "" THEN GOSUB GetTimeSpec IF minr% <> minrange% THEN EXIT DO GOSUB DisplayRecord END IF LOOP DO a$ = INKEY$ IF a$ = esc$ THEN EXIT DO LOOP WHILE a$ <> cr$ IF a$ = esc$ THEN EXIT DO minrange% = minr% GOSUB TimeAxisLabel LOCATE 25, 32 PRINT hr%; LOOP LOOP END Setups: cr$ = CHR$(13) esc$ = CHR$(27) site$ = "LEARMONTH" RETURN GetTimeSpec: tms% = CVI(LEFT$(rec$, 2)) hr% = tms% \ 600 IF tms% MOD 600 > 299 THEN minr% = 1 ELSE minr% = 0 min10% = tms% MOD 300 RETURN TimeAxisLabel: IF minrange% = 0 THEN COLOR 64 LOCATE 24, 3 PRINT "0 10 20 30"; ELSE COLOR 64 LOCATE 24, 3 PRINT "30 40 50 60"; END IF COLOR 66 RETURN Palet: SCREEN 13 GOSUB SRSLUT 'set up palette RED = 1 GRN = 256 BLU = 65536 YEL = RED + GRN WHT = RED + GRN + BLU FOR i% = 0 TO 255 PALETTE i%, (RED * lr%(i%) + GRN * lg%(i%) + BLU * lb%(i%)) NEXT i% RETURN InitDisplay: GOSUB Palet LINE (18, 10)-(319, 93), 255, B LINE (18, 95)-(319, 177), 255, B th = 0 'time ref / determines which 30 mins FOR i = 19 TO 319 STEP 10 'minute markers LINE (i, 178)-(i, 179), 255 NEXT i FOR i = 19 TO 319 STEP 100 '10 minute markers LINE (i, 180)-(i, 183), 255 NEXT i COLOR 255 LOCATE 7, 1 PRINT "HI"; LOCATE 17, 1 PRINT "LO"; COLOR 50 LOCATE 22, 1 PRINT "50"; LOCATE 13, 1 PRINT "100"; LOCATE 12, 1 PRINT "120"; LOCATE 2, 1 PRINT "220"; LOCATE 1, 2 COLOR 200 PRINT " SOLRAS DISPLAY "; TAB(32); LEFT$(filnam$, 8); LOCATE 25, 7 COLOR 255 PRINT "Time/Minutes Hour= LT"; RETURN OpenFile: CALL Selectfile("SSS", filnam$) IF filnam$ = "" THEN END OPEN filnam$ FOR BINARY AS #1 RETURN DisplayRecord: it% = min10% + 19 FOR i% = 3 TO 83 clr% = ASC(MID$(rec$, i%, 1)) PSET (it%, 179 - i%), clr% NEXT i% FOR i% = 84 TO 164 clr% = ASC(MID$(rec$, i%, 1)) PSET (it%, 176 - i%), clr% NEXT i% RETURN SRSLUT: msl = 255 / ((256 - 4) / 4) mst(0) = (256 - 4) / 8 mst(1) = (256 - 4) / 8 + (256 - 4) / 16 FOR k = 2 TO 8 mst(k) = (256 - 4) * k / 8 NEXT k FOR n = 0 TO 255 IF n < mst(0) THEN lr%(n) = n * msl lg%(n) = n * msl lb%(n) = n * msl END IF IF n >= mst(0) AND n < mst(1) THEN lr%(n) = 127 - (n - mst(0)) * msl lg%(n) = 127 - (n - mst(0)) * msl lb%(n) = 127 + (n - mst(0)) * msl END IF IF n >= mst(1) AND n < mst(2) THEN lr%(n) = 64 + (n - mst(1)) * msl lg%(n) = 64 + (n - mst(1)) * msl lb%(n) = 191 + (n - mst(1)) * msl END IF IF n >= mst(2) AND n < mst(3) THEN lr%(n) = 127 + (n - mst(2)) * msl lg%(n) = 127 + (n - mst(2)) * msl lb%(n) = 255 - (n - mst(2)) * msl END IF IF n >= mst(3) AND n < mst(4) THEN lr%(n) = 255 lg%(n) = 255 - (n - mst(3)) * msl lb%(n) = 127 END IF IF n >= mst(4) AND n < mst(5) THEN lr%(n) = 255 - (n - mst(4)) * msl lg%(n) = 127 + (n - mst(4)) * msl lb%(n) = 127 END IF IF n >= mst(5) AND n < mst(6) THEN lr%(n) = 127 + (n - mst(5)) * msl lg%(n) = 255 - (n - mst(5)) * msl lb%(n) = 127 + (n - mst(5)) * msl END IF IF n >= mst(6) AND n < mst(7) THEN lr%(n) = 255 - (n - mst(6)) * msl lg%(n) = 127 + (n - mst(6)) * msl lb%(n) = 255 END IF IF n >= mst(7) AND n < mst(8) THEN lr%(n) = 127 + (n - mst(7)) * msl lg%(n) = 255 lb%(n) = 255 END IF IF n >= mst(8) THEN lr%(n) = 255 lg%(n) = 255 lb%(n) = 255 END IF lr%(n) = lr%(n) \ 4 lg%(n) = lg%(n) \ 4 lb%(n) = lb%(n) \ 4 NEXT n RETURN SUB Selectfile (ext$, filnam$) 'this routine displays all files in current directory/path with the extension 'ext$. It then allows selection of one of these files and returns to the 'calling with this filename (including extension) in filnam$. If no files are 'present or if the escape key is pressed then filnam$ is empty DIM nam$(176) FOR it = 1 TO 176 nam$ = "" NEXT it filnam$ = "" cr$ = CHR$(13) nul$ = "" esc$ = CHR$(27) up$ = CHR$(0) + CHR$(72) dn$ = CHR$(0) + CHR$(80) lf$ = CHR$(0) + CHR$(75) rt$ = CHR$(0) + CHR$(77) nfiles = 0 'no. of files found ovf = 0 'less than 176 files found SCREEN 0, 0, 0 COLOR 1, 7 CLS LOCATE 3, 1 SHELL "DIR *." + ext$ + " > DIREC.TMP" 'use DIREC.TMP as temp file OPEN "DIREC.TMP" FOR INPUT AS #4 DO WHILE NOT EOF(4) LINE INPUT #4, l$ IF MID$(l$, 10, 3) = ext$ THEN nfiles = nfiles + 1 IF nfiles > 176 THEN nfiles = 1: ovf = 1 nam$(nfiles) = " " + LEFT$(l$, 8) + " " PRINT nam$(nfiles); END IF LOOP CLOSE #4 LOCATE 1, 1 PRINT "Solar Radio Spectrograph files available are:" i = nfiles 'i is the linear coordinate index IF nfiles = 0 THEN SLEEP 2 filnam$ = "" GOTO SUBEND END IF GOSUB Getcoords 'return x,y coordinates & row r, col c GOSUB Highlight 'highlights entry at coords x,y LOCATE 25, 1 COLOR 14, 1 PRINT " Use arrows to highlight choice, to select, to exit"; TAB(80); " "; COLOR 1, 7 IF ovf = 1 THEN nfiles = 176 GOSUB Getcoords xmax = x ymax = y DO GOSUB Move IF mov$ = esc$ THEN filnam$ = nul$: GOTO SUBEND IF mov$ = cr$ THEN EXIT DO IF mov$ <> nul$ THEN GOSUB UnHighlight i = newi GOSUB Getcoords GOSUB Highlight END IF LOOP filnam$ = nam$(i) GOTO SUBEND Move: mov$ = INKEY$ SELECT CASE mov$ CASE up$ IF y > 1 THEN y = y - 1 ELSE y = ymax CASE dn$ IF y < ymax THEN y = y + 1 ELSE y = 1 CASE lf$ IF x > 1 THEN x = x - 1 ELSE x = 8 CASE rt$ IF x < 8 THEN x = x + 1 ELSE x = 1 CASE nul$, cr$, esc$ RETURN CASE ELSE BEEP END SELECT newi = 8 * y - 8 + x RETURN Getcoords: y = 1 x = i DO UNTIL x < 9 x = x - 8 y = y + 1 LOOP R = y + 2 c = 10 * x - 9 LOCATE 24, 1 RETURN Highlight: COLOR 14, 1 LOCATE R, c pp$ = nam$(i) IF pp$ = nul$ THEN PRINT " "; ELSE PRINT pp$; COLOR 1, 7 RETURN UnHighlight: COLOR 1, 7 LOCATE R, c pp$ = nam$(i) IF pp$ = nul$ THEN PRINT " "; ELSE PRINT pp$; RETURN SUBEND: IF filnam$ <> nul$ THEN filnam$ = MID$(filnam$, 2, 8) + ".SSS" END IF KILL "DIREC.TMP" 'purge temporary file END SUB