From 74764ca12c952b60403a67f181c7609da4bfec7f Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Fri, 7 Oct 2016 19:52:55 +0000 Subject: [PATCH] Add a simple MSK144code program. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7163 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- CMakeLists.txt | 3 +++ lib/msk144code.f90 | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 lib/msk144code.f90 diff --git a/CMakeLists.txt b/CMakeLists.txt index a37f230b2..7f36a21c2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1050,6 +1050,9 @@ add_executable (wsprsim ${wsprsim_CSRCS}) add_executable (jt4code lib/jt4code.f90 wsjtx.rc) target_link_libraries (jt4code wsjt_fort wsjt_cxx) +add_executable (msk144code lib/msk144code.f90 wsjtx.rc) +target_link_libraries (msk144code wsjt_fort wsjt_cxx) + add_executable (jt65 lib/jt65.f90 lib/jt65_test.f90 wsjtx.rc) target_link_libraries (jt65 wsjt_fort wsjt_cxx) diff --git a/lib/msk144code.f90 b/lib/msk144code.f90 new file mode 100644 index 000000000..6ccada7e0 --- /dev/null +++ b/lib/msk144code.f90 @@ -0,0 +1,66 @@ +program msk144code + +! Provides examples of message packing, bit and symbol ordering, +! LDPC encoding, and other necessary details of the MSK144 protocol. + + use packjt + character msg*22,msgsent*22,decoded,bad*1,msgtype*13,mygrid*6 + integer*4 i4tone(144) + logical*1 bcontest + include 'testmsg.f90' + data mygrid/'FN20qi'/ + + nargs=iargc() + if(nargs.ne.1) then + print*,'Usage: msk144code "message"' + print*,' msk144code -t' + print*,' ' + print*,'Examples:' + print*,' msk144code "KA1ABC WB9XYZ EN37"' + print*,' msk144code " R-03"' + go to 999 + endif + + bcontest=.false. + call getarg(1,msg) + nmsg=1 + if(msg(1:2).eq."-t") then + testmsg(NTEST+1)=" -03" + testmsg(NTEST+2)=" R+03" + testmsg(NTEST+3)=" RRR" + testmsg(NTEST+4)=" 73" + nmsg=NTEST+4 + endif + + write(*,1010) +1010 format(" Message Decoded Err? Type"/ & + 74("-")) + do imsg=1,nmsg + if(nmsg.gt.1) msg=testmsg(imsg) + call fmtmsg(msg,iz) !To upper case, collapse multiple blanks + ichk=0 + call genmsk144(msg,mygrid,ichk,bcontest,msgsent,i4tone,itype) + + msgtype="" + if(itype.eq.1) msgtype="Std Msg" + if(itype.eq.2) msgtype="Type 1 prefix" + if(itype.eq.3) msgtype="Type 1 suffix" + if(itype.eq.4) msgtype="Type 2 prefix" + if(itype.eq.5) msgtype="Type 2 suffix" + if(itype.eq.6) msgtype="Free text" + if(itype.eq.7) msgtype="Hashed callsigns" + + bad=" " + if(msgsent.ne.msg) bad="*" + write(*,1020) imsg,msg,msgsent,bad,itype,msgtype +1020 format(i2,'.',2x,a22,2x,a22,3x,a1,i3,": ",a13) + enddo + + if(nmsg.eq.1) then + n=144 + if(msg(1:1).eq."<") n=40 + write(*,1030) i4tone(1:n) +1030 format(/'Channel symbols:'/(72i1)) + endif + +999 end program msk144code