The following pages contain the QuickBasic code of the METEOR program. Variables are defined at the end.
' METEOR program ' Anthony Mallama, 1996 ' Revised 30 Jan 1997 ' METEOR records and displays data from a radio AGC output for ' meteor detection. When the signal suddenly jumps by a threshold ' amount, the audio tone is checked. If the tone is enhanced a ' meteor is tallied, if not, a false trigger is tallied. The ' results are binned at intervals. ' * * * Beginning of Main Program * * * GOSUB AAinit 'define variables and initialize GOSUB UserInput 'get user supplied parameters GOSUB Power 'get initial power NextAudio: GOSUB Audio 'sample and autocorrelate audio NextPower: GOSUB Power 'sample signal power and plot it GOSUB RefreshScreen 'redraw the screen GOSUB PressQ 'allow user to quit the program GOSUB CheckTime 'proceed based on elapsed time IF GoPow GOTO NextPower GOTO NextAudio ' * * * End of Main Program * * * AAinit: ' Initialize everything that needs it 'Variables ScrNum = 600 ScrCnt = ScrNum RefAud$ = "T" PowInit = 1 AudInit = 1 AudDim = 1000 DIM Aud(-10 TO AudDim) 'The "Print Using" Formats 'For menu Format1$ = "(T)rigger Size ### (dB)" Format1a$ = "Quiet Signal(Z) #### (dB; 0 = off)" Format2$ = "(A)udio Increase ### (% correlation)" Format3$ = "(L)ong Duration ### (0.1 sec)" Format3a$ = "(D)B offset ##### (dB)" Format4$ = "(M)egahertz \ \ (tuned frequency)" Format5$ = "(B)and \ \ (USB/LSB)" Format6$ = "Antenna(X) \ \ (Dipole/Beam/Yagi)" Format6a$ = "Beam (P)ointing \ \ (North = 0, East = 90)" Format7$ = "(R)adio \ \ (R7100/R8500)" Format8$ = "(S)quelch \ \ (on/off)" Format9$ = "Loc(K) switch \ \ (on/off)" Format9a$ = "(N)oise blanker \ \ (on/off)" Format9b$ = "BF(O) frequency \ \ (+0.33 KHz)" Format9c$ = "(I)F shift \ \ (0)" Format9d$ = "Att(E)n/Gain \ \ (dB)" Format9e$ = "A(G)C speed \ \ (fast)" Format9f$ = "A(U)dio filter \ \ (off)" 'For printing configuration Format11$ = "Trigger Size ### dB" Format11a$ = "Quiet Signal #### dB 0 = off" Format12$ = "Audio Increase ### % correlation" Format13$ = "Long Duration ## 0.1 sec" Format13a$ = "DB offset ##### dB" Format14$ = "Megahertz \ \ " Format15$ = "Band \ \ " Format16$ = "Antenna \ \ " Format16a$ = "Beam Pointing \ \ " Format17$ = "Radio \ \ " Format18$ = "Squelch \ \ " Format19$ = "Lock switch \ \ " Format19a$ = "Noise blanker \ \ " Format19b$ = "BFO frequency \ \ " Format19c$ = "IF shift \ \ " Format19d$ = "Atten/Gain \ \ " Format19e$ = "AGC speed \ \ " Format19f$ = "Audio filter \ \ " 'For outputting data Format20$ = " ## ## ## ## ## ## #### #### #### ##### ##### ##### 0" Format21$ = " ## ## ## ## ## ## #### #### #### ##### ##### ##### -1" 'For data display screen Format31$ = "Meteors ######" Format32$ = "Longs ######" Format33$ = "False ######" Format34$ = "Minute ##" Format35$ = "Power ####" Format36$ = "Ref Audio ####" Format37$ = "Trg Audio ####" Format38$ = "Kaud ####" 'For saving configuration to disk Format40$ = "##### " Format41$ = "\ \,\ \,\ \,\ \,\ \,\ \,\ \" 'Analog/Digital board BADR = &H218 OUT BADR, &H10 FOR I = 0 TO 100 NEXT I LB = INP(BADR + 2) HB = INP(BADR + 3) 'Date and time OldTime = TIMER OldDay$ = DATE$ 'Remind user how to quit LOCATE 21, 1: PRINT "Press Q to quit" RETURN Audio: ' Sample audio input and autocorrelate ' Also accumulate audio and power for hourly averages 'Tell Power routine that last sample was an audio LastWasAud$ = "T" 'Set size of sample IF RefAud$ = "T" THEN N = AudDim IF RefAud$ = "F" THEN N = 250 'Take audio samples I = -10 'Throw out the first few 'A/D input GCR = &H1 OUT BADR, &H0 280 OUT BADR + 1, GCR 300 CSR = INP(BADR) IF CSR < 128 THEN 300 I = I + 1 IF I > N GOTO 600 LB = INP(BADR + 2) HB = INP(BADR + 3) Aud(I) = (256 * HB + LB) GOTO 280 600 'Look for frequency of the audio tone 'Get the sigma squared first SigSq = 0 Sum = 0 SumPr = 0 FOR I = 1 TO N Sum = Sum + Aud(I) NEXT I Avg = Sum / N FOR I = 1 TO N Aud(I) = Aud(I) - Avg SigSq = SigSq + Aud(I) * Aud(I) NEXT I AvgSigSq = SigSq / N BigAud = 0 'Look over the following range of sample spacings K1 = 12: K2 = 24 'Autocorrelate FOR K = K1 TO K2 Sets = INT(N / 2 / K) SumPr = 0 FOR J = 1 TO Sets j1 = (J - 1) * K * 2 j2 = j1 + K FOR I = 1 TO K Prod = Aud(j1 + I) * Aud(j2 + I) SumPr = SumPr + Prod NEXT I NEXT J AvgPr = SumPr / (Sets * K) IF AvgSigSq <> 0 THEN NewAud = AvgPr / AvgSigSq IF NewAud > BigAud THEN KeepAvgPr = AvgPr BigAud = NewAud KAud = K END IF NEXT K AudioFound = 100 * BigAud 'Finish up if this is a triggered audio IF RefAud$ = "F" THEN AudTrg = AudioFound LOCATE 7, 1: PRINT USING Format37$; AudTrg LOCATE 8, 1: PRINT USING Format38$; KAud AudTimeTrg = TIMER AudDayTrg$ = DATE$ RETURN END IF 'Proceed if this is a reference audio SampQui45 = SampQui45 + 1 SampQui60 = SampQui60 + 1 'Check for quiet signal flag IF (AudInit) OR (Quiet <> 0 AND PowNew <= Quiet AND LastJump > 10) OR (Quiet = 0) THEN 'Update reference audio AudRef = AudioFound 'Accumulate data for 60 minute samples SumAud60 = SumAud60 + AudioFound SumPow60 = SumPow60 + PowNew SumQui60 = SumQui60 + 1 Samp60 = Samp60 + 1 'Accumulate data for 45 minute samples SumAud45 = SumAud45 + AudioFound SumPow45 = SumPow45 + PowNew SumQui45 = SumQui45 + 1 Samp45 = Samp45 + 1 'Check for first reference audio IF AudInit THEN AudInit = 0: RETURN 'Plot and print reference audio COLOR 2: GOSUB PlotAudio: COLOR 7 LOCATE 6, 1: PRINT USING Format36$; AudRef LOCATE 7, 1: PRINT "Trg Audio " LOCATE 8, 1: PRINT USING Format38$; KAud END IF 'Allow 0.1 second to elapse OldAudTime = TIMER OldAudDay$ = DATE$ NewAudTime: AudTimeRef = TIMER AudDayRef$ = DATE$ IF AudTimeRef < OldAudTime + .1 THEN IF AudDayRef$ = OldAudDay$ GOTO NewAudTime END IF RETURN CheckTime: ' Check time for sampling signal & audio, and storing hourly data 'Check minute MIN$ = MID$(TIME$, 4, 2) IF MIN$ <> OldMin$ THEN OldMin$ = MIN$ MinCnt = MinCnt + 1 MinCnt45 = MinCnt45 + 1 END IF 'Get date/time at middle of 60 minute sample IF MinCnt = 30 THEN DateH$ = DATE$ TimeH$ = TIME$ Mo = VAL(LEFT$(DateH$, 2)) Da = VAL(MID$(DateH$, 4, 2)) Yr = VAL(RIGHT$(DateH$, 2)) Hr = VAL(LEFT$(TimeH$, 2)) Mn = VAL(MID$(TimeH$, 4, 2)) Sc = VAL(RIGHT$(TimeH$, 2)) END IF 'Get date/time at middle of 45 minute sample IF MinCnt45 = 22 THEN Date45$ = DATE$ Time45$ = TIME$ Mo45 = VAL(LEFT$(Date45$, 2)) Da45 = VAL(MID$(Date45$, 4, 2)) Yr45 = VAL(RIGHT$(Date45$, 2)) Hr45 = VAL(LEFT$(Time45$, 2)) Mn45 = VAL(MID$(Time45$, 4, 2)) Sc45 = VAL(RIGHT$(Time45$, 2)) END IF 'Compute and output 60 minute totals IF MinCnt = 60 THEN Meteors60 = Meteors - OldMeteors Longs60 = Longs - OldLongs Falses60 = Falses - OldFalses IF Samp60 > 0 THEN AvgPow60 = SumPow60 / Samp60 AvgAud60 = SumAud60 / Samp60 AvgQui60 = SumQui60 * 100 / SampQui60 END IF CLOSE #3 OPEN FileName$ FOR APPEND AS #3 IF Meteors60 >= 2 * Falses60 AND AvgQui60 >= 50 THEN PRINT #3, USING Format20$; Mo; Da; Yr; Hr; Mn; Sc; AvgPow60; AvgQui60; AvgAud60; Falses60; Longs60; Meteors60 ELSE PRINT #3, USING Format21$; Mo; Da; Yr; Hr; Mn; Sc; AvgPow60; AvgQui60; AvgAud60; Falses60; Longs60; Meteors60 END IF OldMeteors = Meteors OldLongs = Longs OldFalses = Falses SumPow60 = 0 SumAud60 = 0 SumQui60 = 0 Samp60 = 0 SampQui60 = 0 MinCnt = 0 END IF 'Compute and output 45 minute totals IF MinCnt45 = 45 THEN Meteors45 = Meteors - OldMeteors45 Longs45 = Longs - OldLongs45 Falses45 = Falses - OldFalses45 IF Samp45 > 0 THEN AvgPow45 = SumPow45 / Samp45 AvgAud45 = SumAud45 / Samp45 AvgQui45 = SumQui45 * 100 / SampQui45 END IF CLOSE #5 OPEN FileName45$ FOR APPEND AS #5 IF Meteors45 >= 2 * Falses45 AND AvgQui45 >= 50 THEN PRINT #5, USING Format20$; Mo45; Da45; Yr45; Hr45; Mn45; Sc45; AvgPow45; AvgQui45; AvgAud45; Falses45; Longs45; Meteors45 ELSE PRINT #5, USING Format21$; Mo45; Da45; Yr45; Hr45; Mn45; Sc45; AvgPow45; AvgQui45; AvgAud45; Falses45; Longs45; Meteors45 END IF OldMeteors45 = Meteors OldLongs45 = Longs OldFalses45 = Falses SumPow45 = 0 SumAud45 = 0 SumQui45 = 0 Samp45 = 0 SampQui45 = 0 MinCnt45 = 0 END IF 'Allow 0.1 sec between samples and watch for new day DoAgain: NewDay$ = DATE$ NewTime = TIMER IF NewDay$ <> OldDay$ GOTO OKtoGo IF NewTime < OldTime + .1 GOTO DoAgain OKtoGo: OldTime = NewTime OldDay$ = NewDay$ 'Get audio reference or power next? GoPow = 1 IF NewTime > AudTimeRef + 10 THEN GoPow = 0 IF NewDay$ <> AudDayRef$ THEN GoPow = 0 RETURN LongEcho: ' Test to see if this is a long duration echo TickCnt = TickCnt + 1 'Long duration established IF TickCnt >= LongDur THEN Longs = Longs + 1 TickCnt = 0 LongDB = 0 LOCATE 2, 1: PRINT USING Format32$; Longs END IF 'Power is still above threshold IF PowNew > LongDB THEN RETURN 'Not long enough LongDB = 0 TickCnt = 0 RETURN PlotAudio: ' Plot the audio correlation YAud = 100 + (100 - AudioFound) / 2.5 FOR J = -1 TO 1: FOR I = -1 TO 1 PSET (ScrCnt + I, YAud + J) NEXT I: NEXT J RETURN Power: ' Sample signal power from A/D board and convert to dBm units ' Look for power jump and sample audio if found 'Increment screen position counter ScrCnt = ScrCnt + 1 'Command board GCR = &H0 OUT BADR, &H0 OUT BADR + 1, GCR NotDone: CSR = INP(BADR) IF CSR < 128 GOTO NotDone LB = INP(BADR + 2) HB = INP(BADR + 3) 'Digital counts from DT2811 DT = 256 * HB + LB 'Conversion of weak signals to dBm PowOld = PowNew PowNew = INT(-DT / 25 + DBoffset - 50) 'First pass IF PowInit = 1 THEN PowInit = 0: RETURN 'Display signal strength PSET (ScrCnt, -PowNew) LOCATE 5, 1: PRINT USING Format35$; PowNew 'Processing long duration meteor echo IF Quiet = 0 AND LongDB THEN GOSUB LongEcho IF Quiet <> 0 AND LongDB = Quiet THEN GOSUB LongEcho 'Increment or reset duration of quiet signal if Quiet is on IF Quiet <> 0 THEN LastJump = LastJump + 1 IF PowNew > Quiet AND PowNew < PowOld + TrigSize THEN LastJump = 0 END IF 'Look for a trigger-sized jump in the signal power IF PowNew >= PowOld + TrigSize AND LastWasAud$ = "F" THEN 'Check time since last jump if Quiet is on IF (Quiet <> 0) AND (LastJump < 10) THEN LastJump = 0 RETURN END IF LastJump = 0 'Allow time from last triggered audio sample PowTime = TIMER PowDay$ = DATE$ IF PowDay$ <> AudDayTrg$ THEN AudTimeTrg = 0 IF PowTime > AudTimeTrg + 1! THEN 'Check audio RefAud$ = "F" GOSUB Audio RefAud$ = "T" 'Meteor or false IF AudTrg > AudRef + AudioPct THEN Meteors = Meteors + 1 LOCATE 1, 1: PRINT USING Format31$; Meteors COLOR 12: GOSUB PlotAudio: COLOR 7 IF Quiet = 0 THEN LongDB = PowNew IF Quiet <> 0 THEN LongDB = Quiet ELSE Falses = Falses + 1 LOCATE 3, 1: PRINT USING Format33$; Falses COLOR 9: GOSUB PlotAudio: COLOR 7 END IF END IF END IF 'Last sample was power, not audio LastWasAud$ = "F" RETURN PressQ: ' By pressing "q", the user can quit the program X$ = INKEY$ IF X$ = "q" OR X$ = "Q" THEN END RETURN RefreshScreen: ' Redraw the screen after it is filled with data IF ScrCnt < ScrNum THEN RETURN 'Clear screen and reset counter CLS ScrCnt = 0 'Print statistical info LOCATE 1, 1: PRINT USING Format31$; Meteors LOCATE 2, 1: PRINT USING Format32$; Longs LOCATE 3, 1: PRINT USING Format33$; Falses LOCATE 4, 1: PRINT USING Format34$; MinCnt LOCATE 5, 1: PRINT USING Format35$; PowNew LOCATE 6, 1: PRINT USING Format36$; AudRef LOCATE 7, 1: PRINT "Trg Audio " LOCATE 21, 1: PRINT "Press Q to quit" 'Plot horizontal lines at -100, -120, and -140 dBm COLOR 11 FOR Y = 100 TO 140 STEP 20 FOR X = 0 TO 600 STEP 20 PSET (ScrCnt + X, Y) NEXT X: NEXT Y COLOR 7 RETURN UserInput: ' Get user supplied parameters. Defaults are on disk file. 'Get default configuration from disk CLOSE #4: OPEN "C:\METEOR\METEOR.CFG" FOR INPUT AS #4 INPUT #4, TrigSize, Quiet, AudioPct, LongDur, DBoffset INPUT #4, MHz$, Band$, Antenna$, BeamP$, Radio$, Squelch$, Lock$ INPUT #4, NB$, BFO$, IFshift$, AttGain$, AGCspeed$, AudFilt$ CLOSE #4 'Output file name default FileNameBase$ = "C:\METEOR\" DateH$ = DATE$ FileNameBase$ = FileNameBase$ + LEFT$(DateH$, 6) + RIGHT$(DateH$, 2) FileName$ = FileNameBase$ + ".HR" FileName45$ = FileNameBase$ + ".45" GetConfig: CLS PRINT "Control:" PRINT USING Format1$; TrigSize PRINT USING Format1a$; Quiet PRINT USING Format2$; AudioPct PRINT USING Format3$; LongDur PRINT USING Format3a$; DBoffset PRINT "(F)ile Name ", FileName$ PRINT PRINT "Header:" PRINT USING Format4$; MHz$ PRINT USING Format5$; Band$ PRINT USING Format6$; Antenna$ PRINT USING Format6a$; BeamP$ PRINT USING Format7$; Radio$ PRINT USING Format8$; Squelch$ PRINT USING Format9$; Lock$ PRINT USING Format9a$; NB$ PRINT USING Format9b$; BFO$ PRINT USING Format9c$; IFshift$ PRINT USING Format9d$; AttGain$ PRINT USING Format9e$; AGCspeed$ PRINT USING Format9f$; AudFilt$ PRINT PRINT "(C)ontinue [else wait 20 seconds] (Q)uit" 'Allow processing to start by itself in case of power failure T1 = TIMER Time1: H$ = INKEY$ IF H$ <> "" GOTO Time3 T2 = TIMER IF T2 - T1 < 20 GOTO Time1 Time3: IF H$ = "" THEN H$ = "C" 'time out IF H$ = "T" OR H$ = "t" THEN INPUT "Trigger size ", TrigSize IF H$ = "Z" OR H$ = "z" THEN INPUT "Quiet power ", Quiet IF H$ = "A" OR H$ = "a" THEN INPUT "Audio increase ", AudioPct IF H$ = "L" OR H$ = "l" THEN INPUT "Long duration ", LongDur IF H$ = "D" OR H$ = "d" THEN INPUT "DB offset ", DBoffset IF H$ = "F" OR H$ = "f" THEN INPUT "File name ", FileName$ IF H$ = "M" OR H$ = "m" THEN INPUT "Megahertz ", MHz$ IF H$ = "B" OR H$ = "b" THEN INPUT "Band ", Band$ IF H$ = "X" OR H$ = "x" THEN INPUT "Antenna ", Antenna$ IF H$ = "P" OR H$ = "p" THEN INPUT "Beam Pointing ", BeamP$ IF H$ = "R" OR H$ = "r" THEN INPUT "Radio ", Radio$ IF H$ = "S" OR H$ = "s" THEN INPUT "Squelch control ", Squelch$ IF H$ = "K" OR H$ = "k" THEN INPUT "Lock switch ", Lock$ IF H$ = "N" OR H$ = "n" THEN INPUT "Noise blanker ", NB$ IF H$ = "O" OR H$ = "o" THEN INPUT "BFO ", BFO$ IF H$ = "I" OR H$ = "i" THEN INPUT "IF shift ", IFshift$ IF H$ = "E" OR H$ = "e" THEN INPUT "Attenuation/Gain ", AttGain$ IF H$ = "G" OR H$ = "g" THEN INPUT "AGC speed ", AGCspeed$ IF H$ = "U" OR H$ = "u" THEN INPUT "Audio peak filter ", AudFilt$ IF H$ = "C" OR H$ = "c" THEN GOTO ConfigOut IF H$ = "Q" OR H$ = "q" THEN END GOTO GetConfig ConfigOut: OPEN FileName$ FOR OUTPUT AS #3 PRINT #3, USING Format11$; TrigSize PRINT #3, USING Format11a$; Quiet PRINT #3, USING Format12$; AudioPct PRINT #3, USING Format13$; LongDur PRINT #3, USING Format13a$; DBoffset PRINT #3, USING Format14$; MHz$ PRINT #3, USING Format15$; Band$ PRINT #3, USING Format16$; Antenna$ PRINT #3, USING Format16a$; BeamP$ PRINT #3, USING Format17$; Radio$ PRINT #3, USING Format18$; Squelch$ PRINT #3, USING Format19$; Lock$ PRINT #3, USING Format19a$; NB$ PRINT #3, USING Format19b$; BFO$ PRINT #3, USING Format19c$; IFshift$ PRINT #3, USING Format19d$; AttGain$ PRINT #3, USING Format19e$; AGCspeed$ PRINT #3, USING Format19f$; AudFilt$ PRINT #3, "Quality Flags:" PRINT #3, "-2: flagged manually as bad" PRINT #3, "-1: meteors < 2 * false or quiet < 50" PRINT #3, " 0: OK" PRINT #3, "+1: flagged manually as good" PRINT #3, PRINT #3, " <-- MID TIME --> <---- AVERAGE ----> <------ COUNT -------> QUL" PRINT #3, " MO DA YR HR MN SC SIGNAL QUIET AUDIO FALSE LONG METEOR FLG" PRINT #3, " ======== ======== ====== ====== ====== ====== ====== ====== ===" OPEN FileName45$ FOR OUTPUT AS #5 PRINT #5, USING Format11$; TrigSize PRINT #5, USING Format11a$; Quiet PRINT #5, USING Format12$; AudioPct PRINT #5, USING Format13$; LongDur PRINT #5, USING Format13a$; DBoffset PRINT #5, USING Format14$; MHz$ PRINT #5, USING Format15$; Band$ PRINT #5, USING Format16$; Antenna$ PRINT #5, USING Format16a$; BeamP$ PRINT #5, USING Format17$; Radio$ PRINT #5, USING Format18$; Squelch$ PRINT #5, USING Format19$; Lock$ PRINT #5, USING Format19a$; NB$ PRINT #5, USING Format19b$; BFO$ PRINT #5, USING Format19c$; IFshift$ PRINT #5, USING Format19d$; AttGain$ PRINT #5, USING Format19e$; AGCspeed$ PRINT #5, USING Format19f$; AudFilt$ PRINT #5, "Quality Flags:" PRINT #5, "-2: flagged manually as bad" PRINT #5, "-1: meteors < 2 * false or quiet < 50" PRINT #5, " 0: OK" PRINT #5, "+1: flagged manually as good" PRINT #5, PRINT #5, " <-- MID TIME --> <---- AVERAGE ----> <------ COUNT -------> QUL" PRINT #5, " MO DA YR HR MN SC SIGNAL QUIET AUDIO FALSE LONG METEOR FLG" PRINT #5, " ======== ======== ====== ====== ====== ====== ====== ====== ===" 'Save chosen parameters as default for next run OPEN "C:\METEOR\METEOR.CFG" FOR OUTPUT AS #4 PRINT #4, USING Format40$; TrigSize; Quiet; AudioPct; LongDur; DBoffset PRINT #4, USING Format41$; MHz$; Band$; Antenna$; BeamP$; Radio$; Squelch$; Lock$ PRINT #4, USING Format41$; NB$; BFO$; IFshift$; AttGain$; AGCspeed$; AudFilt$ CLOSE #4 'Screen Mode CLS SCREEN 8 COLOR 7 'Error trapping ON ERROR GOTO NextPower RETURN ZZdocument: ' AGCspeed$ response speed of radio automatic gain control ' Antenna$ type of antenna used ' AttGain$ attenuation or gain applied to signal ' Aud(AudDim) array for audio samples ' AudFilt$ setting of radio audio filter ' AudInit flag that this is the first pass through Audio ' AudioFound autocorrelation in percent ' AudioPct correlation threshold for a confirmation ' AudDim maximum number of audio samples ' AudRef reference autocorrelation in percent ' AudDayRef$ date of last reference audio ' AudDayTrg$ date of last triggered audio ' AudTimeRef time of last reference audio ' AudTimeTrg time of last triggered audio ' AudTrg triggered autocorrelation in percent ' AvgAud45 average reference audio correlation in 45 minutes ' AvgAud60 average reference audio correlation in 60 minutes ' AvgPow45 average signal power in 45 minutes ' AvgPow60 average signal power in 60 minutes ' AvgQui45 average quiet signal time in 45 minutes ' AvgAud60 average quiet signal time in 60 minutes ' AvgSigSq average sigma squared in Audio routine ' Band$ flag for upper or lower sideband ' BADR base address for A/D board ' BeamP$ antenna's beam pointing (0 = north, 90 = east) ' BFO$ setting of radio beat frequency oscillator ' BigAud largest autocorrelation found (temporary) ' DateH$ temporary holder for DATE$ ' Da day of month ' DBoffset number of dBs to add to signal ' DT digital counts from A/D board ' Falses cumulative number of false triggers ' Falses45 number of false triggers in 45 minutes ' Falses60 number of false triggers in 60 minutes ' FileName$ name of hourly output file ' FileName45$ name of 45 minute output file ' HB high byte from A/D board ' Hr hour ' IFshift$ setting of radio intermediate frequency shift ' K1 lower limit of audio sample spacing ' K2 upper limit of audio sample spacing ' KAud frequency of largest ref audio correlation ' LastWasAud$ flag that the last sample taken was audio ' LastJump number of ticks since last non-quiet signal ' LB low byte from A/D board ' Lock$ setting of radio tuning lock ' Longs cumulative number of long duration meteor echoes ' Longs45 number of long meteors in 45 minutes ' Longs60 number of long meteors in 60 minutes ' LongDur minimum duration of a long echo in 0.1 seconds ' Meteors cumulative number of meteors ' Meteors45 number of meteors in 45 minutes ' Meteors60 number of meteors in 60 minutes ' MHz$ tuning frequency ' MinCnt minute counter for 60 minute binning ' MinCnt45 minute counter for 45 minute binning ' Mn minute ' Mo month ' N actual number of audio samples ' NB$ setting of radio noise blanker ' NewDay$ date used for comparison in CheckTime code ' NewTime time used for comparison in CheckTime code ' OldAudTime time for letting 1 s elapse after ref audio ' OldAudDay$ date for letting 1 s elapse after ref audio ' OldDay$ date used for comparison in CheckTime code ' OldFalses used to compute false triggers in 60 minutes ' OldFalses45 used to compute false triggers in 45 minutes ' OldLongs used to compute long meteors in 60 minutes ' OldLongs45 used to compute long meteors in 45 minutes ' OldMeteors used to compute meteors in 60 minutes ' OldMeteors45 used to compute meteors in 45 minutes ' OldMin$ used to count minutes for 45 and 60 min samples ' OldTime time used for comparison in CheckTime code ' PowInit flag that this is the first pass through Power ' PowOld used from trigger evaluation in Power ' PowNew latest power sample ' PowTime time of latest power sample ' PowDate date of latest power sample ' Quiet minimum dB level, 0 = not used ' Radio$ radio model: R7100 or R8500 ' RefAud$ reference (T) versus triggered (F) audio ' Samp45 number of samples taken in 45 minutes ' Samp60 number of samples taken in 60 minutes ' SampQui45 for computing % quiet in 45 minutes ' SampQui60 for computing % quiet in 60 minutes ' Sc second ' ScrNum number of points to plot on the screen ' ScrCnt counter for plotting on screen ' Sets number of sets of audio samples to correlate ' SigSq summation for sigma squared in Audio routine ' Squelch$ setting of radio squelch control ' SumAud45 summation for average audio correl in 45 minutes ' SumAud60 summation for average audio correl in 60 minutes ' SumPow45 summation for average signal in 45 minutes ' SumPow60 summation for average signal in 60 minutes ' SumQui45 summation for average quiet time in 45 minutes ' SumQui60 summation for average quiet time in 60 minutes ' T1 used in automatic starting of program ' T2 used in automatic starting of program ' TickCnt tick counter used in evaluating long echoes ' TimeH$ temporary holder for TIME$ ' TrigSize signal power jump needed for a triggering ' YAud y coordinate for plotting audio correlation ' Yr last 2 digits of year