diff --git a/lib/decoder.f90 b/lib/decoder.f90
index e3ee60a15..badfa3eda 100644
--- a/lib/decoder.f90
+++ b/lib/decoder.f90
@@ -8,6 +8,7 @@ subroutine decoder(ntrSeconds,ndepth,nRxLog,c00)
parameter (NSMAX=22000) !Max length of saved spectra
character*22 msg
character*33 line
+ character*80 fmt
real*4 ccfred(NSMAX)
integer*1 i1SoftSymbols(207)
integer*2 id2
@@ -38,18 +39,23 @@ subroutine decoder(ntrSeconds,ndepth,nRxLog,c00)
if(ntrMinutes.eq.1) then
nsps=6912
df3=1500.0/2048.0
+ fmt='(i4.4,i4,i5,f6.1,f8.0,f6.2,3x,a22)'
else if(ntrMinutes.eq.2) then
nsps=15360
df3=1500.0/2048.0
+ fmt='(i4.4,i4,i5,f6.1,f8.1,f6.2,3x,a22)'
else if(ntrMinutes.eq.5) then
nsps=40960
df3=1500.0/6144.0
+ fmt='(i4.4,i4,i5,f6.1,f8.1,f6.2,3x,a22)'
else if(ntrMinutes.eq.10) then
nsps=82944
df3=1500.0/12288.0
+ fmt='(i4.4,i4,i5,f6.1,f8.2,f6.2,3x,a22)'
else if(ntrMinutes.eq.30) then
nsps=252000
df3=1500.0/32768.0
+ fmt='(i4.4,i4,i5,f6.1,f8.2,f6.2,3x,a22)'
endif
if(nsps.eq.0) stop 'Error: bad TRperiod' !Better: return an error code###
@@ -88,14 +94,13 @@ subroutine decoder(ntrSeconds,ndepth,nRxLog,c00)
if(ccfred(i).gt.sbest .and. fgood.eq.0.0) then
sbest=ccfred(i)
- write(line,1010) nutc,nsync,nsnr,xdt,1000.0+fpk,width
+ write(line,fmt) nutc,nsync,nsnr,xdt,1000.0+fpk,width
if(nsync.gt.0) nsynced=1
endif
if(msg.ne.' ') then
- write(13,1010) nutc,nsync,nsnr,xdt,1000.0+fpk,width,msg
-1010 format(i4.4,i4,i5,f6.1,f8.2,f6.2,3x,a22)
- write(14,1010) nutc,nsync,nsnr,xdt,1000.0+fpk,width,msg
+ write(13,fmt) nutc,nsync,nsnr,xdt,1000.0+fpk,width,msg
+ write(14,fmt) nutc,nsync,nsnr,xdt,1000.0+fpk,width,msg
fgood=f
nsynced=1
ndecoded=1
diff --git a/lib/jt9.f90 b/lib/jt9.f90
index 0451bd7c1..713e2e850 100644
--- a/lib/jt9.f90
+++ b/lib/jt9.f90
@@ -39,7 +39,7 @@ program jt9
nfa=1000
nfb=2000
! ntol=500
- ntol=20
+ ntol=500
nfqso=1500
newdat=1
nb=0
@@ -60,7 +60,7 @@ program jt9
if(ntrperiod.eq.5) nsps=40960
if(ntrperiod.eq.10) nsps=82944
if(ntrperiod.eq.30) nsps=252000
- if(nsps.eq.0) stop 'Error: bad TRprtiod'
+ if(nsps.eq.0) stop 'Error: bad TRperiod'
kstep=nsps/2
tstep=kstep/12000.0
diff --git a/lib/pctile.f90 b/lib/pctile.f90
index a8ae161aa..35ee3a7dd 100644
--- a/lib/pctile.f90
+++ b/lib/pctile.f90
@@ -1,41 +1,21 @@
-subroutine pctile(x,npts,npct,xmedian)
+subroutine pctile(x,npts,npct,xpct)
- real x(npts)
- integer hist(0:1000)
+ parameter (NMAX=32768)
+ real*4 x(npts)
+ real*4 tmp(NMAX)
if(npts.le.0) then
- xmedian=1.0
+ xpct=1.0
go to 900
endif
+ if(npts.gt.NMAX) stop
- ave=sum(x)/npts
- s=0.
- ns=0
- do i=1,npts
- if(x(i).lt.3.0*ave) then
- s=s+x(i)
- ns=ns+1
- endif
- enddo
- ave=s/ns
-
- hist=0
- do i=1,npts
- j=nint(100.0*x(i)/ave)
- if(j.lt.0) j=0
- if(j.gt.1000) j=1000
- hist(j)=hist(j)+1
- enddo
-
- nsum=0
- ntest=nint(npts*float(npct)/100.0)
- do j=0,1000
- nsum=nsum+hist(j)
- if(nsum.ge.ntest) exit
- enddo
-
- xmedian=j*ave/100.0
- if(j.lt.10) xmedian=1.0
+ tmp(1:npts)=x
+ call sort(npts,tmp)
+ j=nint(npts*0.01*npct)
+ if(j.lt.1) j=1
+ if(j.gt.npts) j=npts
+ xpct=tmp(j)
900 continue
return
diff --git a/lib/spec9.f90 b/lib/spec9.f90
index fd876657d..bcf1cb0f0 100644
--- a/lib/spec9.f90
+++ b/lib/spec9.f90
@@ -3,7 +3,8 @@ subroutine spec9(c0,npts8,nsps,fpk0,fpk,xdt,snrdb,i1SoftSymbols)
parameter (MAXFFT=31500)
complex c0(0:npts8-1)
complex c1(0:2700000)
- real ssym(0:7,69)
+ real*4 ssym(0:7,69)
+ real*4 sx(0:31500-1)
complex c(0:MAXFFT-1)
integer*1 i1SoftSymbolsScrambled(207)
integer*1 i1SoftSymbols(207)
@@ -65,8 +66,8 @@ subroutine spec9(c0,npts8,nsps,fpk0,fpk,xdt,snrdb,i1SoftSymbols)
call four2a(c,nfft,1,-1,1)
do i=0,nfft-1
- sx=real(c(i))**2 + aimag(c(i))**2
- if(i.ge.1 .and. i.le.8) ssym(ig(i-1),k)=sx
+ sx(i)=real(c(i))**2 + aimag(c(i))**2
+ if(i.ge.1 .and. i.le.8) ssym(ig(i-1),k)=sx(i)
enddo
enddo
@@ -82,11 +83,12 @@ subroutine spec9(c0,npts8,nsps,fpk0,fpk,xdt,snrdb,i1SoftSymbols)
sum=sum-smax
enddo
ave=sum/(69*7)
+ call pctile(sx,nsps8,50,xmed)
ssym=ssym/ave
sig=sig/69.
df8=1500.0/nsps8
- t=max(1.0,sig/ave - 1.0)
- snrdb=db(t) - db(2500.0/df8)
+ t=max(1.0,sig/xmed - 1.0)
+ snrdb=db(t) - db(2500.0/df8) - 5.0
m0=3
ntones=8
diff --git a/mainwindow.cpp b/mainwindow.cpp
index 0d73fe817..3328d921e 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -1,4 +1,4 @@
-//--------------------------------------------------------------- MainWindow
+//---------------------------------------------------------------- MainWindow
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "devsetup.h"
diff --git a/mainwindow.ui b/mainwindow.ui
index 4988149ee..c9665ea7f 100644
--- a/mainwindow.ui
+++ b/mainwindow.ui
@@ -66,7 +66,7 @@
- UTC Sync dB DT Freq Width
+ UTC Sync dB DT Freq Drift
-