2015-04-22 13:48:03 -04: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)
|
|
|
|
|
|
|
|
call unpackmsg(data4,decoded)
|
|
|
|
if(decoded(1:6).eq.'000AAA') then
|
|
|
|
! decoded='***WRONG MODE?***'
|
|
|
|
decoded=' '
|
|
|
|
ncount=-1
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
return
|
|
|
|
end subroutine extract4
|