mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-04-14 23:39:02 -04:00
Also use assumed shaped for dummy argument arrays where possible. If a Fortran procedure has an interface declaration, which includes all procedures exported from modules, then dummy arguments should be declared as assumed shape if possible. This allows compiler generated array bounds checking and compile time array shape checking. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6456 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
64 lines
2.3 KiB
Fortran
64 lines
2.3 KiB
Fortran
subroutine gen9(msg0,ichk,msgsent,i4tone,itype)
|
|
|
|
! Encodes a JT9 message and returns msgsent, the message as it will
|
|
! be decoded, and an integer array i4tone(85) of 9-FSK tone values
|
|
! in the range 0-8.
|
|
|
|
use packjt
|
|
character*22 msg0
|
|
character*22 message !Message to be generated
|
|
character*22 msgsent !Message as it will be received
|
|
integer*4 i4Msg6BitWords(13) !72-bit message as 6-bit words
|
|
integer*1 i1Msg8BitBytes(13) !72 bits and zero tail as 8-bit bytes
|
|
integer*1 i1EncodedBits(207) !Encoded information-carrying bits
|
|
integer*1 i1ScrambledBits(207) !Encoded bits after interleaving
|
|
integer*4 i4DataSymbols(69) !Data symbols (values 0-7)
|
|
integer*4 i4GrayCodedSymbols(69) !Gray-coded symbols (values 0-7)
|
|
integer*4 i4tone(85) !Tone #s, data and sync (values 0-8)
|
|
include 'jt9sync.f90'
|
|
save
|
|
|
|
if(msg0(1:1).eq.'@') then
|
|
read(msg0(2:5),*,end=1,err=1) nfreq
|
|
go to 2
|
|
1 nfreq=1000
|
|
2 i4tone(1)=nfreq
|
|
else
|
|
message=msg0
|
|
do i=1,22
|
|
if(ichar(message(i:i)).eq.0) then
|
|
message(i:)=' '
|
|
exit
|
|
endif
|
|
enddo
|
|
|
|
do i=1,22 !Strip leading blanks
|
|
if(message(1:1).ne.' ') exit
|
|
message=message(i+1:)
|
|
enddo
|
|
|
|
call packmsg(message,i4Msg6BitWords,itype) !Pack into 12 6-bit bytes
|
|
call unpackmsg(i4Msg6BitWords,msgsent) !Unpack to get msgsent
|
|
if(ichk.ne.0) go to 999
|
|
call entail(i4Msg6BitWords,i1Msg8BitBytes) !Add tail, make 8-bit bytes
|
|
nsym2=206
|
|
call encode232(i1Msg8BitBytes,nsym2,i1EncodedBits) !Encode K=32, r=1/2
|
|
call interleave9(i1EncodedBits,1,i1ScrambledBits) !Interleave bits
|
|
call packbits(i1ScrambledBits,nsym2/3,3,i4DataSymbols) !Pk 3-bits into words
|
|
call graycode(i4DataSymbols,nsym2/3,1,i4GrayCodedSymbols) !Apply Gray code
|
|
|
|
! Insert sync symbols at ntone=0 and add 1 to the data-tone numbers.
|
|
j=0
|
|
do i=1,85
|
|
if(isync(i).eq.1) then
|
|
i4tone(i)=0
|
|
else
|
|
j=j+1
|
|
i4tone(i)=i4GrayCodedSymbols(j)+1
|
|
endif
|
|
enddo
|
|
endif
|
|
|
|
999 return
|
|
end subroutine gen9
|