mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6524 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
subroutine setup65
 | 
						|
 | 
						|
! Defines arrays related to the JT65 pseudo-random synchronizing pattern.
 | 
						|
! Executed at program start.
 | 
						|
 | 
						|
  use jt65_mod
 | 
						|
  integer nprc(126)
 | 
						|
 | 
						|
! JT65
 | 
						|
  data nprc/                                   &
 | 
						|
      1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0, &
 | 
						|
      0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1, &
 | 
						|
      0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1, &
 | 
						|
      0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1, &
 | 
						|
      1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, &
 | 
						|
      0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, &
 | 
						|
      1,1,1,1,1,1/
 | 
						|
  data mr2/0/                !Silence compiler warning
 | 
						|
 | 
						|
! Put the appropriate pseudo-random sequence into pr
 | 
						|
  nsym=126
 | 
						|
  do i=1,nsym
 | 
						|
     pr(i)=2*nprc(i)-1
 | 
						|
  enddo
 | 
						|
 | 
						|
! Determine locations of data and reference symbols
 | 
						|
  k=0
 | 
						|
  mr1=0
 | 
						|
  do i=1,nsym
 | 
						|
     if(pr(i).lt.0.0) then
 | 
						|
        k=k+1
 | 
						|
        mdat(k)=i
 | 
						|
     else
 | 
						|
        mr2=i
 | 
						|
        if(mr1.eq.0) mr1=i
 | 
						|
     endif
 | 
						|
  enddo
 | 
						|
  nsig=k
 | 
						|
 | 
						|
! Determine the reference symbols for each data symbol.
 | 
						|
  do k=1,nsig
 | 
						|
     m=mdat(k)
 | 
						|
     mref(k,1)=mr1
 | 
						|
     do n=1,10                     !Get ref symbol before data
 | 
						|
        if((m-n).gt.0) then
 | 
						|
           if (pr(m-n).gt.0.0) go to 10
 | 
						|
        endif
 | 
						|
     enddo
 | 
						|
     go to 12
 | 
						|
10   mref(k,1)=m-n
 | 
						|
12   mref(k,2)=mr2
 | 
						|
     do n=1,10                     !Get ref symbol after data
 | 
						|
        if((m+n).le.nsym) then
 | 
						|
           if (pr(m+n).gt.0.0) go to 20
 | 
						|
        endif
 | 
						|
     enddo
 | 
						|
     cycle
 | 
						|
20   mref(k,2)=m+n
 | 
						|
  enddo
 | 
						|
 | 
						|
! Now do it all again, using opposite logic on pr(i)
 | 
						|
  k=0
 | 
						|
  mr1=0
 | 
						|
  do i=1,nsym
 | 
						|
     if(pr(i).gt.0.0) then
 | 
						|
        k=k+1
 | 
						|
        mdat2(k)=i
 | 
						|
     else
 | 
						|
        mr2=i
 | 
						|
        if(mr1.eq.0) mr1=i
 | 
						|
     endif
 | 
						|
  enddo
 | 
						|
  nsig=k
 | 
						|
 | 
						|
  do k=1,nsig
 | 
						|
     m=mdat2(k)
 | 
						|
     mref2(k,1)=mr1
 | 
						|
     do n=1,10
 | 
						|
        if((m-n).gt.0) then
 | 
						|
           if (pr(m-n).lt.0.0) go to 110
 | 
						|
        endif
 | 
						|
     enddo
 | 
						|
     go to 112
 | 
						|
110  mref2(k,1)=m-n
 | 
						|
112  mref2(k,2)=mr2
 | 
						|
     do n=1,10
 | 
						|
        if((m+n).le.nsym) then
 | 
						|
           if (pr(m+n).lt.0.0) go to 120
 | 
						|
        endif
 | 
						|
     enddo
 | 
						|
     cycle
 | 
						|
120  mref2(k,2)=m+n
 | 
						|
  enddo
 | 
						|
 | 
						|
  return
 | 
						|
end subroutine setup65
 |