diff --git a/lib/jt65code.f90 b/lib/jt65code.f90 index c87aa51ae..19a0c937e 100644 --- a/lib/jt65code.f90 +++ b/lib/jt65code.f90 @@ -4,6 +4,7 @@ program JT65code ! Reed Solomon encoding, and other necessary details of the JT65 ! protocol. + character*22 testmsg(26) character*22 msg,msg0,msg1,decoded,cok*3,bad*1,msgtype*10 integer dgen(12),sent(63),recd(12),era(51) @@ -14,52 +15,89 @@ program JT65code endif call getarg(1,msg) !Get message from command line - call fmtmsg(msg,iz) !To upper, collapse mult blanks - msg0=msg !Input message - call chkmsg(msg,cok,nspecial,flip) !See if it includes "OOO" report - msg1=msg !Message without "OOO" - - if(nspecial.gt.0) then !or is a shorthand message - if(nspecial.eq.2) decoded="RO" - if(nspecial.eq.3) decoded="RRR" - if(nspecial.eq.4) decoded="73" - itype=-1 - msgtype="Shorthand" - go to 10 + nmsg=1 + if(msg(1:2).eq."-t") then + testmsg(1)="KA1ABC WB9XYZ EN34" + testmsg(2)="KA1ABC WB9XYZ EN34 OOO" + testmsg(3)="KA1ABC WB9XYZ RO" + testmsg(4)="KA1ABC WB9XYZ -21" + testmsg(5)="KA1ABC WB9XYZ R-19" + testmsg(6)="KA1ABC WB9XYZ RRR" + testmsg(7)="KA1ABC WB9XYZ 73" + testmsg(8)="KA1ABC WB9XYZ" + testmsg(9)="KA1ABC WB9XYZ OOO" + testmsg(10)="KA1ABC WB9XYZ RO" + testmsg(11)="ZL/KA1ABC WB9XYZ" + testmsg(12)="KA1ABC ZL/WB9XYZ" + testmsg(13)="KA1ABC/4 WB9XYZ" + testmsg(14)="KA1ABC WB9XYZ/4" + testmsg(15)="CQ ZL4/KA1ABC" + testmsg(16)="DE ZL4/KA1ABC" + testmsg(17)="QRZ ZL4/KA1ABC" + testmsg(18)="CQ WB9XYZ/VE4" + testmsg(19)="HELLO WORLD" + testmsg(20)="ZL4/KA1ABC 73" + testmsg(21)="RO" + testmsg(22)="RRR" + testmsg(23)="73" + testmsg(24)="KA1ABC XL/WB9XYZ" + testmsg(25)="KA1ABC WB9XYZ/W4" + testmsg(26)="123456789ABCDEFGH" + nmsg=26 endif - call packmsg(msg1,dgen,itype) !Pack message into 12 six-bit bytes - msgtype="" - if(itype.eq.1) msgtype="Std Msg" - if(itype.eq.2) msgtype="Type 1 pfx" - if(itype.eq.3) msgtype="Type 1 sfx" - if(itype.eq.4) msgtype="Type 2 pfx" - if(itype.eq.5) msgtype="Type 2 sfx" - if(itype.eq.6) msgtype="Free text" - - call rs_encode(dgen,sent) !RS encode - call interleave63(sent,1) !Interleave channel symbols - call graycode(sent,63,1,sent) !Apply Gray code - call graycode(sent,63,-1,sent) - call interleave63(sent,-1) - call rs_decode(sent,era,0,recd,nerr) - call unpackmsg(recd,decoded) !Unpack the user message - if(cok.eq."OOO") decoded(20:22)=cok - call fmtmsg(decoded,iz) - -10 write(*,1010) + write(*,1010) 1010 format("Message Decoded Err?"/ & "-----------------------------------------------------------------") - bad=" " - if(decoded.ne.msg0) bad="*" - write(*,1020) msg0,decoded,bad,itype,msgtype -1020 format(a22,2x,a22,3x,a1,i3,": ",a10) - if(nspecial.gt.0) go to 999 - write(*,1030) dgen + do imsg=1,nmsg + if(nmsg.gt.1) msg=testmsg(imsg) + + call fmtmsg(msg,iz) !To upper, collapse mult blanks + msg0=msg !Input message + call chkmsg(msg,cok,nspecial,flip) !See if it includes "OOO" report + msg1=msg !Message without "OOO" + + if(nspecial.gt.0) then !or is a shorthand message + if(nspecial.eq.2) decoded="RO" + if(nspecial.eq.3) decoded="RRR" + if(nspecial.eq.4) decoded="73" + itype=-1 + msgtype="Shorthand" + go to 10 + endif + + call packmsg(msg1,dgen,itype) !Pack message into 12 six-bit bytes + msgtype="" + if(itype.eq.1) msgtype="Std Msg" + if(itype.eq.2) msgtype="Type 1 pfx" + if(itype.eq.3) msgtype="Type 1 sfx" + if(itype.eq.4) msgtype="Type 2 pfx" + if(itype.eq.5) msgtype="Type 2 sfx" + if(itype.eq.6) msgtype="Free text" + + call rs_encode(dgen,sent) !RS encode + call interleave63(sent,1) !Interleave channel symbols + call graycode(sent,63,1,sent) !Apply Gray code + call graycode(sent,63,-1,sent) + call interleave63(sent,-1) + call rs_decode(sent,era,0,recd,nerr) + call unpackmsg(recd,decoded) !Unpack the user message + if(cok.eq."OOO") decoded(20:22)=cok + call fmtmsg(decoded,iz) + +10 bad=" " + if(decoded.ne.msg0) bad="*" + write(*,1020) msg0,decoded,bad,itype,msgtype +1020 format(a22,2x,a22,3x,a1,i3,": ",a10) + enddo + + if(nmsg.eq.1 .and. nspecial.eq.0) then + write(*,1030) dgen 1030 format(/'Packed message, 6-bit symbols ',12i3) !Display packed symbols - write(*,1040) sent + write(*,1040) sent 1040 format(/'Information-carrying channel symbols'/(i5,20i3)) + endif 999 end program JT65code diff --git a/lib/jt9code.f90 b/lib/jt9code.f90 index 723a06e4a..ec2c128ae 100644 --- a/lib/jt9code.f90 +++ b/lib/jt9code.f90 @@ -2,6 +2,7 @@ program jt9code ! Generate simulated data for testing of WSJT-X + character*22 testmsg(21) character msg*22,msg0*22,decoded*22,bad*1,msgtype*10 integer*4 i4tone(85) !Channel symbols (values 0-8) include 'jt9sync.f90' @@ -13,29 +14,58 @@ program jt9code endif call getarg(1,msg) - call fmtmsg(msg,iz) !To upper, collapse mult blanks - msg0=msg !Input message - - ichk=0 - call genjt9(msg,ichk,decoded,i4tone,itype) !Encode message into tone #s - - msgtype="" - if(itype.eq.1) msgtype="Std Msg" - if(itype.eq.2) msgtype="Type 1 pfx" - if(itype.eq.3) msgtype="Type 1 sfx" - if(itype.eq.4) msgtype="Type 2 pfx" - if(itype.eq.5) msgtype="Type 2 sfx" - if(itype.eq.6) msgtype="Free text" + nmsg=1 + if(msg(1:2).eq."-t") then + testmsg(1)="KA1ABC WB9XYZ EN34" + testmsg(2)="KA1ABC WB9XYZ EN34 OOO" + testmsg(3)="KA1ABC WB9XYZ RO" + testmsg(4)="KA1ABC WB9XYZ -21" + testmsg(5)="KA1ABC WB9XYZ R-19" + testmsg(6)="KA1ABC WB9XYZ RRR" + testmsg(7)="KA1ABC WB9XYZ 73" + testmsg(8)="KA1ABC WB9XYZ" + testmsg(9)="ZL/KA1ABC WB9XYZ" + testmsg(10)="KA1ABC ZL/WB9XYZ" + testmsg(11)="KA1ABC/4 WB9XYZ" + testmsg(12)="KA1ABC WB9XYZ/4" + testmsg(13)="CQ ZL4/KA1ABC" + testmsg(14)="DE ZL4/KA1ABC" + testmsg(15)="QRZ ZL4/KA1ABC" + testmsg(16)="CQ WB9XYZ/VE4" + testmsg(17)="HELLO WORLD" + testmsg(18)="ZL4/KA1ABC 73" + testmsg(19)="KA1ABC XL/WB9XYZ" + testmsg(20)="KA1ABC WB9XYZ/W4" + testmsg(21)="123456789ABCDEFGH" + nmsg=21 + endif write(*,1010) 1010 format("Message Decoded Err?"/ & "-----------------------------------------------------------------") - bad=" " - if(decoded.ne.msg0) bad="*" - write(*,1020) msg0,decoded,bad,itype,msgtype -1020 format(a22,2x,a22,3x,a1,i3,": ",a10) + do imsg=1,nmsg + if(nmsg.gt.1) msg=testmsg(imsg) + call fmtmsg(msg,iz) !To upper, collapse mult blanks + msg0=msg !Input message - write(*,1030) i4tone + ichk=0 + call genjt9(msg,ichk,decoded,i4tone,itype) !Encode message into tone #s + + msgtype="" + if(itype.eq.1) msgtype="Std Msg" + if(itype.eq.2) msgtype="Type 1 pfx" + if(itype.eq.3) msgtype="Type 1 sfx" + if(itype.eq.4) msgtype="Type 2 pfx" + if(itype.eq.5) msgtype="Type 2 sfx" + if(itype.eq.6) msgtype="Free text" + + bad=" " + if(decoded.ne.msg0) bad="*" + write(*,1020) msg0,decoded,bad,itype,msgtype +1020 format(a22,2x,a22,3x,a1,i3,": ",a10) + enddo + + if(nmsg.eq.1) write(*,1030) i4tone 1030 format(/'Channel symbols'/(30i2)) 999 end program jt9code