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