subroutine gen4(msg0,ichk,msgsent,itone,itype) ! Encode a JT4 message. Returns msgsent, the message as it will be ! decoded, an integer array itone(206) of 4-FSK tons values in the ! range 0-3; and itype, the JT message type. use jt4 use packjt character*22 msg0 character*22 message !Message to be generated character*22 msgsent !Message as it will be received character*1 c integer itone(206) integer*4 i4Msg6BitWords(13) !72-bit message as 6-bit words integer mettab(-128:127,0:1) save if(msg0(1:1).eq.'@') then read(msg0(2:5),*,end=1,err=1) nfreq go to 2 1 nfreq=1000 2 itone(1)=nfreq msgsent=msg0 else call getmet4(mettab,ndelta) message=msg0 call fmtmsg(message,iz) 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 encode4(message,itone) !Encode the information bits i1=index(message,'-') c=message(i1+1:i1+1) if(i1.ge.9 .and. c.ge.'0' .and. c.le.'3') then itone=2*itone + (1-npr(2:)) !Inverted '#' sync else itone=2*itone + npr(2:) !Data = MSB, sync = LSB endif endif 999 return end subroutine gen4