| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  | subroutine genft8(msg,i3,n3,msgsent,msgbits,itone)
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Encode an FT8 message, producing array itone().
 | 
					
						
							|  |  |  |   
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  |   use packjt77
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  |   include 'ft8_params.f90'
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  |   character msg*37,msgsent*37
 | 
					
						
							|  |  |  |   character*77 c77
 | 
					
						
							|  |  |  |   integer*1 msgbits(77),codeword(174)
 | 
					
						
							|  |  |  |   integer itone(79)
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  |   integer icos7(0:6)
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  |   integer graymap(0:7)
 | 
					
						
							|  |  |  |   logical unpk77_success
 | 
					
						
							|  |  |  |   data icos7/3,1,4,0,6,5,2/                   !Costas 7x7 tone pattern
 | 
					
						
							|  |  |  |   data graymap/0,1,3,2,5,6,4,7/
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  |   i3=-1
 | 
					
						
							|  |  |  |   n3=-1
 | 
					
						
							|  |  |  |   call pack77(msg,i3,n3,c77)
 | 
					
						
							| 
									
										
										
										
											2018-12-20 15:08:29 -06:00
										 |  |  |   call unpack77(c77,0,msgsent,unpk77_success)
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  |   read(c77,'(77i1)',err=1) msgbits
 | 
					
						
							| 
									
										
										
										
											2018-11-27 15:34:01 -05:00
										 |  |  |   if(unpk77_success) go to 2
 | 
					
						
							| 
									
										
										
										
											2018-11-27 15:26:24 -05:00
										 |  |  | 1 msgbits=0
 | 
					
						
							|  |  |  |   itone=0
 | 
					
						
							|  |  |  |   msgsent='*** bad message ***                  '
 | 
					
						
							| 
									
										
										
										
											2018-11-27 15:34:01 -05:00
										 |  |  |   go to 900
 | 
					
						
							| 
									
										
										
										
											2017-08-01 18:16:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 14:16:39 -05:00
										 |  |  | entry get_ft8_tones_from_77bits(msgbits,itone) 
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  | 2  call encode174_91(msgbits,codeword)      !Encode the test message
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Message structure: S7 D29 S7 D29 S7
 | 
					
						
							|  |  |  |   itone(1:7)=icos7
 | 
					
						
							|  |  |  |   itone(36+1:36+7)=icos7
 | 
					
						
							|  |  |  |   itone(NN-6:NN)=icos7
 | 
					
						
							|  |  |  |   k=7
 | 
					
						
							|  |  |  |   do j=1,ND
 | 
					
						
							|  |  |  |      i=3*j -2
 | 
					
						
							|  |  |  |      k=k+1
 | 
					
						
							|  |  |  |      if(j.eq.30) k=k+7
 | 
					
						
							| 
									
										
										
										
											2018-11-05 11:59:48 -05:00
										 |  |  |      indx=codeword(i)*4 + codeword(i+1)*2 + codeword(i+2)
 | 
					
						
							|  |  |  |      itone(k)=graymap(indx)
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  |   enddo
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-27 15:34:01 -05:00
										 |  |  | 900 return
 | 
					
						
							| 
									
										
										
										
											2017-07-08 14:06:48 +00:00
										 |  |  | end subroutine genft8
 |