| 
									
										
										
										
											2016-07-02 12:15:41 +00:00
										 |  |  | subroutine genqra64(msg0,ichk,msgsent,itone,itype)
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-02 12:15:41 +00:00
										 |  |  | ! Encodes a QRA64 message to yield itone(1:84)
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   use packjt
 | 
					
						
							|  |  |  |   character*22 msg0
 | 
					
						
							|  |  |  |   character*22 message          !Message to be generated
 | 
					
						
							|  |  |  |   character*22 msgsent          !Message as it will be received
 | 
					
						
							| 
									
										
										
										
											2016-06-29 19:10:57 +00:00
										 |  |  |   integer itone(84)
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  |   character*3 cok               !'   ' or 'OOO'
 | 
					
						
							| 
									
										
										
										
											2016-11-08 20:11:02 +00:00
										 |  |  |   logical old_qra_sync
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  |   integer dgen(13)
 | 
					
						
							|  |  |  |   integer sent(63)
 | 
					
						
							| 
									
										
										
										
											2016-06-29 19:10:57 +00:00
										 |  |  |   integer icos7(0:6)
 | 
					
						
							|  |  |  |   data icos7/2,5,6,0,4,1,3/     !Defines a 7x7 Costas array
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  |   save
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if(msg0(1:1).eq.'@') then
 | 
					
						
							|  |  |  |      read(msg0(2:5),*,end=1,err=1) nfreq
 | 
					
						
							|  |  |  |      go to 2
 | 
					
						
							|  |  |  | 1    nfreq=1000
 | 
					
						
							|  |  |  | 2    itone(1)=nfreq
 | 
					
						
							| 
									
										
										
										
											2016-11-21 20:30:11 +00:00
										 |  |  |      write(msgsent,1000) nfreq
 | 
					
						
							|  |  |  | 1000 format(i5,' Hz')
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  |   else
 | 
					
						
							|  |  |  |      message=msg0
 | 
					
						
							|  |  |  |      do i=1,22
 | 
					
						
							|  |  |  |         if(ichar(message(i:i)).eq.0) then
 | 
					
						
							|  |  |  |            message(i:)='                      '
 | 
					
						
							|  |  |  |            exit
 | 
					
						
							|  |  |  |         endif
 | 
					
						
							|  |  |  |      enddo
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      do i=1,22                               !Strip leading blanks
 | 
					
						
							|  |  |  |         if(message(1:1).ne.' ') exit
 | 
					
						
							|  |  |  |         message=message(i+1:)
 | 
					
						
							|  |  |  |      enddo
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      call chkmsg(message,cok,nspecial,flip)
 | 
					
						
							| 
									
										
										
										
											2018-07-11 10:13:42 -04:00
										 |  |  |      call packmsg(message,dgen,itype)    !Pack message into 72 bits
 | 
					
						
							|  |  |  |      call unpackmsg(dgen,msgsent)        !Unpack to get message sent
 | 
					
						
							| 
									
										
										
										
											2016-06-29 19:10:57 +00:00
										 |  |  |      if(ichk.ne.0) go to 999             !Return if checking only
 | 
					
						
							| 
									
										
										
										
											2016-07-02 12:15:41 +00:00
										 |  |  |      call qra64_enc(dgen,sent)           !Encode using QRA64
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-08 20:11:02 +00:00
										 |  |  |      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
 | 
					
						
							| 
									
										
										
										
											2016-06-29 19:10:57 +00:00
										 |  |  |      itone(8:39)=sent(1:32)
 | 
					
						
							| 
									
										
										
										
											2016-11-08 20:11:02 +00:00
										 |  |  |      itone(40:46)=nsync*icos7
 | 
					
						
							| 
									
										
										
										
											2016-06-29 19:10:57 +00:00
										 |  |  |      itone(47:77)=sent(33:63)
 | 
					
						
							| 
									
										
										
										
											2016-11-08 20:11:02 +00:00
										 |  |  |      itone(78:84)=nsync*icos7
 | 
					
						
							| 
									
										
										
										
											2016-06-22 20:45:29 +00:00
										 |  |  |   endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 999 return
 | 
					
						
							| 
									
										
										
										
											2016-07-02 12:15:41 +00:00
										 |  |  | end subroutine genqra64
 |