From b986c7c81c3f089fc4fc6a47361b3cec23f93fbc Mon Sep 17 00:00:00 2001
From: Joe Taylor <joe@princeton.edu>
Date: Thu, 30 Nov 2023 15:56:09 -0500
Subject: [PATCH 1/5] Modify cablog to handle MAP65 log files wsjt.log as well
 as WSJT-X log files wsjtx.log.

---
 lib/cablog.f90 | 81 +++++++++++++++++++++++++++++++++-----------------
 1 file changed, 53 insertions(+), 28 deletions(-)

diff --git a/lib/cablog.f90 b/lib/cablog.f90
index ebc7295cf..a6ba28859 100644
--- a/lib/cablog.f90
+++ b/lib/cablog.f90
@@ -3,7 +3,11 @@ program cablog
   character*100 line,infile,outfile
   character cband*4,cmode*2,cdate*10,cutc*4,callsign*10,mycall*10
   character csent*3,crcvd*3,dsent*3,drcvd*3
+  character*3 cmo(12)
   integer icomma(20)
+  logical map65
+  data cmo/'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep',   &
+           'Oct','Nov','Dec'/
 
   nargs=iargc()
   if(nargs.ne.4) then
@@ -48,9 +52,12 @@ program cablog
           'CREATED-BY: cablog (C) K1JT')        
 
   n=0
+  map65=.false.
+  
   do nn=1,9999
      read(10,'(a100)',end=900) line
      if(len(trim(line)).eq.0) cycle
+     if(line(6:6).ge.'A' .and. line(6:6).le.'Z') map65=.true.
      n=n+1
      k=0
      do j=1,100
@@ -61,38 +68,54 @@ program cablog
      enddo
      cmode='DG'
      if(index(line,',CW,').gt.10) cmode='CW'
-     cdate=line(1:10)
-     cutc=line(32:33)//line(35:36)
-     i0=index(line(41:),',')
-     callsign=line(41:39+i0)
-     read(line(icomma(6)+1:icomma(7)-1),*,err=10,end=10) freq
-     go to 20
-10   print*,'***Error at line ',n
-     print*,trim(line)     
-20   if(freq.ge.50.0 .and. freq.le.54.0) cband='50  '
-     if(freq.ge.144.0 .and. freq.le.148.0) cband='144 '
-     if(freq.ge.28.0 .and. freq.le.29.0) cband='144 '
-     if(freq.ge.222.0 .and. freq.le.225.0) cband='222 '
-     if(freq.ge.420.0 .and. freq.le.450.0) cband='432 '
-     if(freq.ge.902.0 .and. freq.le.928.0) cband='902 '
-     if(freq.ge.1240.0 .and. freq.le.1300.0) cband='1.2G'
-     if(freq.ge.2300.0 .and. freq.le.2450.0) cband='2.3G'
-     if(freq.ge.3300.0 .and. freq.le.3500.0) cband='3.4G'
-     if(freq.ge.5650.0 .and. freq.le.5925.0) cband='5.7G'
-     if(freq.ge.10000.0 .and. freq.le.10500.0) cband='10G '
-     if(freq.ge.24000.0 .and. freq.le.24250.0) cband='24G '
-     if(icomma(8).eq.icomma(9)-1) then
+
+     if(map65) then
+        do i=1,12
+           if(cmo(i).eq.line(6:8)) write(cdate(6:7),'(i2.2)') i
+        enddo
+        cdate(1:5)=line(1:5)
+        cdate(8:10)=line(9:11)
+        cutc=line(13:14)//line(16:17)
+        i0=index(line(19:),',')
+        callsign=line(19:17+i0)
+        cband='144 '
         csent=dsent
-     else
-        csent=line(icomma(8)+1:icomma(9)-1)
-     endif
-     if(icomma(9).eq.icomma(10)-1) then
         crcvd=drcvd
      else
-        crcvd=line(icomma(9)+1:icomma(10)-1)
+        cdate=line(1:10)
+        cutc=line(32:33)//line(35:36)
+        i0=index(line(41:),',')
+        callsign=line(41:39+i0)
+        read(line(icomma(6)+1:icomma(7)-1),*,err=10,end=10) freq
+        go to 20
+10      print*,'***Error at line ',n
+        print*,trim(line)     
+20      if(freq.ge.50.0 .and. freq.le.54.0) cband='50  '
+        if(freq.ge.144.0 .and. freq.le.148.0) cband='144 '
+        if(freq.ge.28.0 .and. freq.le.29.0) cband='144 '
+        if(freq.ge.222.0 .and. freq.le.225.0) cband='222 '
+        if(freq.ge.420.0 .and. freq.le.450.0) cband='432 '
+        if(freq.ge.902.0 .and. freq.le.928.0) cband='902 '
+        if(freq.ge.1240.0 .and. freq.le.1300.0) cband='1.2G'
+        if(freq.ge.2300.0 .and. freq.le.2450.0) cband='2.3G'
+        if(freq.ge.3300.0 .and. freq.le.3500.0) cband='3.4G'
+        if(freq.ge.5650.0 .and. freq.le.5925.0) cband='5.7G'
+        if(freq.ge.10000.0 .and. freq.le.10500.0) cband='10G '
+        if(freq.ge.24000.0 .and. freq.le.24250.0) cband='24G '
+        if(icomma(8).eq.icomma(9)-1) then
+           csent=dsent
+        else
+           csent=line(icomma(8)+1:icomma(9)-1)
+        endif
+        if(icomma(9).eq.icomma(10)-1) then
+           crcvd=drcvd
+        else
+           crcvd=line(icomma(9)+1:icomma(10)-1)
+        endif
      endif
-     write(12,1020) cband,cmode,cdate,cutc,mycall,csent,callsign,crcvd
-1020 format('QSO: ',a4,1x,a2,1x,a10,1x,a4,1x,a6,1x,a3,5x,a10,1x,a3)
+     
+     write(12,1030) cband,cmode,cdate,cutc,mycall,csent,callsign,crcvd
+1030 format('QSO: ',a4,1x,a2,1x,a10,1x,a4,1x,a6,1x,a3,5x,a10,1x,a3)
   enddo
 
 900 write(12,1900)
@@ -103,3 +126,5 @@ program cablog
 999 end program cablog
      
 !2023-10-28,00:17:00,2023-10-28,00:21:00,G7TZZ,IO92,1296.083100,Q65,-17,-17,,,,
+!2023-Nov-30,20:31,W8WN,EM77,0,Q65A
+  

From f6989c3e6c498d04c205ee7c661dd0d11aa86723 Mon Sep 17 00:00:00 2001
From: Joe Taylor <joe@princeton.edu>
Date: Fri, 1 Dec 2023 09:35:53 -0500
Subject: [PATCH 2/5] Formatting updates for program CABLOG.

---
 lib/cablog.f90 | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/cablog.f90 b/lib/cablog.f90
index a6ba28859..e27fa8f30 100644
--- a/lib/cablog.f90
+++ b/lib/cablog.f90
@@ -11,13 +11,15 @@ program cablog
 
   nargs=iargc()
   if(nargs.ne.4) then
-     print*,"Program cablog converts the file 'wsjtx.log' to a bare-bones"
-     print*,"Cabrillo log for the ARRL International EME Contest. You will"
+     print*,"Program cablog converts file 'wsjtx.log' written by WSJT-X"
+     print*,"(or wsjt.log written by MAP65) to a bare-bones Cabrillo"
+     print*,"log for the ARRL International EME Contest. You will"
      print*,"certainly need to edit the header information, and you may"
      print*,"edit the log elsewhere as required."
      print*,' '
-     print*,'Usage:   cablog <MyCall> <sent> <rcvd> <infile>'
-     print*,'Example: cablog   W2ZQ    -15    -16  wsjtx.log'
+     print*,'Usage:    cablog <MyCall> <sent> <rcvd> <infile>'
+     print*,'Examples: cablog   W2ZQ    -15    -16  wsjtx.log'
+     print*,'          cablog   W2ZQ     O      O   wsjt.log'
      go to 999
   endif
   call getarg(1,mycall)

From 4a9c4dac6f7036ec70946e04a2bf25fe0b067bbf Mon Sep 17 00:00:00 2001
From: Uwe Risse <dg2ycb@gmx.de>
Date: Sat, 2 Dec 2023 12:01:23 +0100
Subject: [PATCH 3/5] Each click on the FT8 button should exit hound mode.

---
 widgets/mainwindow.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp
index 9bbf05885..6d844cfc4 100644
--- a/widgets/mainwindow.cpp
+++ b/widgets/mainwindow.cpp
@@ -10776,6 +10776,10 @@ void MainWindow::on_houndButton_clicked (bool checked)
 
 void MainWindow::on_ft8Button_clicked()
 {
+  if(m_specOp==SpecOp::HOUND) {
+    m_config.setSpecial_None();
+    m_specOp=m_config.special_op_id();
+  }
     on_actionFT8_triggered();
 }
 

From bfd44f178a3d05c59504a1372695ec3a0f6820e9 Mon Sep 17 00:00:00 2001
From: Uwe Risse <dg2ycb@gmx.de>
Date: Sat, 2 Dec 2023 12:06:15 +0100
Subject: [PATCH 4/5] Improved behavior when Rig Split has been selected (patch
 by Mike).

---
 Transceiver/HamlibTransceiver.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Transceiver/HamlibTransceiver.cpp b/Transceiver/HamlibTransceiver.cpp
index 699222165..565fb9181 100644
--- a/Transceiver/HamlibTransceiver.cpp
+++ b/Transceiver/HamlibTransceiver.cpp
@@ -911,9 +911,9 @@ void HamlibTransceiver::do_frequency (Frequency f, MODE m, bool no_ignore)
               // to frequency such as the TS-2000 auto mode setting
               CAT_TRACE ("rig_set_mode mode=" << rig_strrmode (new_mode));
               m_->error_check (rig_set_mode (m_->rig_.data (), target_vfo, new_mode, RIG_PASSBAND_NOCHANGE), tr ("setting current VFO mode"));
-              // set mode on VFOB too if we are in split
-              if (state ().split()) rig_set_mode (m_->rig_.data (), RIG_VFO_B, new_mode, RIG_PASSBAND_NOCHANGE), tr ("setting VFOB mode");
             }
+          // set mode on VFOB too if we are in split
+          if (state ().split()) rig_set_mode (m_->rig_.data (), RIG_VFO_B, new_mode, RIG_PASSBAND_NOCHANGE), tr ("setting VFOB mode");
           update_mode (m);
         }
     }

From 0456b3af8c2b8ab5cfc955991ac0343703993866 Mon Sep 17 00:00:00 2001
From: Uwe Risse <dg2ycb@gmx.de>
Date: Sat, 2 Dec 2023 18:58:48 +0100
Subject: [PATCH 5/5] Don't insert individual contest name when in Fox mode.

---
 widgets/mainwindow.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp
index 6d844cfc4..b82430a11 100644
--- a/widgets/mainwindow.cpp
+++ b/widgets/mainwindow.cpp
@@ -6051,7 +6051,7 @@ void MainWindow::genCQMsg ()
        ( tlist.at(1)==my_callsign or
          tlist.at(2)==my_callsign ) and
        stdCall(my_callsign)) {
-      if(m_config.Individual_Contest_Name())  {
+      if(m_config.Individual_Contest_Name() && SpecOp::FOX != m_specOp)  {
            m_cqStr = m_config.Contest_Name();
       } else {
       if(SpecOp::NA_VHF == m_specOp)    m_cqStr="TEST";