diff --git a/lib/genqra64.f90 b/lib/genqra64.f90 index 4931342eb..babe7d692 100644 --- a/lib/genqra64.f90 +++ b/lib/genqra64.f90 @@ -4,15 +4,17 @@ subroutine genqra64(msg0,ichk,msgsent,itone,itype) use packjt character*22 msg0 - character*22 message !Message to be generated - character*22 msgsent !Message as it will be received - integer itone(84) - character*3 cok !' ' or 'OOO' + character*22 message !Message to be generated + character*22 msgsent !Message as it will be received + integer itone(85) !QRA64 uses only 84 + character*3 cok !' ' or 'OOO' logical old_qra_sync integer dgen(13) integer sent(63) + integer b11(11) !Barker 11 code integer icos7(0:6) - data icos7/2,5,6,0,4,1,3/ !Defines a 7x7 Costas array + data icos7/2,5,6,0,4,1,3/ !Defines a 7x7 Costas array + data b11/1,1,1,0,0,0,1,0,0,1,0/ !Barker 11 definition save if(msg0(1:1).eq.'@') then @@ -39,18 +41,31 @@ subroutine genqra64(msg0,ichk,msgsent,itone,itype) call chkmsg(message,cok,nspecial,flip) call packmsg(message,dgen,itype) !Pack message into 72 bits call unpackmsg(dgen,msgsent) !Unpack to get message sent - if(ichk.ne.0) go to 999 !Return if checking only + if(ichk.eq.1) go to 999 !Return if checking only call qra64_enc(dgen,sent) !Encode using QRA64 - nsync=10 - inquire(file='old_qra_sync',exist=old_qra_sync) - if(old_qra_sync) nsync=1 - - itone(1:7)=nsync*icos7 !Insert 7x7 Costas array in 3 places - itone(8:39)=sent(1:32) - itone(40:46)=nsync*icos7 - itone(47:77)=sent(33:63) - itone(78:84)=nsync*icos7 + if(ichk.eq.66) then +! Experimental QRA66 (FST66?) mode + j=0 + k=0 + do i=1,85 + if(mod(i,4).eq.1) then + j=j+1 !Index for next sync symbol + if(j.eq.12) j=1 + itone(i)=b11(j) !Insert a sync symbol + else + k=k+1 + itone(i)=sent(k) + 2 + endif + enddo + else +! Original QRA64 mode + itone(1:7)=10*icos7 !Insert 7x7 Costas array in 3 places + itone(8:39)=sent(1:32) + itone(40:46)=10*icos7 + itone(47:77)=sent(33:63) + itone(78:84)=10*icos7 + endif endif 999 return