[Previous Page] [Contents] [Exit]

APPENDIX

METEOR PROGRAM LISTING

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

[Previous Page] [Contents] [Exit]