mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-28 23:28:49 -05:00
159 lines
4.3 KiB
FortranFixed
159 lines
4.3 KiB
FortranFixed
|
subroutine deep65(s3,mode65,neme,nsked,flip,mycall,hiscall,
|
||
|
+ hisgrid,decoded,qual)
|
||
|
|
||
|
parameter (MAXCALLS=7000,MAXRPT=63)
|
||
|
real s3(64,63)
|
||
|
character callsign*12,grid*4,message*22,hisgrid*6,c*1,ceme*3
|
||
|
character*12 mycall,hiscall
|
||
|
character*22 decoded,deepmsg
|
||
|
character*22 testmsg(2*MAXCALLS + 2 + MAXRPT)
|
||
|
character*15 callgrid(MAXCALLS)
|
||
|
character*80 line
|
||
|
character*4 rpt(MAXRPT)
|
||
|
logical first
|
||
|
integer ncode(63,2*MAXCALLS)
|
||
|
common/tmp8/ p(64,63)
|
||
|
|
||
|
data neme0/-99/
|
||
|
data rpt/'-01','-02','-03','-04','-05',
|
||
|
+ '-06','-07','-08','-09','-10',
|
||
|
+ '-11','-12','-13','-14','-15',
|
||
|
+ '-16','-17','-18','-19','-20',
|
||
|
+ '-21','-22','-23','-24','-25',
|
||
|
+ '-26','-27','-28','-29','-30',
|
||
|
+ 'R-01','R-02','R-03','R-04','R-05',
|
||
|
+ 'R-06','R-07','R-08','R-09','R-10',
|
||
|
+ 'R-11','R-12','R-13','R-14','R-15',
|
||
|
+ 'R-16','R-17','R-18','R-19','R-20',
|
||
|
+ 'R-21','R-22','R-23','R-24','R-25',
|
||
|
+ 'R-26','R-27','R-28','R-29','R-30',
|
||
|
+ 'RO','RRR','73'/
|
||
|
|
||
|
rewind 23
|
||
|
k=0
|
||
|
icall=0
|
||
|
do n=1,MAXCALLS
|
||
|
if(n.eq.1) then
|
||
|
callsign=hiscall
|
||
|
do i=4,12
|
||
|
if(ichar(callsign(i:i)).eq.0) callsign(i:i)=' '
|
||
|
enddo
|
||
|
grid=hisgrid(1:4)
|
||
|
if(ichar(grid(3:3)).eq.0) grid(3:3)=' '
|
||
|
if(ichar(grid(4:4)).eq.0) grid(4:4)=' '
|
||
|
else
|
||
|
read(23,1002,end=20) line
|
||
|
1002 format(a80)
|
||
|
if(line(1:2).eq.'//') go to 10
|
||
|
i1=index(line,',')
|
||
|
if(i1.lt.4) go to 10
|
||
|
i2=index(line(i1+1:),',')
|
||
|
if(i2.lt.5) go to 10
|
||
|
i2=i2+i1
|
||
|
i3=index(line(i2+1:),',')
|
||
|
if(i3.lt.1) i3=index(line(i2+1:),' ')
|
||
|
i3=i2+i3
|
||
|
callsign=line(1:i1-1)
|
||
|
grid=line(i1+1:i2-1)
|
||
|
ceme=line(i2+1:i3-1)
|
||
|
if(neme.eq.1 .and. ceme.ne.'EME') go to 10
|
||
|
endif
|
||
|
|
||
|
5 icall=icall+1
|
||
|
j1=index(mycall,' ') - 1
|
||
|
if(j1.lt.3) j1=6
|
||
|
j2=index(callsign,' ') - 1
|
||
|
if(j2.lt.3) j2=6
|
||
|
j3=index(mycall,'/')
|
||
|
j4=index(callsign,'/')
|
||
|
callgrid(icall)=callsign(1:j2)
|
||
|
|
||
|
mz=1
|
||
|
if(n.eq.1) mz=MAXRPT+1
|
||
|
do m=1,mz
|
||
|
if(m.gt.1) grid=rpt(m-1)
|
||
|
if(j3.lt.1 .and.j4.lt.1)
|
||
|
+ callgrid(icall)=callsign(1:j2)//' '//grid
|
||
|
message=mycall(1:j1)//' '//callgrid(icall)
|
||
|
k=k+1
|
||
|
testmsg(k)=message
|
||
|
call encode65(message,ncode(1,k))
|
||
|
if(m.eq.1) then
|
||
|
message='CQ '//callgrid(icall)
|
||
|
k=k+1
|
||
|
testmsg(k)=message
|
||
|
call encode65(message,ncode(1,k))
|
||
|
endif
|
||
|
enddo
|
||
|
if(nsked.eq.1) go to 20
|
||
|
10 enddo
|
||
|
20 ntot=k
|
||
|
neme0=neme
|
||
|
|
||
|
sum0=0.
|
||
|
do j=1,63
|
||
|
smax=-1.e30
|
||
|
do i=1,64
|
||
|
smax=max(smax,s3(i,j))
|
||
|
enddo
|
||
|
sum0=sum0+smax
|
||
|
enddo
|
||
|
|
||
|
p1=-1.e30
|
||
|
ip1=0
|
||
|
p2=-1.e30
|
||
|
ip2=0
|
||
|
do k=1,ntot
|
||
|
C If sync=OOO, no CQ messages
|
||
|
if(flip.lt.0.0 .and. testmsg(k)(1:3).eq.'CQ ') go to 30
|
||
|
sum=0.
|
||
|
sum2=0.
|
||
|
do j=1,63
|
||
|
i=ncode(j,k)+1
|
||
|
sum=sum + s3(i,j)
|
||
|
sum2=sum2 + p(i,j)
|
||
|
enddo
|
||
|
if(sum.gt.p1) then
|
||
|
p1=sum
|
||
|
ip1=k
|
||
|
endif
|
||
|
if(sum2.gt.p2) then
|
||
|
p2=sum2
|
||
|
ip2=k
|
||
|
endif
|
||
|
30 enddo
|
||
|
|
||
|
p1=p1/sum0
|
||
|
qual=100.0*(p1-0.40)
|
||
|
if(mode65.eq.1) qual=100.0*(p1-0.33)
|
||
|
if(mode65.eq.4) qual=100.0*(p1-0.50)
|
||
|
if(qual.lt.0.) qual=0.
|
||
|
if(qual.gt.10.) qual=10.
|
||
|
decoded=' '
|
||
|
c=' '
|
||
|
if(qual.gt.0.0) then
|
||
|
if(qual.lt.4.0) c='?'
|
||
|
decoded=testmsg(ip1)
|
||
|
endif
|
||
|
decoded(22:22)=c
|
||
|
deepmsg=decoded
|
||
|
|
||
|
q2=0.27*p2 + 81.3
|
||
|
! if(mode65.eq.1) qual=100.0*(p1-0.33)
|
||
|
! if(mode65.eq.4) qual=100.0*(p1-0.50)
|
||
|
if(q2.lt.0.) q2=0.
|
||
|
if(q2.gt.10.) q2=10.
|
||
|
decoded=' '
|
||
|
c=' '
|
||
|
if(q2.gt.0.0) then
|
||
|
if(q2.lt.4.0) c='?'
|
||
|
decoded=testmsg(ip2)
|
||
|
endif
|
||
|
decoded(22:22)=c
|
||
|
|
||
|
! qual=q2
|
||
|
decoded=deepmsg
|
||
|
|
||
|
return
|
||
|
end
|