mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-24 18:32:27 -04:00
52 lines
1.3 KiB
Fortran
52 lines
1.3 KiB
Fortran
subroutine sfox_unpack(imsg)
|
|
|
|
use packjt77
|
|
integer imsg(48)
|
|
character*336 msgbits
|
|
character*22 msg(10)
|
|
character*13 foxcall,c13
|
|
character*4 crpt(5)
|
|
logical success
|
|
|
|
write(msgbits,1000) imsg
|
|
1000 format(48b7.7)
|
|
read(msgbits(331:336),'(b6)') ntype !Message type
|
|
|
|
if(ntype.eq.1) then !Get the Fox callsign
|
|
read(msgbits(271:328),'(b58)') n58 !Compound Fox call
|
|
call unpack28(n58,foxcall,success)
|
|
else
|
|
read(msgbits(303:330),'(b28)') n28 !Standard Fox call
|
|
call unpack28(n28,foxcall,success)
|
|
endif
|
|
|
|
j=171
|
|
do i=1,5 !Extract the reports
|
|
read(msgbits(j:j+3),'(b4)') n
|
|
if(n.eq.15) then
|
|
crpt(i)='RR73'
|
|
else
|
|
write(crpt(i),1006) 2*n-18
|
|
1006 format(i3.2)
|
|
if(crpt(i)(1:1).eq.' ') crpt(i)(1:1)='+'
|
|
endif
|
|
j=j+32
|
|
enddo
|
|
|
|
! Unpack and format user-level messages:
|
|
do i=1,10
|
|
j=28*i - 27
|
|
if(i.gt.5) j=143 + (i-5)*32
|
|
read(msgbits(j:j+27),'(b28)') n28
|
|
if(n28.eq.0) cycle
|
|
call unpack28(n28,c13,success)
|
|
msg(i)=trim(c13)//' '//trim(foxcall)
|
|
if(i.le.5) msg(i)=trim(msg(i))//' RR73'
|
|
if(i.gt.5) msg(i)=trim(msg(i))//' '//crpt(i-5)
|
|
write(*,3001) i,trim(msg(i))
|
|
3001 format(i2,2x,a)
|
|
enddo
|
|
|
|
return
|
|
end subroutine sfox_unpack
|