| 
									
										
										
										
											2015-04-22 17:48:03 +00:00
										 |  |  | subroutine extract4(sym0,ncount,decoded)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   use packjt
 | 
					
						
							|  |  |  |   real sym0(207)
 | 
					
						
							|  |  |  |   real sym(207)
 | 
					
						
							|  |  |  |   character decoded*22
 | 
					
						
							|  |  |  |   character*72 c72
 | 
					
						
							|  |  |  |   integer*1 symbol(207)
 | 
					
						
							|  |  |  |   integer*1 data1(13)                   !Decoded data (8-bit bytes)
 | 
					
						
							|  |  |  |   integer   data4a(9)                   !Decoded data (8-bit bytes)
 | 
					
						
							|  |  |  |   integer   data4(12)                   !Decoded data (6-bit bytes)
 | 
					
						
							|  |  |  |   integer mettab(-128:127,0:1)          !Metric table
 | 
					
						
							|  |  |  |   logical first
 | 
					
						
							|  |  |  |   data first/.true./
 | 
					
						
							|  |  |  |   save first,mettab,ndelta
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if(first) then
 | 
					
						
							|  |  |  |      call getmet4(mettab,ndelta)
 | 
					
						
							|  |  |  |      first=.false.
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | !### Optimize these params: ...
 | 
					
						
							|  |  |  |   amp=30.0
 | 
					
						
							|  |  |  |   limit=10000
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ave0=sum(sym0)/207.0
 | 
					
						
							|  |  |  |   sym=sym0-ave0
 | 
					
						
							|  |  |  |   sq=dot_product(sym,sym)
 | 
					
						
							|  |  |  |   rms0=sqrt(sq/206.0)
 | 
					
						
							|  |  |  |   sym=sym/rms0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   do j=1,207
 | 
					
						
							|  |  |  |      n=nint(amp*sym(j))
 | 
					
						
							|  |  |  |      if(n.lt.-127) n=-127
 | 
					
						
							|  |  |  |      if(n.gt.127) n=127
 | 
					
						
							|  |  |  |      symbol(j)=n
 | 
					
						
							|  |  |  |   enddo
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   nbits=72
 | 
					
						
							|  |  |  |   ncycles=0
 | 
					
						
							|  |  |  |   ncount=-1
 | 
					
						
							|  |  |  |   decoded='                      '
 | 
					
						
							|  |  |  |   call interleave4(symbol(2),-1)          !Remove the interleaving
 | 
					
						
							|  |  |  |   call fano232(symbol(2),nbits+31,mettab,ndelta,limit,data1,     &
 | 
					
						
							|  |  |  |        ncycles,metric,ncount)
 | 
					
						
							|  |  |  |   nlim=ncycles/(nbits+31)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | !### Make usage here like that in jt9fano...
 | 
					
						
							|  |  |  |   if(ncount.ge.0) then
 | 
					
						
							|  |  |  |      do i=1,9
 | 
					
						
							|  |  |  |         i4=data1(i)
 | 
					
						
							|  |  |  |         if(i4.lt.0) i4=i4+256
 | 
					
						
							|  |  |  |         data4a(i)=i4
 | 
					
						
							|  |  |  |      enddo
 | 
					
						
							|  |  |  |      write(c72,1100) (data4a(i),i=1,9)
 | 
					
						
							|  |  |  | 1100 format(9b8.8)
 | 
					
						
							|  |  |  |      read(c72,1102) data4
 | 
					
						
							|  |  |  | 1102 format(12b6)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-11 10:13:42 -04:00
										 |  |  |      call unpackmsg(data4,decoded)
 | 
					
						
							| 
									
										
										
										
											2015-04-22 17:48:03 +00:00
										 |  |  |      if(decoded(1:6).eq.'000AAA') then
 | 
					
						
							|  |  |  | !        decoded='***WRONG MODE?***'
 | 
					
						
							|  |  |  |         decoded='                      '
 | 
					
						
							|  |  |  |         ncount=-1
 | 
					
						
							|  |  |  |      endif
 | 
					
						
							|  |  |  |   endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return
 | 
					
						
							|  |  |  | end subroutine extract4
 |