mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-05 08:51:19 -05:00
71 lines
1.9 KiB
FortranFixed
71 lines
1.9 KiB
FortranFixed
|
subroutine extract(s3,nadd,ndepth,ncount,decoded)
|
||
|
|
||
|
real s3(64,63)
|
||
|
character decoded*22
|
||
|
integer*1 dat1(12)
|
||
|
integer dat(63),era(51),dat4(12),indx(63)
|
||
|
integer mrsym(63),mr2sym(63),mrprob(63),mr2prob(63)
|
||
|
logical first
|
||
|
data first/.true./,nsec1/0/
|
||
|
save
|
||
|
|
||
|
call demod64a(s3,nadd,mrsym,mrprob,mr2sym,mr2prob)
|
||
|
call graycode(mrsym,63,-1)
|
||
|
call interleave63(mrsym,-1)
|
||
|
call interleave63(mrprob,-1)
|
||
|
|
||
|
ndec=0
|
||
|
nemax=30
|
||
|
maxe=8
|
||
|
if(ndepth.ge.2) ndec=1
|
||
|
if(ndepth.eq.2) xlambda=13.0
|
||
|
if(ndepth.eq.3) xlambda=15.0
|
||
|
|
||
|
if(ndec.eq.1) then
|
||
|
call graycode(mr2sym,63,-1)
|
||
|
call interleave63(mr2sym,-1)
|
||
|
call interleave63(mr2prob,-1)
|
||
|
|
||
|
nsec1=nsec1+1
|
||
|
write(22,rec=1) nsec1,xlambda,maxe,200,
|
||
|
+ mrsym,mrprob,mr2sym,mr2prob
|
||
|
call flushqqq(22)
|
||
|
call runqqq('kvasd.exe','-q',iret)
|
||
|
if(iret.ne.0) then
|
||
|
if(first) write(*,1000)
|
||
|
1000 format('Error in KV decoder, or no KV decoder present.'/
|
||
|
+ 'Using BM algorithm.')
|
||
|
ndec=0
|
||
|
first=.false.
|
||
|
go to 20
|
||
|
endif
|
||
|
read(22,rec=2) nsec2,ncount,dat4
|
||
|
decoded=' '
|
||
|
if(ncount.ge.0) then
|
||
|
call unpackmsg(dat4,decoded) !Unpack the user message
|
||
|
endif
|
||
|
endif
|
||
|
20 if(ndec.eq.0) then
|
||
|
call indexx(63,mrprob,indx)
|
||
|
do i=1,nemax
|
||
|
j=indx(i)
|
||
|
if(mrprob(j).gt.120) then
|
||
|
ne2=i-1
|
||
|
go to 2
|
||
|
endif
|
||
|
era(i)=j-1
|
||
|
enddo
|
||
|
ne2=nemax
|
||
|
2 decoded=' '
|
||
|
do nerase=0,ne2,2
|
||
|
call rs_decode(mrsym,era,nerase,dat4,ncount)
|
||
|
if(ncount.ge.0) then
|
||
|
call unpackmsg(dat4,decoded)
|
||
|
go to 900
|
||
|
endif
|
||
|
enddo
|
||
|
endif
|
||
|
|
||
|
900 return
|
||
|
end
|