mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 04:11:16 -05:00
Merge branch 'develop' of bitbucket.org:k1jt/wsjtx into develop
This commit is contained in:
commit
52075fca24
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -3,3 +3,4 @@
|
||||
/lib/fsk4hf export-ignore
|
||||
/lib/fsk4hf export-ignore
|
||||
/robots export-ignore
|
||||
/plots export-ignore
|
||||
|
@ -479,6 +479,7 @@ set (wsjt_FSRCS
|
||||
lib/ft8/genft8.f90
|
||||
lib/genmsk_128_90.f90
|
||||
lib/genmsk40.f90
|
||||
lib/ft4/ft4code.f90
|
||||
lib/ft4/genft4.f90
|
||||
lib/ft4/gen_ft4wave.f90
|
||||
lib/ft8/gen_ft8wave.f90
|
||||
@ -1305,6 +1306,9 @@ target_link_libraries (jt65 wsjt_fort wsjt_cxx)
|
||||
add_executable (ft8code lib/ft8/ft8code.f90 wsjtx.rc)
|
||||
target_link_libraries (ft8code wsjt_fort wsjt_cxx)
|
||||
|
||||
add_executable (ft4code lib/ft4/ft4code.f90 wsjtx.rc)
|
||||
target_link_libraries (ft4code wsjt_fort wsjt_cxx)
|
||||
|
||||
add_executable (ft8 lib/ft8.f90 wsjtx.rc)
|
||||
target_link_libraries (ft8 wsjt_fort wsjt_cxx)
|
||||
|
||||
|
@ -951,7 +951,7 @@ a few, particularly some Kenwood rigs, require it).</string>
|
||||
<item row="0" column="1">
|
||||
<widget class="QRadioButton" name="PTT_DTR_radio_button">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Use the RS-232 DTR control line to toggle your radio's PTT, requires hardware to inteface the line.</p><p>Some commercial interface units also use this method.</p><p>The DTR control line of the CAT serial port may be used for this or a DTR control line on a different serial port may be used.</p></body></html></string>
|
||||
<string><html><head/><body><p>Use the RS-232 DTR control line to toggle your radio's PTT, requires hardware to interface the line.</p><p>Some commercial interface units also use this method.</p><p>The DTR control line of the CAT serial port may be used for this or a DTR control line on a different serial port may be used.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&DTR</string>
|
||||
@ -982,7 +982,7 @@ other hardware interface for PTT.</string>
|
||||
<item row="1" column="1">
|
||||
<widget class="QRadioButton" name="PTT_RTS_radio_button">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Use the RS-232 RTS control line to toggle your radio's PTT, requires hardware to inteface the line.</p><p>Some commercial interface units also use this method.</p><p>The RTS control line of the CAT serial port may be used for this or a RTS control line on a different serial port may be used. Note that this option is not available on the CAT serial port when hardware flow control is used.</p></body></html></string>
|
||||
<string><html><head/><body><p>Use the RS-232 RTS control line to toggle your radio's PTT, requires hardware to interface the line.</p><p>Some commercial interface units also use this method.</p><p>The RTS control line of the CAT serial port may be used for this or a RTS control line on a different serial port may be used. Note that this option is not available on the CAT serial port when hardware flow control is used.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>R&TS</string>
|
||||
@ -1080,7 +1080,7 @@ or bandwidth is selected).</string>
|
||||
<item row="0" column="2">
|
||||
<widget class="QRadioButton" name="mode_data_radio_button">
|
||||
<property name="toolTip">
|
||||
<string>If this is availabe then it is usually the correct mode for this program.</string>
|
||||
<string>If this is available then it is usually the correct mode for this program.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Data/P&kt</string>
|
||||
|
@ -94,7 +94,7 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes.
|
||||
:win32_openssl: https://slproweb.com/download/Win32OpenSSL_Light-1_0_2t.exe[Win32 OpenSSL Light Package]
|
||||
:win64_openssl: https://slproweb.com/download/Win64OpenSSL_Light-1_1_0L.exe[Win64 OpenSSL Light Package]
|
||||
:writelog: https://writelog.com/[Writelog]
|
||||
:wsjt_yahoo_group: https://groups.yahoo.com/neo/groups/wsjtgroup/info[WSJT Group]
|
||||
:wsjtx_group: https://groups.io/g/WSJTX[WSJTX Group]
|
||||
:wsjtx: http://physics.princeton.edu/pulsar/K1JT/wsjtx.html[WSJT-X]
|
||||
:wspr0_guide: http://www.physics.princeton.edu/pulsar/K1JT/WSPR0_Instructions.TXT[WSPR0 Guide]
|
||||
:wspr: http://physics.princeton.edu/pulsar/K1JT/wspr.html[WSPR Home Page]
|
||||
|
@ -1,8 +1,8 @@
|
||||
=== Help with Setup
|
||||
|
||||
The best source of help in setting up your station or configuring
|
||||
_WSJT-X_ is the {wsjt_yahoo_group} at email address
|
||||
wsjtgroup@yahoogroups.com. The chances are good that someone with
|
||||
_WSJT-X_ is the {wsjtx_group} at email address
|
||||
wsjtx@groups.io. The chances are good that someone with
|
||||
similar interests and equipment has already solved your problem and
|
||||
will be happy to help. To post messages here you will need to join
|
||||
the group.
|
||||
|
@ -1,2 +1,3 @@
|
||||
gfortran -o test28 -fbounds-check -Wall -Wno-conversion test28.f90 pack28.f90 \
|
||||
unpack28.f90 ihashcall.f90 hash22.f90 save_hash_call.f90
|
||||
gfortran -c packjt77.f90
|
||||
gfortran -o test28 -fbounds-check -Wall -Wno-conversion test28.f90 \
|
||||
../chkcall.f90 packjt77.o
|
||||
|
@ -808,7 +808,7 @@ subroutine pack77_01(nwords,w,i3,n3,c77)
|
||||
call chkcall(w(3),bcall_2,ok2)
|
||||
if(.not.ok2) go to 900 !3rd word must be a valid basecall
|
||||
|
||||
! Type 0.1: K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 71 DXpedition Mode
|
||||
! Type 0.1: K1ABC RR73; W9XYZ <KH1/KH7Z> -11 28 28 10 5 71
|
||||
i3=0
|
||||
n3=1
|
||||
call pack28(w(1),n28a)
|
||||
@ -826,6 +826,9 @@ end subroutine pack77_01
|
||||
|
||||
subroutine pack77_02(nwords,w,i3,n3,c77)
|
||||
|
||||
! Pack a Type 0.2 message: EU VHF Contest mode
|
||||
! Example message: PA3XYZ/P R 590003 IO91NP 28 1 1 3 12 25
|
||||
|
||||
character*13 w(19),c13
|
||||
character*77 c77
|
||||
character*6 bcall_1,grid6
|
||||
@ -879,7 +882,9 @@ end subroutine pack77_02
|
||||
|
||||
|
||||
subroutine pack77_03(nwords,w,i3,n3,c77)
|
||||
|
||||
! Check 0.3 and 0.4 (ARRL Field Day exchange)
|
||||
! Example message: WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 71
|
||||
|
||||
parameter (NSEC=84) !Number of ARRL Sections
|
||||
character*13 w(19)
|
||||
@ -941,8 +946,11 @@ subroutine pack77_03(nwords,w,i3,n3,c77)
|
||||
return
|
||||
end subroutine pack77_03
|
||||
|
||||
|
||||
subroutine pack77_1(nwords,w,i3,n3,c77)
|
||||
|
||||
! Check Type 1 (Standard 77-bit message) and Type 2 (ditto, with a "/P" call)
|
||||
! Example message: WA9XYZ/R KA1ABC/R R FN42 28 1 28 1 1 15 74
|
||||
|
||||
parameter (MAXGRID4=32400)
|
||||
character*13 w(19),c13
|
||||
@ -1043,9 +1051,11 @@ end subroutine pack77_1
|
||||
|
||||
|
||||
subroutine pack77_3(nwords,w,i3,n3,c77)
|
||||
! Check Type 2 (ARRL RTTY contest exchange)
|
||||
!ARRL RTTY - US/Can: rpt state/prov R 579 MA
|
||||
! - DX: rpt serial R 559 0013
|
||||
|
||||
! Check Type 3 (ARRL RTTY contest exchange)
|
||||
! ARRL RTTY - US/Can: rpt state/prov R 579 MA
|
||||
! - DX: rpt serial R 559 0013
|
||||
! Example message: TU; W9XYZ K1ABC R 579 MA 1 28 28 1 3 13 74
|
||||
|
||||
parameter (NUSCAN=65) !Number of US states and Canadian provinces/territories
|
||||
character*13 w(19)
|
||||
@ -1111,8 +1121,11 @@ subroutine pack77_3(nwords,w,i3,n3,c77)
|
||||
900 return
|
||||
end subroutine pack77_3
|
||||
|
||||
|
||||
subroutine pack77_4(nwords,w,i3,n3,c77)
|
||||
! Check Type 3 (One nonstandard call and one hashed call)
|
||||
|
||||
! Check Type 4 (One nonstandard call and one hashed call)
|
||||
! Example message: <WA9XYZ> PJ4/KA1ABC RR73 12 58 1 2 1 74
|
||||
|
||||
integer*8 n58
|
||||
logical ok1,ok2
|
||||
@ -1180,8 +1193,9 @@ subroutine pack77_4(nwords,w,i3,n3,c77)
|
||||
end subroutine pack77_4
|
||||
|
||||
subroutine pack77_5(nwords,w,i3,n3,c77)
|
||||
! Check Type 5 (WWROF contest exchange)
|
||||
|
||||
! Check Type 5 (WWROF contest exchange)
|
||||
!Example message: TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest
|
||||
character*13 w(19)
|
||||
character*77 c77
|
||||
character*6 bcall_1,bcall_2
|
||||
@ -1224,7 +1238,7 @@ subroutine pack77_5(nwords,w,i3,n3,c77)
|
||||
if(trim(w(1)).eq.'TU;') itu=1
|
||||
call pack28(w(1+itu),n28a)
|
||||
call pack28(w(2+itu),n28b)
|
||||
! 5 TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest
|
||||
!Example message: TU; W9XYZ K1ABC R-09 FN 1 28 28 1 7 9 74 WWROF contest
|
||||
write(c77,1010) itu,n28a,n28b,ir,irpt,nexch,i3
|
||||
1010 format(b1,2b28.28,b1,b7.7,b9.9,b3.3)
|
||||
|
||||
|
@ -1,11 +1,20 @@
|
||||
program test28
|
||||
|
||||
use packjt77
|
||||
parameter (NTOKENS=2063592,MAX22=4194304)
|
||||
character*13 call_0,call_1,bare_call_1
|
||||
character*13 arg,call_00,call_0,call_1
|
||||
character*1 cerr
|
||||
logical unpk28_success
|
||||
|
||||
nargs=iargc()
|
||||
open(10,file='test28.txt',status='old')
|
||||
n28=-1
|
||||
if(nargs.eq.1) then
|
||||
call getarg(1,arg)
|
||||
read(arg,'(i13)',err=2) n28
|
||||
endif
|
||||
if(n28.ge.0) go to 100
|
||||
|
||||
2 open(10,file='test28.txt',status='old')
|
||||
|
||||
write(*,1000)
|
||||
1000 format('Encoded text Recovered text n28 Err? Type'/60('-'))
|
||||
@ -14,30 +23,41 @@ program test28
|
||||
if(nargs.eq.0) then
|
||||
read(10,'(a13)',end=999) call_0
|
||||
else
|
||||
call getarg(1,call_0)
|
||||
call_0=arg
|
||||
endif
|
||||
if(call_0.eq.' ') exit
|
||||
if(call_0(1:3).eq.'CQ ' .and. call_0(4:4).ne.' ') call_0(3:3)='_'
|
||||
call_1=' '
|
||||
call pack28(call_0,n28)
|
||||
call unpack28(n28,call_1)
|
||||
call_00=call_0
|
||||
call pack28(call_00,n28)
|
||||
call unpack28(n28,call_1,unpk28_success)
|
||||
cerr=' '
|
||||
if(call_0.ne.call_1) cerr='*'
|
||||
if(call_1(1:1).eq.'<') then
|
||||
i=index(call_1,'>')
|
||||
bare_call_1=call_1(2:i-1)//' '
|
||||
endif
|
||||
if(call_0.eq.bare_call_1) cerr=' '
|
||||
if(call_0(1:3).eq.'CQ_') call_0(3:3)=' '
|
||||
if(call_1(1:3).eq.'CQ_') call_1(3:3)=' '
|
||||
if(n28.lt.NTOKENS) write(*,1010) call_0,call_1,n28,cerr
|
||||
1010 format(a13,2x,a13,i10,2x,a1,2x,'Special token')
|
||||
if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) write(*,1012) call_0, &
|
||||
call_1,n28,cerr
|
||||
1012 format(a13,2x,a13,i10,2x,a1,2x,'22-bit hash')
|
||||
if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) then
|
||||
call_00=call_0
|
||||
call save_hash_call(call_00,n10,n12,n22)
|
||||
write(*,1012) call_0,call_1,n28,cerr,n22
|
||||
1012 format(a13,2x,a13,i10,2x,a1,2x,'22-bit hash',i15)
|
||||
endif
|
||||
if(n28.ge.NTOKENS+MAX22) write(*,1014) call_0,call_1,n28,cerr
|
||||
1014 format(a13,2x,a13,i10,2x,a1,2x,'Standard callsign')
|
||||
if(nargs.gt.0) exit
|
||||
enddo
|
||||
go to 999
|
||||
|
||||
100 call unpack28(n28,call_1,unpk28_success)
|
||||
cerr=' '
|
||||
if(.not.unpk28_success) cerr='*'
|
||||
if(call_1(1:3).eq.'CQ_') call_1(3:3)=' '
|
||||
if(n28.lt.NTOKENS) write(*,2010) n28,call_1,cerr
|
||||
2010 format(i10,2x,a13,2x,a1,2x,'Special token')
|
||||
if(n28.ge.NTOKENS .and. n28.lt.NTOKENS+MAX22) write(*,2012) n28,call_1,cerr
|
||||
2012 format(i10,2x,a13,2x,a1,2x,'22-bit hash')
|
||||
if(n28.ge.NTOKENS+MAX22) write(*,2014) n28,call_1,cerr
|
||||
2014 format(i10,2x,a13,2x,a1,2x,'Standard callsign')
|
||||
|
||||
999 end program test28
|
||||
|
@ -12,23 +12,16 @@ CQ_AAA
|
||||
CQ_ZZZ
|
||||
CQ_AAAA
|
||||
CQ_ZZZZ
|
||||
EI30T
|
||||
YW18FIFA
|
||||
KH1/KH7Z
|
||||
<EI30T>
|
||||
<YW18FIFA>
|
||||
<KH1/KH7Z>
|
||||
ZS9YOTA
|
||||
YB50ST
|
||||
00A
|
||||
99ZZZ
|
||||
000A
|
||||
009ZZZ
|
||||
999ZZZ
|
||||
HA70BAY
|
||||
WB2000XYZ
|
||||
WB2000XYZABCD
|
||||
ZM90DX
|
||||
<ZS9YOTA>
|
||||
<YB50ST>
|
||||
<HA70BAY>
|
||||
<WB2000XYZ>
|
||||
<ZM90DX>
|
||||
<VP2E/KA1ABC>
|
||||
HB9GOLD
|
||||
<HB9GOLD>
|
||||
A0
|
||||
A0A
|
||||
K1ABC
|
||||
|
50
lib/ft4/ft4_testmsg.f90
Normal file
50
lib/ft4/ft4_testmsg.f90
Normal file
@ -0,0 +1,50 @@
|
||||
parameter (MAXTEST=75,NTEST=47)
|
||||
character*37 testmsg(MAXTEST)
|
||||
data testmsg(1:NTEST)/ &
|
||||
"TNX BOB 73 GL", & ! 0.0
|
||||
"PA9XYZ 590003 IO91NP", & ! 0.2
|
||||
"G4ABC/P R 570007 JO22DB", & ! 0.2
|
||||
"K1ABC W9XYZ 6A WI", & ! 0.3
|
||||
"W9XYZ K1ABC R 17B EMA", & ! 0.3
|
||||
"123456789ABCDEF012", & ! 0.5
|
||||
"CQ K1ABC FN42", & ! 1.
|
||||
"K1ABC W9XYZ EN37", & ! 1.
|
||||
"W9XYZ K1ABC -11", & ! 1.
|
||||
"K1ABC W9XYZ R-09", & ! 1.
|
||||
"W9XYZ K1ABC RRR", & ! 1.
|
||||
"K1ABC W9XYZ 73", & ! 1.
|
||||
"K1ABC W9XYZ RR73", & ! 1.
|
||||
"CQ FD K1ABC FN42", & ! 1.
|
||||
"CQ TEST K1ABC/R FN42", & ! 1.
|
||||
"K1ABC/R W9XYZ EN37", & ! 1.
|
||||
"W9XYZ K1ABC/R R FN42", & ! 1.
|
||||
"K1ABC/R W9XYZ RR73", & ! 1.
|
||||
"CQ TEST K1ABC FN42", & ! 1.
|
||||
"W9XYZ <PJ4/K1ABC> -11", & ! 1.
|
||||
"<PJ4/K1ABC> W9XYZ R-09", & ! 1.
|
||||
"CQ W9XYZ EN37", & ! 1.
|
||||
"<YW18FIFA> W9XYZ -11", & ! 1.
|
||||
"W9XYZ <YW18FIFA> R-09", & ! 1.
|
||||
"<YW18FIFA> KA1ABC", & ! 1.
|
||||
"KA1ABC <YW18FIFA> -11", & ! 1.
|
||||
"<YW18FIFA> KA1ABC R-17", & ! 1.
|
||||
"<YW18FIFA> KA1ABC 73", & ! 1.
|
||||
"CQ G4ABC/P IO91", & ! 2.
|
||||
"G4ABC/P PA9XYZ JO22", & ! 2.
|
||||
"PA9XYZ G4ABC/P RR73", & ! 2.
|
||||
"K1ABC W9XYZ 579 WI", & ! 3.
|
||||
"W9XYZ K1ABC R 589 MA", & ! 3.
|
||||
"K1ABC KA0DEF 559 MO", & ! 3.
|
||||
"TU; KA0DEF K1ABC R 569 MA", & ! 3.
|
||||
"KA1ABC G3AAA 529 0013", & ! 3.
|
||||
"TU; G3AAA K1ABC R 559 MA", & ! 3.
|
||||
"CQ KH1/KH7Z", & ! 4.
|
||||
"CQ PJ4/K1ABC", & ! 4.
|
||||
"PJ4/K1ABC <W9XYZ>", & ! 4.
|
||||
"<W9XYZ> PJ4/K1ABC RRR", & ! 4.
|
||||
"PJ4/K1ABC <W9XYZ> 73", & ! 4.
|
||||
"<W9XYZ> YW18FIFA", & ! 4.
|
||||
"YW18FIFA <W9XYZ> RRR", & ! 4.
|
||||
"<W9XYZ> YW18FIFA 73", & ! 4.
|
||||
"CQ YW18FIFA", & ! 4.
|
||||
"<KA1ABC> YW18FIFA RR73"/
|
101
lib/ft4/ft4code.f90
Normal file
101
lib/ft4/ft4code.f90
Normal file
@ -0,0 +1,101 @@
|
||||
program ft4code
|
||||
|
||||
! Provides examples of message packing, LDPC(174,91) encoding, bit and
|
||||
! symbol ordering, and other details of the FT8 protocol.
|
||||
|
||||
use packjt77
|
||||
include 'ft4_params.f90' !Set various constants
|
||||
include 'ft4_testmsg.f90'
|
||||
parameter (NWAVE=NN*NSPS)
|
||||
|
||||
character*37 msg,msgsent
|
||||
character*77 c77
|
||||
character*9 comment
|
||||
character bad*1,msgtype*18
|
||||
integer itone(NN)
|
||||
integer*1 msgbits(77),rvec(77),codeword(174)
|
||||
data rvec/0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,1,0,0,1,1,0,1,1,0, &
|
||||
1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,1, &
|
||||
0,1,0,1,0,1,1,0,1,1,1,1,1,0,0,0,1,0,1/
|
||||
|
||||
! Get command-line argument(s)
|
||||
nargs=iargc()
|
||||
if(nargs.ne.1 .and. nargs.ne.3) then
|
||||
print*
|
||||
print*,'Program ft4code: Provides examples of message packing, ', &
|
||||
'LDPC(174,91) encoding,'
|
||||
print*,'bit and symbol ordering, and other details of the FT4 protocol.'
|
||||
print*
|
||||
print*,'Usage: ft4code [-c grid] "message" # Results for specified message'
|
||||
print*,' ft4code -t # Examples of all message types'
|
||||
go to 999
|
||||
endif
|
||||
|
||||
call getarg(1,msg) !Message to be transmitted
|
||||
if(len(trim(msg)).eq.2 .and. msg(1:2).eq.'-t') then
|
||||
nmsg=NTEST
|
||||
else
|
||||
call fmtmsg(msg,iz) !To upper case; collapse multiple blanks
|
||||
nmsg=1
|
||||
endif
|
||||
|
||||
write(*,1010)
|
||||
1010 format(4x,'Message',31x,'Decoded',29x,'Err i3.n3'/100('-'))
|
||||
|
||||
do imsg=1,nmsg
|
||||
if(nmsg.gt.1) msg=testmsg(imsg)
|
||||
|
||||
! Generate msgsent, msgbits, and itone
|
||||
i3=-1
|
||||
n3=-1
|
||||
call pack77(msg,i3,n3,c77)
|
||||
call genft4(msg,0,msgsent,msgbits,itone)
|
||||
call encode174_91(msgbits,codeword)
|
||||
msgtype=""
|
||||
if(i3.eq.0) then
|
||||
if(n3.eq.0) msgtype="Free text"
|
||||
if(n3.eq.1) msgtype="DXpedition mode"
|
||||
if(n3.eq.2) msgtype="EU VHF Contest"
|
||||
if(n3.eq.3) msgtype="ARRL Field Day"
|
||||
if(n3.eq.4) msgtype="ARRL Field Day"
|
||||
if(n3.eq.5) msgtype="Telemetry"
|
||||
if(n3.ge.6) msgtype="Undefined type"
|
||||
endif
|
||||
if(i3.eq.1) msgtype="Standard msg"
|
||||
if(i3.eq.2) msgtype="EU VHF Contest"
|
||||
if(i3.eq.3) msgtype="ARRL RTTY Roundup"
|
||||
if(i3.eq.4) msgtype="Nonstandard calls"
|
||||
if(i3.ge.5) msgtype="Undefined msg type"
|
||||
if(i3.ge.1) n3=-1
|
||||
bad=" "
|
||||
comment=' '
|
||||
if(msg.ne.msgsent) bad="*"
|
||||
if(n3.ge.0) then
|
||||
write(*,1020) imsg,msg,msgsent,bad,i3,n3,msgtype,comment
|
||||
1020 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',i1,1x,a18,1x,a9)
|
||||
else
|
||||
write(*,1022) imsg,msg,msgsent,bad,i3,msgtype,comment
|
||||
1022 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',1x,1x,a18,1x,a9)
|
||||
endif
|
||||
enddo
|
||||
|
||||
if(nmsg.eq.1) then
|
||||
write(*,1030) ieor(msgbits,rvec)
|
||||
1030 format(/'Source-encoded message before scrambling, 77 bits: ',/77i1)
|
||||
write(*,1032) rvec
|
||||
1032 format(/'Scrambling vector, 77 bits: ',/77i1)
|
||||
write(*,1034) msgbits
|
||||
1034 format(/'Source-encoded message after scrambling, 77 bits:'/77i1)
|
||||
write(*,1036) codeword(78:91)
|
||||
1036 format(/'14-bit CRC: ',/14i1)
|
||||
write(*,1038) codeword(92:174)
|
||||
1038 format(/'83 Parity bits: ',/83i1)
|
||||
write(*,1040) 0,itone,0
|
||||
1040 format(/'Channel symbols (105 tones):'/ &
|
||||
'R Sync',13x,'Data',13x, &
|
||||
' Sync',13x,'Data',13x, &
|
||||
' Sync',13x,'Data',13x,' Sync R'/ &
|
||||
i1,1x,4i1,1x,29i1,1x,4i1,1x,29i1,1x,4i1,1x,29i1,1x,4i1,i2)
|
||||
endif
|
||||
|
||||
999 end program ft4code
|
@ -1,51 +1,51 @@
|
||||
parameter (MAXTEST=75,NTEST=48)
|
||||
character*37 testmsg(MAXTEST)
|
||||
data testmsg(1:NTEST)/ &
|
||||
"CQ K1ABC FN42", &
|
||||
"K1ABC W9XYZ EN37", &
|
||||
"W9XYZ K1ABC -11", &
|
||||
"K1ABC W9XYZ R-09", &
|
||||
"W9XYZ K1ABC RRR", &
|
||||
"K1ABC W9XYZ 73", &
|
||||
"K1ABC W9XYZ RR73", &
|
||||
"CQ KH1/KH7Z", &
|
||||
"K1ABC RR73; W9XYZ <KH1/KH7Z> -08", &
|
||||
"CQ FD K1ABC FN42", &
|
||||
"K1ABC W9XYZ 6A WI", &
|
||||
"W9XYZ K1ABC R 2B EMA", &
|
||||
"CQ TEST K1ABC/R FN42", &
|
||||
"K1ABC/R W9XYZ EN37", &
|
||||
"W9XYZ K1ABC/R R FN42", &
|
||||
"K1ABC/R W9XYZ RR73", &
|
||||
"CQ TEST K1ABC FN42", &
|
||||
"K1ABC W9XYZ 579 WI", &
|
||||
"W9XYZ K1ABC R 589 MA", &
|
||||
"K1ABC KA0DEF 559 MO", &
|
||||
"TU; KA0DEF K1ABC R 569 MA", &
|
||||
"KA1ABC G3AAA 529 0013", &
|
||||
"TU; G3AAA K1ABC R 559 MA", &
|
||||
"CQ G4ABC/P IO91", &
|
||||
"G4ABC/P PA9XYZ JO22", &
|
||||
"PA9XYZ 590003 IO91NP", &
|
||||
"G4ABC/P R 570007 JO22DB", &
|
||||
"PA9XYZ G4ABC/P RR73", &
|
||||
"CQ PJ4/K1ABC", &
|
||||
"PJ4/K1ABC <W9XYZ>", &
|
||||
"W9XYZ <PJ4/K1ABC> -11", &
|
||||
"<PJ4/K1ABC> W9XYZ R-09", &
|
||||
"<W9XYZ> PJ4/K1ABC RRR", &
|
||||
"PJ4/K1ABC <W9XYZ> 73", &
|
||||
"CQ W9XYZ EN37", &
|
||||
"<W9XYZ> YW18FIFA", &
|
||||
"<YW18FIFA> W9XYZ -11", &
|
||||
"W9XYZ <YW18FIFA> R-09", &
|
||||
"YW18FIFA <W9XYZ> RRR", &
|
||||
"<W9XYZ> YW18FIFA 73", &
|
||||
"TNX BOB 73 GL", &
|
||||
"CQ YW18FIFA", &
|
||||
"<YW18FIFA> KA1ABC", &
|
||||
"KA1ABC <YW18FIFA> -11", &
|
||||
"<YW18FIFA> KA1ABC R-17", &
|
||||
"<KA1ABC> YW18FIFA RR73", &
|
||||
"<YW18FIFA> KA1ABC 73", &
|
||||
"123456789ABCDEF012"/
|
||||
"TNX BOB 73 GL", & ! 0.0
|
||||
"K1ABC RR73; W9XYZ <KH1/KH7Z> -08", & ! 0.1
|
||||
"PA9XYZ 590003 IO91NP", & ! 0.2
|
||||
"G4ABC/P R 570007 JO22DB", & ! 0.2
|
||||
"K1ABC W9XYZ 6A WI", & ! 0.3
|
||||
"W9XYZ K1ABC R 17B EMA", & ! 0.3
|
||||
"123456789ABCDEF012", & ! 0.5
|
||||
"CQ K1ABC FN42", & ! 1.
|
||||
"K1ABC W9XYZ EN37", & ! 1.
|
||||
"W9XYZ K1ABC -11", & ! 1.
|
||||
"K1ABC W9XYZ R-09", & ! 1.
|
||||
"W9XYZ K1ABC RRR", & ! 1.
|
||||
"K1ABC W9XYZ 73", & ! 1.
|
||||
"K1ABC W9XYZ RR73", & ! 1.
|
||||
"CQ FD K1ABC FN42", & ! 1.
|
||||
"CQ TEST K1ABC/R FN42", & ! 1.
|
||||
"K1ABC/R W9XYZ EN37", & ! 1.
|
||||
"W9XYZ K1ABC/R R FN42", & ! 1.
|
||||
"K1ABC/R W9XYZ RR73", & ! 1.
|
||||
"CQ TEST K1ABC FN42", & ! 1.
|
||||
"W9XYZ <PJ4/K1ABC> -11", & ! 1.
|
||||
"<PJ4/K1ABC> W9XYZ R-09", & ! 1.
|
||||
"CQ W9XYZ EN37", & ! 1.
|
||||
"<YW18FIFA> W9XYZ -11", & ! 1.
|
||||
"W9XYZ <YW18FIFA> R-09", & ! 1.
|
||||
"<YW18FIFA> KA1ABC", & ! 1.
|
||||
"KA1ABC <YW18FIFA> -11", & ! 1.
|
||||
"<YW18FIFA> KA1ABC R-17", & ! 1.
|
||||
"<YW18FIFA> KA1ABC 73", & ! 1.
|
||||
"CQ G4ABC/P IO91", & ! 2.
|
||||
"G4ABC/P PA9XYZ JO22", & ! 2.
|
||||
"PA9XYZ G4ABC/P RR73", & ! 2.
|
||||
"K1ABC W9XYZ 579 WI", & ! 3.
|
||||
"W9XYZ K1ABC R 589 MA", & ! 3.
|
||||
"K1ABC KA0DEF 559 MO", & ! 3.
|
||||
"TU; KA0DEF K1ABC R 569 MA", & ! 3.
|
||||
"KA1ABC G3AAA 529 0013", & ! 3.
|
||||
"TU; G3AAA K1ABC R 559 MA", & ! 3.
|
||||
"CQ KH1/KH7Z", & ! 4.
|
||||
"CQ PJ4/K1ABC", & ! 4.
|
||||
"PJ4/K1ABC <W9XYZ>", & ! 4.
|
||||
"<W9XYZ> PJ4/K1ABC RRR", & ! 4.
|
||||
"PJ4/K1ABC <W9XYZ> 73", & ! 4.
|
||||
"<W9XYZ> YW18FIFA", & ! 4.
|
||||
"YW18FIFA <W9XYZ> RRR", & ! 4.
|
||||
"<W9XYZ> YW18FIFA 73", & ! 4.
|
||||
"CQ YW18FIFA", & ! 4.
|
||||
"<KA1ABC> YW18FIFA RR73"/
|
||||
|
@ -12,7 +12,8 @@ program ft8code
|
||||
character*9 comment
|
||||
character bad*1,msgtype*18
|
||||
integer itone(NN)
|
||||
integer*1 msgbits(77)
|
||||
integer*1 msgbits(77),codeword(174)
|
||||
logical short
|
||||
|
||||
! Get command-line argument(s)
|
||||
nargs=iargc()
|
||||
@ -23,19 +24,22 @@ program ft8code
|
||||
print*,'bit and symbol ordering, and other details of the FT8 protocol.'
|
||||
print*
|
||||
print*,'Usage: ft8code [-c grid] "message" # Results for specified message'
|
||||
print*,' ft8code -t # Examples of all message types'
|
||||
print*,' ft8code -T # Examples of all message types'
|
||||
print*,' ft8code -t # Short format examples'
|
||||
go to 999
|
||||
endif
|
||||
|
||||
call getarg(1,msg) !Message to be transmitted
|
||||
if(len(trim(msg)).eq.2 .and. msg(1:2).eq.'-t') then
|
||||
short=.false.
|
||||
if(len(trim(msg)).eq.2 .and. (msg(1:2).eq.'-T' .or. msg(1:2).eq.'-t')) then
|
||||
nmsg=NTEST
|
||||
short=msg(1:2).eq.'-t'
|
||||
else
|
||||
call fmtmsg(msg,iz) !To upper case; collapse multiple blanks
|
||||
nmsg=1
|
||||
endif
|
||||
|
||||
write(*,1010)
|
||||
if(.not.short) write(*,1010)
|
||||
1010 format(4x,'Message',31x,'Decoded',29x,'Err i3.n3'/100('-'))
|
||||
|
||||
do imsg=1,nmsg
|
||||
@ -45,6 +49,7 @@ program ft8code
|
||||
i3=-1
|
||||
n3=-1
|
||||
call genft8(msg,i3,n3,msgsent,msgbits,itone)
|
||||
call encode174_91(msgbits,codeword)
|
||||
msgtype=""
|
||||
if(i3.eq.0) then
|
||||
if(n3.eq.0) msgtype="Free text"
|
||||
@ -58,26 +63,42 @@ program ft8code
|
||||
if(i3.eq.1) msgtype="Standard msg"
|
||||
if(i3.eq.2) msgtype="EU VHF Contest"
|
||||
if(i3.eq.3) msgtype="ARRL RTTY Roundup"
|
||||
if(i3.eq.4) msgtype="Nonstandard calls"
|
||||
if(i3.ge.5) msgtype="Undefined msg type"
|
||||
if(i3.eq.4) msgtype="Nonstandard call"
|
||||
if(i3.ge.5) msgtype="Undefined type"
|
||||
if(i3.ge.1) n3=-1
|
||||
bad=" "
|
||||
comment=' '
|
||||
if(msg.ne.msgsent) bad="*"
|
||||
if(n3.ge.0) then
|
||||
write(*,1020) imsg,msg,msgsent,bad,i3,n3,msgtype,comment
|
||||
1020 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',i1,1x,a18,1x,a9)
|
||||
if(short) then
|
||||
if(n3.ge.0) then
|
||||
write(*,1020) i3,n3,msg,bad,msgtype
|
||||
1020 format(i1,'.',i1,2x,a37,1x,a1,1x,a18)
|
||||
else
|
||||
write(*,1022) i3,msg,bad,msgtype
|
||||
1022 format(i1,'.',3x,a37,1x,a1,1x,a18)
|
||||
endif
|
||||
else
|
||||
write(*,1022) imsg,msg,msgsent,bad,i3,msgtype,comment
|
||||
1022 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',1x,1x,a18,1x,a9)
|
||||
if(n3.ge.0) then
|
||||
write(*,1024) imsg,msg,msgsent,bad,i3,n3,msgtype,comment
|
||||
1024 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',i1,1x,a18,1x,a9)
|
||||
else
|
||||
write(*,1026) imsg,msg,msgsent,bad,i3,msgtype,comment
|
||||
1026 format(i2,'.',1x,a37,1x,a37,1x,a1,2x,i1,'.',1x,1x,a18,1x,a9)
|
||||
endif
|
||||
endif
|
||||
enddo
|
||||
|
||||
if(nmsg.eq.1) then
|
||||
write(*,1030) msgbits
|
||||
1030 format(/'Message bits: ',/77i1)
|
||||
1030 format(/'Source-encoded message, 77 bits: ',/77i1)
|
||||
write(*,1031) codeword(78:91)
|
||||
1031 format(/'14-bit CRC: ',/14i1)
|
||||
write(*,1032) codeword(92:174)
|
||||
1032 format(/'83 Parity bits: ',/83i1)
|
||||
write(*,1034) itone
|
||||
1034 format(/'Channel symbols (tones):'/79i1)
|
||||
1034 format(/'Channel symbols (79 tones):'/ &
|
||||
' Sync ',14x,'Data',15x,'Sync',15x,'Data',15x,'Sync'/ &
|
||||
7i1,1x,29i1,1x,7i1,1x,29i1,1x,7i1)
|
||||
endif
|
||||
|
||||
999 end program ft8code
|
||||
|
@ -2066,7 +2066,7 @@ Yellow when too low</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widgets/mainwindow.ui" line="984"/>
|
||||
<source>Frequncy entry</source>
|
||||
<source>Frequency entry</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -2894,12 +2894,12 @@ list. The list can be maintained in Settings (F2).</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widgets/mainwindow.ui" line="2638"/>
|
||||
<source><html><head/><body><p>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html></source>
|
||||
<source><html><head/><body><p>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widgets/mainwindow.ui" line="2641"/>
|
||||
<source>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</source>
|
||||
<source>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -2066,7 +2066,7 @@ Yellow when too low</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widgets/mainwindow.ui" line="984"/>
|
||||
<source>Frequncy entry</source>
|
||||
<source>Frequency entry</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
@ -2894,12 +2894,12 @@ list. The list can be maintained in Settings (F2).</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widgets/mainwindow.ui" line="2638"/>
|
||||
<source><html><head/><body><p>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html></source>
|
||||
<source><html><head/><body><p>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../widgets/mainwindow.ui" line="2641"/>
|
||||
<source>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</source>
|
||||
<source>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
@ -981,7 +981,7 @@ QPushButton[state="ok"] {
|
||||
<string><html><head/><body><p>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</p></body></html></string>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Frequncy entry</string>
|
||||
<string>Frequency entry</string>
|
||||
</property>
|
||||
<property name="accessibleDescription">
|
||||
<string>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</string>
|
||||
@ -2635,10 +2635,10 @@ list. The list can be maintained in Settings (F2).</string>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="WSPR_prefer_type_1_check_box">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html></string>
|
||||
<string><html><head/><body><p>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</p></body></html></string>
|
||||
</property>
|
||||
<property name="accessibleDescription">
|
||||
<string>6 digit locators cause 2 different mesages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</string>
|
||||
<string>6 digit locators cause 2 different messages to be sent, the second contains the full locator but only a hashed callsign, other stations must have decoded the first once before they can decode your call in the second. Check this option to only send 4 digit locators if it will avoid the two message protocol.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Prefer type 1 messages</string>
|
||||
|
Loading…
Reference in New Issue
Block a user