mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-19 10:32:02 -05:00
167 lines
5.6 KiB
Fortran
167 lines
5.6 KiB
Fortran
subroutine q65_ap(nQSOprogress,ipass,ncontest,lapcqonly,iaptype, &
|
|
apsym0,apmask,apsymbols)
|
|
|
|
integer apsym0(58),aph10(10)
|
|
integer apmask(78),apsymbols(78)
|
|
integer naptypes(0:5,4) ! (nQSOProgress, ipass) maximum of 4 passes for now
|
|
integer mcqru(29),mcqfd(29),mcqtest(29),mcqww(29)
|
|
integer mcq(29),mrrr(19),m73(19),mrr73(19)
|
|
logical lapcqonly,first
|
|
data mcq/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0/
|
|
data mcqru/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,1,0,0/
|
|
data mcqfd/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0/
|
|
data mcqtest/0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0/
|
|
data mcqww/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0/
|
|
data mrrr/0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1/
|
|
data m73/0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1/
|
|
data mrr73/0,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,0,0,1/
|
|
data ncontest0/99/
|
|
data first/.true./
|
|
save naptypes,ncontest0
|
|
|
|
! nQSOprogress
|
|
! 0 CALLING
|
|
! 1 REPLYING
|
|
! 2 REPORT
|
|
! 3 ROGER_REPORT
|
|
! 4 ROGERS
|
|
! 5 SIGNOFF
|
|
|
|
if(first.or.(ncontest.ne.ncontest0)) then
|
|
! iaptype
|
|
!------------------------
|
|
! 1 CQ ??? ??? (29+4=33 ap bits)
|
|
! 2 MyCall ??? ??? (29+4=33 ap bits)
|
|
! 3 MyCall DxCall ??? (58+4=62 ap bits)
|
|
! 4 MyCall DxCall RRR (78 ap bits)
|
|
! 5 MyCall DxCall 73 (78 ap bits)
|
|
! 6 MyCall DxCall RR73 (78 ap bits)
|
|
|
|
naptypes(0,1:4)=(/1,2,0,0/) ! Tx6 selected (CQ)
|
|
naptypes(1,1:4)=(/2,3,0,0/) ! Tx1
|
|
naptypes(2,1:4)=(/2,3,0,0/) ! Tx2
|
|
naptypes(3,1:4)=(/3,4,5,6/) ! Tx3
|
|
naptypes(4,1:4)=(/3,4,5,6/) ! Tx4
|
|
naptypes(5,1:4)=(/3,1,2,0/) ! Tx5
|
|
first=.false.
|
|
ncontest0=ncontest
|
|
endif
|
|
|
|
apsymbols=0
|
|
iaptype=naptypes(nQSOProgress,ipass)
|
|
if(lapcqonly) iaptype=1
|
|
|
|
! ncontest=0 : NONE
|
|
! 1 : NA_VHF
|
|
! 2 : EU_VHF
|
|
! 3 : FIELD DAY
|
|
! 4 : RTTY
|
|
! 5 : WW_DIGI
|
|
! 6 : FOX
|
|
! 7 : HOUND
|
|
|
|
! Conditions that cause us to bail out of AP decoding
|
|
! if(ncontest.le.5 .and. iaptype.ge.3 .and. (abs(f1-nfqso).gt.napwid .and. abs(f1-nftx).gt.napwid) ) goto 900
|
|
! if(ncontest.eq.6) goto 900 !No AP for Foxes
|
|
! if(ncontest.eq.7.and.f1.gt.950.0) goto 900 !Hounds use AP only below 950 Hz
|
|
if(ncontest.ge.6) goto 900
|
|
if(iaptype.ge.2 .and. apsym0(1).gt.1) goto 900 !No, or nonstandard, mycall
|
|
if(ncontest.eq.7 .and. iaptype.ge.2 .and. aph10(1).gt.1) goto 900
|
|
if(iaptype.ge.3 .and. apsym0(30).gt.1) goto 900 !No, or nonstandard, dxcall
|
|
|
|
if(iaptype.eq.1) then ! CQ or CQ RU or CQ TEST or CQ FD
|
|
apmask=0
|
|
apmask(1:29)=1
|
|
if(ncontest.eq.0) apsymbols(1:29)=mcq
|
|
if(ncontest.eq.1) apsymbols(1:29)=mcqtest
|
|
if(ncontest.eq.2) apsymbols(1:29)=mcqtest
|
|
if(ncontest.eq.3) apsymbols(1:29)=mcqfd
|
|
if(ncontest.eq.4) apsymbols(1:29)=mcqru
|
|
if(ncontest.eq.5) apsymbols(1:29)=mcqww
|
|
if(ncontest.eq.7) apsymbols(1:29)=mcq
|
|
apmask(75:78)=1
|
|
apsymbols(75:78)=(/0,0,1,0/)
|
|
endif
|
|
|
|
if(iaptype.eq.2) then ! MyCall,???,???
|
|
apmask=0
|
|
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.5) then
|
|
apmask(1:29)=1
|
|
apsymbols(1:29)=apsym0(1:29)
|
|
apmask(75:78)=1
|
|
apsymbols(75:78)=(/0,0,1,0/)
|
|
else if(ncontest.eq.2) then
|
|
apmask(1:28)=1
|
|
apsymbols(1:28)=apsym0(1:28)
|
|
apmask(72:74)=1
|
|
apsymbols(72)=0
|
|
apsymbols(73)=(+1)
|
|
apsymbols(74)=0
|
|
apmask(75:78)=1
|
|
apsymbols(75:78)=0
|
|
else if(ncontest.eq.3) then
|
|
apmask(1:28)=1
|
|
apsymbols(1:28)=apsym0(1:28)
|
|
apmask(75:78)=1
|
|
apsymbols(75:78)=0
|
|
else if(ncontest.eq.4) then
|
|
apmask(2:29)=1
|
|
apsymbols(2:29)=apsym0(1:28)
|
|
apmask(75:78)=1
|
|
apsymbols(75:78)=(/0,0,1,0/)
|
|
else if(ncontest.eq.7) then ! ??? RR73; MyCall <Fox Call hash10> ???
|
|
apmask(29:56)=1
|
|
apsymbols(29:56)=apsym0(1:28)
|
|
apmask(57:66)=1
|
|
apsymbols(57:66)=aph10(1:10)
|
|
apmask(72:78)=1
|
|
apsymbols(72:74)=(/0,0,1/)
|
|
apsymbols(75:78)=0
|
|
endif
|
|
endif
|
|
|
|
if(iaptype.eq.3) then ! MyCall,DxCall,???
|
|
apmask=0
|
|
if(ncontest.eq.0.or.ncontest.eq.1.or.ncontest.eq.2.or.ncontest.eq.5.or.ncontest.eq.7) then
|
|
apmask(1:58)=1
|
|
apsymbols(1:58)=apsym0
|
|
apmask(75:78)=1
|
|
apsymbols(75:78)=(/0,0,1,0/)
|
|
else if(ncontest.eq.3) then ! Field Day
|
|
apmask(1:56)=1
|
|
apsymbols(1:28)=apsym0(1:28)
|
|
apsymbols(29:56)=apsym0(30:57)
|
|
apmask(72:78)=1
|
|
apsymbols(75:78)=0
|
|
else if(ncontest.eq.4) then
|
|
apmask(2:57)=1
|
|
apsymbols(2:29)=apsym0(1:28)
|
|
apsymbols(30:57)=apsym0(30:57)
|
|
apmask(75:78)=1
|
|
apsymbols(75:78)=(/0,0,1,0/)
|
|
endif
|
|
endif
|
|
|
|
if(iaptype.eq.5.and.ncontest.eq.7) goto 900 !Hound
|
|
if(iaptype.eq.4 .or. iaptype.eq.5 .or. iaptype.eq.6) then
|
|
apmask=0
|
|
if(ncontest.le.5 .or. (ncontest.eq.7.and.iaptype.eq.6)) then
|
|
apmask(1:78)=1 !MyCall, HisCall, RRR|73|RR73
|
|
apmask(72:74)=0 !Check for <blank>, RRR, RR73, 73
|
|
apsymbols(1:58)=apsym0
|
|
if(iaptype.eq.4) apsymbols(59:77)=mrrr
|
|
if(iaptype.eq.5) apsymbols(59:77)=m73
|
|
if(iaptype.eq.6) apsymbols(59:77)=mrr73
|
|
else if(ncontest.eq.7.and.iaptype.eq.4) then ! Hound listens for MyCall RR73;...
|
|
apmask(1:28)=1
|
|
apsymbols(1:28)=apsym0(1:28)
|
|
apmask(57:66)=1
|
|
apsymbols(57:66)=aph10(1:10)
|
|
apmask(72:78)=1
|
|
apsymbols(72:78)=(/0,0,1,0,0,0,0/)
|
|
endif
|
|
endif
|
|
|
|
900 return
|
|
end subroutine q65_ap
|