2012-05-22 13:09:48 -04:00
|
|
|
program m65
|
|
|
|
|
|
|
|
! Decoder for map65. Can run stand-alone, reading data from *.tf2 files;
|
|
|
|
! or as the back end of map65, with data placed in a shared memory region.
|
|
|
|
|
|
|
|
parameter (NSMAX=60*96000)
|
|
|
|
parameter (NFFT=32768)
|
|
|
|
integer*2 i2(4,87)
|
|
|
|
real*8 hsym
|
|
|
|
real*4 ssz5a(NFFT)
|
|
|
|
logical*1 lstrong(0:1023)
|
|
|
|
common/tracer/limtrace,lu
|
|
|
|
real*8 fc0,fcenter
|
|
|
|
character*80 arg,infile
|
|
|
|
character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20
|
|
|
|
common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fc0,nutc0,junk(34)
|
|
|
|
common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, &
|
|
|
|
ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, &
|
|
|
|
mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,mode65, &
|
|
|
|
mycall,mygrid,hiscall,hisgrid,datetime
|
|
|
|
|
|
|
|
nargs=iargc()
|
|
|
|
if(nargs.lt.1) then
|
|
|
|
print*,'Usage: m65 [95238] file1 [file2 ...]'
|
|
|
|
print*,' Reads data from *.tf2 files.'
|
|
|
|
print*,''
|
|
|
|
print*,' m65 -s'
|
|
|
|
print*,' Gets data from shared memory region.'
|
|
|
|
go to 999
|
|
|
|
endif
|
|
|
|
call getarg(1,arg)
|
|
|
|
if(arg(1:2).eq.'-s') then
|
|
|
|
call m65a
|
|
|
|
call ftnquit
|
|
|
|
go to 999
|
|
|
|
endif
|
|
|
|
nfsample=96000
|
|
|
|
nxpol=1
|
|
|
|
mode65=2
|
|
|
|
ifile1=1
|
|
|
|
if(arg.eq.'95238') then
|
|
|
|
nfsample=95238
|
|
|
|
call getarg(2,arg)
|
|
|
|
ifile1=2
|
|
|
|
endif
|
|
|
|
|
|
|
|
limtrace=0
|
|
|
|
lu=12
|
|
|
|
nfa=100
|
|
|
|
nfb=162
|
|
|
|
nfshift=6
|
|
|
|
ndepth=2
|
|
|
|
nfcal=344
|
|
|
|
idphi=-50
|
|
|
|
ntol=500
|
|
|
|
nkeep=10
|
|
|
|
|
|
|
|
call ftninit('.')
|
|
|
|
|
|
|
|
do ifile=ifile1,nargs
|
|
|
|
call getarg(ifile,infile)
|
|
|
|
open(10,file=infile,access='stream',status='old',err=998)
|
|
|
|
i1=index(infile,'.tf2')
|
|
|
|
read(infile(i1-4:i1-1),*,err=1) nutc0
|
|
|
|
go to 2
|
|
|
|
1 nutc0=0
|
|
|
|
2 hsym=2048.d0*96000.d0/11025.d0 !Samples per half symbol
|
|
|
|
nhsym0=-999
|
|
|
|
k=0
|
|
|
|
fcenter=144.125d0
|
|
|
|
mousedf=0
|
|
|
|
mousefqso=125
|
|
|
|
newdat=1
|
|
|
|
mycall='K1JT'
|
|
|
|
|
|
|
|
if(ifile.eq.ifile1) call timer('m65 ',0)
|
|
|
|
do irec=1,9999999
|
|
|
|
call timer('read_tf2',0)
|
|
|
|
read(10) i2
|
|
|
|
call timer('read_tf2',1)
|
|
|
|
|
|
|
|
call timer('float ',0)
|
|
|
|
do i=1,87
|
|
|
|
k=k+1
|
|
|
|
dd(1,k)=i2(1,i)
|
|
|
|
dd(2,k)=i2(2,i)
|
|
|
|
dd(3,k)=i2(3,i)
|
|
|
|
dd(4,k)=i2(4,i)
|
|
|
|
enddo
|
|
|
|
call timer('float ',1)
|
|
|
|
nhsym=(k-2048)/hsym
|
|
|
|
if(nhsym.ge.1 .and. nhsym.ne.nhsym0) then
|
|
|
|
ndiskdat=1
|
|
|
|
nb=0
|
|
|
|
! Emit signal readyForFFT
|
|
|
|
call timer('symspec ',0)
|
|
|
|
fgreen=-13.0
|
|
|
|
iqadjust=1
|
|
|
|
iqapply=1
|
|
|
|
nbslider=100
|
|
|
|
gainx=0.9962
|
|
|
|
gainy=1.0265
|
|
|
|
phasex=0.01426
|
|
|
|
phasey=-0.01195
|
|
|
|
call symspec(k,nxpol,ndiskdat,nb,nbslider,idphi,nfsample,fgreen, &
|
|
|
|
iqadjust,iqapply,gainx,gainy,phasex,phasey,rejectx,rejecty, &
|
|
|
|
pxdb,pydb,ssz5a,nkhz,ihsym,nzap,slimit,lstrong)
|
|
|
|
call timer('symspec ',1)
|
|
|
|
nhsym0=nhsym
|
|
|
|
if(ihsym.ge.278) go to 10
|
|
|
|
endif
|
|
|
|
enddo
|
|
|
|
|
|
|
|
10 continue
|
|
|
|
if(iqadjust.ne.0) write(*,3002) rejectx,rejecty
|
|
|
|
3002 format('Image rejection:',2f7.1,' dB')
|
|
|
|
nutc=nutc0
|
|
|
|
nstandalone=1
|
|
|
|
call decode0(dd,ss,savg,nstandalone,nfsample)
|
|
|
|
enddo
|
|
|
|
|
|
|
|
call timer('m65 ',1)
|
|
|
|
call timer('m65 ',101)
|
|
|
|
call ftnquit
|
|
|
|
go to 999
|
|
|
|
|
|
|
|
998 print*,'Cannot open file:'
|
|
|
|
print*,infile
|
|
|
|
|
|
|
|
999 end program m65
|