From f7421feb622b5f67ae16afcb307a34de5a2113e7 Mon Sep 17 00:00:00 2001
From: Joe Taylor <joe@princeton.edu>
Date: Sun, 4 Dec 2022 10:17:02 -0500
Subject: [PATCH] Initial build of q65w, an experiment to make a stripped-down
 map65.

---
 CMakeLists.txt                             |    4 +-
 CMakeLists.txt.0                           | 1788 ++++++
 q65w/.gitignore                            |    1 +
 q65w/CMakeLists.txt                        |   74 +
 q65w/LICENSE_WHEATLEY.TXT                  |   30 +
 q65w/MAP65_Beta_Release.docx               |  Bin 0 -> 23951 bytes
 q65w/about.cpp                             |   23 +
 q65w/about.h                               |   23 +
 q65w/about.ui                              |   37 +
 q65w/afmhot.dat                            |  257 +
 q65w/astro.cpp                             |  194 +
 q65w/astro.h                               |   32 +
 q65w/astro.ui                              |  249 +
 q65w/bandmap.cpp                           |  100 +
 q65w/bandmap.h                             |   35 +
 q65w/bandmap.ui                            |   43 +
 q65w/blue.dat                              |  256 +
 q65w/commons.h                             |   48 +
 q65w/devsetup.cpp                          |  389 ++
 q65w/devsetup.h                            |   91 +
 q65w/devsetup.ui                           | 1813 +++++++
 q65w/displaytext.cpp                       |   15 +
 q65w/displaytext.h                         |   22 +
 q65w/ffft.f                                |   69 +
 q65w/ft2000_freq.sh                        |    1 +
 q65w/getdev.cpp                            |  259 +
 q65w/getfile.cpp                           |  107 +
 q65w/getfile.h                             |   12 +
 q65w/getsvn.cmake                          |   16 +
 q65w/in.dat                                |   16 +
 q65w/killbyname.cpp                        |  282 +
 q65w/libm65/CMakeLists.txt                 |  148 +
 q65w/libm65/Makefile                       |  130 +
 q65w/libm65/Makefile.0                     |  114 +
 q65w/libm65/Makefile.MinGW                 |  105 +
 q65w/libm65/Makefile.jtsdk                 |  129 +
 q65w/libm65/Makefile.linux                 |   96 +
 q65w/libm65/afc65b.f90                     |   70 +
 q65w/libm65/astro.f90                      |  105 +
 q65w/libm65/astro0.f90                     |   81 +
 q65w/libm65/astrosub.f90                   |   26 +
 q65w/libm65/averms.f90                     |   20 +
 q65w/libm65/badmsg.f90                     |   46 +
 q65w/libm65/ccf2.f90                       |   45 +
 q65w/libm65/ccf65.f90                      |  128 +
 q65w/libm65/cgen65.f90                     |   99 +
 q65w/libm65/chkhist.f90                    |   23 +
 q65w/libm65/chkmsg.f90                     |   31 +
 q65w/libm65/coord.f90                      |   40 +
 q65w/libm65/cutil.c                        |   93 +
 q65w/libm65/dcoord.f90                     |   40 +
 q65w/libm65/decode0.f90                    |   71 +
 q65w/libm65/decode1a.f90                   |  145 +
 q65w/libm65/decode65b.f90                  |   48 +
 q65w/libm65/decode_rs.c                    |  268 +
 q65w/libm65/deep65.f90                     |  170 +
 q65w/libm65/deg2grid.f90                   |   30 +
 q65w/libm65/demod64a.f90                   |   77 +
 q65w/libm65/display.f90                    |  179 +
 q65w/libm65/dot.f90                        |   11 +
 q65w/libm65/dpol.f90                       |   41 +
 q65w/libm65/encode65.f90                   |   14 +
 q65w/libm65/encode_rs.c                    |   47 +
 q65w/libm65/extract.f90                    |  136 +
 q65w/libm65/f77_wisdom.f                   |   45 +
 q65w/libm65/fchisq.f90                     |   77 +
 q65w/libm65/fchisq0.f90                    |   23 +
 q65w/libm65/fftw3.f                        |   64 +
 q65w/libm65/fftw3.f90                      |   64 +
 q65w/libm65/fil6521.f90                    |   44 +
 q65w/libm65/filbig.f90                     |  132 +
 q65w/libm65/fmtmsg.f90                     |   21 +
 q65w/libm65/four2a.f90                     |  115 +
 q65w/libm65/ftninit.f90                    |   31 +
 q65w/libm65/ftnquit.f90                    |    8 +
 q65w/libm65/ftrsd2.c                       |  213 +
 q65w/libm65/gen65.f90                      |   99 +
 q65w/libm65/gen_q65_cwave.f90              |   52 +
 q65w/libm65/gen_q65_wave.f90               |   54 +
 q65w/libm65/geocentric.f90                 |   17 +
 q65w/libm65/getdphi.f90                    |   18 +
 q65w/libm65/getpfx1.f90                    |   96 +
 q65w/libm65/getpfx2.f90                    |   24 +
 q65w/libm65/gran.c                         |   28 +
 q65w/libm65/graycode.f90                   |   10 +
 q65w/libm65/graycode65.f90                 |    9 +
 q65w/libm65/grid2deg.f90                   |   38 +
 q65w/libm65/grid2k.f90                     |   12 +
 q65w/libm65/igray.c                        |   22 +
 q65w/libm65/indexx.f90                     |   91 +
 q65w/libm65/init_rs.c                      |  120 +
 q65w/libm65/int.h                          |   54 +
 q65w/libm65/interleave63.f90               |   25 +
 q65w/libm65/ipcomm.cpp                     |   34 +
 q65w/libm65/iqcal.f90                      |   30 +
 q65w/libm65/iqfix.f90                      |   28 +
 q65w/libm65/jt65code.f90                   |   47 +
 q65w/libm65/k2grid.f90                     |   12 +
 q65w/libm65/lorentzian.f90                 |  102 +
 q65w/libm65/m65.f90                        |  195 +
 q65w/libm65/m65a.f90                       |  107 +
 q65w/libm65/map65a.f90                     |  529 ++
 q65w/libm65/mapsim.f90                     |  229 +
 q65w/libm65/moon2.f90                      |  163 +
 q65w/libm65/moondop.f90                    |   72 +
 q65w/libm65/msgs.txt                       |   60 +
 q65w/libm65/nchar.f90                      |   23 +
 q65w/libm65/njunk.f90                      |    1 +
 q65w/libm65/noisegen.f90                   |   13 +
 q65w/libm65/packjt.f90                     |  996 ++++
 q65w/libm65/pfx.f90                        |   50 +
 q65w/libm65/pfxdump.f90                    |   13 +
 q65w/libm65/polfit.f90                     |   87 +
 q65w/libm65/ptt.c                          |   43 +
 q65w/libm65/ptt_unix.c                     |  405 ++
 q65w/libm65/q65b.f90                       |  204 +
 q65w/libm65/recvpkt.f90                    |   73 +
 q65w/libm65/rfile3a.f90                    |   14 +
 q65w/libm65/rs.h                           |   35 +
 q65w/libm65/rs2.h                          |   16 +
 q65w/libm65/s3avg.f90                      |   60 +
 q65w/libm65/sec_midn.f90                   |   11 +
 q65w/libm65/set.f90                        |   31 +
 q65w/libm65/setup65.f90                    |   96 +
 q65w/libm65/shell.f90                      |   27 +
 q65w/libm65/sleep.h                        |   32 +
 q65w/libm65/sleep_msec.f90                 |    4 +
 q65w/libm65/smo.f90                        |   19 +
 q65w/libm65/sort.f90                       |    6 +
 q65w/libm65/ssort.f                        |  287 +
 q65w/libm65/sun.f90                        |   88 +
 q65w/libm65/symspec.f90                    |  224 +
 q65w/libm65/synctest.f90                   |   57 +
 q65w/libm65/synctst.f90                    |   84 +
 q65w/libm65/synctst2.f90                   |   91 +
 q65w/libm65/tastro.f90                     |   35 +
 q65w/libm65/timeval.h                      |   76 +
 q65w/libm65/timf2.f90                      |  215 +
 q65w/libm65/tm2.f90                        |   14 +
 q65w/libm65/tmoonsub.c                     |  514 ++
 q65w/libm65/toxyz.f90                      |   25 +
 q65w/libm65/trimlist.f90                   |   28 +
 q65w/libm65/twkfreq.f90                    |   26 +
 q65w/libm65/twkfreq_xy.f90                 |   29 +
 q65w/libm65/txpol.f90                      |   33 +
 q65w/libm65/usleep.c                       |    7 +
 q65w/libm65/wavhdr.f90                     |  110 +
 q65w/libm65/wideband_sync.f90              |  281 +
 q65w/libm65/wrapkarn.c                     |   70 +
 q65w/libm65/zplot.f90                      |   34 +
 q65w/main.cpp                              |   43 +
 q65w/mainwindow.cpp                        | 2409 +++++++++
 q65w/mainwindow.h                          |  330 ++
 q65w/mainwindow.ui                         | 1742 ++++++
 q65w/map65.pro                             |   70 +
 q65w/map65_config.h.in                     |    4 +
 q65w/map65b.iss                            |   46 +
 q65w/messages.cpp                          |  113 +
 q65w/messages.h                            |   44 +
 q65w/messages.ui                           |  107 +
 q65w/meterwidget.cpp                       |   49 +
 q65w/meterwidget.h                         |   30 +
 q65w/paInputDevice.c                       |   56 +
 q65w/pa_get_device_info.c                  |  173 +
 q65w/plotter.cpp                           |  792 +++
 q65w/plotter.h                             |  139 +
 q65w/q65w.rc                               |    1 +
 q65w/resources/CALL3.TXT                   | 5708 ++++++++++++++++++++
 q65w/resources/README.qthid.txt            |   22 +
 q65w/resources/qt.conf                     |    2 +
 q65w/resources/qthid/AUTHORS.qthid.4.1.txt |   16 +
 q65w/resources/qthid/AUTHORS.qthid4.0.txt  |   16 +
 q65w/resources/qthid/LICENSE.txt           |  674 +++
 q65w/resources/qthid/NEWS.qhid-4.0.txt     |   64 +
 q65w/resources/qthid/NEWS.qthid-4.1.txt    |   64 +
 q65w/resources/qthid/README-qthid-4.1.txt  |   72 +
 q65w/resources/qthid/README.qthid-4.0.txt  |   85 +
 q65w/resources/wisdom1.bat                 |    7 +
 q65w/resources/wisdom2.bat                 |    7 +
 q65w/set570.cpp                            |  272 +
 q65w/signalmeter.cpp                       |   53 +
 q65w/signalmeter.h                         |   32 +
 q65w/sleep.h                               |   16 +
 q65w/soundin.cpp                           |  451 ++
 q65w/soundin.h                             |   82 +
 q65w/soundout.cpp                          |  207 +
 q65w/soundout.h                            |   44 +
 q65w/ss.bat                                |    1 +
 q65w/sss.bat                               |    1 +
 q65w/txtune.cpp                            |  116 +
 q65w/txtune.h                              |   48 +
 q65w/txtune.ui                             |  302 ++
 q65w/widegraph.cpp                         |  388 ++
 q65w/widegraph.h                           |   92 +
 q65w/widegraph.ui                          |  340 ++
 q65w/wsjt.ico                              |  Bin 0 -> 1078 bytes
 196 files changed, 32222 insertions(+), 1 deletion(-)
 create mode 100644 CMakeLists.txt.0
 create mode 100644 q65w/.gitignore
 create mode 100644 q65w/CMakeLists.txt
 create mode 100644 q65w/LICENSE_WHEATLEY.TXT
 create mode 100644 q65w/MAP65_Beta_Release.docx
 create mode 100644 q65w/about.cpp
 create mode 100644 q65w/about.h
 create mode 100644 q65w/about.ui
 create mode 100644 q65w/afmhot.dat
 create mode 100644 q65w/astro.cpp
 create mode 100644 q65w/astro.h
 create mode 100644 q65w/astro.ui
 create mode 100644 q65w/bandmap.cpp
 create mode 100644 q65w/bandmap.h
 create mode 100644 q65w/bandmap.ui
 create mode 100644 q65w/blue.dat
 create mode 100644 q65w/commons.h
 create mode 100644 q65w/devsetup.cpp
 create mode 100644 q65w/devsetup.h
 create mode 100644 q65w/devsetup.ui
 create mode 100644 q65w/displaytext.cpp
 create mode 100644 q65w/displaytext.h
 create mode 100644 q65w/ffft.f
 create mode 100644 q65w/ft2000_freq.sh
 create mode 100644 q65w/getdev.cpp
 create mode 100644 q65w/getfile.cpp
 create mode 100644 q65w/getfile.h
 create mode 100644 q65w/getsvn.cmake
 create mode 100644 q65w/in.dat
 create mode 100644 q65w/killbyname.cpp
 create mode 100644 q65w/libm65/CMakeLists.txt
 create mode 100644 q65w/libm65/Makefile
 create mode 100644 q65w/libm65/Makefile.0
 create mode 100644 q65w/libm65/Makefile.MinGW
 create mode 100644 q65w/libm65/Makefile.jtsdk
 create mode 100644 q65w/libm65/Makefile.linux
 create mode 100644 q65w/libm65/afc65b.f90
 create mode 100644 q65w/libm65/astro.f90
 create mode 100644 q65w/libm65/astro0.f90
 create mode 100644 q65w/libm65/astrosub.f90
 create mode 100644 q65w/libm65/averms.f90
 create mode 100644 q65w/libm65/badmsg.f90
 create mode 100644 q65w/libm65/ccf2.f90
 create mode 100644 q65w/libm65/ccf65.f90
 create mode 100644 q65w/libm65/cgen65.f90
 create mode 100644 q65w/libm65/chkhist.f90
 create mode 100644 q65w/libm65/chkmsg.f90
 create mode 100644 q65w/libm65/coord.f90
 create mode 100644 q65w/libm65/cutil.c
 create mode 100644 q65w/libm65/dcoord.f90
 create mode 100644 q65w/libm65/decode0.f90
 create mode 100644 q65w/libm65/decode1a.f90
 create mode 100644 q65w/libm65/decode65b.f90
 create mode 100644 q65w/libm65/decode_rs.c
 create mode 100644 q65w/libm65/deep65.f90
 create mode 100644 q65w/libm65/deg2grid.f90
 create mode 100644 q65w/libm65/demod64a.f90
 create mode 100644 q65w/libm65/display.f90
 create mode 100644 q65w/libm65/dot.f90
 create mode 100644 q65w/libm65/dpol.f90
 create mode 100644 q65w/libm65/encode65.f90
 create mode 100644 q65w/libm65/encode_rs.c
 create mode 100644 q65w/libm65/extract.f90
 create mode 100644 q65w/libm65/f77_wisdom.f
 create mode 100644 q65w/libm65/fchisq.f90
 create mode 100644 q65w/libm65/fchisq0.f90
 create mode 100644 q65w/libm65/fftw3.f
 create mode 100644 q65w/libm65/fftw3.f90
 create mode 100644 q65w/libm65/fil6521.f90
 create mode 100644 q65w/libm65/filbig.f90
 create mode 100644 q65w/libm65/fmtmsg.f90
 create mode 100644 q65w/libm65/four2a.f90
 create mode 100644 q65w/libm65/ftninit.f90
 create mode 100644 q65w/libm65/ftnquit.f90
 create mode 100644 q65w/libm65/ftrsd2.c
 create mode 100644 q65w/libm65/gen65.f90
 create mode 100644 q65w/libm65/gen_q65_cwave.f90
 create mode 100644 q65w/libm65/gen_q65_wave.f90
 create mode 100644 q65w/libm65/geocentric.f90
 create mode 100644 q65w/libm65/getdphi.f90
 create mode 100644 q65w/libm65/getpfx1.f90
 create mode 100644 q65w/libm65/getpfx2.f90
 create mode 100644 q65w/libm65/gran.c
 create mode 100644 q65w/libm65/graycode.f90
 create mode 100644 q65w/libm65/graycode65.f90
 create mode 100644 q65w/libm65/grid2deg.f90
 create mode 100644 q65w/libm65/grid2k.f90
 create mode 100644 q65w/libm65/igray.c
 create mode 100644 q65w/libm65/indexx.f90
 create mode 100644 q65w/libm65/init_rs.c
 create mode 100644 q65w/libm65/int.h
 create mode 100644 q65w/libm65/interleave63.f90
 create mode 100644 q65w/libm65/ipcomm.cpp
 create mode 100644 q65w/libm65/iqcal.f90
 create mode 100644 q65w/libm65/iqfix.f90
 create mode 100644 q65w/libm65/jt65code.f90
 create mode 100644 q65w/libm65/k2grid.f90
 create mode 100644 q65w/libm65/lorentzian.f90
 create mode 100644 q65w/libm65/m65.f90
 create mode 100644 q65w/libm65/m65a.f90
 create mode 100644 q65w/libm65/map65a.f90
 create mode 100644 q65w/libm65/mapsim.f90
 create mode 100644 q65w/libm65/moon2.f90
 create mode 100644 q65w/libm65/moondop.f90
 create mode 100644 q65w/libm65/msgs.txt
 create mode 100644 q65w/libm65/nchar.f90
 create mode 100644 q65w/libm65/njunk.f90
 create mode 100644 q65w/libm65/noisegen.f90
 create mode 100644 q65w/libm65/packjt.f90
 create mode 100644 q65w/libm65/pfx.f90
 create mode 100644 q65w/libm65/pfxdump.f90
 create mode 100644 q65w/libm65/polfit.f90
 create mode 100644 q65w/libm65/ptt.c
 create mode 100644 q65w/libm65/ptt_unix.c
 create mode 100644 q65w/libm65/q65b.f90
 create mode 100644 q65w/libm65/recvpkt.f90
 create mode 100644 q65w/libm65/rfile3a.f90
 create mode 100644 q65w/libm65/rs.h
 create mode 100644 q65w/libm65/rs2.h
 create mode 100644 q65w/libm65/s3avg.f90
 create mode 100644 q65w/libm65/sec_midn.f90
 create mode 100644 q65w/libm65/set.f90
 create mode 100644 q65w/libm65/setup65.f90
 create mode 100644 q65w/libm65/shell.f90
 create mode 100644 q65w/libm65/sleep.h
 create mode 100644 q65w/libm65/sleep_msec.f90
 create mode 100644 q65w/libm65/smo.f90
 create mode 100644 q65w/libm65/sort.f90
 create mode 100644 q65w/libm65/ssort.f
 create mode 100644 q65w/libm65/sun.f90
 create mode 100644 q65w/libm65/symspec.f90
 create mode 100644 q65w/libm65/synctest.f90
 create mode 100644 q65w/libm65/synctst.f90
 create mode 100644 q65w/libm65/synctst2.f90
 create mode 100644 q65w/libm65/tastro.f90
 create mode 100644 q65w/libm65/timeval.h
 create mode 100644 q65w/libm65/timf2.f90
 create mode 100644 q65w/libm65/tm2.f90
 create mode 100644 q65w/libm65/tmoonsub.c
 create mode 100644 q65w/libm65/toxyz.f90
 create mode 100644 q65w/libm65/trimlist.f90
 create mode 100644 q65w/libm65/twkfreq.f90
 create mode 100644 q65w/libm65/twkfreq_xy.f90
 create mode 100644 q65w/libm65/txpol.f90
 create mode 100644 q65w/libm65/usleep.c
 create mode 100644 q65w/libm65/wavhdr.f90
 create mode 100644 q65w/libm65/wideband_sync.f90
 create mode 100644 q65w/libm65/wrapkarn.c
 create mode 100644 q65w/libm65/zplot.f90
 create mode 100644 q65w/main.cpp
 create mode 100644 q65w/mainwindow.cpp
 create mode 100644 q65w/mainwindow.h
 create mode 100644 q65w/mainwindow.ui
 create mode 100644 q65w/map65.pro
 create mode 100644 q65w/map65_config.h.in
 create mode 100644 q65w/map65b.iss
 create mode 100644 q65w/messages.cpp
 create mode 100644 q65w/messages.h
 create mode 100644 q65w/messages.ui
 create mode 100644 q65w/meterwidget.cpp
 create mode 100644 q65w/meterwidget.h
 create mode 100644 q65w/paInputDevice.c
 create mode 100644 q65w/pa_get_device_info.c
 create mode 100644 q65w/plotter.cpp
 create mode 100644 q65w/plotter.h
 create mode 100644 q65w/q65w.rc
 create mode 100644 q65w/resources/CALL3.TXT
 create mode 100644 q65w/resources/README.qthid.txt
 create mode 100644 q65w/resources/qt.conf
 create mode 100644 q65w/resources/qthid/AUTHORS.qthid.4.1.txt
 create mode 100644 q65w/resources/qthid/AUTHORS.qthid4.0.txt
 create mode 100644 q65w/resources/qthid/LICENSE.txt
 create mode 100644 q65w/resources/qthid/NEWS.qhid-4.0.txt
 create mode 100644 q65w/resources/qthid/NEWS.qthid-4.1.txt
 create mode 100644 q65w/resources/qthid/README-qthid-4.1.txt
 create mode 100644 q65w/resources/qthid/README.qthid-4.0.txt
 create mode 100644 q65w/resources/wisdom1.bat
 create mode 100644 q65w/resources/wisdom2.bat
 create mode 100644 q65w/set570.cpp
 create mode 100644 q65w/signalmeter.cpp
 create mode 100644 q65w/signalmeter.h
 create mode 100644 q65w/sleep.h
 create mode 100644 q65w/soundin.cpp
 create mode 100644 q65w/soundin.h
 create mode 100644 q65w/soundout.cpp
 create mode 100644 q65w/soundout.h
 create mode 100644 q65w/ss.bat
 create mode 100644 q65w/sss.bat
 create mode 100644 q65w/txtune.cpp
 create mode 100644 q65w/txtune.h
 create mode 100644 q65w/txtune.ui
 create mode 100644 q65w/widegraph.cpp
 create mode 100644 q65w/widegraph.h
 create mode 100644 q65w/widegraph.ui
 create mode 100644 q65w/wsjt.ico

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c47d51eca..c6a14854e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1422,9 +1422,11 @@ endif (${OPENMP_FOUND} OR APPLE)
 if (WIN32)
   # build map65
   find_package (Portaudio REQUIRED)
-  add_subdirectory (map65)
+#  add_subdirectory (map65)
+  add_subdirectory (q65w)
 endif ()
 
+
 # build the main application
 generate_version_info (wsjtx_VERSION_RESOURCES
   NAME wsjtx
diff --git a/CMakeLists.txt.0 b/CMakeLists.txt.0
new file mode 100644
index 000000000..c47d51eca
--- /dev/null
+++ b/CMakeLists.txt.0
@@ -0,0 +1,1788 @@
+cmake_minimum_required (VERSION 3.7.2 FATAL_ERROR)
+
+if (APPLE)
+  #
+  # The following variables define the portability and compatability attributes of the Mac macOS build
+  # they are choosen with care and should not be changed without good cause.
+  #
+  # Among other things these options are chosen to match the portability and compatability options of the
+  # Qt framework dylibs which can be checked as follows:
+  #
+  # otool -l <binary> | grep -A3 LC_VERSION_MIN_MACOSX
+  #
+  set (CMAKE_OSX_DEPLOYMENT_TARGET 10.12
+    CACHE STRING "Earliest version of macOS supported
+
+Earliest version we can support with Qt 5.12, C++11 & libc++ is 10.12.
+Do not override this if you intend to build an official deployable installer.")
+endif (APPLE)
+
+#
+# CMake policies
+#
+if (POLICY CMP0020)
+  cmake_policy (SET CMP0020 NEW) # link to Qt winmain on Windows
+endif ()
+
+if (POLICY CMP0043)
+  cmake_policy (SET CMP0043 NEW) # ignore COMPILE_DEFINITIONS_<CONFIG>
+endif ()
+
+if (POLICY CMP0048)
+  cmake_policy (SET CMP0048 NEW) # clear PROJECT_Version_* variables if not set in project() command
+endif ()
+
+if (POLICY CMP0063)
+  cmake_policy (SET CMP0063 NEW) # honour visibility properties for all library types
+endif ()
+
+if (POLICY CMP0071)
+  cmake_policy (SET CMP0071 NEW) # run automoc and autouic on generated sources
+endif ()
+
+if (POLICY CMP0075)
+  cmake_policy (SET CMP0075 NEW) # honour CMAKE_REQUIRED_LIBRARIES in config checks
+endif ()
+
+project (wsjtx
+  VERSION 2.6.0.0
+  LANGUAGES C CXX Fortran
+  )
+set (PROJECT_DESCRIPTION "WSJT-X: Digital Modes for Weak Signal Communications in Amateur Radio")
+set (CMAKE_PROJECT_DESCRIPTION ${PROJECT_DESCRIPTION})
+
+#
+# Local CMake modules and support files
+#
+set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake/Modules ${CMAKE_MODULE_PATH})
+
+set (PROJECT_ARCHITECTURE "${CMAKE_SYSTEM_PROCESSOR}")
+if (NOT PROJECT_ARCHITECTURE)
+  # This is supposed to happen already on Windows
+  if (CMAKE_SIZEOF_VOID_P MATCHES 8)
+    set (PROJECT_ARCHITECTURE "x64")
+  else ()
+    set (PROJECT_ARCHITECTURE "$ENV{PROCESSOR_ARCHITECTURE}")
+  endif ()
+endif ()
+message (STATUS "******************************************************")
+message (STATUS "Building for for: ${CMAKE_SYSTEM_NAME}-${PROJECT_ARCHITECTURE}")
+message (STATUS "******************************************************")
+
+include (set_build_type)
+# RC 0 or omitted is a development build, GA is a General Availability release build
+set_build_type (RC 5)
+set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
+
+#
+# project information
+#
+set (PROJECT_BUNDLE_NAME "WSJT-X")
+set (PROJECT_VENDOR "Joe Taylor, K1JT")
+set (PROJECT_CONTACT "Joe Taylor <k1jt@arrl.net>")
+set (PROJECT_COPYRIGHT "Copyright (C) 2001-2022 by Joe Taylor, K1JT")
+set (PROJECT_HOMEPAGE https://www.physics.princeton.edu/pulsar/K1JT/wsjtx.html)
+set (PROJECT_MANUAL wsjtx-main)
+set (PROJECT_MANUAL_DIRECTORY_URL https://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/)
+set (PROJECT_SAMPLES_URL http://downloads.sourceforge.net/project/wsjt/)
+set (PROJECT_SAMPLES_UPLOAD_DEST frs.sourceforge.net:/home/frs/project/wsjt/)
+
+# make sure that the default configuration is a RELEASE
+if (NOT CMAKE_BUILD_TYPE)
+  set (CMAKE_BUILD_TYPE RELEASE CACHE STRING
+    "Choose the type of build, options are: None Debug Release."
+    FORCE)
+endif (NOT CMAKE_BUILD_TYPE)
+if (CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]")
+  set (is_debug_build 1)
+endif ()
+
+
+#
+# Options & features
+#
+#	Some of these directly effect compilation by being defined in
+#	wsjtx_config.h.in which makes them available to the C/C++
+#	pre-processor.
+#
+include (CMakeDependentOption)
+
+# Allow the developer to select if Dynamic or Static libraries are built
+OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
+# Set the LIB_TYPE variable to STATIC
+SET (LIB_TYPE STATIC)
+if (BUILD_SHARED_LIBS)
+  # User wants to build Dynamic Libraries, so change the LIB_TYPE variable to CMake keyword 'SHARED'
+  set (LIB_TYPE SHARED)
+endif (BUILD_SHARED_LIBS)
+
+option (UPDATE_TRANSLATIONS "Update source translation translations/*.ts
+files (WARNING: make clean will delete the source .ts files! Danger!)")
+option (WSJT_SHARED_RUNTIME "Debugging option that allows running from a shared Cloud directory.")
+option (WSJT_QDEBUG_TO_FILE "Redirect Qt debuging messages to a trace file.")
+option (WSJT_SOFT_KEYING "Apply a ramp to CW keying envelope to reduce transients." ON)
+option (WSJT_SKIP_MANPAGES "Skip *nix manpage generation.")
+option (WSJT_GENERATE_DOCS "Generate documentation files." ON)
+option (WSJT_RIG_NONE_CAN_SPLIT "Allow split operation with \"None\" as rig.")
+option (WSJT_TRACE_UDP "Debugging option that turns on UDP message protocol diagnostics.")
+option (WSJT_BUILD_UTILS "Build simulators and code demonstrators." ON)
+CMAKE_DEPENDENT_OPTION (WSJT_QDEBUG_IN_RELEASE "Leave Qt debugging statements in Release configuration." OFF
+  "NOT is_debug_build" OFF)
+CMAKE_DEPENDENT_OPTION (WSJT_ENABLE_EXPERIMENTAL_FEATURES "Enable features not fully ready for public releases." ON
+  is_debug_build OFF)
+CMAKE_DEPENDENT_OPTION (WSJT_CREATE_WINMAIN
+  "The wsjtx target is normally built as GUI executable with a WinMain entry point on Windows,
+if you want a console application instead then set this option to OFF.
+
+If you just want to see the debug output from the application then the easiest way is to
+attach a debugger which will then receive the console output inside its console." ON
+  "WIN32" OFF)
+
+#
+# install locations
+#
+
+if (APPLE)
+  set (CMAKE_INSTALL_BINDIR ${CMAKE_PROJECT_NAME}.app/Contents/MacOS)
+  set (CMAKE_INSTALL_DATAROOTDIR ${CMAKE_PROJECT_NAME}.app/Contents/Resources)
+endif ()
+
+include (GNUInstallDirs)
+
+set (PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/plugins)
+set (QT_CONF_DESTINATION ${CMAKE_INSTALL_BINDIR})
+if (WIN32)
+  set (PLUGIN_DESTINATION plugins)
+elseif (APPLE)
+  set (PLUGIN_DESTINATION ${CMAKE_INSTALL_BINDIR}/../PlugIns)
+  set (QT_CONF_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
+endif ()
+
+set (WSJT_PLUGIN_DESTINATION ${PLUGIN_DESTINATION} CACHE PATH "Path for plugins")
+set (WSJT_QT_CONF_DESTINATION ${QT_CONF_DESTINATION} CACHE PATH "Path for the qt.conf file")
+
+
+#
+# Project sources
+#
+set (fort_qt_CXXSRCS
+  lib/shmem.cpp
+  )
+
+set (wsjt_qt_CXXSRCS
+  helper_functions.cpp
+  qt_helpers.cpp
+  widgets/MessageBox.cpp
+  MetaDataRegistry.cpp
+  Network/NetworkServerLookup.cpp
+  revision_utils.cpp
+  L10nLoader.cpp
+  WFPalette.cpp
+  Radio.cpp
+  RadioMetaType.cpp
+  NonInheritingProcess.cpp
+  models/IARURegions.cpp
+  models/Bands.cpp
+  models/Modes.cpp
+  models/FrequencyList.cpp
+  models/StationList.cpp
+  widgets/FrequencyLineEdit.cpp
+  widgets/FrequencyDeltaLineEdit.cpp
+  item_delegates/CandidateKeyFilter.cpp
+  item_delegates/ForeignKeyDelegate.cpp
+  item_delegates/MessageItemDelegate.cpp
+  validators/LiveFrequencyValidator.cpp
+  GetUserId.cpp
+  Audio/AudioDevice.cpp
+  Transceiver/Transceiver.cpp
+  Transceiver/TransceiverBase.cpp
+  Transceiver/EmulateSplitTransceiver.cpp
+  Transceiver/TransceiverFactory.cpp
+  Transceiver/PollingTransceiver.cpp
+  Transceiver/HamlibTransceiver.cpp
+  Transceiver/HRDTransceiver.cpp
+  Transceiver/DXLabSuiteCommanderTransceiver.cpp
+  Network/NetworkMessage.cpp
+  Network/MessageClient.cpp
+  widgets/LettersSpinBox.cpp
+  widgets/HintedSpinBox.cpp
+  widgets/RestrictedSpinBox.cpp
+  widgets/HelpTextWindow.cpp
+  SampleDownloader.cpp
+  SampleDownloader/DirectoryDelegate.cpp
+  SampleDownloader/Directory.cpp
+  SampleDownloader/FileNode.cpp
+  SampleDownloader/RemoteFile.cpp
+  DisplayManual.cpp
+  MultiSettings.cpp
+  validators/MaidenheadLocatorValidator.cpp
+  validators/CallsignValidator.cpp
+  widgets/SplashScreen.cpp
+  EqualizationToolsDialog.cpp
+  widgets/DoubleClickablePushButton.cpp
+  widgets/DoubleClickableRadioButton.cpp
+  Network/LotWUsers.cpp
+  models/DecodeHighlightingModel.cpp
+  widgets/DecodeHighlightingListView.cpp
+  models/FoxLog.cpp
+  widgets/AbstractLogWindow.cpp
+  widgets/FoxLogWindow.cpp
+  widgets/CabrilloLogWindow.cpp
+  item_delegates/CallsignDelegate.cpp
+  item_delegates/MaidenheadLocatorDelegate.cpp
+  item_delegates/FrequencyDelegate.cpp
+  item_delegates/FrequencyDeltaDelegate.cpp
+  item_delegates/SQLiteDateTimeDelegate.cpp
+  models/CabrilloLog.cpp
+  logbook/AD1CCty.cpp
+  logbook/WorkedBefore.cpp
+  logbook/Multiplier.cpp
+  Network/NetworkAccessManager.cpp
+  widgets/LazyFillComboBox.cpp
+  widgets/CheckableItemComboBox.cpp
+  widgets/BandComboBox.cpp
+  )
+
+set (wsjt_qtmm_CXXSRCS
+  Audio/BWFFile.cpp
+  )
+
+set (jt9_FSRCS
+  lib/jt9.f90
+  lib/jt9a.f90
+  )
+
+set (wsjtx_CXXSRCS
+  WSJTXLogging.cpp
+  logbook/logbook.cpp
+  Network/PSKReporter.cpp
+  Modulator/Modulator.cpp
+  Detector/Detector.cpp
+  widgets/logqso.cpp
+  widgets/displaytext.cpp
+  Decoder/decodedtext.cpp
+  getfile.cpp
+  Audio/soundout.cpp
+  Audio/soundin.cpp
+  widgets/meterwidget.cpp
+  widgets/signalmeter.cpp
+  widgets/plotter.cpp
+  widgets/widegraph.cpp
+  widgets/echograph.cpp
+  widgets/echoplot.cpp
+  widgets/fastgraph.cpp
+  widgets/fastplot.cpp
+  widgets/about.cpp
+  widgets/astro.cpp
+  widgets/messageaveraging.cpp
+  widgets/activeStations.cpp
+  widgets/colorhighlighting.cpp
+  WSPR/WsprTxScheduler.cpp
+  widgets/mainwindow.cpp
+  Configuration.cpp
+  main.cpp
+  Network/wsprnet.cpp
+  WSPR/WSPRBandHopping.cpp
+  widgets/ExportCabrillo.cpp
+  )
+
+set (wsjt_CXXSRCS
+  Logger.cpp
+  lib/crc10.cpp
+  lib/crc13.cpp
+  lib/crc14.cpp
+  )
+# deal with a GCC v6 UB error message
+set_source_files_properties (
+  lib/crc10.cpp
+  lib/crc13.cpp
+  lib/crc14.cpp
+  PROPERTIES COMPILE_FLAGS -fpermissive)
+
+if (WIN32)
+  set (wsjt_CXXSRCS
+    ${wsjt_CXXSRCS}
+    killbyname.cpp
+    )
+
+  set (wsjt_qt_CXXSRCS
+    ${wsjt_qt_CXXSRCS}
+    Transceiver/OmniRigTransceiver.cpp
+    )
+endif (WIN32)
+
+set (wsjt_FSRCS
+  # put module sources first in the hope that they get rebuilt before use
+  lib/types.f90
+  lib/C_interface_module.f90
+  lib/shmem.f90
+  lib/crc.f90
+  lib/fftw3mod.f90
+  lib/hashing.f90
+  lib/iso_c_utilities.f90
+  lib/jt4.f90
+  lib/jt4_decode.f90
+  lib/jt65_decode.f90
+  lib/jt65_mod.f90
+  lib/ft8_decode.f90
+  lib/ft4_decode.f90
+  lib/fst4_decode.f90
+  lib/jt9_decode.f90
+  lib/options.f90
+  lib/packjt.f90
+  lib/77bit/packjt77.f90
+  lib/qra/q65/q65.f90
+  lib/q65_decode.f90
+  lib/readwav.f90
+  lib/timer_C_wrapper.f90
+  lib/timer_impl.f90
+  lib/timer_module.f90
+  lib/wavhdr.f90
+  lib/qra/q65/q65_encoding_modules.f90
+  lib/ft8/ft8_a7.f90
+
+  # remaining non-module sources
+  lib/addit.f90
+  lib/afc65b.f90
+  lib/afc9.f90
+  lib/ana64.f90
+  lib/ana932.f90
+  lib/analytic.f90
+  lib/astro.f90
+  lib/astrosub.f90
+  lib/astro0.f90
+  lib/avecho.f90
+  lib/averms.f90
+  lib/azdist.f90
+  lib/ft8/baseline.f90
+  lib/ft4/ft4_baseline.f90
+  lib/blanker.f90
+  lib/bpdecode40.f90
+  lib/bpdecode128_90.f90
+  lib/ft8/bpdecode174_91.f90
+  lib/baddata.f90
+  lib/calibrate.f90
+  lib/ccf2.f90
+  lib/ccf65.f90
+  lib/ft8/chkcrc13a.f90
+  lib/ft8/chkcrc14a.f90
+  lib/chkcall.f90
+  lib/chkhist.f90
+  lib/chkmsg.f90
+  lib/chkss2.f90
+  lib/ft4/clockit.f90
+  lib/ft8/compress.f90
+  lib/coord.f90
+  lib/db.f90
+  lib/decode4.f90
+  lib/decode65a.f90
+  lib/decode65b.f90
+  lib/decode9w.f90
+  lib/ft8/decode174_91.f90
+  lib/decoder.f90
+  lib/deep4.f90
+  lib/deg2grid.f90
+  lib/degrade_snr.f90
+  lib/demod64a.f90
+  lib/determ.f90
+  lib/downsam9.f90
+  lib/echosim.f90
+  lib/echo_snr.f90
+  lib/encode232.f90
+  lib/encode4.f90
+  lib/encode_msk40.f90
+  lib/encode_128_90.f90
+  lib/ft8/encode174_91.f90
+  lib/ft8/encode174_91_nocrc.f90
+  lib/entail.f90
+  lib/ephem.f90
+  lib/extract.f90
+  lib/extract4.f90
+  lib/extractmessage77.f90
+  lib/fano232.f90
+  lib/fast9.f90
+  lib/fast_decode.f90
+  lib/fchisq.f90
+  lib/fchisq0.f90
+  lib/fchisq65.f90
+  lib/fil3.f90
+  lib/fil3c.f90
+  lib/fil4.f90
+  lib/fil6521.f90
+  lib/filbig.f90
+  lib/ft8/filt8.f90
+  lib/fitcal.f90
+  lib/flat1.f90
+  lib/flat1a.f90
+  lib/flat1b.f90
+  lib/flat2.f90
+  lib/flat4.f90
+  lib/flat65.f90
+  lib/fmtmsg.f90
+  lib/foldspec9f.f90
+  lib/four2a.f90
+  lib/fspread_lorentz.f90
+  lib/ft8/foxfilt.f90
+  lib/ft8/foxgen.f90
+  lib/ft8/foxgen_wrap.f90
+  lib/freqcal.f90
+  lib/ft8/ft8apset.f90
+  lib/ft8/ft8b.f90
+  lib/ft8/ft8code.f90
+  lib/ft8/ft8_downsample.f90
+  lib/ft8/ft8sim.f90
+  lib/gen4.f90
+  lib/gen65.f90
+  lib/gen9.f90
+  lib/genwave.f90
+  lib/ft8/genft8.f90
+  lib/qra/q65/genq65.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
+  lib/ft8/genft8refsig.f90
+  lib/genwspr.f90
+  lib/geodist.f90
+  lib/ft8/get_crc14.f90
+  lib/getlags.f90
+  lib/getmet4.f90
+  lib/ft8/get_spectrum_baseline.f90
+  lib/ft2/gfsk_pulse.f90
+  lib/graycode.f90
+  lib/graycode65.f90
+  lib/grayline.f90
+  lib/grid2deg.f90
+  lib/ft8/h1.f90
+  lib/hash.f90
+  lib/hint65.f90
+  lib/hspec.f90
+  lib/indexx.f90
+  lib/init_random_seed.f90
+  lib/interleave4.f90
+  lib/interleave63.f90
+  lib/interleave9.f90
+  lib/inter_wspr.f90
+  lib/jplsubs.f
+  lib/jt9fano.f90
+  lib/libration.f90
+  lib/lorentzian.f90
+  lib/fst4/lorentzian_fading.f90
+  lib/lpf1.f90
+  lib/map65_mmdec.f90
+  lib/mixlpf.f90
+  lib/makepings.f90
+  lib/moondopjpl.f90
+  lib/morse.f90
+  lib/move.f90
+  lib/msk40decodeframe.f90
+  lib/msk144decodeframe.f90
+  lib/msk40spd.f90
+  lib/msk144spd.f90
+  lib/msk40sync.f90
+  lib/msk144sync.f90
+  lib/msk40_freq_search.f90
+  lib/msk144_freq_search.f90
+  lib/mskrtd.f90
+  lib/msk144signalquality.f90
+  lib/msk144sim.f90
+  lib/mskrtd.f90
+  lib/nuttal_window.f90
+  lib/ft4/ft4sim.f90
+  lib/ft4/ft4sim_mult.f90
+  lib/ft4/ft4_downsample.f90
+  lib/77bit/my_hash.f90
+  lib/wsprd/osdwspr.f90
+  lib/ft8/osd174_91.f90
+  lib/osd128_90.f90
+  lib/pctile.f90
+  lib/peakdt9.f90
+  lib/peakup.f90
+  lib/plotsave.f90
+  lib/platanh.f90
+  lib/pltanh.f90
+  lib/polyfit.f90
+  lib/prog_args.f90
+  lib/ps4.f90
+  lib/qra/q65/q65_ap.f90
+  lib/qra/q65/q65_loops.f90
+  lib/qra/q65/q65_set_list.f90
+  lib/refspectrum.f90
+  lib/savec2.f90
+  lib/save_dxbase.f90
+  lib/save_echo_params.f90
+  lib/sec0.f90
+  lib/sec_midn.f90
+  lib/setup65.f90
+  lib/sh65.f90
+  lib/sh65snr.f90
+  lib/slasubs.f
+  lib/sleep_msec.f90
+  lib/slope.f90
+  lib/smo.f90
+  lib/smo121.f90
+  lib/softsym.f90
+  lib/softsym9f.f90
+  lib/softsym9w.f90
+  lib/shell.f90
+  lib/spec64.f90
+  lib/spec9f.f90
+  lib/stdmsg.f90
+  lib/subtract65.f90
+  lib/ft8/subtractft8.f90
+  lib/ft4/subtractft4.f90
+  lib/sun.f90
+  lib/symspec.f90
+  lib/symspec2.f90
+  lib/symspec65.f90
+  lib/sync4.f90
+  lib/sync65.f90
+  lib/ft4/getcandidates4.f90
+  lib/ft4/get_ft4_bitmetrics.f90
+  lib/ft8/sync8.f90
+  lib/ft8/sync8d.f90
+  lib/ft4/sync4d.f90
+  lib/sync9.f90
+  lib/sync9f.f90
+  lib/sync9w.f90
+  lib/test_snr.f90
+  lib/timf2.f90
+  lib/tweak1.f90
+  lib/twkfreq.f90
+  lib/ft8/twkfreq1.f90
+  lib/twkfreq65.f90
+  lib/update_recent_calls.f90
+  lib/update_msk40_hasharray.f90
+  lib/ft8/watterson.f90
+  lib/wav11.f90
+  lib/wav12.f90
+  lib/xcor.f90
+  lib/xcor4.f90
+  lib/wqdecode.f90
+  lib/wqencode.f90
+  lib/wspr_downsample.f90
+  lib/zplot9.f90
+  lib/fst4/decode240_101.f90
+  lib/fst4/decode240_74.f90
+  lib/fst4/encode240_101.f90
+  lib/fst4/encode240_74.f90
+  lib/fst4/fst4sim.f90
+  lib/fst4/gen_fst4wave.f90
+  lib/fst4/genfst4.f90
+  lib/fst4/get_fst4_bitmetrics.f90
+  lib/fst4/get_fst4_bitmetrics2.f90
+  lib/fst4/ldpcsim240_101.f90
+  lib/fst4/ldpcsim240_74.f90
+  lib/fst4/osd240_101.f90
+  lib/fst4/osd240_74.f90
+  lib/fst4/fastosd240_74.f90
+  lib/fst4/get_crc24.f90
+  lib/fst4/fst4_baseline.f90
+  )
+
+# temporary workaround for a gfortran v7.3 ICE on Fedora 27 64-bit
+set_source_files_properties (lib/slasubs.f PROPERTIES COMPILE_FLAGS -O2)
+
+set (ka9q_CSRCS
+  lib/ftrsd/decode_rs.c
+  lib/ftrsd/encode_rs.c
+  lib/ftrsd/init_rs.c
+  )
+set_source_files_properties (${ka9q_CSRCS} PROPERTIES COMPILE_FLAGS -Wno-sign-compare)
+
+set (qra_CSRCS
+  lib/qra/qracodes/qra12_63_64_irr_b.c
+  lib/qra/qracodes/qra13_64_64_irr_e.c
+  lib/qra/q65/npfwht.c
+  lib/qra/q65/pdmath.c
+  lib/qra/q65/qracodes.c
+  lib/qra/q65/normrnd.c
+  lib/qra/q65/qra15_65_64_irr_e23.c
+  lib/qra/q65/q65.c
+  lib/qra/q65/q65_subs.c
+  )
+
+set (wsjt_CSRCS
+  ${ka9q_CSRCS}
+  lib/ftrsd/ftrsdap.c
+  lib/sgran.c
+  lib/golay24_table.c
+  lib/gran.c
+  lib/igray.c
+  lib/init_random_seed.c
+  lib/ldpc32_table.c
+  lib/wsprd/nhash.c
+  lib/tab.c
+  lib/tmoonsub.c
+  lib/usleep.c
+  lib/vit213.c
+  lib/wisdom.c
+  lib/wrapkarn.c
+  ${ldpc_CSRCS}
+  ${qra_CSRCS}
+  )
+
+set (wsjt_qt_UISRCS
+  wf_palette_design_dialog.ui
+  widgets/FoxLogWindow.ui
+  widgets/CabrilloLogWindow.ui
+  )
+
+set (wsprsim_CSRCS
+  lib/wsprd/wsprsim.c
+  lib/wsprd/wsprsim_utils.c
+  lib/wsprd/wsprd_utils.c
+  lib/wsprd/fano.c
+  lib/wsprd/tab.c
+  lib/wsprd/nhash.c
+  )
+
+set (wsprd_CSRCS
+  lib/wsprd/wsprd.c
+  lib/wsprd/wsprsim_utils.c
+  lib/wsprd/wsprd_utils.c
+  lib/wsprd/fano.c
+  lib/wsprd/jelinek.c
+  lib/wsprd/tab.c
+  lib/wsprd/nhash.c
+  lib/init_random_seed.c
+  )
+
+set (wsjtx_UISRCS
+  widgets/mainwindow.ui
+  widgets/about.ui
+  widgets/astro.ui
+  widgets/colorhighlighting.ui
+  widgets/echograph.ui
+  widgets/fastgraph.ui
+  widgets/messageaveraging.ui
+  widgets/activeStations.ui
+  widgets/widegraph.ui
+  widgets/logqso.ui
+  Configuration.ui
+  widgets/ExportCabrillo.ui
+  )
+
+set (UDP_library_CXXSRCS
+  Radio.cpp
+  RadioMetaType.cpp
+  Network/NetworkMessage.cpp
+  UDPExamples/MessageServer.cpp
+  )
+
+set (UDP_library_HEADERS
+  Radio.hpp
+  UDPExamples/MessageServer.hpp
+  ${PROJECT_BINARY_DIR}/udp_export.h
+  )
+
+set (message_aggregator_CXXSRCS
+  UDPExamples/MessageAggregator.cpp
+  UDPExamples/MessageAggregatorMainWindow.cpp
+  UDPExamples/DecodesModel.cpp
+  UDPExamples/BeaconsModel.cpp
+  UDPExamples/ClientWidget.cpp
+  validators/MaidenheadLocatorValidator.cpp
+  )
+
+set (message_aggregator_STYLESHEETS
+  UDPExamples/qss/default.qss
+  )
+
+set (qcp_CXXSRCS
+  qcustomplot-source/qcustomplot.cpp
+  )
+
+set (all_CXXSRCS
+  ${wsjt_CXXSRCS}
+  ${fort_qt_CXXSRCS}
+  ${wsjt_qt_CXXSRCS}
+  ${wsjt_qtmm_CXXSRCS}
+  ${wsjtx_CXXSRCS}
+  ${qcp_CXXSRCS}
+  )
+
+set (all_C_and_CXXSRCS
+  ${wsjt_CSRCS}
+  ${wsprsim_CSRCS}
+  ${wsprd_CSRCS}
+  ${all_CXXSRCS}
+  )
+
+set (TOP_LEVEL_RESOURCES
+  icons/Darwin/wsjtx.iconset/icon_128x128.png
+  contrib/gpl-v3-logo.svg
+  artwork/splash.png
+  )
+
+set (PALETTE_FILES
+  Palettes/Banana.pal
+  Palettes/Blue1.pal
+  Palettes/Blue2.pal
+  Palettes/Blue3.pal
+  Palettes/Brown.pal
+  Palettes/Cyan1.pal
+  Palettes/Cyan2.pal
+  Palettes/Cyan3.pal
+  Palettes/Default.pal
+  Palettes/Digipan.pal
+  Palettes/Fldigi.pal
+  Palettes/Gray1.pal
+  Palettes/Gray2.pal
+  Palettes/Green1.pal
+  Palettes/Green2.pal
+  Palettes/Jungle.pal
+  Palettes/Linrad.pal
+  Palettes/Negative.pal
+  Palettes/Orange.pal
+  Palettes/Pink.pal
+  Palettes/Rainbow.pal
+  Palettes/Scope.pal
+  Palettes/Sunburst.pal
+  Palettes/VK4BDJ.pal
+  Palettes/YL2KF.pal
+  Palettes/Yellow1.pal
+  Palettes/Yellow2.pal
+  Palettes/ZL1FZ.pal
+)
+
+if (APPLE)
+  set (WSJTX_ICON_FILE ${CMAKE_PROJECT_NAME}.icns)
+  set (ICONSRCS
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_16x16.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_16x16@2x.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_32x32.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_32x32@2x.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_128x128.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_128x128@2x.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_256x256.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_256x256@2x.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_512x512.png
+    icons/Darwin/${CMAKE_PROJECT_NAME}.iconset/icon_512x512@2x.png
+    )
+  add_custom_command (
+    OUTPUT ${WSJTX_ICON_FILE}
+    COMMAND iconutil -c icns --output "${CMAKE_BINARY_DIR}/${WSJTX_ICON_FILE}" "${CMAKE_SOURCE_DIR}/icons/Darwin/${CMAKE_PROJECT_NAME}.iconset"
+    DEPENDS ${ICONSRCS}
+    COMMENT "Building Icons"
+    )
+else ()
+  set (WSJTX_ICON_FILE icons/windows-icons/wsjtx.ico)
+endif (APPLE)
+
+set_source_files_properties (${WSJTX_ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
+
+# suppress intransigent compiler diagnostics
+set_source_files_properties (lib/decoder.f90 PROPERTIES COMPILE_FLAGS "-Wno-unused-dummy-argument")
+set_source_files_properties (lib/filbig.f90 PROPERTIES COMPILE_FLAGS "-Wno-aliasing")
+
+## disable Qt trace and warning messages from release configurations
+#set_property (DIRECTORY APPEND PROPERTY
+#  COMPILE_DEFINITIONS $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG_OUTPUT;QT_NO_WARNING_OUTPUT>
+#  )
+
+set_property (SOURCE ${all_C_and_CXXSRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -include wsjtx_config.h")
+set_property (SOURCE ${all_C_and_CXXSRCS} APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/wsjtx_config.h)
+
+if (WIN32)
+  # generate the OmniRig COM interface source
+  find_program (DUMPCPP dumpcpp)
+  if (DUMPCPP-NOTFOUND)
+    message (FATAL_ERROR "dumpcpp tool not found")
+  endif (DUMPCPP-NOTFOUND)
+  execute_process (
+    COMMAND ${DUMPCPP} -getfile {4FE359C5-A58F-459D-BE95-CA559FB4F270}
+    OUTPUT_VARIABLE AXSERVER
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    )
+  string (STRIP "${AXSERVER}" AXSERVER)
+  if (NOT AXSERVER)
+    message (FATAL_ERROR "You need to install OmniRig on this computer")
+  endif (NOT AXSERVER)
+  string (REPLACE "\"" "" AXSERVER ${AXSERVER})
+  file (TO_CMAKE_PATH ${AXSERVER} AXSERVERSRCS)
+endif ()
+
+
+#
+# decide on platform specifc packing and fixing up
+#
+if (APPLE)
+  set (WSJTX_BUNDLE_VERSION ${wsjtx_VERSION})
+
+  # make sure CMAKE_INSTALL_PREFIX ends in /
+  string (LENGTH "${CMAKE_INSTALL_PREFIX}" LEN)
+  math (EXPR LEN "${LEN} -1" )
+  string (SUBSTRING "${CMAKE_INSTALL_PREFIX}" ${LEN} 1 ENDCH)
+  if (NOT "${ENDCH}" STREQUAL "/")
+    set (CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/")
+  endif ()
+endif (APPLE)
+
+
+#
+# find some useful tools
+#
+include (CheckTypeSize)
+include (CheckCSourceCompiles)
+include (CheckIncludeFiles)
+include (CheckSymbolExists)
+include (generate_version_info)
+
+find_program(CTAGS ctags)
+find_program(ETAGS etags)
+
+#
+# Platform checks
+#
+check_include_files ("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
+check_include_files (stdio.h HAVE_STDIO_H)
+check_include_files (stdlib.h HAVE_STDLIB_H)
+check_include_files (unistd.h HAVE_UNISTD_H)
+check_include_files (sys/ioctl.h HAVE_SYS_IOCTL_H)
+check_include_files (sys/types.h HAVE_SYS_TYPES_H)
+check_include_files (fcntl.h HAVE_FCNTL_H)
+check_include_files (sys/stat.h HAVE_SYS_STAT_H)
+check_include_files ("linux/ppdev.h;linux/parport.h" HAVE_LINUX_PPDEV_H)
+check_include_files ("dev/ppbus/ppi.h;dev/ppbus/ppbconf.h" HAVE_DEV_PPBUS_PPI_H)
+
+#
+# Standard C Math Library
+#
+set (LIBM_TEST_SOURCE "#include<math.h>\nfloat f; int main(){sqrt(f);return 0;}")
+check_c_source_compiles ("${LIBM_TEST_SOURCE}" HAVE_MATH)
+if (HAVE_MATH)
+  set (LIBM_LIBRARIES)
+else ()
+  set (CMAKE_REQUIRED_LIBRARIES m)
+  check_c_source_compiles ("${LIBM_TEST_SOURCE}" HAVE_LIBM_MATH)
+  unset (CMAKE_REQUIRED_LIBRARIES)
+  if (NOT HAVE_LIBM_MATH)
+    message (FATAL_ERROR "Unable to use C math library functions")
+  endif ()
+  set (LIBM_LIBRARIES m)
+endif ()
+
+#
+# Boost
+#
+if (WIN32)
+  set (Boost_USE_STATIC_LIBS OFF)
+endif ()
+find_package (Boost 1.62 REQUIRED COMPONENTS log_setup log)
+
+#
+# OpenMP
+#
+find_package (OpenMP)
+
+#
+# fftw3 single precision library
+#
+find_package (FFTW3 COMPONENTS single threads REQUIRED)
+
+#
+# hamlib setup
+#
+find_package (Hamlib REQUIRED)
+find_program (RIGCTL_EXE rigctl)
+find_program (RIGCTLD_EXE rigctld)
+find_program (RIGCTLCOM_EXE rigctlcom)
+
+check_type_size (CACHE_ALL HAMLIB_OLD_CACHING)
+check_symbol_exists (rig_set_cache_timeout_ms "hamlib/rig.h" HAVE_HAMLIB_CACHING)
+
+find_package (Usb REQUIRED)
+
+#
+# Qt5 setup
+#
+
+# Widgets finds its own dependencies.
+find_package (Qt5 COMPONENTS Widgets SerialPort Multimedia PrintSupport Sql LinguistTools REQUIRED)
+
+if (WIN32)
+  add_definitions (-DQT_NEEDS_QTMAIN)
+  find_package (Qt5AxContainer REQUIRED)
+endif (WIN32)
+
+#
+# Library building setup
+#
+include (GenerateExportHeader)
+set (CMAKE_CXX_VISIBILITY_PRESET hidden)
+set (CMAKE_C_VISIBILITY_PRESET hidden)
+set (CMAKE_Fortran_VISIBILITY_PRESET hidden)
+set (CMAKE_VISIBILITY_INLINES_HIDDEN ON)
+#set (CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
+
+
+#
+# C & C++ setup
+#
+set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra")
+
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -fexceptions -frtti")
+
+if (NOT APPLE)
+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pragmas")
+  if (${OPENMP_FOUND})
+    if (OpenMP_C_FLAGS)
+      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_C_FLAGS}")
+      set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+    endif ()
+  endif ()
+  set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fdata-sections -ffunction-sections")
+  set (CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} -fdata-sections -ffunction-sections")
+  set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fdata-sections -ffunction-sections")
+  set (CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -fdata-sections -ffunction-sections")
+endif (NOT APPLE)
+
+if (WIN32)
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+endif (WIN32)
+if (APPLE AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
+else ()
+  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=gnu++11 -pthread")
+endif ()
+
+
+#
+# Fortran setup
+#
+set (General_FFLAGS "-Wall -Wno-conversion -fno-second-underscore")
+
+# FFLAGS depend on the compiler
+get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
+
+if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
+  # gfortran
+
+  # CMake compiler test is supposed to do this but doesn't yet
+  if (CMAKE_OSX_DEPLOYMENT_TARGET)
+    set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
+  endif (CMAKE_OSX_DEPLOYMENT_TARGET)
+  if (CMAKE_OSX_SYSROOT)
+    set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}")
+  endif (CMAKE_OSX_SYSROOT)
+
+  set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fbounds-check -funroll-all-loops -fno-f2c -ffpe-summary=invalid,zero,overflow,underflow ${General_FFLAGS}")
+
+set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -g -fbacktrace -fbounds-check -fno-f2c -ffpe-summary=invalid,zero,overflow,underflow ${General_FFLAGS}")
+  
+  # FPE traps currently disabled in Debug configuration builds until
+  # we decide if they are meaningful, without these FP instructions
+  # run in nonstop mode and do not trap
+  #set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} ${CMAKE_Fortran_FLAGS_DEBUG}  -ffpe-trap=invalid,zero,overflow")
+  
+elseif (Fortran_COMPILER_NAME MATCHES "ifort.*")
+  # ifort (untested)
+  set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -f77rtl ${General_FFLAGS}")
+  set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -f77rtl ${General_FFLAGS}")
+elseif (Fortran_COMPILER_NAME MATCHES "g77")
+  # g77
+  set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -funroll-all-loops -fno-f2c -m32 ${General_FFLAGS}")
+  set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check -fno-f2c -m32 ${General_FFLAGS}")
+else (Fortran_COMPILER_NAME MATCHES "gfortran.*")
+  message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
+  message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
+  message ("No optimized Fortran compiler flags are known, we just try -O3...")
+  set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -O3 ${General_FFLAGS}")
+  set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check ${General_FFLAGS}")
+endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
+
+
+#
+# Linker setup
+#
+if (NOT APPLE)
+  set (CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Wl,--gc-sections")
+  set (CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -Wl,--gc-sections")
+endif (NOT APPLE)
+
+
+#
+# setup and test Fortran C/C++ interaction
+#
+
+include (FortranCInterface)
+FortranCInterface_VERIFY (CXX)
+FortranCInterface_HEADER (FC.h MACRO_NAMESPACE "FC_" SYMBOL_NAMESPACE "FC_"
+  SYMBOLS
+  grayline
+  )
+
+
+#
+# sort out pre-requisites
+#
+
+#
+# Setup RPATH so that built executable targets will run in both the
+# build tree and the install location without having to set a
+# (DYLD|LD)_LIBRARY_PATH override.
+#
+
+# use the full RPATH of the build tree
+set (CMAKE_SKIP_BUILD_RPATH FALSE)
+
+# when building, don't use the install RPATH, it will still be used
+# later on in the install phase
+set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+
+# set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+
+# add the automaticaly determined parts of the RPATH which point to
+# directories outside of the build tree to the install RPATH
+set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+# the RPATH to be used when installing, but only if it's not a system
+# directory
+# list (FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" isSystemDir)
+# if ("${isSystemDir}" STREQUAL "-1")
+#   set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+# endif ("${isSystemDir}" STREQUAL "-1")
+
+set (QT_NEED_RPATH FALSE)
+if (NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/lib64" AND NOT "${QT_LIBRARY_DIR}" STREQUAL "/usr/lib64")
+  set (QT_NEED_RPATH TRUE)
+endif ()
+
+#
+# stuff only qmake can tell us
+#
+get_target_property (QMAKE_EXECUTABLE Qt5::qmake LOCATION)
+get_target_property (LCONVERT_EXECUTABLE Qt5::lconvert LOCATION)
+function (QUERY_QMAKE VAR RESULT)
+  exec_program (${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output)
+  if (NOT return_code)
+    file (TO_CMAKE_PATH "${output}" output)
+    set (${RESULT} ${output} PARENT_SCOPE)
+  endif (NOT return_code)
+  message (STATUS "Asking qmake for ${RESULT} and got ${output}")
+endfunction (QUERY_QMAKE)
+
+query_qmake (QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
+query_qmake (QT_INSTALL_TRANSLATIONS QT_TRANSLATIONS_DIR)
+query_qmake (QT_INSTALL_IMPORTS QT_IMPORTS_DIR)
+query_qmake (QT_HOST_DATA QT_DATA_DIR)
+set (QT_MKSPECS_DIR ${QT_DATA_DIR}/mkspecs)
+
+# project definitions
+add_definitions (-DQT5 -DCMAKE_BUILD -DBIGSYM=1 -DBOOST_ALL_DYN_LINK)
+if (CMAKE_HOST_UNIX)
+  add_definitions (-DUNIX)
+elseif (CMAKE_HOST_WIN32)
+  add_definitions (-DWIN32)
+endif ()
+
+#
+# sub-directories
+#
+if (EXISTS ${CMAKE_SOURCE_DIR}/samples AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/samples)
+  add_subdirectory (samples)
+endif ()
+if (WSJT_GENERATE_DOCS)
+  add_subdirectory (doc)
+endif (WSJT_GENERATE_DOCS)
+if (EXISTS ${CMAKE_SOURCE_DIR}/tests AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/tests)
+  add_subdirectory (tests)
+endif ()
+
+# build a library of package functionality (without and optionally with OpenMP support)
+add_library (wsjt_cxx STATIC ${wsjt_CSRCS} ${wsjt_CXXSRCS})
+target_link_libraries (wsjt_cxx ${LIBM_LIBRARIES} Boost::log_setup ${LIBM_LIBRARIES})
+
+# build an OpenMP variant of the Fortran library routines
+add_library (wsjt_fort STATIC ${wsjt_FSRCS})
+target_link_libraries (wsjt_fort  ${FFTW3_LIBRARIES})
+if (${OPENMP_FOUND} OR APPLE)
+  add_library (wsjt_fort_omp STATIC ${wsjt_FSRCS})
+  target_link_libraries (wsjt_fort_omp  ${FFTW3_LIBRARIES})
+  if (OpenMP_C_FLAGS AND NOT APPLE)
+    set_target_properties (wsjt_fort_omp
+      PROPERTIES
+      COMPILE_FLAGS "${OpenMP_C_FLAGS}"
+      )
+  endif ()
+  set_target_properties (wsjt_fort_omp
+    PROPERTIES
+    Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp
+    )
+  file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp)
+  if (APPLE)
+    # On  Mac  we don't  have  working  OpenMP  support in  the  C/C++
+    # compilers so  we have to manually  set the correct flags  to get
+    # OpenMP support in jt9.
+    target_compile_options (wsjt_fort_omp
+      PRIVATE
+      $<$<COMPILE_LANGUAGE:Fortran>:-fopenmp>   # assumes GNU style Fortran compiler
+      )
+  endif (APPLE)
+endif (${OPENMP_FOUND} OR APPLE)
+
+if(WSJT_BUILD_UTILS) 
+
+add_executable (jt4sim lib/jt4sim.f90)
+target_link_libraries (jt4sim wsjt_fort wsjt_cxx)
+
+add_executable (jt65sim lib/jt65sim.f90)
+target_link_libraries (jt65sim wsjt_fort wsjt_cxx)
+
+add_executable (sumsim lib/sumsim.f90)
+target_link_libraries (sumsim wsjt_fort wsjt_cxx)
+
+add_executable (test_snr lib/test_snr.f90)
+target_link_libraries (test_snr wsjt_fort)
+
+add_executable (q65sim lib/qra/q65/q65sim.f90)
+target_link_libraries (q65sim wsjt_fort wsjt_cxx)
+
+add_executable (q65code lib/qra/q65/q65code.f90)
+target_link_libraries (q65code wsjt_fort wsjt_cxx)
+
+add_executable (test_q65 lib/test_q65.f90)
+target_link_libraries (test_q65 wsjt_fort wsjt_cxx)
+
+add_executable (q65_ftn_test lib/qra/q65/q65_ftn_test.f90)
+target_link_libraries (q65_ftn_test wsjt_fort wsjt_cxx)
+
+add_executable (jt49sim lib/jt49sim.f90)
+target_link_libraries (jt49sim wsjt_fort wsjt_cxx)
+
+#add_executable (allsim lib/allsim.f90)
+#target_link_libraries (allsim wsjt_fort wsjt_cxx)
+
+add_executable (rtty_spec lib/rtty_spec.f90)
+target_link_libraries (rtty_spec wsjt_fort wsjt_cxx)
+
+add_executable (jt65code lib/jt65code.f90)
+target_link_libraries (jt65code wsjt_fort wsjt_cxx)
+
+add_executable (jt9code lib/jt9code.f90)
+target_link_libraries (jt9code wsjt_fort wsjt_cxx)
+
+add_executable (wsprcode lib/wsprcode/wsprcode.f90 lib/wsprcode/nhash.c)
+target_link_libraries (wsprcode wsjt_fort wsjt_cxx)
+	       
+add_executable (encode77 lib/77bit/encode77.f90)
+target_link_libraries (encode77 wsjt_fort wsjt_cxx)
+
+add_executable (wsprsim ${wsprsim_CSRCS})
+target_link_libraries (wsprsim ${LIBM_LIBRARIES})
+
+add_executable (jt4code lib/jt4code.f90)
+target_link_libraries (jt4code wsjt_fort wsjt_cxx)
+
+add_executable (msk144code lib/msk144code.f90)
+target_link_libraries (msk144code wsjt_fort wsjt_cxx)
+
+add_executable (ft8code lib/ft8/ft8code.f90)
+target_link_libraries (ft8code wsjt_fort wsjt_cxx)
+
+add_executable (ft4code lib/ft4/ft4code.f90)
+target_link_libraries (ft4code wsjt_fort wsjt_cxx)
+
+add_executable (echosim lib/echosim.f90)
+target_link_libraries (echosim wsjt_fort wsjt_cxx)
+
+add_executable (ft8sim lib/ft8/ft8sim.f90)
+target_link_libraries (ft8sim wsjt_fort wsjt_cxx)
+
+add_executable (msk144sim lib/msk144sim.f90)
+target_link_libraries (msk144sim wsjt_fort wsjt_cxx)
+
+add_executable (ft4sim lib/ft4/ft4sim.f90)
+target_link_libraries (ft4sim wsjt_fort wsjt_cxx)
+
+add_executable (ft4sim_mult lib/ft4/ft4sim_mult.f90)
+target_link_libraries (ft4sim_mult wsjt_fort wsjt_cxx)
+
+add_executable (fst4sim lib/fst4/fst4sim.f90)
+target_link_libraries (fst4sim wsjt_fort wsjt_cxx)
+if (WIN32)
+  set_target_properties (fst4sim PROPERTIES
+    LINK_FLAGS -Wl,--stack,0x4000000,--heap,0x6000000
+    )
+endif ()
+
+add_executable (ldpcsim240_101 lib/fst4/ldpcsim240_101.f90)
+target_link_libraries (ldpcsim240_101 wsjt_fort wsjt_cxx)
+
+add_executable (ldpcsim240_74 lib/fst4/ldpcsim240_74.f90)
+target_link_libraries (ldpcsim240_74 wsjt_fort wsjt_cxx)
+
+endif(WSJT_BUILD_UTILS)
+
+add_executable (fmtave lib/fmtave.f90)
+
+add_executable (fcal lib/fcal.f90)
+
+add_executable (fmeasure lib/fmeasure.f90)
+
+# build the wsprd WSPR mode decoder driver
+generate_version_info (wsprd_VERSION_RESOURCES
+  NAME wsprd
+  BUNDLE ${PROJECT_BUNDLE_NAME}
+  ICON ${WSJTX_ICON_FILE}
+  FILE_DESCRIPTION "WSPR mode decoder"
+  )
+add_executable (wsprd ${wsprd_CSRCS} lib/indexx.f90 lib/wsprd/osdwspr.f90 ${wsprd_VERSION_RESOURCES})
+target_include_directories (wsprd PRIVATE ${FFTW3_INCLUDE_DIRS})
+target_link_libraries (wsprd ${FFTW3_LIBRARIES} ${LIBM_LIBRARIES})
+
+# Tell CMake to run moc when necessary
+set (CMAKE_AUTOMOC ON)
+include_directories (${CMAKE_CURRENT_BINARY_DIR})
+
+# don't use Qt "keywords" signal, slot, emit in generated files to
+# avoid compatability issue with other libraries
+# ADD_DEFINITIONS (-DQT_NO_KEYWORDS)
+# ADD_DEFINITIONS (-DUNICODE)	#as per qmake
+
+# As moc files are generated in the binary dir, tell CMake to always
+# look for includes there:
+set (CMAKE_INCLUDE_CURRENT_DIR ON)
+
+#
+# source navigation
+#
+set (sources
+  ${CMAKE_SOURCE_DIR}/*
+  ${CMAKE_SOURCE_DIR}/logbook/*
+  ${CMAKE_SOURCE_DIR}/lib/*
+  )
+add_custom_target (ctags COMMAND ${CTAGS} -o ${CMAKE_SOURCE_DIR}/tags -R ${sources})
+add_custom_target (etags COMMAND ${ETAGS} -o ${CMAKE_SOURCE_DIR}/TAGS -R ${sources})
+
+
+# Qt i18n - always include the country generic if any regional variant is included
+set (LANGUAGES
+  ca				# Catalan
+  da				# Danish
+  en				# English (we need this to stop
+				# translation loaders loading the
+				# second preference UI languge, it
+				# doesn't need to be populated)
+  en_GB				# English UK
+  es				# Spanish
+  it				# Italian
+  ja				# Japanese
+  #no				# Norwegian
+  #pt				# Portuguese
+  ru				# Russian
+  #sv				# Swedish
+  zh				# Chinese
+  zh_HK				# Chinese per Hong Kong
+  zh_TW				# Chinese traditional
+  it				# Italian
+  )
+foreach (lang_ ${LANGUAGES})
+  file (TO_NATIVE_PATH ${CMAKE_SOURCE_DIR}/translations/wsjtx_${lang_}.ts ts_)
+  list (APPEND TS_FILES ${ts_})
+  set (qt_translations_ "${QT_TRANSLATIONS_DIR}/qtbase_${lang_}.qm")
+  if (EXISTS "${qt_translations_}")
+    add_custom_command (
+      OUTPUT "${CMAKE_BINARY_DIR}/qt_${lang_}.qm"
+      COMMAND ${LCONVERT_EXECUTABLE} -o "${CMAKE_BINARY_DIR}/qt_${lang_}.qm" ${qt_translations_}
+      COMMENT "Building required Qt translations for language ${lang_}"
+      )
+    list (APPEND QM_FILES "${CMAKE_BINARY_DIR}/qt_${lang_}.qm")
+  endif ()
+endforeach ()
+if (UPDATE_TRANSLATIONS)
+  message (STATUS "UPDATE_TRANSLATIONS option is set.")
+  qt5_create_translation (
+    QM_FILES ${wsjt_qt_UISRCS} ${wsjtx_UISRCS} ${wsjt_qt_CXXSRCS} ${wsjtx_CXXSRCS}
+    ${TS_FILES}
+    OPTIONS -I${CMAKE_CURRENT_SOURCE_DIR}
+    )
+else ()
+  qt5_add_translation (QM_FILES ${TS_FILES})
+endif ()
+add_custom_target (translations DEPENDS ${QM_FILES})
+set_property (DIRECTORY PROPERTY CLEAN_NO_CUSTOM TRUE)
+
+# embedded resources
+function (add_resources resources path)
+  foreach (resource_file_ ${ARGN})
+    get_filename_component (name_ ${resource_file_} NAME)
+    if (IS_ABSOLUTE "${resource_file_}")
+      file (TO_NATIVE_PATH ${resource_file_} source_)
+    else ()
+      file (TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${resource_file_} source_)
+    endif ()
+    file (TO_NATIVE_PATH ${path}/${name_} dest_)
+    set (resources_ "${resources_}\n    <file alias=\"${dest_}\">${source_}</file>")
+    set (${resources} ${${resources}}${resources_} PARENT_SCOPE)
+  endforeach (resource_file_ ${ARGN})
+endfunction (add_resources resources path)
+
+add_resources (wsjtx_RESOURCES "" ${TOP_LEVEL_RESOURCES})
+add_resources (wsjtx_RESOURCES /Palettes ${PALETTE_FILES})
+add_resources (wsjtx_RESOURCES /Translations ${QM_FILES})
+
+configure_file (wsjtx.qrc.in wsjtx.qrc @ONLY)
+
+# UI generation
+qt5_wrap_ui (wsjt_qt_GENUISRCS ${wsjt_qt_UISRCS})
+qt5_wrap_ui (wsjtx_GENUISRCS ${wsjtx_UISRCS})
+
+# Resource generation
+qt5_add_resources (wsjtx_RESOURCES_RCC
+  ${CMAKE_BINARY_DIR}/wsjtx.qrc
+  contrib/QDarkStyleSheet/qdarkstyle/style.qrc
+  )
+
+# AX COM servers
+if (WIN32)
+  include (QtAxMacros)
+  wrap_ax_server (GENAXSRCS ${AXSERVERSRCS})
+endif (WIN32)
+
+#
+# targets dependent on Qt
+#
+
+# build a library for the QCustomPlot widget
+add_library (qcp STATIC ${qcp_CXXSRCS})
+target_include_directories (qcp PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/qcustomplot-source>)
+target_link_libraries (qcp Qt5::Widgets Qt5::PrintSupport)
+
+# build a library of package Qt functionality
+add_library (wsjt_qt STATIC ${wsjt_qt_CXXSRCS} ${wsjt_qt_GENUISRCS} ${GENAXSRCS})
+# set wsjtx_udp exports to static variants
+target_compile_definitions (wsjt_qt PUBLIC UDP_STATIC_DEFINE)
+target_link_libraries (wsjt_qt Hamlib::Hamlib Boost::log qcp Qt5::Widgets Qt5::Network Qt5::Sql)
+if (WIN32)
+  target_link_libraries (wsjt_qt Qt5::AxContainer Qt5::AxBase)
+endif (WIN32)
+
+# build a library of package Qt functionality used in Fortran utilities
+add_library (fort_qt STATIC ${fort_qt_CXXSRCS})
+target_link_libraries (fort_qt Qt5::Core)
+
+# build a library of WSJT Qt multimedia components
+add_library (wsjt_qtmm STATIC ${wsjt_qtmm_CXXSRCS} ${wsjt_qtmm_GENUISRCS})
+target_link_libraries (wsjt_qtmm Qt5::Multimedia)
+
+# build the jt9 slow mode decoder driver
+generate_version_info (jt9_VERSION_RESOURCES
+  NAME jt9
+  BUNDLE ${PROJECT_BUNDLE_NAME}
+  ICON ${WSJTX_ICON_FILE}
+  FILE_DESCRIPTION "jt9 - WSJT-X slow mode decoder"
+  )
+
+add_executable (record_time_signal Audio/tools/record_time_signal.cpp)
+target_link_libraries (record_time_signal wsjt_cxx wsjt_qtmm wsjt_qt)
+
+add_executable (jt9 ${jt9_FSRCS} ${jt9_VERSION_RESOURCES})
+if (${OPENMP_FOUND} OR APPLE)
+  if (APPLE)
+    # On  Mac  we don't  have  working  OpenMP  support in  the  C/C++
+    # compilers so we  have to manually set the  correct linking flags
+    # and libraries to get OpenMP support in jt9.
+    set_target_properties (jt9
+      PROPERTIES
+      Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp
+      LINK_LIBRARIES "gomp;gcc_s.1" # assume GNU libgcc OpenMP
+      )
+    target_compile_options (jt9
+      PRIVATE
+      $<$<COMPILE_LANGUAGE:Fortran>:-fopenmp>   # assumes GNU style Fortran compiler
+      )
+  else (APPLE)
+    if (OpenMP_C_FLAGS)
+      set_target_properties (jt9
+        PROPERTIES
+        COMPILE_FLAGS "${OpenMP_C_FLAGS}"
+        LINK_FLAGS "${OpenMP_C_FLAGS}"
+        )
+    endif ()
+    set_target_properties (jt9
+      PROPERTIES
+      Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp
+      )
+  endif (APPLE)
+  if (WIN32)
+    set_target_properties (jt9 PROPERTIES
+      LINK_FLAGS -Wl,--stack,16777216
+      )
+  endif ()
+  target_link_libraries (jt9 wsjt_fort_omp wsjt_cxx fort_qt)
+else (${OPENMP_FOUND} OR APPLE)
+  target_link_libraries (jt9 wsjt_fort wsjt_cxx fort_qt)
+endif (${OPENMP_FOUND} OR APPLE)
+
+if (WIN32)
+  # build map65
+  find_package (Portaudio REQUIRED)
+  add_subdirectory (map65)
+endif ()
+
+# build the main application
+generate_version_info (wsjtx_VERSION_RESOURCES
+  NAME wsjtx
+  BUNDLE ${PROJECT_BUNDLE_NAME}
+  ICON ${WSJTX_ICON_FILE}
+  )
+
+add_executable (wsjtx MACOSX_BUNDLE
+  ${wsjtx_CXXSRCS}
+  ${wsjtx_GENUISRCS}
+  ${WSJTX_ICON_FILE}
+  ${wsjtx_RESOURCES_RCC}
+  ${wsjtx_VERSION_RESOURCES}
+  )
+
+if (WSJT_CREATE_WINMAIN)
+  set_target_properties (wsjtx PROPERTIES WIN32_EXECUTABLE ON)
+endif (WSJT_CREATE_WINMAIN)
+
+set_target_properties (wsjtx PROPERTIES
+  MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Darwin/Info.plist.in"
+  MACOSX_BUNDLE_INFO_STRING "${PROJECT_DESCRIPTION}"
+  MACOSX_BUNDLE_ICON_FILE "${WSJTX_ICON_FILE}"
+  MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
+  MACOSX_BUNDLE_SHORT_VERSION_STRING "v${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
+  MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${SCS_VERSION_STR}"
+  MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_BUNDLE_NAME}"
+  MACOSX_BUNDLE_BUNDLE_EXECUTABLE_NAME "${PROJECT_NAME}"
+  MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT}"
+  MACOSX_BUNDLE_GUI_IDENTIFIER "org.k1jt.wsjtx"
+  )
+
+target_include_directories (wsjtx PRIVATE ${FFTW3_INCLUDE_DIRS})
+if ((NOT ${OPENMP_FOUND}) OR APPLE)
+  target_link_libraries (wsjtx wsjt_fort)
+else ()
+  target_link_libraries (wsjtx wsjt_fort_omp)
+  if (OpenMP_C_FLAGS)
+    set_target_properties (wsjtx PROPERTIES
+      COMPILE_FLAGS "${OpenMP_C_FLAGS}"
+      LINK_FLAGS "${OpenMP_C_FLAGS}"
+      )
+  endif ()
+  set_target_properties (wsjtx PROPERTIES
+    Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp
+    )
+  if (WIN32)
+    set_target_properties (wsjtx PROPERTIES
+      LINK_FLAGS -Wl,--stack,0x1000000,--heap,0x20000000
+      )
+  endif ()
+endif ()
+target_link_libraries (wsjtx Qt5::SerialPort wsjt_cxx wsjt_qt wsjt_qtmm ${FFTW3_LIBRARIES} ${LIBM_LIBRARIES})
+
+# make a library for WSJT-X UDP servers
+# add_library (wsjtx_udp SHARED ${UDP_library_CXXSRCS})
+add_library (wsjtx_udp-static STATIC ${UDP_library_CXXSRCS})
+#target_include_directories (wsjtx_udp
+#  INTERFACE
+#  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/wsjtx>
+#  )
+target_include_directories (wsjtx_udp-static
+  INTERFACE
+  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/wsjtx>
+  )
+#set_target_properties (wsjtx_udp PROPERTIES
+#  PUBLIC_HEADER "${UDP_library_HEADERS}"
+#  )
+set_target_properties (wsjtx_udp-static PROPERTIES
+  OUTPUT_NAME wsjtx_udp
+  )
+target_compile_definitions (wsjtx_udp-static PUBLIC UDP_STATIC_DEFINE)
+target_link_libraries (wsjtx_udp-static Qt5::Network Qt5::Gui)
+generate_export_header (wsjtx_udp-static BASE_NAME udp)
+
+generate_version_info (udp_daemon_VERSION_RESOURCES
+  NAME udp_daemon
+  BUNDLE ${PROJECT_BUNDLE_NAME}
+  ICON ${WSJTX_ICON_FILE}
+  FILE_DESCRIPTION "Example WSJT-X UDP Message Protocol daemon"
+  )
+add_executable (udp_daemon UDPExamples/UDPDaemon.cpp ${udp_daemon_VERSION_RESOURCES})
+target_link_libraries (udp_daemon wsjtx_udp-static)
+
+generate_version_info (wsjtx_app_version_VERSION_RESOURCES
+  NAME wsjtx_app_version
+  BUNDLE ${PROJECT_BUNDLE_NAME}
+  ICON ${WSJTX_ICON_FILE}
+  FILE_DESCRIPTION "Display WSJT-X Application Version on console"
+  )
+add_executable (wsjtx_app_version AppVersion/AppVersion.cpp ${wsjtx_app_version_VERSION_RESOURCES})
+target_link_libraries (wsjtx_app_version wsjt_qt)
+
+generate_version_info (message_aggregator_VERSION_RESOURCES
+  NAME message_aggregator
+  BUNDLE ${PROJECT_BUNDLE_NAME}
+  ICON ${WSJTX_ICON_FILE}
+  FILE_DESCRIPTION "Example WSJT-X UDP Message Protocol application"
+  )
+add_resources (message_aggregator_RESOURCES /qss ${message_aggregator_STYLESHEETS})
+configure_file (UDPExamples/message_aggregator.qrc.in message_aggregator.qrc @ONLY)
+qt5_add_resources (message_aggregator_RESOURCES_RCC
+  ${CMAKE_CURRENT_BINARY_DIR}/message_aggregator.qrc
+  contrib/QDarkStyleSheet/qdarkstyle/style.qrc
+  )
+add_executable (message_aggregator
+  ${message_aggregator_CXXSRCS}
+  ${message_aggregator_RESOURCES_RCC}
+  ${message_aggregator_VERSION_RESOURCES}
+  )
+target_link_libraries (message_aggregator wsjt_qt Qt5::Widgets wsjtx_udp-static)
+
+if (WSJT_CREATE_WINMAIN)
+  set_target_properties (message_aggregator PROPERTIES WIN32_EXECUTABLE ON)
+endif (WSJT_CREATE_WINMAIN)
+
+if (UNIX)
+  if (NOT WSJT_SKIP_MANPAGES)
+    add_subdirectory (manpages)
+    add_dependencies (wsjtx manpages)
+  endif (NOT WSJT_SKIP_MANPAGES)
+  if (NOT APPLE)
+    add_subdirectory (debian)
+    add_dependencies (wsjtx debian)
+  endif (NOT APPLE)
+endif (UNIX)
+
+#
+# installation
+#
+install (TARGETS wsjtx
+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+  BUNDLE DESTINATION . COMPONENT runtime
+  )
+
+# install (TARGETS wsjtx_udp EXPORT udp
+#   RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+#   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+#   ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+#   PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/wsjtx
+#   )
+# install (TARGETS wsjtx_udp-static EXPORT udp-static
+#   DESTINATION ${CMAKE_INSTALL_LIBDIR}
+#   )
+
+# install (EXPORT udp NAMESPACE wsjtx::
+#   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wsjtx
+#   )
+# install (EXPORT udp-static NAMESPACE wsjtx::
+#   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/wsjtx
+#   )
+
+install (TARGETS udp_daemon message_aggregator wsjtx_app_version
+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+  BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+  )
+
+install (TARGETS jt9 wsprd fmtave fcal fmeasure
+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+  BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+  )
+
+if(WSJT_BUILD_UTILS)
+install (TARGETS ft8code jt65code jt9code jt4code msk144code 
+  q65code fst4sim q65sim echosim
+  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+  BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+  )
+endif(WSJT_BUILD_UTILS)  
+
+install (PROGRAMS
+  ${RIGCTL_EXE}
+  DESTINATION ${CMAKE_INSTALL_BINDIR}
+  #COMPONENT runtime
+  RENAME rigctl-wsjtx${CMAKE_EXECUTABLE_SUFFIX}
+  )
+
+install (PROGRAMS
+  ${RIGCTLD_EXE}
+  DESTINATION ${CMAKE_INSTALL_BINDIR}
+  #COMPONENT runtime
+  RENAME rigctld-wsjtx${CMAKE_EXECUTABLE_SUFFIX}
+  )
+
+install (PROGRAMS
+  ${RIGCTLCOM_EXE}
+  DESTINATION ${CMAKE_INSTALL_BINDIR}
+  #COMPONENT runtime
+  RENAME rigctlcom-wsjtx${CMAKE_EXECUTABLE_SUFFIX}
+  )
+
+install (FILES
+  README
+  COPYING
+  AUTHORS
+  THANKS
+  NEWS
+  BUGS
+  DESTINATION ${CMAKE_INSTALL_DOCDIR}
+  #COMPONENT runtime
+  )
+
+install (FILES
+  cty.dat
+  cty.dat_copyright.txt
+  contrib/Ephemeris/JPLEPH
+  DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}
+  #COMPONENT runtime
+  )
+
+install (DIRECTORY
+  example_log_configurations
+  DESTINATION ${CMAKE_INSTALL_DOCDIR}
+  FILES_MATCHING REGEX "^.*[^~]$"
+  #COMPONENT runtime
+  )
+
+#
+# Mac installer files
+#
+if (APPLE)
+    install (FILES
+        Darwin/ReadMe.txt
+        Darwin/com.wsjtx.sysctl.plist
+        DESTINATION .
+        #COMPONENT runtime
+    )
+endif (APPLE)
+
+
+#
+# uninstall support
+#
+configure_file (
+  "${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+  @ONLY)
+add_custom_target (uninstall
+  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
+
+
+# creates or updates ${PROJECT_BINARY_DIR}/scs_version.h using cmake script
+add_custom_target (revisiontag
+  COMMAND ${CMAKE_COMMAND}
+  -D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
+  -D BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}
+  -D OUTPUT_DIR=${PROJECT_BINARY_DIR}
+  -P ${CMAKE_CURRENT_SOURCE_DIR}/CMake/getsvn.cmake
+  VERBATIM
+  BYPRODUCTS scs_version.h
+  COMMENT "Getting source control system revision information"
+  )
+# explicitly say that the wsjt_qt depends on custom target, this is
+# done indirectly so that the revisiontag target gets built exactly
+# once per build
+add_dependencies (wsjt_qt revisiontag)
+add_dependencies (jt9 revisiontag)
+add_dependencies (wsprd revisiontag)
+
+
+#
+# versioning and configuration
+#
+configure_file (
+  "${CMAKE_CURRENT_SOURCE_DIR}/wsjtx_config.h.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/wsjtx_config.h"
+  )
+
+
+if (NOT WIN32 AND NOT APPLE)
+  # install a desktop file so wsjtx appears in the application start
+  # menu with an icon
+  install (
+    FILES wsjtx.desktop message_aggregator.desktop
+    DESTINATION share/applications
+    #COMPONENT runtime
+    )
+  install (
+    FILES icons/Unix/wsjtx_icon.png
+    DESTINATION share/pixmaps
+    #COMPONENT runtime
+    )
+endif (NOT WIN32 AND NOT APPLE)
+
+if (APPLE)
+  set (CMAKE_POSTFLIGHT_SCRIPT
+    "${wsjtx_BINARY_DIR}/postflight.sh")
+  set (CMAKE_POSTUPGRADE_SCRIPT
+    "${wsjtx_BINARY_DIR}/postupgrade.sh")
+  configure_file ("${wsjtx_SOURCE_DIR}/Darwin/postflight.sh.in"
+    "${CMAKE_POSTFLIGHT_SCRIPT}")
+  configure_file ("${wsjtx_SOURCE_DIR}/Darwin/postupgrade.sh.in"
+    "${CMAKE_POSTUPGRADE_SCRIPT}")
+endif ()
+
+
+#
+# bundle fixup only done in non-Debug configurations
+#
+if (NOT is_debug_build)
+  # add this sub-sirectory after all install steps and other
+  # sub-directories to ensure that all executables are in-place before
+  # any fixup is done
+  add_subdirectory (bundle_fixup)
+endif ()
+
+
+#
+# packaging
+#
+set (CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/package_description.txt")
+set (CPACK_MONOLITHIC_INSTALL 1)
+set (CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
+set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
+set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
+set (CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
+
+if (WIN32)
+  set (CPACK_GENERATOR "NSIS")
+elseif (APPLE)
+  set (CPACK_GENERATOR "DragNDrop")
+else ()
+  find_program (DPKG_BUILDER dpkg-buildpackage DOC "Debian package builder")
+  if (DPKG_BUILDER)
+    #
+    # Derive the correct filename for a Debian package because the DEB
+    # generator doesn't do this correctly at present.
+    #
+    find_program (DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems")
+    if (DPKG_PROGRAM)
+      execute_process (
+	COMMAND ${DPKG_PROGRAM} --print-architecture
+	OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
+	OUTPUT_STRIP_TRAILING_WHITESPACE
+	)
+    else (DPKG_PROGRAM)
+      set (CPACK_DEBIAN_PACKAGE_ARCHITECTURE noarch)
+    endif (DPKG_PROGRAM)
+
+    list (APPEND CPACK_GENERATOR "DEB")
+  endif (DPKG_BUILDER)
+
+  find_program (RPMBUILDER rpmbuild DOC "RPM package builder")
+  if (RPMBUILDER)
+    list (APPEND CPACK_GENERATOR "RPM")
+  endif (RPMBUILDER)
+endif ()
+
+set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE}")
+set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgfortran5 (>=8.3) | libgfortran4 (>=7.3) | libgfortran3 (>=6.3), libfftw3-single3 (>=3.3), libgomp1 (>=6), libqt5serialport5 (>=5.7), libqt5multimedia5-plugins (>=5.7), libqt5widgets5 (>=5.7), libqt5network5 (>=5.7), libqt5printsupport5 (>=5.7), libqt5sql5-sqlite (>=5.7), libusb-1.0-0 (>=1.0.21), libboost-log1.62.0 (>=1.62.0) | libboost-log1.65.1 (>=1.65.1) | libboost-log1.67.0 (>=1.67.0) | libboost-log1.71.0 (>=1.71.0) | libboost-log1.74.0 (>=1.74.0)")
+set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
+
+set (CPACK_RPM_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
+set (CPACK_RPM_PACKAGE_REQUIRES "qt5-qtbase >= 5.9, qt5-qtserialport >= 5.9, qt5-qtmultimedia >= 5.9, qt5-qtsvg >= 5.9, libusbx >= 1.0.22, libgfortran >= 7, libgomp >= 7, fftw-libs-single >= 3.3, boost-log >= 1.62")
+set (CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION /usr/share/pixmaps /usr/share/applications /usr/share/man /usr/share/man1)
+
+configure_file ("${PROJECT_SOURCE_DIR}/CMakeCPackOptions.cmake.in"
+  "${PROJECT_BINARY_DIR}/CMakeCPackOptions.cmake" @ONLY)
+set (CPACK_PROJECT_CONFIG_FILE "${PROJECT_BINARY_DIR}/CMakeCPackOptions.cmake")
+
+include (CPack)
diff --git a/q65w/.gitignore b/q65w/.gitignore
new file mode 100644
index 000000000..74b59e474
--- /dev/null
+++ b/q65w/.gitignore
@@ -0,0 +1 @@
+~*
diff --git a/q65w/CMakeLists.txt b/q65w/CMakeLists.txt
new file mode 100644
index 000000000..84cbff690
--- /dev/null
+++ b/q65w/CMakeLists.txt
@@ -0,0 +1,74 @@
+set (q65w_CXXSRCS
+  about.cpp
+  astro.cpp
+  bandmap.cpp
+  devsetup.cpp
+  displaytext.cpp
+  getdev.cpp
+  getfile.cpp
+  main.cpp
+  mainwindow.cpp
+  messages.cpp
+  meterwidget.cpp
+  plotter.cpp
+  set570.cpp
+  signalmeter.cpp
+  soundin.cpp
+  soundout.cpp
+  txtune.cpp
+  widegraph.cpp
+  )
+
+if (WIN32)
+  set (q65w_CXXSRCS ${q65w_CXXSRCS} killbyname.cpp)
+endif (WIN32)
+
+set (q65w_UISRCS
+  about.ui
+  astro.ui
+  bandmap.ui
+  devsetup.ui
+  mainwindow.ui
+  messages.ui
+  txtune.ui
+  widegraph.ui
+)
+
+set (q65w_C_and_CXXSRCS
+  ${q65w_CSRCS}
+  ${q65w_CXXSRCS}
+  )
+set_property (SOURCE ${q65w_C_and_CXXSRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -include wsjtx_config.h")
+set_property (SOURCE ${q65w_C_and_CXXSRCS} APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/wsjtx_config.h)
+
+# build the subdirectories
+add_subdirectory (libm65)
+
+# UI generation
+qt5_wrap_ui (q65w_GENUISRCS ${q65w_UISRCS})
+
+add_executable (q65w ${q65w_CXXSRCS} ${q65w_CSRCS} ${q65w_GENUISRCS} q65w.rc)
+target_include_directories (q65w PRIVATE ${CMAKE_SOURCE_DIR} ${FFTW3_INCLUDE_DIRS})
+target_link_libraries (q65w wsjt_qt m65impl ${FFTW3_LIBRARIES} Qt5::Widgets Qt5::Network Portaudio::Portaudio Usb::Usb)
+
+if (WSJT_CREATE_WINMAIN)
+  set_target_properties (q65w PROPERTIES WIN32_EXECUTABLE ON)
+endif (WSJT_CREATE_WINMAIN)
+
+if (WIN32)
+  install (
+    CODE "get_filename_component (_path \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/wsjtx_dir.txt\" REALPATH)
+  if (WIN32)
+    set (_separator \"\\\\\")
+  else ()
+    set (_separator \"/\")
+  endif ()
+  file (WRITE \"\${_path}\" \".\${_separator}\\n\")"
+    )
+
+  install (
+    TARGETS q65w
+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+    BUNDLE DESTINATION . COMPONENT runtime
+    )
+endif ()
diff --git a/q65w/LICENSE_WHEATLEY.TXT b/q65w/LICENSE_WHEATLEY.TXT
new file mode 100644
index 000000000..8adb5204b
--- /dev/null
+++ b/q65w/LICENSE_WHEATLEY.TXT
@@ -0,0 +1,30 @@
++ + + This Software is released under the "Simplified BSD License"  + + +
+Copyright 2010 Moe Wheatley. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are 
+met:
+
+  1. Redistributions of source code must retain the above copyright 
+     notice, this list of conditions and the following disclaimer.
+
+  2. Redistributions in binary form must reproduce the above copyright 
+     notice, this list of conditions and the following disclaimer in 
+     the documentation and/or other materials provided with the 
+     distribution.
+
+THIS SOFTWARE IS PROVIDED BY Moe Wheatley ``AS IS'' AND ANY EXPRESS OR 
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL Moe Wheatley OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation 
+are those of the authors and should not be interpreted as representing 
+official policies, either expressed or implied, of Moe Wheatley.
diff --git a/q65w/MAP65_Beta_Release.docx b/q65w/MAP65_Beta_Release.docx
new file mode 100644
index 0000000000000000000000000000000000000000..acdc027735b80ce5530632bc1abc9b12e2a51c59
GIT binary patch
literal 23951
zcmeFYV{~lav-caDJGRxaZ96-*Z9CbqlN~!dHg;^=wr$(F`TY;>bM86g-uwP}))>7;
zjkRWfyJq#QS)Vn!T0t5V3>63h2nq-YhzRJK=-ej;7zhXj;`;>z1)?QvXX|WY>#V2j
zVQ=E3L+5T|O_&D;LYV^u@;(0l9RC|fpgvJnzE=P#<cj<=)bwwW&b5A2uDt>eARKdQ
z%oPTwjbKHi^Rr_P9h*hq=k;vChR@d1%F5(D1htL`>~%?nqz3y*HB?l68q-{2$M5Vt
zFLVPWa+F}!*jiRXocq6jJ@*<wqa<t?OzM!<L60cSa=^(K{d1GnJ!wHYUa8!Kd?To?
z*W`|3q^&?wkwRw!AH3vaBR!Dwb|UzeNbzBeXN)>(#--Bis}vN$h!0>BJ|x1~p`oeD
zc{!92?4SZ~I-n0mcl@F+lce@kAZ8?<uZdX<t_vTqrYbV6xP%?oO%aPHoXB!#Qfw!+
zpu?1%bVw&6&_}Ib5FJxn{`gTG90+2csY1b>fn48$HC%<?5CFzQJP_hPn;)fTFjJD`
zPs8wRys(1=9{9-iy$Jek*ni_3sRohBY<@-?4z;6^7JuSKN&-_Tzo!hCS7;G|z~gN%
z)OoRqn>f+LuR85l3S%37A`WfJl`7&XZE;@<3NjZzK6oTZfL@>9333`T4?h~;Sr$BX
zeXqc;FHj(b|B}Y|aoA0F-*@D`vlR9_jrAN&texoT{yG1j^!?vBXaAR}N5!v6feONf
zT!C*H4EwOJ!4S``Y)a(15ubqurJV!2A&eKSc6Q_wwkoXY9^M~~$uDLEX3TRJ^FaJH
z&{)V>&d?X%vU0a+iiA|q7}iP;FoPGLthTVVTcqcSOU&hoVl2<wtqTz(<s&v_uFlsE
z9`00bjm4FOR{9+`j`I*z-r6~IuLhc)R<x=CZ((*N&@iOVrniWo!;b9>V|ukb7LGOy
zX<)ZPX9%#C9CVDfq<Wyiwq}?j%Zf9sfMMIV$Xj?2`O=Gw38sP0g$|#(^LEJu)zn3F
zUdi(q`pZo~q(Ou3<Mk#SSVwQp_g&EbdycGiNwgGy-^u(gb+|xKz;1Sq#`OP|D8_b1
zE;ip)@1Jt_A4voJUGu(2|L=X&C;gOPV?Y|(ihIN(?wYb4)m#>dh=ur(BW3Qqi`+6v
zR#QEd>{EEZW^}CBkT=0b>s7N~ciXk~LC=?+)uo=mD;&0J(BsIbkCo$CIM}MsZ>E+l
zuYoRUNEIzixeP<ho$bxV^#&}a_)5vPIz&^dPoplp-vy1V0;(!@$)nFzs$CsF%QoLD
z{XlAk)Yqd=)7uD<ac*w9WYW{?l6E_#%4hP~(O3?s+-_5Xg_ZD93?ruk&%dDxA5{Rg
zF-{pHdzt`PqO~Amqs0m%90)xJhckt(y_=F(-0vaV4X3N>pN{ssz6c>HV3R*$IC$qk
zm8;m#sPre*8BTl+`qWxQht)G75wNhPsDMWpW_0Qk#JD@YBMprJ$M8nKewoVAUk>IE
zmCipu=hQft0;@L#f295G<2%#fUID3}bX`e%O2fx+ML3ySQ&*^#ErB&$r|9p}jdhU^
z^?rWpz<tmd`f>Oqkhs3y3ef7I6TV{seZ%2Q6eA+-(c3%pq263-huxLVhPw$wvnhbx
zvC4)@5>6j!S*bNdu_WrB%wX~W|DP5*77<5j5FrqdDF`qS^7s1v*Fyham-xBPneCps
z<0k>(l|3P$1p6X}M&m(a&0%lyh3%A_Tbs?492*ovj)>H5I&n+8`o-X9s+)x0yQCkF
z^ey=v>C0)RaD>~>Mv0mle7IF~**KR|U6-=c_fJGUGjgwaovG@|xyenrraosYW2+EW
z&Wm^FUkx8seLQ*%EDQCtAN6+yURnH<U(bkL+1cigl&L4lQ`b;q+-cnTbCdH=SqU3D
zb}S2KWlhY?VpSI_M!(FAr(7>?mN8G-oYodxy*4`Nz9t+l;x0Yhw*(sSRsNC?u#fRg
zxH`jLVXs}vJapi#Wt~qdKM~nC-Z+atMCTe{f1>=^xCs4SBhT$`l_lZVNaA-)O#wpq
zLh>Gxp&>fyHNZ|!3h|8Nrn3PC*LWZcZ&nj^#0M{(8A8aLOuOq~8uB!e)e$)UmPe+R
z+Y?+qDHt&T%KUpwFoe95g&7<_tP{4ZD7$%yRx7FiikCPb7Y1s?EhKhaxi13$j%U6<
z4mR8!`d63RMR$0&LsSay#j0o6AJKpo5aSKLl=kP@_9XmR<c+q{(_=g~oGfj5nl+VB
za>Dd0Jcixj7!VW2`UZ;Elj;}f#AsKq)f3mLSICb1d^z_Mh`gl>-3P=eNUxazSf2`r
zBKcn@*$)s`ukQ|%(bDpFxGrF>1E3*X^B}sdOTiGZ{C~hZY3+LSj$64NUD`!A2lxwZ
zR|}6mO@h1#RPO4T0|MqY5V}qyQd-p-54@TU_Foj7+)u{4^Y}A0{t(&TcLwWiU4^Pa
z+{1rLIM`sg=N#=6Ys2aNJaB{Klu+4Z;fL;3OGsyR0ip8#cn><Wi;=A8cW{w+BY23p
zC1VgnTyyI@eLeTlH|GKk!19^G*dpg?akm$la0~6&bAv?Q`7yuGt|qFtA^qm=I>$dw
zV<Jol_-(>*k&SoZHpMw+=f|9=3&Lio(mN|{{A~ZVeS8~5e;mxT&V3BCqM1?sh|mw(
zVFzn~wj^Xh1Sdg<!1?uJ-5I-aKu=!!*0Z?M@oKz!iT<{?iTFfYG{N+tnU<o~Gou-v
zuqc=$AyQ?fny?AZ+*~S8@%6@!m4(6-S8ZD!`3g8DLVr!Lzt>Q#GV*L^w4D@3s~eIr
zH{*!?&A^3!2QpM+5IFn_b=NSVysWsva#D<5a@c5;QD)`6x5<9@het2l1NtPaGFHK-
zeQSe%Q%|<MD&n+~7>F&}Fh;`VFqO+mg#eR}@BE_62<m3pp=<4;7ICYQqw!aBXwrSa
z&f_?_P^L}I9j))0z<Um)MM(K?@52@U!f0hRqmTnI-%NpB5N$oZrBwa_`UDG21OaO=
z?~{1;9ez%GVIIi+gU-<D;kfJ>%-ci)_%W3RROCD0j{168e+^PGy0*6FjZPKTzD@tl
zmh9e2X(L`COQlt_0xkgJ41D#Rj2i8A;Hk8~U8R&%jR1(1m6M0sJl%^id%MsNb_#ZX
z@fm^)oKMuz-EbDJJW@*3xq7OG?ji*gr-g+UK<+xym!I?abhXImKB@n$XS*DADzx|{
z1A*)@9)6l+=#O7*i@jD}q^o{JuR=PEW~&slDpUM-a1ZrPcH@K$+4r1n4Q2o)>?EP7
z1N<>3+@jaq0Qh0EtL!T}a4oWBQ2dwI3UQKhuQUsd-7c2e0Pol8V1B}=&*cU)85790
z{8CGe))sq|AE?@)enUK5SUIA%uYm2ul94f6mR{=7hm<Xc8rf-{gV?bOAXJ<wa@q#f
zXaU{sgHjjeB|g%YO6}u2)Y(CfGCw+;dA^l`#qvi<<Hjz?o+7`KS6D1Y90V)!1s$Eq
zwcL)xHR@aC2dUFjEaY=?6$TKeJ~4za!zigUFI7Np92%eelP}_}NIWVT(GO+K&^|W~
zj&oi7fhS~L6<h5CIyE(%x~<U#`E0QsdzFcLMt9ivXxNNL#q81`w#L+>lZ<HpjNfmS
z^^5YP2dgJWN9DcIVy0R(VIRe9PHAmVHgRz}ZKJ-?Gor~g=F%+_fHwq>RV}akSpA5+
z`L*5*>$FWm->0ZF|Bc>xq1C?vx2!wmFQxRnayW-tuo!Grv?wnVx}Yx;`(ktOh4FNc
z2vd*rd-&IeW<tp=BOg&qS>Qh{#lbq7D7X->1|X732%aw!{R1LGiF35#ebrHoOG<L;
zX_Bs<ay13m6>K|`_KduTICs)s{qVQ|VG5=CqHdw*w|j*&q6W)*o7^0Pdrs9`(rr~^
zmA;tgP3*tkZ~B_DP`MB3t#+{LeSf|@s?IAi$Y-6vtzC5Dgte+`q$R3_^^a_EUv~ZY
z;}z)8`-JfH2APLh?|~z_2(;gh)6#0oXlI#Ug!6Ta4gNE5agB;b%A%6yu#Q%UJ7f@k
z-Yb_sc<0xwc&w(F3ua7o0B7_v3t6AiykSd`0WZT-|Fj(UWkX13`pd}twfCA&Ui>R@
ze26mo;PJ70SC<=&ZSp~#+b0T{yoks>k#`(TJ`C)6#z^<*WcZ7B=blV9kJ0`GN0mXe
z^H!s)Gwreq$ehxKPFc&wLFNrChtW_CIkY!XITjI3V6y5VDU5qC02qZjlGeHhy4_|k
z3573j;5a24Ub?P_cZ*k?Qj)ndS>$6C=5t9|IY!jMNH|hUi}s6QMKR&{PfH`uGc?I2
zb}Efcq({4S$76tLzCCNOiqc8hou|2`$6etQZ_-@wun$5x&yZ{I6*cLhe97*^ITo>c
zSpiElWY)*y*)Mpx&*+T8E#D72z)8`B73!kqtvq`bufqaX8<Wh2*1ALw44NtSw%h`0
zR(WkEPNNTn1@K}I3sbOQk;B4|O0^=Y(w8X4Xh(x7+Bwyo@tzRr(IOcS;yI03T~*kx
zQOzr+*!1f}L&~uyfA<4Jti+DJ%as?xote&li)i42l31(eb^BRK9t@Yc7_J%E32~*H
zVUX!uYFT_}=ly58cj0k(%HOE3M_y_}Cx=_O?ThGCG>f~`1B?P#7@2tZI{5f=LPjQ$
z8Ja@m>QsT+AS(#NSB!%_Cj^%=9~w;M&@iHzWDz*c4^X+}MS3;C@8C(Ef5l4jkY8z7
zF;+PhZfR$!Yhg)utjA|+LSt$uxV!1lTVF!B(nSYbrCXrH$o5FG447BpX}rbw;=CB!
zjm(X;jEsKdsNreA6X1AmU1yb-dx_bYhL9=MxL1$i-v7nP2jcdP3JJ=AohS?`>6ve&
zGNW*=*zx4^$`6+WwY#zPxo4>F64NhD|6Bs<aOCOZ7H$pV^pC6$zYLe-K;X;i$pjg#
z?|z8a5BG-EFGi-=Pkb3aDm6@so|*J-0R|c-@$>E9i$kL@9-pUR6QAYL=1KF<J^fu|
z4Tllqau`y)Qn!gv<#OyYpo`0E5CD`^JIl=BA+x{|xQj#_m5-9wAl?q0Eb1IiRCsdI
zUDarF`kQiDo+fac__(wUu}`1;9z{9}WP&^DqXL@`mS&5AQy|>V5zIUXLscIOKYd2P
znj>eJ7unJ|oo!BJ{{_3Sf@A`_F5_hr<!@tR)#i10w2VwVp+=yz5#dOL=`7@yYbvl<
zInkuM%1x7W0(1k%lj0Rd3tj_Iuq1uyIBe=~7VUfmnk1;>34>+m6-r~y=b4XggI`A3
z1{{p#Wl-3+l~tP;dYO2O$ou<e@Fz6Z1|V2bL@T`*$~#MKKqg>Lr&tLr**$*_oNJHl
zyx5{QY1tg$;fuTq4By1u=|uPcimInXgqyefjfGsO*aNM@{%*1FU@#Wg>%=gF-Y*Yx
z*(vo)7_s9NSB%Ppb?07pkv^=7D4TCi%Cp`FXe=L5PFBEuN;i5Np$$r+gD&J>FbiOW
zS+`*hV>(st%xt!6a^Q$m`|3lR`maf~DAWZ0o|qn>M0Rgj>g_1f?^X_Nh31o~<jA(C
zW>h2Y>k-$xM%LLLOW98Z1HZZImQEX{4gyY6ja$&ln1Rg|&5;mic8`+i*->~ps&|{Z
zGcKTDXt{-k>Fa67M1rX@D^#fxDNj)#E&BSS7D7PI$0iI8(2pov_6SKs;;+>a=|nIT
z+u60-+ikRLw#HQqQocv)EdO<&WY(CPI9tsFV*mu`MZ(OXG=R+TZf5{)ZGWPBN1f#t
zouo|CVdj&OF>GF-l?}ye6|C^SJUs<v#|2M-d3=23)~QlaMCt;-+S)FWioB3RYi2Z0
z)E@n08<<}Z-^WJx9e5qNjVCj)u5<){s{IjVGc&D?ryS7CXp=E;8qCZJ=t&&_h@uRM
zf8;xLRw9o*j#(6DR+_N(Xlf8;56y+p&IZZ$U@@D#AoX%m{Cdy0Ttym2T}0Vl#DJi(
zi`dkv>$y(ikL0nPdD9XmFKF(NL3B~t2mUq8!f4o3ijWPglnT<pLNODBL}y~#4+15h
zfOV#hs^N6HV-rvgWbH~xJxaUvP{ozog_)82o{m>Zp{qN}d}T8my3a^4jA4|anW(r3
zqkH9Rit$Q9euDv{NgGQufJ7!qrP_Qb=pCuV>B0DbC)<sy&(AEn;r*NcOy3&npgqn8
zwt3K%Qmwb1B(%(~2qN9U$StnO!!lC~Y1$wYgRwe9tMTWxWv=4DUAQp@SBz;aaL(|W
zn9`?vG6G}v?~Tck`C=ViSXlvlKv_)|rs?@{4Vh%}F!4eFIS~n`@`Rhs<zZO@`mQ$<
z`}x^ng@6T_UR9XAYsVWInd$>mzoJTmjO+reF41eE{BYRHCFtA9ZpcPSKIDd7TFjQv
z;$}g359u|JOVCzuvY@;QM}m9Y+3)#byRJ{jImRo<GD#UKu`qfFjQpo4GBhM!uNXsc
zKvAmVKEXodd|Zc*WHW|Q{S_YxWu#hjd{aqd5VhMvI#ipX<f655Y$VwM1m~`pV0awY
zRt1A{G2Fv!57-5iFS@TEW$KTgINbf`*MYLR%Kix3tU3WJ3J~aAbfQQ<W6AppT*&N_
z<1xL^3liMN;ZLBp9cLDmVEPL?MGhg#qQ>r6Pj&JgzZ!n*$JJ%Py4^1gn=Zn-_+LBx
zV#k^Z%q$mKWHf#CI<qsE@e?sWHvBCgg-nQ?*D95@ffXvQb55!8yq$}WdhmxMB)Yh;
zW%ws=;qhtkHW9>*@aPTo0aYm_?P{e^lE{Druh_Lq;sUf5+8hy#o|07m`k?)URdUJi
zAO+=iw|JzrzR1so9$$)a?r?KiU2TkQ4IZ6f?r7@}8126AV#nNS>Sstwtw^^Lv#Oda
z%eAYld^hM|Is#@yBP^QU;;?Tc1Ek<B;#*PG)0Bh4f+<@oXNjNaaCD8Y^7_!Y>@9V$
zT9BzIJ-pmA?m%%CpM+^ej8Z*=tjnkXQxJ4^3reU(4n#m>y%UlCBGI#_@Dl)E-+{~p
zQ4$pm@R??<&IyDP7NeBGPzhp*9S|@@E(ojPwA?La?lww1>lI*N-t}qEHjg$1#%%!F
zl^(0jVWxl76Pu|QR|OTktAUzJHf@qvU@3^<N2l6>+d@gc{pcEO82|d9@Cux>Te(tq
zgY=haY8$er5<P@UU=&@huEbGjfxjY??_0!-?3n1038}|QT4ea60Kzm2sSPf2DF|cq
z!a)CA0})hoNL?Un)#cXsYev6=Rmjwt%K=4&>}9e=w>vfO&=Yvd(|rkjHCY+OmzTX)
z`CS?^0YWaKKoVGoUU>{YwZsagLko&)y`Yb97lBJ}!K^jHmX4+Bgo%8o{00z|UFtft
zJZMXU?E%k!L@`A*AM;ZktKjT!d<9uZI%%Q)M4<qq`K>H(YuPBgGN^#5=))bs9Fs;M
z{)9M`NhWJw23Gsh4^H6C(>y_kWe#G^@ncCKNK`Xso)+1Sfl$S<HH)~vj!%XyV-yu|
zQ0D3y-EFQ5EPF?5x9)QF5OnL;gl~l~0pZ9GkztfFt^>84H=i;vD)5<Etz3=?5e(!%
z9!LkDfk9TwAfZ@bjrk~~<6|v_@?S~4^o`)H(-EP)OETw0j1NRA)Vax8BIJ&ZpZlYC
zfI?$6dro!L@}S7}%TlQyHI15bvD>Cp+&w33H5Wl&!}j9mXz&~*16<M%?n>^79jfYh
z7O}$Xd&&v7B}y^C5%%S)xD>C0{iQk`yL#+VHc6xbzES>bn1F!9;%k2@1HhhKL31Dc
z32i#)8J2JY*Ku{A*oHQXrCej>9-%y6i@&Br>FWvHi^|LtnVkeTd>mPBg&;KyhVoLO
zCF=3}c)=Rfa_fOo%VFCmiy3%+2qU7fEB!4ri=!&SXMmxkKzJt0?bPYC?>zPJVO!74
z_I7nbxkYazBMF(L5ZCb)tu1uTPxhKS6D0`donaE>>4NitTl=C?R!aUNfk=^HGf*4}
z#{OR1fol7EJ(wJCZQ9vpq9QgRJ3dg-S960TssyUXmTFYK{Rr0$=A(QvBt5-3W#Dn|
zZjgxP+!n)y#CAW!l|$D$o_NHrqSsU+a)2R~EUA>BF`UT9ZtZJKhVaikm<5~|Fq8%x
zyOGPnRJ(kU9{T`Pj+a^_`N00dTt0G74Mu87%joKG@37Qrh$kpe=eTf!Cv#8ROxbGW
z_dC=%a0aLepC6!ZJ@3l8vQ@|ovVAu*y?){fZ>|2xI$<H<rKZ@w$fc6ZSjyDgPDX^$
z_GI)|KvBS189q|k8FLw}y(h6lRP-J3_DhyNE|z|6T`^tY+7T3lWo)xz8HMbxM^WYX
z=oV@O6*=3oL2<(p9(+Yy&MlI}!GjV|z)!!x_Dc)nWSjPu(gk*i0q352R9~c$Lqx>-
zD;Jf0kah11qmCu{FTix}+YAZS8)jig-q(otvgPe0v_Irn^IA>%4P>Ty3yV(nFxRf-
z;uHFpBkr4#w`TxX0c8_I>Wb~ER$FuI1}S$-DAUnO#cV1hxwG&E|CT(#>m-XNY6u={
zquY;N$R^n#<5z^^{E=R0ANF&vNR-n0Jp)fpBp63V*_HvYp>JoeAnPG%h{GeJ$nwO2
z7)$^QPE1!qakSP=+ieQ_7d9*cD*uuESPeS~=?$F;l&WZg!|jB)t~rx+d>)2z*#*r{
z3pe$`*FWR%MED2JEm+}&L?wWT+C(yCaJDV6mt;>B!o2T2_HUGERbZV|MI!pe(0bfD
z%kuyiber<|BlVJ4283e^D6onm#QvwQo1Mbg2>1(2N^pH4Lqh;(IIZx&`_vzrHyaf4
zy$M<q`v%Yq!$r~MT^x-*8HC_R8TTJtwjGKlw&BNY?exiG$<)3RCVxHboJwn7>M)&9
zqsvnmiNoWMFq1`@wP6oU#Y|ZQ*Iib|t%dyB;@x5_(Zc0u?P&(|H@EAfa}Mv^qi%DO
zi9&br4apr2K?a|1PU+{LImut&OxgoIZoLH<3LQ$Lg>}i<5j0p(1B}pfBKHuV<Jtk1
zM+EQ$dg$DC9a!Fc&t8T&sL+V+E5go^G%@;6TSdFpw3epDvNOvsT07HHsXCulU1Qw8
z6t<)-_|6+5o`ySkt@CDsq+46Iz@4*ceaRX0*YimXkx!=WHH)|s^_<~F9B(V@jZ(cC
ze~mh%bTGQ!XVH4XvC>WFzx*BY6MhoswxhPj<CEWz64kcHd^yvAJuC5vJVE4Bk~58^
zC5@dq3FIumCdd=c+V_?wk+e1!T=PvWy#(C?0qQx%T(X7iQpc?ES$#R^@QIN{W(4PM
z$3WI}E>6YGWSuU(3p8xxaD9(kSDWNa#-AD@QUl6y>(0$ZZ1N9>1>80|Qo31Y8ukE(
zz36g#pxwTCked{m?Z6kr`QR#gt>!8<L-7&AeX&Po97!sTduR~KWX1;sy0+oU?vfNX
z9?&|2(F-UINi2!E-N=__JlC%hhqPzsQSR0U&Y4?3{eX8h`;$9s1Y3=IYYaEk+_EY&
z9w2^*f-IxR<Du50K*%N_KRkV~x1AuKk8F*bPh^~k*}-x45W_)S*B$aS!0`gEd(ded
zCjreSJ3BYY+bYfT2we=fv3hJ=5&ow^ncgQSjaT#!6ml(^21ZSA)LbdeDq><Vk3UBD
zO!qa>YS-R`N``JIQl)|^tUUUKP61=5Vrva_gt2PgI;VNCbKpvmLpy34oUK00u=f2S
zg?NU*<t<q(!Dn6W$$3XPmr@I3bJ8JpZK8JDVmnIkp=a|l2`e^`;i^-;W7msmpY-D9
zpew@;l9L)VQJ=*A_RNn-EXerN)JDXgCQVeQq{%-`*>Bq;H4}*u@`gI0ko^%y3Mq@>
z4qw@T@8-O_i9V?VOQ2~?l|}ffvuFKGgKDaMJkkhi=zNDOL^!=N3#Ky=T{;mgkRRuU
zw+bq#rV%=frxVY(s*dNRt%tl{hf!F@#W|oTkPNHi!<?_1tYBK68`PF+0?J|7#U!uT
z$d^kD5=zxOt(?Fsi;P(U$}aEo;$0c?*qa88<Y0X}KLKT`*69WQte}z>vv1OX7@QEU
zt<B(p5S%?(#9e<v$)<DtfF4LT6Ael22p~(uv9fWYEvN-6E{K>;TF~e75;ymCl8Yo+
z`ie1H_0yuK#-|nY!6Hg10C*#sH&x(aJv-m_0T7RaoQ0jxdpt)zeCkuNU}F}$amXSA
z3t6B?XRkQek^E094u=;kOXX4OC%|ZGJ39vtxAnEmbayVajtLSg-pRCW92DDFj-`5M
zqIn=*Xi1rAsbM9efs}=XeIMlrdoa}FRJC2e$$bBHJ2Y&D4OdKP%EQti9M-2O9{yHL
z{@j)<Htp`6@JV56*qjuvRQNEhIACW@SE0Ao!JJ!HqHW(pY3~QVCUphmc<u7LHL}&w
z+{_$fUxPM%eGla@-S5SGlyN->qdCp&S#2yq8qjLAR`6uYGOo1fSElARajz?gjYF}{
z3xd3+u$wxqJjTm*)^?Em$4A7fDog){=Nz`%jPyZd%^GqgRKLWTO0@UJrZzno<GHYW
z&Q)5W^Z=3r`&|Vr5!PB~iy@)D^8{>e4YEG0HAs1ou`wURM}cGwj&R|MUqR*0fqSYm
zx!W@Nq{WoO<}|>7y7H4UNVK}Z=($NCP;5quOxIy5<Lo~gx~F9ow}d6oMzxuwQO6>D
z^dVvQUY0B1ttiDus5j2E0teQjVXEEA;9~g#w6Z}ou%<XdDwlrc6SuLco&!^jL+_5L
zVeVX-iS>>f8}+n5fypMrgeg_~RT-D`>z=i-S0&d~LTYm)0E4#?Q5q&7vY@~g$}N9?
z71qaqe^ouGmkTWo))pz3No&+FRY<DnrA5%sf3@dNF4TMp>}4EVv-Ba3ZkNjop((51
zak-d9JaQC~5X7{8vg`B77%?iBvz*PbtV(@Uz1k;c7Y>)s4qJOBxi~CBUP<Gyods3^
zB_z6j1lXFQ>5!SC#f&N8qp?`kVgh+_=5{A^Xe6bjbp6$DfEJv3SQ>-j5{fmF^JeN8
z&T{vlQZ1MkqR>_4Q>(Jj4Y&~!?<{b#93d%1H;Bzqi?A4_eBdFUFiS5yD6#?}rNFnx
z-IoT0fRc(^1&|&hALJWrAXSU0*Q%FpzjlS4!6c8Ht?nXam}>kOK~JkmN)uTr4Uk3I
zDJOq8<x<v+4~J3KoC|)sxG20%l5Yflx>#4Pgxsi{rjM(~Y6^!b!bNd%@Sbi9gHVWQ
zWN;`&M{%k@!H<NH#2frE<!xfH@MU?_MT$u{<;aUNUUB;FtXt4=8eq^uCAjdz4!`h^
z%xZRRGYfn$i^_~G^i6a0i|H(kM4TrY?o9ZjKU1yZpocB%VOwR~i(!!3q=;@p$=Hcz
zf6%&(M7)!cx1<FupGa&G?8LeFs|+k<;KymL+X8(yaILK@bA!%ahRsV!K4l<{g>XE1
zF?pUBIe<eu(L#U38JAFYE3cizk}JsGNS}m1{m*aL_>FCe#@wWg>nK(G@i<}Vr}(-y
zcE7u7DtHrW-));FxU1AK4Tu@?Yn2Bi7HF+wP{|d&HU*Ol;t(W<I;D_i_%I~;vh-y(
ze(Kao)?6ZUmMZ-iq7n(+h@GO1EMC56LU?apM;#=*LOuLhduD*n3kCXi?9Y@BRtD$a
zEQqpdi_hnufT5ldBc?vle(#8Vy=Hl2ZYAcqw5?IGJJPSA@n6llMD8^%Xcs+I<`ePs
zboYM-Oe=6XnQ~^jh-GyLjXv%=%J=eT1F}8+bYy~QK>jjX1K3Lx9(;Jy2FPCH0ro<t
z@e<@K9G5I(096ks;K0B1xi6P*zuC@a>PF3q!*UJ5DvmZ@xc-Cy&4^r7Ag+_5p5|NX
z-=oE3*<yK`7yTgTbzqi7pvl&VDRaOE5eiM1R@g5@7LlUMP{KQ^N4)=OgEN&Ba}zNl
zSh9vKtlk;sjoN^AKt^!ZR9>UbO+e=%fc!3rAFUFbnM|mx`2_>SUK(hB?vsQU8x8Gr
zf*>hlnck1ZLSz@#d+p`?F{92w`k6!DB86+Hz9=HXEMybU7LjO<^+4bHaW^*R^6JBA
z0Jv&f@xx_iV&YKmn>}hhntQ?cOiWRk6I~PGh3-lfQZHi3bA}PF98;VYF`1Q9ofQvu
zJ6(Nzo-Hf`VnmASOXYXURfW1kqihncb)<v$%!|)e^`-Hn6}<%G!RbaLyQlT2g&k=L
z=TlPu!w?(zB@taZxQs;i6YCzQ`|#q;=@BB@S}V`r33g;u;Foj&yOKpgw0R!chBEMV
z0h-R2B>-X`_kjavsb8IfG8V>f$p{P8gA|s-_*jvP+J4#^{TagY`naFKS(?ZX&5VLL
z>Y-&mTq)l^B2QlYiD+tqRwRigrr#|dN|CTPvSxnLYQOE&z1OpuRBuct_b*Uo-X0@U
zHW{RByjz_wXXFdm%QP**qk}O5If=;wp>&#oKK-FRG?l+t;bUDiv^$?;Gld#(kpj6W
zQj;%0bw2qQlR}#w@Omqh=EeDWt;IbNvC$|kx3iN40^-A^I}(gAg~CE{)`zd)-V}2=
zicngw{2#XB>>x#F*=Kf1f}(v~?3Q_M?{E>l$%MQkj)XS5=QG?pEiXshOVloc&OUQ(
zzQ%<#ZxJu9ciFX`2T(@Fl<eoaXUa)nO>edb#!Zw>o`Fn#Y$UJwy*c?IHtYG_J+PzS
zGvY5?skB^>X)whMsL7qZxzpz}UQ2{BbJd$Tpp_TMRsKKx;Ww#Rzkj~|gzfw>&Dl8m
z1^eBQ@ZWoL7&e5dO1}GY3UGjc(Eg)k!P(rz#)SS~XU2azbIvv7?bg^(yAYS%2%YVW
zC|t22T_ToiGH7LS`fWq;Ey9zR74igTC4F#K_xynSS`9+cmTf`}wEWSR3*T5)xUBJ}
z|5l4D#t*3L#<ML)RPvGjc-edV!Y3##U%DKE!}~!*CBLfs;W!~odgCFGP<^q1|43iy
zApyt)OT7uI@1Tm?Y>0l^YKvG>5itzV_aR<#Sc^=QT1rVSK<rc3J*1M<w;dOaLTit(
zr$Ty$Iv%vPXi?SDiC~oFN!-R9-o*Z0DnG4|aL?wr%M0;0Jl?b0%rHk1#Voi70@5Wq
zR%yiq1kZ5s(NDhncgTL{EmEIikH}hiT6R;tgA4Ruv&dA<>c;viJKvR7YeD;JYxf9y
zWroTpoJwjfa34^8OZ=s?ht>{H!6~5XtH2`FWTpwRUzM997RdsS4u4#m7Ash_y~968
zGsi3Cis!6NYSr@~j0td@o*Pyzjht3`aAF78kFKL9O`F<Ix8a9()sC(|s4EvjBH44o
zX7=?FD)CmY%;sT-Q|m6Ip0T@^EU~;p0?aA%r0X#6L}()#Ft_&d5P{&0)n~v;Eu;pQ
zLn$wJ-AO4I;jX!Q3bDBN$6AOcU?ugYl^Z$`mEf=#^Pf&%p8o#f7ac<UgUA1T^1Rcx
z2g$D~G+Abo8FZjR-}P}mHAIll|Ht?4b_Qd?U1RX;wU46f{oR8VY1WK<GLk;~{qcMx
z@-N@VN1Hg>wXDCm$#d+WNM6Q1)WsbpDzmBs83l<$Ct4rW+-<}JX(C5Yx-|I5p9tLh
z2`bYxH(XAx{)TNl;DdY^cOS<oWOt<S@I16kx4dQGOUFqrZDmaZ@jF182Zv;@<)NYC
z;DwR5`aoMG%1~E_B#a9)qO|yptq3mT6Q&$0f}{}Ytkb(+EX>8F;_0$W%4>i$pXxE4
zD4q<pEK>mqMY?HZqXnFAn(7JMr>k|H7o-bE`K)IoZmYyF%s3#3;KyO=4c8w^T(vmd
z-P9y_U(oUrso@^wXA^CCz_qgkrg(>+ghs<*GLVn7+*Xf54Pc{ltf(duH3DCGrrn>D
zo}}qnkiFMIGZ=506kx<33yGA6dEuY}zI9+5a_n{uDu>?shCmk6CjS?r$>KPS1r~{y
z85ym!U9K6WE07Au$WRI%)umW<h~=fNcY;#cc5G)ChCOi<Lyx~I_RWTNC8OF)<zW0V
zT&M%et(M2F1?qTBFRSUAbcG}q=}v3DZTG#3!|Us1x1BPZzLRvSi~-erBXU`6t$yRC
zx5`Tf3#WvNguTF`o$Q=fkO1O=%W0Q%fQlx1`==QbgS~xjw<-J&Z66U8mN0u5S+9*b
z5uvm=1Tv|XpuRk;s)EX!>1S%MdFxZ*uu9w?<vRGwJ7~O_*{m>3VrA2~=1yYN>D?M>
zmD(d=0k(hpDyo9Hn44OWCs0L0wQ_6OYB&=EM_?E9tE<UbSfMnDs&4_AFRWG^=lWtG
zHg0G6>$HQg7$?M7JATG|vz}9LCAOJ~L!+6*nus`XuiNes3sUQv>E}51+>r^R=h(2z
z2b*3f^asd1cRv)k(_(0-C@7?-f38`vrexsXI;=hp+RKFuae)7o-VirL?=?yI8wCHR
zl(1s_GM-VX&BzXYYX4wx!B<?Z1gS{0fSw!&56_$w3?$7$LH*^3GVb{kMp-$(PO_#J
zqUZXrB(STqj`X0>Zh38;G|8&#BP(^GcU~B#NDnf0P5AQAwl7{;j=TVwwp(gMj^4Jd
zoYtC5%K)cz>uq#u&x*tNER@-SYO(pB5p-J^MWR3t>Tt+bl~LP7?k)iN0lh?$Bj(qX
z^2{6bI$s6YDkz^eJZzM6Q9Uo6a(^yNA@ai;2sWe=H=*XXFGdkj$#%f%JI21kR}-h1
zMQVMBaKUOZ(GS!|5;SO`#~hlpWA0#e-nBLw$z)_EWR)LkMXKk>oTSzzR@-HpYrLp}
zB^j3SNx*^JSidg4k_Gb>*f|fpod6m&Ppi1k#oPoL<2i|1p|ZjWYh6e+=7^?kWjc1r
zM_zUs$h?eJb=V%NKy|aK)1$MWtfCx8s#esCnS)~!+8o!r?Sl;JEFx6vL_{BukNf~{
z(=OLzc$eX)+(zPO_uO#7WdUWq+GxmG@L7bI9EaLKwp11>tJMmZS=BN2GuTUK*iMS5
zN;2-qt|^Q2JWi(-&KCE$!AY9)<<%Hk7FPF1<A~mA4*p@xq0}kk19}Z_XGGi%@GUrU
z8A%kG>nth#<6KB`M8X$Z@jB-{`v0-Cee@T@nt%ZTA%0iB|Ln$dGI4gcur+h~r>teF
zZhe<EBwvE+ub%0<A7@S0xpG8fswuQ95nO`VRN;-`VFdz;s<mCd;!+Xm!L$*);jLGf
zdmA_ILx=>~7In?~M9^k9Lv5~E;HGGQp}B1`heCHP4`>R6D#YN;-1pk`PrTb-9#Rl}
z05ys^<QM`y#!}_cPO4?HDbgBQjH0*cO{u`{`vJt@UAy%K5<D&!Dgzdgs8o`|^JBAa
z8_QT0&x0pm(&7=+Qh**Zet=E<?OvR+`@0PKuGu3Vja&OErRnH-Gioz10Y`$_>}YuO
zryd*B4Nsi5FKT}<TY~OY3;!%`-$hG_9<A>nugx@!t^w7KpE+}oG_t{87TxEVW7dVG
z*wcgRCq*UymZS8A^A_vP6)ib0jsb2(7}5}<5RhrzX+Q@rBb~yEz|RNW<8=Yik3LSF
zdy7a>@KCUW<JL(<P$W2hd{jkD{gvG!#s>{nOkj=dKVW$Z8aQULm>JjvKbJ}%mGM#S
z1Wy9GkNOFyu)fx7q+E(XKKlcJ^J~f{C32(;9L#@$_hvGaxicfrztdMaQtAP(;I-pK
zXuMf;g9=}OevwM}j5*r7T#IG+p!sc^JtURXt@woClWmfeGD#w>!9@M(bcRoc;D_Ec
z%i0ysgMgga;Dl>JTsI68LV%<g#BrIjs<@klzP(KC^cr97-XFem(H`T=0uB6BkjBf^
z_1@8zZLPxbs3E8fkui4`TVF=pU5+5#1P~zZRz?#9i5iIK5h5_-WOTXK+1QHSQbrQv
z{BW;I(Xt6x)_Mt^IDCr}6HGm?>=doZ2Ir>M!f$!&k2v2YhO?H)e0dp7pW%=OakFYz
z@f=ufodVo0l~0@2jpo@HPOJgsZ>J+FK-tx`I&>)<Y8zA~&`DP|PhHT--pp<8Xd{LB
zYX%d@eCyd7xaUu_!&esRwW({J_AY$w*36DXHT1<7bGzye^;2Ga4J$W40FD<)>isip
zPuBRT<@zZaPgIY-$Qh@>T3nm5>8H^58tdMes^IsP;CQyqG3HcIn(Jp+;BFa3h3>0A
z*mlT5u%f#}5p+2H)zm-<sVvh$JoAZ4!mZt&%@-$le-x)pkopz%0)iXg#aVxzvHc#P
z=xK9Z&JRWK7_&r@2k2tPcn6ho3sJP3kM<c4=(l=<x>S6=5wq+#%1LDd+!OV)lDPZj
zlx*}}AKa(QrZ2D^rV%l`f3Kor^Oq!2*zK|GJFEV=jDh*Ibni~hzTN+wYRB+Am--@@
z6a!a36s(GwoWn|Is=+W4paHSxF%4^`!7`GkfiBPFF7R;j0&Yq%K1gx=I;S}HyWPV5
z_t_T3&Y%YccDz3MGHrQ!)t~|>>)(CaxdgXV(c36ZxS=Wv>T%FN*gYJU2fOjT&TAaa
z<S>7tX-la*7me20d9CJcr(v(=adajMlGfN~MWazcoSfqAq9&YQf73JgIEdzmA=1}p
z9z8rDsR<WwZKI2|?Se2FLTuQDc=(QNzJKpJ{~fn6qu$F&p@D!>gunNt|G;f0XAf(W
zf9**1T5FEqJCe_p%$I-PlL-4#1g{EL3<~=nNvE336J`-1bewnvNkGiogAR>E7%{lR
zlJTt}GT7reycrSr+ZzFY{PG)J9gpHkZ+1KG+aDQFG_jMu-Y?Hzce_bf2f-4;$mPm(
z?-XfozuG^)`|t?p?{=w@TOdJZ-<hD%KZ__EQ}Tb}TN@MKrdU!dxwoil5W~2S<BNq4
zcV0BogCtptB3I^d0RD*0-8`?;4;Z6TS$4#Lyr_b=i4=iX5tuMRgaannXW0H0@G2JY
zmeH)60%AQ7#3*XwQo<-349U%C1tn390cvNvWSGoM*wOWr>U>yx#iWlNq|NO<5-Q}X
zj2u@Ej)z?kQ^5dt>Lo)Aj27Q<KC=U(m!My^%9{I|dxgV+l$y^^KS3rxDG55blc1(A
zZWJThn@33;?hg(D6Tj(UZyy8VLZU=pfegDM-FL?B2bK<q!tgXji6qchA`g-fVa3e_
zADT=@7FSJ7S;s^C1fP@1BfF^_KLo+IjGJk;2YN$g`g{I1W!FiV#8Sb2?dIWXkCJ*4
z1n166YRSs5|D^od9KN@r>-%_4!5QyXG|X|esJSjaa)J}h488INb1Zj)yjF|@x)<*N
z%7f(8?Gp@kozcZ%o)#GB`9(b(?uz98h&d_-(=ov_|3!+V*>MKXvVgt-FVI4xWA-7M
z`G9ew^$WS1!^em5iXLRR;V(KlyQPLCqGc{fg7-sas!pbaMn_(fXco1m<XlT$63Mqg
zHS=u%e;dG8+A|S$M-i$V@>Nh^Kh&5bO^@Mc2Rna9sGmMiK%37doQ~#g`=F<}5BIz7
zot!QzzoBZ-xs?YL0cKC`MjSPa0Y1m~!}HdGW=^+l#%;(RVB$##OY&Z=pSlFR?fi9=
z=RvO%-_O?MZqRSIkpi~LxTE83Df}`bSZDkIyB0KH<sP{M&yWY<`)aE80|;qbishER
z6I*%A7lJ%oAA3jUEN+>TA94{pEhO|Cy<hPL_0oVPBsr3!kSQz!TY;R2Vjbrq;rY$}
zEY)Km1sR5e06UOTietM7SiQ~|M$unN5r3$%bGoRsrxJg^IB<1Z7kR*L;quNtrq?}P
zHbkg2ZVoKq9~XpjdO>PIr9+>~S|21x7*1~XK;EC|fCGCw<?mB*qkG|-<W%<=DA?D{
z*cd<-3VNZ0h@JznRu{ol_-c;<875q2z2lz{6g3Y3X{`QX<!-tg-vOo+EMUG*$pW-a
zO)Ehj{rqXG^xQ(4f)8(Vxa^@^&y+3GVbtHOw_^nKQ0@np<69UDyg!Wils2>|!X@#w
zJKSwJS6gYA>S}EIr!H*;<VLDnz$L-{)A3x_jjsNT95@&+$901=r#gSG#H7*oM>Rxw
z1{jU_g8fj*WGQa`vP&I;u{;P^WC)QR$TY*gED&}`JG8*ZNE?nZ$1S;jO-qlXW!Co<
zj^I0$Es%wg450o)h(6Z?J292-XZ+%>bp(M;FjQB+)qPn31MwlzO)#3w-jN`P<U%fx
z#sAdni)9Bk$Gjy6f*0Nd%lX{jfM>$>K&f6{*XL}I+XN$I<5kb$@<8#khY7`riD$oj
z&HldnpQ^=zC6BRE-G-1Q{w5<Ce!)r{BMOEFj!sek_=^57NrT}GAQrf9h1Uc(_F?;d
z*=|Fpz=QdJG?(x7{ZGFqX6V%S^LB9JdG1@H7eOJT9h&m|m<4L#78f`YF9#x-%nk(o
zP}=U>$(_U_5C@w7Dn6gx-X<7A@;xR4ho*S(pEwjj!YWhPfgol4%jLNLr_0Ih(CYtu
z`7{g2)&E2niQM$x#La+q=yroFzQdvZ|LJmIry1;%=*W^1MGR@qCUc1`Yb<ba4B<~;
zY0#^EP1ETU(l)!$d$0-`V?wUkK+9d6!cLF+$PH%kfY{tT6<n(J*^i(mXUk})x|eXd
zfH(Q2O|LniIn7Wi7xy~|&#2Q2q1IxEwJCwAT?<%R?zL0XmSl)Zk=B+nYvA7SrfDSQ
z#)sp9)+tDG!*V6gs4qLMyj`>7aM*Iry_<!X6=z*duxQy5|CUxbr~cO1=~jp=Yizz4
z=i+tem^UT<^$X{xlx4KC^ArHMz+Osn0$#o6hVT>axE!%Lj@RFe=KA5Xg|lO6>j$n^
z^5MwzdiLoi6QTGoH7tmy<(cL8E~^de5Cle}hDN%3{k5YWh)jIH0}5~5&G)91n(NJ9
z%pft3K+4uz8H%N9jnL<a38tGpCMuX9A9$V^uTt;OSvRBaBgQxO5jWaeg2#%?d<_#u
zL##pTIs@e3+kG}=b?}<#jG;2Bq5MI};8%Z5aKFeH3}6~u<f9K-8SE&GcwksWDwThh
z^mp*}W!#pGFamEcwlW?5#MyatYn4`IqNac0ek!8N^<`$x5d<2F2BmHBdrU1=mTz<6
z9yS<5z4BLLT5j3Wgt^$tk)j5!49RvrB0P0sS>tx*=keM#X1_~}LO#YBLp#R&+*nT>
zQHMX(Rh4i=f^6IaR3U!vf#u>@m$bGJ#k@w8+0GX>3?q`0L)!N++V`X9)DxlZ>6*`H
z$-(5x9X^=nj?0G98!M|7f-mTeHP(eHoa1-dW002;1j>>b7oMRS0k)+f;%gsgMu0_X
z^9+O?Pg**|g+-_p1*etXY+*!HDX1I^xYj6FV!E~veblG{ODUFD5%bZBHAex~7(lbP
zt|hQIaLKJE_sgSBl6c|c8#_UUUGFbKqf3^Xbbz06z!>0eRCb+*hUVQ0S-d>TU4kRE
z>aDwcq0kGb0%Qow`zJSDVhs-m-8LrWsvz@F!c{a-`cEp?->lF@-e#I(3JDNfizxDQ
zE(c5L(^eb>nAEFjlC%V}tu3k1W*E#Q3ohst*<e%Wpl75|Hm`=D6Q8doiVb&bz~{T{
z^3j;GljS8Bznx7hxWyn3uKRT@xSo~w+kK$0cbrnB#TnB4dDbf)N|Ho(ulIGH+@Ac~
z_`Fi}l~I$sJ_-IOppxKlJ^K3oNByV}5D@l%1u8WQXLC_gQxhZSf3a1+mW@+}7}Dov
z+9zblRg7+?dU%l(Ma|wIvt+vF<ozAA96GB#YAo8(lA9f(98}OUt8qGg<F;+KkI!Sp
z`sd@@6Qwi0Njf+{w>bgBXeq9y_?@s*uX*dTYD%|FE;(`;BRArp*C#&h?QKo(*NYAN
z)NQeXDFRej-3#3f`X%{P!i#yL2M$*FxhSf8>F7Myuboo!g2l7$g#0Y2j~QnktUWu)
zGM+ROKUb<<@wk@Y<`ODdGA4+M1}Ty_GkRrD{s@uRYS~EvPvTpBv>?Gxu-YMvLd*vH
zCJP>VRIWOh6I!Qyg`52KIJOFo04rBrDm$DJ4)Ok<0O4uDffaIzM^hd(?9^r|6;B?M
zek0W6GuM%Q6VR!2neZMJfGbi&M|Vgw$>jA!5haW7^v#BN1DyjCpNR}IGHvgvz|S3|
zx_Qzcg4P2(Q>-dSLcI4QSNw_%vK3sC)AFmb@A@VuwZ`Ubo!z75>B%)<EK+VQ$l=ae
z!x>xaLjbgLB$icKT`n$?jV1xK&fBVeP3u0MIfA*r7B@A|LHt!JnP!u=bWHR>PwU{w
z)ngbfPPQtfgz;@Hs2ZPiu>CVB8Ey`)-WiaO3x&}v#+18WNN<$A!PI+oc4NXwZ{}#v
zgc=2AV{UZTxVhj5QxRn04PzB$Y4Bjc&NVFc&~kBS@}pj{pG=_`uoxv61io!A=@0;L
zI<02AO;p4bCKx`5PI^}96xco4?XfO)rq5)_UtjNkt@ek7@`@WBI_--wnBhcIUkEzA
zm}a!W-D|>tUL!YwL_i93djx|UdvtN`azY{yzi5dlRt2|Lj3{xaob?<Oz7hn?9~#-G
zm9>;vfevb&d9UbqO@1N&eU0?{v%G{+_es3XGNT5YfRj{F0LiNMN3zpWF0+d>uGUkW
zB$CUGCBDc>oJ9QFP|W)_K)(%;&6a%Rtx3FS`#<YD(4<wK=vn#f62U$g`$R0|2t^t9
z1+95h9D1UFOQkq#+>MP>%WUGY1J|TEWl=64J`K7%<r8MTQ1PN7xIYsk1bN0JwLme0
zIs&{pzlx^_CJ8Kn%!Uz4)W~13*&3Rv|K?uriv@SeWO2W2h$Pm0MLH&jUth;=<Z4e<
z`@&qZw}6T>Z#Z)EI?U|eyME(cb^x4@eQkzbed;V(CTd?~a=SIgr^ag!8$d^xBU&4i
z&n&0~!XNO*bw(O5&lK5BGZ$2Vv8Nuk6Pogy=Pc;FU$_QQKV+#ri@XCqiyU~B_zs6o
zo@>(%VLI3BB@S4PmM#lnR9ZJfOyHeo`=WGu&;v|C+QKTme@Komqj?KtPjXKMcCAx-
zjK&Q75yzrDx5q@KVQZy5&zU#3>#YvM%fVhu^k4XGg(YA;+mZC!|C2m<4KB9uLZhxO
zb4rT`h&IeQ<kPDB_LBL&KKQPLlAY08Ctfl%#C22g8}Ep-WxD>syS;C`JNpOkDr14?
z;|VUz@YhgI2tP7NKqF<x8Y2x><I+3^O-*6@t$;xvWP4xA3q9AIa#z^D83u^;?H|g^
z(xk8RN$_J;-y+p-aE^Y&RN+iALT$5C^*@*N)1Ub-C|1Jn;T8xd{>^G^?CNrr@$A4*
zDfXZ9O#&+4^z)5;)jBs>KUba<Mo;){Aqnk3V7LWjZ^{2*NU`ttXn*q^_WysrllphQ
z1N_5x(Es8))ere^aQaVGB@$&X2{Qc}Q02bbZ*uD;%QU8}W@zCQ`v>j*U&%D-n@p`e
ztN-2a9ZC-)#!u&eJO!O6{pSO?ScMvR#Q!13kbjZm%j`Gy2{iAw2;lys8zB0hVERCD
zWgELQoZ&Zc2r*XruQ;6afT;Y7cSG{`qgikNof{MW#f|e&3*S-u=Ena!5WW59vfoqH
zzJ(*KAeKx0Px=2I>@ZnG^pbyth5gv8(Oxgno7ZJF9&FwV;-C_OX}g|GLb<!QTdO6R
zD(Z3Ma*c==SQ-{9jP^v3^`=7+5#hq{$wT^^?*ddXDgTY{0D(|Pbtnm7ZohQ72qu7J
zj0lS6cP4OB8Ovf|Ptve6o4|PQiowKO<8S}ryL=JP<}ys+-e7hHB;}}w;|b46Nc7zj
zr5ntztww=?Edy_8hjDNdb=t+2Ab*L}l6gXd9Eyn|<_e*Y9oKTmj(#?^0cB+(pux8K
z%zOQuGXzs10~gfppk;C1vO>{hP#tl-U4f+;cHLyPf{xG=n!V?9aSP&gRq=#cf)vjJ
zxCyo?K%dreagkXEeDfmcn7n&q^OoIT?VXFy)@-d1AcdL_FsV{qM!0HzrgRrbHN_p|
z<E=cmD*DdsX)OA|Y#C_C6wE1Bv>*+ZJtb~pS8d_pX%%xtAm5g7pK5zGxcs#Bhb~wW
zm`%M=hIbkU1IMI#diVn__HUxIerEkiopc1S+{)hdai8B$1+uqN!Mgj2Gjn<6j#Fu@
zxn5;gDX>Ag;c4293B<>aP>%|-YE-1iyHT|!h@i#y3^g7nbil`gy4od}qzVE7^MAE-
z)o)GqZySY4r^G110ZKar=A=U;MyG^QQqltiq!dQ?U`UNdLP{hYkD`DAiV~ws7>#rZ
zqQE<S{XXhm-~Zsd{jhu6b)NTeZ=cV7TzQ@h>^vy#>2ujA3lLMrWCa{vhDS?8gbWX>
zoJphI^Ml@o5QVm=iCVN(8v)DFyZiP-JXnjZ6R8<V=!_&*RG;%)B=b7HvKg)9uH!#W
zRqjxxYOtck3(Hfo<FSqD;J8$;x|WwQ>OIJ3!`hHfl%ud;ohYF1>a8UgW?u7bS&fn^
zsZL^Ecw*GsWyl}g0^pH1r)TDosbSY_eWWU}hRBL#b51vvQ#Fb`^Vqy<Nbyz>Kab_o
zvyh$Q<MtC$o507Wy}Fl;A#OtPHGKXf7?$;7vM?i!)e+LJy(J$EyNIKqbhgN*O0h4C
z=hdaj11iQ!RLJuF>RQNObK~-%`!^}@k|osm{5Tz6k^w)Yt_yef@VaE};qg5+j@K^v
zuM7kJm&-Qja>L6oJZD*wCu{0R<x)2bvrm%ZhdZ(rrll0N=nG}>t1!&9N8uB48c#&7
z$f8PuJbj_kb62Y4-`=GwxO+E^mQ*F@fl(Fqu6UQp{BW#}KeOJL2AhL*+Q#{XD>JjC
z&1Bum3e;kS%#iMFk%HXI%!ABqtfZ+8sbx1Ed6Ddp_k;Du9*YAoV&>6O{wm;e&<I62
zWr$0<FK3DLx2Z=c19Hni!TlT}%3Dga@z?04&T@#CazL^<3!i)QYn8Fn74{6LLYo55
zU!i-G{<M3#N7PV{YT09GG_V<^D9Fq3X3$RtSHUvf_>sMmm*M4%;^XOp$6^648J+sX
z-G_YHBc`GE$l3M_rYknK-NzWxy67FyD$}78B+HG6sD;lK&4$=l*=lt467*1Mz=3RM
z-E{Z>Nydgp6LGlcZM~C6Oo`j8C2>imS@Y7Yb#-ctk7~P}TxWUC=-rVR$bzG%GLLGT
zD=&ts6`Eb{rZlK&Q;7ERUPBz*=pWzYvWg6<5s9F=L%N8&>*<3zM;)`rqJTL*b!N$K
zW3!>U<ZZ}@%zxTp|FFd7Ri5^Sn43->Gfng(r)r&qUe3IGxGqY*8o#z<r330=YlK~5
z64}0Y`GTCb&2sSpQUbu_deXbeIK5w&VTCnpa=xO=dFSIr<hPurDJ=?CMsKqhoHj)n
zvyEr}zJD?|xmM%wA|>niJw*Te{;_q3+x>R~;djo@2Ld^%JqxD0zLD$~*|{IRmbz_Q
ztoVxJd>u-#^A7zLlpSrQij8?g{_fhaXI8IW@@H(Oc*j)S&6~mAuAgbTg$f;_m`UvN
z!jm<s?UzivvT_UGlUDJ$$49V^g{nT>+tT9`KHJ{X%1SB9ziBGr)Pq3h`;etsufAcE
zT8~v*x)CT=HGBTtB!#)?tuGWF>YW1X+#YX<J6?br3+dNT`f(ax7shy#PAgM#E=`Mx
z@E_kMe%2i_o+L<myQFofJ>#<{?WF!{49^j6kjxE|Wh1UGW)mEfyCBciUy8vVRgvU1
zAwvO7W~GZJvHi=n!kybv-I&0rCzwczM1@2OQW>Dh6g%x*^dysMTVtgsIeW}exA}UT
zj9gFbY5x~T5ho9q$2p!qK8|+2r-y6XnYMry6L&W8*1dl#anVk>hxMv0LZ&3)c;-}0
zbib(Y6GeMZX_v;X{OthvP9a7mU`kzEU0G)Yu^vc_x)9r#(CQ{X77{OpE6PvRdI=;|
zL@S*fDX+-m|BL@yiU_i=>2Ss`-*J5O%z(G}Ay#6K7ojt>wsHBfh6hlv#4#{q_&(~8
z3$zglJuf2(&crHydK61zG~5n-UCx!fmV}$ymm*ITP*g7OQv)crJ_+)WLk9$%Y=Ts3
zY}?_L_WYl$8Nn)h5s%lXjx0nr+WBh|N~!Vfv8-d_vF8?Y<tHEZ8wxoP->6<S#InB2
z?kcf%bZX~)B8wIWgq1;%&;zH2eBK4$<S9K7ubG2P%Jt9Iaa(kfkOgKI^rP(B>P%*&
zfJr4S_1WoC)CWH|TDN%-w_-@vgyXx4aEG*l&nbw<g<7c=Ky~f-1}Ps|zx0}qdP|j7
z{)orY0=nGGyW_@A%0s6|P<o*Y)X(y=1wo2|AG_+AQ8{OeMPjWSRbNx#PCe&YrB?ML
z8$NX|zn8r?4%ju}X=BkPkZiF^Ti%B(y~n+nU{4yPO11yBEK+!?Rl#}~cwFP3Zx+o>
zTa7xf(LSkH63X2g71VvTxI{HhyE12S|AyyVmrXRPCGpN;aO>1Hn>_IAAnxQ>7bE^D
zLX!n^fpluN4m>e3^rrVOvt86H%#PAzD@Lj9ebZa>l1>g6rE+K&clw}8g;|;<_t+eb
zdZ5n2rthBaM5*@9a%AB$r-|vVeCV4?{Mu8gE<({Q=dDVd14PY)!Wp%P`%hw(OzB#N
zBN{`awrXQS6R(}d-QT!NR|&9zxw&3s&}mkFy$C?w-+TrYL{r?>XBt}r)Ph*+VuZMx
z6-qYA0;|=IIT2VlJBo&}#fncaCPDDh_?>e%e232hq438vfiJwQEcUX-TZE$!2n(Ls
z0EZ86_OWjC%faOb&7Q3E*>%_ETp9YZ=$#T+r15%ce_5JnL-7wG_`9nX{#(ZXEKOfK
z8-w49_o)VYI;~*3;4545!a<R4&^}=oUWAoqoLG!}-inl?OMsSn`sRu(M3Iqex@`EL
zjj#8nCLwGgcbF=}cNjFak-?fEYp5Ys7``o+ySJ`BM=Z`{V0BF!(wgGw86<h9_Ij#2
zh~(NKnNeJiM9<sHBw2c&zUVtHe6<R1v7y#}df%imFB6l9TJ!8p1DI;?wMEd(_^CD9
zO<Wb!9Y)3qY@(Pi)CGP*D5-#h1uCZ=OD>j5P7AKwr`+gEG)CvxV>xakcdx0z)?X=e
z9y&(c<?KT<VpE>Q*MX83MrT{^+ZMNyL)0}WI4t>wkH5xcY8pe2cI}g>+*5X|0I9mJ
zkKpldBn@uxd6RZ5%SKDBKHWP1Rgk4C1nX5(GD40ZI@CGGo@wZ|fBgUloRCt?n_3`w
zNlhg@yHpT=mH(C96Qlc8)II~FcJH@MR3CayKG}hl)=eroH&Mpw`8LF!VlPTF7bCvn
z+3SZJ1AvS3{QZMpQHCZ4htB-9ta;i$`K>r95mB?&Z}$>6A6FYYIKJ89M+>3Fq+8*2
z#^&k)-<qU*89*xFxS0c!biPLYO`}P}7wze<9lxBl3V8bP>*XMX+)%Sp&wHRv8#sdX
zsUp*r6=AUaR7P92d$ZT7@5al6k5-GXquI}RsbkWLADkV*jZx<;Vl5LF2CuR4mN8X`
zT%yXx?9T9Fzh>oz+-uAQn1{^2-kc^nBtwqM)h=Q$Xcdlnq>r$7G$Ng+>Sw{^xmaiE
z-AG)2inDZE5U@Iu$257%QjcRy8>t`<6B;p%_Fn3~w9kB9o5)r+{E2(<TOXi2ZIICM
z^Z2T~{Z5TZ)Cy*qa#tkrsaq?iE<SA3TFK-KLN|pqqZh~HO#e_<x1CR9Ln&ZIS}{hI
zqdkGti!AK+?DcA}UjT7bmWzfoa};{Ru4j!$MJWEEa@Er_zEA2Si~ZJW1~}gUow1$!
zQJlSp%~f}vsH)gMxLQH>36!gh7RXM>`0%=Mf_o#PN1~%W+(ha1%aHgs*HoR0@Hh7Y
z$mAA-@~=E?c|Ru>ypxd67ca&CqA3?*Jf}uHl_M)dYVA@fliqi$?@T98G5d%}g%Pqn
z4IMmj7?yG(Td|0Y<05D9rQW}rMrv|9NHFWrkgcHocnCI0+ugl&&JuJnz<#GTW^!+1
zDJOD0*}*`5yB0sh8&u|0Xb$ff&u146%%jKkNNiiBBun}WcGX5N5(V7Mw*SC{rGZHG
z_gt#t9N(*Kv+5l#+~Iq<9}7p*?q#8UX0Pf9U^tHGd7y6hJqo(K-U4xDE)~<P8<<Zw
zuJ_RFi+=+LwgOB0wpLLyt0;ly)8_Q63eq(%^v}k#tfLRYQXXk%_k1JiD-{E&^h3Gh
zHIkS?Nyk({LU}y;PEq(++~9>855O3ZCTz)Pr*DfI0P${$E%CZGYiQ>7JNl)|UCDg4
zn}{2LOI4DU$d>f8E1xFeNZMs6YRGoeRDOL|N=w9rx;~pGO2^68xn-G(?cAgO<(eLd
zuT<f8`z(pb+l&q2W*hY2PyI~#WAG*cYWnfzb~9_|QV*#pm@55|%l(VECFm=m@_g3F
z?k~j8E3`H)#zv=Y>{^W_0Q{OgMwZDeDI)8?HILIb0~v(A9j8Y6Kw5Xg+q6{=^r02=
z-sptQ;-nj0%T4S!OsjPXPoMzD5WGoS)eq{Cvt2_`;ta&87V|u>1xu<(UgU-BoWoJS
z$)3pE4?=X*k{KmC;wO<+4~XMed1SE28ZuwOFtkt8g2RDaD_3?^;^uSh;cwp!!URJ;
zQ&p#dzNrlxsTdm?BRV`^D&<&aQkvfC<QZG$)LM*;+7eg-I)V>Kwun?sN0yVWpAAo9
zQaqIDn|(@pspzBS4M0^%zXMS4l}%*<n@Db|V)qeC1dM45b~wxWEPdXvZJtLFA!Y$|
zlZ`*&uqg5bPc!o+nK^J4uzvq+-Q$etkU}|bW_&Yk@haNPBRa>!`q{vof`LQ(Y8jg-
z7Y3v`*Xpq{Pt#o?I;35WODjT|J%-gqQMOffsCT!hj8PDaKHOFEj-hNTzQCC&C2nsw
z=&^!qh+sQYW(e)pFSQ*UQ1#tM<o8NaF}InPHa3<Qa7ZN0GRg_~Lwh`o&3n9PGM1I<
zTlU>gkp3+`*XvtYdl*2_ucn$BY&POlSds<<p(i&>UB2wjR4bLjLXY;CsqVpBsPopX
z*JMm}F^WXImN-St7x0GguXaZA629gU0&SE){UjNqOgO8X?Qk?H7y2k!Hr7NX{#_Rq
zc>U;jEtfLgD5=OObI+Z>QPD2pZL*$Db#!LxL-Gc9eKF8M#D#ggtja9IB$wuVb$?dZ
zl?zO~b?%P(w}vK~)B)-{?0D0RM!c!b@psdc@21~QbW<QQ)=PZUM*V}!e&t+n;oY<C
zUz8lEkwvinC3srhCGQL2PLrZxpD59b`Xya?*KT(eR!i3zdua?_9+fQNbE+)>&DVXd
z`bQnx+?%oLjTQ|PRF7iP9tOWkgq^ze(!j^o#b&Reyf=gIe7VBd;9JKGm;g7*j;}ii
z$;i-H;v?|B`rWQN7BgTN!!j_n#2{KN(QYv*r#=?w1Mm?#{Isp1@qVzFA@)(XaH&8a
zZu_0A=CdGV9Y$O^do86%fwtFN?4br#2?+2p2?ykhu$?Hct(v+-rkoE03P;#3`NI6m
z<4zi>N-ES`V=#O-NbK8pPHR?E&Z&+t%sHP~>|c2QqMq`NZEG6$e0pfw(rG(}1`>gB
zy1HvD8r=vH#W_1gnD+xma`VvaHh@SUfaZb=IYTx6D4Y#q4budB(c>-OjYEa?F8Fh2
z5g8#u`e-+kHWs;p3QtZQDN$E-wqE6Pq|pH}z_D@HZ10G_Ul7bp?p1M(cnQ<(tJqam
zs!n-rdA`)~Iz;7@BXq^MFK(54z+TFxoasa73SQI(oJl`b1nEkU@H^F6I_Ep=cKokT
zbn3JS-v9Z#V)W1W>fe{Y=tt|q{v`NQtM*?c{-6VY%HNc034wnKc>WGt!H*972ps+&
zIZr|+LWRU%Tm$&7s2@zf>m?Gx38xi)!6OBK!U<;=2q_4=LVr=%i2bDay+@P~PT0Wp
z3;tR1Kk$Fsxd_38#mZk`ReX&0<Ldvn7mT2ENyzhO_U;!85mB%j5fNc7j}ZN5?&5cJ
zGwe6?e=-?_aKgCp7r_JVpBM2*6iJ9DbnbuQIrM(w30!?b210N17sChrpA3Kap1Lpq
TewpHvo%p9Zex-xWzQ6k)nNsCY

literal 0
HcmV?d00001

diff --git a/q65w/about.cpp b/q65w/about.cpp
new file mode 100644
index 000000000..c05b169e2
--- /dev/null
+++ b/q65w/about.cpp
@@ -0,0 +1,23 @@
+#include "about.h"
+#include "revision_utils.hpp"
+#include "ui_about.h"
+
+CAboutDlg::CAboutDlg(QWidget *parent) :
+  QDialog(parent),
+  ui(new Ui::CAboutDlg)
+{
+  ui->setupUi(this);
+  ui->labelTxt->setText("<html><h2>" + QString {"MAP65 v"
+                + QCoreApplication::applicationVersion ()
+                + " " + revision ()}.simplified () + "</h2><br />"
+    "MAP65 implements a wideband polarization-matching receiver <br />"
+    "for the JT65 protocol, with a matching transmitting facility. <br />"
+    "It is primarily intended for amateur radio EME communication. <br /><br />"
+    "Copyright 2001-2021 by Joe Taylor, K1JT.   Additional <br />"
+    "acknowledgments are contained in the source code.");
+}
+
+CAboutDlg::~CAboutDlg()
+{
+  delete ui;
+}
diff --git a/q65w/about.h b/q65w/about.h
new file mode 100644
index 000000000..a5206661a
--- /dev/null
+++ b/q65w/about.h
@@ -0,0 +1,23 @@
+#ifndef ABOUTDLG_H
+#define ABOUTDLG_H
+
+#include <QDialog>
+
+namespace Ui {
+    class CAboutDlg;
+}
+
+class CAboutDlg : public QDialog
+{
+    Q_OBJECT
+
+public:
+	explicit CAboutDlg(QWidget *parent = nullptr);
+  ~CAboutDlg();
+
+private:
+	Ui::CAboutDlg *ui;
+	QString m_Str;
+};
+
+#endif // ABOUTDLG_H
diff --git a/q65w/about.ui b/q65w/about.ui
new file mode 100644
index 000000000..fb20f48db
--- /dev/null
+++ b/q65w/about.ui
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>CAboutDlg</class>
+ <widget class="QDialog" name="CAboutDlg">
+  <property name="windowModality">
+   <enum>Qt::NonModal</enum>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>374</width>
+    <height>164</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>About MAP65</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <item>
+    <widget class="QLabel" name="labelTxt">
+     <property name="text">
+      <string/>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/q65w/afmhot.dat b/q65w/afmhot.dat
new file mode 100644
index 000000000..7599d4aa8
--- /dev/null
+++ b/q65w/afmhot.dat
@@ -0,0 +1,257 @@
+     0      0.0000    0.0000    0.0000
+     1	    0.0000    0.0000    0.0000
+     2	    0.0078    0.0000    0.0000
+     3	    0.0157    0.0000    0.0000
+     4	    0.0235    0.0000    0.0000
+     5	    0.0314    0.0000    0.0000
+     6	    0.0392    0.0000    0.0000
+     7	    0.0471    0.0000    0.0000
+     8	    0.0549    0.0000    0.0000
+     9	    0.0627    0.0000    0.0000
+    10	    0.0706    0.0000    0.0000
+    11	    0.0784    0.0000    0.0000
+    12	    0.0863    0.0000    0.0000
+    13	    0.0941    0.0000    0.0000
+    14	    0.1020    0.0000    0.0000
+    15	    0.1098    0.0000    0.0000
+    16	    0.1176    0.0000    0.0000
+    17	    0.1255    0.0000    0.0000
+    18	    0.1333    0.0000    0.0000
+    19	    0.1412    0.0000    0.0000
+    20	    0.1490    0.0000    0.0000
+    21	    0.1569    0.0000    0.0000
+    22	    0.1647    0.0000    0.0000
+    23	    0.1725    0.0000    0.0000
+    24	    0.1804    0.0000    0.0000
+    25	    0.1882    0.0000    0.0000
+    26	    0.1961    0.0000    0.0000
+    27	    0.2039    0.0000    0.0000
+    28	    0.2118    0.0000    0.0000
+    29	    0.2196    0.0000    0.0000
+    30	    0.2275    0.0000    0.0000
+    31	    0.2353    0.0000    0.0000
+    32	    0.2431    0.0000    0.0000
+    33	    0.2510    0.0000    0.0000
+    34	    0.2588    0.0000    0.0000
+    35	    0.2667    0.0000    0.0000
+    36	    0.2745    0.0000    0.0000
+    37	    0.2824    0.0000    0.0000
+    38	    0.2902    0.0000    0.0000
+    39	    0.2980    0.0000    0.0000
+    40	    0.3059    0.0000    0.0000
+    41	    0.3137    0.0000    0.0000
+    42	    0.3216    0.0000    0.0000
+    43	    0.3294    0.0000    0.0000
+    44	    0.3373    0.0000    0.0000
+    45	    0.3451    0.0000    0.0000
+    46	    0.3529    0.0000    0.0000
+    47	    0.3608    0.0000    0.0000
+    48	    0.3686    0.0000    0.0000
+    49	    0.3765    0.0000    0.0000
+    50	    0.3843    0.0000    0.0000
+    51	    0.3922    0.0000    0.0000
+    52	    0.4000    0.0000    0.0000
+    53	    0.4078    0.0000    0.0000
+    54	    0.4157    0.0000    0.0000
+    55	    0.4235    0.0000    0.0000
+    56	    0.4314    0.0000    0.0000
+    57	    0.4392    0.0000    0.0000
+    58	    0.4471    0.0000    0.0000
+    59	    0.4549    0.0000    0.0000
+    60	    0.4627    0.0000    0.0000
+    61	    0.4706    0.0000    0.0000
+    62	    0.4784    0.0000    0.0000
+    63	    0.4863    0.0000    0.0000
+    64	    0.4941    0.0000    0.0000
+    65	    0.5020    0.0000    0.0000
+    66	    0.5098    0.0098    0.0000
+    67	    0.5176    0.0176    0.0000
+    68	    0.5255    0.0255    0.0000
+    69	    0.5333    0.0333    0.0000
+    70	    0.5412    0.0412    0.0000
+    71	    0.5490    0.0490    0.0000
+    72	    0.5569    0.0569    0.0000
+    73	    0.5647    0.0647    0.0000
+    74	    0.5725    0.0725    0.0000
+    75	    0.5804    0.0804    0.0000
+    76	    0.5882    0.0882    0.0000
+    77	    0.5961    0.0961    0.0000
+    78	    0.6039    0.1039    0.0000
+    79	    0.6118    0.1118    0.0000
+    80	    0.6196    0.1196    0.0000
+    81	    0.6275    0.1275    0.0000
+    82	    0.6353    0.1353    0.0000
+    83	    0.6431    0.1431    0.0000
+    84	    0.6510    0.1510    0.0000
+    85	    0.6588    0.1588    0.0000
+    86	    0.6667    0.1667    0.0000
+    87	    0.6745    0.1745    0.0000
+    88	    0.6824    0.1824    0.0000
+    89	    0.6902    0.1902    0.0000
+    90	    0.6980    0.1980    0.0000
+    91	    0.7059    0.2059    0.0000
+    92	    0.7137    0.2137    0.0000
+    93	    0.7216    0.2216    0.0000
+    94	    0.7294    0.2294    0.0000
+    95	    0.7373    0.2373    0.0000
+    96	    0.7451    0.2451    0.0000
+    97	    0.7529    0.2529    0.0000
+    98	    0.7608    0.2608    0.0000
+    99	    0.7686    0.2686    0.0000
+   100	    0.7765    0.2765    0.0000
+   101	    0.7843    0.2843    0.0000
+   102	    0.7922    0.2922    0.0000
+   103	    0.8000    0.3000    0.0000
+   104	    0.8078    0.3078    0.0000
+   105	    0.8157    0.3157    0.0000
+   106	    0.8235    0.3235    0.0000
+   107	    0.8314    0.3314    0.0000
+   108	    0.8392    0.3392    0.0000
+   109	    0.8471    0.3471    0.0000
+   110	    0.8549    0.3549    0.0000
+   111	    0.8627    0.3627    0.0000
+   112	    0.8706    0.3706    0.0000
+   113	    0.8784    0.3784    0.0000
+   114	    0.8863    0.3863    0.0000
+   115	    0.8941    0.3941    0.0000
+   116	    0.9020    0.4020    0.0000
+   117	    0.9098    0.4098    0.0000
+   118	    0.9176    0.4176    0.0000
+   119	    0.9255    0.4255    0.0000
+   120	    0.9333    0.4333    0.0000
+   121	    0.9412    0.4412    0.0000
+   122	    0.9490    0.4490    0.0000
+   123	    0.9569    0.4569    0.0000
+   124	    0.9647    0.4647    0.0000
+   125	    0.9725    0.4725    0.0000
+   126	    0.9804    0.4804    0.0000
+   127	    0.9882    0.4882    0.0000
+   128	    0.9961    0.4961    0.0000
+   129	    1.0000    0.5039    0.0000
+   130	    1.0000    0.5118    0.0118
+   131	    1.0000    0.5196    0.0196
+   132	    1.0000    0.5275    0.0275
+   133	    1.0000    0.5353    0.0353
+   134	    1.0000    0.5431    0.0431
+   135	    1.0000    0.5510    0.0510
+   136	    1.0000    0.5588    0.0588
+   137	    1.0000    0.5667    0.0667
+   138	    1.0000    0.5745    0.0745
+   139	    1.0000    0.5824    0.0824
+   140	    1.0000    0.5902    0.0902
+   141	    1.0000    0.5980    0.0980
+   142	    1.0000    0.6059    0.1059
+   143	    1.0000    0.6137    0.1137
+   144	    1.0000    0.6216    0.1216
+   145	    1.0000    0.6294    0.1294
+   146	    1.0000    0.6373    0.1373
+   147	    1.0000    0.6451    0.1451
+   148	    1.0000    0.6529    0.1529
+   149	    1.0000    0.6608    0.1608
+   150	    1.0000    0.6686    0.1686
+   151	    1.0000    0.6765    0.1765
+   152	    1.0000    0.6843    0.1843
+   153	    1.0000    0.6922    0.1922
+   154	    1.0000    0.7000    0.2000
+   155	    1.0000    0.7078    0.2078
+   156	    1.0000    0.7157    0.2157
+   157	    1.0000    0.7235    0.2235
+   158	    1.0000    0.7314    0.2314
+   159	    1.0000    0.7392    0.2392
+   160	    1.0000    0.7471    0.2471
+   161	    1.0000    0.7549    0.2549
+   162	    1.0000    0.7627    0.2627
+   163	    1.0000    0.7706    0.2706
+   164	    1.0000    0.7784    0.2784
+   165	    1.0000    0.7863    0.2863
+   166	    1.0000    0.7941    0.2941
+   167	    1.0000    0.8020    0.3020
+   168	    1.0000    0.8098    0.3098
+   169	    1.0000    0.8176    0.3176
+   170	    1.0000    0.8255    0.3255
+   171	    1.0000    0.8333    0.3333
+   172	    1.0000    0.8412    0.3412
+   173	    1.0000    0.8490    0.3490
+   174	    1.0000    0.8569    0.3569
+   175	    1.0000    0.8647    0.3647
+   176	    1.0000    0.8725    0.3725
+   177	    1.0000    0.8804    0.3804
+   178	    1.0000    0.8882    0.3882
+   179	    1.0000    0.8961    0.3961
+   180	    1.0000    0.9039    0.4039
+   181	    1.0000    0.9118    0.4118
+   182	    1.0000    0.9196    0.4196
+   183	    1.0000    0.9275    0.4275
+   184	    1.0000    0.9353    0.4353
+   185	    1.0000    0.9431    0.4431
+   186	    1.0000    0.9510    0.4510
+   187	    1.0000    0.9588    0.4588
+   188	    1.0000    0.9667    0.4667
+   189	    1.0000    0.9745    0.4745
+   190	    1.0000    0.9824    0.4824
+   191	    1.0000    0.9902    0.4902
+   192	    1.0000    0.9980    0.4980
+   193	    1.0000    1.0000    0.5059
+   194	    1.0000    1.0000    0.5137
+   195	    1.0000    1.0000    0.5216
+   196	    1.0000    1.0000    0.5294
+   197	    1.0000    1.0000    0.5373
+   198	    1.0000    1.0000    0.5451
+   199	    1.0000    1.0000    0.5529
+   200	    1.0000    1.0000    0.5608
+   201	    1.0000    1.0000    0.5686
+   202	    1.0000    1.0000    0.5765
+   203	    1.0000    1.0000    0.5843
+   204	    1.0000    1.0000    0.5922
+   205	    1.0000    1.0000    0.6000
+   206	    1.0000    1.0000    0.6078
+   207	    1.0000    1.0000    0.6157
+   208	    1.0000    1.0000    0.6235
+   209	    1.0000    1.0000    0.6314
+   210	    1.0000    1.0000    0.6392
+   211	    1.0000    1.0000    0.6471
+   212	    1.0000    1.0000    0.6549
+   213	    1.0000    1.0000    0.6627
+   214	    1.0000    1.0000    0.6706
+   215	    1.0000    1.0000    0.6784
+   216	    1.0000    1.0000    0.6863
+   217	    1.0000    1.0000    0.6941
+   218	    1.0000    1.0000    0.7020
+   219	    1.0000    1.0000    0.7098
+   220	    1.0000    1.0000    0.7176
+   221	    1.0000    1.0000    0.7255
+   222	    1.0000    1.0000    0.7333
+   223	    1.0000    1.0000    0.7412
+   224	    1.0000    1.0000    0.7490
+   225	    1.0000    1.0000    0.7569
+   226	    1.0000    1.0000    0.7647
+   227	    1.0000    1.0000    0.7725
+   228	    1.0000    1.0000    0.7804
+   229	    1.0000    1.0000    0.7882
+   230	    1.0000    1.0000    0.7961
+   231	    1.0000    1.0000    0.8039
+   232	    1.0000    1.0000    0.8118
+   233	    1.0000    1.0000    0.8196
+   234	    1.0000    1.0000    0.8275
+   235	    1.0000    1.0000    0.8353
+   236	    1.0000    1.0000    0.8431
+   237	    1.0000    1.0000    0.8510
+   238	    1.0000    1.0000    0.8588
+   239	    1.0000    1.0000    0.8667
+   240	    1.0000    1.0000    0.8745
+   241	    1.0000    1.0000    0.8824
+   242	    1.0000    1.0000    0.8902
+   243	    1.0000    1.0000    0.8980
+   244	    1.0000    1.0000    0.9059
+   245	    1.0000    1.0000    0.9137
+   246	    1.0000    1.0000    0.9216
+   247	    1.0000    1.0000    0.9294
+   248	    1.0000    1.0000    0.9373
+   249	    1.0000    1.0000    0.9451
+   250	    1.0000    1.0000    0.9529
+   251	    1.0000    1.0000    0.9608
+   252	    1.0000    1.0000    0.9686
+   253	    1.0000    1.0000    0.9765
+   254	    1.0       0.0       0.0
+   255	    1.0       1.0       0.0
+   256	    0.0       1.000     0.0
diff --git a/q65w/astro.cpp b/q65w/astro.cpp
new file mode 100644
index 000000000..a6b0460a8
--- /dev/null
+++ b/q65w/astro.cpp
@@ -0,0 +1,194 @@
+#include "astro.h"
+#include <QSettings>
+#include "ui_astro.h"
+#include <QDebug>
+#include <QFile>
+#include <QMessageBox>
+#include <stdio.h>
+#include "SettingsGroup.hpp"
+#include "commons.h"
+#include <math.h>
+
+extern "C" {
+  void astrosub_ (int* nyear, int* month, int* nday, double* uth, int* nfreq,
+                  const char* mygrid, const char* hisgrid, double* azsun,
+                  double* elsun, double* azmoon, double* elmoon, double* azmoondx,
+                  double* elmoondx, int* ntsky, int* ndop, int* ndop00,
+                  double* ramoon, double* decmoon, double* dgrd, double* poloffset,
+                  double* xnr, int len1, int len2);
+}
+
+Astro::Astro (QString const& settings_filename, QWidget *parent) :
+  QWidget(parent),
+  ui(new Ui::Astro),
+  m_settings_filename {settings_filename}
+{
+  ui->setupUi (this);
+  setWindowTitle ("Astronomical Data");
+  setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint);
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  SettingsGroup g {&settings, "MainWindow"}; // MainWindow group for
+                                             // historical reasons
+  setGeometry (settings.value ("AstroGeom", QRect {71, 390, 227, 403}).toRect ());
+  ui->astroTextBrowser->setStyleSheet(
+        "QTextBrowser { background-color : cyan; color : black; }");
+  ui->astroTextBrowser->clear();
+  m_AzElDir0="";
+}
+
+Astro::~Astro()
+{
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  SettingsGroup g {&settings, "MainWindow"};
+  settings.setValue ("AstroGeom", geometry ());
+  delete ui;
+}
+
+void Astro::astroUpdate(QDateTime t, QString mygrid, QString hisgrid,
+                        int fQSO, int nsetftx, int ntxFreq, QString azelDir, double xavg)
+{
+  static int ntxFreq0=-99;
+  char cc[300];
+  double azsun,elsun,azmoon,elmoon,azmoondx,elmoondx;
+  double ramoon,decmoon,dgrd,poloffset,xnr;
+  int ntsky,ndop,ndop00;
+  QString date = t.date().toString("yyyy MMM dd");
+  QString utc = t.time().toString();
+  int nyear=t.date().year();
+  int month=t.date().month();
+  int nday=t.date().day();
+  int nhr=t.time().hour();
+  int nmin=t.time().minute();
+  double sec=t.time().second() + 0.001*t.time().msec();
+  int isec=sec;
+  double uth=nhr + nmin/60.0 + sec/3600.0;
+  int nfreq=(int)datcom_.fcenter;
+//  if(nfreq<10 or nfreq > 50000) nfreq=144;
+
+  astrosub_(&nyear, &month, &nday, &uth, &nfreq, mygrid.toLatin1(),
+            hisgrid.toLatin1(), &azsun, &elsun, &azmoon, &elmoon,
+            &azmoondx, &elmoondx, &ntsky, &ndop, &ndop00,&ramoon, &decmoon,
+            &dgrd, &poloffset, &xnr, 6, 6);
+
+  datcom_.nfast=ndop00;               //Send self Doppler to decoder, via datcom
+  sprintf(cc,
+          "Az:    %6.1f\n"
+          "El:    %6.1f\n"
+          "MyDop: %6d\n"
+          "DxAz:  %6.1f\n"
+          "DxEl:  %6.1f\n"
+          "DxDop: %6d\n"
+          "Dec:   %6.1f\n"
+          "SunAz: %6.1f\n"
+          "SunEl: %6.1f\n"
+          "Tsky:  %6d\n"
+          "MNR:   %6.1f\n"
+          "Dgrd:  %6.1f",
+          azmoon,elmoon,ndop00,azmoondx,elmoondx,ndop,decmoon,azsun,elsun,
+          ntsky,xnr,dgrd);
+  ui->astroTextBrowser->setText(" "+ date + "\nUTC: " + utc + "\n" + cc);
+
+  double azOffset=0.0;
+  double elOffset=0.0;
+  double rad=57.2957795131;
+  int iCycle=2;
+// Are we doing pointing tests?
+  bool bPointing=ui->cbPointingTests->isChecked();
+  ui->gbPointing->setVisible(bPointing);
+  if(bPointing) {
+    int nDwell=int(ui->sbDwell->value());
+    if(ui->cbAutoCycle->isChecked()) {
+      iCycle=(t.currentSecsSinceEpoch()%(6*nDwell))/nDwell + 1;
+      if(iCycle==1) {
+        azOffset = -ui->sbOffset->value()/cos(elsun/rad);
+        ui->rb1->setChecked(true);
+      }
+      if(iCycle==2 or iCycle==5) {
+        ui->rb2->setChecked(true);
+      }
+      if(iCycle==3) {
+        azOffset = +ui->sbOffset->value()/cos(elsun/rad);
+        ui->rb3->setChecked(true);
+      }
+      if(iCycle==4) {
+        elOffset = -ui->sbOffset->value();
+        ui->rb4->setChecked(true);
+      }
+      if(iCycle==6) {
+        elOffset = +ui->sbOffset->value();
+        ui->rb6->setChecked(true);
+      }
+    }
+    if(ui->cbOnOff->isChecked()) {
+      iCycle=(t.currentSecsSinceEpoch()%(2*nDwell))/nDwell + 1;
+      if(iCycle==1) {
+        azOffset = -ui->sbOffset->value()/cos(elsun/rad);
+        ui->rb1->setChecked(true);
+      }
+      if(iCycle==2) {
+        ui->rb2->setChecked(true);
+      }
+    }
+    if(ui->cbAutoCycle->isChecked() or ui->cbOnOff->isChecked()) {
+      QFile f("pointing.out");
+      if(f.open(QIODevice::WriteOnly | QIODevice::Append)) {
+        QTextStream out(&f);
+        out << t.toString("yyyy-MMM-dd hh:mm:ss");
+        sprintf(cc,"%7.1f %7.1f   %d %7.1f %7.1f %10.1f %7.2f\n",
+                azsun,elsun,iCycle,azOffset,elOffset,xavg,10.0*log10(xavg));
+        out << cc;
+        f.close();
+      }
+    }
+  } else {
+    ui->rb2->setChecked(true);
+    ui->cbAutoCycle->setChecked(false);
+    ui->cbOnOff->setChecked(false);
+  }
+
+// Write pointing data to azel.dat
+  QString fname=azelDir+"/azel.dat";
+  QFile f(fname);
+  if(!f.open(QIODevice::WriteOnly | QIODevice::Text)) {
+    if(azelDir==m_AzElDir0) return;
+    m_AzElDir0=azelDir;
+    QMessageBox mb;
+    mb.setText("Cannot open " + fname + "\nCorrect the setting of AzEl Directory in Setup?");
+    mb.exec();
+    return;
+  }
+  int ndiff=0;
+  if(ntxFreq != ntxFreq0) ndiff=1;
+  ntxFreq0=ntxFreq;
+  QTextStream out(&f);
+  sprintf(cc,"%2.2d:%2.2d:%2.2d,%5.1f,%5.1f,Moon\n"
+          "%2.2d:%2.2d:%2.2d,%5.1f,%5.1f,Sun\n"
+          "%2.2d:%2.2d:%2.2d,%5.1f,%5.1f,Source\n"
+          "%4d,%6d,%6d,Doppler\n"
+          "%3d,%1d,fQSO\n"
+          "%3d,%1d,fQSO2\n",
+          nhr,nmin,isec,azmoon,elmoon,
+          nhr,nmin,isec,azsun+azOffset,elsun+elOffset,
+          nhr,nmin,isec,0.0,0.0,
+          nfreq,ndop,ndop00,
+          fQSO,nsetftx,
+          ntxFreq,ndiff);
+  out << cc;
+  f.close();
+}
+
+void Astro::setFontSize(int n)
+{
+  ui->astroTextBrowser->setFontPointSize(n);
+}
+
+void Astro::on_cbAutoCycle_clicked(bool checked)
+{
+  if(checked) ui->cbOnOff->setChecked(false);
+}
+
+void Astro::on_cbOnOff_clicked(bool checked)
+{
+  if(checked) ui->cbAutoCycle->setChecked(false);
+}
+
diff --git a/q65w/astro.h b/q65w/astro.h
new file mode 100644
index 000000000..6b574237f
--- /dev/null
+++ b/q65w/astro.h
@@ -0,0 +1,32 @@
+#ifndef ASTRO_H
+#define ASTRO_H
+
+#include <QWidget>
+#include <QDateTime>
+
+namespace Ui {
+  class Astro;
+}
+
+class Astro : public QWidget
+{
+  Q_OBJECT
+
+public:
+  explicit Astro (QString const& settings_filename, QWidget *parent = 0);
+  void astroUpdate(QDateTime t, QString mygrid, QString hisgrid,
+                   int fQSO, int nsetftx, int ntxFreq, QString azelDir, double xavg);
+  void setFontSize(int n);
+  ~Astro ();
+
+private slots:
+  void on_cbOnOff_clicked(bool checked);
+  void on_cbAutoCycle_clicked(bool checked);
+
+private:
+  Ui::Astro *ui;
+  QString m_settings_filename;
+  QString m_AzElDir0;
+};
+
+#endif
diff --git a/q65w/astro.ui b/q65w/astro.ui
new file mode 100644
index 000000000..991a002f4
--- /dev/null
+++ b/q65w/astro.ui
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Astro</class>
+ <widget class="QWidget" name="Astro">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>441</width>
+    <height>483</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <widget class="QGroupBox" name="gbPointing">
+   <property name="geometry">
+    <rect>
+     <x>269</x>
+     <y>19</y>
+     <width>151</width>
+     <height>431</height>
+    </rect>
+   </property>
+   <property name="title">
+    <string/>
+   </property>
+   <widget class="QRadioButton" name="rb1">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>100</y>
+      <width>30</width>
+      <height>17</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>1</string>
+    </property>
+   </widget>
+   <widget class="QRadioButton" name="rb2">
+    <property name="geometry">
+     <rect>
+      <x>60</x>
+      <y>100</y>
+      <width>40</width>
+      <height>17</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>2, 5</string>
+    </property>
+    <property name="checked">
+     <bool>true</bool>
+    </property>
+   </widget>
+   <widget class="QRadioButton" name="rb3">
+    <property name="geometry">
+     <rect>
+      <x>110</x>
+      <y>100</y>
+      <width>30</width>
+      <height>17</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>3</string>
+    </property>
+   </widget>
+   <widget class="QRadioButton" name="rb4">
+    <property name="geometry">
+     <rect>
+      <x>60</x>
+      <y>150</y>
+      <width>30</width>
+      <height>17</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>4</string>
+    </property>
+   </widget>
+   <widget class="QRadioButton" name="rb6">
+    <property name="geometry">
+     <rect>
+      <x>60</x>
+      <y>50</y>
+      <width>30</width>
+      <height>17</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>6</string>
+    </property>
+   </widget>
+   <widget class="QDoubleSpinBox" name="sbOffset">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>230</y>
+      <width>130</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignCenter</set>
+    </property>
+    <property name="prefix">
+     <string>Offset   </string>
+    </property>
+    <property name="suffix">
+     <string>  deg</string>
+    </property>
+    <property name="decimals">
+     <number>1</number>
+    </property>
+    <property name="minimum">
+     <double>0.500000000000000</double>
+    </property>
+    <property name="maximum">
+     <double>20.000000000000000</double>
+    </property>
+    <property name="singleStep">
+     <double>0.500000000000000</double>
+    </property>
+    <property name="value">
+     <double>2.500000000000000</double>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="cbAutoCycle">
+    <property name="geometry">
+     <rect>
+      <x>30</x>
+      <y>330</y>
+      <width>91</width>
+      <height>17</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Auto Cycle</string>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="cbOnOff">
+    <property name="geometry">
+     <rect>
+      <x>30</x>
+      <y>380</y>
+      <width>70</width>
+      <height>17</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>On Off</string>
+    </property>
+   </widget>
+   <widget class="QSpinBox" name="sbDwell">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>280</y>
+      <width>130</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="alignment">
+     <set>Qt::AlignCenter</set>
+    </property>
+    <property name="suffix">
+     <string>   s</string>
+    </property>
+    <property name="prefix">
+     <string>Dwell   </string>
+    </property>
+    <property name="minimum">
+     <number>10</number>
+    </property>
+    <property name="maximum">
+     <number>300</number>
+    </property>
+    <property name="singleStep">
+     <number>10</number>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QWidget" name="">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>10</y>
+     <width>258</width>
+     <height>471</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+     <widget class="QTextBrowser" name="astroTextBrowser">
+      <property name="font">
+       <font>
+        <family>Courier New</family>
+        <pointsize>20</pointsize>
+        <weight>75</weight>
+        <bold>true</bold>
+       </font>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="cbPointingTests">
+        <property name="text">
+         <string>Pointing Tests</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/q65w/bandmap.cpp b/q65w/bandmap.cpp
new file mode 100644
index 000000000..3c4daecb3
--- /dev/null
+++ b/q65w/bandmap.cpp
@@ -0,0 +1,100 @@
+#include "bandmap.h"
+#include <QSettings>
+#include "ui_bandmap.h"
+#include "qt_helpers.hpp"
+#include "SettingsGroup.hpp"
+#include <QDebug>
+
+BandMap::BandMap (QString const& settings_filename, QWidget * parent)
+  : QWidget {parent},
+    ui {new Ui::BandMap},
+    m_settings_filename {settings_filename}
+{
+  ui->setupUi (this);
+  setWindowTitle ("Band Map");
+  setWindowFlags (Qt::Dialog | Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint);
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  SettingsGroup g {&settings, "MainWindow"}; // MainWindow group for
+                                             // historical reasons
+  setGeometry (settings.value ("BandMapGeom", QRect {280, 400, 142, 400}).toRect ());
+  ui->bmTextBrowser->setStyleSheet(
+                                   "QTextBrowser { background-color : #000066; color : red; }");
+}
+
+BandMap::~BandMap ()
+{
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  SettingsGroup g {&settings, "MainWindow"};
+  settings.setValue ("BandMapGeom", geometry ());
+  delete ui;
+}
+
+void BandMap::setText(QString t)
+{
+  m_bandMapText=t;
+  int w=ui->bmTextBrowser->size().width();
+  int ncols=1;
+  if(w>220) ncols=2;
+  QString s="QTextBrowser{background-color: "+m_colorBackground+"}";
+  ui->bmTextBrowser->setStyleSheet(s);
+  QString t0="<html style=\" font-family:'Courier New';"
+      "font-size:9pt; background-color:#000066\">"
+      "<table border=0 cellspacing=7><tr><td>\n";
+  QString tfreq,tspace,tcall;
+  QString s0,s1,s2,s3,bg;
+  bg="<span style=color:"+m_colorBackground+";>.</span>";
+  s0="<span style=color:"+m_color0+";>";
+  s1="<span style=color:"+m_color1+";>";
+  s2="<span style=color:"+m_color2+";>";
+  s3="<span style=color:"+m_color3+";>";
+
+  ui->bmTextBrowser->clear();
+  QStringList lines = t.split( "\n", SkipEmptyParts );
+  int nrows=(lines.length()+ncols-1)/ncols;
+
+  for(int i=0; i<nrows; i++) {
+    tfreq=lines[i].mid(0,3);
+    tspace=lines[i].mid(4,1);
+    if(tspace==" ") tspace=bg;
+    tcall=lines[i].mid(5,7);
+    int n=lines[i].mid(13,1).toInt();
+    if(n==0) t0 += s0;
+    if(n==1) t0 += s1;
+    if(n==2) t0 += s2;
+    if(n>=3) t0 += s3;
+    t0 += (tfreq + tspace + tcall + "</span><br>\n");
+  }
+
+  if(ncols==2) {                                  //2-column display
+    t0 += "<td><br><td>\n";
+    for(int i=nrows; i<lines.length(); i++) {
+      tfreq=lines[i].mid(0,3);
+      tspace=lines[i].mid(4,1);
+      if(tspace=="  ") tspace=bg;
+      tcall=lines[i].mid(5,7);
+      int n=lines[i].mid(13,1).toInt();
+      if(n==0) t0 += s0;
+      if(n==1) t0 += s1;
+      if(n==2) t0 += s2;
+      if(n>=3) t0 += s3;
+      t0 += (tfreq + tspace + tcall + "</span><br>\n");
+    }
+    if(2*nrows>lines.length()) t0 += (s0 + "</span><br>\n");
+  }
+  ui->bmTextBrowser->setHtml(t0);
+}
+
+void BandMap::resizeEvent(QResizeEvent* )
+{
+  setText(m_bandMapText);
+}
+
+void BandMap::setColors(QString t)
+{
+  m_colorBackground = "#"+t.mid(0,6);
+  m_color0 = "#"+t.mid(6,6);
+  m_color1 = "#"+t.mid(12,6);
+  m_color2 = "#"+t.mid(18,6);
+  m_color3 = "#"+t.mid(24,6);
+  setText(m_bandMapText);
+}
diff --git a/q65w/bandmap.h b/q65w/bandmap.h
new file mode 100644
index 000000000..857925800
--- /dev/null
+++ b/q65w/bandmap.h
@@ -0,0 +1,35 @@
+#ifndef BANDMAP_H
+#define BANDMAP_H
+
+#include <QWidget>
+
+namespace Ui {
+    class BandMap;
+}
+
+class BandMap : public QWidget
+{
+  Q_OBJECT
+
+public:
+  explicit BandMap (QString const& settings_filename, QWidget *parent = 0);
+  void setText(QString t);
+  void setColors(QString t);
+
+  ~BandMap();
+
+protected:
+  void resizeEvent(QResizeEvent* event);
+
+private:
+  Ui::BandMap *ui;
+  QString m_settings_filename;
+  QString m_bandMapText;
+  QString m_colorBackground;
+  QString m_color0;
+  QString m_color1;
+  QString m_color2;
+  QString m_color3;
+};
+
+#endif
diff --git a/q65w/bandmap.ui b/q65w/bandmap.ui
new file mode 100644
index 000000000..cd87a41dd
--- /dev/null
+++ b/q65w/bandmap.ui
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>BandMap</class>
+ <widget class="QWidget" name="BandMap">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>329</width>
+    <height>379</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QTextBrowser" name="bmTextBrowser">
+     <property name="minimumSize">
+      <size>
+       <width>107</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="font">
+      <font>
+       <family>Courier New</family>
+       <pointsize>9</pointsize>
+      </font>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/q65w/blue.dat b/q65w/blue.dat
new file mode 100644
index 000000000..852295114
--- /dev/null
+++ b/q65w/blue.dat
@@ -0,0 +1,256 @@
+     0      0.0000    0.0000    0.0000
+     1	    0.0902    0.0902    0.2558
+     2	    0.1176    0.1176    0.2694
+     3	    0.1412    0.1412    0.2820
+     4	    0.1569    0.1569    0.2938
+     5	    0.1725    0.1725    0.3049
+     6	    0.1843    0.1843    0.3154
+     7	    0.1961    0.1961    0.3254
+     8	    0.2039    0.2039    0.3349
+     9	    0.2157    0.2157    0.3440
+    10	    0.2235    0.2235    0.3528
+    11	    0.2314    0.2314    0.3612
+    12	    0.2392    0.2392    0.3693
+    13	    0.2471    0.2471    0.3772
+    14	    0.2549    0.2549    0.3848
+    15	    0.2588    0.2588    0.3921
+    16	    0.2667    0.2667    0.3992
+    17	    0.2706    0.2706    0.4061
+    18	    0.2784    0.2784    0.4129
+    19	    0.2824    0.2824    0.4194
+    20	    0.2902    0.2902    0.4258
+    21	    0.2941    0.2941    0.4319
+    22	    0.2980    0.2980    0.4380
+    23	    0.3059    0.3059    0.4439
+    24	    0.3098    0.3098    0.4496
+    25	    0.3137    0.3137    0.4553
+    26	    0.3176    0.3176    0.4608
+    27	    0.3216    0.3216    0.4661
+    28	    0.3294    0.3294    0.4714
+    29	    0.3333    0.3333    0.4765
+    30	    0.3373    0.3373    0.4815
+    31	    0.3412    0.3412    0.4865
+    32	    0.3451    0.3451    0.4913
+    33	    0.3490    0.3490    0.4960
+    34	    0.3529    0.3529    0.5006
+    35	    0.3569    0.3569    0.5052
+    36	    0.3608    0.3608    0.5096
+    37	    0.3647    0.3647    0.5140
+    38	    0.3686    0.3686    0.5183
+    39	    0.3725    0.3725    0.5225
+    40	    0.3765    0.3765    0.5266
+    41	    0.3804    0.3804    0.5306
+    42	    0.3843    0.3843    0.5346
+    43	    0.3843    0.3843    0.5385
+    44	    0.3882    0.3882    0.5423
+    45	    0.3922    0.3922    0.5460
+    46	    0.3961    0.3961    0.5497
+    47	    0.4000    0.4000    0.5533
+    48	    0.4039    0.4039    0.5569
+    49	    0.4078    0.4078    0.5603
+    50	    0.4118    0.4118    0.5638
+    51	    0.4118    0.4118    0.5671
+    52	    0.4157    0.4157    0.5704
+    53	    0.4196    0.4196    0.5736
+    54	    0.4235    0.4235    0.5768
+    55	    0.4275    0.4275    0.5799
+    56	    0.4314    0.4314    0.5829
+    57	    0.4314    0.4314    0.5859
+    58	    0.4353    0.4353    0.5889
+    59	    0.4392    0.4392    0.5917
+    60	    0.4431    0.4431    0.5946
+    61	    0.4471    0.4471    0.5973
+    62	    0.4471    0.4471    0.6001
+    63	    0.4510    0.4510    0.6027
+    64	    0.4549    0.4549    0.6053
+    65	    0.4588    0.4588    0.6079
+    66	    0.4627    0.4627    0.6104
+    67	    0.4627    0.4627    0.6129
+    68	    0.4667    0.4667    0.6153
+    69	    0.4706    0.4706    0.6176
+    70	    0.4745    0.4745    0.6199
+    71	    0.4745    0.4745    0.6222
+    72	    0.4784    0.4784    0.6244
+    73	    0.4824    0.4824    0.6266
+    74	    0.4863    0.4863    0.6287
+    75	    0.4863    0.4863    0.6308
+    76	    0.4902    0.4902    0.6328
+    77	    0.4941    0.4941    0.6348
+    78	    0.4980    0.4980    0.6367
+    79	    0.5020    0.5020    0.6386
+    80	    0.5020    0.5020    0.6404
+    81	    0.5059    0.5059    0.6422
+    82	    0.5098    0.5098    0.6440
+    83	    0.5098    0.5098    0.6457
+    84	    0.5137    0.5137    0.6474
+    85	    0.5176    0.5176    0.6490
+    86	    0.5216    0.5216    0.6506
+    87	    0.5216    0.5216    0.6521
+    88	    0.5255    0.5255    0.6536
+    89	    0.5294    0.5294    0.6551
+    90	    0.5333    0.5333    0.6565
+    91	    0.5333    0.5333    0.6578
+    92	    0.5373    0.5373    0.6591
+    93	    0.5412    0.5412    0.6604
+    94	    0.5451    0.5451    0.6617
+    95	    0.5451    0.5451    0.6629
+    96	    0.5490    0.5490    0.6640
+    97	    0.5529    0.5529    0.6651
+    98	    0.5569    0.5569    0.6662
+    99	    0.5569    0.5569    0.6672
+   100	    0.5608    0.5608    0.6682
+   101	    0.5647    0.5647    0.6692
+   102	    0.5647    0.5647    0.6701
+   103	    0.5686    0.5686    0.6710
+   104	    0.5725    0.5725    0.6718
+   105	    0.5765    0.5765    0.6726
+   106	    0.5765    0.5765    0.6733
+   107	    0.5804    0.5804    0.6740
+   108	    0.5843    0.5843    0.6747
+   109	    0.5843    0.5843    0.6753
+   110	    0.5882    0.5882    0.6759
+   111	    0.5922    0.5922    0.6765
+   112	    0.5961    0.5961    0.6770
+   113	    0.5961    0.5961    0.6774
+   114	    0.6000    0.6000    0.6779
+   115	    0.6039    0.6039    0.6783
+   116	    0.6039    0.6039    0.6786
+   117	    0.6078    0.6078    0.6789
+   118	    0.6118    0.6118    0.6792
+   119	    0.6157    0.6157    0.6794
+   120	    0.6157    0.6157    0.6796
+   121	    0.6196    0.6196    0.6798
+   122	    0.6235    0.6235    0.6799
+   123	    0.6235    0.6235    0.6800
+   124	    0.6275    0.6275    0.6800
+   125	    0.6314    0.6314    0.6800
+   126	    0.6353    0.6353    0.6799
+   127	    0.6353    0.6353    0.6799
+   128	    0.6392    0.6392    0.6797
+   129	    0.6431    0.6431    0.6796
+   130	    0.6431    0.6431    0.6794
+   131	    0.6471    0.6471    0.6791
+   132	    0.6510    0.6510    0.6789
+   133	    0.6549    0.6549    0.6785
+   134	    0.6549    0.6549    0.6782
+   135	    0.6588    0.6588    0.6778
+   136	    0.6627    0.6627    0.6773
+   137	    0.6627    0.6627    0.6769
+   138	    0.6667    0.6667    0.6763
+   139	    0.6706    0.6706    0.6758
+   140	    0.6745    0.6745    0.6752
+   141	    0.6745    0.6745    0.6746
+   142	    0.6784    0.6784    0.6739
+   143	    0.6824    0.6824    0.6732
+   144	    0.6824    0.6824    0.6724
+   145	    0.6863    0.6863    0.6716
+   146	    0.6902    0.6902    0.6708
+   147	    0.6941    0.6941    0.6699
+   148	    0.6941    0.6941    0.6690
+   149	    0.6980    0.6980    0.6680
+   150	    0.7020    0.7020    0.6670
+   151	    0.7020    0.7020    0.6660
+   152	    0.7059    0.7059    0.6649
+   153	    0.7098    0.7098    0.6638
+   154	    0.7098    0.7098    0.6626
+   155	    0.7137    0.7137    0.6614
+   156	    0.7176    0.7176    0.6601
+   157	    0.7216    0.7216    0.6589
+   158	    0.7216    0.7216    0.6575
+   159	    0.7255    0.7255    0.6561
+   160	    0.7294    0.7294    0.6547
+   161	    0.7294    0.7294    0.6533
+   162	    0.7333    0.7333    0.6518
+   163	    0.7373    0.7373    0.6502
+   164	    0.7412    0.7412    0.6486
+   165	    0.7412    0.7412    0.6470
+   166	    0.7451    0.7451    0.6453
+   167	    0.7490    0.7490    0.6436
+   168	    0.7490    0.7490    0.6418
+   169	    0.7529    0.7529    0.6400
+   170	    0.7569    0.7569    0.6382
+   171	    0.7608    0.7608    0.6363
+   172	    0.7608    0.7608    0.6343
+   173	    0.7647    0.7647    0.6324
+   174	    0.7686    0.7686    0.6303
+   175	    0.7686    0.7686    0.6282
+   176	    0.7725    0.7725    0.6261
+   177	    0.7765    0.7765    0.6239
+   178	    0.7804    0.7804    0.6217
+   179	    0.7804    0.7804    0.6194
+   180	    0.7843    0.7843    0.6171
+   181	    0.7882    0.7882    0.6147
+   182	    0.7882    0.7882    0.6123
+   183	    0.7922    0.7922    0.6098
+   184	    0.7961    0.7961    0.6073
+   185	    0.8000    0.8000    0.6047
+   186	    0.8000    0.8000    0.6021
+   187	    0.8039    0.8039    0.5994
+   188	    0.8078    0.8078    0.5967
+   189	    0.8078    0.8078    0.5939
+   190	    0.8118    0.8118    0.5911
+   191	    0.8157    0.8157    0.5882
+   192	    0.8196    0.8196    0.5853
+   193	    0.8196    0.8196    0.5823
+   194	    0.8235    0.8235    0.5792
+   195	    0.8275    0.8275    0.5761
+   196	    0.8275    0.8275    0.5729
+   197	    0.8314    0.8314    0.5697
+   198	    0.8353    0.8353    0.5664
+   199	    0.8392    0.8392    0.5630
+   200	    0.8392    0.8392    0.5596
+   201	    0.8431    0.8431    0.5561
+   202	    0.8471    0.8471    0.5525
+   203	    0.8471    0.8471    0.5489
+   204	    0.8510    0.8510    0.5452
+   205	    0.8549    0.8549    0.5414
+   206	    0.8588    0.8588    0.5376
+   207	    0.8588    0.8588    0.5337
+   208	    0.8627    0.8627    0.5297
+   209	    0.8667    0.8667    0.5257
+   210	    0.8667    0.8667    0.5215
+   211	    0.8706    0.8706    0.5173
+   212	    0.8745    0.8745    0.5130
+   213	    0.8784    0.8784    0.5086
+   214	    0.8784    0.8784    0.5042
+   215	    0.8824    0.8824    0.4996
+   216	    0.8863    0.8863    0.4950
+   217	    0.8863    0.8863    0.4902
+   218	    0.8902    0.8902    0.4854
+   219	    0.8941    0.8941    0.4804
+   220	    0.8980    0.8980    0.4754
+   221	    0.8980    0.8980    0.4702
+   222	    0.9020    0.9020    0.4649
+   223	    0.9059    0.9059    0.4595
+   224	    0.9098    0.9098    0.4540
+   225	    0.9098    0.9098    0.4484
+   226	    0.9137    0.9137    0.4426
+   227	    0.9176    0.9176    0.4366
+   228	    0.9176    0.9176    0.4306
+   229	    0.9216    0.9216    0.4243
+   230	    0.9255    0.9255    0.4179
+   231	    0.9294    0.9294    0.4114
+   232	    0.9294    0.9294    0.4046
+   233	    0.9333    0.9333    0.3977
+   234	    0.9373    0.9373    0.3905
+   235	    0.9373    0.9373    0.3831
+   236	    0.9412    0.9412    0.3754
+   237	    0.9451    0.9451    0.3675
+   238	    0.9490    0.9490    0.3594
+   239	    0.9490    0.9490    0.3509
+   240	    0.9529    0.9529    0.3420
+   241	    0.9569    0.9569    0.3328
+   242	    0.9608    0.9608    0.3232
+   243	    0.9608    0.9608    0.3131
+   244	    0.9647    0.9647    0.3024
+   245	    0.9686    0.9686    0.2912
+   246	    0.9686    0.9686    0.2792
+   247	    0.9725    0.9725    0.2664
+   248	    0.9765    0.9765    0.2526
+   249	    0.9804    0.9804    0.2375
+   250	    0.9804    0.9804    0.2208
+   251	    0.9843    0.9843    0.2020
+   252	    0.9882    0.9882    0.1800
+   253	    1.0       0.0       0.0
+   254	    1.0       1.0       0.0
+   255	    0.0       1.000     0.0
diff --git a/q65w/commons.h b/q65w/commons.h
new file mode 100644
index 000000000..f7ea43d9e
--- /dev/null
+++ b/q65w/commons.h
@@ -0,0 +1,48 @@
+#ifndef COMMONS_H
+#define COMMONS_H
+
+#define NFFT 32768
+
+extern "C" {
+
+extern struct {                     //This is "common/datcom/..." in Fortran
+  float d4[4*5760000];              //Raw I/Q data from Linrad
+  float ss[4*322*NFFT];             //Half-symbol spectra at 0,45,90,135 deg pol
+  float savg[4*NFFT];               //Avg spectra at 0,45,90,135 deg pol
+  double fcenter;                   //Center freq from Linrad (MHz)
+  int nutc;                         //UTC as integer, HHMM
+  int idphi;                        //Phase correction for Y pol'n, degrees
+  int mousedf;                      //User-selected DF
+  int mousefqso;                    //User-selected QSO freq (kHz)
+  int nagain;                       //1 ==> decode only at fQSO +/- Tol
+  int ndepth;                       //How much hinted decoding to do?
+  int ndiskdat;                     //1 ==> data read from *.tf2 or *.iq file
+  int neme;                         //Hinted decoding tries only for EME calls
+  int newdat;                       //1 ==> new data, must do long FFT
+  int nfa;                          //Low decode limit (kHz)
+  int nfb;                          //High decode limit (kHz)
+  int nfcal;                        //Frequency correction, for calibration (Hz)
+  int nfshift;                      //Shift of displayed center freq (kHz)
+  int mcall3;                       //1 ==> CALL3.TXT has been modified
+  int ntimeout;                     //Max for timeouts in Messages and BandMap
+  int ntol;                         //+/- decoding range around fQSO (Hz)
+  int nxant;                        //1 ==> add 45 deg to measured pol angle
+  int map65RxLog;                   //Flags to control log files
+  int nfsample;                     //Input sample rate
+  int nxpol;                        //1 if using xpol antennas, 0 otherwise
+  int nmode;                        //nmode = 10*m_modeQ65 + m_modeJT65
+  int nfast;                        //No longer used
+  int nsave;                        //Number of s3(64,63) spectra saved
+  int max_drift;                    //Maximum Q65 drift: units symbol_rate/TxT
+  int nhsym;                        //Number of available JT65 half-symbols
+  char mycall[12];
+  char mygrid[6];
+  char hiscall[12];
+  char hisgrid[6];
+  char datetime[20];
+  int junk1;                        //Used to test extent of copy to shared memory
+  int junk2;
+} datcom_;
+}
+
+#endif // COMMONS_H
diff --git a/q65w/devsetup.cpp b/q65w/devsetup.cpp
new file mode 100644
index 000000000..fe9d14a95
--- /dev/null
+++ b/q65w/devsetup.cpp
@@ -0,0 +1,389 @@
+#include "devsetup.h"
+#include "mainwindow.h"
+#include <QTextStream>
+#include <QDebug>
+#include <cstdio>
+#include <portaudio.h>
+
+#define MAXDEVICES 200
+
+//----------------------------------------------------------- DevSetup()
+DevSetup::DevSetup(QWidget *parent) :	QDialog(parent)
+{
+  ui.setupUi(this);	//setup the dialog form
+  m_restartSoundIn=false;
+  m_restartSoundOut=false;
+}
+
+DevSetup::~DevSetup()
+{
+}
+
+void DevSetup::initDlg()
+{
+  int k,id;
+  int valid_devices=0;
+  int minChan[MAXDEVICES];
+  int maxChan[MAXDEVICES];
+  int minSpeed[MAXDEVICES];
+  int maxSpeed[MAXDEVICES];
+  char hostAPI_DeviceName[MAXDEVICES][50];
+  char s[256];
+  int numDevices=Pa_GetDeviceCount();
+  getDev(&numDevices,hostAPI_DeviceName,minChan,maxChan,minSpeed,maxSpeed);
+  k=0;
+  for(id=0; id<numDevices; id++)  {
+    if(96000 >= minSpeed[id] && 96000 <= maxSpeed[id]) {
+      m_inDevList[k]=id;
+      k++;
+      sprintf(s,"%2d   %d  %-49s",id,maxChan[id],hostAPI_DeviceName[id]);
+      QString t(s);
+      ui.comboBoxSndIn->addItem(t);
+      valid_devices++;
+    }
+  }
+
+  const PaDeviceInfo *pdi;
+  int nchout;
+  char *p,*p1;
+  char p2[256];
+  char pa_device_name[128];
+  char pa_device_hostapi[128];
+
+  k=0;
+  for(id=0; id<numDevices; id++ )  {
+    pdi=Pa_GetDeviceInfo(id);
+    nchout=pdi->maxOutputChannels;
+    if(nchout>=2) {
+      m_outDevList[k]=id;
+      k++;
+      sprintf((char*)(pa_device_name),"%s",pdi->name);
+      sprintf((char*)(pa_device_hostapi),"%s",
+              Pa_GetHostApiInfo(pdi->hostApi)->name);
+
+      p1=(char*)"";
+      p=strstr(pa_device_hostapi,"MME");
+      if(p!=NULL) p1=(char*)"MME";
+      p=strstr(pa_device_hostapi,"Direct");
+      if(p!=NULL) p1=(char*)"DirectX";
+      p=strstr(pa_device_hostapi,"WASAPI");
+      if(p!=NULL) p1=(char*)"WASAPI";
+      p=strstr(pa_device_hostapi,"ASIO");
+      if(p!=NULL) p1=(char*)"ASIO";
+      p=strstr(pa_device_hostapi,"WDM-KS");
+      if(p!=NULL) p1=(char*)"WDM-KS";
+
+      sprintf(p2,"%2d   %-8s  %-39s",id,p1,pa_device_name);
+      QString t(p2);
+      ui.comboBoxSndOut->addItem(t);
+    }
+  }
+
+  ui.myCallEntry->setText(m_myCall);
+  ui.myGridEntry->setText(m_myGrid);
+  ui.idIntSpinBox->setValue(m_idInt);
+  ui.pttComboBox->setCurrentIndex(m_pttPort);
+  ui.astroFont->setValue(m_astroFont);
+  ui.cbXpol->setChecked(m_xpol);
+  ui.rbAntennaX->setChecked(m_xpolx);
+  ui.saveDirEntry->setText(m_saveDir);
+  ui.azelDirEntry->setText(m_azelDir);
+  ui.editorEntry->setText(m_editorCommand);
+  ui.dxccEntry->setText(m_dxccPfx);
+  ui.timeoutSpinBox->setValue(m_timeout);
+  ui.dPhiSpinBox->setValue(m_dPhi);
+  ui.fCalSpinBox->setValue(m_fCal);
+  ui.faddEntry->setText(QString::number(m_fAdd,'f',3));
+  ui.networkRadioButton->setChecked(m_network);
+  ui.soundCardRadioButton->setChecked(!m_network);
+  ui.rb96000->setChecked(m_fs96000);
+  ui.rb95238->setChecked(!m_fs96000);
+  ui.rbIQXT->setChecked(m_bIQxt);
+  ui.rbSi570->setChecked(!m_bIQxt);
+  ui.mult570TxSpinBox->setEnabled(m_bIQxt);
+  ui.comboBoxSndIn->setEnabled(!m_network);
+  ui.comboBoxSndIn->setCurrentIndex(m_nDevIn);
+  ui.comboBoxSndOut->setCurrentIndex(m_nDevOut);
+  ui.sbPort->setValue(m_udpPort);
+  ui.cbIQswap->setChecked(m_IQswap);
+  ui.cbInitIQplus->setChecked(m_initIQplus);
+  ui.sb_dB->setValue(m_dB);
+  ui.mult570SpinBox->setValue(m_mult570);
+  ui.mult570TxSpinBox->setValue(m_mult570Tx);
+  ui.cal570SpinBox->setValue(m_cal570);
+  ui.sbTxOffset->setValue(m_TxOffset);
+  ::sscanf (m_colors.toLatin1(),"%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x",
+            &r,&g,&b,&r0,&g0,&b0,&r1,&g1,&b1,&r2,&g2,&b2,&r3,&g3,&b3);
+  updateColorLabels();
+  ui.sbBackgroundRed->setValue(r);
+  ui.sbBackgroundGreen->setValue(g);
+  ui.sbBackgroundBlue->setValue(b);
+  ui.sbRed0->setValue(r0);
+  ui.sbRed1->setValue(r1);
+  ui.sbRed2->setValue(r2);
+  ui.sbRed3->setValue(r3);
+  ui.sbGreen0->setValue(g0);
+  ui.sbGreen1->setValue(g1);
+  ui.sbGreen2->setValue(g2);
+  ui.sbGreen3->setValue(g3);
+  ui.sbBlue0->setValue(b0);
+  ui.sbBlue1->setValue(b1);
+  ui.sbBlue2->setValue(b2);
+  ui.sbBlue3->setValue(b3);
+
+  m_paInDevice=m_inDevList[m_nDevIn];
+  m_paOutDevice=m_outDevList[m_nDevOut];
+
+}
+
+//------------------------------------------------------- accept()
+void DevSetup::accept()
+{
+  // Called when OK button is clicked.
+  // Check to see whether SoundInThread must be restarted,
+  // and save user parameters.
+
+  if(m_network!=ui.networkRadioButton->isChecked() or
+     m_nDevIn!=ui.comboBoxSndIn->currentIndex() or
+     m_paInDevice!=m_inDevList[m_nDevIn] or
+     m_xpol!=ui.cbXpol->isChecked() or
+     m_udpPort!=ui.sbPort->value()) m_restartSoundIn=true;
+
+  if(m_nDevOut!=ui.comboBoxSndOut->currentIndex() or
+     m_paOutDevice!=m_outDevList[m_nDevOut]) m_restartSoundOut=true;
+
+  m_myCall=ui.myCallEntry->text();
+  m_myGrid=ui.myGridEntry->text();
+  m_idInt=ui.idIntSpinBox->value();
+  m_pttPort=ui.pttComboBox->currentIndex();
+  m_astroFont=ui.astroFont->value();
+  m_xpol=ui.cbXpol->isChecked();
+  m_xpolx=ui.rbAntennaX->isChecked();
+  m_saveDir=ui.saveDirEntry->text();
+  m_azelDir=ui.azelDirEntry->text();
+  m_editorCommand=ui.editorEntry->text();
+  m_dxccPfx=ui.dxccEntry->text();
+  m_timeout=ui.timeoutSpinBox->value();
+  m_dPhi=ui.dPhiSpinBox->value();
+  m_fCal=ui.fCalSpinBox->value();
+  m_fAdd=ui.faddEntry->text().toDouble();
+  m_network=ui.networkRadioButton->isChecked();
+  m_fs96000=ui.rb96000->isChecked();
+  m_bIQxt=ui.rbIQXT->isChecked();
+  m_nDevIn=ui.comboBoxSndIn->currentIndex();
+  m_paInDevice=m_inDevList[m_nDevIn];
+  m_nDevOut=ui.comboBoxSndOut->currentIndex();
+  m_paOutDevice=m_outDevList[m_nDevOut];
+  m_udpPort=ui.sbPort->value();
+  m_IQswap=ui.cbIQswap->isChecked();
+  m_initIQplus=ui.cbInitIQplus->isChecked();
+  m_dB=ui.sb_dB->value();
+  m_mult570=ui.mult570SpinBox->value();
+  m_mult570Tx=ui.mult570TxSpinBox->value();
+  m_cal570=ui.cal570SpinBox->value();
+  m_TxOffset=ui.sbTxOffset->value();
+
+  QDialog::accept();
+}
+
+void DevSetup::on_soundCardRadioButton_toggled(bool checked)
+{
+  ui.comboBoxSndIn->setEnabled(ui.soundCardRadioButton->isChecked());
+  ui.rb96000->setChecked(checked);
+  ui.rb95238->setEnabled(!checked);
+  ui.label_InputDev->setEnabled(checked);
+  ui.label_Port->setEnabled(!checked);
+  ui.sbPort->setEnabled(!checked);
+  ui.cbIQswap->setEnabled(checked);
+  ui.sb_dB->setEnabled(checked);
+}
+
+void DevSetup::on_cbXpol_stateChanged(int n)
+{
+  m_xpol = (n!=0);
+  ui.rbAntenna->setEnabled(m_xpol);
+  ui.rbAntennaX->setEnabled(m_xpol);
+  ui.dPhiSpinBox->setEnabled(m_xpol);
+  ui.labelDphi->setEnabled(m_xpol);
+}
+
+void DevSetup::on_cal570SpinBox_valueChanged(double ppm)
+{
+  m_cal570=ppm;
+}
+
+void DevSetup::on_mult570SpinBox_valueChanged(int mult)
+{
+  m_mult570=mult;
+}
+
+void DevSetup::on_sb_dB_valueChanged(int n)
+{
+  m_dB=n;
+}
+
+void DevSetup::updateColorLabels()
+{
+  QString t;
+  int r=ui.sbBackgroundRed->value();
+  int g=ui.sbBackgroundGreen->value();
+  int b=ui.sbBackgroundBlue->value();
+  int r0=ui.sbRed0->value();
+  int r1=ui.sbRed1->value();
+  int r2=ui.sbRed2->value();
+  int r3=ui.sbRed3->value();
+  int g0=ui.sbGreen0->value();
+  int g1=ui.sbGreen1->value();
+  int g2=ui.sbGreen2->value();
+  int g3=ui.sbGreen3->value();
+  int b0=ui.sbBlue0->value();
+  int b1=ui.sbBlue1->value();
+  int b2=ui.sbBlue2->value();
+  int b3=ui.sbBlue3->value();
+
+  ui.lab0->setStyleSheet (
+                          QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"}
+                             .arg (r, 2, 16, QLatin1Char {'0'})
+                             .arg (g, 2, 16, QLatin1Char {'0'})
+                             .arg (b, 2, 16, QLatin1Char {'0'})
+                             .arg (r0, 2, 16, QLatin1Char {'0'})
+                             .arg (g0, 2, 16, QLatin1Char {'0'})
+                             .arg (b0, 2, 16, QLatin1Char {'0'})
+                          );
+  ui.lab1->setStyleSheet(
+                         QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"}
+                            .arg (r, 2, 16, QLatin1Char {'0'})
+                            .arg (g, 2, 16, QLatin1Char {'0'})
+                            .arg (b, 2, 16, QLatin1Char {'0'})
+                            .arg (r1, 2, 16, QLatin1Char {'0'})
+                            .arg (g1, 2, 16, QLatin1Char {'0'})
+                            .arg (b1, 2, 16, QLatin1Char {'0'})
+                         );
+  ui.lab2->setStyleSheet(
+                         QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"}
+                            .arg (r, 2, 16, QLatin1Char {'0'})
+                            .arg (g, 2, 16, QLatin1Char {'0'})
+                            .arg (b, 2, 16, QLatin1Char {'0'})
+                            .arg (r2, 2, 16, QLatin1Char {'0'})
+                            .arg (g2, 2, 16, QLatin1Char {'0'})
+                            .arg (b2, 2, 16, QLatin1Char {'0'})
+                         );
+  ui.lab3->setStyleSheet(
+                         QString {"QLabel{background-color: #%1%2%3; color: #%4%5%6}"}
+                            .arg (r, 2, 16, QLatin1Char {'0'})
+                            .arg (g, 2, 16, QLatin1Char {'0'})
+                            .arg (b, 2, 16, QLatin1Char {'0'})
+                            .arg (r3, 2, 16, QLatin1Char {'0'})
+                            .arg (g3, 2, 16, QLatin1Char {'0'})
+                            .arg (b3, 2, 16, QLatin1Char {'0'})
+                         );
+
+  m_colors.clear ();
+  QTextStream ots {&m_colors, QIODevice::WriteOnly};
+  ots.setIntegerBase (16);
+  ots.setFieldWidth (2);
+  ots.setPadChar ('0');
+  ots << r << g << b << r0 << g0 << b0 << r1 << g1 << b1 << r2 << g2 << b2 << r3 << g3 << b3;
+}
+
+void DevSetup::on_sbBackgroundRed_valueChanged(int /*r*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbBackgroundGreen_valueChanged(int /*g*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbBackgroundBlue_valueChanged(int /*b*/)
+{
+  updateColorLabels();
+}
+
+
+void DevSetup::on_sbRed0_valueChanged(int /*arg1*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbGreen0_valueChanged(int /*arg1*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbBlue0_valueChanged(int /*arg1*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbRed1_valueChanged(int /*arg1*/)
+{
+   updateColorLabels();
+}
+
+void DevSetup::on_sbGreen1_valueChanged(int /*arg1*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbBlue1_valueChanged(int /*arg1*/)
+{
+   updateColorLabels();
+}
+
+void DevSetup::on_sbRed2_valueChanged(int /*arg1*/)
+{
+   updateColorLabels();
+}
+
+void DevSetup::on_sbGreen2_valueChanged(int /*arg1*/)
+{
+   updateColorLabels();
+}
+
+void DevSetup::on_sbBlue2_valueChanged(int /*arg1*/)
+{
+   updateColorLabels();
+}
+
+void DevSetup::on_sbRed3_valueChanged(int /*arg1*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbGreen3_valueChanged(int /*arg1*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_sbBlue3_valueChanged(int /*arg1*/)
+{
+  updateColorLabels();
+}
+
+void DevSetup::on_pushButton_5_clicked()
+{
+  QColor color = QColorDialog::getColor(Qt::green, this);
+  if (color.isValid()) {
+  }
+}
+
+void DevSetup::on_mult570TxSpinBox_valueChanged(int n)
+{
+  m_mult570Tx=n;
+}
+
+void DevSetup::on_rbIQXT_toggled(bool checked)
+{
+  m_bIQxt=checked;
+  ui.mult570TxSpinBox->setEnabled(m_bIQxt);
+  ui.label_25->setEnabled(m_bIQxt);
+  ui.sbTxOffset->setEnabled(m_bIQxt);
+  ui.label_26->setEnabled(m_bIQxt);
+}
+
+void DevSetup::on_sbTxOffset_valueChanged(double f)
+{
+  m_TxOffset=f;
+}
diff --git a/q65w/devsetup.h b/q65w/devsetup.h
new file mode 100644
index 000000000..c32a83e96
--- /dev/null
+++ b/q65w/devsetup.h
@@ -0,0 +1,91 @@
+#ifndef DEVSETUP_H
+#define DEVSETUP_H
+
+#include <QDialog>
+#include "ui_devsetup.h"
+
+class DevSetup : public QDialog
+{
+  Q_OBJECT
+public:
+  DevSetup(QWidget *parent=0);
+  ~DevSetup();
+
+  void initDlg();
+  qint32  m_idInt;
+  qint32  m_pttPort;
+  qint32  m_nDevIn;
+  qint32  m_nDevOut;
+  qint32  m_inDevList[100];
+  qint32  m_outDevList[100];
+  qint32  m_paInDevice;
+  qint32  m_paOutDevice;
+  qint32  m_timeout;
+  qint32  m_dPhi;
+  qint32  m_fCal;
+  qint32  m_udpPort;
+  qint32  m_astroFont;
+  qint32  m_mult570;
+  qint32  m_mult570Tx;
+  qint32  m_dB;
+
+  double  m_fAdd;
+  double  m_cal570;
+  double  m_TxOffset;
+
+  bool    m_xpolx;
+  bool    m_network;
+  bool    m_fs96000;
+  bool    m_xpol;
+  bool    m_IQswap;
+  bool    m_restartSoundIn;
+  bool    m_restartSoundOut;
+  bool    m_initIQplus;
+  bool    m_bIQxt;
+
+  QString m_myCall;
+  QString m_myGrid;
+  QString m_saveDir;
+  QString m_azelDir;
+  QString m_dxccPfx;
+  QString m_colors;
+  QString m_editorCommand;
+
+  QColor  m_colorBackground;
+
+public slots:
+  void accept();
+
+private slots:
+  void on_soundCardRadioButton_toggled(bool checked);
+  void on_cbXpol_stateChanged(int arg1);
+  void on_cal570SpinBox_valueChanged(double ppm);
+  void on_mult570SpinBox_valueChanged(int mult);
+  void on_sbBackgroundRed_valueChanged(int arg1);
+  void on_sbBackgroundGreen_valueChanged(int arg1);
+  void on_sbBackgroundBlue_valueChanged(int arg1);
+  void updateColorLabels(void);
+  void on_sbRed0_valueChanged(int arg1);
+  void on_sbGreen0_valueChanged(int arg1);
+  void on_sbBlue0_valueChanged(int arg1);
+  void on_sbRed1_valueChanged(int arg1);
+  void on_sbGreen1_valueChanged(int arg1);
+  void on_sbBlue1_valueChanged(int arg1);
+  void on_sbRed2_valueChanged(int arg1);
+  void on_sbGreen2_valueChanged(int arg1);
+  void on_sbBlue2_valueChanged(int arg1);
+  void on_sbRed3_valueChanged(int arg1);
+  void on_sbGreen3_valueChanged(int arg1);
+  void on_sbBlue3_valueChanged(int arg1);
+  void on_pushButton_5_clicked();
+  void on_mult570TxSpinBox_valueChanged(int arg1);
+  void on_rbIQXT_toggled(bool checked);  
+  void on_sbTxOffset_valueChanged(double f);
+  void on_sb_dB_valueChanged(int n);
+
+private:
+  int r,g,b,r0,g0,b0,r1,g1,b1,r2,g2,b2,r3,g3,b3;
+  Ui::DialogSndCard ui;
+};
+
+#endif // DEVSETUP_H
diff --git a/q65w/devsetup.ui b/q65w/devsetup.ui
new file mode 100644
index 000000000..48f2a0b2c
--- /dev/null
+++ b/q65w/devsetup.ui
@@ -0,0 +1,1813 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DialogSndCard</class>
+ <widget class="QDialog" name="DialogSndCard">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>463</width>
+    <height>390</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Setup / Options</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="QTabWidget" name="ioTabWidget">
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="tab">
+      <attribute name="title">
+       <string>Station</string>
+      </attribute>
+      <widget class="QWidget" name="layoutWidget">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>34</y>
+         <width>421</width>
+         <height>275</height>
+        </rect>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_6">
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_2">
+          <item>
+           <layout class="QVBoxLayout" name="verticalLayout">
+            <item>
+             <widget class="QLabel" name="label">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>My Call:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_2">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>My Grid:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_3">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>ID Interval (min):</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_4">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>PTT Port:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_7">
+              <property name="text">
+               <string>Astro Font Size:</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <layout class="QVBoxLayout" name="verticalLayout_3">
+            <item>
+             <widget class="QLineEdit" name="myCallEntry">
+              <property name="maximumSize">
+               <size>
+                <width>60</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>K1JT</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="myGridEntry">
+              <property name="maximumSize">
+               <size>
+                <width>60</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>FN20qi</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="idIntSpinBox">
+              <property name="minimum">
+               <number>-20</number>
+              </property>
+              <property name="maximum">
+               <number>10</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QComboBox" name="pttComboBox">
+              <property name="maximumSize">
+               <size>
+                <width>60</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="editable">
+               <bool>false</bool>
+              </property>
+              <item>
+               <property name="text">
+                <string>None</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM1</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM2</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM3</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM4</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM5</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM6</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM7</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM8</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM9</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM10</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM11</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM12</string>
+               </property>
+              </item>
+              <item>
+               <property name="text">
+                <string>COM13</string>
+               </property>
+              </item>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="astroFont">
+              <property name="minimum">
+               <number>12</number>
+              </property>
+              <property name="maximum">
+               <number>32</number>
+              </property>
+              <property name="value">
+               <number>20</number>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_2">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <layout class="QVBoxLayout" name="verticalLayout_4">
+            <item>
+             <widget class="QLabel" name="label_5">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>DXCC:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_8">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Timeout (min):</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_9">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Fcal (Hz):</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_11">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Fadd (MHz)</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <spacer name="verticalSpacer">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <layout class="QVBoxLayout" name="verticalLayout_5">
+            <item>
+             <widget class="QLineEdit" name="dxccEntry">
+              <property name="maximumSize">
+               <size>
+                <width>16777215</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>PJ9</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="timeoutSpinBox">
+              <property name="maximum">
+               <number>40</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="fCalSpinBox">
+              <property name="minimum">
+               <number>-20000</number>
+              </property>
+              <property name="maximum">
+               <number>20000</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="faddEntry">
+              <property name="text">
+               <string>0.0</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <spacer name="verticalSpacer_3">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="antennaGroupBox">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>0</width>
+            <height>55</height>
+           </size>
+          </property>
+          <property name="title">
+           <string>Antennas:</string>
+          </property>
+          <widget class="QWidget" name="layoutWidget_1">
+           <property name="geometry">
+            <rect>
+             <x>10</x>
+             <y>23</y>
+             <width>321</width>
+             <height>22</height>
+            </rect>
+           </property>
+           <layout class="QHBoxLayout" name="horizontalLayout_5">
+            <item>
+             <spacer name="horizontalSpacer_10">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QCheckBox" name="cbXpol">
+              <property name="text">
+               <string>Xpol</string>
+              </property>
+              <property name="checked">
+               <bool>true</bool>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <spacer name="horizontalSpacer_9">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="rbAntenna">
+              <property name="text">
+               <string>+</string>
+              </property>
+              <property name="checked">
+               <bool>true</bool>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="rbAntennaX">
+              <property name="text">
+               <string>x</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <spacer name="horizontalSpacer_3">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QLabel" name="labelDphi">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Dphi:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="dPhiSpinBox">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="minimum">
+               <number>-180</number>
+              </property>
+              <property name="maximum">
+               <number>180</number>
+              </property>
+              <property name="singleStep">
+               <number>10</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <spacer name="horizontalSpacer_4">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_3">
+          <item>
+           <widget class="QLabel" name="label_10">
+            <property name="minimumSize">
+             <size>
+              <width>80</width>
+              <height>20</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Save Directory:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="saveDirEntry">
+            <property name="text">
+             <string>C:\Users\joe\wsjt\map65\save</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_4">
+          <item>
+           <widget class="QLabel" name="label_6">
+            <property name="minimumSize">
+             <size>
+              <width>80</width>
+              <height>20</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>AzEl Directory:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="azelDirEntry">
+            <property name="text">
+             <string>C:\Users\joe\wsjt\map65</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_18">
+          <item>
+           <widget class="QLabel" name="label_23">
+            <property name="minimumSize">
+             <size>
+              <width>80</width>
+              <height>20</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Editor command:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="editorEntry">
+            <property name="maximumSize">
+             <size>
+              <width>328</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>notepad</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+     <widget class="QWidget" name="tab_2">
+      <attribute name="title">
+       <string>I/O Devices</string>
+      </attribute>
+      <widget class="QWidget" name="layoutWidget_2">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>10</y>
+         <width>361</width>
+         <height>291</height>
+        </rect>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_8">
+        <item>
+         <widget class="QGroupBox" name="groupBox_2">
+          <property name="title">
+           <string>Input Source (Rx, Baseband)</string>
+          </property>
+          <widget class="QWidget" name="layoutWidget_3">
+           <property name="geometry">
+            <rect>
+             <x>13</x>
+             <y>14</y>
+             <width>341</width>
+             <height>211</height>
+            </rect>
+           </property>
+           <layout class="QVBoxLayout" name="verticalLayout_7">
+            <item>
+             <layout class="QHBoxLayout" name="horizontalLayout">
+              <item>
+               <widget class="QRadioButton" name="soundCardRadioButton">
+                <property name="enabled">
+                 <bool>true</bool>
+                </property>
+                <property name="text">
+                 <string>SoundCard</string>
+                </property>
+                <property name="checked">
+                 <bool>false</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QRadioButton" name="networkRadioButton">
+                <property name="text">
+                 <string>Network</string>
+                </property>
+                <property name="checked">
+                 <bool>true</bool>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item>
+             <layout class="QHBoxLayout" name="horizontalLayout_8">
+              <item>
+               <widget class="QCheckBox" name="cbIQswap">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>0</width>
+                  <height>20</height>
+                 </size>
+                </property>
+                <property name="text">
+                 <string>Swap I/Q</string>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="sb_dB">
+                <property name="toolTip">
+                 <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Adjust to scale digital I/Q data.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+                </property>
+                <property name="suffix">
+                 <string>  dB</string>
+                </property>
+                <property name="prefix">
+                 <string>Gain  </string>
+                </property>
+                <property name="minimum">
+                 <number>-50</number>
+                </property>
+                <property name="maximum">
+                 <number>10</number>
+                </property>
+                <property name="singleStep">
+                 <number>1</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_11">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>40</width>
+                  <height>20</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+              <item>
+               <widget class="QSpinBox" name="sbPort">
+                <property name="minimumSize">
+                 <size>
+                  <width>57</width>
+                  <height>0</height>
+                 </size>
+                </property>
+                <property name="minimum">
+                 <number>20000</number>
+                </property>
+                <property name="maximum">
+                 <number>51000</number>
+                </property>
+                <property name="value">
+                 <number>50004</number>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <widget class="QLabel" name="label_Port">
+                <property name="sizePolicy">
+                 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                  <horstretch>0</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="minimumSize">
+                 <size>
+                  <width>26</width>
+                  <height>0</height>
+                 </size>
+                </property>
+                <property name="maximumSize">
+                 <size>
+                  <width>16777215</width>
+                  <height>20</height>
+                 </size>
+                </property>
+                <property name="text">
+                 <string>Port</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </item>
+            <item>
+             <widget class="QLabel" name="label_InputDev">
+              <property name="enabled">
+               <bool>false</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="text">
+               <string>Dev Ch API      Name</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <layout class="QHBoxLayout" name="horizontalLayout_7">
+              <item>
+               <widget class="QComboBox" name="comboBoxSndIn">
+                <property name="enabled">
+                 <bool>false</bool>
+                </property>
+               </widget>
+              </item>
+              <item>
+               <spacer name="horizontalSpacer_8">
+                <property name="orientation">
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="sizeType">
+                 <enum>QSizePolicy::Fixed</enum>
+                </property>
+                <property name="sizeHint" stdset="0">
+                 <size>
+                  <width>50</width>
+                  <height>13</height>
+                 </size>
+                </property>
+               </spacer>
+              </item>
+             </layout>
+            </item>
+            <item>
+             <spacer name="verticalSpacer_2">
+              <property name="orientation">
+               <enum>Qt::Vertical</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>20</width>
+                <height>13</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QGroupBox" name="groupBox_3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>16777215</width>
+                <height>60</height>
+               </size>
+              </property>
+              <property name="title">
+               <string>Sample Rate</string>
+              </property>
+              <widget class="QWidget" name="layoutWidget_4">
+               <property name="geometry">
+                <rect>
+                 <x>30</x>
+                 <y>20</y>
+                 <width>282</width>
+                 <height>22</height>
+                </rect>
+               </property>
+               <layout class="QHBoxLayout" name="horizontalLayout_6">
+                <item>
+                 <spacer name="horizontalSpacer_5">
+                  <property name="orientation">
+                   <enum>Qt::Horizontal</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>40</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="rb96000">
+                  <property name="text">
+                   <string>96000 Hz</string>
+                  </property>
+                  <property name="checked">
+                   <bool>true</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="horizontalSpacer_6">
+                  <property name="orientation">
+                   <enum>Qt::Horizontal</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>40</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QRadioButton" name="rb95238">
+                  <property name="text">
+                   <string>95238 Hz</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <spacer name="horizontalSpacer_7">
+                  <property name="orientation">
+                   <enum>Qt::Horizontal</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>40</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+               </layout>
+              </widget>
+             </widget>
+            </item>
+           </layout>
+          </widget>
+         </widget>
+        </item>
+        <item>
+         <widget class="QGroupBox" name="groupBox">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>16777215</width>
+            <height>55</height>
+           </size>
+          </property>
+          <property name="title">
+           <string>Output Device (Tx Audio)</string>
+          </property>
+          <widget class="QComboBox" name="comboBoxSndOut">
+           <property name="geometry">
+            <rect>
+             <x>10</x>
+             <y>20</y>
+             <width>291</width>
+             <height>22</height>
+            </rect>
+           </property>
+          </widget>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+     <widget class="QWidget" name="tab_4">
+      <attribute name="title">
+       <string>Colors</string>
+      </attribute>
+      <widget class="QWidget" name="layoutWidget_5">
+       <property name="geometry">
+        <rect>
+         <x>12</x>
+         <y>21</y>
+         <width>351</width>
+         <height>281</height>
+        </rect>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_10">
+        <item>
+         <widget class="QLabel" name="label_14">
+          <property name="font">
+           <font>
+            <pointsize>10</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>Choose colors for Band Map and Messages Windows</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignCenter</set>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_17">
+          <item>
+           <spacer name="horizontalSpacer_17">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>80</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_20">
+            <property name="text">
+             <string>Red</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_19">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>31</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_21">
+            <property name="text">
+             <string>Green</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_20">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>34</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_22">
+            <property name="text">
+             <string>Blue</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_18">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>80</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_11">
+          <item>
+           <widget class="QLabel" name="label_15">
+            <property name="maximumSize">
+             <size>
+              <width>60</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Background</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbBackgroundRed">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbBackgroundGreen">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbBackgroundBlue">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>102</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_14">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>55</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_12">
+          <item>
+           <widget class="QLabel" name="label_16">
+            <property name="maximumSize">
+             <size>
+              <width>60</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Newest</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbRed0">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbGreen0">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbBlue0">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="lab0">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>50</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="font">
+             <font>
+              <family>Courier New</family>
+              <pointsize>9</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string> K1ABC</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_13">
+          <item>
+           <widget class="QLabel" name="label_17">
+            <property name="maximumSize">
+             <size>
+              <width>60</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>2nd</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbRed1">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbGreen1">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbBlue1">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="lab1">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>50</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="font">
+             <font>
+              <family>Courier New</family>
+              <pointsize>9</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string> K1ABC</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_14">
+          <item>
+           <widget class="QLabel" name="label_18">
+            <property name="maximumSize">
+             <size>
+              <width>60</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>3rd</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbRed2">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>150</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbGreen2">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>150</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbBlue2">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>150</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="lab2">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>50</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="font">
+             <font>
+              <family>Courier New</family>
+              <pointsize>9</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string> K1ABC</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_15">
+          <item>
+           <widget class="QLabel" name="label_19">
+            <property name="maximumSize">
+             <size>
+              <width>60</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Oldest</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbRed3">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>100</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbGreen3">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>100</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbBlue3">
+            <property name="maximum">
+             <number>255</number>
+            </property>
+            <property name="value">
+             <number>100</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="lab3">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>50</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="font">
+             <font>
+              <family>Courier New</family>
+              <pointsize>9</pointsize>
+             </font>
+            </property>
+            <property name="text">
+             <string> K1ABC</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_16">
+          <item>
+           <spacer name="horizontalSpacer_15">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QPushButton" name="pushButton_5">
+            <property name="text">
+             <string>Color Selector</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_16">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+     <widget class="QWidget" name="tab_3">
+      <attribute name="title">
+       <string>Si570 Control</string>
+      </attribute>
+      <widget class="QWidget" name="layoutWidget_6">
+       <property name="geometry">
+        <rect>
+         <x>41</x>
+         <y>41</y>
+         <width>272</width>
+         <height>248</height>
+        </rect>
+       </property>
+       <layout class="QGridLayout" name="gridLayout">
+        <item row="0" column="0">
+         <layout class="QHBoxLayout" name="horizontalLayout_19">
+          <item>
+           <widget class="QLabel" name="label_24">
+            <property name="text">
+             <string>LO Selection:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="rbSi570">
+            <property name="text">
+             <string>IQ+, Generic Si570</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="rbIQXT">
+            <property name="text">
+             <string>IQ+  Rx/XT</string>
+            </property>
+            <property name="checked">
+             <bool>false</bool>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item row="1" column="0">
+         <spacer name="verticalSpacer_4">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Fixed</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="2" column="0">
+         <layout class="QHBoxLayout" name="horizontalLayout_9">
+          <item>
+           <widget class="QLabel" name="label_12">
+            <property name="text">
+             <string>Rx frequency multiplier:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_12">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Preferred</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>47</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="mult570SpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>80</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="minimum">
+             <number>1</number>
+            </property>
+            <property name="maximum">
+             <number>8</number>
+            </property>
+            <property name="value">
+             <number>2</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item row="3" column="0">
+         <layout class="QHBoxLayout" name="horizontalLayout_21">
+          <item>
+           <widget class="QLabel" name="label_26">
+            <property name="text">
+             <string>Tx Offset (MHz):</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_22">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>40</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QDoubleSpinBox" name="sbTxOffset">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>80</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="decimals">
+             <number>3</number>
+            </property>
+            <property name="maximum">
+             <double>150.000000000000000</double>
+            </property>
+            <property name="value">
+             <double>130.900000000000006</double>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item row="4" column="0">
+         <layout class="QHBoxLayout" name="horizontalLayout_20">
+          <item>
+           <widget class="QLabel" name="label_25">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="text">
+             <string>Tx frequency multiplier:</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_21">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Preferred</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>47</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="mult570TxSpinBox">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>80</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="value">
+             <number>1</number>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item row="5" column="0">
+         <layout class="QHBoxLayout" name="horizontalLayout_10">
+          <item>
+           <widget class="QLabel" name="label_13">
+            <property name="text">
+             <string>Frequency correction (ppm):</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="horizontalSpacer_13">
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Preferred</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>10</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QDoubleSpinBox" name="cal570SpinBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>80</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="decimals">
+             <number>3</number>
+            </property>
+            <property name="minimum">
+             <double>-200.000000000000000</double>
+            </property>
+            <property name="maximum">
+             <double>200.000000000000000</double>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item row="6" column="0">
+         <spacer name="verticalSpacer_5">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Fixed</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="7" column="0">
+         <widget class="QCheckBox" name="cbInitIQplus">
+          <property name="text">
+           <string>Initialize IQ+  on startup</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>DialogSndCard</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>257</x>
+     <y>380</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>DialogSndCard</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>325</x>
+     <y>380</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/q65w/displaytext.cpp b/q65w/displaytext.cpp
new file mode 100644
index 000000000..4d7286d3b
--- /dev/null
+++ b/q65w/displaytext.cpp
@@ -0,0 +1,15 @@
+#include "displaytext.h"
+#include <QDebug>
+#include <QMouseEvent>
+
+DisplayText::DisplayText(QWidget *parent) :
+    QTextBrowser(parent)
+{
+}
+
+void DisplayText::mouseDoubleClickEvent(QMouseEvent *e)
+{
+  bool ctrl = (e->modifiers() & 0x4000000);
+  emit(selectCallsign(ctrl));
+  QTextBrowser::mouseDoubleClickEvent(e);
+}
diff --git a/q65w/displaytext.h b/q65w/displaytext.h
new file mode 100644
index 000000000..4553d53fb
--- /dev/null
+++ b/q65w/displaytext.h
@@ -0,0 +1,22 @@
+#ifndef DISPLAYTEXT_H
+#define DISPLAYTEXT_H
+
+#include <QTextBrowser>
+
+class DisplayText : public QTextBrowser
+{
+    Q_OBJECT
+public:
+    explicit DisplayText(QWidget *parent = 0);
+
+signals:
+  void selectCallsign(bool ctrl);
+
+public slots:
+
+protected:
+  void mouseDoubleClickEvent(QMouseEvent *e);
+
+};
+
+#endif // DISPLAYTEXT_H
diff --git a/q65w/ffft.f b/q65w/ffft.f
new file mode 100644
index 000000000..9c3c091a7
--- /dev/null
+++ b/q65w/ffft.f
@@ -0,0 +1,69 @@
+	subroutine ffft(d,npts,isign,ireal)
+
+C  Fourier transform of length npts=2**k, performed in place.
+C  Input data in array d, treated as complex if ireal=0, and as real if ireal=1.
+C  In either case the transform values are returned in array d, treated as
+C  complex. The DC term is d(1), and d(npts/2+1) is the term at the Nyquist
+C  frequency.  The basic algorithm is the same as Norm Brenner's FOUR1, and
+C  uses radix-2 transforms.
+
+C  J. H. Taylor, Princeton University.
+
+	complex d(npts),t,w,wstep,tt,uu
+	data pi/3.14159265359/
+
+C  Shuffle the data to bit-reversed order.
+
+	imax=npts/(ireal+1)
+	irev=1
+	do 5 i=1,imax
+	if(i.ge.irev) go to 2
+	t=d(i)
+	d(i)=d(irev)
+	d(irev)=t
+2	mmax=imax/2
+3	if(irev.le.mmax) go to 5
+	irev=irev-mmax
+	mmax=mmax/2
+	if(mmax.ge.1) go to 3
+5	irev=irev+mmax
+
+C  The radix-2 transform begins here.
+
+	api=isign*pi/2.
+	mmax=1
+6	istep=2*mmax
+	wstep=cmplx(-2.*sin(api/mmax)**2,sin(2.*api/mmax))
+	w=1.
+	do 9 m=1,mmax
+
+C  This in the inner-most loop -- optimization here is important!
+	do 8 i=m,imax,istep
+	t=w*d(i+mmax)
+	d(i+mmax)=d(i)-t
+8	d(i)=d(i)+t
+
+9	w=w*(1.+wstep)
+	mmax=istep
+	if(mmax.lt.imax) go to 6
+
+	if(ireal.eq.0) return
+
+C  Now complete the last stage of a doubled-up real transform.
+
+	jmax=imax/2 + 1
+	wstep=cmplx(-2.*sin(isign*pi/npts)**2,sin(isign*pi/imax))
+	w=1.0
+	d(imax+1)=d(1)
+
+	do 10 j=1,jmax
+	uu=cmplx(real(d(j))+real(d(2+imax-j)),aimag(d(j)) - 
+     +    aimag(d(2+imax-j)))
+	tt=w*cmplx(aimag(d(j))+aimag(d(2+imax-j)),-real(d(j)) +
+     +    real(d(2+imax-j)))
+	d(j)=uu+tt
+	d(2+imax-j)=conjg(uu-tt)
+10	w=w*(1.+wstep)
+
+	return
+	end
diff --git a/q65w/ft2000_freq.sh b/q65w/ft2000_freq.sh
new file mode 100644
index 000000000..8bf9d07e9
--- /dev/null
+++ b/q65w/ft2000_freq.sh
@@ -0,0 +1 @@
+rigctl-wsjtx -m 129 -r COM1 -s 38400 -C data_bits=8 -C stop_bits=2 -C serial_handshake=Hardware f
diff --git a/q65w/getdev.cpp b/q65w/getdev.cpp
new file mode 100644
index 000000000..45addfa01
--- /dev/null
+++ b/q65w/getdev.cpp
@@ -0,0 +1,259 @@
+#include <stdio.h>
+#define MAXDEVICES 100
+#include <string.h>
+#include <portaudio.h>
+#include <QDebug>
+
+//------------------------------------------------------- pa_get_device_info
+int pa_get_device_info (int  n,
+                        void *pa_device_name,
+                        void *pa_device_hostapi,
+                        double *pa_device_max_speed,
+                        double *pa_device_min_speed,
+                        int *pa_device_max_bytes,
+                        int *pa_device_min_bytes,
+                        int *pa_device_max_channels,
+                        int *pa_device_min_channels )
+{
+
+  (void) n ;
+  (void) pa_device_name;
+  (void) pa_device_hostapi;
+  (void) pa_device_max_speed;
+  (void) pa_device_min_speed;
+  (void) pa_device_max_bytes;
+  (void) pa_device_min_bytes;
+  (void) pa_device_max_channels;
+  (void) pa_device_min_channels;
+  const PaDeviceInfo *deviceInfo;
+  PaError pa_err;
+  PaStreamParameters inputParameters;
+  int i,j, speed_warning;
+  int minBytes, maxBytes;
+  double maxStandardSampleRate;
+  double minStandardSampleRate;
+  int minInputChannels;
+  int maxInputChannels;
+
+// negative terminated  list
+  static double standardSampleRates[] = {8000.0, 9600.0,
+        11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0,
+        44100.0, 48000.0, 88200.0, 96000.0, 192000.0, -1};
+// *******************************************************
+
+
+  *pa_device_max_speed=0;
+  *pa_device_min_speed=0;
+  *pa_device_max_bytes=0;
+  *pa_device_min_bytes=0;
+  *pa_device_max_channels=0;
+  *pa_device_min_channels=0;
+  minInputChannels=0;
+  if(n >= Pa_GetDeviceCount() ) return -1;
+  deviceInfo = Pa_GetDeviceInfo(n);
+  if (deviceInfo->maxInputChannels==0) return -1;
+  sprintf((char*)(pa_device_name),"%s",deviceInfo->name);
+  sprintf((char*)(pa_device_hostapi),"%s",
+          Pa_GetHostApiInfo( deviceInfo->hostApi )->name);
+  speed_warning=0;
+
+// bypass bug in Juli@ ASIO driver:
+// this driver hangs after a Pa_IsFormatSupported call
+  i = strncmp(deviceInfo->name, "ASIO 2.0 - ESI Juli@", 19);
+  if (i == 0) {
+    minStandardSampleRate=44100;
+    maxStandardSampleRate=192000;
+    minBytes=1;
+    maxBytes=4;
+    maxInputChannels= deviceInfo->maxInputChannels;
+    minInputChannels= 1;
+    goto end_pa_get_device_info;
+  }
+
+// Investigate device capabilities.
+// Check min and max samplerates  with 16 bit data.
+  maxStandardSampleRate=0;
+  minStandardSampleRate=0;
+  inputParameters.device = n;
+  inputParameters.channelCount = deviceInfo->maxInputChannels;
+  inputParameters.sampleFormat = paInt16;
+  inputParameters.suggestedLatency = 0;
+  inputParameters.hostApiSpecificStreamInfo = NULL;
+
+// ************************************************************************
+//filter for portaudio Windows hostapi's with non experts.
+//only allow ASIO or WASAPI or WDM-KS
+  i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, "ASIO", 4);
+  if (i==0 ) goto end_filter_hostapi;
+  i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name,
+              "Windows WASAPI", 14);
+  if (i==0 ) goto end_filter_hostapi;
+  i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name,
+              "Windows WDM-KS", 14);
+  if (i==0 ) goto end_filter_hostapi;
+  speed_warning=1;
+end_filter_hostapi:;
+
+// ************************************************************************
+  i=0;
+  while(standardSampleRates[i] > 0 && minStandardSampleRate==0) {
+    pa_err=Pa_IsFormatSupported(&inputParameters, NULL,
+                                standardSampleRates[i] );
+    if(pa_err == paDeviceUnavailable) return -1;
+    if(pa_err == paInvalidDevice) return -1;
+    if(pa_err == paFormatIsSupported ) {
+      minStandardSampleRate=standardSampleRates[i];
+    }
+    i++;
+  }
+  if(minStandardSampleRate == 0) return -1;
+  j=i;
+  while(standardSampleRates[i] > 0 ) i++;
+  i--;
+
+  while(i >= j && maxStandardSampleRate==0) {
+    pa_err=Pa_IsFormatSupported(&inputParameters, NULL,
+                                  standardSampleRates[i] );
+    if(pa_err == paDeviceUnavailable) return -1;
+    if(pa_err == paInvalidDevice) return -1;
+    if( pa_err == paFormatIsSupported ) {
+      maxStandardSampleRate=standardSampleRates[i];
+    }
+    i--;
+  }
+
+// check if min SampleRate  = max SampleRate
+  if(maxStandardSampleRate==0 && (minStandardSampleRate != 0)) {
+    maxStandardSampleRate= minStandardSampleRate;
+  }
+
+// check min and max bytes
+  minBytes=2;
+  maxBytes=2;
+  inputParameters.sampleFormat = paUInt8;
+  pa_err=Pa_IsFormatSupported(&inputParameters, NULL,
+                                maxStandardSampleRate );
+  if( pa_err == paFormatIsSupported ) {
+    minBytes=1;
+  }
+    inputParameters.sampleFormat = paInt32;
+    pa_err=Pa_IsFormatSupported(&inputParameters, NULL,
+                                maxStandardSampleRate );
+  if( pa_err == paFormatIsSupported ) {
+    maxBytes=4;
+  }
+
+// check min channel count
+  maxInputChannels= deviceInfo->maxInputChannels;
+  inputParameters.channelCount = 1;
+  inputParameters.sampleFormat = paInt16;
+  pa_err=paFormatIsSupported+32000;
+  while(pa_err != paFormatIsSupported &&
+          ( inputParameters.channelCount < (maxInputChannels+1)) ) {
+    pa_err=Pa_IsFormatSupported(&inputParameters, NULL,
+                                maxStandardSampleRate );
+    inputParameters.channelCount++;
+  }
+  if( pa_err == paFormatIsSupported ) {
+    minInputChannels=inputParameters.channelCount-1;
+  } else {
+    return -1;
+  }
+
+end_pa_get_device_info:;
+
+  *pa_device_max_speed=maxStandardSampleRate;
+  *pa_device_min_speed=minStandardSampleRate;
+  *pa_device_max_bytes=maxBytes;
+  *pa_device_min_bytes=minBytes;
+  *pa_device_max_channels= maxInputChannels;
+  *pa_device_min_channels= minInputChannels;
+
+  return speed_warning;
+}
+
+
+void paInputDevice(int id, char* hostAPI_DeviceName, int* minChan,
+                   int* maxChan, int* minSpeed, int* maxSpeed)
+{
+  int i;
+  char pa_device_name[128];
+  char pa_device_hostapi[128];
+  double pa_device_max_speed;
+  double pa_device_min_speed;
+  int pa_device_max_bytes;
+  int pa_device_min_bytes;
+  int pa_device_max_channels;
+  int pa_device_min_channels;
+  char p2[256];
+  char *p,*p1;
+  static int iret, valid_dev_cnt;
+
+  iret=pa_get_device_info (id,
+                          &pa_device_name,
+                          &pa_device_hostapi,
+                          &pa_device_max_speed,
+                          &pa_device_min_speed,
+                          &pa_device_max_bytes,
+                          &pa_device_min_bytes,
+                          &pa_device_max_channels,
+                          &pa_device_min_channels);
+
+  if (iret >= 0 ) {
+    valid_dev_cnt++;
+
+    p1=(char*)"";
+    p=strstr(pa_device_hostapi,"MME");
+    if(p!=NULL) p1=(char*)"MME";
+    p=strstr(pa_device_hostapi,"Direct");
+    if(p!=NULL) p1=(char*)"DirectX";
+    p=strstr(pa_device_hostapi,"WASAPI");
+    if(p!=NULL) p1=(char*)"WASAPI";
+    p=strstr(pa_device_hostapi,"ASIO");
+    if(p!=NULL) p1=(char*)"ASIO";
+    p=strstr(pa_device_hostapi,"WDM-KS");
+    if(p!=NULL) p1=(char*)"WDM-KS";
+
+    sprintf(p2,"%-8s %-39s",p1,pa_device_name);
+    for(i=0; i<50; i++) {
+      hostAPI_DeviceName[i]=p2[i];
+      if(p2[i]==0) break;
+    }
+    *minChan=pa_device_min_channels;
+    *maxChan=pa_device_max_channels;
+    *minSpeed=(int)pa_device_min_speed;
+    *maxSpeed=(int)pa_device_max_speed;
+  } else {
+    for(i=0; i<50; i++) {
+      hostAPI_DeviceName[i]=0;
+    }
+    *minChan=0;
+    *maxChan=0;
+    *minSpeed=0;
+    *maxSpeed=0;
+  }
+}
+
+void getDev(int* numDevices0, char hostAPI_DeviceName[][50],
+            int minChan[], int maxChan[],
+            int minSpeed[], int maxSpeed[])
+{
+  int i,id,numDevices;
+  int minch,maxch,minsp,maxsp;
+  char apidev[256];
+
+  numDevices=Pa_GetDeviceCount();
+  *numDevices0=numDevices;
+
+  for(id=0; id<numDevices; id++)  {
+    paInputDevice(id,apidev,&minch,&maxch,&minsp,&maxsp);
+    for(i=0; i<50; i++) {
+      hostAPI_DeviceName[id][i]=apidev[i];
+    }
+    hostAPI_DeviceName[id][49]=0;
+    minChan[id]=minch;
+    maxChan[id]=maxch;
+    minSpeed[id]=minsp;
+    maxSpeed[id]=maxsp;
+  }
+}
diff --git a/q65w/getfile.cpp b/q65w/getfile.cpp
new file mode 100644
index 000000000..3b9ed2fe8
--- /dev/null
+++ b/q65w/getfile.cpp
@@ -0,0 +1,107 @@
+#include "getfile.h"
+#include <QDir>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+extern qint16 id[4*60*96000];
+
+void getfile(QString fname, bool xpol, int dbDgrd)
+{
+  int npts=2*56*96000;
+  if(xpol) npts=2*npts;
+
+// Degrade S/N by dbDgrd dB -- for tests only!!
+  float dgrd=0.0;
+  if(dbDgrd<0) dgrd = 23.0*sqrt(pow(10.0,-0.1*(double)dbDgrd) - 1.0);
+  float fac=23.0/sqrt(dgrd*dgrd + 23.0*23.0);
+
+  memset(id,0,2*npts);
+  char name[80];
+  strcpy(name,fname.toLocal8Bit());
+  FILE* fp=fopen(name,"rb");
+
+  if(fp != NULL) {
+    auto n = fread(&datcom_.fcenter,sizeof(datcom_.fcenter),1,fp);
+    n = fread(id,2,npts,fp);
+    Q_UNUSED (n);
+    int j=0;
+
+    if(dbDgrd<0) {
+      for(int i=0; i<npts; i+=2) {
+        datcom_.d4[j++]=fac*((float)id[i] + dgrd*gran());
+        datcom_.d4[j++]=fac*((float)id[i+1] + dgrd*gran());
+        if(!xpol) j+=2;               //Skip over d4(3,x) and d4(4,x)
+      }
+    } else {
+      for(int i=0; i<npts; i+=2) {
+        datcom_.d4[j++]=(float)id[i];
+        datcom_.d4[j++]=(float)id[i+1];
+        if(!xpol) j+=2;               //Skip over d4(3,x) and d4(4,x)
+      }
+    }
+    fclose(fp);
+
+    datcom_.ndiskdat=1;
+    int nfreq=(int)datcom_.fcenter;
+    if(nfreq!=144 and nfreq != 432 and nfreq != 1296) datcom_.fcenter=144.125;
+    int i0=fname.indexOf(".tf2");
+    if(i0<0) i0=fname.indexOf(".iq");
+    datcom_.nutc=0;
+    if(i0>0) {
+      datcom_.nutc=100*fname.mid(i0-4,2).toInt() + fname.mid(i0-2,2).toInt();
+    }
+  }
+}
+
+void savetf2(QString fname, bool xpol)
+{
+  int npts=2*56*96000;
+  if(xpol) npts=2*npts;
+
+  qint16* buf=(qint16*)malloc(2*npts);
+  char name[80];
+  strcpy(name,fname.toLocal8Bit());
+  FILE* fp=fopen(name,"wb");
+
+  if(fp != NULL) {
+    fwrite(&datcom_.fcenter,sizeof(datcom_.fcenter),1,fp);
+    int j=0;
+    for(int i=0; i<npts; i+=2) {
+      buf[i]=(qint16)datcom_.d4[j++];
+      buf[i+1]=(qint16)datcom_.d4[j++];
+      if(!xpol) j+=2;               //Skip over d4(3,x) and d4(4,x)
+    }
+    fwrite(buf,2,npts,fp);
+    fclose(fp);
+  }
+  free(buf);
+}
+
+//#define	MAX_RANDOM	0x7fffffff
+
+/* Generate gaussian random float with mean=0 and std_dev=1 */
+float gran()
+{
+  float fac,rsq,v1,v2;
+  static float gset;
+  static int iset;
+
+  if(iset){
+    /* Already got one */
+    iset = 0;
+    return gset;
+  }
+  /* Generate two evenly distributed numbers between -1 and +1
+   * that are inside the unit circle
+   */
+  do {
+    v1 = 2.0 * (float)rand() / RAND_MAX - 1;
+    v2 = 2.0 * (float)rand() / RAND_MAX - 1;
+    rsq = v1*v1 + v2*v2;
+  } while(rsq >= 1.0 || rsq == 0.0);
+  fac = sqrt(-2.0*log(rsq)/rsq);
+  gset = v1*fac;
+  iset++;
+  return v2*fac;
+}
diff --git a/q65w/getfile.h b/q65w/getfile.h
new file mode 100644
index 000000000..796c31e5c
--- /dev/null
+++ b/q65w/getfile.h
@@ -0,0 +1,12 @@
+#ifndef GETFILE_H
+#define GETFILE_H
+#include <QString>
+#include <QFile>
+#include <QDebug>
+#include "commons.h"
+
+void getfile(QString fname, bool xpol, int dbDgrd);
+void savetf2(QString fname, bool xpol);
+float gran();
+
+#endif // GETFILE_H
diff --git a/q65w/getsvn.cmake b/q65w/getsvn.cmake
new file mode 100644
index 000000000..d1007b2c4
--- /dev/null
+++ b/q65w/getsvn.cmake
@@ -0,0 +1,16 @@
+find_package (Subversion)
+if (Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn)
+  # the FindSubversion.cmake module is part of the standard distribution
+  include (FindSubversion)
+  # extract working copy information for SOURCE_DIR into MY_XXX variables
+  Subversion_WC_INFO (${SOURCE_DIR} MY)
+  # write a file with the SVNVERSION define
+  file (WRITE svnversion.h.txt "#define SVNVERSION ${MY_WC_REVISION}\n")
+else (Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn)
+  file (WRITE svnversion.h.txt "#define SVNVERSION local\n")
+endif (Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn)
+
+# copy the file to the final header only if the version changes
+# reduces needless rebuilds
+execute_process (COMMAND ${CMAKE_COMMAND} -E copy_if_different
+  svnversion.h.txt svnversion.h)
diff --git a/q65w/in.dat b/q65w/in.dat
new file mode 100644
index 000000000..5294129cb
--- /dev/null
+++ b/q65w/in.dat
@@ -0,0 +1,16 @@
+  35  36  22   8  31  11  14  55  20  36  55  13  24  15  56  38  16  28  61  58
+  15  26  45   8  41  53  37  57  59  60  29  29  41  46  44  35  52  61  24  26
+  16  20  53  35   2   6   9  27  47  28  57   6  15   9  16  10  56   9  63  46
+   9  15   3
+  74  61  44 233  29 245 254  64 119  64 250 111  38 145  53  29 140 194 119  99
+  55  86  48 110 142  95  48 120  61  66 252 252 245  88  62  41 124 249 246  68
+ 250 249  65  64 140 142  88 190 237  90 240  52  79 216  55  31 112 135  66  44
+  99  57  68
+  54  61  26   5  13  60   3  56  30  58  57   4  16  43  28  43   6  61  13  19
+  56   8   4   9  45  32   9   7  14  52   4  38  40  27   3  26  51  54  40  29
+  36  63  34  43   3  48  36  49  46  30   8  20  40  59  29  28  17  11   8  19
+  11  63   5
+  38  25  35   8  28   0   0  60  60  25   0  31  28  52  14  24   9  30  18  54
+  49  55  48  15  27  54  26  22  30  27   1   1   4  31  35  29  23   2   2  27
+   0   1  25  32  21  84  28  19   5  60   2  27  15   9  39  23  42  12  29  17
+  16  50  49
diff --git a/q65w/killbyname.cpp b/q65w/killbyname.cpp
new file mode 100644
index 000000000..11629e657
--- /dev/null
+++ b/q65w/killbyname.cpp
@@ -0,0 +1,282 @@
+#include <windows.h>
+#include <tlhelp32.h>
+#include <iostream>
+
+int killbyname(const char *szToTerminate)
+// Created: 6/23/2000  (Ravi Kochhar)
+// Last modified: 3/10/2002  (RK)
+// Please report any problems or bugs to kochhar@physiology.wisc.edu
+// The latest version of this routine can be found at:
+//     http://www.neurophys.wisc.edu/ravi/software/killproc/
+// Terminate the process "szToTerminate" if it is currently running
+// This works for Win/95/98/ME and also Win/NT/2000/XP
+// The process name is case-insensitive, i.e. "notepad.exe" and "NOTEPAD.EXE"
+// will both work (for szToTerminate)
+// Return codes are as follows:
+//   0   = Process was successfully terminated
+//   602 = Unable to terminate process for some other reason
+//   603 = Process was not currently running
+//   604 = No permission to terminate process
+//   605 = Unable to load PSAPI.DLL
+//   606 = Unable to identify system type
+//   607 = Unsupported OS
+//   632 = Invalid process name
+//   700 = Unable to get procedure address from PSAPI.DLL
+//   701 = Unable to get process list, EnumProcesses failed
+//   702 = Unable to load KERNEL32.DLL
+//   703 = Unable to get procedure address from KERNEL32.DLL
+//   704 = CreateToolhelp32Snapshot failed
+
+{
+  BOOL bResult,bResultm;
+  DWORD aiPID[1000],iCb=1000,iNumProc;  //,iV2000=0;
+  DWORD iCbneeded,i,iFound=0;
+  char szName[MAX_PATH],szToTermUpper[MAX_PATH];
+  HANDLE hProc,hSnapShot,hSnapShotm;
+  OSVERSIONINFO osvi;
+  HINSTANCE hInstLib;
+  int iLenP,indx;
+  HMODULE hMod;
+  PROCESSENTRY32 procentry;
+  MODULEENTRY32 modentry;
+
+  // Transfer Process name into "szToTermUpper" and convert to upper case
+  iLenP=strlen(szToTerminate);
+  if(iLenP<1 || iLenP>MAX_PATH) return 632;
+  for(indx=0;indx<iLenP;indx++)
+    szToTermUpper[indx]=toupper(szToTerminate[indx]);
+  szToTermUpper[iLenP]=0;
+
+  // PSAPI Function Pointers.
+  BOOL (WINAPI *lpfEnumProcesses)( DWORD *, DWORD cb, DWORD * );
+  BOOL (WINAPI *lpfEnumProcessModules)( HANDLE, HMODULE *,
+                                        DWORD, LPDWORD );
+  DWORD (WINAPI *lpfGetModuleBaseName)( HANDLE, HMODULE,
+                                        LPTSTR, DWORD );
+
+  // ToolHelp Function Pointers.
+  HANDLE (WINAPI *lpfCreateToolhelp32Snapshot)(DWORD,DWORD) ;
+  BOOL (WINAPI *lpfProcess32First)(HANDLE,LPPROCESSENTRY32) ;
+  BOOL (WINAPI *lpfProcess32Next)(HANDLE,LPPROCESSENTRY32) ;
+  BOOL (WINAPI *lpfModule32First)(HANDLE,LPMODULEENTRY32) ;
+  BOOL (WINAPI *lpfModule32Next)(HANDLE,LPMODULEENTRY32) ;
+
+  // First check what version of Windows we're in
+  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+  bResult=GetVersionEx(&osvi);
+  if(!bResult) return 606;    // Unable to identify system version
+
+  // At Present we only support Win/NT/2000/XP or Win/9x/ME
+  // Seems to work OK in Win7
+  if((osvi.dwPlatformId != VER_PLATFORM_WIN32_NT) &&
+     (osvi.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS)) return 607;
+
+  if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT)
+  {
+    // Win/NT or 2000 or XP
+
+    // Load library and get the procedures explicitly. We do
+    // this so that we don't have to worry about modules using
+    // this code failing to load under Windows 9x, because
+    // it can't resolve references to the PSAPI.DLL.
+    hInstLib = LoadLibraryA("PSAPI.DLL");
+    if(hInstLib == NULL) return 605;
+
+    // Get procedure addresses.
+    lpfEnumProcesses = (BOOL(WINAPI *)(DWORD *,DWORD,DWORD*))(void (*)())
+        GetProcAddress( hInstLib, "EnumProcesses" ) ;
+    lpfEnumProcessModules = (BOOL(WINAPI *)(HANDLE, HMODULE *,
+                                            DWORD, LPDWORD))(void (*)()) GetProcAddress( hInstLib,                                                                     "EnumProcessModules" ) ;
+        lpfGetModuleBaseName =(DWORD (WINAPI *)(HANDLE, HMODULE, LPTSTR,
+                                                DWORD )) (void (*)())GetProcAddress( hInstLib, "GetModuleBaseNameA" ) ;
+
+    if(lpfEnumProcesses == NULL || lpfEnumProcessModules == NULL ||
+         lpfGetModuleBaseName == NULL) {
+      FreeLibrary(hInstLib);
+      return 700;
+    }
+
+    bResult=lpfEnumProcesses(aiPID,iCb,&iCbneeded);
+    if(!bResult) {
+      // Unable to get process list, EnumProcesses failed
+      FreeLibrary(hInstLib);
+      return 701;
+    }
+
+    // How many processes are there?
+    iNumProc=iCbneeded/sizeof(DWORD);
+
+    // Get and match the name of each process
+    for(i=0;i<iNumProc;i++) {
+      // Get the (module) name for this process
+      strcpy(szName,"Unknown");
+      // First, get a handle to the process
+      hProc=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,
+                        aiPID[i]);
+      // Now, get the process name
+      if(hProc) {
+        if(lpfEnumProcessModules(hProc,&hMod,sizeof(hMod),&iCbneeded) ) {
+          lpfGetModuleBaseName(hProc,hMod,szName,MAX_PATH);
+        }
+      }
+      CloseHandle(hProc);
+      // We will match regardless of lower or upper case
+      if(strcmp(_strupr(szName),szToTermUpper)==0) {
+        // Process found, now terminate it
+        iFound=1;
+        // First open for termination
+        hProc=OpenProcess(PROCESS_TERMINATE,FALSE,aiPID[i]);
+        if(hProc) {
+          if(TerminateProcess(hProc,0)) {
+            // process terminated
+            CloseHandle(hProc);
+            FreeLibrary(hInstLib);
+            return 0;
+          } else {
+            // Unable to terminate process
+            CloseHandle(hProc);
+            FreeLibrary(hInstLib);
+            return 602;
+          }
+        } else {
+          // Unable to open process for termination
+          FreeLibrary(hInstLib);
+          return 604;
+        }
+      }
+    }
+  }
+
+  if(osvi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
+  {
+    // Win/95 or 98 or ME
+
+    hInstLib = LoadLibraryA("Kernel32.DLL");
+    if( hInstLib == NULL )
+      return 702;
+
+    // Get procedure addresses.
+    // We are linking to these functions of Kernel32
+    // explicitly, because otherwise a module using
+    // this code would fail to load under Windows NT,
+    // which does not have the Toolhelp32
+    // functions in the Kernel 32.
+    lpfCreateToolhelp32Snapshot=
+      (HANDLE(WINAPI *)(DWORD,DWORD))(void (*)())
+        GetProcAddress( hInstLib,
+                        "CreateToolhelp32Snapshot" ) ;
+    lpfProcess32First=
+        (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))(void (*)())
+        GetProcAddress( hInstLib, "Process32First" ) ;
+    lpfProcess32Next=
+        (BOOL(WINAPI *)(HANDLE,LPPROCESSENTRY32))(void (*)())
+        GetProcAddress( hInstLib, "Process32Next" ) ;
+    lpfModule32First=
+        (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))(void (*)())
+        GetProcAddress( hInstLib, "Module32First" ) ;
+    lpfModule32Next=
+        (BOOL(WINAPI *)(HANDLE,LPMODULEENTRY32))(void (*)())
+        GetProcAddress( hInstLib, "Module32Next" ) ;
+    if( lpfProcess32Next == NULL ||
+        lpfProcess32First == NULL ||
+        lpfModule32Next == NULL ||
+        lpfModule32First == NULL ||
+        lpfCreateToolhelp32Snapshot == NULL )
+    {
+      FreeLibrary(hInstLib);
+      return 703;
+    }
+
+    // The Process32.. and Module32.. routines return names in all uppercase
+
+    // Get a handle to a Toolhelp snapshot of all the systems processes.
+
+    hSnapShot = lpfCreateToolhelp32Snapshot(
+          TH32CS_SNAPPROCESS, 0 ) ;
+    if( hSnapShot == INVALID_HANDLE_VALUE )
+    {
+      FreeLibrary(hInstLib);
+      return 704;
+    }
+
+    // Get the first process' information.
+    procentry.dwSize = sizeof(PROCESSENTRY32);
+    bResult=lpfProcess32First(hSnapShot,&procentry);
+
+    // While there are processes, keep looping and checking.
+    while(bResult)
+    {
+      // Get a handle to a Toolhelp snapshot of this process.
+      hSnapShotm = lpfCreateToolhelp32Snapshot(
+            TH32CS_SNAPMODULE, procentry.th32ProcessID) ;
+      if( hSnapShotm == INVALID_HANDLE_VALUE )
+      {
+        CloseHandle(hSnapShot);
+        FreeLibrary(hInstLib);
+        return 704;
+      }
+      // Get the module list for this process
+      modentry.dwSize=sizeof(MODULEENTRY32);
+      bResultm=lpfModule32First(hSnapShotm,&modentry);
+
+      // While there are modules, keep looping and checking
+      while(bResultm)
+      {
+        if(strcmp(modentry.szModule,szToTermUpper)==0)
+        {
+          // Process found, now terminate it
+          iFound=1;
+          // First open for termination
+          hProc=OpenProcess(PROCESS_TERMINATE,FALSE,procentry.th32ProcessID);
+          if(hProc)
+          {
+            if(TerminateProcess(hProc,0))
+            {
+              // process terminated
+              CloseHandle(hSnapShotm);
+              CloseHandle(hSnapShot);
+              CloseHandle(hProc);
+              FreeLibrary(hInstLib);
+              return 0;
+            }
+            else
+            {
+              // Unable to terminate process
+              CloseHandle(hSnapShotm);
+              CloseHandle(hSnapShot);
+              CloseHandle(hProc);
+              FreeLibrary(hInstLib);
+              return 602;
+            }
+          }
+          else
+          {
+            // Unable to open process for termination
+            CloseHandle(hSnapShotm);
+            CloseHandle(hSnapShot);
+            FreeLibrary(hInstLib);
+            return 604;
+          }
+        }
+        else
+        {  // Look for next modules for this process
+          modentry.dwSize=sizeof(MODULEENTRY32);
+          bResultm=lpfModule32Next(hSnapShotm,&modentry);
+        }
+      }
+
+      //Keep looking
+      CloseHandle(hSnapShotm);
+      procentry.dwSize = sizeof(PROCESSENTRY32);
+      bResult = lpfProcess32Next(hSnapShot,&procentry);
+    }
+    CloseHandle(hSnapShot);
+  }
+  if(iFound==0)
+  {
+    FreeLibrary(hInstLib);
+    return 603;
+  }
+  FreeLibrary(hInstLib);
+  return 0;
+}
diff --git a/q65w/libm65/CMakeLists.txt b/q65w/libm65/CMakeLists.txt
new file mode 100644
index 000000000..fe5ee170c
--- /dev/null
+++ b/q65w/libm65/CMakeLists.txt
@@ -0,0 +1,148 @@
+set (libm65_FSRCS
+# Modules come first:
+  wideband_sync.f90
+
+# Non-module Fortran routines:
+  afc65b.f90
+  astro.f90
+  astro0.f90
+  astrosub.f90
+  averms.f90
+  badmsg.f90
+  ccf2.f90
+  ccf65.f90
+  cgen65.f90
+  chkhist.f90
+  chkmsg.f90
+  coord.f90
+  dcoord.f90
+  decode0.f90
+  decode1a.f90
+  decode65b.f90
+  deep65.f90
+  deg2grid.f90
+  demod64a.f90
+  display.f90
+  dot.f90
+  dpol.f90
+  encode65.f90
+  extract.f90
+  fchisq.f90
+  fchisq0.f90
+  fil6521.f90
+  filbig.f90
+  fmtmsg.f90
+  four2a.f90
+  ftninit.f90
+  ftnquit.f90
+  q65b.f90
+  gen65.f90
+  gen_q65_cwave.f90
+  gen_q65_wave.f90
+  geocentric.f90
+  getdphi.f90
+  getpfx1.f90
+  getpfx2.f90
+  graycode.f90
+  graycode65.f90
+  grid2deg.f90
+  grid2k.f90
+  indexx.f90
+  interleave63.f90
+  iqcal.f90
+  iqfix.f90
+  jt65code.f90
+  k2grid.f90
+  lorentzian.f90
+  map65a.f90
+  moon2.f90
+  moondop.f90
+  nchar.f90
+  noisegen.f90
+  packjt.f90
+  pfxdump.f90
+  polfit.f90
+  recvpkt.f90
+  rfile3a.f90
+  s3avg.f90
+  sec_midn.f90
+  set.f90
+  setup65.f90
+  shell.f90
+  sleep_msec.f90
+  smo.f90
+  sun.f90
+  symspec.f90
+#  timer.f90
+  timf2.f90
+  tm2.f90
+  toxyz.f90
+  trimlist.f90
+  twkfreq.f90
+  twkfreq_xy.f90
+  txpol.f90
+  wavhdr.f90
+
+  f77_wisdom.f
+  )
+
+set (libm65_ka9q_CSRCS
+  decode_rs.c
+  encode_rs.c
+  init_rs.c
+)
+set_source_files_properties (${libm65_ka9q_CSRCS} PROPERTIES COMPILE_FLAGS -Wno-sign-compare)
+
+set (libm65_CSRCS
+  ${libm65_ka9q_CSRCS}
+  ftrsd2.c
+#  gran.c
+  igray.c
+  tmoonsub.c
+  usleep.c
+  wrapkarn.c
+)
+
+if (WIN32)
+  set (libm65_CSRCS ${libm65_CSRCS} ptt.c)
+else ()
+  set (libm65_CSRCS ${libm65_CSRCS} ptt_unix.c)
+endif ()
+
+set (libm65_CXXSRCS
+  ipcomm.cpp
+  )
+
+add_definitions (-DBIGSYM=1)
+set_source_files_properties (sec_midn.f90 PROPERTIES COMPILE_FLAGS -fno-second-underscore)
+
+set (libm65_C_and_CXXSRCS
+  ${libm65_CSRCS}
+  ${libm65_CXXSRCS}
+  )
+set_property (SOURCE ${libm65_C_and_CXXSRCS} APPEND_STRING PROPERTY COMPILE_FLAGS " -include wsjtx_config.h")
+set_property (SOURCE ${libm65_C_and_CXXSRCS} APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/wsjtx_config.h)
+
+
+#
+# build our targets
+#
+add_library (m65impl STATIC ${libm65_FSRCS} ${libm65_CSRCS} ${libm65_CXXSRCS})
+target_link_libraries (m65impl wsjt_fort wsjt_cxx Qt5::Core)
+
+add_executable (m65 m65.f90 m65a.f90)
+target_link_libraries (m65 m65impl ${FFTW3_LIBRARIES})
+
+add_executable (mapsim mapsim.f90)
+target_link_libraries (mapsim m65impl ${FFTW3_LIBRARIES})
+
+#add_executable (synctest synctest.f90)
+#target_link_libraries (synctest m65impl ${FFTW3_LIBRARIES})
+
+if (WIN32)
+  install (
+    TARGETS m65 mapsim
+    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime
+    BUNDLE DESTINATION . COMPONENT runtime
+    )
+endif ()
diff --git a/q65w/libm65/Makefile b/q65w/libm65/Makefile
new file mode 100644
index 000000000..810f09e1f
--- /dev/null
+++ b/q65w/libm65/Makefile
@@ -0,0 +1,130 @@
+# Makefile for MinGW on Windows
+CC  = c:/JTSDK/Qt55/Tools/mingw492_32/bin/gcc
+FC = c:/JTSDK/Qt55/Tools/mingw492_32/bin/gfortran
+CXX = c:/JTSDK/Qt55/Tools/mingw492_32/bin/g++
+
+FFLAGS = -O2 -fbounds-check -Wall -Wno-conversion -Wno-precision-loss \
+       -fno-second-underscore -fbacktrace \
+       -ffpe-summary=none
+#       -ffpe-trap=invalid,zero,overflow,underflow,denormal
+CFLAGS = -I. -fbounds-check
+
+# Default rules
+%.o: %.c
+	${CC} ${CFLAGS} -c $<
+%.o: %.f
+	${FC} ${FFLAGS} -c $<
+%.o: %.F
+	${FC} ${FFLAGS} -c $<
+%.o: %.f90
+	${FC} ${FFLAGS} -c $<
+%.o: %.F90
+	${FC} ${FFLAGS} -c $<
+
+all:    packjt.o wavhdr.o libm65.a m65.exe mapsim.exe libastro.a
+
+OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \
+	decode1a.o sort.o filbig.o fil6521.o afc65b.o \
+	twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \
+	extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \
+	interleave63.o encode65.o igray.o set.o shell.o qra64_subs.o \
+	grid2k.o getpfx2.o q65b.o qra64c.o twkfreq_xy.o qra64zap.o \
+	deg2grid.o getpfx1.o k2grid.o ftrsd2.o graycode65.o \
+	wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \
+	four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o sync64.o spec64.o \
+	astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \
+	geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \
+	gen65.o chkmsg.o ptt.o astrosub.o astro0.o recvpkt.o symspec.o \
+	iqcal.o iqfix.o timf2.o s3avg.o packjt.o badmsg.o fmtmsg.o \
+	qracodes.o qra64.o smo.o averms.o lorentzian.o npfwht.o pdmath.o \
+	qra13_64_64_irr_e.o fchisq0.o gen_q65_wave.o wavhdr.o
+
+packjt.o: packjt.f90
+	$(FC) -c packjt.f90
+
+libm65.a: $(OBJS1)
+	ar cr libm65.a $(OBJS1) 
+	ranlib libm65.a
+
+qra64_subs.o: ./qra64/qra64_subs.c
+	gcc -c -O2 -o qra64_subs.o ./qra64/qra64_subs.c
+
+qracodes.o: qracodes/qracodes.c
+	gcc -c -O2 -o qracodes.o qracodes/qracodes.c
+
+qra64.o: qra64/qra64.c
+	gcc -c -O2 -o qra64.o qra64/qra64.c
+
+qra13_64_64_irr_e.o: qracodes/qra13_64_64_irr_e.c
+	gcc -c -O2 -o qra13_64_64_irr_e.o  \
+	qracodes/qra13_64_64_irr_e.c
+
+npfwht.o: qracodes/npfwht.c
+	gcc -c -O2 -o npfwht.o qracodes/npfwht.c
+
+pdmath.o: qracodes/pdmath.c
+	gcc -c -O2 -o pdmath.o qracodes/pdmath.c
+
+OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \
+	timer.o ipcomm.o sec_midn.o usleep.o
+# cutil.o 
+
+LIBS3 = -L'C:/JTSDK/Qt55/5.5/mingw492_32/lib' -lQt5Core
+
+m65.exe: $(OBJS3) libm65.a
+	$(CXX) -o m65.exe $(OBJS3) $(LIBS3) libm65.a ../libfftw3f_win.a \
+	-lgfortran
+#	cp m65.exe ../../map65_install
+	cp m65.exe /c/MAP65_2.9
+
+OBJS7 = astrosub.o astro0.o astro.o tm2.o grid2deg.o sun.o moondop.o \
+	coord.o dot.o moon2.o tmoonsub.o toxyz.o geocentric.o \
+	dcoord.o
+
+libastro.a: $(OBJS7)
+	ar cr libastro.a $(OBJS7)
+	ranlib libastro.a
+
+OBJS6 = mapsim.o cgen65.o noisegen.o gran.o
+mapsim.exe: $(OBJS6) libm65.a
+	$(FC) -o mapsim.exe $(OBJS6) libm65.a
+
+INCPATH = -I'C:/JTSDK/Qt55/5.5/mingw492_32/include/QtCore' \
+	-I'C:/JTSDK/Qt55/5.5/mingw492_32/include' 
+
+ipcomm.o: ipcomm.cpp
+	$(CXX) -c $(INCPATH) ipcomm.cpp
+
+#m65a.o:	m65a.f90
+#	$(FC) -c -fno-second-underscore -cpp m65a.f90
+
+sec_midn.o: sec_midn.f90
+	$(FC) -c -fno-second-underscore sec_midn.f90
+
+#symspec.o: ../symspec.f90
+#	$(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90
+
+OBJS4 = tastro.o astro0.o libm65.a
+tastro.exe: $(OBJS4)
+	$(FC) $(FFLAGS) -o tastro.exe $(OBJS4) libm65.a 
+
+OBJS5 = t1.o timer.o libm65.a
+t1.exe: $(OBJS5)
+	$(FC) $(FFLAGS) -o t1.exe $(OBJS5) libm65.a 
+
+#astro0.o: ../astro0.f90
+#	$(FC) -c $(FFLAGS) -o astro0.o ../astro0.f90
+
+init_rs.o: init_rs.c
+	$(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c
+
+encode_rs.o: encode_rs.c
+	$(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c
+
+decode_rs.o: decode_rs.c
+	$(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c
+
+.PHONY : clean
+
+clean:
+	rm -f *.o *.mod libm65.a m65.exe
diff --git a/q65w/libm65/Makefile.0 b/q65w/libm65/Makefile.0
new file mode 100644
index 000000000..7ff2357ff
--- /dev/null
+++ b/q65w/libm65/Makefile.0
@@ -0,0 +1,114 @@
+# Makefile for Linux
+CC  = gcc
+FC = gfortran
+CXX = g++
+
+FFLAGS = -O2 -fbounds-check -Wall -Wno-precision-loss -fno-second-underscore
+# For ptt_unix:
+CFLAGS = -I. -fbounds-check -DHAVE_STDLIB_H=1 -DHAVE_STDIO_H=1 \
+	-DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1
+
+# Default rules
+%.o: %.c
+	${CC} ${CFLAGS} -c $<
+%.o: %.f
+	${FC} ${FFLAGS} -c $<
+%.o: %.F
+	${FC} ${FFLAGS} -c $<
+%.o: %.f90
+	${FC} ${FFLAGS} -c $<
+%.o: %.F90
+	${FC} ${FFLAGS} -c $<
+
+all:    packjt.o libm65.a m65 mapsim libastro.a
+
+OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \
+	decode1a.o sort.o filbig.o fil6521.o afc65b.o \
+	twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \
+	extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \
+	interleave63.o encode65.o igray.o set.o shell.o qra64_subs.o \
+	grid2k.o getpfx2.o qra64b.o qra64c.o twkfreq_xy.o qra64zap.o \
+	deg2grid.o getpfx1.o k2grid.o ftrsd2.o graycode65.o \
+	wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \
+	four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o sync64.o spec64.o \
+	astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \
+	geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \
+	gen65.o chkmsg.o astrosub.o astro0.o recvpkt.o symspec.o \
+	iqcal.o iqfix.o timf2.o s3avg.o packjt.o badmsg.o fmtmsg.o \
+	qracodes.o qra64.o smo.o averms.o lorentzian.o npfwht.o pdmath.o \
+	qra13_64_64_irr_e.o fchisq0.o genqra64a.o ptt_unix.o
+
+packjt.o: packjt.f90
+	$(FC) -c packjt.f90
+
+libm65.a: $(OBJS1)
+	ar cr libm65.a $(OBJS1) 
+	ranlib libm65.a
+
+qra64_subs.o: ./qra64/qra64_subs.c
+	gcc -c -O2 -o qra64_subs.o ./qra64/qra64_subs.c
+
+qracodes.o: ./qracodes/qracodes.c
+	gcc -c -O2 -o qracodes.o ./qracodes/qracodes.c
+
+qra64.o: ./qra64/qra64.c
+	gcc -c -O2 -o qra64.o ./qra64/qra64.c
+
+qra13_64_64_irr_e.o: ./qracodes/qra13_64_64_irr_e.c
+	gcc -c -O2 -o qra13_64_64_irr_e.o ./qracodes/qra13_64_64_irr_e.c
+
+npfwht.o: ./qracodes/npfwht.c
+	gcc -c -O2 -o npfwht.o ./qracodes/npfwht.c
+
+pdmath.o: ./qracodes/pdmath.c
+	gcc -c -O2 -o pdmath.o ./qracodes/pdmath.c
+
+OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \
+	timer.o ipcomm.o sec_midn.o usleep.o
+
+m65: $(OBJS3) libm65.a
+	$(CXX) -o m65 $(OBJS3) libm65.a -lfftw3f -lQt5Core -lfftw3f -lgfortran
+	cp m65 ../../map65_install
+
+OBJS7 = astrosub.o astro0.o astro.o tm2.o grid2deg.o sun.o moondop.o \
+	coord.o dot.o moon2.o tmoonsub.o toxyz.o geocentric.o \
+	dcoord.o
+
+libastro.a: $(OBJS7)
+	ar cr libastro.a $(OBJS7)
+	ranlib libastro.a
+
+OBJS6 = mapsim.o cgen65.o noisegen.o gran.o
+mapsim: $(OBJS6) libm65.a
+	$(FC) -o mapsim $(OBJS6) libm65.a
+
+INCPATH = -I. -I'/usr/include/x86_64-linux-gnu/qt5' \
+	-I'/usr/include/x86_64-linux-gnu/qt5/QtCore'
+
+ipcomm.o: ipcomm.cpp
+	$(CXX) -c $(INCPATH) -fPIC ipcomm.cpp
+
+sec_midn.o: sec_midn.f90
+	$(FC) -c -fno-second-underscore sec_midn.f90
+
+OBJS4 = tastro.o astro0.o libm65.a
+tastro: $(OBJS4)
+	$(FC) $(FFLAGS) -o tastro $(OBJS4) libm65.a 
+
+OBJS5 = t1.o timer.o libm65.a
+t1: $(OBJS5)
+	$(FC) $(FFLAGS) -o t1 $(OBJS5) libm65.a 
+
+init_rs.o: init_rs.c
+	$(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c
+
+encode_rs.o: encode_rs.c
+	$(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c
+
+decode_rs.o: decode_rs.c
+	$(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c
+
+.PHONY : clean
+
+clean:
+	rm -f *.o *.mod libm65.a m65
diff --git a/q65w/libm65/Makefile.MinGW b/q65w/libm65/Makefile.MinGW
new file mode 100644
index 000000000..52b0ace03
--- /dev/null
+++ b/q65w/libm65/Makefile.MinGW
@@ -0,0 +1,105 @@
+# Makefile for MinGW on Windows
+CC = gcc
+FC = g95
+CXX = c:/wsjt-env/Qt5/Tools/mingw48_32/bin/g++
+
+FFLAGS = -O2 -fbounds-check -Wall -Wno-precision-loss -fno-second-underscore
+CFLAGS = -I. -fbounds-check
+
+# Default rules
+%.o: %.c
+	${CC} ${CFLAGS} -c $<
+%.o: %.f
+	${FC} ${FFLAGS} -c $<
+%.o: %.F
+	${FC} ${FFLAGS} -c $<
+%.o: %.f90
+	${FC} ${FFLAGS} -c $<
+%.o: %.F90
+	${FC} ${FFLAGS} -c $<
+
+all:    libm65.a m65.exe JT65code.exe mapsim.exe libastro.a
+
+OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \
+	decode1a.o sort.o filbig.o fil6521.o afc65b.o \
+	twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \
+	extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \
+	interleave63.o unpackmsg.o encode65.o igray.o set.o unpackcall.o \
+	unpackgrid.o grid2k.o unpacktext.o getpfx2.o packmsg.o \
+	deg2grid.o packtext.o getpfx1.o packcall.o k2grid.o packgrid.o \
+	wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \
+	four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o \
+	astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \
+	geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \
+	gen65.o chkmsg.o ptt.o astrosub.o astro0.o recvpkt.o symspec.o \
+	iqcal.o iqfix.o timf2.o s3avg.o
+
+libm65.a: $(OBJS1)
+	ar cr libm65.a $(OBJS1) 
+	ranlib libm65.a
+
+OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \
+	timer.o ipcomm.o sec_midn.o cutil.o 
+
+LIBS3 = -L'C:/wsjt-env/Qt5/5.2.1/mingw48_32/lib' -lQt5Core
+
+m65.exe: $(OBJS3) libm65.a
+	$(CXX) -o m65.exe $(OBJS3) $(LIBS3) libm65.a ../libfftw3f_win.a \
+	c:/MinGW/lib/libf95.a
+	cp m65.exe ../../map65_install
+
+OBJS2 = JT65code.o
+JT65code.exe: $(OBJS2) libm65.a
+	$(FC) -o JT65code.exe $(OBJS2) libm65.a
+
+OBJS7 = astrosub.o astro0.o astro.o tm2.o grid2deg.o sun.o moondop.o \
+	coord.o dot.o moon2.o tmoonsub.o toxyz.o geocentric.o \
+	dcoord.o
+
+libastro.a: $(OBJS7)
+	ar cr libastro.a $(OBJS7)
+	ranlib libastro.a
+
+OBJS6 = mapsim.o cgen65.o noisegen.o gran.o
+mapsim.exe: $(OBJS6) libm65.a
+	$(FC) -o mapsim.exe $(OBJS6) libm65.a
+
+INCPATH = -I'C:/wsjt-env/Qt5/5.2.1/mingw48_32/include/QtCore' \
+	-I'C:/wsjt-env/Qt5/5.2.1/mingw48_32/include' 
+
+ipcomm.o: ipcomm.cpp
+	$(CXX) -c $(INCPATH) ipcomm.cpp
+
+#m65a.o:	m65a.f90
+#	$(FC) -c -fno-second-underscore -cpp m65a.f90
+
+sec_midn.o: sec_midn.f90
+	$(FC) -c -fno-second-underscore sec_midn.f90
+
+#symspec.o: ../symspec.f90
+#	$(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90
+
+OBJS4 = tastro.o astro0.o libm65.a
+tastro.exe: $(OBJS4)
+	$(FC) $(FFLAGS) -o tastro.exe $(OBJS4) libm65.a 
+
+OBJS5 = t1.o timer.o libm65.a
+t1.exe: $(OBJS5)
+	$(FC) $(FFLAGS) -o t1.exe $(OBJS5) libm65.a 
+
+#astro0.o: ../astro0.f90
+#	$(FC) -c $(FFLAGS) -o astro0.o ../astro0.f90
+
+init_rs.o: init_rs.c
+	$(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c
+
+encode_rs.o: encode_rs.c
+	$(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c
+
+decode_rs.o: decode_rs.c
+	$(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c
+
+.PHONY : clean
+
+clean:
+	rm -f *.o libm65.a m65.exe jt65code.exe
diff --git a/q65w/libm65/Makefile.jtsdk b/q65w/libm65/Makefile.jtsdk
new file mode 100644
index 000000000..77d97f597
--- /dev/null
+++ b/q65w/libm65/Makefile.jtsdk
@@ -0,0 +1,129 @@
+# Makefile for MinGW on Windows
+CC  = c:/JTSDK/Qt55/Tools/mingw492_32/bin/gcc
+FC = c:/JTSDK/Qt55/Tools/mingw492_32/bin/gfortran
+CXX = c:/JTSDK/Qt55/Tools/mingw492_32/bin/g++
+
+FFLAGS = -O2 -fbounds-check -Wall -Wno-conversion -Wno-precision-loss \
+       -fno-second-underscore -fbacktrace \
+       -ffpe-summary=none
+#       -ffpe-trap=invalid,zero,overflow,underflow,denormal
+CFLAGS = -I. -fbounds-check
+
+# Default rules
+%.o: %.c
+	${CC} ${CFLAGS} -c $<
+%.o: %.f
+	${FC} ${FFLAGS} -c $<
+%.o: %.F
+	${FC} ${FFLAGS} -c $<
+%.o: %.f90
+	${FC} ${FFLAGS} -c $<
+%.o: %.F90
+	${FC} ${FFLAGS} -c $<
+
+all:    packjt.o wavhdr.o libm65.a m65.exe mapsim.exe libastro.a
+
+OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \
+	decode1a.o sort.o filbig.o fil6521.o afc65b.o \
+	twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \
+	extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \
+	interleave63.o encode65.o igray.o set.o shell.o qra64_subs.o \
+	grid2k.o getpfx2.o q65b.o qra64c.o twkfreq_xy.o qra64zap.o \
+	deg2grid.o getpfx1.o k2grid.o ftrsd2.o graycode65.o \
+	wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \
+	four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o sync64.o spec64.o \
+	astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \
+	geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \
+	gen65.o chkmsg.o ptt.o astrosub.o astro0.o recvpkt.o symspec.o \
+	iqcal.o iqfix.o timf2.o s3avg.o packjt.o badmsg.o fmtmsg.o \
+	qracodes.o qra64.o smo.o averms.o lorentzian.o npfwht.o pdmath.o \
+	qra13_64_64_irr_e.o fchisq0.o genqra64a.o wavhdr.o
+
+packjt.o: packjt.f90
+	$(FC) -c packjt.f90
+
+libm65.a: $(OBJS1)
+	ar cr libm65.a $(OBJS1) 
+	ranlib libm65.a
+
+qra64_subs.o: ./qra64/qra64_subs.c
+	gcc -c -O2 -o qra64_subs.o ./qra64/qra64_subs.c
+	
+qracodes.o: qracodes/qracodes.c
+	gcc -c -O2 -o qracodes.o qracodes/qracodes.c
+
+qra64.o: qra64/qra64.c
+	gcc -c -O2 -o qra64.o qra64/qra64.c
+
+qra13_64_64_irr_e.o: qracodes/qra13_64_64_irr_e.c
+	gcc -c -O2 -o qra13_64_64_irr_e.o  \
+	qracodes/qra13_64_64_irr_e.c
+
+npfwht.o: qracodes/npfwht.c
+	gcc -c -O2 -o npfwht.o qracodes/npfwht.c
+
+pdmath.o: qracodes/pdmath.c
+	gcc -c -O2 -o pdmath.o qracodes/pdmath.c
+
+OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \
+	timer.o ipcomm.o sec_midn.o usleep.o
+# cutil.o 
+
+LIBS3 = -L'C:/JTSDK/Qt55/5.5/mingw492_32/lib' -lQt5Core
+
+m65.exe: $(OBJS3) libm65.a
+	$(CXX) -o m65.exe $(OBJS3) $(LIBS3) libm65.a ../libfftw3f_win.a \
+	-lgfortran
+	cp m65.exe ../../map65_install
+
+OBJS7 = astrosub.o astro0.o astro.o tm2.o grid2deg.o sun.o moondop.o \
+	coord.o dot.o moon2.o tmoonsub.o toxyz.o geocentric.o \
+	dcoord.o
+
+libastro.a: $(OBJS7)
+	ar cr libastro.a $(OBJS7)
+	ranlib libastro.a
+
+OBJS6 = mapsim.o cgen65.o noisegen.o gran.o
+mapsim.exe: $(OBJS6) libm65.a
+	$(FC) -o mapsim.exe $(OBJS6) libm65.a
+
+INCPATH = -I'C:/JTSDK/Qt55/5.5/mingw492_32/include/QtCore' \
+	-I'C:/JTSDK/Qt55/5.5/mingw492_32/include' 
+
+ipcomm.o: ipcomm.cpp
+	$(CXX) -c $(INCPATH) ipcomm.cpp
+
+#m65a.o:	m65a.f90
+#	$(FC) -c -fno-second-underscore -cpp m65a.f90
+
+sec_midn.o: sec_midn.f90
+	$(FC) -c -fno-second-underscore sec_midn.f90
+
+#symspec.o: ../symspec.f90
+#	$(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90
+
+OBJS4 = tastro.o astro0.o libm65.a
+tastro.exe: $(OBJS4)
+	$(FC) $(FFLAGS) -o tastro.exe $(OBJS4) libm65.a 
+
+OBJS5 = t1.o timer.o libm65.a
+t1.exe: $(OBJS5)
+	$(FC) $(FFLAGS) -o t1.exe $(OBJS5) libm65.a 
+
+#astro0.o: ../astro0.f90
+#	$(FC) -c $(FFLAGS) -o astro0.o ../astro0.f90
+
+init_rs.o: init_rs.c
+	$(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c
+
+encode_rs.o: encode_rs.c
+	$(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c
+
+decode_rs.o: decode_rs.c
+	$(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c
+
+.PHONY : clean
+
+clean:
+	rm -f *.o *.mod libm65.a m65.exe
diff --git a/q65w/libm65/Makefile.linux b/q65w/libm65/Makefile.linux
new file mode 100644
index 000000000..4b96f215b
--- /dev/null
+++ b/q65w/libm65/Makefile.linux
@@ -0,0 +1,96 @@
+CC = gcc
+FC = gfortran
+
+FFLAGS = -O2 -fbounds-check -Wall 
+# For ptt_unix:
+CFLAGS = -I. -fbounds-check -DHAVE_STDLIB_H=1 -DHAVE_STDIO_H=1 \
+	-DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1
+
+# Default rules
+%.o: %.c
+	${CC} ${CFLAGS} -c $<
+%.o: %.f
+	${FC} ${FFLAGS} -c $<
+%.o: %.F
+	${FC} ${FFLAGS} -c $<
+%.o: %.f90
+	${FC} ${FFLAGS} -c $<
+%.o: %.F90
+	${FC} ${FFLAGS} -c $<
+
+all:    libm65.a m65
+
+OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \
+	decode1a.o sort.o filbig.o fil6521.o afc65b.o \
+	twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \
+	extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \
+	interleave63.o unpackmsg.o encode65.o igray.o set.o unpackcall.o \
+	unpackgrid.o grid2k.o unpacktext.o getpfx2.o packmsg.o \
+	deg2grid.o packtext.o getpfx1.o packcall.o k2grid.o packgrid.o \
+	wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \
+	four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o \
+	astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \
+	geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \
+	gen65.o chkmsg.o ptt_unix.o astrosub.o astro0.o recvpkt.o \
+	symspec.o iqcal.o iqfix.o timf2.o s3avg.o
+
+libm65.a: $(OBJS1)
+	ar cr libm65.a $(OBJS1) 
+	ranlib libm65.a
+
+OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \
+	timer.o ipcomm.o sec_midn.o cutil.o 
+
+m65:	$(OBJS3) libm65.a
+	g++ -o m65 $(OBJS3) libm65.a -lfftw3f -lQtCore -lfftw3f -lgfortran
+
+OBJS2 = m65a.o ipcomm.o sec_midn.o cutil.o decode0.o map65a.o \
+	timer.o ftninit.o ftnquit.o
+LIBS2    = -lQtCore -lfftw3f -lgfortran
+
+m65a: 	 $(OBJS2) libm65.a
+	 g++ -o m65a $(OBJS2) libm65.a -lQtCore -lfftw3f -lgfortran
+
+OBJS6 = t3.o ipcomm.o 
+LIBS2    = -lQtCore -lgfortran
+
+t3: 	 $(OBJS6) 
+	 g++ -o t3 $(OBJS6) $(LIBS2)
+
+t3:	
+
+INCPATH = -I. -I'/usr/include/qt4' -I'/usr/include/qt4/QtCore'
+
+ipcomm.o: ipcomm.cpp
+	g++ -c $(INCPATH) ipcomm.cpp
+
+m65a.o:	m65a.F90
+	$(FC) -c -fno-second-underscore -DUNIX m65a.F90
+
+extract.o: extract.F
+	$(FC) -c -fno-second-underscore -DUNIX extract.F
+
+sec_midn.o: sec_midn.f90
+	$(FC) -c -fno-second-underscore sec_midn.f90
+
+OBJS4 = tastro.o astro0.o libm65.a
+tastro: $(OBJS4)
+	$(FC) $(FFLAGS) -o tastro $(OBJS4) libm65.a 
+
+OBJS5 = t1.o timer.o libm65.a
+t1: $(OBJS5)
+	$(FC) $(FFLAGS) -o t1 $(OBJS5) libm65.a 
+
+init_rs.o: init_rs.c
+	$(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c
+
+encode_rs.o: encode_rs.c
+	$(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c
+
+decode_rs.o: decode_rs.c
+	$(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c
+
+.PHONY : clean
+
+clean:
+	rm -f *.o libm65.a m65 m65a
diff --git a/q65w/libm65/afc65b.f90 b/q65w/libm65/afc65b.f90
new file mode 100644
index 000000000..53f61ea44
--- /dev/null
+++ b/q65w/libm65/afc65b.f90
@@ -0,0 +1,70 @@
+subroutine afc65b(cx,cy,npts,fsample,nflip,ipol,xpol,ndphi,a,ccfbest,dtbest)
+
+  logical xpol
+  complex cx(npts)
+  complex cy(npts)
+  real a(5),deltaa(5)
+
+  a(1)=0.
+  a(2)=0.
+  a(3)=0.
+  a(4)=45.0*(ipol-1.0)
+  deltaa(1)=2.0
+  deltaa(2)=2.0
+  deltaa(3)=2.0
+  deltaa(4)=22.5
+  deltaa(5)=0.05
+  nterms=3
+  if(xpol) nterms=4
+
+! Don't fit polarization when solving for dphi
+  if(ndphi.ne.0) nterms=3
+
+!  Start the iteration
+  chisqr=0.
+  chisqr0=1.e6
+  do iter=1,3                               !One iteration is enough?
+     do j=1,nterms
+        chisq1=fchisq(cx,cy,npts,fsample,nflip,a,ccfmax,dtmax)
+        fn=0.
+        delta=deltaa(j)
+10      a(j)=a(j)+delta
+        chisq2=fchisq(cx,cy,npts,fsample,nflip,a,ccfmax,dtmax)
+        if(chisq2.eq.chisq1) go to 10
+        if(chisq2.gt.chisq1) then
+           delta=-delta                      !Reverse direction
+           a(j)=a(j)+delta
+           tmp=chisq1
+           chisq1=chisq2
+           chisq2=tmp
+        endif
+20      fn=fn+1.0
+        a(j)=a(j)+delta
+        chisq3=fchisq(cx,cy,npts,fsample,nflip,a,ccfmax,dtmax)
+        if(chisq3.lt.chisq2) then
+           chisq1=chisq2
+           chisq2=chisq3
+           go to 20
+        endif
+
+! Find minimum of parabola defined by last three points
+        delta=delta*(1./(1.+(chisq1-chisq2)/(chisq3-chisq2))+0.5)
+        a(j)=a(j)-delta
+        deltaa(j)=deltaa(j)*fn/3.
+     enddo
+     chisqr=fchisq(cx,cy,npts,fsample,nflip,a,ccfmax,dtmax)
+     if(chisqr/chisqr0.gt.0.9999) go to 30
+     chisqr0=chisqr
+  enddo
+
+30 ccfbest=ccfmax * (1378.125/fsample)**2
+  dtbest=dtmax
+
+  if(a(4).lt.0.0) a(4)=a(4)+180.0
+  if(a(4).ge.180.0) a(4)=a(4)-180.0
+  if(nint(a(4)).eq.180) a(4)=0.
+  ipol=nint(a(4)/45.0) + 1
+  if(ipol.gt.4) ipol=ipol-4
+
+  return
+end subroutine afc65b
diff --git a/q65w/libm65/astro.f90 b/q65w/libm65/astro.f90
new file mode 100644
index 000000000..d34819cc6
--- /dev/null
+++ b/q65w/libm65/astro.f90
@@ -0,0 +1,105 @@
+subroutine astro(nyear,month,nday,uth,nfreq,Mygrid,NStation,MoonDX,     &
+     AzSun,ElSun,AzMoon0,ElMoon0,ntsky,doppler00,doppler,dbMoon,RAMoon, &
+     DecMoon,HA,Dgrd,sd,poloffset,xnr,day,lon,lat,LST)
+
+! Computes astronomical quantities for display and tracking.
+! NB: may want to smooth the Tsky map to 10 degrees or so.
+
+  character*6 MyGrid,HisGrid
+  real LST
+  real lat,lon
+  integer*2 nt144(180)
+
+!      common/echo/xdop(2),techo,AzMoon,ElMoon,mjd
+  real xdop(2)
+
+  data rad/57.2957795/
+  data nt144/                                          &
+     234, 246, 257, 267, 275, 280, 283, 286, 291, 298, &
+     305, 313, 322, 331, 341, 351, 361, 369, 376, 381, &
+     383, 382, 379, 374, 370, 366, 363, 361, 363, 368, &
+     376, 388, 401, 415, 428, 440, 453, 467, 487, 512, &
+     544, 579, 607, 618, 609, 588, 563, 539, 512, 482, &
+     450, 422, 398, 379, 363, 349, 334, 319, 302, 282, &
+     262, 242, 226, 213, 205, 200, 198, 197, 196, 197, &
+     200, 202, 204, 205, 204, 203, 202, 201, 203, 206, &
+     212, 218, 223, 227, 231, 236, 240, 243, 247, 257, &
+     276, 301, 324, 339, 346, 344, 339, 331, 323, 316, &
+     312, 310, 312, 317, 327, 341, 358, 375, 392, 407, &
+     422, 437, 451, 466, 480, 494, 511, 530, 552, 579, &
+     612, 653, 702, 768, 863,1008,1232,1557,1966,2385, &
+    2719,2924,3018,3038,2986,2836,2570,2213,1823,1461, &
+    1163, 939, 783, 677, 602, 543, 494, 452, 419, 392, &
+     373, 360, 353, 350, 350, 350, 350, 350, 350, 348, &
+     344, 337, 329, 319, 307, 295, 284, 276, 272, 272, &
+     273, 274, 274, 271, 266, 260, 252, 245, 238, 231/
+  save
+
+  call grid2deg(MyGrid,elon,lat)
+  lon=-elon
+  call sun(nyear,month,nday,uth,lon,lat,RASun,DecSun,LST,AzSun,ElSun,mjd,day)
+
+  freq=nfreq*1.e6
+  if(nfreq.eq.2) freq=1.8e6
+  if(nfreq.eq.4) freq=3.5e6
+
+  call MoonDop(nyear,month,nday,uth,lon,lat,RAMoon,DecMoon,LST,HA,   &
+       AzMoon,ElMoon,vr,dist)
+
+! Compute spatial polarization offset
+  xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)*cos(AzMoon/rad)*sin(ElMoon/rad)
+  yy=cos(lat/rad)*sin(AzMoon/rad)
+  if(NStation.eq.1) poloffset1=rad*atan2(yy,xx)
+  if(NStation.eq.2) poloffset2=rad*atan2(yy,xx)
+
+  techo=2.0 * dist/2.99792458e5                 !Echo delay time
+  doppler=-freq*vr/2.99792458e5                 !One-way Doppler
+
+  call coord(0.,0.,-1.570796,1.161639,RAMoon/rad,DecMoon/rad,el,eb)
+  longecl_half=nint(rad*el/2.0)
+  if(longecl_half.lt.1 .or. longecl_half.gt.180) longecl_half=180
+  t144=nt144(longecl_half)
+  tsky=(t144-2.7)*(144.0/nfreq)**2.6 + 2.7      !Tsky for obs freq
+
+  xdop(NStation)=doppler
+  if(NStation.eq.2) then
+     HisGrid=MyGrid
+     go to 900
+  endif
+
+  doppler00=2.0*xdop(1)
+  doppler=xdop(1)+xdop(2)
+!      if(mode.eq.3) doppler=2.0*xdop(1)
+  dBMoon=-40.0*log10(dist/356903.)
+  sd=16.23*370152.0/dist
+
+!      if(NStation.eq.1 .and. MoonDX.ne.0 .and. 
+!     +    (mode.eq.2 .or. mode.eq.5)) then
+  if(NStation.eq.1 .and. MoonDX.ne.0) then
+     poloffset=mod(poloffset2-poloffset1+720.0,180.0)
+     if(poloffset.gt.90.0) poloffset=poloffset-180.0
+     x1=abs(cos(2*poloffset/rad))
+     if(x1.lt.0.056234) x1=0.056234
+     xnr=-20.0*log10(x1)
+     if(HisGrid(1:1).lt.'A' .or. HisGrid(1:1).gt.'R') xnr=0
+  endif
+
+  tr=80.0                              !Good preamp
+  tskymin=13.0*(408.0/nfreq)**2.6      !Cold sky temperature
+  tsysmin=tskymin+tr
+  tsys=tsky+tr
+  dgrd=-10.0*log10(tsys/tsysmin) + dbMoon
+900 AzMoon0=Azmoon
+  ElMoon0=Elmoon
+  ntsky=nint(tsky)
+
+!      auxHA = 15.0*(LST-auxra)                       !HA in degrees
+!      pi=3.14159265
+!      pio2=0.5*pi
+!      call coord(pi,pio2-lat/rad,0.0,lat/rad,auxha*pi/180.0,
+!     +  auxdec/rad,azaux,elaux)
+!      AzAux=azaux*rad
+!      ElAux=ElAux*rad
+
+  return
+end subroutine astro
diff --git a/q65w/libm65/astro0.f90 b/q65w/libm65/astro0.f90
new file mode 100644
index 000000000..ec234215e
--- /dev/null
+++ b/q65w/libm65/astro0.f90
@@ -0,0 +1,81 @@
+subroutine astro0(nyear,month,nday,uth8,nfreq,mygrid,hisgrid,              &
+     AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,    &
+     dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0,    &
+     width1,width2,w501,w502,xlst8)
+
+  parameter (DEGS=57.2957795130823d0)
+  character*6 mygrid,hisgrid
+  real*8 AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8
+  real*8 dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,xnr8,dfdt,dfdt0,dt
+  real*8 sd8,poloffset8,day8,width1,width2,w501,w502,xlst8
+  real*8 uth8
+  data uth8z/0.d0/
+  save
+
+  uth=uth8
+  call astro(nyear,month,nday,uth,nfreq,hisgrid,2,1,                 &
+       AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler,            &
+       dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,               &
+       day,xlon2,xlat2,xlst)
+  AzMoonB8=AzMoon
+  ElMoonB8=ElMoon
+  call astro(nyear,month,nday,uth,nfreq,mygrid,1,1,                  &
+       AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler,            &
+       dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,               &
+       day,xlon1,xlat1,xlst)
+
+  day8=day
+  xlst8=xlst
+  call tm2(day8,xlat1,xlon1,xl1,b1)
+  call tm2(day8,xlat2,xlon2,xl2,b2)
+  call tm2(day8+1.d0/1440.0,xlat1,xlon1,xl1a,b1a)
+  call tm2(day8+1.d0/1440.0,xlat2,xlon2,xl2a,b2a)
+  fghz=0.001*nfreq
+  dldt1=DEGS*(xl1a-xl1)
+  dbdt1=DEGS*(b1a-b1)
+  dldt2=DEGS*(xl2a-xl2)
+  dbdt2=DEGS*(b2a-b2)
+  rate1=2.0*sqrt(dldt1**2 + dbdt1**2)
+  width1=0.5*6741*fghz*rate1
+  rate2=sqrt((dldt1+dldt2)**2 + (dbdt1+dbdt2)**2)
+  width2=0.5*6741*fghz*rate2
+
+  fbend=0.7
+  a2=0.0045*log(fghz/fbend)/log(1.05)
+  if(fghz.lt.fbend) a2=0.0
+  f50=0.19 * (fghz/fbend)**a2
+  if(f50.gt.1.0) f50=1.0
+  w501=f50*width1
+  w502=f50*width2
+
+  AzSun8=AzSun
+  ElSun8=ElSun
+  AzMoon8=AzMoon
+  ElMoon8=ElMoon
+  dbMoon8=dbMoon
+  RAMoon8=RAMoon/15.0
+  DecMoon8=DecMoon
+  HA8=HA
+  Dgrd8=Dgrd
+  sd8=sd
+  poloffset8=poloffset
+  xnr8=xnr
+  ndop=nint(doppler)
+  ndop00=nint(doppler00)
+
+  if(uth8z.eq.0.d0) then
+     uth8z=uth8-1.d0/3600.d0
+     dopplerz=doppler
+     doppler00z=doppler00
+  endif
+     
+  dt=60.0*(uth8-uth8z)
+  if(dt.le.0) dt=1.d0/60.d0
+  dfdt=(doppler-dopplerz)/dt
+  dfdt0=(doppler00-doppler00z)/dt
+  uth8z=uth8
+  dopplerz=doppler
+  doppler00z=doppler00
+
+  return
+end subroutine astro0
diff --git a/q65w/libm65/astrosub.f90 b/q65w/libm65/astrosub.f90
new file mode 100644
index 000000000..ce25a0d94
--- /dev/null
+++ b/q65w/libm65/astrosub.f90
@@ -0,0 +1,26 @@
+subroutine astrosub(nyear,month,nday,uth8,nfreq,mygrid,hisgrid,          &
+     AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,  &
+     RAMoon8,DecMoon8,Dgrd8,poloffset8,xnr8)
+
+  implicit real*8 (a-h,o-z)
+  character*6 mygrid,hisgrid
+
+  call astro0(nyear,month,nday,uth8,nfreq,mygrid,hisgrid,                &
+     AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,  &
+     dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0,  &
+     width1,width2,w501,w502,xlst8)
+
+  return  
+end subroutine astrosub
+
+subroutine astrosub00(nyear,month,nday,uth8,nfreq,mygrid,ndop00)
+
+  implicit real*8 (a-h,o-z)
+  character*6 mygrid
+
+  call astrosub(nyear,month,nday,uth8,nfreq,mygrid,mygrid,               &
+     AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,  &
+     RAMoon8,DecMoon8,Dgrd8,poloffset8,xnr8)
+
+  return
+end subroutine astrosub00
diff --git a/q65w/libm65/averms.f90 b/q65w/libm65/averms.f90
new file mode 100644
index 000000000..904004c81
--- /dev/null
+++ b/q65w/libm65/averms.f90
@@ -0,0 +1,20 @@
+subroutine averms(x,n,nskip,ave,rms)
+  real x(n)
+  integer ipk(1)
+
+  ns=0
+  s=0.
+  sq=0.
+  ipk=maxloc(x)
+  do i=1,n
+     if(abs(i-ipk(1)).gt.nskip) then
+        s=s + x(i)
+        sq=sq + x(i)**2
+        ns=ns+1
+     endif
+  enddo
+  ave=s/ns
+  rms=sqrt(sq/ns - ave*ave)
+ 
+  return
+end subroutine averms
diff --git a/q65w/libm65/badmsg.f90 b/q65w/libm65/badmsg.f90
new file mode 100644
index 000000000..007da8a85
--- /dev/null
+++ b/q65w/libm65/badmsg.f90
@@ -0,0 +1,46 @@
+subroutine badmsg(irc,dat,nc1,nc2,ng2)
+
+! Get rid of a few QRA64 false decodes that cannot be correct messages.  
+
+  integer dat(12)                           !Decoded message (as 12 integers)
+
+  ic1=ishft(dat(1),22) + ishft(dat(2),16) + ishft(dat(3),10)+         &
+       ishft(dat(4),4) + iand(ishft(dat(5),-2),15)
+
+! Test for "......" or "CQ 000"
+  if(ic1.eq.262177560 .or. ic1.eq.262177563) then
+     irc=-1
+     return
+  endif
+
+  ic2=ishft(iand(dat(5),3),26) + ishft(dat(6),20) +                   &
+       ishft(dat(7),14) + ishft(dat(8),8) + ishft(dat(9),2) +         &
+       iand(ishft(dat(10),-4),3)
+
+  ig=ishft(iand(dat(10),15),12) + ishft(dat(11),6) + dat(12)
+  
+! Test for blank, -01 to -30, R-01 to R-30, RO, RRR, 73
+  if(ig.ge.32401 .and. ig.le.32464) return
+
+  if(ig.ge.14220 .and. ig.le.14229) return  !-41 to -50
+  if(ig.ge.14040 .and. ig.le.14049) return  !-31 to -40
+
+  if(ig.ge.13320 .and. ig.le.13329) return  !+00 to +09
+  if(ig.ge.13140 .and. ig.le.13149) return  !+10 to +19
+  if(ig.ge.12960 .and. ig.le.12969) return  !+20 to +29
+  if(ig.ge.12780 .and. ig.le.12789) return  !+30 to +39
+  if(ig.ge.12600 .and. ig.le.12609) return  !+40 to +49
+
+  if(ig.ge.12420 .and. ig.le.12429) return  !R-41 to R-50
+  if(ig.ge.12240 .and. ig.le.12249) return  !R-31 to R-40
+
+  if(ig.ge.11520 .and. ig.le.11529) return  !R+00 to R+09
+  if(ig.ge.11340 .and. ig.le.11349) return  !R+10 to R+19
+  if(ig.ge.11160 .and. ig.le.11169) return  !R+20 to R+29
+  if(ig.ge.10980 .and. ig.le.10989) return  !R+30 to R+39
+  if(ig.ge.10800 .and. ig.le.10809) return  !R+40 to R+49
+
+  if(ic1.eq.nc1 .and. ic2.eq.nc2 .and. ng2.ne.32401 .and. ig.ne.ng2) irc=-1
+
+  return
+end subroutine badmsg
diff --git a/q65w/libm65/ccf2.f90 b/q65w/libm65/ccf2.f90
new file mode 100644
index 000000000..287e70ffb
--- /dev/null
+++ b/q65w/libm65/ccf2.f90
@@ -0,0 +1,45 @@
+subroutine ccf2(ss,nz,nflip,ccfbest,lagpk)
+
+!      parameter (LAGMAX=60)
+  parameter (LAGMAX=200)
+  real ss(nz)
+  real ccf(-LAGMAX:LAGMAX)
+  integer npr(126)
+
+! The JT65 pseudo-random sync pattern:
+  data npr/                                  &
+    1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0, &
+    0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1, &
+    0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1, &
+    0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1, &
+    1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, &
+    0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, &
+    1,1,1,1,1,1/
+  save
+
+  ccfbest=0.
+  lag1=-LAGMAX
+  lag2=LAGMAX
+  do lag=lag1,lag2
+     s0=0.
+     s1=0.
+     do i=1,126
+        j=2*(8*i + 43) + lag
+        if(j.ge.1 .and. j.le.nz-8) then
+           x=ss(j)+ss(j+8)             !Add two half-symbol contributions
+           if(npr(i).eq.0) then
+              s0=s0 + x
+           else
+              s1=s1 + x
+           endif
+        endif
+     enddo
+     ccf(lag)=nflip*(s1-s0)
+     if(ccf(lag).gt.ccfbest) then
+        ccfbest=ccf(lag)
+        lagpk=lag
+     endif
+  enddo
+
+  return
+end subroutine ccf2
diff --git a/q65w/libm65/ccf65.f90 b/q65w/libm65/ccf65.f90
new file mode 100644
index 000000000..592fe95ed
--- /dev/null
+++ b/q65w/libm65/ccf65.f90
@@ -0,0 +1,128 @@
+subroutine ccf65(ss,nhsym,ssmax,sync1,ipol1,jpz,dt1,flipk,      &
+     syncshort,snr2,ipol2,dt2)
+
+  parameter (NFFT=512,NH=NFFT/2)
+  real ss(4,322)                   !Input: half-symbol powers, 4 pol'ns
+  real s(NFFT)                     !CCF = ss*pr
+  complex cs(0:NH)                 !Complex FT of s
+  real s2(NFFT)                    !CCF = ss*pr2
+  complex cs2(0:NH)                !Complex FT of s2
+  real pr(NFFT)                    !JT65 pseudo-random sync pattern
+  complex cpr(0:NH)                !Complex FT of pr
+  real pr2(NFFT)                   !JT65 shorthand pattern
+  complex cpr2(0:NH)               !Complex FT of pr2
+  real tmp1(322)
+  real ccf(-11:54,4)
+  logical first
+  integer npr(126)
+  data first/.true./
+  equivalence (s,cs),(pr,cpr),(s2,cs2),(pr2,cpr2)
+  save
+
+! The JT65 pseudo-random sync pattern:
+  data npr/                                        &
+      1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0,     &
+      0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,     &
+      0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1,     &
+      0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,     &
+      1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,     &
+      0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,     &
+      1,1,1,1,1,1/
+
+  if(first) then
+! Initialize pr, pr2; compute cpr, cpr2.
+     fac=1.0/NFFT
+     do i=1,NFFT
+        pr(i)=0.
+        pr2(i)=0.
+        k=2*mod((i-1)/8,2)-1
+        if(i.le.NH) pr2(i)=fac*k
+     enddo
+     do i=1,126
+        j=2*i
+        pr(j)=fac*(2*npr(i)-1)
+! Not sure why, but it works significantly better without the following line:
+!        pr(j-1)=pr(j)
+     enddo
+     call four2a(cpr,NFFT,1,-1,0)
+     call four2a(cpr2,NFFT,1,-1,0)
+     first=.false.
+  endif
+  syncshort=0.
+  snr2=0.
+
+! Look for JT65 sync pattern and shorthand square-wave pattern.
+  ccfbest=0.
+  ccfbest2=0.
+  ipol1=1
+  ipol2=1
+  do ip=1,jpz                                  !Do jpz polarizations
+     do i=1,nhsym-1
+!        s(i)=ss(ip,i)+ss(ip,i+1)
+        s(i)=min(ssmax,ss(ip,i)+ss(ip,i+1))
+     enddo
+     call pctile(s,nhsym-1,50,base)
+     s(1:nhsym-1)=s(1:nhsym-1)-base
+     s(nhsym:NFFT)=0.
+     call four2a(cs,NFFT,1,-1,0)                !Real-to-complex FFT
+     do i=0,NH
+        cs2(i)=cs(i)*conjg(cpr2(i))            !Mult by complex FFT of pr2
+        cs(i)=cs(i)*conjg(cpr(i))              !Mult by complex FFT of pr
+     enddo
+     call four2a(cs,NFFT,1,1,-1)               !Complex-to-real inv-FFT
+     call four2a(cs2,NFFT,1,1,-1)              !Complex-to-real inv-FFT
+
+     do lag=-11,54                             !Check for best JT65 sync
+        j=lag
+        if(j.lt.1) j=j+NFFT
+        ccf(lag,ip)=s(j)
+        if(abs(ccf(lag,ip)).gt.ccfbest) then
+           ccfbest=abs(ccf(lag,ip))
+           lagpk=lag
+           ipol1=ip
+           flipk=1.0
+           if(ccf(lag,ip).lt.0.0) flipk=-1.0
+        endif
+     enddo
+     
+!###  Not sure why this is ever true???  
+     if(sum(ccf).eq.0.0) return
+!###
+     do lag=-11,54                             !Check for best shorthand
+        ccf2=s2(lag+28)
+        if(ccf2.gt.ccfbest2) then
+           ccfbest2=ccf2
+           lagpk2=lag
+           ipol2=ip
+        endif
+     enddo
+     
+  enddo
+
+! Find rms level on baseline of "ccfblue", for normalization.
+  sumccf=0.
+  do lag=-11,54
+     if(abs(lag-lagpk).gt.1) sumccf=sumccf + ccf(lag,ipol1)
+  enddo
+  base=sumccf/50.0
+  sq=0.
+  do lag=-11,54
+     if(abs(lag-lagpk).gt.1) sq=sq + (ccf(lag,ipol1)-base)**2
+  enddo
+  rms=sqrt(sq/49.0)
+  sync1=-4.0
+  if(rms.gt.0.0) sync1=ccfbest/rms - 4.0
+  dt1=lagpk*(2048.0/11025.0) - 2.5
+
+! Find base level for normalizing snr2.
+  do i=1,nhsym
+     tmp1(i)=ss(ipol2,i)
+  enddo
+  call pctile(tmp1,nhsym,40,base)
+  snr2=0.01
+  if(base.gt.0.0) snr2=0.398107*ccfbest2/base  !### empirical
+  syncshort=0.5*ccfbest2/rms - 4.0             !### better normalizer than rms?
+  dt2=2.5 + lagpk2*(2048.0/11025.0)
+
+  return
+end subroutine ccf65
diff --git a/q65w/libm65/cgen65.f90 b/q65w/libm65/cgen65.f90
new file mode 100644
index 000000000..096e9790d
--- /dev/null
+++ b/q65w/libm65/cgen65.f90
@@ -0,0 +1,99 @@
+subroutine cgen65(message,mode65,samfac,nsendingsh,msgsent,cwave,nwave)
+
+! Encodes a JT65 message into a wavefile.  
+! Executes in 17 ms on opti-745.
+
+  use packjt
+
+  parameter (NMAX=60*96000)     !Max length of wave file
+  character*22 message          !Message to be generated
+  character*22 msgsent          !Message as it will be received
+  character*3 cok               !'   ' or 'OOO'
+  real*8 t,dt,phi,f,f0,dfgen,dphi,twopi,samfac,tsymbol
+  complex cwave(NMAX)           !Generated complex wave file
+  integer dgen(12)
+  integer sent(63)
+  logical first
+  integer nprc(126)
+  real pr(126)
+  data nprc/1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0,  &
+            0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,  &
+            0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1,  &
+            0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,  &
+            1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,  &
+            0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,  &
+            1,1,1,1,1,1/
+  data twopi/6.283185307179586476d0/,first/.true./
+  save
+
+  if(first) then
+     do i=1,126
+        pr(i)=2*nprc(i)-1
+     enddo
+     first=.false.
+  endif
+
+  call chkmsg(message,cok,nspecial,flip) !See if it's a shorthand
+  if(nspecial.eq.0) then
+     call packmsg(message,dgen,itype)    !Pack message into 72 bits
+     nsendingsh=0
+     if(iand(dgen(10),8).ne.0) nsendingsh=-1    !Plain text flag
+
+     call rs_encode(dgen,sent)
+     call interleave63(sent,1)           !Apply interleaving
+     call graycode(sent,63,1)            !Apply Gray code
+     nsym=126                            !Symbols per transmission
+     tsymbol=4096.d0/11025.d0            !Time per symbol
+  else
+     nsendingsh=1                        !Flag for shorthand message
+     nsym=32
+     tsymbol=16384.d0/11025.d0
+  endif
+
+! Set up necessary constants
+  dt=1.d0/(samfac*96000.d0)
+  f0=118*11025.d0/1024
+  dfgen=mode65*11025.d0/4096.d0
+  t=0.d0
+  phi=0.d0
+  k=0
+  j0=0
+  ndata=nsym*96000.d0*samfac*tsymbol
+
+  do i=1,ndata
+     t=t+dt
+     j=int(t/tsymbol) + 1                    !Symbol number, 1-126
+     if(j.ne.j0) then
+        f=f0
+        if(nspecial.ne.0 .and. mod(j,2).eq.0) f=f0+10*nspecial*dfgen
+        if(nspecial.eq.0 .and. flip*pr(j).lt.0.0) then
+           k=k+1
+           f=f0+(sent(k)+2)*dfgen
+        endif
+        dphi=twopi*dt*f
+        j0=j
+     endif
+     phi=phi+dphi
+     if(phi.gt.twopi) phi=phi-twopi
+     xphi=phi
+     cwave(i)=cmplx(cos(xphi),-sin(xphi))
+  enddo
+
+  cwave(ndata+1:)=0
+  nwave=ndata + 48000
+  call unpackmsg(dgen,msgsent)
+  if(flip.lt.0.0) then
+     do i=22,1,-1
+        if(msgsent(i:i).ne.' ') goto 10
+     enddo
+10   msgsent=msgsent(1:i)//' OOO'
+  endif
+
+  if(nsendingsh.eq.1) then
+     if(nspecial.eq.2) msgsent='RO'
+     if(nspecial.eq.3) msgsent='RRR'
+     if(nspecial.eq.4) msgsent='73'
+  endif
+
+  return
+end subroutine cgen65
diff --git a/q65w/libm65/chkhist.f90 b/q65w/libm65/chkhist.f90
new file mode 100644
index 000000000..c814c3ca3
--- /dev/null
+++ b/q65w/libm65/chkhist.f90
@@ -0,0 +1,23 @@
+subroutine chkhist(mrsym,nmax,ipk)
+
+  integer mrsym(63)
+  integer hist(0:63)
+
+  do i=0,63
+     hist(i)=0
+  enddo
+  do j=1,63
+     i=mrsym(j)
+     hist(i)=hist(i)+1
+  enddo
+
+  nmax=0
+  do i=0,63
+     if(hist(i).gt.nmax) then
+        nmax=hist(i)
+        ipk=i+1
+     endif
+  enddo
+
+  return
+end subroutine chkhist
diff --git a/q65w/libm65/chkmsg.f90 b/q65w/libm65/chkmsg.f90
new file mode 100644
index 000000000..457a80924
--- /dev/null
+++ b/q65w/libm65/chkmsg.f90
@@ -0,0 +1,31 @@
+subroutine chkmsg(message,cok,nspecial,flip)
+
+  character message*22,cok*3
+
+  nspecial=0
+  flip=1.0
+  cok="   "
+
+  do i=22,1,-1
+     if(message(i:i).ne.' ') go to 10
+  enddo
+  i=22
+
+10 if(i.ge.11) then
+     if ((message(i-3:i).eq.' OOO') .or. (message(20:22).eq.' OO')) then
+        cok='OOO'
+        flip=-1.0
+        if(message(20:22).eq.' OO') then
+           message=message(1:19)
+        else
+           message=message(1:i-4)
+        endif
+     endif
+  endif
+
+  if(message(1:3).eq.'RO ')  nspecial=2
+  if(message(1:4).eq.'RRR ') nspecial=3
+  if(message(1:3).eq.'73 ')  nspecial=4
+
+  return
+end subroutine chkmsg
diff --git a/q65w/libm65/coord.f90 b/q65w/libm65/coord.f90
new file mode 100644
index 000000000..8934b612b
--- /dev/null
+++ b/q65w/libm65/coord.f90
@@ -0,0 +1,40 @@
+SUBROUTINE COORD(A0,B0,AP,BP,A1,B1,A2,B2)
+
+! Examples:
+! 1. From ha,dec to az,el:
+!      call coord(pi,pio2-lat,0.,lat,ha,dec,az,el)
+! 2. From az,el to ha,dec:
+!      call coord(pi,pio2-lat,0.,lat,az,el,ha,dec)
+! 3. From ra,dec to l,b
+!      call coord(4.635594495,-0.504691042,3.355395488,0.478220215,
+!        ra,dec,l,b)
+! 4. From l,b to ra,dec
+!      call coord(1.705981071d0,-1.050357016d0,2.146800277d0,
+!        0.478220215d0,l,b,ra,dec)
+! 5. From ra,dec to ecliptic latitude (eb) and longitude (el):
+!      call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb)
+! 6. From ecliptic latitude (eb) and longitude (el) to ra,dec:
+!      call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,el,eb,ra,dec)
+
+  SB0=sin(B0)
+  CB0=cos(B0)
+  SBP=sin(BP)
+  CBP=cos(BP)
+  SB1=sin(B1)
+  CB1=cos(B1)
+  SB2=SBP*SB1 + CBP*CB1*cos(AP-A1)
+  CB2=SQRT(1.e0-SB2**2)
+  B2=atan(SB2/CB2)
+  SAA=sin(AP-A1)*CB1/CB2
+  CAA=(SB1-SB2*SBP)/(CB2*CBP)
+  CBB=SB0/CBP
+  SBB=sin(AP-A0)*CB0
+  SA2=SAA*CBB-CAA*SBB
+  CA2=CAA*CBB+SAA*SBB
+  TA2O2=0.0 !Shut up compiler warnings. -db
+  IF(CA2.LE.0.e0) TA2O2=(1.e0-CA2)/SA2 
+  IF(CA2.GT.0.e0) TA2O2=SA2/(1.e0+CA2)
+  A2=2.e0*atan(TA2O2)
+  IF(A2.LT.0.e0) A2=A2+6.2831853
+  RETURN
+END SUBROUTINE COORD
diff --git a/q65w/libm65/cutil.c b/q65w/libm65/cutil.c
new file mode 100644
index 000000000..69a526b07
--- /dev/null
+++ b/q65w/libm65/cutil.c
@@ -0,0 +1,93 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+// #include <sys/times.h>
+// #include <time.h>
+// #include <sys/time.h>
+#include "sleep.h"
+#include "timeval.h"
+
+/*  FORTRAN:  fd = close(filedes)      */
+int close_(int *filedes)
+{
+return(close(*filedes));
+}
+/*  FORTRAN:  fd = open(filnam,mode)  */
+int open_(char filnam[], int *mode)
+{
+  return(open(filnam,*mode));
+}
+/* FORTRAN:  fd = creat(filnam,mode) */
+int creat_(char filnam[],int *mode)
+{
+  return(creat(filnam,*mode));
+}
+/* FORTRAN:  nread = read(fd,buf,n) */
+int read_(int *fd, char buf[], int *n)
+{
+  return(read(*fd,buf,*n));
+}
+/* FORTRAN:  nwrt = write(fd,buf,n) */
+int write_(int *fd, char buf[], int *n)
+{
+  return(write(*fd,buf,*n));
+}
+/* FORTRAN: ns = lseek(fd,offset,origin) */
+int lseek_(int *fd,int *offset, int *origin)
+{
+  return(lseek(*fd,*offset,*origin));
+}
+/* times(2) */
+//int times_(struct tms *buf)
+//{
+//  return (times(buf));
+//}
+/* ioperm(2) */
+//ioperm_(from,num,turn_on)
+//unsigned long *from,*num,*turn_on;
+//{
+//  return (ioperm(*from,*num,*turn_on));
+//   return (i386_get_ioperm(*from,*num,*turn_on));
+//}
+
+/* usleep(3) */
+void usleep_(unsigned long *microsec)
+{
+  usleep(*microsec);
+}
+
+/* returns random numbers between 0 and 32767 to FORTRAN program */
+int iran_(int *arg)
+{
+  return (rand());
+}
+
+int exit_(int *n)
+{
+  printf("\n\n");
+  exit(*n);
+}
+
+/*
+struct tm *
+gmtime_r_(const time_t *clock, struct tm *result)
+{
+  gmtime_r(clock, result);
+}
+*/
+
+time_t time_(void)
+{
+     return time(0);
+}
+
+/* hrtime() */
+double hrtime_(void)
+{
+  struct timeval tv;
+  gettimeofday(&tv,NULL);
+  return(tv.tv_sec+1.e-6*tv.tv_usec);
+}
diff --git a/q65w/libm65/dcoord.f90 b/q65w/libm65/dcoord.f90
new file mode 100644
index 000000000..5ef6877aa
--- /dev/null
+++ b/q65w/libm65/dcoord.f90
@@ -0,0 +1,40 @@
+SUBROUTINE DCOORD(A0,B0,AP,BP,A1,B1,A2,B2)
+
+  implicit real*8 (a-h,o-z)
+! Examples:
+! 1. From ha,dec to az,el:
+!      call coord(pi,pio2-lat,0.,lat,ha,dec,az,el)
+! 2. From az,el to ha,dec:
+!      call coord(pi,pio2-lat,0.,lat,az,el,ha,dec)
+! 3. From ra,dec to l,b
+!      call coord(4.635594495,-0.504691042,3.355395488,0.478220215,
+!        ra,dec,l,b)
+! 4. From l,b to ra,dec
+!      call coord(1.705981071d0,-1.050357016d0,2.146800277d0,
+!        0.478220215d0,l,b,ra,dec)
+! 5. From ecliptic latitude (eb) and longitude (el) to ra, dec:
+!      call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb)
+
+  SB0=sin(B0)
+  CB0=cos(B0)
+  SBP=sin(BP)
+  CBP=cos(BP)
+  SB1=sin(B1)
+  CB1=cos(B1)
+  SB2=SBP*SB1 + CBP*CB1*cos(AP-A1)
+  CB2=SQRT(1.D0-SB2**2)
+  B2=atan(SB2/CB2)
+  SAA=sin(AP-A1)*CB1/CB2
+  CAA=(SB1-SB2*SBP)/(CB2*CBP)
+  CBB=SB0/CBP
+  SBB=sin(AP-A0)*CB0
+  SA2=SAA*CBB-CAA*SBB
+  CA2=CAA*CBB+SAA*SBB
+  TA2O2=0.0 !Shut up compiler warnings. -db
+  IF(CA2.LE.0.D0) TA2O2=(1.D0-CA2)/SA2 
+  IF(CA2.GT.0.D0) TA2O2=SA2/(1.D0+CA2)
+  A2=2.D0*atan(TA2O2)
+  IF(A2.LT.0.D0) A2=A2+6.2831853071795864D0
+
+  RETURN
+END SUBROUTINE DCOORD
diff --git a/q65w/libm65/decode0.f90 b/q65w/libm65/decode0.f90
new file mode 100644
index 000000000..438079f1d
--- /dev/null
+++ b/q65w/libm65/decode0.f90
@@ -0,0 +1,71 @@
+subroutine decode0(dd,ss,savg,nstandalone)
+
+  use timer_module, only: timer
+  parameter (NSMAX=60*96000)
+
+  real*4 dd(4,NSMAX),ss(4,322,NFFT),savg(4,NFFT)
+  real*8 fcenter
+  integer hist(0:32768)
+  logical ldecoded
+  character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20
+  character mycall0*12,hiscall0*12,hisgrid0*6
+  common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain,                &
+       ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift,                 &
+       mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode,               &
+       ndop00,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,datetime
+  common/early/nhsym1,nhsym2,ldecoded(32768)
+  common/decodes/ndecodes
+  data neme0/-99/,mcall3b/1/
+  save
+
+  call sec0(0,tquick)
+  call timer('decode0 ',0)
+  if(newdat.ne.0) then
+     nz=96000*nhsym/5.3833
+     hist=0
+     do i=1,nz
+        j1=min(abs(dd(1,i)),32768.0)
+        hist(j1)=hist(j1)+1
+        j2=min(abs(dd(2,i)),32768.0)
+        hist(j2)=hist(j2)+1
+        j3=min(abs(dd(3,i)),32768.0)
+        hist(j3)=hist(j3)+1
+        j4=min(abs(dd(4,i)),32768.0)
+        hist(j4)=hist(j4)+1
+     enddo
+     m=0
+     do i=0,32768
+        m=m+hist(i)
+        if(m.ge.2*nz) go to 10
+     enddo
+10   rmsdd=1.5*i
+  endif
+  ndphi=0
+  if(iand(nrxlog,8).ne.0) ndphi=1
+
+  if(mycall.ne.mycall0 .or. hiscall.ne.hiscall0 .or.         &
+       hisgrid.ne.hisgrid0 .or. mcall3.ne.0 .or. neme.ne.neme0) mcall3b=1
+      
+  mycall0=mycall
+  hiscall0=hiscall
+  hisgrid0=hisgrid
+  neme0=neme
+
+  call timer('map65a  ',0)
+  call map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,           &
+       mousedf,mousefqso,nagain,ndecdone,nfshift,ndphi,max_drift,          &
+       nfcal,nkeep,mcall3b,nsum,nsave,nxant,mycall,mygrid,                 &
+       neme,ndepth,nstandalone,hiscall,hisgrid,nhsym,nfsample,             &
+       ndiskdat,nxpol,nmode,ndop00)
+  call timer('map65a  ',1)
+  call timer('decode0 ',1)
+
+  call sec0(1,tdec)
+  if(nhsym.eq.nhsym1) write(*,1010) nsum,nsave,nstandalone,nhsym,tdec
+1010 format('<EarlyFinished>',3i4,i6,f6.2)
+  if(nhsym.eq.nhsym2) write(*,1012) nsum,nsave,nstandalone,nhsym,tdec,ndecodes
+1012 format('<DecodeFinished>',3i4,i6,f6.2,i5)
+  flush(6)
+
+  return
+end subroutine decode0
diff --git a/q65w/libm65/decode1a.f90 b/q65w/libm65/decode1a.f90
new file mode 100644
index 000000000..4219c0043
--- /dev/null
+++ b/q65w/libm65/decode1a.f90
@@ -0,0 +1,145 @@
+subroutine decode1a(dd,newdat,f0,nflip,mode65,nfsample,xpol,            &
+     mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi,ndphi,                 &
+     nutc,nkhz,ndf,ipol,ntol,sync2,a,dt,pol,nkv,nhist,nsum,nsave,       &
+     qual,decoded)
+
+! Apply AFC corrections to a candidate JT65 signal, then decode it.
+
+  use timer_module, only: timer
+  parameter (NMAX=60*96000)          !Samples per 60 s
+  real*4  dd(4,NMAX)                 !92 MB: raw data from Linrad timf2
+  complex cx(NMAX/64), cy(NMAX/64)   !Data at 1378.125 samples/s
+  complex c5x(NMAX/256),c5y(NMAX/256) !Data at 344.53125 Hz
+  complex c5a(512)
+  complex z
+  real s2(66,126)
+  real s3(64,63),sy(63)
+  real a(5)
+  logical first,xpol
+  character decoded*22
+  character mycall*12,hiscall*12,hisgrid*6
+  data first/.true./,jjjmin/1000/,jjjmax/-1000/
+  data nutc0/-999/,nhz0/-9999999/
+  save
+
+! Mix sync tone to baseband, low-pass filter, downsample to 1378.125 Hz
+  dt00=dt
+  call timer('filbig  ',0)
+  call filbig(dd,NMAX,f0,newdat,nfsample,xpol,cx,cy,n5)
+! NB: cx, cy have sample rate 96000*77125/5376000 = 1378.125 Hz
+  call timer('filbig  ',1)
+  if(mode65.eq.0) goto 900
+  sqa=0.
+  sqb=0.
+  do i=1,n5
+     sqa=sqa + real(cx(i))**2 + aimag(cx(i))**2
+     if(xpol) sqb=sqb + real(cy(i))**2 + aimag(cy(i))**2
+  enddo
+  sqa=sqa/n5
+  sqb=sqb/n5
+
+! Find best DF, f1, f2, DT, and pol.  Start by downsampling to 344.53125 Hz
+  if(xpol) then
+     z=cmplx(cos(dphi),sin(dphi))
+     cy(:n5)=z*cy(:n5)                !Adjust for cable length difference
+  endif
+! Add some zeros at start of c5 arrays -- empirical fix for negative DT's
+  nadd=1089
+  c5x(:nadd)=0.
+  call fil6521(cx,n5,c5x(nadd+1),n6)
+  if(xpol) then
+     c5y(:nadd)=0.
+     call fil6521(cy,n5,c5y(nadd+1),n6)
+  endif
+  n6=n6+nadd
+
+  fsample=1378.125/4.
+  a(5)=dt00
+  i0=nint((a(5)+0.5)*fsample) - 2 + nadd
+  if(i0.lt.1) then
+     write(13,*) 'i0 too small in decode1a:',i0,f0
+     flush(13)
+     i0=1
+  endif
+  nz=n6+1-i0
+
+! We're looking only at sync tone here... so why not downsample by another
+! factor of 1/8, say?  Should be a significant execution speed-up.
+! Best fit for DF, f1, f2, pol
+  call afc65b(c5x(i0),c5y(i0),nz,fsample,nflip,ipol,xpol,ndphi,a,ccfbest,dtbest)
+
+  pol=a(4)/57.2957795
+  aa=cos(pol)
+  bb=sin(pol)
+  sq0=aa*aa*sqa + bb*bb*sqb
+  sync2=3.7*ccfbest/sq0
+
+! Apply AFC corrections to the time-domain signal
+! Now we are back to using the 1378.125 Hz sample rate, enough to 
+! accommodate the full JT65C bandwidth.
+
+  call twkfreq_xy(cx,cy,n5,a)
+
+! Compute spectrum at best polarization for each half symbol.
+! Adding or subtracting a small number (e.g., 5) to j may make it decode.\
+! NB: might want to try computing full-symbol spectra (nfft=512, even for
+! submodes B and C).
+
+  nsym=126
+  nfft=512
+  j=(dt00+dtbest+2.685)*1378.125
+  if(j.lt.0) j=0
+
+
+! Perhaps should try full-symbol-length FFTs even in B, C sub-modes?
+! (Tried this, found no significant difference in decodes.)
+
+  do k=1,nsym
+!         do n=1,mode65
+     do n=1,1
+        do i=1,nfft
+           j=min(j+1,NMAX/64)
+           c5a(i)=aa*cx(j) + bb*cy(j)
+        enddo
+        call four2a(c5a,nfft,1,1,1)
+        if(n.eq.1) then
+           do i=1,66
+!                  s2(i,k)=real(c5a(i))**2 + aimag(c5a(i))**2
+              jj=i
+              if(mode65.eq.2) jj=2*i-1
+              if(mode65.eq.4) jj=4*i-3
+              s2(i,k)=real(c5a(jj))**2 + aimag(c5a(jj))**2
+           enddo
+        else
+           do i=1,66
+              s2(i,k)=s2(i,k) + real(c5a(i))**2 + aimag(c5a(i))**2
+           enddo
+        endif
+     enddo
+  enddo
+
+  flip=nflip
+  call timer('dec65b  ',0)
+  call decode65b(s2,flip,mycall,hiscall,hisgrid,mode65,neme,ndepth,    &
+       nqd,nkv,nhist,qual,decoded,s3,sy)
+  dt=dt00 + dtbest + 1.7
+  call timer('dec65b  ',1)
+
+  if(nqd.eq.1 .and. decoded.eq.'                      ') then
+     nhz=1000*nkhz + ndf
+     ihzdiff=min(500,ntol)
+     if(nutc.ne.nutc0 .or. abs(nhz-nhz0).ge.ihzdiff) syncbest=0.
+     if(sync2.gt.0.99999*syncbest) then
+        nsave=nsave+1
+        nsave=mod(nsave-1,64)+1
+        npol=nint(57.296*pol)
+
+        call s3avg(nsave,mode65,nutc,nhz,xdt,npol,ntol,s3,nsum,nkv,decoded)
+        syncbest=sync2
+        nhz0=nhz
+     endif
+     nutc0=nutc
+  endif
+
+900 return
+end subroutine decode1a
diff --git a/q65w/libm65/decode65b.f90 b/q65w/libm65/decode65b.f90
new file mode 100644
index 000000000..9b3ebccda
--- /dev/null
+++ b/q65w/libm65/decode65b.f90
@@ -0,0 +1,48 @@
+subroutine decode65b(s2,flip,mycall,hiscall,hisgrid,mode65,neme,ndepth,  &
+     nqd,nkv,nhist,qual,decoded,s3,sy)
+
+  real s2(66,126)
+  real s3(64,63),sy(63)
+  logical first,ltext
+  character decoded*22,deepmsg*22
+  character mycall*12,hiscall*12,hisgrid*6
+  common/prcom/pr(126),mdat(126),mref(126,2),mdat2(126),mref2(126,2)
+  data first/.true./
+  save
+
+  if(first) call setup65
+  first=.false.
+
+  do j=1,63
+     k=mdat(j)                       !Points to data symbol
+     if(flip.lt.0.0) k=mdat2(j)
+     do i=1,64
+        s3(i,j)=s2(i+2,k)
+     enddo
+     k=mdat2(j)                       !Points to data symbol
+     if(flip.lt.0.0) k=mdat(j)
+     sy(j)=s2(1,k)
+  enddo
+
+  nadd=mode65
+  call extract(s3,nadd,ncount,nhist,decoded,ltext)     !Extract the message
+! Suppress "birdie messages" and other garbage decodes:
+  if(decoded(1:7).eq.'000AAA ') ncount=-1
+  if(decoded(1:7).eq.'0L6MWK ') ncount=-1
+  if(flip.lt.0.0 .and. ltext) ncount=-1
+  nkv=1
+  if(ncount.lt.0) then 
+     nkv=0
+     decoded='                      '
+  endif
+
+  qual=0.
+  if(ndepth.ge.1 .and. (nqd.eq.1 .or. flip.eq.1.0)) then
+     call deep65(s3,mode65,neme,flip,mycall,hiscall,hisgrid,deepmsg,qual)
+     if(nqd.ne.1 .and. qual.lt.10.0) qual=0.0
+     if(ndepth.lt.2 .and. qual.lt.6.0) qual=0.0
+  endif
+  if(nkv.eq.0 .and. qual.ge.1.0) decoded=deepmsg
+
+  return
+end subroutine decode65b
diff --git a/q65w/libm65/decode_rs.c b/q65w/libm65/decode_rs.c
new file mode 100644
index 000000000..91f582ac1
--- /dev/null
+++ b/q65w/libm65/decode_rs.c
@@ -0,0 +1,268 @@
+/* Reed-Solomon decoder
+ * Copyright 2002 Phil Karn, KA9Q
+ * May be used under the terms of the GNU General Public License (GPL)
+ * Modified by Steve Franke, K9AN, for use in a soft-symbol RS decoder
+ */
+
+#ifdef DEBUG
+#include <stdio.h>
+#endif
+
+#include <string.h>
+
+#define NULL ((void *)0)
+#define	min(a,b)	((a) < (b) ? (a) : (b))
+
+#ifdef FIXED
+#include "fixed.h"
+#elif defined(BIGSYM)
+#include "int.h"
+#else
+#include "char.h"
+#endif
+
+int DECODE_RS(
+#ifndef FIXED
+              void *p,
+#endif
+              DTYPE *data, int *eras_pos, int no_eras, int calc_syn){
+    
+#ifndef FIXED
+    struct rs *rs = (struct rs *)p;
+#endif
+    int deg_lambda, el, deg_omega;
+    int i, j, r,k;
+    DTYPE u,q,tmp,num1,num2,den,discr_r;
+    DTYPE lambda[NROOTS+1];	// Err+Eras Locator poly
+    static DTYPE s[51];					 // and syndrome poly
+    DTYPE b[NROOTS+1], t[NROOTS+1], omega[NROOTS+1];
+    DTYPE root[NROOTS], reg[NROOTS+1], loc[NROOTS];
+    int syn_error, count;
+    
+    if( calc_syn ) {
+        /* form the syndromes; i.e., evaluate data(x) at roots of g(x) */
+        for(i=0;i<NROOTS;i++)
+            s[i] = data[0];
+        
+        for(j=1;j<NN;j++){
+            for(i=0;i<NROOTS;i++){
+                if(s[i] == 0){
+                    s[i] = data[j];
+                } else {
+                    s[i] = data[j] ^ ALPHA_TO[MODNN(INDEX_OF[s[i]] + (FCR+i)*PRIM)];
+                }
+            }
+        }
+        
+        /* Convert syndromes to index form, checking for nonzero condition */
+        syn_error = 0;
+        for(i=0;i<NROOTS;i++){
+            syn_error |= s[i];
+            s[i] = INDEX_OF[s[i]];
+        }
+        
+        
+        if (!syn_error) {
+            /* if syndrome is zero, data[] is a codeword and there are no
+             * errors to correct. So return data[] unmodified
+             */
+            count = 0;
+            goto finish;
+        }
+        
+    }
+    
+    memset(&lambda[1],0,NROOTS*sizeof(lambda[0]));
+    lambda[0] = 1;
+    
+    if (no_eras > 0) {
+        /* Init lambda to be the erasure locator polynomial */
+        lambda[1] = ALPHA_TO[MODNN(PRIM*(NN-1-eras_pos[0]))];
+        for (i = 1; i < no_eras; i++) {
+            u = MODNN(PRIM*(NN-1-eras_pos[i]));
+            for (j = i+1; j > 0; j--) {
+                tmp = INDEX_OF[lambda[j - 1]];
+                if(tmp != A0)
+                    lambda[j] ^= ALPHA_TO[MODNN(u + tmp)];
+            }
+        }
+        
+#if DEBUG >= 1
+        /* Test code that verifies the erasure locator polynomial just constructed
+         Needed only for decoder debugging. */
+        
+        /* find roots of the erasure location polynomial */
+        for(i=1;i<=no_eras;i++)
+            reg[i] = INDEX_OF[lambda[i]];
+        
+        count = 0;
+        for (i = 1,k=IPRIM-1; i <= NN; i++,k = MODNN(k+IPRIM)) {
+            q = 1;
+            for (j = 1; j <= no_eras; j++)
+                if (reg[j] != A0) {
+                    reg[j] = MODNN(reg[j] + j);
+                    q ^= ALPHA_TO[reg[j]];
+                }
+            if (q != 0)
+                continue;
+            /* store root and error location number indices */
+            root[count] = i;
+            loc[count] = k;
+            count++;
+        }
+        if (count != no_eras) {
+            printf("count = %d no_eras = %d\n lambda(x) is WRONG\n",count,no_eras);
+            count = -1;
+            goto finish;
+        }
+#if DEBUG >= 2
+        printf("\n Erasure positions as determined by roots of Eras Loc Poly:\n");
+        for (i = 0; i < count; i++)
+            printf("%d ", loc[i]);
+        printf("\n");
+#endif
+#endif
+    }
+    for(i=0;i<NROOTS+1;i++)
+        b[i] = INDEX_OF[lambda[i]];
+    
+    /*
+     * Begin Berlekamp-Massey algorithm to determine error+erasure
+     * locator polynomial
+     */
+    r = no_eras;
+    el = no_eras;
+    while (++r <= NROOTS) {	/* r is the step number */
+        /* Compute discrepancy at the r-th step in poly-form */
+        discr_r = 0;
+        for (i = 0; i < r; i++){
+            if ((lambda[i] != 0) && (s[r-i-1] != A0)) {
+                discr_r ^= ALPHA_TO[MODNN(INDEX_OF[lambda[i]] + s[r-i-1])];
+            }
+        }
+        discr_r = INDEX_OF[discr_r];	/* Index form */
+        if (discr_r == A0) {
+            /* 2 lines below: B(x) <-- x*B(x) */
+            memmove(&b[1],b,NROOTS*sizeof(b[0]));
+            b[0] = A0;
+        } else {
+            /* 7 lines below: T(x) <-- lambda(x) - discr_r*x*b(x) */
+            t[0] = lambda[0];
+            for (i = 0 ; i < NROOTS; i++) {
+                if(b[i] != A0)
+                    t[i+1] = lambda[i+1] ^ ALPHA_TO[MODNN(discr_r + b[i])];
+                else
+                    t[i+1] = lambda[i+1];
+            }
+            if (2 * el <= r + no_eras - 1) {
+                el = r + no_eras - el;
+                /*
+                 * 2 lines below: B(x) <-- inv(discr_r) *
+                 * lambda(x)
+                 */
+                for (i = 0; i <= NROOTS; i++)
+                    b[i] = (lambda[i] == 0) ? A0 : MODNN(INDEX_OF[lambda[i]] - discr_r + NN);
+            } else {
+                /* 2 lines below: B(x) <-- x*B(x) */
+                memmove(&b[1],b,NROOTS*sizeof(b[0]));
+                b[0] = A0;
+            }
+            memcpy(lambda,t,(NROOTS+1)*sizeof(t[0]));
+        }
+    }
+    
+    /* Convert lambda to index form and compute deg(lambda(x)) */
+    deg_lambda = 0;
+    for(i=0;i<NROOTS+1;i++){
+        lambda[i] = INDEX_OF[lambda[i]];
+        if(lambda[i] != A0)
+            deg_lambda = i;
+    }
+    /* Find roots of the error+erasure locator polynomial by Chien search */
+    memcpy(&reg[1],&lambda[1],NROOTS*sizeof(reg[0]));
+    count = 0;		/* Number of roots of lambda(x) */
+    for (i = 1,k=IPRIM-1; i <= NN; i++,k = MODNN(k+IPRIM)) {
+        q = 1; /* lambda[0] is always 0 */
+        for (j = deg_lambda; j > 0; j--){
+            if (reg[j] != A0) {
+                reg[j] = MODNN(reg[j] + j);
+                q ^= ALPHA_TO[reg[j]];
+            }
+        }
+        if (q != 0)
+            continue; /* Not a root */
+        /* store root (index-form) and error location number */
+#if DEBUG>=2
+        printf("count %d root %d loc %d\n",count,i,k);
+#endif
+        root[count] = i;
+        loc[count] = k;
+        /* If we've already found max possible roots,
+         * abort the search to save time
+         */
+        if(++count == deg_lambda)
+            break;
+    }
+    if (deg_lambda != count) {
+        /*
+         * deg(lambda) unequal to number of roots => uncorrectable
+         * error detected
+         */
+        count = -1;
+        goto finish;
+    }
+    /*
+     * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo
+     * x**NROOTS). in index form. Also find deg(omega).
+     */
+    deg_omega = 0;
+    for (i = 0; i < NROOTS;i++){
+        tmp = 0;
+        j = (deg_lambda < i) ? deg_lambda : i;
+        for(;j >= 0; j--){
+            if ((s[i - j] != A0) && (lambda[j] != A0))
+                tmp ^= ALPHA_TO[MODNN(s[i - j] + lambda[j])];
+        }
+        if(tmp != 0)
+            deg_omega = i;
+        omega[i] = INDEX_OF[tmp];
+    }
+    omega[NROOTS] = A0;
+    
+    /*
+     * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 =
+     * inv(X(l))**(FCR-1) and den = lambda_pr(inv(X(l))) all in poly-form
+     */
+    for (j = count-1; j >=0; j--) {
+        num1 = 0;
+        for (i = deg_omega; i >= 0; i--) {
+            if (omega[i] != A0)
+                num1  ^= ALPHA_TO[MODNN(omega[i] + i * root[j])];
+        }
+        num2 = ALPHA_TO[MODNN(root[j] * (FCR - 1) + NN)];
+        den = 0;
+        
+        /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */
+        for (i = min(deg_lambda,NROOTS-1) & ~1; i >= 0; i -=2) {
+            if(lambda[i+1] != A0)
+                den ^= ALPHA_TO[MODNN(lambda[i+1] + i * root[j])];
+        }
+        if (den == 0) {
+#if DEBUG >= 1
+            printf("\n ERROR: denominator = 0\n");
+#endif
+            count = -1;
+            goto finish;
+        }
+        /* Apply error to data */
+        if (num1 != 0) {
+            data[loc[j]] ^= ALPHA_TO[MODNN(INDEX_OF[num1] + INDEX_OF[num2] + NN - INDEX_OF[den])];
+        }
+    }
+finish:
+    if(eras_pos != NULL){
+        for(i=0;i<count;i++)
+            eras_pos[i] = loc[i];
+    }
+    return count;
+}
diff --git a/q65w/libm65/deep65.f90 b/q65w/libm65/deep65.f90
new file mode 100644
index 000000000..d684cd15a
--- /dev/null
+++ b/q65w/libm65/deep65.f90
@@ -0,0 +1,170 @@
+subroutine deep65(s3,mode65,neme,flip,mycall,hiscall,hisgrid,decoded,qual)
+
+  use timer_module, only: timer
+  parameter (MAXCALLS=10000,MAXRPT=63)
+  real s3(64,63)
+  character callsign*12,grid*4,message*22,hisgrid*6,c*1,ceme*3
+  character*12 mycall,hiscall
+  character*22 decoded,bestmsg
+  character*22 testmsg(2*MAXCALLS + 2 + MAXRPT)
+  character*15 callgrid(MAXCALLS)
+  character*180 line
+  character*4 rpt(MAXRPT)
+  integer ncode(63,2*MAXCALLS + 2 + MAXRPT)
+  real pp(2*MAXCALLS + 2 + MAXRPT)
+  common/mrscom/ mrs(63),mrs2(63)
+  common/c3com/ mcall3a
+  data rpt/'-01','-02','-03','-04','-05',          &
+           '-06','-07','-08','-09','-10',          &
+           '-11','-12','-13','-14','-15',          &
+           '-16','-17','-18','-19','-20',          &
+           '-21','-22','-23','-24','-25',          &
+           '-26','-27','-28','-29','-30',          &
+           'R-01','R-02','R-03','R-04','R-05',     &
+           'R-06','R-07','R-08','R-09','R-10',     &
+           'R-11','R-12','R-13','R-14','R-15',     &
+           'R-16','R-17','R-18','R-19','R-20',     &
+           'R-21','R-22','R-23','R-24','R-25',     &
+           'R-26','R-27','R-28','R-29','R-30',     &
+           'RO','RRR','73'/
+  save
+
+  if(mcall3a.eq.0) go to 30
+
+  call timer('deep65a ',0)
+  mcall3a=0
+  rewind 23
+  k=0
+  icall=0
+  do n=1,MAXCALLS
+     if(n.eq.1) then
+        callsign=hiscall
+        do i=4,12
+           if(ichar(callsign(i:i)).eq.0) callsign(i:i)=' '
+        enddo
+        grid=hisgrid(1:4)
+        if(ichar(grid(3:3)).eq.0) grid(3:3)=' '
+        if(ichar(grid(4:4)).eq.0) grid(4:4)=' '
+     else
+        read(23,1002,end=20) line
+1002    format (A80)
+        if(line(1:4).eq.'ZZZZ') go to 20
+        if(line(1:2).eq.'//') go to 10
+        i1=index(line,',')
+        if(i1.lt.4) go to 10
+        i2=index(line(i1+1:),',')
+        if(i2.lt.5) go to 10
+        i2=i2+i1
+        i3=index(line(i2+1:),',')
+        if(i3.lt.1) i3=index(line(i2+1:),' ')
+        i3=i2+i3
+        callsign=line(1:i1-1)
+        grid=line(i1+1:i2-1)
+        ceme=line(i2+1:i3-1)
+        if(neme.eq.1 .and. ceme.ne.'EME') go to 10
+     endif
+
+     icall=icall+1
+     j1=index(mycall,' ') - 1
+     if(j1.le.-1) j1=12
+     if(j1.lt.3) j1=6
+     j2=index(callsign,' ') - 1
+     if(j2.le.-1) j2=12
+     if(j2.lt.3) j2=6
+     j3=index(mycall,'/')                 ! j3>0 means compound mycall
+     j4=index(callsign,'/')               ! j4>0 means compound hiscall
+     callgrid(icall)=callsign(1:j2)
+
+     mz=1
+! Allow MyCall + HisCall + rpt (?)
+     if(n.eq.1 .and. j3.lt.1 .and. j4.lt.1 .and. callsign(1:6).ne.'      ')  &
+          mz=MAXRPT+1
+     do m=1,mz
+        if(m.gt.1) grid=rpt(m-1)
+        if(j3.lt.1 .and.j4.lt.1) callgrid(icall)=callsign(1:j2)//' '//grid
+        message=mycall(1:j1)//' '//callgrid(icall)
+        k=k+1
+        testmsg(k)=message
+        call encode65(message,ncode(1,k))
+        
+! Insert CQ message
+        if(j4.lt.1) callgrid(icall)=callsign(1:j2)//' '//grid
+        message='CQ '//callgrid(icall)
+        k=k+1
+        testmsg(k)=message
+        call encode65(message,ncode(1,k))
+     enddo
+10   continue
+  enddo
+
+20 continue
+  ntot=k
+  call timer('deep65a ',1)
+
+30 continue
+  call timer('deep65b ',0)
+  ref0=0.
+  do j=1,63
+     ref0=ref0 + s3(mrs(j),j)
+  enddo
+
+  p1=-1.e30
+  do k=1,ntot
+     pp(k)=0.
+     if(k.ge.2 .and. k.le.64 .and. flip.lt.0.0) cycle
+! Test all messages if flip=+1; skip the CQ messages if flip=-1.
+     if(flip.gt.0.0 .or. testmsg(k)(1:3).ne.'CQ ') then
+        sum=0.
+        ref=ref0
+        do j=1,63
+           i=ncode(j,k)+1
+           sum=sum + s3(i,j)
+           if(i.eq.mrs(j)) ref=ref - s3(i,j) + s3(mrs2(j),j)
+        enddo
+        p=sum/ref
+        pp(k)=p
+        if(p.gt.p1) then
+           p1=p
+           ip1=k
+           bestmsg=testmsg(k)
+        endif
+     endif
+  enddo
+
+  p2=-1.e30
+  do i=1,ntot
+     if(pp(i).gt.p2 .and. testmsg(i).ne.bestmsg) p2=pp(i)
+  enddo
+
+  if(mode65.eq.1) bias=max(1.12*p2,0.335)
+  if(mode65.eq.2) bias=max(1.08*p2,0.405)
+  if(mode65.ge.4) bias=max(1.04*p2,0.505)
+
+  if(p2.eq.p1 .and. p1.ne.-1.e30) then
+     open(77,file='error.log',status='unknown',access='append')
+     write(77,*) p1,p2,ip1,bestmsg
+     close(77)
+  endif
+
+  qual=100.0*(p1-bias)
+
+  decoded='                      '
+  c=' '
+
+  if(qual.gt.1.0) then
+     if(qual.lt.6.0) c='?'
+     decoded=testmsg(ip1)
+  else
+     qual=0.
+  endif
+  decoded(22:22)=c
+
+! Make sure everything is upper case.
+  do i=1,22
+     if(decoded(i:i).ge.'a' .and. decoded(i:i).le.'z')                &
+          decoded(i:i)=char(ichar(decoded(i:i))-32)
+  enddo
+  call timer('deep65b ',1)
+
+  return
+end subroutine deep65
diff --git a/q65w/libm65/deg2grid.f90 b/q65w/libm65/deg2grid.f90
new file mode 100644
index 000000000..9ca3602f8
--- /dev/null
+++ b/q65w/libm65/deg2grid.f90
@@ -0,0 +1,30 @@
+subroutine deg2grid(dlong0,dlat,grid)
+
+  real dlong                        !West longitude (deg)
+  real dlat                         !Latitude (deg)
+  character grid*6
+
+  dlong=dlong0
+  if(dlong.lt.-180.0) dlong=dlong+360.0
+  if(dlong.gt.180.0) dlong=dlong-360.0
+
+! Convert to units of 5 min of longitude, working east from 180 deg.
+  nlong=60.0*(180.0-dlong)/5.0
+  n1=nlong/240                      !20-degree field
+  n2=(nlong-240*n1)/24              !2 degree square
+  n3=nlong-240*n1-24*n2             !5 minute subsquare
+  grid(1:1)=char(ichar('A')+n1)
+  grid(3:3)=char(ichar('0')+n2)
+  grid(5:5)=char(ichar('a')+n3)
+
+! Convert to units of 2.5 min of latitude, working north from -90 deg.
+  nlat=60.0*(dlat+90)/2.5
+  n1=nlat/240                       !10-degree field
+  n2=(nlat-240*n1)/24               !1 degree square
+  n3=nlat-240*n1-24*n2              !2.5 minuts subsquare
+  grid(2:2)=char(ichar('A')+n1)
+  grid(4:4)=char(ichar('0')+n2)
+  grid(6:6)=char(ichar('a')+n3)
+
+  return
+end subroutine deg2grid
diff --git a/q65w/libm65/demod64a.f90 b/q65w/libm65/demod64a.f90
new file mode 100644
index 000000000..3b8ee03ce
--- /dev/null
+++ b/q65w/libm65/demod64a.f90
@@ -0,0 +1,77 @@
+subroutine demod64a(s3,nadd,mrsym,mrprob,mr2sym,mr2prob,ntest,nlow)
+
+!  Demodulate the 64-bin spectra for each of 63 symbols in a frame.
+
+!  Parameters
+!     nadd     number of spectra already summed
+!     mrsym    most reliable symbol value
+!     mr2sym   second most likely symbol value
+!     mrprob   probability that mrsym was the transmitted value
+!     mr2prob  probability that mr2sym was the transmitted value
+
+  implicit real*8 (a-h,o-z)
+  real*4 s3(64,63)
+  real*8 fs(64)
+  integer mrsym(63),mrprob(63),mr2sym(63),mr2prob(63)
+  common/mrscom/ mrs(63),mrs2(63)
+
+  afac=1.1 * float(nadd)**0.64
+  scale=255.999
+
+!  Compute average spectral value
+  sum=0.
+  do j=1,63
+     do i=1,64
+        sum=sum+s3(i,j)
+     enddo
+  enddo
+  ave=sum/(64.*63.)
+  i1=1                                      !Silence warning
+  i2=1
+
+!  Compute probabilities for most reliable symbol values
+  do j=1,63
+     s1=-1.e30
+     fsum=0.
+     psum=0.
+     do i=1,64
+        x=min(afac*s3(i,j)/ave,50.d0)
+        fs(i)=exp(x)
+        fsum=fsum+fs(i)
+        psum=psum + s3(i,j)
+        if(s3(i,j).gt.s1) then
+           s1=s3(i,j)
+           i1=i                              !Most reliable
+        endif
+     enddo
+
+     s2=-1.e30
+     do i=1,64
+        if(i.ne.i1 .and. s3(i,j).gt.s2) then
+           s2=s3(i,j)
+           i2=i                              !Second most reliable
+        endif
+     enddo
+!     p1=fs(i1)/fsum                          !Normalized probabilities
+!     p2=fs(i2)/fsum
+     p1=s1/psum
+     p2=s2/psum
+     mrsym(j)=i1-1
+     mr2sym(j)=i2-1
+     mrprob(j)=scale*p1
+     mr2prob(j)=scale*p2
+     mrs(j)=i1
+     mrs2(j)=i2
+  enddo
+  
+  sum=0.
+  nlow=0
+  do j=1,63
+     sum=sum+mrprob(j)
+     if(mrprob(j).le.5) nlow=nlow+1
+  enddo
+!  ntest=sum/63
+  ntest=sum
+
+  return
+end subroutine demod64a
diff --git a/q65w/libm65/display.f90 b/q65w/libm65/display.f90
new file mode 100644
index 000000000..1fef5c560
--- /dev/null
+++ b/q65w/libm65/display.f90
@@ -0,0 +1,179 @@
+subroutine display(nkeep,ftol)
+
+  parameter (MAXLINES=400,MX=400,MAXCALLS=500)
+  integer indx(MAXLINES),indx2(MX)
+  character*83 line(MAXLINES),line2(MX),line3(MAXLINES)
+  character out*52,out0*52,cfreq0*3,livecq*58
+  character*6 callsign,callsign0
+  character*12 freqcall(MAXCALLS)
+  real freqkHz(MAXLINES)
+  integer utc(MAXLINES),utc2(MX),utcz
+  real*8 f0
+  save
+
+  out0=' '
+  rewind(26)
+
+  do i=1,MAXLINES
+     read(26,1010,end=10) line(i)
+1010 format(a77)
+     read(line(i),1020) f0,ndf,nh,nm
+1020 format(f8.3,i5,25x,i3,i2)
+     utc(i)=60*nh + nm
+     freqkHz(i)=1000.d0*(f0-144.d0) + 0.001d0*ndf
+  enddo
+
+10 backspace(26)
+  nz=i-1
+  utcz=utc(nz)
+  nz=nz-1
+  if(nz.lt.1) go to 999
+  nquad=max(nkeep/4,3)
+  do i=1,nz
+     nage=utcz-utc(i)
+     if(nage.lt.0) nage=nage+1440
+     iage=nage/nquad
+     write(line(i)(73:74),1021) iage
+1021 format(i2)
+  enddo
+
+  nage=utcz-utc(1)
+  if(nage.lt.0) nage=nage+1440
+  if(nage.gt.nkeep) then
+     do i=1,nz
+        nage=utcz-utc(i)
+        if(nage.lt.0) nage=nage+1440
+        if(nage.le.nkeep) go to 20
+     enddo
+20   i0=i
+     nz=nz-i0+1
+     rewind(26)
+     if(nz.lt.1) go to 999
+     do i=1,nz
+        j=i+i0-1
+        line(i)=line(j)
+        utc(i)=utc(j)
+        freqkHz(i)=freqkHz(j)
+        write(26,1022) line(i)
+1022    format(a77)
+     enddo
+  endif
+
+  call flush(26)
+  call indexx(freqkHz,nz,indx)
+
+  nstart=1
+  k3=0
+  k=1
+  m=indx(1)
+  if(m.lt.1 .or. m.gt.MAXLINES) then
+     print*,'Error in display.f90: ',nz,m
+     m=1
+  endif
+  line2(1)=line(m)
+  utc2(1)=utc(m)
+  do i=2,nz
+     j0=indx(i-1)
+     j=indx(i)
+     if(freqkHz(j)-freqkHz(j0).gt.2.0*ftol) then
+        if(nstart.eq.0) then
+           k=k+1
+           line2(k)=""
+           utc2(k)=-1
+        endif
+        kz=k
+        if(nstart.eq.1) then
+           call indexx(float(utc2(1:kz)),kz,indx2)
+           k3=0
+           do k=1,kz
+              k3=min(k3+1,400)
+              line3(k3)=line2(indx2(k))
+           enddo
+           nstart=0
+        else
+           call indexx(float(utc2(1:kz)),kz,indx2)
+           do k=1,kz
+              k3=min(k3+1,400)
+              line3(k3)=line2(indx2(k))
+           enddo
+        endif
+        k=0
+     endif
+     if(i.eq.nz) then
+        k=k+1
+        line2(k)=""
+        utc2(k)=-1
+     endif
+     k=k+1
+     line2(k)=line(j)
+     utc2(k)=utc(j)
+     j0=j
+  enddo
+  kz=k
+  call indexx(float(utc2(1:kz)),kz,indx2)
+  do k=1,kz
+     k3=min(k3+1,400)
+     line3(k3)=line2(indx2(k))
+  enddo
+
+  rewind 19
+  rewind 20
+  cfreq0='   '
+  nc=0
+  callsign0='      '
+  do k=1,k3
+     out=line3(k)(6:13)//line3(k)(28:31)//line3(k)(39:45)//       &
+          line3(k)(35:38)//line3(k)(46:74)
+     if(out(1:3).ne.'   ') then
+        cfreq0=out(1:3)
+        livecq=line3(k)(6:13)//line3(k)(28:31)//line3(k)(39:45)//       &
+             line3(k)(23:27)//line3(k)(35:38)//line3(k)(46:70)//        &
+             line3(k)(73:77)
+        if(livecq(56:56).eq.':') livecq(56:58)=' '//livecq(56:57)
+        if(index(livecq,' CQ ').gt.0 .or. index(livecq,' QRZ ').gt.0 .or.   &
+           index(livecq,' QRT ').gt.0 .or. index(livecq,' CQV ').gt.0 .or.  &
+           index(livecq,' CQH ').gt.0) write(19,1029) livecq
+1029    format(a58)
+
+! Suppress listing duplicate (same time, decoded message, and frequency)
+        if(out(14:17).ne.out0(14:17) .or. out(26:50).ne.out0(26:50) .or.  &
+             out(1:3).ne.out0(1:3)) then
+           write(*,1030) out                  !Messages
+1030       format('@',a52)
+           out0=out
+        endif
+
+        i1=index(out(26:),' ')
+        callsign=out(i1+26:)
+        i2=index(callsign,' ')
+        if(i2.gt.1) callsign(i2:)='      '
+        if(callsign.ne.'      ' .and. callsign.ne.callsign0) then
+           len=i2-1
+           if(len.lt.0) len=6
+           if(len.ge.4) then                        !Omit short "callsigns"
+              if(nc.lt.MAXCALLS) nc=nc+1
+              freqcall(nc)=cfreq0//' '//callsign//line3(k)(73:74)
+              callsign0=callsign
+           endif
+        endif
+        if(callsign.ne.'      ' .and. callsign.eq.callsign0) then
+           freqcall(nc)=cfreq0//' '//callsign//line3(k)(73:74)
+        endif
+     endif
+  enddo
+  flush(19)
+  if(nc.lt.MAXCALLS) nc=nc+1
+  freqcall(nc)='            '
+  if(nc.lt.MAXCALLS) nc=nc+1
+  freqcall(nc)='            '
+  freqcall(nc+1)='            '
+  freqcall(nc+2)='            '
+
+  do i=1,nc
+  write(*,1042) freqcall(i)                         !Band Map
+1042 format('&',a12)
+  enddo
+
+999  continue
+  return
+end subroutine display
diff --git a/q65w/libm65/dot.f90 b/q65w/libm65/dot.f90
new file mode 100644
index 000000000..5829e8787
--- /dev/null
+++ b/q65w/libm65/dot.f90
@@ -0,0 +1,11 @@
+real*8 function dot(x,y)
+
+  real*8 x(3),y(3)
+
+  dot=0.d0
+  do i=1,3
+     dot=dot+x(i)*y(i)
+  enddo
+
+  return
+end function dot
diff --git a/q65w/libm65/dpol.f90 b/q65w/libm65/dpol.f90
new file mode 100644
index 000000000..3f8085c0a
--- /dev/null
+++ b/q65w/libm65/dpol.f90
@@ -0,0 +1,41 @@
+real function dpol(mygrid,hisgrid)
+
+! Compute spatial polartzation offset in degrees for the present 
+! time, between two specified grid locators.
+
+  character*6 MyGrid,HisGrid
+  real lat,lon,LST
+  character cdate*8,ctime2*10,czone*5
+  integer  it(8)
+  data rad/57.2957795/
+
+  call date_and_time(cdate,ctime2,czone,it)
+  nyear=it(1)
+  month=it(2)
+  nday=it(3)
+  nh=it(5)-it(4)/60
+  nm=it(6)
+  ns=it(7)
+  uth=nh + nm/60.0 + ns/3600.0
+
+  call grid2deg(MyGrid,lon,lat)
+  call MoonDop(nyear,month,nday,uth,-lon,lat,RAMoon,DecMoon,         &
+       LST,HA,AzMoon,ElMoon,vr,dist)
+  xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)*                    &
+       cos(AzMoon/rad)*sin(ElMoon/rad)
+  yy=cos(lat/rad)*sin(AzMoon/rad)
+  poloffset1=rad*atan2(yy,xx)
+
+  call grid2deg(hisGrid,lon,lat)
+  call MoonDop(nyear,month,nday,uth,-lon,lat,RAMoon,DecMoon,         &
+       LST,HA,AzMoon,ElMoon,vr,dist)
+  xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)*                    &
+       cos(AzMoon/rad)*sin(ElMoon/rad)
+  yy=cos(lat/rad)*sin(AzMoon/rad)
+  poloffset2=rad*atan2(yy,xx)
+
+  dpol=mod(poloffset2-poloffset1+720.0,180.0)
+  if(dpol.gt.90.0) dpol=dpol-180.0
+
+  return
+end function dpol
diff --git a/q65w/libm65/encode65.f90 b/q65w/libm65/encode65.f90
new file mode 100644
index 000000000..920d9c841
--- /dev/null
+++ b/q65w/libm65/encode65.f90
@@ -0,0 +1,14 @@
+subroutine encode65(message,sent)
+
+  use packjt
+  character message*22
+  integer dgen(12)
+  integer sent(63)
+
+  call packmsg(message,dgen,itype)
+  call rs_encode(dgen,sent)
+  call interleave63(sent,1)
+  call graycode(sent,63,1)
+
+  return
+end subroutine encode65
diff --git a/q65w/libm65/encode_rs.c b/q65w/libm65/encode_rs.c
new file mode 100644
index 000000000..9d56d0bf1
--- /dev/null
+++ b/q65w/libm65/encode_rs.c
@@ -0,0 +1,47 @@
+/* Reed-Solomon encoder
+ * Copyright 2002, Phil Karn, KA9Q
+ * May be used under the terms of the GNU General Public License (GPL)
+ */
+#include <string.h>
+
+#ifdef FIXED
+#include "fixed.h"
+#elif defined(BIGSYM)
+#include "int.h"
+#else
+#include "char.h"
+#endif
+
+void ENCODE_RS(
+#ifndef FIXED
+void *p,
+#endif
+DTYPE *data, DTYPE *bb){
+#ifndef FIXED
+  struct rs *rs = (struct rs *)p;
+#endif
+  int i, j;
+  DTYPE feedback;
+
+  memset(bb,0,NROOTS*sizeof(DTYPE));
+
+  for(i=0;i<NN-NROOTS;i++){
+    feedback = INDEX_OF[data[i] ^ bb[0]];
+    if(feedback != A0){      /* feedback term is non-zero */
+#ifdef UNNORMALIZED
+      /* This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
+       * always be for the polynomials constructed by init_rs()
+       */
+      feedback = MODNN(NN - GENPOLY[NROOTS] + feedback);
+#endif
+      for(j=1;j<NROOTS;j++)
+	bb[j] ^= ALPHA_TO[MODNN(feedback + GENPOLY[NROOTS-j])];
+    }
+    /* Shift */
+    memmove(&bb[0],&bb[1],sizeof(DTYPE)*(NROOTS-1));
+    if(feedback != A0)
+      bb[NROOTS-1] = ALPHA_TO[MODNN(feedback + GENPOLY[0])];
+    else
+      bb[NROOTS-1] = 0;
+  }
+}
diff --git a/q65w/libm65/extract.f90 b/q65w/libm65/extract.f90
new file mode 100644
index 000000000..4d8af58a9
--- /dev/null
+++ b/q65w/libm65/extract.f90
@@ -0,0 +1,136 @@
+subroutine extract(s3,nadd,ncount,nhist,decoded,ltext)
+
+  use packjt
+  use timer_module, only: timer
+  real s3(64,63)
+  character decoded*22
+  integer dat4(12)
+  integer mrsym(63),mr2sym(63),mrprob(63),mr2prob(63)
+  logical first,ltext
+  integer correct(63),itmp(63)
+  integer param(0:8)
+  integer h0(0:11),d0(0:11)
+  real r0(0:11)
+  common/test001/s3a(64,63),mrs(63),mrs2(63)        !### TEST ONLY ###
+
+!          0  1  2  3  4  5  6  7  8  9 10 11
+  data h0/41,42,43,43,44,45,46,47,48,48,49,49/
+  data d0/71,72,73,74,76,77,78,80,81,82,83,83/
+!            0    1    2    3    4    5    6    7    8    9   10   11
+  data r0/0.70,0.72,0.74,0.76,0.78,0.80,0.82,0.84,0.86,0.88,0.90,0.90/
+
+  data first/.true./,nsec1/0/
+  save
+
+  nfail=0
+  call pctile(s3,4032,50,base)     ! ### or, use ave from demod64a
+  s3=s3/base
+  s3a=s3
+1 call demod64a(s3,nadd,mrsym,mrprob,mr2sym,mr2prob,ntest,nlow)
+!  if(ntest.lt.50 .or. nlow.gt.20) then
+!     ncount=-999                         !Flag bad data
+!     go to 900
+!  endif
+  call chkhist(mrsym,nhist,ipk)
+
+  if(nhist.ge.20) then
+     nfail=nfail+1
+     call pctile(s3,4032,50,base)     ! ### or, use ave from demod64a
+     s3(ipk,1:63)=base
+     if(nfail.gt.30) then
+        decoded='                      '
+        ncount=-1
+        go to 900
+     endif
+     go to 1
+  endif
+
+  mrs=mrsym
+  mrs2=mr2sym
+
+  call graycode(mrsym,63,-1)
+  call interleave63(mrsym,-1)
+  call interleave63(mrprob,-1)
+
+  call graycode(mr2sym,63,-1)
+  call interleave63(mr2sym,-1)
+  call interleave63(mr2prob,-1)
+
+  ntrials=10000
+  naggressive=10
+
+  ntry=0
+  param=0
+
+  call timer('ftrsd   ',0)
+  call ftrsd2(mrsym,mrprob,mr2sym,mr2prob,ntrials,correct,param,ntry)
+  call timer('ftrsd   ',1)
+  ncandidates=param(0)
+  nhard=param(1)
+  nsoft=param(2)
+  nerased=param(3)
+  rtt=0.001*param(4)
+  ntotal=param(5)
+  qual=0.001*param(7)
+  nd0=81
+  r00=0.87
+  if(naggressive.eq.10) then
+     nd0=83
+     r00=0.90
+  endif
+  if(ntotal.le.nd0 .and. rtt.le.r00) nft=1
+  n=naggressive
+  if(nhard.gt.50) nft=0
+  if(nhard.gt.h0(n)) nft=0
+  if(ntotal.gt.d0(n)) nft=0
+  if(rtt.gt.r0(n)) nft=0
+
+  ncount=-1
+  decoded='                      '
+  ltext=.false.
+  if(nft.gt.0) then
+! Turn the corrected symbol array into channel symbols for subtraction;
+! pass it back to jt65a via common block "chansyms65".
+     do i=1,12
+        dat4(i)=correct(13-i)
+     enddo
+     do i=1,63
+       itmp(i)=correct(64-i)
+     enddo
+     correct(1:63)=itmp(1:63)
+     call interleave63(correct,1)
+     call graycode65(correct,63,1)
+     call unpackmsg(dat4,decoded)     !Unpack the user message
+     ncount=0
+     if(iand(dat4(10),8).ne.0) ltext=.true.
+  endif
+900 continue
+  if(nft.eq.1 .and. nhard.lt.0) decoded='                      '
+!  write(81,3001) naggressive,ncandidates,nhard,ntotal,rtt,qual,decoded
+!3001 format(i2,i6,i3,i4,2f8.2,2x,a22)
+
+  return
+end subroutine extract
+
+subroutine getpp(workdat,p)
+
+  integer workdat(63)
+  integer a(63)
+  common/test001/s3a(64,63),mrs(63),mrs2(63)
+
+  a(1:63)=workdat(63:1:-1)
+  call interleave63(a,1)
+  call graycode(a,63,1)
+
+  psum=0.
+  do j=1,63
+     i=a(j)+1
+     x=s3a(i,j)
+     s3a(i,j)=0.
+     psum=psum + x
+     s3a(i,j)=x
+  enddo
+  p=psum/63.0
+
+  return
+end subroutine getpp
diff --git a/q65w/libm65/f77_wisdom.f b/q65w/libm65/f77_wisdom.f
new file mode 100644
index 000000000..b0a72585e
--- /dev/null
+++ b/q65w/libm65/f77_wisdom.f
@@ -0,0 +1,45 @@
+      subroutine write_char(c, iunit)
+      character c
+      integer iunit
+      write(iunit,1000) c
+ 1000 format(a,$)
+      end      
+
+      subroutine export_wisdom_to_file(iunit)
+      integer iunit
+      external write_char
+c      call dfftw_export_wisdom(write_char, iunit)
+      call sfftw_export_wisdom(write_char, iunit)
+      end
+
+      subroutine read_char(ic, iunit)
+      integer ic
+      integer iunit
+      character*256 buf
+      save buf
+      integer ibuf
+      data ibuf/257/
+      save ibuf
+      if (ibuf .lt. 257) then
+         ic = ichar(buf(ibuf:ibuf))
+         ibuf = ibuf + 1
+         return
+      endif
+      read(iunit,1000,end=10) buf
+ 1000 format(a256)
+      ic = ichar(buf(1:1))
+      ibuf = 2
+      return
+ 10   ic = -1
+      ibuf = 257
+      rewind iunit
+      return
+      end
+      
+      subroutine import_wisdom_from_file(isuccess, iunit)
+      integer isuccess
+      integer iunit
+      external read_char
+c      call dfftw_import_wisdom(isuccess, read_char, iunit)
+      call sfftw_import_wisdom(isuccess, read_char, iunit)
+      end
diff --git a/q65w/libm65/fchisq.f90 b/q65w/libm65/fchisq.f90
new file mode 100644
index 000000000..7d0305831
--- /dev/null
+++ b/q65w/libm65/fchisq.f90
@@ -0,0 +1,77 @@
+real function fchisq(cx,cy,npts,fsample,nflip,a,ccfmax,dtmax)
+
+  use timer_module, only: timer
+  parameter (NMAX=60*96000)          !Samples per 60 s
+  complex cx(npts),cy(npts)
+  real a(5)
+  complex w,wstep,za,zb,z
+  real ss(3000)
+  complex csx(0:NMAX/64),csy(0:NMAX/64)
+  data twopi/6.283185307/a1,a2,a3/99.,99.,99./
+  save
+
+  call timer('fchisq  ',0)
+  baud=11025.0/4096.0
+  nsps=nint(fsample/baud)                  !Samples per symbol
+  nsph=nsps/2                              !Samples per half-symbol
+  ndiv=16                                  !Output ss() steps per symbol
+  nout=ndiv*npts/nsps
+  dtstep=1.0/(ndiv*baud)                   !Time per output step
+
+  if(a(1).ne.a1 .or. a(2).ne.a2 .or. a(3).ne.a3) then
+     a1=a(1)
+     a2=a(2)
+     a3=a(3)
+
+! Mix and integrate the complex X and Y signals
+     csx(0)=0.
+     csy(0)=0.
+     w=1.0
+     x0=0.5*(npts+1)
+     s=2.0/npts
+     do i=1,npts
+        x=s*(i-x0)
+        if(mod(i,100).eq.1) then
+           p2=1.5*x*x - 0.5
+!               p3=2.5*(x**3) - 1.5*x
+!               p4=4.375*(x**4) - 3.75*(x**2) + 0.375
+           dphi=(a(1) + x*a(2) + p2*a(3)) * (twopi/fsample)
+           wstep=cmplx(cos(dphi),sin(dphi))
+        endif
+        w=w*wstep
+        csx(i)=csx(i-1) + w*cx(i)
+        csy(i)=csy(i-1) + w*cy(i)
+     enddo
+  endif
+
+! Compute 1/2-symbol powers at 1/16-symbol steps.
+  fac=1.e-4
+  pol=a(4)/57.2957795
+  aa=cos(pol)
+  bb=sin(pol)
+
+  do i=1,nout
+     j=i*nsps/ndiv
+     k=j-nsph
+     ss(i)=0.
+     if(k.ge.1) then
+        za=csx(j)-csx(k)
+        zb=csy(j)-csy(k)
+        z=aa*za + bb*zb
+        ss(i)=fac*(real(z)**2 + aimag(z)**2)
+     endif
+  enddo
+
+  ccfmax=0.
+  call timer('ccf2    ',0)
+  call ccf2(ss,nout,nflip,ccf,lagpk)
+  call timer('ccf2    ',1)
+  if(ccf.gt.ccfmax) then
+     ccfmax=ccf
+     dtmax=lagpk*dtstep
+  endif
+  fchisq=-ccfmax
+  call timer('fchisq  ',1)
+
+  return
+end function fchisq
diff --git a/q65w/libm65/fchisq0.f90 b/q65w/libm65/fchisq0.f90
new file mode 100644
index 000000000..2c62f2757
--- /dev/null
+++ b/q65w/libm65/fchisq0.f90
@@ -0,0 +1,23 @@
+real function fchisq0(y,npts,a)
+
+  real y(npts),a(4)
+  
+!  rewind 51
+  chisq = 0.
+  do i=1,npts
+     x=i
+     z=(x-a(3))/(0.5*a(4))
+     yfit=a(1)
+     if(abs(z).lt.3.0) then
+        d=1.0 + z*z
+        yfit=a(1) + a(2) * (1.0/d - 0.1)
+     endif
+     chisq=chisq + (y(i) - yfit)**2
+!     write(51,3001) i,y(i),yfit,y(i)-yfit
+!3001 format(i5,3f10.4)
+  enddo
+  fchisq0=chisq
+
+  return
+end function fchisq0
+
diff --git a/q65w/libm65/fftw3.f b/q65w/libm65/fftw3.f
new file mode 100644
index 000000000..3410184ca
--- /dev/null
+++ b/q65w/libm65/fftw3.f
@@ -0,0 +1,64 @@
+      INTEGER FFTW_R2HC
+      PARAMETER (FFTW_R2HC=0)
+      INTEGER FFTW_HC2R
+      PARAMETER (FFTW_HC2R=1)
+      INTEGER FFTW_DHT
+      PARAMETER (FFTW_DHT=2)
+      INTEGER FFTW_REDFT00
+      PARAMETER (FFTW_REDFT00=3)
+      INTEGER FFTW_REDFT01
+      PARAMETER (FFTW_REDFT01=4)
+      INTEGER FFTW_REDFT10
+      PARAMETER (FFTW_REDFT10=5)
+      INTEGER FFTW_REDFT11
+      PARAMETER (FFTW_REDFT11=6)
+      INTEGER FFTW_RODFT00
+      PARAMETER (FFTW_RODFT00=7)
+      INTEGER FFTW_RODFT01
+      PARAMETER (FFTW_RODFT01=8)
+      INTEGER FFTW_RODFT10
+      PARAMETER (FFTW_RODFT10=9)
+      INTEGER FFTW_RODFT11
+      PARAMETER (FFTW_RODFT11=10)
+      INTEGER FFTW_FORWARD
+      PARAMETER (FFTW_FORWARD=-1)
+      INTEGER FFTW_BACKWARD
+      PARAMETER (FFTW_BACKWARD=+1)
+      INTEGER FFTW_MEASURE
+      PARAMETER (FFTW_MEASURE=0)
+      INTEGER FFTW_DESTROY_INPUT
+      PARAMETER (FFTW_DESTROY_INPUT=1)
+      INTEGER FFTW_UNALIGNED
+      PARAMETER (FFTW_UNALIGNED=2)
+      INTEGER FFTW_CONSERVE_MEMORY
+      PARAMETER (FFTW_CONSERVE_MEMORY=4)
+      INTEGER FFTW_EXHAUSTIVE
+      PARAMETER (FFTW_EXHAUSTIVE=8)
+      INTEGER FFTW_PRESERVE_INPUT
+      PARAMETER (FFTW_PRESERVE_INPUT=16)
+      INTEGER FFTW_PATIENT
+      PARAMETER (FFTW_PATIENT=32)
+      INTEGER FFTW_ESTIMATE
+      PARAMETER (FFTW_ESTIMATE=64)
+      INTEGER FFTW_ESTIMATE_PATIENT
+      PARAMETER (FFTW_ESTIMATE_PATIENT=128)
+      INTEGER FFTW_BELIEVE_PCOST
+      PARAMETER (FFTW_BELIEVE_PCOST=256)
+      INTEGER FFTW_DFT_R2HC_ICKY
+      PARAMETER (FFTW_DFT_R2HC_ICKY=512)
+      INTEGER FFTW_NONTHREADED_ICKY
+      PARAMETER (FFTW_NONTHREADED_ICKY=1024)
+      INTEGER FFTW_NO_BUFFERING
+      PARAMETER (FFTW_NO_BUFFERING=2048)
+      INTEGER FFTW_NO_INDIRECT_OP
+      PARAMETER (FFTW_NO_INDIRECT_OP=4096)
+      INTEGER FFTW_ALLOW_LARGE_GENERIC
+      PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192)
+      INTEGER FFTW_NO_RANK_SPLITS
+      PARAMETER (FFTW_NO_RANK_SPLITS=16384)
+      INTEGER FFTW_NO_VRANK_SPLITS
+      PARAMETER (FFTW_NO_VRANK_SPLITS=32768)
+      INTEGER FFTW_NO_VRECURSE
+      PARAMETER (FFTW_NO_VRECURSE=65536)
+      INTEGER FFTW_NO_SIMD
+      PARAMETER (FFTW_NO_SIMD=131072)
diff --git a/q65w/libm65/fftw3.f90 b/q65w/libm65/fftw3.f90
new file mode 100644
index 000000000..440ccc28c
--- /dev/null
+++ b/q65w/libm65/fftw3.f90
@@ -0,0 +1,64 @@
+  INTEGER FFTW_R2HC
+  PARAMETER (FFTW_R2HC=0)
+  INTEGER FFTW_HC2R
+  PARAMETER (FFTW_HC2R=1)
+  INTEGER FFTW_DHT
+  PARAMETER (FFTW_DHT=2)
+  INTEGER FFTW_REDFT00
+  PARAMETER (FFTW_REDFT00=3)
+  INTEGER FFTW_REDFT01
+  PARAMETER (FFTW_REDFT01=4)
+  INTEGER FFTW_REDFT10
+  PARAMETER (FFTW_REDFT10=5)
+  INTEGER FFTW_REDFT11
+  PARAMETER (FFTW_REDFT11=6)
+  INTEGER FFTW_RODFT00
+  PARAMETER (FFTW_RODFT00=7)
+  INTEGER FFTW_RODFT01
+  PARAMETER (FFTW_RODFT01=8)
+  INTEGER FFTW_RODFT10
+  PARAMETER (FFTW_RODFT10=9)
+  INTEGER FFTW_RODFT11
+  PARAMETER (FFTW_RODFT11=10)
+  INTEGER FFTW_FORWARD
+  PARAMETER (FFTW_FORWARD=-1)
+  INTEGER FFTW_BACKWARD
+  PARAMETER (FFTW_BACKWARD=+1)
+  INTEGER FFTW_MEASURE
+  PARAMETER (FFTW_MEASURE=0)
+  INTEGER FFTW_DESTROY_INPUT
+  PARAMETER (FFTW_DESTROY_INPUT=1)
+  INTEGER FFTW_UNALIGNED
+  PARAMETER (FFTW_UNALIGNED=2)
+  INTEGER FFTW_CONSERVE_MEMORY
+  PARAMETER (FFTW_CONSERVE_MEMORY=4)
+  INTEGER FFTW_EXHAUSTIVE
+  PARAMETER (FFTW_EXHAUSTIVE=8)
+  INTEGER FFTW_PRESERVE_INPUT
+  PARAMETER (FFTW_PRESERVE_INPUT=16)
+  INTEGER FFTW_PATIENT
+  PARAMETER (FFTW_PATIENT=32)
+  INTEGER FFTW_ESTIMATE
+  PARAMETER (FFTW_ESTIMATE=64)
+  INTEGER FFTW_ESTIMATE_PATIENT
+  PARAMETER (FFTW_ESTIMATE_PATIENT=128)
+  INTEGER FFTW_BELIEVE_PCOST
+  PARAMETER (FFTW_BELIEVE_PCOST=256)
+  INTEGER FFTW_DFT_R2HC_ICKY
+  PARAMETER (FFTW_DFT_R2HC_ICKY=512)
+  INTEGER FFTW_NONTHREADED_ICKY
+  PARAMETER (FFTW_NONTHREADED_ICKY=1024)
+  INTEGER FFTW_NO_BUFFERING
+  PARAMETER (FFTW_NO_BUFFERING=2048)
+  INTEGER FFTW_NO_INDIRECT_OP
+  PARAMETER (FFTW_NO_INDIRECT_OP=4096)
+  INTEGER FFTW_ALLOW_LARGE_GENERIC
+  PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192)
+  INTEGER FFTW_NO_RANK_SPLITS
+  PARAMETER (FFTW_NO_RANK_SPLITS=16384)
+  INTEGER FFTW_NO_VRANK_SPLITS
+  PARAMETER (FFTW_NO_VRANK_SPLITS=32768)
+  INTEGER FFTW_NO_VRECURSE
+  PARAMETER (FFTW_NO_VRECURSE=65536)
+  INTEGER FFTW_NO_SIMD
+  PARAMETER (FFTW_NO_SIMD=131072)
diff --git a/q65w/libm65/fil6521.f90 b/q65w/libm65/fil6521.f90
new file mode 100644
index 000000000..f588d0c15
--- /dev/null
+++ b/q65w/libm65/fil6521.f90
@@ -0,0 +1,44 @@
+subroutine fil6521(c1,n1,c2,n2)
+
+! FIR lowpass filter designed using ScopeFIR
+
+!                  Pass #1   Pass #2  
+!-----------------------------------------------
+! fsample    (Hz)  1378.125   Input sample rate
+! Ntaps            21         Number of filter taps
+! fc         (Hz)  40         Cutoff frequency
+! fstop      (Hz)  172.266    Lower limit of stopband
+! Ripple     (dB)  0.1        Ripple in passband
+! Stop Atten (dB)  38         Stopband attenuation
+! fout       (Hz)  344.531    Output sample rate
+
+  parameter (NTAPS=21)
+  parameter (NH=(NTAPS-1)/2)
+  parameter (NDOWN=4)                !Downsample ratio = 1/4
+  complex c1(n1)
+  complex c2(n1/NDOWN)
+
+! Filter coefficients:
+  real a(-NH:NH)
+  data a/                                                             &
+     -0.011958606980,-0.013888627387,-0.015601306443,-0.010602249570, &
+      0.003804023436, 0.028320058273, 0.060903935217, 0.096841904411, &
+      0.129639871228, 0.152644580853, 0.160917511283, 0.152644580853, &
+      0.129639871228, 0.096841904411, 0.060903935217, 0.028320058273, &
+      0.003804023436,-0.010602249570,-0.015601306443,-0.013888627387, &
+     -0.011958606980/
+
+  n2=(n1-NTAPS+NDOWN)/NDOWN
+  k0=NH-NDOWN+1
+
+! Loop over all output samples
+  do i=1,n2
+     c2(i)=0.
+     k=k0 + NDOWN*i
+     do j=-NH,NH
+        c2(i)=c2(i) + c1(j+k)*a(j)
+     enddo
+  enddo
+
+  return
+end subroutine fil6521
diff --git a/q65w/libm65/filbig.f90 b/q65w/libm65/filbig.f90
new file mode 100644
index 000000000..ada8ccc0c
--- /dev/null
+++ b/q65w/libm65/filbig.f90
@@ -0,0 +1,132 @@
+subroutine filbig(dd,nmax,f0,newdat,nfsample,xpol,c4a,c4b,n4)
+
+! Filter and downsample complex data stored in array dd(4,nmax).  
+! Output is downsampled from 96000 Hz to 1375.125 Hz.
+
+  use timer_module, only: timer
+  parameter (MAXFFT1=5376000,MAXFFT2=77175)
+  real*4  dd(4,nmax)                         !Input data
+  complex ca(MAXFFT1),cb(MAXFFT1)            !FFTs of input
+  complex c4a(MAXFFT2),c4b(MAXFFT2)          !Output data
+  real*8 df
+  real halfpulse(8)                 !Impulse response of filter (one sided)
+  complex cfilt(MAXFFT2)                     !Filter (complex; imag = 0)
+  real rfilt(MAXFFT2)                        !Filter (real)
+  integer*8 plan1,plan2,plan3,plan4,plan5
+  logical first,xpol
+  include 'fftw3.f'
+  common/cacb/ca,cb
+  equivalence (rfilt,cfilt)
+  data first/.true./,npatience/1/
+  data halfpulse/114.97547150,36.57879257,-20.93789101,                &
+       5.89886379,1.59355187,-2.49138308,0.60910773,-0.04248129/
+  save
+
+  if(nmax.lt.0) go to 900
+
+  nfft1=MAXFFT1
+  nfft2=MAXFFT2
+  if(nfsample.eq.95238) then
+     nfft1=5120000
+     nfft2=74088
+  endif
+
+  if(first) then
+     nflags=FFTW_ESTIMATE
+     if(npatience.eq.1) nflags=FFTW_ESTIMATE_PATIENT
+     if(npatience.eq.2) nflags=FFTW_MEASURE
+     if(npatience.eq.3) nflags=FFTW_PATIENT
+     if(npatience.eq.4) nflags=FFTW_EXHAUSTIVE
+     
+! Plan the FFTs just once
+     call timer('FFTplans ',0)
+     call sfftw_plan_dft_1d(plan1,nfft1,ca,ca,FFTW_BACKWARD,nflags)
+     call sfftw_plan_dft_1d(plan2,nfft1,cb,cb,FFTW_BACKWARD,nflags)
+     call sfftw_plan_dft_1d(plan3,nfft2,c4a,c4a,FFTW_FORWARD,nflags)
+     call sfftw_plan_dft_1d(plan4,nfft2,c4b,c4b,FFTW_FORWARD,nflags)
+     call sfftw_plan_dft_1d(plan5,nfft2,cfilt,cfilt,FFTW_BACKWARD,nflags)
+     call timer('FFTplans ',1)
+
+! Convert impulse response to filter function
+     do i=1,nfft2
+        cfilt(i)=0.
+     enddo
+     fac=0.00625/nfft1
+     cfilt(1)=fac*halfpulse(1)
+     do i=2,8
+        cfilt(i)=fac*halfpulse(i)
+        cfilt(nfft2+2-i)=fac*halfpulse(i)
+     enddo
+     call sfftw_execute(plan5)
+
+     base=cfilt(nfft2/2+1)
+     do i=1,nfft2
+        rfilt(i)=real(cfilt(i))-base
+     enddo
+
+     df=96000.d0/nfft1
+     if(nfsample.eq.95238) df=95238.1d0/nfft1
+     first=.false.
+  endif
+
+! When new data comes along, we need to compute a new "big FFT"
+! If we just have a new f0, continue with the existing ca and cb.
+
+  if(newdat.ne.0 .or. sum(abs(ca)).eq.0.0) then  !### Test on ca should be unnecessary?
+     nz=min(nmax,nfft1)
+     do i=1,nz
+        ca(i)=cmplx(dd(1,i),dd(2,i))
+        if(xpol) cb(i)=cmplx(dd(3,i),dd(4,i))
+     enddo
+
+     if(nmax.lt.nfft1) then
+        do i=nmax+1,nfft1
+           ca(i)=0.
+           if(xpol) cb(i)=0.
+        enddo
+     endif
+     call timer('FFTbig  ',0)
+     call sfftw_execute(plan1)
+     if(xpol) call sfftw_execute(plan2)
+     call timer('FFTbig  ',1)
+     newdat=0
+  endif
+
+! NB: f0 is the frequency at which we want our filter centered.
+!     i0 is the bin number in ca and cb closest to f0.
+
+  i0=nint(f0/df) + 1
+  nh=nfft2/2
+  do i=1,nh                                !Copy data into c4a and c4b,
+     j=i0+i-1                              !and apply the filter function
+     if(j.ge.1 .and. j.le.nfft1) then
+        c4a(i)=rfilt(i)*ca(j)
+        if(xpol) c4b(i)=rfilt(i)*cb(j)
+     else
+        c4a(i)=0.
+        if(xpol) c4b(i)=0.
+     endif
+  enddo
+  do i=nh+1,nfft2
+     j=i0+i-1-nfft2
+     if(j.lt.1) j=j+nfft1                  !nfft1 was nfft2
+     c4a(i)=rfilt(i)*ca(j)
+     if(xpol) c4b(i)=rfilt(i)*cb(j)
+  enddo
+
+! Do the short reverse transform, to go back to time domain.
+  call timer('FFTsmall',0)
+  call sfftw_execute(plan3)
+  if(xpol) call sfftw_execute(plan4)
+  call timer('FFTsmall',1)
+  n4=min(nmax/64,nfft2)
+  go to 999
+
+900 call sfftw_destroy_plan(plan1)
+  call sfftw_destroy_plan(plan2)
+  call sfftw_destroy_plan(plan3)
+  call sfftw_destroy_plan(plan4)
+  call sfftw_destroy_plan(plan5)
+
+999 return
+end subroutine filbig
diff --git a/q65w/libm65/fmtmsg.f90 b/q65w/libm65/fmtmsg.f90
new file mode 100644
index 000000000..2ceb81554
--- /dev/null
+++ b/q65w/libm65/fmtmsg.f90
@@ -0,0 +1,21 @@
+subroutine fmtmsg(msg,iz)
+
+  character*22 msg
+
+! Convert all letters to upper case
+  iz=22
+  do i=1,22
+     if(msg(i:i).ge.'a' .and. msg(i:i).le.'z')                       &
+          msg(i:i)= char(ichar(msg(i:i))+ichar('A')-ichar('a'))
+     if(msg(i:i).ne.' ') iz=i
+  enddo
+
+  do iter=1,5                           !Collapse multiple blanks into one
+     ib2=index(msg(1:iz),'  ')
+     if(ib2.lt.1) go to 100
+     msg=msg(1:ib2)//msg(ib2+2:)
+     iz=iz-1
+  enddo
+
+100 return
+end subroutine fmtmsg
diff --git a/q65w/libm65/four2a.f90 b/q65w/libm65/four2a.f90
new file mode 100644
index 000000000..fc46109e5
--- /dev/null
+++ b/q65w/libm65/four2a.f90
@@ -0,0 +1,115 @@
+subroutine four2a(a,nfft,ndim,isign,iform)
+
+! IFORM = 1, 0 or -1, as data is
+! complex, real, or the first half of a complex array.  Transform
+! values are returned in array DATA.  They are complex, real, or
+! the first half of a complex array, as IFORM = 1, -1 or 0.
+
+! The transform of a real array (IFORM = 0) dimensioned N(1) by N(2)
+! by ... will be returned in the same array, now considered to
+! be complex of dimensions N(1)/2+1 by N(2) by ....  Note that if
+! IFORM = 0 or -1, N(1) must be even, and enough room must be
+! reserved.  The missing values may be obtained by complex conjugation.  
+
+! The reverse transformation of a half complex array dimensioned
+! N(1)/2+1 by N(2) by ..., is accomplished by setting IFORM
+! to -1.  In the N array, N(1) must be the true N(1), not N(1)/2+1.
+! The transform will be real and returned to the input array.
+
+! This version of four2a makes calls to the FFTW library to do the 
+! actual computations.
+
+  use fftw3
+  parameter (NPMAX=2100)                 !Max numberf of stored plans
+  parameter (NSMALL=16384)               !Max size of "small" FFTs
+  complex a(nfft+1)                      !Array to be transformed
+  complex aa(NSMALL)                     !Local copy of "small" a()
+  integer nn(NPMAX),ns(NPMAX),nf(NPMAX)  !Params of stored plans 
+  integer*8 nl(NPMAX),nloc               !More params of plans
+  integer*8 plan(NPMAX)                  !Pointers to stored plans
+  logical found_plan
+  data nplan/0/                          !Number of stored plans
+  common/patience/npatience,nthreads     !Patience and threads for FFTW plans
+  save plan,nplan,nn,ns,nf,nl
+
+  if(nfft.lt.0) go to 999
+
+  nloc=loc(a)
+
+  found_plan = .false.
+  !$omp critical(four2a_setup)
+  do i=1,nplan
+     if(nfft.eq.nn(i) .and. isign.eq.ns(i) .and.                     &
+          iform.eq.nf(i) .and. nloc.eq.nl(i)) then
+        found_plan = .true.
+        exit
+     end if
+  enddo
+
+  if(i.ge.NPMAX) stop 'Too many FFTW plans requested.'
+
+  if (.not. found_plan) then
+     nplan=nplan+1
+     i=nplan
+
+     nn(i)=nfft
+     ns(i)=isign
+     nf(i)=iform
+     nl(i)=nloc
+
+! Planning: FFTW_ESTIMATE, FFTW_ESTIMATE_PATIENT, FFTW_MEASURE, 
+!            FFTW_PATIENT,  FFTW_EXHAUSTIVE
+     nflags=FFTW_ESTIMATE
+     if(npatience.eq.1) nflags=FFTW_ESTIMATE_PATIENT
+     if(npatience.eq.2) nflags=FFTW_MEASURE
+     if(npatience.eq.3) nflags=FFTW_PATIENT
+     if(npatience.eq.4) nflags=FFTW_EXHAUSTIVE
+
+     if(nfft.le.NSMALL) then
+        jz=nfft
+        if(iform.eq.0) jz=nfft/2
+        aa(1:jz)=a(1:jz)
+     endif
+
+     !$omp critical(fftw) ! serialize non thread-safe FFTW3 calls
+     if(isign.eq.-1 .and. iform.eq.1) then
+        call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_FORWARD,nflags)
+     else if(isign.eq.1 .and. iform.eq.1) then
+        call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_BACKWARD,nflags)
+     else if(isign.eq.-1 .and. iform.eq.0) then
+        call sfftw_plan_dft_r2c_1d(plan(i),nfft,a,a,nflags)
+     else if(isign.eq.1 .and. iform.eq.-1) then
+        call sfftw_plan_dft_c2r_1d(plan(i),nfft,a,a,nflags)
+     else
+        stop 'Unsupported request in four2a'
+     endif
+     !$omp end critical(fftw)
+
+     if(nfft.le.NSMALL) then
+        jz=nfft
+        if(iform.eq.0) jz=nfft/2
+        a(1:jz)=aa(1:jz)
+     endif
+  end if
+  !$omp end critical(four2a_setup)
+
+  call sfftw_execute(plan(i))
+  return
+
+999 continue
+
+  !$omp critical(four2a)
+  do i=1,nplan
+! The test is only to silence a compiler warning:
+     if(ndim.ne.-999) then
+        !$omp critical(fftw) ! serialize non thread-safe FFTW3 calls
+        call sfftw_destroy_plan(plan(i))
+        !$omp end critical(fftw)
+     end if
+  enddo
+
+  nplan=0
+  !$omp end critical(four2a)
+
+  return
+end subroutine four2a
diff --git a/q65w/libm65/ftninit.f90 b/q65w/libm65/ftninit.f90
new file mode 100644
index 000000000..f97705942
--- /dev/null
+++ b/q65w/libm65/ftninit.f90
@@ -0,0 +1,31 @@
+subroutine ftninit(appd)
+
+  use timer_module, only: timer
+  use, intrinsic :: iso_c_binding, only: C_NULL_CHAR
+  use FFTW3
+  character*(*) appd
+  character addpfx*8
+  character wisfile*256
+  common/pfxcom/addpfx
+
+  addpfx='    '
+  call pfxdump(appd//'/prefixes.txt')
+  open(12,file=appd//'/wb_q65.txt',status='unknown')
+  open(13,file=appd//'/map65.log',status='unknown')
+  open(19,file=appd//'/livecq.txt',status='unknown')
+  open(21,file=appd//'/map65_rx.log',status='unknown',access='append',err=950)
+  open(26,file=appd//'/tmp26.txt',status='unknown')
+
+! Import FFTW wisdom, if available:
+  iret=fftwf_init_threads()            !Initialize FFTW threading 
+! Default to 1 thread, but use nthreads for the big ones
+  call fftwf_plan_with_nthreads(1)
+! Import FFTW wisdom, if available
+  wisfile=trim(appd)//'/m65_wisdom.dat'// C_NULL_CHAR
+  iret=fftwf_import_wisdom_from_filename(wisfile)
+  return
+
+950 write(0,*) '!Error opening ALL65.TXT'
+  stop
+
+end subroutine ftninit
diff --git a/q65w/libm65/ftnquit.f90 b/q65w/libm65/ftnquit.f90
new file mode 100644
index 000000000..b74e2b9e5
--- /dev/null
+++ b/q65w/libm65/ftnquit.f90
@@ -0,0 +1,8 @@
+subroutine ftnquit
+
+! Destroy the FFTW plans
+  call four2a(a,-1,1,1,1)
+  call filbig(id,-1,1,f0,newdat,nfsample,c4a,c4b,n4)
+
+  return
+end subroutine ftnquit
diff --git a/q65w/libm65/ftrsd2.c b/q65w/libm65/ftrsd2.c
new file mode 100644
index 000000000..7d8dd366a
--- /dev/null
+++ b/q65w/libm65/ftrsd2.c
@@ -0,0 +1,213 @@
+/*
+ ftrsd2.c
+ 
+ A soft-decision decoder for the JT65 (63,12) Reed-Solomon code.
+ 
+ This decoding scheme is built around Phil Karn's Berlekamp-Massey
+ errors and erasures decoder. The approach is inspired by a number of
+ publications, including the stochastic Chase decoder described
+ in "Stochastic Chase Decoding of Reed-Solomon Codes", by Leroux et al.,
+ IEEE Communications Letters, Vol. 14, No. 9, September 2010 and
+ "Soft-Decision Decoding of Reed-Solomon Codes Using Successive Error-
+ and-Erasure Decoding," by Soo-Woong Lee and B. V. K. Vijaya Kumar.
+ 
+ Steve Franke K9AN and Joe Taylor K1JT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <time.h>
+#include <string.h>
+#include "rs2.h"
+
+static void *rs;
+void getpp_(int workdat[], float *pp);
+
+void ftrsd2_(int mrsym[], int mrprob[], int mr2sym[], int mr2prob[], 
+	     int* ntrials0, int correct[], int param[], int ntry[])
+{
+  int rxdat[63], rxprob[63], rxdat2[63], rxprob2[63];
+  int workdat[63];
+  int indexes[63];
+  int era_pos[51];
+  int i, j, numera, nerr, nn=63;
+  int ntrials = *ntrials0;
+  int nhard=0,nhard_min=32768,nsoft=0,nsoft_min=32768;
+  int ntotal=0,ntotal_min=32768,ncandidates;
+  int nera_best=0;
+  float pp,pp1,pp2;
+  static unsigned int nseed;
+
+// Power-percentage symbol metrics - composite gnnf/hf 
+  int perr[8][8] = {
+    { 4,      9,     11,     13,     14,     14,     15,     15},
+    { 2,     20,     20,     30,     40,     50,     50,     50},
+    { 7,     24,     27,     40,     50,     50,     50,     50},
+    {13,     25,     35,     46,     52,     70,     50,     50},
+    {17,     30,     42,     54,     55,     64,     71,     70},
+    {25,     39,     48,     57,     64,     66,     77,     77},
+    {32,     45,     54,     63,     66,     75,     78,     83},
+    {51,     58,     57,     66,     72,     77,     82,     86}};
+
+    
+// Initialize the KA9Q Reed-Solomon encoder/decoder
+  unsigned int symsize=6, gfpoly=0x43, fcr=3, prim=1, nroots=51;
+  rs=init_rs_int(symsize, gfpoly, fcr, prim, nroots, 0);
+
+// Reverse the received symbol vectors for BM decoder
+  for (i=0; i<63; i++) {
+    rxdat[i]=mrsym[62-i];
+    rxprob[i]=mrprob[62-i];
+    rxdat2[i]=mr2sym[62-i];
+    rxprob2[i]=mr2prob[62-i];
+  }
+    
+// Sort rxprob to find indexes of the least reliable symbols
+  int k, pass, tmp, nsym=63;
+  int probs[63];
+  for (i=0; i<63; i++) {
+    indexes[i]=i;
+    probs[i]=rxprob[i];
+  }
+  for (pass = 1; pass <= nsym-1; pass++) {
+    for (k = 0; k < nsym - pass; k++) {
+      if( probs[k] < probs[k+1] ) {
+        tmp = probs[k];
+        probs[k] = probs[k+1];
+        probs[k+1] = tmp;
+        tmp = indexes[k];
+        indexes[k] = indexes[k+1];
+        indexes[k+1] = tmp;
+      }
+    }
+  }
+  
+// See if we can decode using BM HDD, and calculate the syndrome vector.
+  memset(era_pos,0,51*sizeof(int));
+  numera=0;
+  memcpy(workdat,rxdat,sizeof(rxdat));
+  nerr=decode_rs_int(rs,workdat,era_pos,numera,1);
+  if( nerr >= 0 ) {
+    // Hard-decision decoding succeeded.  Save codeword and some parameters.
+    nhard=0;
+    for (i=0; i<63; i++) {
+      if( workdat[i] != rxdat[i] ) nhard=nhard+1;
+    }
+    memcpy(correct,workdat,63*sizeof(int));
+    param[0]=0;
+    param[1]=nhard;
+    param[2]=0;
+    param[3]=0;
+    param[4]=0;
+    param[5]=0;
+    param[7]=1000*1000;
+    ntry[0]=0;
+    return;
+  }
+
+/*
+Hard-decision decoding failed.  Try the FT soft-decision method.
+Generate random erasure-locator vectors and see if any of them
+decode. This will generate a list of "candidate" codewords.  The
+soft distance between each candidate codeword and the received 
+word is estimated by finding the largest (pp1) and second-largest 
+(pp2) outputs from a synchronized filter-bank operating on the 
+symbol spectra, and using these to decide which candidate 
+codeword is "best".
+*/
+
+  nseed=1;                                 //Seed for random numbers
+  float ratio;
+  int thresh, nsum;
+  int thresh0[63];
+  ncandidates=0;
+  nsum=0;
+  int ii,jj;
+  for (i=0; i<nn; i++) {
+    nsum=nsum+rxprob[i];
+    j = indexes[62-i];
+    ratio = (float)rxprob2[j]/((float)rxprob[j]+0.01);
+    ii = 7.999*ratio;
+    jj = (62-i)/8;
+    thresh0[i] = 1.3*perr[ii][jj];
+  }
+  if(nsum<=0) return;
+
+  pp1=0.0;
+  pp2=0.0;
+  for (k=1; k<=ntrials; k++) {
+    memset(era_pos,0,51*sizeof(int));
+    memcpy(workdat,rxdat,sizeof(rxdat));
+
+/* 
+Mark a subset of the symbols as erasures.
+Run through the ranked symbols, starting with the worst, i=0.
+NB: j is the symbol-vector index of the symbol with rank i.
+*/
+    numera=0;
+    for (i=0; i<nn; i++) {
+      j = indexes[62-i];
+      thresh=thresh0[i];
+      long int ir;
+
+// Generate a random number ir, 0 <= ir < 100 (see POSIX.1-2001 example).
+      nseed = nseed * 1103515245 + 12345;
+      ir = (unsigned)(nseed/65536) % 32768;
+      ir = (100*ir)/32768;
+
+      if((ir < thresh ) && numera < 51) {
+        era_pos[numera]=j;
+        numera=numera+1;
+      }
+    }
+
+    nerr=decode_rs_int(rs,workdat,era_pos,numera,0);        
+    if( nerr >= 0 ) {
+      // We have a candidate codeword.  Find its hard and soft distance from
+      // the received word.  Also find pp1 and pp2 from the full array 
+      // s3(64,63) of synchronized symbol spectra.
+      ncandidates=ncandidates+1;
+      nhard=0;
+      nsoft=0;
+      for (i=0; i<63; i++) {
+        if(workdat[i] != rxdat[i]) {
+          nhard=nhard+1;
+          if(workdat[i] != rxdat2[i]) {
+            nsoft=nsoft+rxprob[i];
+          }
+        }
+      }
+      nsoft=63*nsoft/nsum;
+      ntotal=nsoft+nhard;
+
+      getpp_(workdat,&pp);
+      if(pp>pp1) {
+        pp2=pp1;
+        pp1=pp;
+        nsoft_min=nsoft;
+        nhard_min=nhard;
+        ntotal_min=ntotal;
+        memcpy(correct,workdat,63*sizeof(int));
+        nera_best=numera;
+        ntry[0]=k;
+      } else {
+        if(pp>pp2 && pp!=pp1) pp2=pp;
+      }
+      if(nhard_min <= 41 && ntotal_min <= 71) break;
+    }
+    if(k == ntrials) ntry[0]=k;
+  }
+  
+  param[0]=ncandidates;
+  param[1]=nhard_min;
+  param[2]=nsoft_min;
+  param[3]=nera_best;
+  param[4]= pp1 > 0 ? 1000.0*pp2/pp1 : 1000.0;
+  param[5]=ntotal_min;
+  param[6]=ntry[0];
+  param[7]=1000.0*pp2;
+  param[8]=1000.0*pp1;
+  if(param[0]==0) param[2]=-1;
+  return;
+}
diff --git a/q65w/libm65/gen65.f90 b/q65w/libm65/gen65.f90
new file mode 100644
index 000000000..f09d0868a
--- /dev/null
+++ b/q65w/libm65/gen65.f90
@@ -0,0 +1,99 @@
+subroutine gen65(message,mode65,samfac,nsendingsh,msgsent,iwave,nwave)
+
+! Encodes a JT65 message into a wavefile.  
+! Executes in 17 ms on opti-745.
+
+  use packjt
+  
+  parameter (NMAX=2*60*11025)   !Max length of wave file
+  character*22 message          !Message to be generated
+  character*22 msgsent          !Message as it will be received
+  character*3 cok               !'   ' or 'OOO'
+  real*8 dt,phi,f,f0,dfgen,dphi,twopi,samfac
+  integer*2 iwave(NMAX)         !Generated wave file
+  integer dgen(12)
+  integer sent(63)
+  logical first
+  integer nprc(126)
+  real pr(126)
+  data nprc/1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0,  &
+            0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,  &
+            0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1,  &
+            0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,  &
+            1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,  &
+            0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,  &
+            1,1,1,1,1,1/
+  data twopi/6.283185307179586476d0/,first/.true./
+  save
+
+  if(first) then
+     do i=1,126
+        pr(i)=2*nprc(i)-1
+     enddo
+     first=.false.
+  endif
+
+  call chkmsg(message,cok,nspecial,flip)
+  if(nspecial.eq.0) then
+     call packmsg(message,dgen,itype)    !Pack message into 72 bits
+     nsendingsh=0
+     if(iand(dgen(10),8).ne.0) nsendingsh=-1    !Plain text flag
+
+     call rs_encode(dgen,sent)
+     call interleave63(sent,1)           !Apply interleaving
+     call graycode(sent,63,1)            !Apply Gray code
+     nsym=126                            !Symbols per transmission
+     nsps=4096
+  else
+     nsym=32
+     nsps=16384
+     nsendingsh=1                         !Flag for shorthand message
+  endif
+  if(mode65.eq.0) go to 900
+
+! Set up necessary constants
+  dt=1.d0/(samfac*11025.d0)
+  f0=118*11025.d0/1024
+  dfgen=mode65*11025.d0/4096.d0
+  phi=0.d0
+  dphi=twopi*dt*f0
+  i=0
+  k=0
+  do j=1,nsym
+     if(message(1:5).ne.'@TUNE') then
+        f=f0
+        if(nspecial.ne.0 .and. mod(j,2).eq.0) f=f0+10*nspecial*dfgen
+        if(nspecial.eq.0 .and. flip*pr(j).lt.0.0) then
+           k=k+1
+           f=f0+(sent(k)+2)*dfgen
+        endif
+        dphi=twopi*dt*f
+     endif
+     do ii=1,nsps
+        phi=phi+dphi
+        if(phi.gt.twopi) phi=phi-twopi
+        xphi=phi
+        i=i+1
+        iwave(2*i-1)=32767.0*cos(xphi)
+        iwave(2*i)=32767.0*sin(xphi)
+     enddo
+  enddo
+
+  iwave(2*nsym*nsps+1:)=0
+  nwave=2*nsym*nsps + 5512
+  call unpackmsg(dgen,msgsent)
+  if(flip.lt.0.0) then
+     do i=22,1,-1
+        if(msgsent(i:i).ne.' ') goto 10
+     enddo
+10   msgsent=msgsent(1:i)//' OOO'
+  endif
+
+  if(nsendingsh.eq.1) then
+     if(nspecial.eq.2) msgsent='RO'
+     if(nspecial.eq.3) msgsent='RRR'
+     if(nspecial.eq.4) msgsent='73'
+  endif
+
+900 return
+end subroutine gen65
diff --git a/q65w/libm65/gen_q65_cwave.f90 b/q65w/libm65/gen_q65_cwave.f90
new file mode 100644
index 000000000..0e3d00074
--- /dev/null
+++ b/q65w/libm65/gen_q65_cwave.f90
@@ -0,0 +1,52 @@
+subroutine gen_q65_cwave(msg,ntxfreq,ntone_spacing,msgsent,cwave,nwave)
+
+! Encodes a Q65 message to yield complex cwave() at fsample = 96000 Hz
+
+  use packjt
+  use q65_encoding
+  parameter (NMAX=60*96000)
+  character*22 msg
+  character*22 msgsent          !Message as it will be received
+  character*37 msg37
+  real*8 t,dt,phi,f,f0,dfgen,dphi,twopi,tsym
+  complex cwave(NMAX)
+  integer codeword(65),itone(85)
+  integer icos7(0:6)
+  data icos7/2,5,6,0,4,1,3/     !Defines a 7x7 Costas array
+  data twopi/6.283185307179586476d0/
+  save
+
+  msgsent=msg
+  msg37=''
+  msg37(1:22)=msg
+  call get_q65_tones(msg37,codeword,itone)
+
+! Set up necessary constants
+  nsym=85
+  tsym=7200.d0/12000.d0
+  dt=1.d0/96000.d0
+  f0=ntxfreq
+  dfgen=ntone_spacing*12000.d0/7200.d0
+  phi=0.d0
+  dphi=twopi*dt*f0
+  i=0
+  nwave=85*7200*96000.d0/12000.d0
+  t=0.d0
+  j0=0
+  do i=1,nwave
+     t=t+dt
+     j=t/tsym + 1
+     if(j.gt.85) exit
+     if(j.ne.j0) then
+        f=f0 + itone(j)*dfgen
+        dphi=twopi*dt*f
+        j0=j
+     endif
+     phi=phi+dphi
+     if(phi.gt.twopi) phi=phi-twopi
+     xphi=phi
+     cwave(i)=cmplx(cos(xphi),-sin(xphi))
+  enddo
+
+999  return
+end subroutine gen_q65_cwave
diff --git a/q65w/libm65/gen_q65_wave.f90 b/q65w/libm65/gen_q65_wave.f90
new file mode 100644
index 000000000..bd91c8ddb
--- /dev/null
+++ b/q65w/libm65/gen_q65_wave.f90
@@ -0,0 +1,54 @@
+subroutine gen_q65_wave(msg,ntxfreq,mode65,msgsent,iwave,nwave)
+
+! Encodes a Q65 message to yield complex iwave() at fsample = 11025 Hz
+
+  use packjt
+  use q65_encoding
+  parameter (NMAX=2*60*11025)
+  character*22 msg
+  character*22 msgsent          !Message as it will be received
+  character*37 msg37
+  real*8 t,dt,phi,f,f0,dfgen,dphi,twopi,tsym
+  integer codeword(65),itone(85)
+  integer*2 iwave(NMAX)
+  integer icos7(0:6)
+  data icos7/2,5,6,0,4,1,3/     !Defines a 7x7 Costas array
+  data twopi/6.283185307179586476d0/
+  save
+
+  msgsent=msg
+  msg37=''
+  msg37(1:22)=msg
+  call get_q65_tones(msg37,codeword,itone)
+
+! Set up necessary constants
+  nsym=85
+  tsym=7200.d0/12000.d0
+  dt=1.d0/11025.d0
+  f0=ntxfreq
+  ndf=2**(mode65-1)
+  dfgen=ndf*12000.d0/7200.d0
+  phi=0.d0
+  dphi=twopi*dt*f0
+  i=0
+  iz=85*7200*11025.d0/12000.d0
+  t=0.d0
+  j0=0
+  do i=1,iz
+     t=t+dt
+     j=t/tsym + 1.0
+     if(j.ne.j0) then
+        f=f0 + itone(j)*dfgen
+        dphi=twopi*dt*f
+        j0=j
+     endif
+     phi=phi+dphi
+     if(phi.gt.twopi) phi=phi-twopi
+     xphi=phi
+     iwave(2*i-1)=32767.0*cos(xphi)
+     iwave(2*i)=32767.0*sin(xphi)
+  enddo
+  nwave=2*iz
+
+999  return
+end subroutine gen_q65_wave
diff --git a/q65w/libm65/geocentric.f90 b/q65w/libm65/geocentric.f90
new file mode 100644
index 000000000..59ed90b51
--- /dev/null
+++ b/q65w/libm65/geocentric.f90
@@ -0,0 +1,17 @@
+subroutine geocentric(alat,elev,hlt,erad)
+
+  implicit real*8 (a-h,o-z)
+
+! IAU 1976 flattening f, equatorial radius a
+  f = 1.d0/298.257d0
+  a = 6378140.d0
+  c = 1.d0/sqrt(1.d0 + (-2.d0 + f)*f*sin(alat)*sin(alat))
+  arcf = (a*c + elev)*cos(alat)
+  arsf = (a*(1.d0 - f)*(1.d0 - f)*c + elev)*sin(alat)
+  hlt = datan2(arsf,arcf)
+  erad = sqrt(arcf*arcf + arsf*arsf)
+  erad = 0.001d0*erad
+
+  return
+end subroutine geocentric
+
diff --git a/q65w/libm65/getdphi.f90 b/q65w/libm65/getdphi.f90
new file mode 100644
index 000000000..e55d7120d
--- /dev/null
+++ b/q65w/libm65/getdphi.f90
@@ -0,0 +1,18 @@
+subroutine getdphi(qphi)
+
+  real qphi(12)
+
+  s=0.
+  c=0.
+  do i=1,12
+     th=i*30/57.2957795
+     s=s+qphi(i)*sin(th)
+     c=c+qphi(i)*cos(th)
+  enddo
+
+  dphi=57.2957795*atan2(s,c)
+  write(*,1010) nint(dphi)
+1010 format('!Best-fit Dphi =',i4,' deg')
+
+  return
+  end
diff --git a/q65w/libm65/getpfx1.f90 b/q65w/libm65/getpfx1.f90
new file mode 100644
index 000000000..40fcc369c
--- /dev/null
+++ b/q65w/libm65/getpfx1.f90
@@ -0,0 +1,96 @@
+subroutine getpfx1(callsign,k,nv2)
+
+  character*12 callsign0,callsign,lof,rof
+  character*8 c
+  character addpfx*8,tpfx*4,tsfx*3
+  logical ispfx,issfx,invalid
+  common/pfxcom/addpfx
+  include 'pfx.f90'
+
+  callsign0=callsign
+  nv2=0
+  iz=index(callsign,' ') - 1
+  if(iz.lt.0) iz=12
+  islash=index(callsign(1:iz),'/')
+  k=0
+  c='   '
+  if(islash.gt.0 .and. islash.le.(iz-4)) then
+!  Add-on prefix
+     c=callsign(1:islash-1)
+     callsign=callsign(islash+1:iz)
+     do i=1,NZ
+        if(pfx(i)(1:4).eq.c) then
+           k=i
+           go to 10
+        endif
+     enddo
+     if(addpfx.eq.c) then
+        k=449
+        go to 10
+     endif
+
+  else if(islash.eq.(iz-1)) then
+!  Add-on suffix
+     c=callsign(islash+1:iz)
+     callsign=callsign(1:islash-1)
+     do i=1,NZ2
+        if(sfx(i).eq.c(1:1)) then
+           k=400+i
+           go to 10
+        endif
+     enddo
+  endif
+
+10 if(islash.ne.0 .and.k.eq.0) then
+!  Original JT65 would force this compound callsign to be treated as
+!  plain text.  In JT65v2, we will encode the prefix or suffix into nc1.
+!  The task here is to compute the proper value of k.
+     lof=callsign0(:islash-1)
+     rof=callsign0(islash+1:)
+     llof=len_trim(lof)
+     lrof=len_trim(rof)
+     ispfx=(llof.gt.0 .and. llof.le.4)
+     issfx=(lrof.gt.0 .and. lrof.le.3)
+     invalid=.not.(ispfx.or.issfx)
+     if(ispfx.and.issfx) then
+        if(llof.lt.3) issfx=.false.
+        if(lrof.lt.3) ispfx=.false.
+        if(ispfx.and.issfx) then
+           i=ichar(callsign0(islash-1:islash-1))
+           if(i.ge.ichar('0') .and. i.le.ichar('9')) then
+              issfx=.false.
+           else
+              ispfx=.false.
+           endif
+        endif
+     endif
+
+     if(invalid) then
+        k=-1
+     else
+        if(ispfx) then
+           tpfx=lof(1:4)
+           k=nchar(tpfx(1:1))
+           k=37*k + nchar(tpfx(2:2))
+           k=37*k + nchar(tpfx(3:3))
+           k=37*k + nchar(tpfx(4:4))
+           nv2=1
+           i=index(callsign0,'/')
+           callsign=callsign0(:i-1)
+           callsign=callsign0(i+1:)
+        endif
+        if(issfx) then
+           tsfx=rof(1:3)
+           k=nchar(tsfx(1:1))
+           k=37*k + nchar(tsfx(2:2))
+           k=37*k + nchar(tsfx(3:3))
+           nv2=2
+           i=index(callsign0,'/')
+           callsign=callsign0(:i-1)
+        endif
+     endif
+  endif
+
+  return
+end subroutine getpfx1
+
diff --git a/q65w/libm65/getpfx2.f90 b/q65w/libm65/getpfx2.f90
new file mode 100644
index 000000000..d747e7f29
--- /dev/null
+++ b/q65w/libm65/getpfx2.f90
@@ -0,0 +1,24 @@
+subroutine getpfx2(k0,callsign)
+
+  character callsign*12
+  include 'pfx.f90'
+  character addpfx*8
+  common/pfxcom/addpfx
+
+  k=k0
+  if(k.gt.450) k=k-450
+  if(k.ge.1 .and. k.le.NZ) then
+     iz=index(pfx(k),' ') - 1
+     callsign=pfx(k)(1:iz)//'/'//callsign
+  else if(k.ge.401 .and. k.le.400+NZ2) then
+     iz=index(callsign,' ') - 1
+     callsign=callsign(1:iz)//'/'//sfx(k-400)
+  else if(k.eq.449) then
+     iz=index(addpfx,' ') - 1
+     if(iz.lt.1) iz=8
+     callsign=addpfx(1:iz)//'/'//callsign
+  endif
+
+  return
+end subroutine getpfx2
+
diff --git a/q65w/libm65/gran.c b/q65w/libm65/gran.c
new file mode 100644
index 000000000..24b986503
--- /dev/null
+++ b/q65w/libm65/gran.c
@@ -0,0 +1,28 @@
+#include <stdlib.h>
+#include <math.h>
+
+/* Generate gaussian random float with mean=0 and std_dev=1 */
+float gran_()
+{
+  float fac,rsq,v1,v2;
+  static float gset;
+  static int iset;
+
+  if(iset){
+    /* Already got one */
+    iset = 0;
+    return gset;
+  }
+  /* Generate two evenly distributed numbers between -1 and +1
+   * that are inside the unit circle
+   */
+  do {
+    v1 = 2.0 * (float)rand() / RAND_MAX - 1;
+    v2 = 2.0 * (float)rand() / RAND_MAX - 1;
+    rsq = v1*v1 + v2*v2;
+  } while(rsq >= 1.0 || rsq == 0.0);
+  fac = sqrt(-2.0*log(rsq)/rsq);
+  gset = v1*fac;
+  iset++;
+  return v2*fac;
+}
diff --git a/q65w/libm65/graycode.f90 b/q65w/libm65/graycode.f90
new file mode 100644
index 000000000..2074241a6
--- /dev/null
+++ b/q65w/libm65/graycode.f90
@@ -0,0 +1,10 @@
+subroutine graycode(dat,n,idir)
+
+  integer dat(n)
+  do i=1,n
+     dat(i)=igray(dat(i),idir)
+  enddo
+
+  return
+end subroutine graycode
+
diff --git a/q65w/libm65/graycode65.f90 b/q65w/libm65/graycode65.f90
new file mode 100644
index 000000000..bb2c669ce
--- /dev/null
+++ b/q65w/libm65/graycode65.f90
@@ -0,0 +1,9 @@
+subroutine graycode65(dat,n,idir)
+
+  integer dat(n)
+  do i=1,n
+     dat(i)=igray(dat(i),idir)
+  enddo
+
+  return
+end subroutine graycode65
diff --git a/q65w/libm65/grid2deg.f90 b/q65w/libm65/grid2deg.f90
new file mode 100644
index 000000000..344351dd7
--- /dev/null
+++ b/q65w/libm65/grid2deg.f90
@@ -0,0 +1,38 @@
+subroutine grid2deg(grid0,dlong,dlat)
+
+! Converts Maidenhead grid locator to degrees of West longitude
+! and North latitude.
+
+  character*6 grid0,grid
+  character*1 g1,g2,g3,g4,g5,g6
+
+  grid=grid0
+  i=ichar(grid(5:5))
+  if(grid(5:5).eq.' ' .or. i.le.64 .or. i.ge.128) grid(5:6)='mm'
+
+  if(grid(1:1).ge.'a' .and. grid(1:1).le.'z') grid(1:1)=              &
+       char(ichar(grid(1:1))+ichar('A')-ichar('a'))
+  if(grid(2:2).ge.'a' .and. grid(2:2).le.'z') grid(2:2)=              &
+       char(ichar(grid(2:2))+ichar('A')-ichar('a'))
+  if(grid(5:5).ge.'A' .and. grid(5:5).le.'Z') grid(5:5)=              &
+       char(ichar(grid(5:5))-ichar('A')+ichar('a'))
+  if(grid(6:6).ge.'A' .and. grid(6:6).le.'Z') grid(6:6)=              &
+       char(ichar(grid(6:6))-ichar('A')+ichar('a'))
+
+  g1=grid(1:1)
+  g2=grid(2:2)
+  g3=grid(3:3)
+  g4=grid(4:4)
+  g5=grid(5:5)
+  g6=grid(6:6)
+
+  nlong = 180 - 20*(ichar(g1)-ichar('A'))
+  n20d = 2*(ichar(g3)-ichar('0'))
+  xminlong = 5*(ichar(g5)-ichar('a')+0.5)
+  dlong = nlong - n20d - xminlong/60.0
+  nlat = -90+10*(ichar(g2)-ichar('A')) + ichar(g4)-ichar('0')
+  xminlat = 2.5*(ichar(g6)-ichar('a')+0.5)
+  dlat = nlat + xminlat/60.0
+
+  return
+end subroutine grid2deg
diff --git a/q65w/libm65/grid2k.f90 b/q65w/libm65/grid2k.f90
new file mode 100644
index 000000000..f68b1409e
--- /dev/null
+++ b/q65w/libm65/grid2k.f90
@@ -0,0 +1,12 @@
+subroutine grid2k(grid,k)
+
+  character*6 grid
+
+  call grid2deg(grid,xlong,xlat)
+  nlong=nint(xlong)
+  nlat=nint(xlat)
+  k=0
+  if(nlat.ge.85) k=5*(nlong+179)/2 + nlat-84
+
+  return
+end subroutine grid2k
diff --git a/q65w/libm65/igray.c b/q65w/libm65/igray.c
new file mode 100644
index 000000000..395f79712
--- /dev/null
+++ b/q65w/libm65/igray.c
@@ -0,0 +1,22 @@
+#ifdef CVF
+extern int __stdcall IGRAY(int *n0, int *idir)
+#else
+int igray_(int *n0, int *idir)
+#endif
+{
+  int n;
+  unsigned long sh;
+  unsigned long nn;
+  n=*n0;
+
+  if(*idir>0) return (n ^ (n >> 1));
+
+  sh = 1;
+  nn = (n >> sh);
+  while (nn > 0) {
+    n ^= nn;
+    sh <<= 1;
+    nn = (n >> sh);
+  }
+  return (n);
+}
diff --git a/q65w/libm65/indexx.f90 b/q65w/libm65/indexx.f90
new file mode 100644
index 000000000..7a35f53b8
--- /dev/null
+++ b/q65w/libm65/indexx.f90
@@ -0,0 +1,91 @@
+subroutine indexx(arr,n,indx)
+
+  parameter (M=7,NSTACK=50)
+  integer n,indx(n)
+  real arr(n)
+  integer i,indxt,ir,itemp,j,jstack,k,l,istack(NSTACK)
+  real a
+
+  do j=1,n
+     indx(j)=j
+  enddo
+
+  jstack=0
+  l=1
+  ir=n
+1 if(ir-l.lt.M) then
+     do j=l+1,ir
+        indxt=indx(j)
+        a=arr(indxt)
+        do i=j-1,1,-1
+           if(arr(indx(i)).le.a) goto 2
+           indx(i+1)=indx(i)
+        enddo
+        i=0
+2       indx(i+1)=indxt
+     enddo
+     if(jstack.eq.0) return
+
+     ir=istack(jstack)
+     l=istack(jstack-1)
+     jstack=jstack-2
+
+  else
+     k=(l+ir)/2
+     itemp=indx(k)
+     indx(k)=indx(l+1)
+     indx(l+1)=itemp
+
+     if(arr(indx(l+1)).gt.arr(indx(ir))) then
+        itemp=indx(l+1)
+        indx(l+1)=indx(ir)
+        indx(ir)=itemp
+     endif
+
+     if(arr(indx(l)).gt.arr(indx(ir))) then
+        itemp=indx(l)
+        indx(l)=indx(ir)
+        indx(ir)=itemp
+     endif
+
+     if(arr(indx(l+1)).gt.arr(indx(l))) then
+        itemp=indx(l+1)
+        indx(l+1)=indx(l)
+        indx(l)=itemp
+     endif
+
+     i=l+1
+     j=ir
+     indxt=indx(l)
+     a=arr(indxt)
+3    continue
+     i=i+1
+     if(arr(indx(i)).lt.a) goto 3
+
+4    continue
+     j=j-1
+     if(arr(indx(j)).gt.a) goto 4
+     if(j.lt.i) goto 5
+     itemp=indx(i)
+     indx(i)=indx(j)
+     indx(j)=itemp
+     goto 3
+
+5    indx(l)=indx(j)
+     indx(j)=indxt
+     jstack=jstack+2
+     if(jstack.gt.NSTACK) stop 'NSTACK too small in indexx'
+     if(ir-i+1.ge.j-l)then
+        istack(jstack)=ir
+        istack(jstack-1)=i
+        ir=j-1
+     else
+        istack(jstack)=j-1
+        istack(jstack-1)=l
+        l=i
+     endif
+  endif
+  goto 1
+
+end subroutine indexx
+
diff --git a/q65w/libm65/init_rs.c b/q65w/libm65/init_rs.c
new file mode 100644
index 000000000..876819f8c
--- /dev/null
+++ b/q65w/libm65/init_rs.c
@@ -0,0 +1,120 @@
+/* Initialize a RS codec
+ *
+ * Copyright 2002 Phil Karn, KA9Q
+ * May be used under the terms of the GNU General Public License (GPL)
+ */
+#include <stdlib.h>
+
+#ifdef CCSDS
+#include "ccsds.h"
+#elif defined(BIGSYM)
+#include "int.h"
+#else
+#include "char.h"
+#endif
+
+void FREE_RS(void *p){
+  struct rs *rs = (struct rs *)p;
+
+  free(rs->alpha_to);
+  free(rs->index_of);
+  free(rs->genpoly);
+  free(rs);
+}
+
+/* Initialize a Reed-Solomon codec
+ * symsize = symbol size, bits (1-8)
+ * gfpoly = Field generator polynomial coefficients
+ * fcr = first root of RS code generator polynomial, index form
+ * prim = primitive element to generate polynomial roots
+ * nroots = RS code generator polynomial degree (number of roots)
+ */
+void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned fcr,unsigned prim,
+		unsigned int nroots){
+  struct rs *rs;
+  int i, j, sr,root,iprim;
+
+  /* Check parameter ranges */
+  if(symsize < 0 || symsize > (int)(8*sizeof(DTYPE)))
+    return NULL; /* Need version with ints rather than chars */
+
+  if(fcr >= (1<<symsize))
+    return NULL;
+  if(prim == 0 || prim >= (1<<symsize))
+    return NULL;
+  if(nroots >= (1<<symsize))
+    return NULL; /* Can't have more roots than symbol values! */
+
+  rs = (struct rs *)calloc(1,sizeof(struct rs));
+  rs->mm = symsize;
+  rs->nn = (1<<symsize)-1;
+
+  rs->alpha_to = (DTYPE *)malloc(sizeof(DTYPE)*(rs->nn+1));
+  if(rs->alpha_to == NULL){
+    free(rs);
+    return NULL;
+  }
+  rs->index_of = (DTYPE *)malloc(sizeof(DTYPE)*(rs->nn+1));
+  if(rs->index_of == NULL){
+    free(rs->alpha_to);
+    free(rs);
+    return NULL;
+  }
+
+  /* Generate Galois field lookup tables */
+  rs->index_of[0] = A0; /* log(zero) = -inf */
+  rs->alpha_to[A0] = 0; /* alpha**-inf = 0 */
+  sr = 1;
+  for(i=0;i<rs->nn;i++){
+    rs->index_of[sr] = i;
+    rs->alpha_to[i] = sr;
+    sr <<= 1;
+    if(sr & (1<<symsize))
+      sr ^= gfpoly;
+    sr &= rs->nn;
+  }
+  if(sr != 1){
+    /* field generator polynomial is not primitive! */
+    free(rs->alpha_to);
+    free(rs->index_of);
+    free(rs);
+    return NULL;
+  }
+
+  /* Form RS code generator polynomial from its roots */
+  rs->genpoly = (DTYPE *)malloc(sizeof(DTYPE)*(nroots+1));
+  if(rs->genpoly == NULL){
+    free(rs->alpha_to);
+    free(rs->index_of);
+    free(rs);
+    return NULL;
+  }
+  rs->fcr = fcr;
+  rs->prim = prim;
+  rs->nroots = nroots;
+
+  /* Find prim-th root of 1, used in decoding */
+  for(iprim=1;(iprim % prim) != 0;iprim += rs->nn)
+    ;
+  rs->iprim = iprim / prim;
+
+  rs->genpoly[0] = 1;
+  for (i = 0,root=fcr*prim; i < nroots; i++,root += prim) {
+    rs->genpoly[i+1] = 1;
+
+    /* Multiply rs->genpoly[] by  @**(root + x) */
+    for (j = i; j > 0; j--){
+      if (rs->genpoly[j] != 0)
+	rs->genpoly[j] = rs->genpoly[j-1] ^ rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[j]] + root)];
+      else
+	rs->genpoly[j] = rs->genpoly[j-1];
+    }
+    /* rs->genpoly[0] can never be zero */
+    rs->genpoly[0] = rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[0]] + root)];
+  }
+  /* convert rs->genpoly[] to index form for quicker encoding */
+  for (i = 0; i <= nroots; i++)
+    rs->genpoly[i] = rs->index_of[rs->genpoly[i]];
+
+  return rs;
+}
diff --git a/q65w/libm65/int.h b/q65w/libm65/int.h
new file mode 100644
index 000000000..ada5bfd4c
--- /dev/null
+++ b/q65w/libm65/int.h
@@ -0,0 +1,54 @@
+/* Include file to configure the RS codec for integer symbols
+ *
+ * Copyright 2002, Phil Karn, KA9Q
+ * May be used under the terms of the GNU General Public License (GPL)
+ */
+#define DTYPE int
+
+/* Reed-Solomon codec control block */
+struct rs {
+  unsigned int mm;   /* Bits per symbol */
+  unsigned int nn;   /* Symbols per block (= (1<<mm)-1) */
+  int *alpha_to;      /* log lookup table */
+  int *index_of;      /* Antilog lookup table */
+  int *genpoly;       /* Generator polynomial */
+  unsigned int nroots;     /* Number of generator roots = number of parity symbols */
+  unsigned int fcr;        /* First consecutive root, index form */
+  unsigned int prim;       /* Primitive element, index form */
+  unsigned int iprim;      /* prim-th root of 1, index form */
+};
+
+static inline int modnn(struct rs *rs,int x){
+  while (x >= rs->nn) {
+    x -= rs->nn;
+    x = (x >> rs->mm) + (x & rs->nn);
+  }
+  return x;
+}
+#define MODNN(x) modnn(rs,x)
+
+#define MM (rs->mm)
+#define NN (rs->nn)
+#define ALPHA_TO (rs->alpha_to) 
+#define INDEX_OF (rs->index_of)
+#define GENPOLY (rs->genpoly)
+#define NROOTS (rs->nroots)
+#define FCR (rs->fcr)
+#define PRIM (rs->prim)
+#define IPRIM (rs->iprim)
+#define A0 (NN)
+
+#define ENCODE_RS encode_rs_int
+#define DECODE_RS decode_rs_int
+#define INIT_RS init_rs_int
+#define FREE_RS free_rs_int
+
+void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity);
+int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras, int calc_syn);
+void *INIT_RS(unsigned int symsize,unsigned int gfpoly,unsigned int fcr,
+		   unsigned int prim,unsigned int nroots);
+void FREE_RS(void *p);
+
+
+
+
diff --git a/q65w/libm65/interleave63.f90 b/q65w/libm65/interleave63.f90
new file mode 100644
index 000000000..a32ef34cd
--- /dev/null
+++ b/q65w/libm65/interleave63.f90
@@ -0,0 +1,25 @@
+subroutine interleave63(d1,idir)
+
+! Interleave (idir=1) or de-interleave (idir=-1) the array d1.
+
+  integer d1(0:6,0:8)
+  integer d2(0:8,0:6)
+
+  if(idir.ge.0) then
+     do i=0,6
+        do j=0,8
+           d2(j,i)=d1(i,j)
+        enddo
+     enddo
+     call move(d2,d1,63)
+  else
+     call move(d1,d2,63)
+     do i=0,6
+        do j=0,8
+           d1(i,j)=d2(j,i)
+        enddo
+     enddo
+  endif
+         
+  return
+end subroutine interleave63
diff --git a/q65w/libm65/ipcomm.cpp b/q65w/libm65/ipcomm.cpp
new file mode 100644
index 000000000..b40a09998
--- /dev/null
+++ b/q65w/libm65/ipcomm.cpp
@@ -0,0 +1,34 @@
+#include <QDebug>
+#include <qsharedmemory.h>
+#include <QSystemSemaphore>
+
+QSharedMemory mem_m65("mem_m65");
+QSystemSemaphore sem_m65("sem_m65", 1, QSystemSemaphore::Open);
+
+extern "C" {
+  bool attach_m65_();
+  bool create_m65_(int nsize);
+  bool detach_m65_();
+  bool lock_m65_();
+  bool unlock_m65_();
+  char* address_m65_();
+  int size_m65_();
+
+  bool acquire_m65_();
+  bool release_m65_();
+
+  extern struct {
+    char c[10];
+  } m65com_;
+}
+
+bool attach_m65_() {return mem_m65.attach();}
+bool create_m65_(int nsize) {return mem_m65.create(nsize);}
+bool detach_m65_() {return mem_m65.detach();}
+bool lock_m65_() {return mem_m65.lock();}
+bool unlock_m65_() {return mem_m65.unlock();}
+char* address_m65_() {return (char*)mem_m65.constData();}
+int size_m65_() {return (int)mem_m65.size();}
+
+bool acquire_m65_() {return sem_m65.acquire();}
+bool release_m65_() {return sem_m65.release();}
diff --git a/q65w/libm65/iqcal.f90 b/q65w/libm65/iqcal.f90
new file mode 100644
index 000000000..c0c4fce2d
--- /dev/null
+++ b/q65w/libm65/iqcal.f90
@@ -0,0 +1,30 @@
+subroutine iqcal(nn,c,nfft,gain,phase,zsum,ipk,reject)
+
+  complex c(0:nfft-1)
+  complex z,zsum,zave
+
+  if(nn.eq.0) then
+     zsum=0.
+  endif
+  nn=nn+1
+  smax=0.
+  ipk=1
+  do i=1,nfft-1                       !Find strongest signal
+     s=real(c(i))**2 + aimag(c(i))**2
+     if(s.gt.smax) then
+        smax=s
+        ipk=i
+     endif
+  enddo
+  pimage=real(c(nfft-ipk))**2 + aimag(c(nfft-ipk))**2
+  p=smax + pimage
+  z=c(ipk)*c(nfft-ipk)/p              !Synchronous detection of image
+  zsum=zsum+z
+  zave=zsum/nn
+  tmp=sqrt(1.0 - (2.0*real(zave))**2)
+  phase=asin(2.0*aimag(zave)/tmp)    !Estimate phase
+  gain=tmp/(1.0-2.0*real(zave))      !Estimate gain
+  reject=10.0*log10(pimage/smax)
+
+  return
+end subroutine iqcal
diff --git a/q65w/libm65/iqfix.f90 b/q65w/libm65/iqfix.f90
new file mode 100644
index 000000000..93cace4b1
--- /dev/null
+++ b/q65w/libm65/iqfix.f90
@@ -0,0 +1,28 @@
+subroutine iqfix(c,nfft,gain,phase)
+
+  complex c(0:nfft-1)
+  complex z,h,u,v
+
+  nh=nfft/2
+  h=gain*cmplx(cos(phase),sin(phase))
+
+  do i=1,nh-1
+     u=c(i)
+     v=c(nfft-i)
+     x=real(u)  + real(v)  - (aimag(u) + aimag(v))*aimag(h) +         &
+          (real(u) - real(v))*real(h)
+     y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h)  +         &
+          (real(u) - real(v))*aimag(h)
+     c(i)=0.5*cmplx(x,y)
+     z=u
+     u=v
+     v=z
+     x=real(u)  + real(v)  - (aimag(u) + aimag(v))*aimag(h) +         &
+          (real(u) - real(v))*real(h)
+     y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h)  +         &
+          (real(u) - real(v))*aimag(h)
+     c(nfft-i)=0.5*cmplx(x,y)
+  enddo
+
+  return
+end subroutine iqfix
diff --git a/q65w/libm65/jt65code.f90 b/q65w/libm65/jt65code.f90
new file mode 100644
index 000000000..b232fcdd6
--- /dev/null
+++ b/q65w/libm65/jt65code.f90
@@ -0,0 +1,47 @@
+program JT65code
+
+! Provides examples of message packing, bit and symbol ordering,
+! Reed Solomon encoding, and other necessary details of the JT65
+! protocol.
+
+  character*22 msg0,msg,decoded,cok*3
+  integer dgen(12),sent(63),recd(12),era(51)
+
+  nargs=iargc()
+  if(nargs.ne.1) then
+     print*,'Usage: JT65code "message"'
+     go to 999
+  endif
+
+  call getarg(1,msg0)                     !Get message from command line
+  msg=msg0
+
+  call chkmsg(msg,cok,nspecial,flip)      !See if it includes "OOO" report
+  if(nspecial.gt.0) then                  !or is a shorthand message
+     write(*,1010) 
+1010 format('Shorthand message.')
+     go to 999
+  endif
+
+  call packmsg(msg,dgen)                  !Pack message into 72 bits
+  write(*,1020) msg0
+1020 format('Message:   ',a22)            !Echo input message
+  if(iand(dgen(10),8).ne.0) write(*,1030) !Is plain text bit set?
+1030 format('Plain text.')         
+  write(*,1040) dgen
+1040 format('Packed message, 6-bit symbols: ',12i3) !Display packed symbols
+
+  call rs_encode(dgen,sent)               !RS encode
+  call interleave63(sent,1)               !Interleave channel symbols
+  call graycode(sent,63,1)                !Apply Gray code
+  write(*,1050) sent
+1050 format('Channel symbols, including FEC:'/(i5,20i3))
+
+  call graycode(sent,63,-1)
+  call interleave63(sent,-1)
+  call rs_decode(sent,era,0,recd,nerr)
+  call unpackmsg(recd,decoded)            !Unpack the user message
+  write(*,1060) decoded,cok
+1060 format('Decoded message: ',a22,2x,a3)
+
+999 end program JT65code
diff --git a/q65w/libm65/k2grid.f90 b/q65w/libm65/k2grid.f90
new file mode 100644
index 000000000..aa7631579
--- /dev/null
+++ b/q65w/libm65/k2grid.f90
@@ -0,0 +1,12 @@
+subroutine k2grid(k,grid)
+  character grid*6
+
+  nlong=2*mod((k-1)/5,90)-179
+  if(k.gt.450) nlong=nlong+180
+  nlat=mod(k-1,5)+ 85
+  dlat=nlat
+  dlong=nlong
+  call deg2grid(dlong,dlat,grid)
+
+  return
+end subroutine k2grid
diff --git a/q65w/libm65/lorentzian.f90 b/q65w/libm65/lorentzian.f90
new file mode 100644
index 000000000..cd2257a75
--- /dev/null
+++ b/q65w/libm65/lorentzian.f90
@@ -0,0 +1,102 @@
+subroutine lorentzian(y,npts,a)
+
+! Input:  y(npts); assume x(i)=i, i=1,npts
+! Output: a(5)
+!         a(1) = baseline
+!         a(2) = amplitude
+!         a(3) = x0
+!         a(4) = width
+!         a(5) = chisqr
+
+  real y(npts)
+  real a(5)
+  real deltaa(4)
+
+  a=0.
+  df=12000.0/8192.0                               !df = 1.465 Hz
+  width=0.
+  ipk=0
+  ymax=-1.e30
+  do i=1,npts
+     if(y(i).gt.ymax) then
+        ymax=y(i)
+        ipk=i
+     endif
+!     write(50,3001) i,i*df,y(i)
+!3001 format(i6,2f12.3)
+  enddo
+!  base=(sum(y(ipk-149:ipk-50)) + sum(y(ipk+51:ipk+150)))/200.0
+  base=(sum(y(1:20)) + sum(y(npts-19:npts)))/40.0
+  stest=ymax - 0.5*(ymax-base)
+  ssum=y(ipk)
+  do i=1,50
+     if(ipk+i.gt.npts) exit
+     if(y(ipk+i).lt.stest) exit
+     ssum=ssum + y(ipk+i)
+  enddo
+  do i=1,50
+     if(ipk-i.lt.1) exit
+     if(y(ipk-i).lt.stest) exit
+     ssum=ssum + y(ipk-i)
+  enddo
+  ww=ssum/y(ipk)
+  width=2
+  t=ww*ww - 5.67
+  if(t.gt.0.0) width=sqrt(t)
+  a(1)=base
+  a(2)=ymax-base
+  a(3)=ipk
+  a(4)=width
+
+! Now find Lorentzian parameters
+
+  deltaa(1)=0.1
+  deltaa(2)=0.1
+  deltaa(3)=1.0
+  deltaa(4)=1.0
+  nterms=4
+
+!  Start the iteration
+  chisqr=0.
+  chisqr0=1.e6
+  do iter=1,5
+     do j=1,nterms
+        chisq1=fchisq0(y,npts,a)
+        fn=0.
+        delta=deltaa(j)
+10      a(j)=a(j)+delta
+        chisq2=fchisq0(y,npts,a)
+        if(chisq2.eq.chisq1) go to 10
+        if(chisq2.gt.chisq1) then
+           delta=-delta                      !Reverse direction
+           a(j)=a(j)+delta
+           tmp=chisq1
+           chisq1=chisq2
+           chisq2=tmp
+        endif
+20      fn=fn+1.0
+        a(j)=a(j)+delta
+        chisq3=fchisq0(y,npts,a)
+        if(chisq3.lt.chisq2) then
+           chisq1=chisq2
+           chisq2=chisq3
+           go to 20
+        endif
+
+! Find minimum of parabola defined by last three points
+        delta=delta*(1./(1.+(chisq1-chisq2)/(chisq3-chisq2))+0.5)
+        a(j)=a(j)-delta
+        deltaa(j)=deltaa(j)*fn/3.
+!          write(*,4000) iter,j,a,chisq2
+!4000      format(i1,i2,4f10.4,f11.3)
+     enddo
+     chisqr=fchisq0(y,npts,a)
+!       write(*,4000) 0,0,a,chisqr
+     if(chisqr/chisqr0.gt.0.99) exit
+     chisqr0=chisqr
+  enddo
+  a(5)=chisqr
+
+  return
+end subroutine lorentzian
+
diff --git a/q65w/libm65/m65.f90 b/q65w/libm65/m65.f90
new file mode 100644
index 000000000..c93357c7e
--- /dev/null
+++ b/q65w/libm65/m65.f90
@@ -0,0 +1,195 @@
+program m65
+
+! Decoder for map65.  Can run stand-alone, reading data from *.tf2 files;
+! or as the back end of map65, with data placed in a shared memory region.
+
+! Fortran logical units
+!
+!   10  binary input data, *.tf2 files
+!   11  prefixes.txt
+!   12  wb_w65.txt
+!   13  map65.log
+!   14  
+!   15
+!   16  tquick log
+!   17  saved *.tf2 files
+!   18  test file to be transmitted (wsjtgen.f90)
+!   19  livecq.txt
+!   20
+!   21  map65_rx.log
+!   22
+!   23  CALL3.TXT
+!   24
+!   25
+!   26  tmp26.txt
+
+  use timer_module, only: timer
+  use timer_impl, only: init_timer, fini_timer
+
+  include 'njunk.f90'
+  parameter (NFFT=32768)
+  parameter (NSMAX=60*96000)
+  parameter (NREAD=2048)
+  integer*2 i2(NREAD)
+  real*8 hsym
+  real*4 ssz5a(NFFT)
+  logical*1 lstrong(0:1023),ldecoded,eof
+  real*8 fc0,fcenter
+  character*80 arg,infile
+  character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20
+  common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fc0,nutc0,junk(NJUNK)
+  common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain,                &
+       ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift,                 &
+       mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode,               &
+       ndop00,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,datetime
+  common/early/nhsym1,nhsym2,ldecoded(32768)
+
+  nargs=iargc()
+  if(nargs.ne.1 .and. nargs.lt.5) then
+     print*,'Usage:    m65 Jsub Qsub Xpol <95238|96000> file1 [file2 ...]'
+     print*,'Examples: m65   B   A    X       96000     *.tf2'
+     print*,'          m65   C   C    N       96000     *.iq'
+     print*,''
+     print*,'          m65 -s'
+     print*,'  (Gets data from MAP65, via shared memory region.)'
+     go to 999
+  endif
+  nstandalone=1
+  nhsym1=280
+  nhsym2=302
+  call getarg(1,arg)
+  if(arg(1:2).eq.'-s') then
+     call m65a
+     go to 999
+  endif
+  n=1
+  if(arg(1:1).eq.'0') n=0
+  if(arg(1:1).eq.'A') n=1
+  if(arg(1:1).eq.'B') n=2
+  if(arg(1:1).eq.'C') n=3
+
+  call getarg(2,arg)
+  m=1
+  if(arg(1:1).eq.'0') m=0
+  if(arg(1:1).eq.'A') m=1
+  if(arg(1:1).eq.'B') m=2
+  if(arg(1:1).eq.'C') m=3
+  if(arg(1:1).eq.'D') m=4
+  if(arg(1:1).eq.'E') m=5
+  nmode=10*m + n
+
+  call getarg(3,arg)
+  nxpol=0
+  if(arg(1:1).eq.'X')   nxpol=1
+
+  call getarg(4,arg)
+  nfsample=96000
+  if(arg.eq.'95238') nfsample=95238
+
+  ifile1=5
+
+! Some default parameters for command-line execution, in early testing.
+  mycall='K1JT'
+  mygrid='FN20QI'
+  hiscall='K9AN'
+  hisgrid='EN50'
+  nfa=100          !144.100
+  nfb=162          !144.162
+  ntol=100
+  nkeep=10         !???
+  mousefqso=140    !For IK4WLV in 210220_1814.tf2
+  mousedf=0
+  nfcal=0
+  nkhz_center=125
+
+  if(nxpol.eq.0) then
+     nfa=55        !For KA1GT files
+     nfb=143
+     mousefqso=69  !W2HRO signal
+     nkhz_center=100
+  endif
+
+  call ftninit('.')
+  call init_timer('timer.out')
+  call timer('m65     ',0)
+        
+  do ifile=ifile1,nargs
+     call getarg(ifile,infile)
+     open(10,file=infile,access='stream',status='old',err=998)
+     i1=index(infile,'.tf2')
+     if(i1.lt.1) i1=index(infile,'.iq')
+     read(infile(i1-4:i1-1),*,err=1) nutc0
+     go to 2
+1    nutc0=0
+2    hsym=2048.d0*96000.d0/11025.d0          !Samples per half symbol
+     read(10) fcenter
+     newdat=1
+     nhsym0=-999
+     k=0
+
+     nch=2
+     if(nxpol.eq.1) nch=4
+     eof=.false.
+     do irec=1,9999999
+        if(.not.eof) read(10,end=4) i2
+        go to 6
+4       eof=.true.
+6       if(eof) i2=0
+        do i=1,NREAD,nch
+           k=k+1
+           if(k.gt.60*96000) exit
+           dd(1,k)=i2(i)
+           dd(2,k)=i2(i+1)
+           if(nxpol.eq.1) then
+              dd(3,k)=i2(i+2)
+              dd(4,k)=i2(i+3)
+           endif
+        enddo
+        nhsym=(k-2048)/hsym
+        if(nhsym.ge.1 .and. nhsym.ne.nhsym0) then
+           ndiskdat=1
+           nb=0
+! Emit signal readyForFFT
+           fgreen=-13.0
+           iqadjust=0
+           iqapply=0
+           nbslider=100
+           gainx=0.9962
+           gainy=1.0265
+           phasex=0.01426
+           phasey=-0.01195
+           call timer('symspec ',0)
+           call symspec(k,nxpol,ndiskdat,nb,nbslider,idphi,nfsample,   &
+                fgreen,iqadjust,iqapply,gainx,gainy,phasex,phasey,rejectx,   &
+                rejecty,pxdb,pydb,ssz5a,nkhz,ihsym,nzap,slimit,lstrong)
+           call timer('symspec ',1)
+           nhsym0=nhsym
+
+           nutc=nutc0
+           if(nhsym.eq.nhsym1) call decode0(dd,ss,savg,nstandalone)
+           if(nhsym.eq.nhsym2) then
+              call decode0(dd,ss,savg,nstandalone)
+              exit
+           endif
+        endif
+     enddo  ! irec
+
+     if(iqadjust.ne.0) write(*,3002) rejectx,rejecty
+3002 format('Image rejection:',2f7.1,' dB')
+  enddo  ! ifile
+
+  call timer('m65     ',1)
+  call timer('m65     ',101)
+  go to 999
+
+998 print*,'Cannot open file:'
+  print*,infile
+
+999 call fini_timer()
+  if(arg(1:2).eq.'-s') then
+     write(21,1999) datetime(:17)
+1999 format('Subprocess m65 terminated normally at UTC ',a17)
+     close(21)
+  endif
+
+end program m65
diff --git a/q65w/libm65/m65a.f90 b/q65w/libm65/m65a.f90
new file mode 100644
index 000000000..ffeb176a3
--- /dev/null
+++ b/q65w/libm65/m65a.f90
@@ -0,0 +1,107 @@
+subroutine m65a
+
+  use timer_module, only: timer
+  use timer_impl, only: init_timer !, limtrace
+  use, intrinsic :: iso_c_binding, only: C_NULL_CHAR
+  use FFTW3
+  
+  interface
+     function address_m65()
+     integer*1, pointer :: address_m65
+     end function address_m65
+  end interface
+  
+  integer*1 attach_m65
+  integer size_m65
+  integer*1, pointer :: p_m65
+  character*80 cwd
+  character wisfile*256
+  logical fileExists
+
+  call getcwd(cwd)
+  call ftninit(trim(cwd))
+  call init_timer (trim(cwd)//'/timer.out')
+
+  limtrace=0
+  lu=12
+  i1=attach_m65()
+
+10 inquire(file=trim(cwd)//'/.lock',exist=fileExists)
+  if(fileExists) then
+     call sleep_msec(100)
+     go to 10
+  endif
+
+  inquire(file=trim(cwd)//'/.quit',exist=fileExists)
+  if(fileExists) then
+     call timer('decode0 ',101)
+     i=detach_m65()
+     ! Save FFTW wisdom and free memory
+     wisfile=trim(cwd)//'/m65_wisdom.dat'// C_NULL_CHAR
+     if(len(trim(wisfile)).gt.0) iret=fftwf_export_wisdom_to_filename(wisfile)
+     call four2a(a,-1,1,1,1)
+     call filbig(a,-1,1,0.0,0,0,0,0,0) !used for FFT plans
+     call fftwf_cleanup_threads()
+     call fftwf_cleanup()
+     go to 999
+  endif
+  
+  nbytes=size_m65()
+  if(nbytes.le.0) then
+     print*,'m65a: Shared memory mem_m65 does not exist.' 
+     print*,'Program m65a should be started automatically from within map65.'
+     go to 999
+  endif
+  p_m65=>address_m65()
+  call m65b(p_m65,nbytes)
+  call sleep_msec(500)          ! wait for .lock to be recreated
+  go to 10
+
+999 return
+end subroutine m65a
+
+subroutine m65b(m65com,nbytes)
+  integer*1 m65com(0:nbytes-1)
+  kss=4*4*60*96000
+  ksavg=kss+4*4*322*32768
+  kfcenter=ksavg+4*4*32768
+ call m65c(m65com(0),m65com(kss),m65com(ksavg),m65com(kfcenter))
+  return
+end subroutine m65b
+
+subroutine m65c(dd,ss,savg,nparams0)
+
+  include 'njunk.f90'
+  real*4 dd(4,5760000),ss(4,322,32768),savg(4,32768)
+  real*8 fcenter
+  integer nparams0(NJUNK+2),nparams(NJUNK+2)
+  logical ldecoded
+  character*12 mycall,hiscall
+  character*6 mygrid,hisgrid
+  character*20 datetime
+  common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain,              &
+       ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift,               &
+       mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,nmode,             &
+       ndop00,nsave,max_drift,nhsym,mycall,mygrid,hiscall,hisgrid,       &
+       datetime,junk1,junk2
+  common/early/nhsym1,nhsym2,ldecoded(32768)
+  equivalence (nparams,fcenter)
+  
+  nparams=nparams0                     !Copy parameters into common/npar/
+  npatience=1
+  if(nhsym.eq.nhsym1 .and. iand(nrxlog,1).ne.0) then
+     write(21,1000) datetime(:17)
+1000 format(/'UTC Date: 'a17/78('-'))
+     flush(21)
+  endif
+  if(iand(nrxlog,2).ne.0) rewind(21)
+  if(iand(nrxlog,4).ne.0) then
+     if(nhsym.eq.nhsym1) rewind(26)
+     if(nhsym.eq.nhsym2) backspace(26)
+  endif
+
+  nstandalone=0
+  if(sum(nparams).ne.0) call decode0(dd,ss,savg,nstandalone)
+
+  return
+end subroutine m65c
diff --git a/q65w/libm65/map65a.f90 b/q65w/libm65/map65a.f90
new file mode 100644
index 000000000..1861467ad
--- /dev/null
+++ b/q65w/libm65/map65a.f90
@@ -0,0 +1,529 @@
+subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb,        &
+     mousedf,mousefqso,nagain,ndecdone,nfshift,ndphi,max_drift,             &
+     nfcal,nkeep,mcall3b,nsum,nsave,nxant,mycall,mygrid,                    &
+     neme,ndepth,nstandalone,hiscall,hisgrid,nhsym,nfsample,                &
+     ndiskdat,nxpol,nmode,ndop00)
+
+!  Processes timf2 data from Linrad to find and decode JT65 signals.
+
+  use wideband_sync
+  use timer_module, only: timer
+
+  parameter (MAXMSG=1000)            !Size of decoded message list
+  parameter (NSMAX=60*96000)
+  real dd(4,NSMAX)
+  real*4 ss(4,322,NFFT),savg(4,NFFT)
+  real tavg(-50:50)                  !Temp for finding local base level
+  real base(4)                       !Local basel level at 4 pol'ns
+  real sig(MAXMSG,30)                !Parameters of detected signals
+  real a(5)
+  real*8 fcenter
+  character*22 msg(MAXMSG)
+  character*3 shmsg0(4)
+  character mycall*12,hiscall*12,mygrid*6,hisgrid*6,cp*1,cm*1
+  integer indx(MAXMSG),nsiz(MAXMSG)
+  logical done(MAXMSG)
+  logical xpol,bq65,q65b_called
+  logical candec(MAX_CANDIDATES)
+  logical ldecoded
+  character decoded*22,blank*22,cmode*2
+  real short(3,NFFT)                 !SNR dt ipol for potential shorthands
+  real qphi(12)
+  type(candidate) :: cand(MAX_CANDIDATES)
+  
+  common/c3com/ mcall3a
+  common/testcom/ifreq
+  common/early/nhsym1,nhsym2,ldecoded(32768)
+  common/decodes/ndecodes
+
+  data blank/'                      '/,cm/'#'/
+  data shmsg0/'ATT','RO ','RRR','73 '/
+  data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/
+  save
+
+  rewind 12
+  ndecodes=0
+
+! Clean start for Q65 at early decode
+  if(nhsym.eq.nhsym1 .or. nagain.ne.0) ldecoded=.false.
+  if(ndiskdat.eq.1) ldecoded=.false.
+
+  nkhz_center=nint(1000.0*(fcenter-int(fcenter)))
+  mfa=nfa-nkhz_center+48
+  mfb=nfb-nkhz_center+48
+  mode65=mod(nmode,10)
+  if(mode65.eq.3) mode65=4
+  mode_q65=nmode/10
+  nts_jt65=mode65                     !JT65 tone separation factor
+  nts_q65=2**(mode_q65-1)             !Q65 tone separation factor
+  xpol=(nxpol.ne.0)
+  
+! No second decode for JT65?
+  if(nhsym.eq.nhsym2 .and. nagain.eq.0 .and.ndiskdat.eq.0) mode65=0
+
+  if(nagain.eq.0) then
+     call timer('get_cand',0)
+     call get_candidates(ss,savg,xpol,nhsym,mfa,mfb,nts_jt65,nts_q65,cand,ncand)
+     call timer('get_cand',1)
+     candec=.false.
+  endif
+!###
+!  do k=1,ncand
+!     freq=cand(k)%f+nkhz_center-48.0
+!     ipk=cand(k)%indx
+!     write(71,3071) k,db(cand(k)%snr),freq,cand(k)%xdt,    &
+!          cand(k)%ipol,cand(k)%iflip,ipk,ldecoded(ipk)
+!3071 format(i3,f8.2,f10.3,f8.2,2i3,i6,L4)
+!  enddo
+!###
+
+  nwrite_q65=0
+  bq65=mode_q65.gt.0
+
+  mcall3a=mcall3b
+  mousefqso0=mousefqso
+  if(.not.xpol) ndphi=0
+  nsum=0
+
+!### Should use AppDir! ###
+  open(23,file='CALL3.TXT',status='unknown')
+
+  df=96000.0/NFFT                     !df = 96000/NFFT = 2.930 Hz
+  if(nfsample.eq.95238) df=95238.1/NFFT
+  ftol=0.010                          !Frequency tolerance (kHz)
+  dphi=idphi/57.2957795
+  foffset=0.001*(1270 + nfcal)              !Offset from sync tone, plus CAL
+  fqso=mousefqso + foffset - 0.5*(nfa+nfb) + nfshift !fqso at baseband (khz)
+  iloop=0
+
+2  if(ndphi.eq.1) dphi=30*iloop/57.2957795
+
+  if(nutc.ne.nutc0) nfile=nfile+1
+  nutc0=nutc
+
+  do nqd=1,0,-1
+     if(nqd.eq.1) then                     !Quick decode, at fQSO
+        fa=1000.0*(fqso+0.001*mousedf) - ntol
+        fb=1000.0*(fqso+0.001*mousedf) + ntol + 4*53.8330078
+     else                                  !Wideband decode at all freqs
+        fa=-1000*0.5*(nfb-nfa) + 1000*nfshift
+        fb= 1000*0.5*(nfb-nfa) + 1000*nfshift
+     endif
+     ia=nint(fa/df) + 16385
+     ib=nint(fb/df) + 16385
+     ia=max(51,ia)
+     ib=min(32768-51,ib)
+     if(ndiskdat.eq.1 .and. mode65.eq.0) ib=ia
+
+     km=0
+     nkm=1
+     nz=n/8
+     freq0=-999.
+     sync10=-999.
+     fshort0=-999.
+     syncshort0=-999.
+     ntry=0
+     short=0.                                 !Zero the whole short array
+     jpz=1
+     if(xpol) jpz=4
+
+! First steps for JT65 decoding
+     do i=ia,ib                               !Search over freq range
+        freq=0.001*(i-16385)*df
+!  Find the local base level for each polarization; update every 10 bins.
+        if(mod(i-ia,10).eq.0) then
+           do jp=1,jpz
+              do ii=-50,50
+                 iii=i+ii
+                 if(iii.ge.1 .and. iii.le.32768) then
+                    tavg(ii)=savg(jp,iii)
+                 else
+                    write(13,*) 'Error in iii:',iii,ia,ib,fa,fb
+                    flush(13)
+                    go to 900
+                 endif
+              enddo
+              call pctile(tavg,101,50,base(jp))
+           enddo
+        endif
+
+!  Find max signal at this frequency
+        smax=0.
+        do jp=1,jpz
+           if(savg(jp,i)/base(jp).gt.smax) then
+              smax=savg(jp,i)/base(jp)
+              jpmax=jp
+           endif
+        enddo
+
+        if(smax.gt.1.1 .or. ia.eq.ib) then
+!  Look for JT65 sync patterns and shorthand square-wave patterns.
+           call timer('ccf65   ',0)
+           ssmax=1.e30
+           call ccf65(ss(1,1,i),nhsym,ssmax,sync1,ipol,jpz,dt,     &
+                flipk,syncshort,snr2,ipol2,dt2)
+!###           if(dt.lt.-2.6 .or. dt.gt.2.5) sync1=-99.0  !###
+           call timer('ccf65   ',1)
+           if(mode65.eq.0) syncshort=-99.0     !If "No JT65", don't waste time
+
+! ########################### Search for Shorthand Messages #################
+!  Is there a shorthand tone above threshold?
+           thresh0=1.0
+!  Use lower thresh0 at fQSO
+           if(nqd.eq.1 .and. ntol.le.100) thresh0=0.
+           if(syncshort.gt.thresh0) then
+! ### Do shorthand AFC here (or maybe after finding a pair?) ###
+              short(1,i)=syncshort
+              short(2,i)=dt2
+              short(3,i)=ipol2
+
+!  Check to see if lower tone of shorthand pair was found.
+              do j=2,4
+                 i0=i-nint(j*mode65*10.0*(11025.0/4096.0)/df)
+!  Should this be i0 +/- 1, or just i0?
+!  Should we also insist that difference in DT be either 1.5 or -1.5 s?
+                 if(short(1,i0).gt.thresh0) then
+                    fshort=0.001*(i0-16385)*df
+                    noffset=0
+                    if(nqd.eq.1) noffset=nint(1000.0*(fshort-fqso)-mousedf)
+                    if(abs(noffset).le.ntol) then
+!  Keep only the best candidate within ftol.
+!### NB: sync2 was not defined here!
+!                       sync2=syncshort                   !### try this ???
+                       if(fshort-fshort0.le.ftol .and.         &
+                            syncshort.gt.syncshort0 .and. nkm.eq.2) km=km-1
+                       if(fshort-fshort0.gt.ftol .or.                     &
+                            syncshort.gt.syncshort0) then
+                          if(km.lt.MAXMSG) km=km+1
+                          sig(km,1)=nfile
+                          sig(km,2)=nutc
+                          sig(km,3)=fshort + 0.5*(nfa+nfb)
+                          sig(km,4)=syncshort
+                          sig(km,5)=dt2
+                          sig(km,6)=45*(ipol2-1)/57.2957795
+                          sig(km,7)=0
+                          sig(km,8)=snr2
+                          sig(km,9)=0
+                          sig(km,10)=0
+!                           sig(km,11)=rms0
+                          sig(km,12)=savg(ipol2,i)
+                          sig(km,13)=0
+                          sig(km,14)=0
+                          sig(km,15)=0
+                          sig(km,16)=0
+!                           sig(km,17)=0
+                          sig(km,18)=0
+                          msg(km)=shmsg0(j)
+                          fshort0=fshort
+                          syncshort0=syncshort
+                          nkm=2
+                       endif
+                    endif
+                 endif
+              enddo
+           endif
+
+! ########################### Search for Normal Messages ###########
+!  Is sync1 above threshold?
+           thresh1=1.0
+!  Use lower thresh1 at fQSO
+           if(nqd.eq.1 .and. ntol.le.100) thresh1=0.
+           noffset=0
+           if(nqd.ge.1) noffset=nint(1000.0*(freq-fqso)-mousedf)
+           if(newdat.eq.1 .and. sync1.gt.-99.0) then
+              sync1=thresh1+1.0
+              noffset=0
+           endif
+           if(sync1.gt.thresh1 .and. abs(noffset).le.ntol) then
+!  Keep only the best candidate within ftol.
+!  (Am I deleting any good decodes by doing this?)
+              if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and.       &
+                   nkm.eq.1) km=km-1
+              if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then
+                 nflip=nint(flipk)
+                 f00=(i-1)*df          !Freq of detected sync tone (0-96000 Hz)
+                 ntry=ntry+1
+                 if((nqd.eq.1 .and. ntry.ge.40) .or.                  &
+                          (nqd.eq.0 .and. ntry.ge.400)) then
+! Too many calls to decode1a!
+                    write(*,*) '! Signal too strong, or suspect data?  Decoding aborted.'
+                    write(13,*) 'Signal too strong, or suspect data?  Decoding aborted.'
+                    call flush(13)
+                    go to 900
+                 endif
+
+                 call timer('decode1a',0)
+                 ifreq=i
+                 ikhz=nint(freq+0.5*(nfa+nfb)-foffset)-nfshift
+                 idf=nint(1000.0*(freq+0.5*(nfa+nfb)-foffset-(ikHz+nfshift)))
+                 call decode1a(dd,newdat,f00,nflip,mode65,nfsample,       &
+                      xpol,mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi,   &
+                      ndphi,nutc,ikHz,idf,ipol,ntol,sync2,                &
+                      a,dt,pol,nkv,nhist,nsum,nsave,qual,decoded)
+                 call timer('decode1a',1)
+
+! The case sync1=2.0 is just to make sure decode1a is called and bigfft done.
+                 if(mode65.ne.0 .and. sync1.ne.2.000000) then
+                    if(km.lt.MAXMSG) km=km+1
+                    sig(km,1)=nfile
+                    sig(km,2)=nutc
+                    sig(km,3)=freq + 0.5*(nfa+nfb)
+                    sig(km,4)=sync1
+                    sig(km,5)=dt
+                    sig(km,6)=pol
+                    sig(km,7)=flipk
+                    sig(km,8)=sync2
+                    sig(km,9)=nkv
+                    sig(km,10)=qual
+!                    sig(km,11)=idphi
+                    sig(km,12)=savg(ipol,i)
+                    sig(km,13)=a(1)
+                    sig(km,14)=a(2)
+                    sig(km,15)=a(3)
+                    sig(km,16)=a(4)
+!                     sig(km,17)=a(5)
+                    sig(km,18)=nhist
+                    msg(km)=decoded
+                    freq0=freq
+                    sync10=sync1
+                    nkm=1
+                 endif
+              endif
+           endif
+        endif
+     enddo  !i=ia,ib
+
+     if(nqd.eq.1) then
+        nwrite=0
+        if(mode65.eq.0) km=0
+        do k=1,km
+           decoded=msg(k)
+           if(decoded.ne.'                      ') then
+              nutc=sig(k,2)
+              freq=sig(k,3)
+              sync1=sig(k,4)
+              dt=sig(k,5)
+              npol=nint(57.2957795*sig(k,6))
+              flip=sig(k,7)
+              sync2=sig(k,8)
+              nkv=sig(k,9)
+              nqual=sig(k,10)
+!              idphi=nint(sig(k,11))
+              if(flip.lt.0.0) then
+                 do i=22,1,-1
+                    if(decoded(i:i).ne.' ') go to 8
+                 enddo
+                 stop 'Error in message format'
+8                if(i.le.18) decoded(i+2:i+4)='OOO'
+              endif
+              nkHz=nint(freq-foffset)-nfshift
+              mhz=fcenter                         ! ... +fadd ???
+              f0=mhz+0.001*nkHz
+              ndf=nint(1000.0*(freq-foffset-(nkHz+nfshift)))
+              nsync1=sync1
+
+              s2db=10.0*log10(sync2) - 40             !### empirical ###
+              nsync2=nint(s2db)
+              if(decoded(1:4).eq.'RO  ' .or. decoded(1:4).eq.'RRR  ' .or.  &
+                   decoded(1:4).eq.'73  ') then
+                 nsync2=nint(1.33*s2db + 2.0)
+              endif
+
+              nwrite=nwrite+1
+              if(nxant.ne.0) then
+                 npol=npol-45
+                 if(npol.lt.0) npol=npol+180
+              endif
+
+              call txpol(xpol,decoded,mygrid,npol,nxant,ntxpol,cp)
+
+              if(ndphi.eq.0) then
+                 write(*,1010) nkHz,ndf,npol,nutc,dt,nsync2,    &
+                      cm,decoded,nkv,nqual,ntxpol,cp
+1010             format('!',i3,i5,i4,i6.4,f5.1,i5,1x,a1,1x,a22,i2,i5,i5,1x,a1)
+              else
+                 if(iloop.ge.1) qphi(iloop)=sig(k,10)
+                 write(*,1010) nkHz,ndf,npol,nutc,dt,nsync2,    &
+                      cm,decoded,nkv,nqual,30*iloop
+                 write(27,1011) 30*iloop,nkHz,ndf,npol,nutc,  &
+                      dt,sync2,nkv,nqual,cm,decoded
+1011             format(i3,i4,i5,i4,i6.4,1x,f5.1,f7.1,i3,i5,a1,1x,a22)
+              endif
+           endif
+        enddo  ! k=1,km
+
+        if(bq65) then
+           q65b_called=.false.
+           do icand=1,ncand
+              if(cand(icand)%iflip.ne.0) cycle        !Keep only Q65 candidates
+              freq=cand(icand)%f+nkhz_center-48.0-1.27046
+              nhzdiff=nint(1000.0*(freq-mousefqso)-mousedf) - nfcal
+! Now looking for "quick decode" (nqd=1) candidates at cursor freq +/- ntol.
+              if(nqd.eq.1 .and. abs(nhzdiff).gt.ntol) cycle
+              ikhz=mousefqso
+              q65b_called=.true.
+              f0=cand(icand)%f
+              call timer('q65b    ',0)
+              call q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,   &
+                   ntol,xpol,mycall,mygrid, hiscall,hisgrid,mode_q65,f0,fqso, &
+                   newdat,nagain,max_drift,nhsym,ndop00,idec)
+              call timer('q65b    ',1)
+              if(idec.ge.0) candec(icand)=.true.
+           enddo
+           if(.not.q65b_called) then
+              freq=mousefqso + 0.001*mousedf
+              ikhz=mousefqso
+              f0=freq - (nkhz_center-48.0-1.27046)   !### ??? ###
+              call timer('q65b    ',0)
+              call q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,   &
+                   ntol,xpol,mycall,mygrid,hiscall,hisgrid,mode_q65,f0,fqso,  &
+                   newdat,nagain,max_drift,nhsym,ndop00,idec)
+              call timer('q65b    ',1)
+           endif
+        endif
+
+        if(nwrite.eq.0 .and. nwrite_q65.eq.0) then
+           write(*,1012) mousefqso,nutc
+1012       format('!',i3,9x,i6.4,'  ')
+        endif
+     endif  !nqd.eq.1
+
+     if(ndphi.eq.1 .and.iloop.lt.12) then
+        iloop=iloop+1
+        go to 2
+     endif
+     
+     if(ndphi.eq.1 .and.iloop.eq.12) call getdphi(qphi)
+     if(nqd.eq.1) then
+        call sec0(1,tdec)
+        write(*,1013) nsum,nsave,nstandalone,nhsym,tdec
+1013    format('<QuickDecodeDone>',3i4,i6,f6.2)
+        flush(6)
+        open(16,file='tquick.dat',status='unknown',access='append')
+        write(16,1016) nutc,tdec
+1016    format(i4.4,f7.1)
+        close(16)
+     endif
+     call sec0(1,tsec0)
+     if(nhsym.eq.nhsym1 .and. tsec0.gt.3.0) go to 700
+     if(nqd.eq.1 .and. nagain.eq.1) go to 900
+
+     if(nqd.eq.0 .and. bq65) then
+! Do the wideband Q65 decode        
+        do icand=1,ncand
+           if(cand(icand)%iflip.ne.0) cycle    !Do only Q65 candidates here
+           if(candec(icand)) cycle             !Skip if already decoded
+           freq=cand(icand)%f+nkhz_center-48.0-1.27046
+!###! If here at nqd=1, do only candidates at mousefqso +/- ntol
+!###           if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle
+           ikhz=nint(freq)
+           f0=cand(icand)%f
+           call timer('q65b    ',0)
+           call q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
+                xpol,mycall,mygrid,hiscall,hisgrid,mode_q65,f0,fqso,newdat,   &
+                nagain,max_drift,nhsym,ndop00,idec)
+           call timer('q65b    ',1)
+           if(idec.ge.0) candec(icand)=.true.
+        enddo  ! icand
+     endif
+     call sec0(1,tsec0)
+
+  enddo  ! nqd
+
+!  Trim the list and produce a sorted index and sizes of groups.
+!  (Should trimlist remove all but best SNR for given UTC and message content?)
+700 call trimlist(sig,km,ftol,indx,nsiz,nz)
+  done(1:km)=.false.
+  j=0
+  ilatest=-1
+  do n=1,nz
+     ifile0=0
+     do m=1,nsiz(n)
+        i=indx(j+m)
+        ifile=sig(i,1)
+        if(ifile.gt.ifile0 .and.msg(i).ne.blank) then
+           ilatest=i
+           ifile0=ifile
+        endif
+     enddo
+     i=ilatest
+
+     if(i.ge.1) then
+        if(.not.done(i)) then
+           done(i)=.true.
+           nutc=sig(i,2)
+           freq=sig(i,3)
+           sync1=sig(i,4)
+           dt=sig(i,5)
+           npol=nint(57.2957795*sig(i,6))
+           flip=sig(i,7)
+           sync2=sig(i,8)
+           nkv=sig(i,9)
+           nqual=min(sig(i,10),10.0)
+!                  rms0=sig(i,11)
+           do k=1,5
+              a(k)=sig(i,12+k)
+           enddo
+           nhist=sig(i,18)
+           decoded=msg(i)
+           
+           if(flip.lt.0.0) then
+              do i=22,1,-1
+                 if(decoded(i:i).ne.' ') go to 10
+              enddo
+              stop 'Error in message format'
+10            if(i.le.18) decoded(i+2:i+4)='OOO'
+           endif
+           mhz=fcenter                             !... +fadd ???
+           nkHz=nint(freq-foffset)-nfshift
+           f0=mhz+0.001*nkHz
+           ndf=nint(1000.0*(freq-foffset-(nkHz+nfshift)))
+           ndf0=nint(a(1))
+           ndf1=nint(a(2))
+           ndf2=nint(a(3))
+           nsync1=sync1
+
+           s2db=10.0*log10(sync2) - 40             !### empirical ###
+           nsync2=nint(s2db)
+           if(decoded(1:4).eq.'RO  ' .or. decoded(1:4).eq.'RRR  ' .or.  &
+                decoded(1:4).eq.'73  ') then
+              nsync2=nint(1.33*s2db + 2.0)
+           endif
+
+           if(nxant.ne.0) then
+              npol=npol-45
+              if(npol.lt.0) npol=npol+180
+           endif
+
+           call txpol(xpol,decoded,mygrid,npol,nxant,ntxpol,cp)
+
+           cmode='#A'
+           if(mode65.eq.2) cmode='#B'
+           if(mode65.eq.4) cmode='#C'
+           write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1,       &
+                nsync2,nutc,decoded,cp,cmode
+1014       format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,2x,a1,3x,a2)
+           ndecodes=ndecodes+1
+           write(21,1100) f0,ndf,dt,npol,nsync2,nutc,decoded,cp,          &
+                cmode(1:1),cmode(2:2)
+1100       format(f8.3,i5,f5.1,2i4,i5.4,2x,a22,2x,a1,3x,a1,1x,a1)
+        endif
+
+     endif
+     j=j+nsiz(n)
+  enddo  !i=1,km
+
+  write(26,1015) nutc
+1015 format(37x,i6.4,' ')
+  call flush(21)
+  call flush(26)
+  call display(nkeep,ftol)
+  ndecdone=2
+
+900 close(23)
+  call flush(12)
+  ndphi=0
+  mcall3b=mcall3a
+
+  return
+end subroutine map65a
diff --git a/q65w/libm65/mapsim.f90 b/q65w/libm65/mapsim.f90
new file mode 100644
index 000000000..e58485f6c
--- /dev/null
+++ b/q65w/libm65/mapsim.f90
@@ -0,0 +1,229 @@
+program mapsim
+
+! Generate simulated data for testing of MAP65
+
+  parameter (NMAX=60*96000)
+  real*4 d4(4,NMAX)                   !Floating-point data
+  integer*2 id4(4,NMAX)               !i*2 data, dual polarization
+  integer*2 id2(2,NMAX)               !i*2 data, single polarization
+  complex cwave(NMAX)                 !Generated complex waveform (no noise)
+  complex z,zx,zy
+  real*8 fcenter,fsample,samfac,f,dt,twopi,phi,dphi
+  logical bq65
+  character msg0*22,message*22,msgsent*22,arg*8,fname*11,mode*2
+  character*16 msg_list(60)
+  data msg_list/                                          &
+       'W1AAA K2BBB EM00','W2CCC K3DDD EM01','W3EEE K4FFF EM02',   &
+       'W5GGG K6HHH EM03','W7III K8JJJ EM04','W9KKK K0LLL EM05',   &
+       'G0MMM F1NNN JN06','G2OOO F3PPP JN07','G4QQQ F5RRR JN08',   &
+       'G6SSS F7TTT JN09','W1XAA K2XBB EM10','W2XCC K3XDD EM11',   &
+       'W3XEE K4XFF EM12','W5XGG K6XHH EM13','W7XII K8XJJ EM14',   &
+       'W9XKK K0XLL EM15','G0XMM F1XNN JN16','G2XOO F3XPP JN17',   &
+       'G4XQQ F5XRR JN18','G6XSS F7XTT JN19','W1YAA K2YBB EM20',   &
+       'W2YCC K3YDD EM21','W3YEE K4YFF EM22','W5YGG K6YHH EM23',   &
+       'W7YII K8YJJ EM24','W9YKK K0YLL EM25','G0YMM F1YNN JN26',   &
+       'G2YOO F3YPP JN27','G4YQQ F5YRR JN28','G6YSS F7YTT JN29',   &
+       'W1ZAA K2ZBB EM30','W2ZCC K3ZDD EM31','W3ZEE K4ZFF EM32',   &
+       'W5ZGG K6ZHH EM33','W7ZII K8ZJJ EM34','W9ZKK K0ZLL EM35',   &
+       'G0ZMM F1ZNN JN36','G2ZOO F3ZPP JN37','G4ZQQ F5ZRR JN38',   &
+       'G6ZSS F7ZTT JN39','W1AXA K2BXB EM40','W2CXC K3DXD EM41',   &
+       'W3EXE K4FXF EM42','W5GXG K6HXH EM43','W7IXI K8JXJ EM44',   &
+       'W9KXK K0LXL EM45','G0MXM F1NXN JN46','G2OXO F3PXP JN47',   &
+       'G4QXQ F5RXR JN48','G6SXS F7TXT JN49','W1AYA K2BYB EM50',   &
+       'W2CYC K3DYD EM51','W3EYE K4FYF EM52','W5GYG K6HYH EM53',   &
+       'W7IYI K8JYJ EM54','W9KYK K0LYL EM55','G0MYM F1NYN JN56',   &
+       'G2OYO F3PYP JN57','G4QYQ F5RYR JN58','G6SYS F7TYT JN59'/
+  
+  nargs=iargc()
+  if(nargs.ne.10) then
+     print*,'Usage:   mapsim "message"     mode DT  fa fb nsigs pol fDop SNR nfiles'
+     print*,'Example: mapsim "CQ K1ABC FN42" B 2.5 -20 20  21    45  0.0 -20   1'
+     print*,' '
+     print*,'         mode = A B C for JT65; QA-QE for Q65-60A' 
+     print*,'         fa = lowest freq in kHz, relative to center'
+     print*,'         fb = highest freq in kHz, relative to center'
+     print*,'         message = "list" to use callsigns from list'
+     print*,'         pol = -1 to generate a range of polarization angles.'
+     print*,'         SNR = 0 to generate a range of SNRs.'
+     go to 999
+  endif
+
+  call getarg(1,msg0)
+  call getarg(2,mode)                !JT65 sub-mode (A B C QA-QE)
+  call getarg(3,arg)
+  read(arg,*) dt0                    !Time delay
+  call getarg(4,arg)
+  read(arg,*) fa                     !Lowest freq (kHz, relative to fcenter)
+  call getarg(5,arg)
+  read(arg,*) fb                     !Highest freq
+  call getarg(6,arg)
+  read(arg,*) nsigs                  !Number of signals in each file
+  call getarg(7,arg)
+  read(arg,*) npol                   !Polarization in degrees
+  pol=npol
+  call getarg(8,arg)
+  read(arg,*) fdop                   !Doppler spread
+  call getarg(9,arg)
+  read(arg,*) snrdb                  !S/N
+  call getarg(10,arg)
+  read(arg,*) nfiles                 !Number of files
+
+  message=msg0                       !Transmitted message
+  rmsdb=25.
+  rms=10.0**(0.05*rmsdb)
+  fcenter=144.125d0                  !Center frequency (MHz)
+  fsample=96000.d0                   !Sample rate (Hz)
+  dt=1.d0/fsample                    !Sample interval (s)
+  twopi=8.d0*atan(1.d0)
+  rad=360.0/twopi
+  samfac=1.d0
+  bq65=(mode(1:1).eq.'Q')
+  ntone_spacing=1
+  ntxfreq=1270
+  fac=1.0/32767.0
+  if(mode(1:1).eq.'B' .or. mode(2:2).eq.'B') ntone_spacing=2
+  if(mode(1:1).eq.'C' .or. mode(2:2).eq.'C') ntone_spacing=4
+  if(mode(2:2).eq.'D') ntone_spacing=8
+  if(mode(2:2).eq.'E') ntone_spacing=16
+  npts=NMAX
+
+  write(*,1000)
+1000 format('File N Mode  DT    freq   pol   fDop   SNR   Message'/68('-'))
+
+  do ifile=1,nfiles
+     ilist=0
+     nmin=ifile-1
+     if(mode(2:2).eq.' ') nmin=2*nmin
+     write(fname,1002) nmin                      !Create the output filenames
+1002 format('000000_',i4.4)
+     open(10,file=fname//'.iq',access='stream',status='unknown')
+     open(11,file=fname//'.tf2',access='stream',status='unknown')
+
+     call noisegen(d4,npts)                      !Generate Gaussuian noise
+
+     if(msg0(1:4).ne.'list') then
+        if(bq65) then
+           call gen_q65_cwave(message,ntxfreq,ntone_spacing,msgsent,        &
+                cwave,nwave)
+        else
+           call cgen65(message,ntone_spacing,samfac,nsendingsh,msgsent,     &
+                cwave,nwave)
+        endif
+     endif
+
+     if(fdop.gt.0.0) call dopspread(cwave,fdop)
+
+     do isig=1,nsigs
+
+        if(msg0(1:4).eq.'list') then
+           ilist=ilist+1
+           message=msg_list(ilist)
+           if(bq65) then
+              call gen_q65_cwave(message,ntxfreq,ntone_spacing,msgsent,     &
+                   cwave,nwave)
+           else
+              call cgen65(message,ntone_spacing,samfac,nsendingsh,msgsent,  &
+                   cwave,nwave)
+           endif
+        endif
+
+        if(npol.lt.0) pol=(isig-1)*180.0/nsigs
+        a=cos(pol/rad)
+        b=sin(pol/rad)
+        f=1000.0*(fa+fb)/2.0
+        if(nsigs.gt.1) f=1000.0*(fa + (isig-1)*(fb-fa)/(nsigs-1.0))
+        dphi=twopi*f*dt + 0.5*twopi
+
+        snrdbx=snrdb
+        if(snrdb.eq.0.0) snrdbx=-15.0 - 15.0*(isig-1.0)/nsigs
+        sig=sqrt(2.2*2500.0/96000.0) * 10.0**(0.05*snrdbx)
+        write(*,1020) ifile,isig,mode,dt0,0.001*f,nint(pol),fDop,snrdbx,msgsent
+1020    format(i3,i3,2x,a2,f6.2,f8.3,i5,2f7.1,2x,a22)
+
+        phi=0.
+!        i0=fsample*(3.5d0+0.05d0*(isig-1))
+        i0=fsample*(1.d0 + dt0)
+        do i=1,nwave
+           phi=phi + dphi
+           if(phi.lt.-twopi) phi=phi+twopi
+           if(phi.gt.twopi) phi=phi-twopi
+           xphi=phi
+           z=sig*cwave(i)*cmplx(cos(xphi),-sin(xphi))
+           zx=a*z
+           zy=b*z
+           j=i+i0
+           d4(1,j)=d4(1,j) + real(zx)
+           d4(2,j)=d4(2,j) + aimag(zx)
+           d4(3,j)=d4(3,j) + real(zy)
+           d4(4,j)=d4(4,j) + aimag(zy)
+        enddo
+     enddo
+
+     do i=1,npts
+        id4(1,i)=nint(rms*d4(1,i))
+        id4(2,i)=nint(rms*d4(2,i))
+        id4(3,i)=nint(rms*d4(3,i))
+        id4(4,i)=nint(rms*d4(4,i))
+        id2(1,i)=id4(1,i)
+        id2(2,i)=id4(2,i)
+     enddo
+
+     write(10) fcenter,id2(1:2,1:npts)
+     write(11) fcenter,id4(1:4,1:npts)
+     close(10)
+     close(11)
+  enddo
+
+999 end program mapsim
+
+subroutine dopspread(cwave,fspread)
+
+  parameter (NMAX=60*96000)
+  parameter (NFFT=NMAX,NH=NFFT/2)
+  complex cwave(NMAX)
+  complex cspread(0:NMAX-1)
+
+  twopi=8.0*atan(1.0)
+  df=96000.0/nfft
+  cspread(0)=1.0
+  cspread(NH)=0.
+  b=6.0                       !Use truncated Lorenzian shape for fspread
+  do i=1,NH
+     f=i*df
+     x=b*f/fspread
+     z=0.
+     a=0.
+     if(x.lt.3.0) then                          !Cutoff beyond x=3
+        a=sqrt(1.111/(1.0+x*x)-0.1)             !Lorentzian amplitude
+        phi1=twopi*rran()                       !Random phase
+        z=a*cmplx(cos(phi1),sin(phi1))
+     endif
+     cspread(i)=z
+     z=0.
+     if(x.lt.3.0) then                !Same thing for negative freqs
+        phi2=twopi*rran()
+        z=a*cmplx(cos(phi2),sin(phi2))
+     endif
+     cspread(nfft-i)=z
+  enddo
+
+  call four2a(cspread,nfft,1,1,1)             !Transform to time domain
+
+  sum=0.
+  do i=0,nfft-1
+     p=real(cspread(i))**2 + aimag(cspread(i))**2
+     sum=sum+p
+  enddo
+  avep=sum/nfft
+  fac=sqrt(1.0/avep)
+  cspread=fac*cspread                   !Normalize to constant avg power
+  cwave=cspread*cwave                   !Apply Rayleigh fading
+  
+!  do i=0,nfft-1
+!     p=real(cspread(i))**2 + aimag(cspread(i))**2
+!     write(14,3010) i,p,cspread(i)
+!3010 format(i8,3f12.6)
+!  enddo
+
+  return
+end subroutine dopspread
diff --git a/q65w/libm65/moon2.f90 b/q65w/libm65/moon2.f90
new file mode 100644
index 000000000..9fa72f1df
--- /dev/null
+++ b/q65w/libm65/moon2.f90
@@ -0,0 +1,163 @@
+subroutine moon2(y,m,Day,UT,lon,lat,RA,Dec,topRA,topDec,LST,HA,Az,El,dist)
+
+  implicit none
+
+  integer y                           !Year
+  integer m                           !Month
+  integer Day                         !Day
+  real*8 UT                           !UTC in hours
+  real*8 RA,Dec                       !RA and Dec of moon
+
+! NB: Double caps are single caps in the writeup.
+
+  real*8 NN                           !Longitude of ascending node
+  real*8 i                            !Inclination to the ecliptic
+  real*8 w                            !Argument of perigee
+  real*8 a                            !Semi-major axis
+  real*8 e                            !Eccentricity
+  real*8 MM                           !Mean anomaly
+
+  real*8 v                            !True anomaly
+  real*8 EE                           !Eccentric anomaly
+  real*8 ecl                          !Obliquity of the ecliptic
+
+  real*8 d                            !Ephemeris time argument in days
+  real*8 r                            !Distance to sun, AU
+  real*8 xv,yv                        !x and y coords in ecliptic
+  real*8 lonecl,latecl                !Ecliptic long and lat of moon
+  real*8 xg,yg,zg                     !Ecliptic rectangular coords
+  real*8 Ms                           !Mean anomaly of sun
+  real*8 ws                           !Argument of perihelion of sun
+  real*8 Ls                           !Mean longitude of sun (Ns=0)
+  real*8 Lm                           !Mean longitude of moon
+  real*8 DD                           !Mean elongation of moon
+  real*8 FF                           !Argument of latitude for moon
+  real*8 xe,ye,ze                     !Equatorial geocentric coords of moon
+  real*8 mpar                         !Parallax of moon (r_E / d)
+  real*8 lat,lon                      !Station coordinates on earth
+  real*8 gclat                        !Geocentric latitude
+  real*8 rho                          !Earth radius factor
+  real*8 GMST0,LST,HA
+  real*8 g
+  real*8 topRA,topDec                 !Topocentric coordinates of Moon
+  real*8 Az,El
+  real*8 dist
+
+  real*8 rad,twopi,pi,pio2
+  data rad/57.2957795131d0/,twopi/6.283185307d0/
+
+  d=367*y - 7*(y+(m+9)/12)/4 + 275*m/9 + Day - 730530 + UT/24.d0
+  ecl = 23.4393d0 - 3.563d-7 * d
+
+! Orbital elements for Moon:  
+  NN = 125.1228d0 - 0.0529538083d0 * d
+  i = 5.1454d0
+  w = mod(318.0634d0 + 0.1643573223d0 * d + 360000.d0,360.d0)
+  a = 60.2666d0
+  e = 0.054900d0
+  MM = mod(115.3654d0 + 13.0649929509d0 * d + 360000.d0,360.d0)
+
+  EE = MM + e*rad*sin(MM/rad) * (1.d0 + e*cos(MM/rad))
+  EE = EE - (EE - e*rad*sin(EE/rad)-MM) / (1.d0 - e*cos(EE/rad))
+  EE = EE - (EE - e*rad*sin(EE/rad)-MM) / (1.d0 - e*cos(EE/rad))
+
+  xv = a * (cos(EE/rad) - e)
+  yv = a * (sqrt(1.d0-e*e) * sin(EE/rad))
+
+  v = mod(rad*atan2(yv,xv)+720.d0,360.d0)
+  r = sqrt(xv*xv + yv*yv)
+
+! Get geocentric position in ecliptic rectangular coordinates:
+
+  xg = r * (cos(NN/rad)*cos((v+w)/rad)-sin(NN/rad)*sin((v+w)/rad)*cos(i/rad))
+  yg = r * (sin(NN/rad)*cos((v+w)/rad)+cos(NN/rad)*sin((v+w)/rad)*cos(i/rad))
+  zg = r * (sin((v+w)/rad)*sin(i/rad))
+
+! Ecliptic longitude and latitude of moon:
+  lonecl = mod(rad*atan2(yg/rad,xg/rad)+720.d0,360.d0)
+  latecl = rad*atan2(zg/rad,sqrt(xg*xg + yg*yg)/rad)
+
+! Now include orbital perturbations:
+  Ms = mod(356.0470d0 + 0.9856002585d0 * d + 3600000.d0,360.d0)
+  ws = 282.9404d0 + 4.70935d-5*d
+  Ls = mod(Ms + ws + 720.d0,360.d0)
+  Lm = mod(MM + w + NN+720.d0,360.d0)
+  DD = mod(Lm - Ls + 360.d0,360.d0)
+  FF = mod(Lm - NN + 360.d0,360.d0)
+
+  lonecl = lonecl                                &
+       - 1.274d0 * sin((MM-2.d0*DD)/rad)         &
+       + 0.658d0 * sin(2.d0*DD/rad)              &
+       - 0.186d0 * sin(Ms/rad)                   &
+       - 0.059d0 * sin((2.d0*MM-2.d0*DD)/rad)    &
+       - 0.057d0 * sin((MM-2.d0*DD+Ms)/rad)      &
+       + 0.053d0 * sin((MM+2.d0*DD)/rad)         &
+       + 0.046d0 * sin((2.d0*DD-Ms)/rad)         &
+       + 0.041d0 * sin((MM-Ms)/rad)              &
+       - 0.035d0 * sin(DD/rad)                   &
+       - 0.031d0 * sin((MM+Ms)/rad)              &
+       - 0.015d0 * sin((2.d0*FF-2.d0*DD)/rad)    &
+       + 0.011d0 * sin((MM-4.d0*DD)/rad)
+
+  latecl = latecl                                &
+       - 0.173d0 * sin((FF-2.d0*DD)/rad)         &
+       - 0.055d0 * sin((MM-FF-2.d0*DD)/rad)      &
+       - 0.046d0 * sin((MM+FF-2.d0*DD)/rad)      &
+       + 0.033d0 * sin((FF+2.d0*DD)/rad)         &
+       + 0.017d0 * sin((2.d0*MM+FF)/rad)
+
+  r = 60.36298d0                                 &
+       - 3.27746d0*cos(MM/rad)                   &
+       - 0.57994d0*cos((MM-2.d0*DD)/rad)         &
+       - 0.46357d0*cos(2.d0*DD/rad)              &
+       - 0.08904d0*cos(2.d0*MM/rad)              &
+       + 0.03865d0*cos((2.d0*MM-2.d0*DD)/rad)    &
+       - 0.03237d0*cos((2.d0*DD-Ms)/rad)         &
+       - 0.02688d0*cos((MM+2.d0*DD)/rad)         &
+       - 0.02358d0*cos((MM-2.d0*DD+Ms)/rad)      &
+       - 0.02030d0*cos((MM-Ms)/rad)              &
+       + 0.01719d0*cos(DD/rad)                   &
+       + 0.01671d0*cos((MM+Ms)/rad)
+  
+  dist=r*6378.140d0
+
+! Geocentric coordinates:
+! Rectangular ecliptic coordinates of the moon:
+
+  xg = r * cos(lonecl/rad)*cos(latecl/rad)
+  yg = r * sin(lonecl/rad)*cos(latecl/rad)
+  zg = r *                 sin(latecl/rad)
+
+! Rectangular equatorial coordinates of the moon:
+  xe = xg
+  ye = yg*cos(ecl/rad) - zg*sin(ecl/rad)
+  ze = yg*sin(ecl/rad) + zg*cos(ecl/rad)
+   
+! Right Ascension, Declination:
+  RA = mod(rad*atan2(ye,xe)+360.d0,360.d0)
+  Dec = rad*atan2(ze,sqrt(xe*xe + ye*ye))
+
+! Now convert to topocentric system:
+  mpar=rad*asin(1.d0/r)
+!     alt_topoc = alt_geoc - mpar*cos(alt_geoc)
+  gclat = lat - 0.1924d0*sin(2.d0*lat/rad)
+  rho = 0.99883d0 + 0.00167d0*cos(2.d0*lat/rad)
+  GMST0 = (Ls + 180.d0)/15.d0
+  LST = mod(GMST0+UT+lon/15.d0+48.d0,24.d0)    !LST in hours
+  HA = 15.d0*LST - RA                          !HA in degrees
+  g = rad*atan(tan(gclat/rad)/cos(HA/rad))
+  topRA = RA - mpar*rho*cos(gclat/rad)*sin(HA/rad)/cos(Dec/rad)
+  topDec = Dec - mpar*rho*sin(gclat/rad)*sin((g-Dec)/rad)/sin(g/rad)
+
+  HA = 15.d0*LST - topRA                       !HA in degrees
+  if(HA.gt.180.d0) HA=HA-360.d0
+  if(HA.lt.-180.d0) HA=HA+360.d0
+
+  pi=0.5d0*twopi
+  pio2=0.5d0*pi
+  call dcoord(pi,pio2-lat/rad,0.d0,lat/rad,ha*twopi/360,topDec/rad,az,el)
+  Az=az*rad
+  El=El*rad
+
+  return
+end subroutine moon2
diff --git a/q65w/libm65/moondop.f90 b/q65w/libm65/moondop.f90
new file mode 100644
index 000000000..096c3128e
--- /dev/null
+++ b/q65w/libm65/moondop.f90
@@ -0,0 +1,72 @@
+subroutine MoonDop(nyear,month,nday,uth4,lon4,lat4,RAMoon4,DecMoon4,   &
+     LST4,HA4,AzMoon4,ElMoon4,vr4,dist4)
+
+  implicit real*8 (a-h,o-z)
+  real*4 uth4                    !UT in hours
+  real*4 lon4                    !West longitude, degrees
+  real*4 lat4                    !Latitude, degrees
+  real*4 RAMoon4                 !Topocentric RA of moon, hours
+  real*4 DecMoon4                !Topocentric Dec of Moon, degrees
+  real*4 LST4                    !Locat sidereal time, hours
+  real*4 HA4                     !Local Hour angle, degrees
+  real*4 AzMoon4                 !Topocentric Azimuth of moon, degrees
+  real*4 ElMoon4                 !Topocentric Elevation of moon, degrees
+  real*4 vr4                     !Radial velocity of moon wrt obs, km/s
+  real*4 dist4                   !Echo time, seconds
+
+  real*8 LST
+  real*8 RME(6)                  !Vector from Earth center to Moon
+  real*8 RAE(6)                  !Vector from Earth center to Obs
+  real*8 RMA(6)                  !Vector from Obs to Moon
+  real*8 rme0(6)
+  logical km
+
+  data rad/57.2957795130823d0/,twopi/6.28310530717959d0/
+
+  km=.true.
+  dlat=lat4/rad
+  dlong1=lon4/rad
+  elev1=200.d0
+  call geocentric(dlat,elev1,dlat1,erad1)
+
+  dt=100.d0                       !For numerical derivative, in seconds
+  UT=uth4
+
+! NB: geodetic latitude used here, but geocentric latitude used when 
+! determining Earth-rotation contribution to Doppler.
+
+  call moon2(nyear,month,nDay,UT-dt/3600.d0,dlong1*rad,dlat*rad,     &
+       RA,Dec,topRA,topDec,LST,HA,Az0,El0,dist)
+  call toxyz(RA/rad,Dec/rad,dist,rme0)      !Convert to rectangular coords
+
+  call moon2(nyear,month,nDay,UT,dlong1*rad,dlat*rad,                &
+       RA,Dec,topRA,topDec,LST,HA,Az,El,dist)
+  call toxyz(RA/rad,Dec/rad,dist,rme)       !Convert to rectangular coords
+
+  phi=LST*twopi/24.d0
+  call toxyz(phi,dlat1,erad1,rae)           !Gencentric numbers used here!
+  radps=twopi/(86400.d0/1.002737909d0)
+  rae(4)=-rae(2)*radps                      !Vel of Obs wrt Earth center
+  rae(5)=rae(1)*radps
+  rae(6)=0.d0
+
+  do i=1,3
+     rme(i+3)=(rme(i)-rme0(i))/dt
+     rma(i)=rme(i)-rae(i)
+     rma(i+3)=rme(i+3)-rae(i+3)
+  enddo
+
+  call fromxyz(rma,alpha1,delta1,dtopo0)     !Get topocentric coords
+  vr=dot(rma(4),rma)/dtopo0
+
+  RAMoon4=topRA
+  DecMoon4=topDec
+  LST4=LST
+  HA4=HA
+  AzMoon4=Az
+  ElMoon4=El
+  vr4=vr
+  dist4=dist
+
+  return
+end subroutine MoonDop
diff --git a/q65w/libm65/msgs.txt b/q65w/libm65/msgs.txt
new file mode 100644
index 000000000..cb0630423
--- /dev/null
+++ b/q65w/libm65/msgs.txt
@@ -0,0 +1,60 @@
+W1AAA K2BBB EM00
+W2CCC K3DDD EM01
+W3EEE K4FFF EM02
+W5GGG K6HHH EM03
+W7III K8JJJ EM04
+W9KKK K0LLL EM05
+G0MMM F1NNN JN06
+G2OOO F3PPP JN07
+G4QQQ F5RRR JN08
+G6SSS F7TTT JN09
+W1XAA K2XBB EM10
+W2XCC K3XDD EM11
+W3XEE K4XFF EM12
+W5XGG K6XHH EM13
+W7XII K8XJJ EM14
+W9XKK K0XLL EM15
+G0XMM F1XNN JN16
+G2XOO F3XPP JN17
+G4XQQ F5XRR JN18
+G6XSS F7XTT JN19
+W1YAA K2YBB EM20
+W2YCC K3YDD EM21
+W3YEE K4YFF EM22
+W5YGG K6YHH EM23
+W7YII K8YJJ EM24
+W9YKK K0YLL EM25
+G0YMM F1YNN JN26
+G2YOO F3YPP JN27
+G4YQQ F5YRR JN28
+G6YSS F7YTT JN29
+W1ZAA K2ZBB EM30
+W2ZCC K3ZDD EM31
+W3ZEE K4ZFF EM32
+W5ZGG K6ZHH EM33
+W7ZII K8ZJJ EM34
+W9ZKK K0ZLL EM35
+G0ZMM F1ZNN JN36
+G2ZOO F3ZPP JN37
+G4ZQQ F5ZRR JN38
+G6ZSS F7ZTT JN39
+W1AXA K2BXB EM40
+W2CXC K3DXD EM41
+W3EXE K4FXF EM42
+W5GXG K6HXH EM43
+W7IXI K8JXJ EM44
+W9KXK K0LXL EM45
+G0MXM F1NXN JN46
+G2OXO F3PXP JN47
+G4QXQ F5RXR JN48
+G6SXS F7TXT JN49
+W1AYA K2BYB EM50
+W2CYC K3DYD EM51
+W3EYE K4FYF EM52
+W5GYG K6HYH EM53
+W7IYI K8JYJ EM54
+W9KYK K0LYL EM55
+G0MYM F1NYN JN56
+G2OYO F3PYP JN57
+G4QYQ F5RYR JN58
+G6SYS F7TYT JN59
diff --git a/q65w/libm65/nchar.f90 b/q65w/libm65/nchar.f90
new file mode 100644
index 000000000..21593bd13
--- /dev/null
+++ b/q65w/libm65/nchar.f90
@@ -0,0 +1,23 @@
+function nchar(c)
+
+! Convert ascii number, letter, or space to 0-36 for callsign packing.
+
+  character c*1
+
+  n=0                                    !Silence compiler warning
+  if(c.ge.'0' .and. c.le.'9') then
+     n=ichar(c)-ichar('0')
+  else if(c.ge.'A' .and. c.le.'Z') then
+     n=ichar(c)-ichar('A') + 10
+  else if(c.ge.'a' .and. c.le.'z') then
+     n=ichar(c)-ichar('a') + 10
+  else if(c.ge.' ') then
+     n=36
+  else
+     Print*,'Invalid character in callsign ',c,' ',ichar(c)
+     call exit(1)
+  endif
+  nchar=n
+
+  return
+end function nchar
diff --git a/q65w/libm65/njunk.f90 b/q65w/libm65/njunk.f90
new file mode 100644
index 000000000..319fb5ab7
--- /dev/null
+++ b/q65w/libm65/njunk.f90
@@ -0,0 +1 @@
+  parameter(NJUNK=40)
diff --git a/q65w/libm65/noisegen.f90 b/q65w/libm65/noisegen.f90
new file mode 100644
index 000000000..65d943161
--- /dev/null
+++ b/q65w/libm65/noisegen.f90
@@ -0,0 +1,13 @@
+subroutine noisegen(d4,nmax)
+
+  real*4 d4(4,nmax)
+
+  do i=1,nmax
+     d4(1,i)=gran()
+     d4(2,i)=gran()
+     d4(3,i)=gran()
+     d4(4,i)=gran()
+  enddo
+
+  return
+end subroutine noisegen
diff --git a/q65w/libm65/packjt.f90 b/q65w/libm65/packjt.f90
new file mode 100644
index 000000000..c1fc0089d
--- /dev/null
+++ b/q65w/libm65/packjt.f90
@@ -0,0 +1,996 @@
+module packjt
+
+  contains
+
+subroutine packbits(dbits,nsymd,m0,sym)
+
+ ! Pack 0s and 1s from dbits() into sym() with m0 bits per word.
+ ! NB: nsymd is the number of packed output words.
+
+   integer sym(:)
+   integer*1 dbits(:)
+
+   k=0
+   do i=1,nsymd
+      n=0
+      do j=1,m0
+         k=k+1
+         m=dbits(k)
+         n=ior(ishft(n,1),m)
+      enddo
+      sym(i)=n
+   enddo
+
+   return
+ end subroutine packbits
+
+ subroutine unpackbits(sym,nsymd,m0,dbits)
+
+ ! Unpack bits from sym() into dbits(), one bit per byte.
+ ! NB: nsymd is the number of input words, and m0 their length.
+ ! there will be m0*nsymd output bytes, each 0 or 1.
+
+   integer sym(:)
+   integer*1 dbits(:)
+
+   k=0
+   do i=1,nsymd
+      mask=ishft(1,m0-1)
+      do j=1,m0
+         k=k+1
+         dbits(k)=0
+         if(iand(mask,sym(i)).ne.0) dbits(k)=1
+         mask=ishft(mask,-1)
+      enddo
+   enddo
+
+   return
+ end subroutine unpackbits
+
+ subroutine packcall(callsign,ncall,text)
+
+ ! Pack a valid callsign into a 28-bit integer.
+
+   parameter (NBASE=37*36*10*27*27*27)
+   character callsign*6,c*1,tmp*6
+   logical text
+
+   text=.false.
+
+ ! Work-around for Swaziland prefix:
+   if(callsign(1:4).eq.'3DA0') callsign='3D0'//callsign(5:6)
+
+   if(callsign(1:3).eq.'CQ ') then
+      ncall=NBASE + 1
+      if(callsign(4:4).ge.'0' .and. callsign(4:4).le.'9' .and.        &
+           callsign(5:5).ge.'0' .and. callsign(5:5).le.'9' .and.      &
+           callsign(6:6).ge.'0' .and. callsign(6:6).le.'9') then
+         read(callsign(4:6),*) nfreq
+         ncall=NBASE + 3 + nfreq
+      endif
+      return
+   else if(callsign(1:4).eq.'QRZ ') then
+      ncall=NBASE + 2
+      return
+   else if(callsign(1:3).eq.'DE ') then
+      ncall=267796945
+      return
+   endif
+
+   tmp='      '
+   if(callsign(3:3).ge.'0' .and. callsign(3:3).le.'9') then
+      tmp=callsign
+   else if(callsign(2:2).ge.'0' .and. callsign(2:2).le.'9') then
+      if(callsign(6:6).ne.' ') then
+         text=.true.
+         return
+      endif
+      tmp=' '//callsign(:5)
+   else
+      text=.true.
+      return
+   endif
+
+   do i=1,6
+      c=tmp(i:i)
+      if(c.ge.'a' .and. c.le.'z')                                &
+           tmp(i:i)=char(ichar(c)-ichar('a')+ichar('A'))
+   enddo
+
+   n1=0
+   if((tmp(1:1).ge.'A'.and.tmp(1:1).le.'Z').or.tmp(1:1).eq.' ') n1=1
+   if(tmp(1:1).ge.'0' .and. tmp(1:1).le.'9') n1=1
+   n2=0
+   if(tmp(2:2).ge.'A' .and. tmp(2:2).le.'Z') n2=1
+   if(tmp(2:2).ge.'0' .and. tmp(2:2).le.'9') n2=1
+   n3=0
+   if(tmp(3:3).ge.'0' .and. tmp(3:3).le.'9') n3=1
+   n4=0
+   if((tmp(4:4).ge.'A'.and.tmp(4:4).le.'Z').or.tmp(4:4).eq.' ') n4=1
+   n5=0
+   if((tmp(5:5).ge.'A'.and.tmp(5:5).le.'Z').or.tmp(5:5).eq.' ') n5=1
+   n6=0
+   if((tmp(6:6).ge.'A'.and.tmp(6:6).le.'Z').or.tmp(6:6).eq.' ') n6=1
+
+   if(n1+n2+n3+n4+n5+n6 .ne. 6) then
+      text=.true.
+      return 
+   endif
+
+   ncall=nchar(tmp(1:1))
+   ncall=36*ncall+nchar(tmp(2:2))
+   ncall=10*ncall+nchar(tmp(3:3))
+   ncall=27*ncall+nchar(tmp(4:4))-10
+   ncall=27*ncall+nchar(tmp(5:5))-10
+   ncall=27*ncall+nchar(tmp(6:6))-10
+
+   return
+ end subroutine packcall
+
+ subroutine unpackcall(ncall,word,iv2,psfx)
+
+   parameter (NBASE=37*36*10*27*27*27)
+   character word*12,c*37,psfx*4
+
+   data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ '/
+
+   word='......' 
+   psfx='    '
+   n=ncall
+   iv2=0
+   if(n.ge.262177560) go to 20
+   word='......'
+ !  if(n.ge.262177560) go to 999            !Plain text message ...
+   i=mod(n,27)+11
+   word(6:6)=c(i:i)
+   n=n/27
+   i=mod(n,27)+11
+   word(5:5)=c(i:i)
+   n=n/27
+   i=mod(n,27)+11
+   word(4:4)=c(i:i)
+   n=n/27
+   i=mod(n,10)+1
+   word(3:3)=c(i:i)
+   n=n/10
+   i=mod(n,36)+1
+   word(2:2)=c(i:i)
+   n=n/36
+   i=n+1
+   word(1:1)=c(i:i)
+   do i=1,4
+      if(word(i:i).ne.' ') go to 10
+   enddo
+   go to 999
+ 10 word=word(i:)
+   go to 999
+
+ 20 if(n.ge.267796946) go to 999
+
+ ! We have a JT65v2 message
+   if((n.ge.262178563) .and. (n.le.264002071)) then
+ ! CQ with prefix
+      iv2=1
+      n=n-262178563
+      i=mod(n,37)+1
+      psfx(4:4)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(3:3)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(2:2)=c(i:i)
+      n=n/37
+      i=n+1
+      psfx(1:1)=c(i:i)
+
+   else if((n.ge.264002072) .and. (n.le.265825580)) then
+ ! QRZ with prefix
+      iv2=2
+      n=n-264002072
+      i=mod(n,37)+1
+      psfx(4:4)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(3:3)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(2:2)=c(i:i)
+      n=n/37
+      i=n+1
+      psfx(1:1)=c(i:i)
+
+   else if((n.ge.265825581) .and. (n.le.267649089)) then
+ ! DE with prefix
+      iv2=3
+      n=n-265825581
+      i=mod(n,37)+1
+      psfx(4:4)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(3:3)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(2:2)=c(i:i)
+      n=n/37
+      i=n+1
+      psfx(1:1)=c(i:i)
+
+   else if((n.ge.267649090) .and. (n.le.267698374)) then
+ ! CQ with suffix
+      iv2=4
+      n=n-267649090
+      i=mod(n,37)+1
+      psfx(3:3)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(2:2)=c(i:i)
+      n=n/37
+      i=n+1
+      psfx(1:1)=c(i:i)
+
+   else if((n.ge.267698375) .and. (n.le.267747659)) then
+ ! QRZ with suffix
+      iv2=5
+      n=n-267698375
+      i=mod(n,37)+1
+      psfx(3:3)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(2:2)=c(i:i)
+      n=n/37
+      i=n+1
+      psfx(1:1)=c(i:i)
+
+   else if((n.ge.267747660) .and. (n.le.267796944)) then
+ ! DE with suffix
+      iv2=6
+      n=n-267747660
+      i=mod(n,37)+1
+      psfx(3:3)=c(i:i)
+      n=n/37
+      i=mod(n,37)+1
+      psfx(2:2)=c(i:i)
+      n=n/37
+      i=n+1
+      psfx(1:1)=c(i:i)
+
+   else if(n.eq.267796945) then
+ ! DE with no prefix or suffix
+      iv2=7
+      psfx = '    '
+   endif
+
+ 999 if(word(1:3).eq.'3D0') word='3DA0'//word(4:)
+
+   return
+ end subroutine unpackcall
+
+ subroutine packgrid(grid,ng,text)
+
+   parameter (NGBASE=180*180)
+   character*4 grid
+   character*1 c1
+   logical text
+
+   text=.false.
+   if(grid.eq.'    ') go to 90               !Blank grid is OK
+
+ ! First, handle signal reports in the original range, -01 to -30 dB
+   if(grid(1:1).eq.'-') then
+      read(grid(2:3),*,err=800,end=800) n
+      if(n.ge.1 .and. n.le.30) then
+         ng=NGBASE+1+n
+         go to 900
+      endif
+      go to 10
+   else if(grid(1:2).eq.'R-') then
+      read(grid(3:4),*,err=800,end=800) n
+      if(n.ge.1 .and. n.le.30) then
+         ng=NGBASE+31+n
+         go to 900
+      endif
+      go to 10
+ ! Now check for RO, RRR, or 73 in the message field normally used for grid
+   else if(grid(1:4).eq.'RO  ') then
+      ng=NGBASE+62
+      go to 900
+   else if(grid(1:4).eq.'RRR ') then
+      ng=NGBASE+63
+      go to 900
+   else if(grid(1:4).eq.'73  ') then
+      ng=NGBASE+64
+      go to 900
+   endif
+
+ ! Now check for extended-range signal reports: -50 to -31, and 0 to +49.
+ 10 n=99
+   c1=grid(1:1)
+   read(grid,*,err=20,end=20) n
+   go to 30
+ 20 read(grid(2:4),*,err=30,end=30) n
+ 30 if(n.ge.-50 .and. n.le.49) then
+      if(c1.eq.'R') then
+         write(grid,1002) n+50
+ 1002    format('LA',i2.2)
+      else
+         write(grid,1003) n+50
+ 1003    format('KA',i2.2)
+      endif
+      go to 40
+   endif
+
+ ! Maybe it's free text ?
+   if(grid(1:1).lt.'A' .or. grid(1:1).gt.'R') text=.true.
+   if(grid(2:2).lt.'A' .or. grid(2:2).gt.'R') text=.true.
+   if(grid(3:3).lt.'0' .or. grid(3:3).gt.'9') text=.true.
+   if(grid(4:4).lt.'0' .or. grid(4:4).gt.'9') text=.true.
+   if(text) go to 900
+
+ ! OK, we have a properly formatted grid locator
+ 40 call grid2deg(grid//'mm',dlong,dlat)
+   long=int(dlong)
+   lat=int(dlat+ 90.0)
+   ng=((long+180)/2)*180 + lat
+   go to 900
+
+ 90 ng=NGBASE + 1
+   go to 900
+
+ 800 text=.true.
+ 900 continue
+
+   return
+ end subroutine packgrid
+
+ subroutine unpackgrid(ng,grid)
+
+   parameter (NGBASE=180*180)
+   character grid*4,grid6*6
+
+   grid='    '
+   if(ng.ge.32400) go to 10
+   dlat=mod(ng,180)-90
+   dlong=(ng/180)*2 - 180 + 2
+   call deg2grid(dlong,dlat,grid6)
+   grid=grid6(:4)
+   if(grid(1:2).eq.'KA') then
+      read(grid(3:4),*) n
+      n=n-50
+      write(grid,1001) n
+ 1001 format(i3.2)
+      if(grid(1:1).eq.' ') grid(1:1)='+'
+   else if(grid(1:2).eq.'LA') then
+      read(grid(3:4),*) n
+      n=n-50
+      write(grid,1002) n
+ 1002 format('R',i3.2)
+      if(grid(2:2).eq.' ') grid(2:2)='+'
+   endif
+   go to 900
+
+ 10 n=ng-NGBASE-1
+   if(n.ge.1 .and.n.le.30) then
+      write(grid,1012) -n
+ 1012 format(i3.2)
+   else if(n.ge.31 .and.n.le.60) then
+      n=n-30
+      write(grid,1022) -n
+ 1022 format('R',i3.2)
+   else if(n.eq.61) then
+      grid='RO'
+   else if(n.eq.62) then
+      grid='RRR'
+   else if(n.eq.63) then
+      grid='73'
+   endif
+
+ 900 return
+ end subroutine unpackgrid
+
+ subroutine packmsg(msg0,dat,itype)
+
+ ! Packs a JT4/JT9/JT65 message into twelve 6-bit symbols
+
+ ! itype Message Type
+ !--------------------
+ !   1   Standardd message
+ !   2   Type 1 prefix
+ !   3   Type 1 suffix
+ !   4   Type 2 prefix
+ !   5   Type 2 suffix
+ !   6   Free text
+ !  -1   Does not decode correctly
+
+   parameter (NBASE=37*36*10*27*27*27)
+   parameter (NBASE2=262178562)
+   character*22 msg0,msg
+   integer dat(:)
+   character*12 c1,c2
+   character*4 c3
+   character*6 grid6
+   logical text1,text2,text3
+
+   msg=msg0
+   itype=1
+   call fmtmsg(msg,iz)
+
+   if(msg(1:6).eq.'CQ DX ') msg(3:3)='9'
+   if(msg(1:3).eq."CQ " .and.                                         &
+        msg(4:4).ge.'A' .and. msg(4:4).le.'Z' .and.                   &
+        msg(5:5).ge.'A' .and. msg(5:5).le.'Z' .and.                   &
+        msg(6:6).eq.' ') msg='E9'//msg(4:)
+   
+ ! See if it's a CQ message
+   if(msg(1:3).eq.'CQ ') then
+      i=3
+ ! ... and if so, does it have a reply frequency?
+      if(msg(4:4).ge.'0' .and. msg(4:4).le.'9' .and.                  &
+           msg(5:5).ge.'0' .and. msg(5:5).le.'9' .and.                &
+           msg(6:6).ge.'0' .and. msg(6:6).le.'9') i=7
+      go to 1
+   endif
+
+   do i=1,22
+      if(msg(i:i).eq.' ') go to 1       !Get 1st blank
+   enddo
+   go to 10                             !Consider msg as plain text
+
+ 1 ia=i
+   c1=msg(1:ia-1)
+   do i=ia+1,22
+      if(msg(i:i).eq.' ') go to 2       !Get 2nd blank
+   enddo
+   go to 10                             !Consider msg as plain text
+
+ 2 ib=i
+   c2=msg(ia+1:ib-1)
+
+   do i=ib+1,22
+      if(msg(i:i).eq.' ') go to 3       !Get 3rd blank
+   enddo
+   go to 10                             !Consider msg as plain text
+
+ 3 ic=i
+   c3='    '
+   if(ic.ge.ib+1) c3=msg(ib+1:ic)
+   if(c3.eq.'OOO ') c3='    '           !Strip out the OOO flag
+   call getpfx1(c1,k1,nv2a)
+   if(nv2a.ge.4) go to 10
+   call packcall(c1,nc1,text1)
+   if(text1) go to 10
+   call getpfx1(c2,k2,nv2b)
+   call packcall(c2,nc2,text2)
+   if(text2) go to 10
+   if(nv2a.eq.2 .or. nv2a.eq.3 .or. nv2b.eq.2 .or. nv2b.eq.3) then
+      if(k1.lt.0 .or. k2.lt.0 .or. k1*k2.ne.0) go to 10
+      if(k2.gt.0) k2=k2+450
+      k=max(k1,k2)
+      if(k.gt.0) then
+         call k2grid(k,grid6)
+         c3=grid6(:4)
+      endif
+   endif
+   call packgrid(c3,ng,text3)
+
+   if(nv2a.lt.4 .and. nv2b.lt.4 .and. (.not.text1) .and. (.not.text2) .and.  &
+        (.not.text3)) go to 20
+
+   nc1=0
+   if(nv2b.eq.4) then
+      if(c1(1:3).eq.'CQ ')  nc1=262178563 + k2
+      if(c1(1:4).eq.'QRZ ') nc1=264002072 + k2 
+      if(c1(1:3).eq.'DE ')  nc1=265825581 + k2
+   else if(nv2b.eq.5) then
+      if(c1(1:3).eq.'CQ ')  nc1=267649090 + k2
+      if(c1(1:4).eq.'QRZ ') nc1=267698375 + k2
+      if(c1(1:3).eq.'DE ')  nc1=267747660 + k2
+   endif
+   if(nc1.ne.0) go to 20
+
+ ! The message will be treated as plain text.
+ 10 itype=6
+   call packtext(msg,nc1,nc2,ng)
+   ng=ng+32768
+
+ ! Encode data into 6-bit words
+ 20 continue
+   if(itype.ne.6) itype=max(nv2a,nv2b)
+   dat(1)=iand(ishft(nc1,-22),63)                !6 bits
+   dat(2)=iand(ishft(nc1,-16),63)                !6 bits
+   dat(3)=iand(ishft(nc1,-10),63)                !6 bits
+   dat(4)=iand(ishft(nc1, -4),63)                !6 bits
+   dat(5)=4*iand(nc1,15)+iand(ishft(nc2,-26),3)  !4+2 bits
+   dat(6)=iand(ishft(nc2,-20),63)                !6 bits
+   dat(7)=iand(ishft(nc2,-14),63)                !6 bits
+   dat(8)=iand(ishft(nc2, -8),63)                !6 bits
+   dat(9)=iand(ishft(nc2, -2),63)                !6 bits
+   dat(10)=16*iand(nc2,3)+iand(ishft(ng,-12),15) !2+4 bits
+   dat(11)=iand(ishft(ng,-6),63)
+   dat(12)=iand(ng,63)
+
+   return
+ end subroutine packmsg
+
+ subroutine unpackmsg(dat,msg)
+
+   parameter (NBASE=37*36*10*27*27*27)
+   parameter (NGBASE=180*180)
+   integer dat(:)
+   character c1*12,c2*12,grid*4,msg*22,grid6*6,psfx*4,junk2*4
+   logical cqnnn
+
+   cqnnn=.false.
+   nc1=ishft(dat(1),22) + ishft(dat(2),16) + ishft(dat(3),10)+         &
+        ishft(dat(4),4) + iand(ishft(dat(5),-2),15)
+
+   nc2=ishft(iand(dat(5),3),26) + ishft(dat(6),20) +                   &
+        ishft(dat(7),14) + ishft(dat(8),8) + ishft(dat(9),2) +         &
+        iand(ishft(dat(10),-4),3)
+
+   ng=ishft(iand(dat(10),15),12) + ishft(dat(11),6) + dat(12)
+
+   if(ng.ge.32768) then
+      call unpacktext(nc1,nc2,ng,msg)
+      go to 100
+   endif
+
+   call unpackcall(nc1,c1,iv2,psfx)
+   if(iv2.eq.0) then
+ ! This is an "original JT65" message
+      if(nc1.eq.NBASE+1) c1='CQ    '
+      if(nc1.eq.NBASE+2) c1='QRZ   '
+      nfreq=nc1-NBASE-3
+      if(nfreq.ge.0 .and. nfreq.le.999) then
+         write(c1,1002) nfreq
+ 1002    format('CQ ',i3.3)
+         cqnnn=.true.
+      endif
+   endif
+
+   call unpackcall(nc2,c2,junk1,junk2)
+   call unpackgrid(ng,grid)
+
+   if(iv2.gt.0) then
+ ! This is a JT65v2 message
+      do i=1,4
+         if(ichar(psfx(i:i)).eq.0) psfx(i:i)=' '
+      enddo
+
+      n1=len_trim(psfx)
+      n2=len_trim(c2)
+      if(iv2.eq.1) msg='CQ '//psfx(:n1)//'/'//c2(:n2)//' '//grid
+      if(iv2.eq.2) msg='QRZ '//psfx(:n1)//'/'//c2(:n2)//' '//grid
+      if(iv2.eq.3) msg='DE '//psfx(:n1)//'/'//c2(:n2)//' '//grid
+      if(iv2.eq.4) msg='CQ '//c2(:n2)//'/'//psfx(:n1)//' '//grid
+      if(iv2.eq.5) msg='QRZ '//c2(:n2)//'/'//psfx(:n1)//' '//grid
+      if(iv2.eq.6) msg='DE '//c2(:n2)//'/'//psfx(:n1)//' '//grid
+      if(iv2.eq.7) msg='DE '//c2(:n2)//' '//grid
+      if(iv2.eq.8) msg=' '
+      go to 100
+   else
+
+   endif
+
+   grid6=grid//'ma'
+   call grid2k(grid6,k)
+   if(k.ge.1 .and. k.le.450)   call getpfx2(k,c1)
+   if(k.ge.451 .and. k.le.900) call getpfx2(k,c2)
+
+   i=index(c1,char(0))
+   if(i.ge.3) c1=c1(1:i-1)//'            '
+   i=index(c2,char(0))
+   if(i.ge.3) c2=c2(1:i-1)//'            '
+
+   msg='                      '
+   j=0
+   if(cqnnn) then
+      msg=c1//'          '
+      j=7                                  !### ??? ###
+      go to 10
+   endif
+
+   do i=1,12
+      j=j+1
+      msg(j:j)=c1(i:i)
+      if(c1(i:i).eq.' ') go to 10
+   enddo
+   j=j+1
+   msg(j:j)=' '
+
+ 10 do i=1,12
+      if(j.le.21) j=j+1
+      msg(j:j)=c2(i:i)
+      if(c2(i:i).eq.' ') go to 20
+   enddo
+   if(j.le.21) j=j+1
+   msg(j:j)=' '
+
+ 20 if(k.eq.0) then
+      do i=1,4
+         if(j.le.21) j=j+1
+         msg(j:j)=grid(i:i)
+      enddo
+      if(j.le.21) j=j+1
+      msg(j:j)=' '
+   endif
+
+ 100 continue
+   if(msg(1:6).eq.'CQ9DX ') msg(3:3)=' '
+   if(msg(1:2).eq.'E9' .and.                                          &
+        msg(3:3).ge.'A' .and. msg(3:3).le.'Z' .and.                   &
+        msg(4:4).ge.'A' .and. msg(4:4).le.'Z' .and.                   &
+        msg(5:5).eq.' ') msg='CQ '//msg(3:)
+
+   return
+ end subroutine unpackmsg
+
+ subroutine packtext(msg,nc1,nc2,nc3)
+
+   parameter (MASK28=2**28 - 1)
+   character*13 msg
+   character*42 c
+   data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ +-./?'/
+
+   nc1=0
+   nc2=0
+   nc3=0
+
+   do i=1,5                                !First 5 characters in nc1
+      do j=1,42                            !Get character code
+         if(msg(i:i).eq.c(j:j)) go to 10
+      enddo
+      j=37
+ 10   j=j-1                                !Codes should start at zero
+      nc1=42*nc1 + j
+   enddo
+
+   do i=6,10                               !Characters 6-10 in nc2
+      do j=1,42                            !Get character code
+         if(msg(i:i).eq.c(j:j)) go to 20
+      enddo
+      j=37
+ 20   j=j-1                                !Codes should start at zero
+      nc2=42*nc2 + j
+   enddo
+
+   do i=11,13                              !Characters 11-13 in nc3
+      do j=1,42                            !Get character code
+         if(msg(i:i).eq.c(j:j)) go to 30
+      enddo
+      j=37
+ 30   j=j-1                                !Codes should start at zero
+      nc3=42*nc3 + j
+   enddo
+
+ ! We now have used 17 bits in nc3.  Must move one each to nc1 and nc2.
+   nc1=nc1+nc1
+   if(iand(nc3,32768).ne.0) nc1=nc1+1
+   nc2=nc2+nc2
+   if(iand(nc3,65536).ne.0) nc2=nc2+1
+   nc3=iand(nc3,32767)
+
+   return
+ end subroutine packtext
+
+ subroutine unpacktext(nc1,nc2,nc3,msg)
+
+   character*22 msg
+   character*44 c
+   data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ +-./?'/
+
+   nc3=iand(nc3,32767)                      !Remove the "plain text" bit
+   if(iand(nc1,1).ne.0) nc3=nc3+32768
+   nc1=nc1/2
+   if(iand(nc2,1).ne.0) nc3=nc3+65536
+   nc2=nc2/2
+
+   do i=5,1,-1
+      j=mod(nc1,42)+1
+      msg(i:i)=c(j:j)
+      nc1=nc1/42
+   enddo
+
+   do i=10,6,-1
+      j=mod(nc2,42)+1
+      msg(i:i)=c(j:j)
+      nc2=nc2/42
+   enddo
+
+   do i=13,11,-1
+      j=mod(nc3,42)+1
+      msg(i:i)=c(j:j)
+      nc3=nc3/42
+   enddo
+   msg(14:22) = '         '
+
+   return
+ end subroutine unpacktext
+
+ subroutine getpfx1(callsign,k,nv2)
+
+   character*12 callsign0,callsign,lof,rof
+   character*8 c
+   character addpfx*8,tpfx*4,tsfx*3
+   logical ispfx,issfx,invalid
+   common/pfxcom/addpfx
+   include 'pfx.f90'
+
+   callsign0=callsign
+   nv2=1
+   iz=index(callsign,' ') - 1
+   if(iz.lt.0) iz=12
+   islash=index(callsign(1:iz),'/')
+   k=0
+ !  if(k.eq.0) go to 10     !Tnx to DL9RDZ for reminder:this was for tests only!
+   c='   '
+   if(islash.gt.0 .and. islash.le.(iz-4)) then
+ ! Add-on prefix
+      c=callsign(1:islash-1)
+      callsign=callsign(islash+1:iz)
+      do i=1,NZ
+         if(pfx(i)(1:4).eq.c) then
+            k=i
+            nv2=2
+            go to 10
+         endif
+      enddo
+      if(addpfx.eq.c) then
+         k=449
+         nv2=2
+         go to 10
+      endif
+
+   else if(islash.eq.(iz-1)) then
+ ! Add-on suffix
+      c=callsign(islash+1:iz)
+      callsign=callsign(1:islash-1)
+      do i=1,NZ2
+         if(sfx(i).eq.c(1:1)) then
+            k=400+i
+            nv2=3
+            go to 10
+         endif
+      enddo
+   endif
+
+ 10 if(islash.ne.0 .and.k.eq.0) then
+ ! Original JT65 would force this compound callsign to be treated as
+ ! plain text.  In JT65v2, we will encode the prefix or suffix into nc1.
+ ! The task here is to compute the proper value of k.
+      lof=callsign0(:islash-1)
+      rof=callsign0(islash+1:)
+      llof=len_trim(lof)
+      lrof=len_trim(rof)
+      ispfx=(llof.gt.0 .and. llof.le.4)
+      issfx=(lrof.gt.0 .and. lrof.le.3)
+      invalid=.not.(ispfx.or.issfx)
+      if(ispfx.and.issfx) then
+         if(llof.lt.3) issfx=.false.
+         if(lrof.lt.3) ispfx=.false.
+         if(ispfx.and.issfx) then
+            i=ichar(callsign0(islash-1:islash-1))
+            if(i.ge.ichar('0') .and. i.le.ichar('9')) then
+               issfx=.false.
+            else
+               ispfx=.false.
+            endif
+         endif
+      endif
+
+      if(invalid) then
+         k=-1
+      else
+         if(ispfx) then
+            tpfx=lof(1:4)
+            k=nchar(tpfx(1:1))
+            k=37*k + nchar(tpfx(2:2))
+            k=37*k + nchar(tpfx(3:3))
+            k=37*k + nchar(tpfx(4:4))
+            nv2=4
+            i=index(callsign0,'/')
+            callsign=callsign0(:i-1)
+            callsign=callsign0(i+1:)
+         endif
+         if(issfx) then
+            tsfx=rof(1:3)
+            k=nchar(tsfx(1:1))
+            k=37*k + nchar(tsfx(2:2))
+            k=37*k + nchar(tsfx(3:3))
+            nv2=5
+            i=index(callsign0,'/')
+            callsign=callsign0(:i-1)
+         endif
+      endif
+   endif
+
+   return
+ end subroutine getpfx1
+
+ subroutine getpfx2(k0,callsign)
+
+   character callsign*12
+   include 'pfx.f90'
+   character addpfx*8
+   common/pfxcom/addpfx
+
+   k=k0
+   if(k.gt.450) k=k-450
+   if(k.ge.1 .and. k.le.NZ) then
+      iz=index(pfx(k),' ') - 1
+      callsign=pfx(k)(1:iz)//'/'//callsign
+   else if(k.ge.401 .and. k.le.400+NZ2) then
+      iz=index(callsign,' ') - 1
+      callsign=callsign(1:iz)//'/'//sfx(k-400)
+   else if(k.eq.449) then
+      iz=index(addpfx,' ') - 1
+      if(iz.lt.1) iz=8
+      callsign=addpfx(1:iz)//'/'//callsign
+   endif
+
+   return
+ end subroutine getpfx2
+
+ subroutine grid2k(grid,k)
+
+   character*6 grid
+
+   call grid2deg(grid,xlong,xlat)
+   nlong=nint(xlong)
+   nlat=nint(xlat)
+   k=0
+   if(nlat.ge.85) k=5*(nlong+179)/2 + nlat-84
+
+   return
+ end subroutine grid2k
+
+ subroutine k2grid(k,grid)
+   character grid*6
+
+   nlong=2*mod((k-1)/5,90)-179
+   if(k.gt.450) nlong=nlong+180
+   nlat=mod(k-1,5)+ 85
+   dlat=nlat
+   dlong=nlong
+   call deg2grid(dlong,dlat,grid)
+
+   return
+ end subroutine k2grid
+
+ subroutine grid2n(grid,n)
+   character*4 grid
+
+   i1=ichar(grid(1:1))-ichar('A')
+   i2=ichar(grid(3:3))-ichar('0')
+   i=10*i1 + i2
+   n=-i - 31
+
+   return
+ end subroutine grid2n
+
+ subroutine n2grid(n,grid)
+   character*4 grid
+
+   if(n.gt.-31 .or. n.lt.-70) stop 'Error in n2grid'
+   i=-(n+31)                           !NB: 0 <= i <= 39
+   i1=i/10
+   i2=mod(i,10)
+   grid(1:1)=char(ichar('A')+i1)
+   grid(2:2)='A'
+   grid(3:3)=char(ichar('0')+i2)
+   grid(4:4)='0'
+
+   return
+ end subroutine n2grid
+
+ function nchar(c)
+
+ ! Convert ascii number, letter, or space to 0-36 for callsign packing.
+
+   character c*1
+
+   n=0                                    !Silence compiler warning
+   if(c.ge.'0' .and. c.le.'9') then
+      n=ichar(c)-ichar('0')
+   else if(c.ge.'A' .and. c.le.'Z') then
+      n=ichar(c)-ichar('A') + 10
+   else if(c.ge.'a' .and. c.le.'z') then
+      n=ichar(c)-ichar('a') + 10
+   else if(c.ge.' ') then
+      n=36
+   else
+      Print*,'Invalid character in callsign ',c,' ',ichar(c)
+      stop
+   endif
+   nchar=n
+
+   return
+ end function nchar
+
+ subroutine pack50(n1,n2,dat)
+
+   integer*1 dat(:),i1
+
+   i1=iand(ishft(n1,-20),255)                !8 bits
+   dat(1)=i1
+   i1=iand(ishft(n1,-12),255)                 !8 bits
+   dat(2)=i1
+   i1=iand(ishft(n1, -4),255)                 !8 bits
+   dat(3)=i1
+   i1=16*iand(n1,15)+iand(ishft(n2,-18),15)   !4+4 bits
+   dat(4)=i1
+   i1=iand(ishft(n2,-10),255)                 !8 bits
+   dat(5)=i1
+   i1=iand(ishft(n2, -2),255)                 !8 bits
+   dat(6)=i1
+   i1=64*iand(n2,3)                           !2 bits
+   dat(7)=i1
+   dat(8)=0
+   dat(9)=0
+   dat(10)=0
+   dat(11)=0
+
+   return
+ end subroutine pack50
+
+subroutine packpfx(call1,n1,ng,nadd)
+
+  character*12 call1,call0
+  character*3 pfx
+  logical text
+
+  i1=index(call1,'/')
+  if(call1(i1+2:i1+2).eq.' ') then
+! Single-character add-on suffix (maybe also fourth suffix letter?)
+     call0=call1(:i1-1)
+     call packcall(call0,n1,text)
+     nadd=1
+     nc=ichar(call1(i1+1:i1+1))
+     if(nc.ge.48 .and. nc.le.57) then
+        n=nc-48
+     else if(nc.ge.65 .and. nc.le.90) then
+        n=nc-65+10
+     else
+        n=38
+     endif
+     nadd=1
+     ng=60000-32768+n
+  else if(call1(i1+3:i1+3).eq.' ') then
+! Two-character numerical suffix, /10 to /99
+     call0=call1(:i1-1)
+     call packcall(call0,n1,text)
+     nadd=1
+     n=10*(ichar(call1(i1+1:i1+1))-48) + ichar(call1(i1+2:i1+2)) - 48
+     nadd=1
+     ng=60000 + 26 + n
+  else
+! Prefix of 1 to 3 characters
+     pfx=call1(:i1-1)
+     if(pfx(3:3).eq.' ') pfx=' '//pfx(1:2)
+     if(pfx(3:3).eq.' ') pfx=' '//pfx(1:2)
+     call0=call1(i1+1:)
+     call packcall(call0,n1,text)
+
+     ng=0
+     do i=1,3
+        nc=ichar(pfx(i:i))
+        if(nc.ge.48 .and. nc.le.57) then
+           n=nc-48
+        else if(nc.ge.65 .and. nc.le.90) then
+           n=nc-65+10
+        else
+           n=36
+        endif
+        ng=37*ng + n
+     enddo
+     nadd=0
+     if(ng.ge.32768) then
+        ng=ng-32768
+        nadd=1
+     endif
+  endif
+
+  return
+end subroutine packpfx
+
+end module packjt
diff --git a/q65w/libm65/pfx.f90 b/q65w/libm65/pfx.f90
new file mode 100644
index 000000000..724b0f8a3
--- /dev/null
+++ b/q65w/libm65/pfx.f90
@@ -0,0 +1,50 @@
+  parameter (NZ=339)                     !Total number of prefixes
+  parameter (NZ2=12)                     !Total number of suffixes
+  character*1 sfx(NZ2)
+  character*5 pfx(NZ)
+
+  data sfx/'P','0','1','2','3','4','5','6','7','8','9','A'/
+  data pfx/                                                           &
+     '1A   ','1S   ','3A   ','3B6  ','3B8  ','3B9  ','3C   ','3C0  ', &
+     '3D2  ','3D2C ','3D2R ','3DA  ','3V   ','3W   ','3X   ','3Y   ', &
+     '3YB  ','3YP  ','4J   ','4L   ','4S   ','4U1I ','4U1U ','4W   ', &
+     '4X   ','5A   ','5B   ','5H   ','5N   ','5R   ','5T   ','5U   ', &
+     '5V   ','5W   ','5X   ','5Z   ','6W   ','6Y   ','7O   ','7P   ', &
+     '7Q   ','7X   ','8P   ','8Q   ','8R   ','9A   ','9G   ','9H   ', &
+     '9J   ','9K   ','9L   ','9M2  ','9M6  ','9N   ','9Q   ','9U   ', &
+     '9V   ','9X   ','9Y   ','A2   ','A3   ','A4   ','A5   ','A6   ', &
+     'A7   ','A9   ','AP   ','BS7  ','BV   ','BV9  ','BY   ','C2   ', &
+     'C3   ','C5   ','C6   ','C9   ','CE   ','CE0X ','CE0Y ','CE0Z ', &
+     'CE9  ','CM   ','CN   ','CP   ','CT   ','CT3  ','CU   ','CX   ', &
+     'CY0  ','CY9  ','D2   ','D4   ','D6   ','DL   ','DU   ','E3   ', &
+     'E4   ','EA   ','EA6  ','EA8  ','EA9  ','EI   ','EK   ','EL   ', &
+     'EP   ','ER   ','ES   ','ET   ','EU   ','EX   ','EY   ','EZ   ', &
+     'F    ','FG   ','FH   ','FJ   ','FK   ','FKC  ','FM   ','FO   ', &
+     'FOA  ','FOC  ','FOM  ','FP   ','FR   ','FRG  ','FRJ  ','FRT  ', &
+     'FT5W ','FT5X ','FT5Z ','FW   ','FY   ','M    ','MD   ','MI   ', &
+     'MJ   ','MM   ',        'MU   ','MW   ','H4   ','H40  ','HA   ', &
+     'HB   ','HB0  ','HC   ','HC8  ','HH   ','HI   ','HK   ','HK0  ', &
+     'HK0M ','HL   ','HM   ','HP   ','HR   ','HS   ','HV   ','HZ   ', &
+     'I    ','IS   ','IS0  ',        'J2   ','J3   ','J5   ','J6   ', &
+     'J7   ','J8   ','JA   ','JDM  ','JDO  ','JT   ','JW   ',         &
+     'JX   ','JY   ','K    ','KG4  ','KH0  ','KH1  ','KH2  ','KH3  ', &
+     'KH4  ','KH5  ','KH5K ','KH6  ','KH7  ','KH8  ','KH9  ','KL   ', &
+     'KP1  ','KP2  ','KP4  ','KP5  ','LA   ','LU   ','LX   ','LY   ', &
+     'LZ   ','OA   ','OD   ','OE   ','OH   ','OH0  ','OJ0  ','OK   ', &
+     'OM   ','ON   ','OX   ','OY   ','OZ   ','P2   ','P4   ','PA   ', &
+     'PJ2  ','PJ7  ','PY   ','PY0F ','PT0S ','PY0T ','PZ   ','R1F  ', &
+     'R1M  ','S0   ','S2   ','S5   ','S7   ','S9   ','SM   ','SP   ', &
+     'ST   ','SU   ','SV   ','SVA  ','SV5  ','SV9  ','T2   ','T30  ', &
+     'T31  ','T32  ','T33  ','T5   ','T7   ','T8   ','T9   ','TA   ', &
+             'TF   ','TG   ','TI   ','TI9  ','TJ   ','TK   ','TL   ', &
+     'TN   ','TR   ','TT   ','TU   ','TY   ','TZ   ','UA   ','UA2  ', &
+     'UA9  ','UK   ','UN   ','UR   ','V2   ','V3   ','V4   ','V5   ', &
+     'V6   ','V7   ','V8   ','VE   ','VK   ','VK0H ','VK0M ','VK9C ', &
+     'VK9L ','VK9M ','VK9N ','VK9W ','VK9X ','VP2E ','VP2M ','VP2V ', &
+     'VP5  ','VP6  ','VP6D ','VP8  ','VP8G ','VP8H ','VP8O ','VP8S ', &
+     'VP9  ','VQ9  ','VR   ','VU   ','VU4  ','VU7  ','XE   ','XF4  ', &
+     'XT   ','XU   ','XW   ','XX9  ','XZ   ','YA   ','YB   ','YI   ', &
+     'YJ   ','YK   ','YL   ','YN   ','YO   ','YS   ','YU   ','YV   ', &
+     'YV0  ','Z2   ','Z3   ','ZA   ','ZB   ','ZC4  ','ZD7  ','ZD8  ', &
+     'ZD9  ','ZF   ','ZK1N ','ZK1S ','ZK2  ','ZK3  ','ZL   ','ZL7  ', &
+     'ZL8  ','ZL9  ','ZP   ','ZS   ','ZS8  ','KC4  ','E5   '/
diff --git a/q65w/libm65/pfxdump.f90 b/q65w/libm65/pfxdump.f90
new file mode 100644
index 000000000..7587dbf72
--- /dev/null
+++ b/q65w/libm65/pfxdump.f90
@@ -0,0 +1,13 @@
+subroutine pfxdump(fname)
+  character*(*) fname
+  include 'pfx.f90'
+
+  open(11,file=fname,status='unknown')
+  write(11,1001) sfx
+1001 format('Supported Suffixes:'/(11('/',a1,2x)))
+  write(11,1002) pfx
+1002 format(/'Supported Add-On DXCC Prefixes:'/(15(a5,1x)))
+  close(11)
+
+  return
+end subroutine pfxdump
diff --git a/q65w/libm65/polfit.f90 b/q65w/libm65/polfit.f90
new file mode 100644
index 000000000..33e8d44ed
--- /dev/null
+++ b/q65w/libm65/polfit.f90
@@ -0,0 +1,87 @@
+subroutine polfit(y,npts,a)
+
+! Input:  y(npts)                !Expect npts=4
+! Output: a(1) = baseline
+!         a(2) = amplitude
+!         a(3) = theta (deg)
+
+  real y(npts)
+  real a(3)
+  real deltaa(3)
+  integer ipk(1)
+  save
+
+! Set starting values:
+  a(1)=minval(y)
+  a(2)=maxval(y)-a(1)
+  ipk=maxloc(y)
+  a(3)=(ipk(1)-1)*45.0
+
+  deltaa(1:2)=0.1*a(2)
+  deltaa(3)=10.0
+  nterms=3
+
+!  Start the iteration
+  chisqr=0.
+  chisqr0=1.e6
+  iters=10
+
+  do iter=1,iters
+     do j=1,nterms
+        chisq1=fchisq_pol(y,npts,a)
+        fn=0.
+        delta=deltaa(j)
+10      a(j)=a(j)+delta
+        chisq2=fchisq_pol(y,npts,a)
+        if(chisq2.eq.chisq1) go to 10
+        if(chisq2.gt.chisq1) then
+           delta=-delta                      !Reverse direction
+           a(j)=a(j)+delta
+           tmp=chisq1
+           chisq1=chisq2
+           chisq2=tmp
+        endif
+20      fn=fn+1.0
+        a(j)=a(j)+delta
+        chisq3=fchisq_pol(y,npts,a)
+        if(chisq3.lt.chisq2) then
+           chisq1=chisq2
+           chisq2=chisq3
+           go to 20
+        endif
+
+! Find minimum of parabola defined by last three points
+        delta=delta*(1./(1.+(chisq1-chisq2)/(chisq3-chisq2))+0.5)
+        a(j)=a(j)-delta
+        deltaa(j)=deltaa(j)*fn/3.
+!          write(*,4000) iter,j,a,deltaa,chisq2
+!4000      format(2i2,2(2x,3f8.2),f12.5)
+     enddo  ! j=1,nterms
+     chisqr=fchisq_pol(y,npts,a)
+!     write(*,4000) 0,0,a,chisqr
+     if(chisqr.lt.1.0) exit
+     if(deltaa(1).lt.0.01*(a(2)-a(1)) .and. deltaa(2).lt.0.01*(a(2)-a(1))   &
+          .and. deltaa(3).lt.1.0) exit
+     if(chisqr/chisqr0.gt.0.99) exit
+     chisqr0=chisqr
+  enddo  ! iter
+  a(3)=mod(a(3)+360.0,180.0)
+
+  return
+end subroutine polfit
+
+real function fchisq_pol(y,npts,a)
+
+  real y(npts),a(3)
+  data rad/57.2957795/
+  
+  chisq = 0.
+  do i=1,npts
+     theta=(i-1)*45.0
+     yfit=a(1) + a(2)*cos((theta-a(3))/rad)**2
+     chisq=chisq + (y(i) - yfit)**2
+  enddo
+  fchisq_pol=chisq
+
+  return
+end function fchisq_pol
diff --git a/q65w/libm65/ptt.c b/q65w/libm65/ptt.c
new file mode 100644
index 000000000..0f99d1be8
--- /dev/null
+++ b/q65w/libm65/ptt.c
@@ -0,0 +1,43 @@
+#include <windows.h>
+#include <stdio.h>
+
+int ptt_(int *nport, int *ntx, int *iptt)
+{
+  static HANDLE hFile;
+  static int open=0;
+  char s[10];
+  int i3=0,i4=0,i5=0,i6=0,i9=0,i00=0;
+
+  if(*nport==0) {
+    *iptt=*ntx;
+    return(0);
+  }
+
+  if(*ntx && (!open)) {
+    sprintf(s,"COM%d",*nport);
+    hFile=CreateFile(TEXT(s),GENERIC_WRITE,0,NULL,OPEN_EXISTING,
+		     FILE_ATTRIBUTE_NORMAL,NULL);
+    if(hFile==INVALID_HANDLE_VALUE) {
+      //      printf("PTT: Cannot open COM port %d.\n",*nport);
+      return 1;
+    }
+    open=1;
+  }
+
+  if(*ntx && open) {
+    EscapeCommFunction(hFile,3);
+    EscapeCommFunction(hFile,5);
+    *iptt=1;
+  }
+
+  else {
+    EscapeCommFunction(hFile,4);
+    EscapeCommFunction(hFile,6);
+    EscapeCommFunction(hFile,9);
+    i00=CloseHandle(hFile);
+    *iptt=0;
+    open=0;
+  }
+  if((i00+i3+i4+i5+i6+i9)==-99) return -1;  //Silence compiler warning
+  return 0;
+}
diff --git a/q65w/libm65/ptt_unix.c b/q65w/libm65/ptt_unix.c
new file mode 100644
index 000000000..1c583f641
--- /dev/null
+++ b/q65w/libm65/ptt_unix.c
@@ -0,0 +1,405 @@
+/*
+ * WSJT is Copyright (c) 2001-2006 by Joseph H. Taylor, Jr., K1JT, 
+ * and is licensed under the GNU General Public License (GPL).
+ *
+ * Code used from cwdaemon for parallel port ptt only.
+ *
+ * cwdaemon - morse sounding daemon for the parallel or serial port
+ * Copyright (C) 2002 -2005 Joop Stakenborg <pg4i@amsat.org>
+ *                       and many authors, see the AUTHORS file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+# if HAVE_STDIO_H
+# include <stdio.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if HAVE_SYS_IOCTL_H
+# include <sys/ioctl.h>
+#endif
+#if HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef HAVE_LINUX_PPDEV_H
+# include <linux/ppdev.h>
+# include <linux/parport.h>
+#endif
+#ifdef HAVE_DEV_PPBUS_PPI_H
+# include <dev/ppbus/ppi.h>
+# include <dev/ppbus/ppbconf.h>
+#endif
+
+int lp_reset (int fd);
+int lp_ptt (int fd, int onoff);
+
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+# include <sys/param.h>
+#endif
+
+#include <string.h>
+/* parport functions */
+
+int dev_is_parport(int fd);
+int ptt_parallel(int fd, int *ntx, int *iptt);
+int ptt_serial(int fd, int *ntx, int *iptt);
+
+int fd=-1;		/* Used for both serial and parallel */
+
+/*
+ * ptt_
+ *
+ * generic unix PTT routine called from Fortran
+ *
+ * Inputs	
+ * unused	Unused, to satisfy old windows calling convention
+ * ptt_port	device name serial or parallel
+ * ntx		pointer to fortran command on or off
+ * iptt		pointer to fortran command status on or off
+ * Returns	- non 0 if error
+*/
+
+/* Tiny state machine */
+#define STATE_PORT_CLOSED		0
+#define STATE_PORT_OPEN_PARALLEL	1
+#define STATE_PORT_OPEN_SERIAL		2
+
+//int ptt_(int *unused, char *ptt_port, int *ntx, int *iptt)
+int ptt_(int *unused, int *ntx, int *iptt)
+{
+  static int state=0;
+  char *p;
+
+// ### Temporary:
+  char* ptt_port;
+  if(*unused != -99) {
+    *iptt=*ntx;
+    return 0;
+  }
+// ###
+
+  /* In the very unlikely event of a NULL pointer, just return.
+   * Yes, I realise this should not be possible in WSJT.
+   */
+  if (ptt_port == NULL) {
+    *iptt = *ntx;
+    return (0);
+  }
+    
+  switch (state) {
+  case STATE_PORT_CLOSED:
+
+     /* Remove trailing ' ' */
+    if ((p = strchr(ptt_port, ' ')) != NULL)
+      *p = '\0';
+
+    /* If all that is left is a '\0' then also just return */
+    if (*ptt_port == '\0') {
+      *iptt = *ntx;
+      return(0);
+    }
+
+    if ((fd = open(ptt_port, O_RDWR|O_NONBLOCK)) < 0) {
+	fprintf(stderr, "Can't open %s.\n", ptt_port);
+	return (1);
+    }
+
+    if (dev_is_parport(fd)) {
+      state = STATE_PORT_OPEN_PARALLEL;
+      lp_reset(fd);
+      ptt_parallel(fd, ntx, iptt);
+    } else {
+      state = STATE_PORT_OPEN_SERIAL;
+      ptt_serial(fd, ntx, iptt);
+    }
+    break;
+
+  case STATE_PORT_OPEN_PARALLEL:
+    ptt_parallel(fd, ntx, iptt);
+    break;
+
+  case STATE_PORT_OPEN_SERIAL:
+    ptt_serial(fd, ntx, iptt);
+    break;
+
+  default:
+    close(fd);
+    fd = -1;
+    state = STATE_PORT_CLOSED;
+    break;
+  }
+  return(0);
+}
+
+/*
+ * ptt_serial
+ *
+ * generic serial unix PTT routine called indirectly from Fortran
+ *
+ * fd		- already opened file descriptor
+ * ntx		- pointer to fortran command on or off
+ * iptt		- pointer to fortran command status on or off
+ */
+
+int
+ptt_serial(int fd, int *ntx, int *iptt)
+{
+  int control = TIOCM_RTS | TIOCM_DTR;
+
+#if defined (TIOCMBIS) && defined (TIOCMBIS)
+  if(*ntx) {
+    ioctl(fd, TIOCMBIS, &control);               /* Set DTR and RTS */
+    *iptt = 1;
+  } else {
+    ioctl(fd, TIOCMBIC, &control);
+    *iptt = 0;
+  }
+#else
+	unsigned y;
+	ioctl(fd, TIOCMGET, &y);
+	if (*ntx) {
+		y |= control;
+	} else {
+		y &= ~control;
+	}
+	ioctl(fd, TIOCMSET, &y);
+#endif
+  return(0);
+}
+
+
+/* parport functions */
+
+/*
+ * dev_is_parport(fd):
+ *
+ * inputs	- Already open fd
+ * output	- 1 if parallel port, 0 if not
+ * side effects	- Unfortunately, this is platform specific.
+ */
+
+#if defined(HAVE_LINUX_PPDEV_H)                /* Linux (ppdev) */
+
+int
+dev_is_parport(int fd)
+{
+       struct stat st;
+       int m;
+
+       if ((fstat(fd, &st) == -1) ||
+	   ((st.st_mode & S_IFMT) != S_IFCHR) ||
+	   (ioctl(fd, PPGETMODE, &m) == -1))
+	 return(0);
+
+       return(1);
+}
+
+#elif defined(HAVE_DEV_PPBUS_PPI_H)    /* FreeBSD (ppbus/ppi) */
+
+int
+dev_is_parport(int fd)
+{
+       struct stat st;
+       unsigned char c;
+
+       if ((fstat(fd, &st) == -1) ||
+	   ((st.st_mode & S_IFMT) != S_IFCHR) ||
+	   (ioctl(fd, PPISSTATUS, &c) == -1))
+	 return(0);
+
+       return(1);
+}
+
+#else                                  /* Fallback (nothing) */
+
+int
+dev_is_parport(int fd)
+{
+       return(0);
+}
+
+#endif
+/* Linux wrapper around PPFCONTROL */
+#ifdef HAVE_LINUX_PPDEV_H
+static void
+parport_control (int fd, unsigned char controlbits, int values)
+{
+	struct ppdev_frob_struct frob;
+	frob.mask = controlbits;
+	frob.val = values;
+
+	if (ioctl (fd, PPFCONTROL, &frob) == -1)
+	{
+		fprintf(stderr, "Parallel port PPFCONTROL");
+		exit (1);
+	}
+}
+#endif
+
+/* FreeBSD wrapper around PPISCTRL */
+#ifdef HAVE_DEV_PPBUS_PPI_H
+static void
+parport_control (int fd, unsigned char controlbits, int values)
+{
+	unsigned char val;
+
+	if (ioctl (fd, PPIGCTRL, &val) == -1)
+	{
+		fprintf(stderr, "Parallel port PPIGCTRL");
+		exit (1);
+	}
+
+	val &= ~controlbits;
+	val |= values;
+
+	if (ioctl (fd, PPISCTRL, &val) == -1)
+	{
+		fprintf(stderr, "Parallel port PPISCTRL");
+		exit (1);
+	}
+}
+#endif
+
+/* Initialise a parallel port, given open fd */
+int
+lp_init (int fd)
+{
+#ifdef HAVE_LINUX_PPDEV_H
+	int mode;
+#endif
+
+#ifdef HAVE_LINUX_PPDEV_H
+	mode = PARPORT_MODE_PCSPP;
+
+	if (ioctl (fd, PPSETMODE, &mode) == -1)
+	{
+		fprintf(stderr, "Setting parallel port mode");
+		close (fd);
+		return(-1);
+	}
+
+	if (ioctl (fd, PPEXCL, NULL) == -1)
+	{
+		fprintf(stderr, "Parallel port is already in use.\n");
+		close (fd);
+		return(-1);
+	}
+	if (ioctl (fd, PPCLAIM, NULL) == -1)
+	{
+		fprintf(stderr, "Claiming parallel port.\n");
+		fprintf(stderr, "HINT: did you unload the lp kernel module?");
+		close (fd);
+		return(-1);
+	}
+
+	/* Enable CW & PTT - /STROBE bit (pin 1) */
+	parport_control (fd, PARPORT_CONTROL_STROBE, PARPORT_CONTROL_STROBE);
+#endif
+#ifdef HAVE_DEV_PPBUS_PPI_H
+	parport_control (fd, STROBE, STROBE);
+#endif
+	lp_reset (fd);
+	return(0);
+}
+
+/* release ppdev and close port */
+int
+lp_free (int fd)
+{
+#ifdef HAVE_LINUX_PPDEV_H
+	lp_reset (fd);
+
+	/* Disable CW & PTT - /STROBE bit (pin 1) */
+	parport_control (fd, PARPORT_CONTROL_STROBE, 0);
+
+	ioctl (fd, PPRELEASE);
+#endif
+#ifdef HAVE_DEV_PPBUS_PPI_H
+	/* Disable CW & PTT - /STROBE bit (pin 1) */
+	parport_control (fd, STROBE, 0);
+#endif
+	close (fd);
+	return(0);
+}
+
+/* set to a known state */
+int
+lp_reset (int fd)
+{
+#if defined (HAVE_LINUX_PPDEV_H) || defined (HAVE_DEV_PPBUS_PPI_H)
+	lp_ptt (fd, 0);
+#endif
+	return(0);
+}
+
+/* SSB PTT keying - /INIT bit (pin 16) (inverted) */
+int
+lp_ptt (int fd, int onoff)
+{
+#ifdef HAVE_LINUX_PPDEV_H
+	if (onoff == 1)
+		parport_control (fd, PARPORT_CONTROL_INIT,
+				PARPORT_CONTROL_INIT);
+	else
+		parport_control (fd, PARPORT_CONTROL_INIT, 0);
+#endif
+#ifdef HAVE_DEV_PPBUS_PPI_H
+	if (onoff == 1)
+		parport_control (fd, nINIT,
+				nINIT);
+	else
+		parport_control (fd, nINIT, 0);
+#endif
+	return(0);
+}
+
+/*
+ * ptt_parallel
+ *
+ * generic parallel unix PTT routine called indirectly from Fortran
+ *
+ * fd		- already opened file descriptor
+ * ntx		- pointer to fortran command on or off
+ * iptt		- pointer to fortran command status on or off
+ */
+
+int
+ptt_parallel(int fd, int *ntx, int *iptt)
+{
+  if(*ntx) {
+    lp_ptt(fd, 1);
+    *iptt=1;
+  }  else {
+    lp_ptt(fd, 0);
+    *iptt=0;
+  }
+  return(0);
+}
diff --git a/q65w/libm65/q65b.f90 b/q65w/libm65/q65b.f90
new file mode 100644
index 000000000..7cf455edf
--- /dev/null
+++ b/q65w/libm65/q65b.f90
@@ -0,0 +1,204 @@
+subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
+     mycall0,mygrid,hiscall0,hisgrid,mode_q65,f0,fqso,newdat,nagain,          &
+     max_drift,nhsym,ndop00,idec)
+
+! This routine provides an interface between MAP65 and the Q65 decoder
+! in WSJT-X.  All arguments are input data obtained from the MAP65 GUI.
+! Raw Rx data are available as the 96 kHz complex spectrum ca(MAXFFT1)
+! in common/cacb.  If xpol is true, we also have cb(MAXFFT1) for the
+! orthogonal polarization.  Decoded messages are sent back to the GUI
+! on stdout.
+
+!  use wavhdr
+  use q65_decode
+  use wideband_sync
+  use timer_module, only: timer
+
+  parameter (MAXFFT1=5376000)              !56*96000
+  parameter (MAXFFT2=336000)               !56*6000 (downsampled by 1/16)
+  parameter (NMAX=60*12000)
+  parameter (RAD=57.2957795)
+!  type(hdr) h                            !Header for the .wav file
+  integer*2 iwave(60*12000)
+  complex ca(MAXFFT1),cb(MAXFFT1)          !FFTs of raw x,y data
+  complex cx(0:MAXFFT2-1),cy(0:MAXFFT2-1),cz(0:MAXFFT2)
+  logical xpol,ldecoded
+  integer ipk1(1)
+  real*8 fcenter,freq0,freq1
+  character*12 mycall0,hiscall0
+  character*12 mycall,hiscall
+  character*6 mygrid,hisgrid
+  character*4 grid4
+  character*28 msg00
+  character*80 line
+  character*80 wsjtx_dir
+  character*1 cp,cmode*2
+  common/cacb/ca,cb
+  common/early/nhsym1,nhsym2,ldecoded(32768)
+  common/decodes/ndecodes
+  data nutc00/-1/,msg00/'                            '/
+  save
+
+  if(newdat.eq.1) nutc00=-1
+  open(9,file='wsjtx_dir.txt',status='old')
+  read(9,'(a)') wsjtx_dir                      !Establish the working directory
+  close(9)
+
+  if(mycall0(1:1).ne.' ') mycall=mycall0
+  if(hiscall0(1:1).ne.' ') hiscall=hiscall0
+  if(hisgrid(1:4).ne.'    ') grid4=hisgrid(1:4)
+
+! Find best frequency and ipol from sync_dat, the "orange sync curve".
+  df3=96000.0/32768.0
+  ifreq=nint((1000.0*f0)/df3)
+  ia=nint(ifreq-ntol/df3)
+  ib=nint(ifreq+ntol/df3)
+  ipk1=maxloc(sync(ia:ib)%ccfmax)
+  ipk=ia+ipk1(1)-1
+  if(ldecoded(ipk)) go to 900
+  snr1=sync(ipk)%ccfmax
+  ipol=1
+  if(xpol) ipol=sync(ipk)%ipol
+
+  nfft1=MAXFFT1
+  nfft2=MAXFFT2
+  df=96000.0/NFFT1
+  if(nfsample.eq.95238) then
+     nfft1=5120000
+     nfft2=322560
+     df=96000.0/nfft1
+  endif
+  nh=nfft2/2
+  f_mouse=1000.0*(fqso+48.0) + mousedf
+  f_ipk=ipk*df3
+  k0=nint((ipk*df3-1000.0)/df)
+  if(nagain.eq.1) k0=nint((f_mouse-1000.0)/df)
+
+  if(k0.lt.nh .or. k0.gt.MAXFFT1-nfft2+1) go to 900
+  if(snr1.lt.1.5) go to 900                      !### Threshold needs work? ###
+
+  fac=1.0/nfft2
+  cx(0:nfft2-1)=ca(k0:k0+nfft2-1)
+  cx=fac*cx
+  if(xpol) then
+     cy(0:nfft2-1)=cb(k0:k0+nfft2-1)
+     cy=fac*cy
+  endif
+
+! Here cx and cy (if xpol) are frequency-domain data around the selected
+! QSO frequency, taken from the full-length FFT computed in filbig().
+! Values for fsample, nfft1, nfft2, df, and the downsampled data rate
+! are as follows:
+
+!  fSample  nfft1       df        nfft2  fDownSampled
+!    (Hz)              (Hz)                 (Hz)
+!----------------------------------------------------
+!   96000  5376000  0.017857143  336000   6000.000
+!   95238  5120000  0.018601172  322560   5999.994
+
+  poldeg=0.
+  if(xpol) then
+     poldeg=sync(ipk)%pol
+     cz(0:MAXFFT2-1)=cos(poldeg/RAD)*cx + sin(poldeg/RAD)*cy
+  else
+     cz(0:MAXFFT2-1)=cx
+  endif
+
+  cz(MAXFFT2)=0.
+! Roll off below 500 Hz and above 2500 Hz.
+  ja=nint(500.0/df)
+  jb=nint(2500.0/df)
+  do i=0,ja
+     r=0.5*(1.0+cos(i*3.14159/ja))
+     cz(ja-i)=r*cz(ja-i)
+     cz(jb+i)=r*cz(jb+i)
+  enddo
+ cz(ja+jb+1:)=0.
+
+!Transform to time domain (real), fsample=12000 Hz
+  call four2a(cz,2*nfft2,1,1,-1)
+  do i=0,nfft2-1
+     j=nfft2-1-i
+     iwave(2*i+2)=nint(real(cz(j)))       !Note the reversed order!
+     iwave(2*i+1)=nint(aimag(cz(j)))
+  enddo
+  iwave(2*nfft2+1:)=0
+
+!  open(30,file='000000_0001.wav',status='unknown',access='stream')
+!  h=default_header(12000,NMAX)
+!  write(30) h,iwave
+!  close(30)
+
+  nsubmode=mode_q65-1
+  nfa=990                   !Tight limits around ipk for the wideband decode
+  nfb=1010
+  if(nagain.eq.1) then      !For nagain=1, use limits of +/- ntol
+     nfa=max(100,1000-ntol)
+     nfb=min(2500,1000+ntol)
+  endif
+  nsnr0=-99             !Default snr for no decode
+
+! NB: Frequency of ipk is now shifted to 1000 Hz.
+  call map65_mmdec(nutc,iwave,nqd,nsubmode,nfa,nfb,1000,ntol,     &
+       newdat,nagain,max_drift,mycall,hiscall,hisgrid)
+
+  MHz=fcenter
+  freq0=MHz + 0.001d0*ikhz
+
+  if(nsnr0.gt.-99) then
+     ldecoded(ipk)=.true.
+     nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal
+     nq65df=nq65df + nfreq0 - 1000
+     npol=nint(poldeg)
+     if(nxant.ne.0) then
+        npol=npol-45
+        if(npol.lt.0) npol=npol+180
+     endif
+     call txpol(xpol,msg0(1:22),mygrid,npol,nxant,ntxpol,cp)
+     ikhz1=ikhz
+     ndf=nq65df
+     if(ndf.gt.500) ikhz1=ikhz + (nq65df+500)/1000
+     if(ndf.lt.-500) ikhz1=ikhz + (nq65df-500)/1000
+     ndf=nq65df - 1000*(ikhz1-ikhz)
+     if(nqd.eq.1 .and. abs(nq65df-mousedf).lt.ntol) then
+        write(line,1020) ikhz1,ndf,npol,nutc,xdt0,nsnr0,msg0(1:27),cq0,  &
+             ntxpol,cp
+1020    format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3,i4,1x,a1)
+        write(*,1100) trim(line)
+1100    format(a)
+     endif
+
+! Write to lu 26, for Messages and Band Map windows
+     cmode=': '
+     cmode(2:2)=char(ichar('A') + mode_q65-1)
+     freq1=freq0 + 0.001d0*(ikhz1-ikhz)
+     write(26,1014) freq1,ndf,0,0,0,xdt0,npol,0,nsnr0,nutc,msg0(1:22),   &
+          ':',cp,cmode
+1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,1x,2a1,2x,a2)
+
+! Suppress writing duplicates (same time, decoded message, and frequency)
+! to map65_rx.log
+     if(nutc.ne.nutc00 .or. msg0(1:28).ne.msg00 .or. freq1.ne.freq1_00) then
+! Write to file map65_rx.log:
+        ndecodes=ndecodes+1
+        write(21,1110)  freq1,ndf,xdt0,npol,nsnr0,nutc,msg0(1:28),   &
+             cmode(2:2),cq0
+1110    format(f8.3,i5,f5.1,2i4,i5.4,2x,a28,': ',a1,2x,a3)
+        nutc00=nutc
+        msg00=msg0(1:28)
+        freq1_00=freq1
+        frx=0.001*k0*df+nkhz_center-48.0+1.0 - 0.001*nfcal
+        fsked=frx - 0.001*ndop00/2.0 - 1.5
+        write(12,1120) nutc,fsked,xdt0,nsnr0,trim(msg0)
+1120    format(i4.4,f9.3,f7.2,i5,2x,a,i6)
+     endif
+  endif
+
+900 close(13)
+  close(17)
+  call flush(6)
+  idec=-1
+  read(cq0(2:2),*) idec
+
+  return
+end subroutine q65b
diff --git a/q65w/libm65/recvpkt.f90 b/q65w/libm65/recvpkt.f90
new file mode 100644
index 000000000..88d51cc59
--- /dev/null
+++ b/q65w/libm65/recvpkt.f90
@@ -0,0 +1,73 @@
+subroutine recvpkt(nsam,nblock2,userx_no,k,buf4,buf8,buf16)
+
+! Reformat timf2 data from Linrad and stuff data into r*4 array dd().
+
+  include 'njunk.f90'
+  parameter (NSMAX=60*96000)          !Total sample intervals per minute
+  parameter (NFFT=32768)
+  integer*1 userx_no
+  real*4 d4,buf4(*)                   !(348)
+  real*8 d8,buf8(*)                   !(174)
+  complex*16 c16,buf16(*)             !(87)
+  integer*2 jd(4),kd(2),nblock2
+  real*4 xd(4),yd(2)
+  real*8 fcenter
+  common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fcenter,nutc,  &
+       junk(NJUNK)
+  equivalence (kd,d4)
+  equivalence (jd,d8,yd)
+  equivalence (xd,c16)
+
+  if(nblock2.eq.-9999) nblock2=-9998    !Silence a compiler warning
+  if(nsam.eq.-1) then
+! Move data from the UDP packet buffer into array dd().
+     if(userx_no.eq.-1) then
+        do i=1,174                    !One RF channel, r*4 data
+           k=k+1
+           d8=buf8(i)
+           dd(1,k)=yd(1)
+           dd(2,k)=yd(2)
+        enddo
+     else if(userx_no.eq.1) then
+        do i=1,348                    !One RF channel, i*2 data
+           k=k+1
+           d4=buf4(i)
+           dd(1,k)=kd(1)
+           dd(2,k)=kd(2)
+        enddo
+     else if(userx_no.eq.-2) then
+        do i=1,87                    !Two RF channels, r*4 data
+           k=k+1
+           c16=buf16(i)
+           dd(1,k)=xd(1)
+           dd(2,k)=xd(2)
+           dd(3,k)=xd(3)
+           dd(4,k)=xd(4)
+        enddo
+     else if(userx_no.eq.2) then
+        do i=1,174                    !Two RF channels, i*2 data
+           k=k+1
+           d8=buf8(i)
+           dd(1,k)=jd(1)
+           dd(2,k)=jd(2)
+           dd(3,k)=jd(3)
+           dd(4,k)=jd(4)
+        enddo
+     endif
+  else
+     if(userx_no.eq.1) then
+        do i=1,nsam                    !One RF channel, r*4 data
+           k=k+1
+           d4=buf4(i)
+           dd(1,k)=kd(1)
+           dd(2,k)=kd(2)
+
+           k=k+1
+           dd(1,k)=kd(1)
+           dd(2,k)=kd(2)
+        enddo
+     endif
+  endif
+
+  return
+end subroutine recvpkt
diff --git a/q65w/libm65/rfile3a.f90 b/q65w/libm65/rfile3a.f90
new file mode 100644
index 000000000..7e2266513
--- /dev/null
+++ b/q65w/libm65/rfile3a.f90
@@ -0,0 +1,14 @@
+subroutine rfile3a(infile,ibuf,n,fcenter,ierr)
+
+  character*(*) infile
+  integer*8 ibuf(n)
+  real*8 fcenter
+
+  open(10,file=infile,access='stream',status='old',err=998)
+  read(10,end=998) (ibuf(i),i=1,n/8),fcenter
+  ierr=0
+  go to 999
+998 ierr=1002
+999 close(10)
+  return
+end subroutine rfile3a
diff --git a/q65w/libm65/rs.h b/q65w/libm65/rs.h
new file mode 100644
index 000000000..06cbe344f
--- /dev/null
+++ b/q65w/libm65/rs.h
@@ -0,0 +1,35 @@
+/* User include file for the Reed-Solomon codec
+ * Copyright 2002, Phil Karn KA9Q
+ * May be used under the terms of the GNU General Public License (GPL)
+ */
+
+/* General purpose RS codec, 8-bit symbols */
+void encode_rs_char(void *rs,unsigned char *data,unsigned char *parity);
+int decode_rs_char(void *rs,unsigned char *data,int *eras_pos,
+		   int no_eras);
+void *init_rs_char(int symsize,int gfpoly,
+		   int fcr,int prim,int nroots,
+		   int pad);
+void free_rs_char(void *rs);
+
+/* General purpose RS codec, integer symbols */
+void encode_rs_int(void *rs,int *data,int *parity);
+int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras);
+void *init_rs_int(int symsize,int gfpoly,int fcr,
+		  int prim,int nroots,int pad);
+void free_rs_int(void *rs);
+
+/* CCSDS standard (255,223) RS codec with conventional (*not* dual-basis)
+ * symbol representation
+ */
+void encode_rs_8(unsigned char *data,unsigned char *parity,int pad);
+int decode_rs_8(unsigned char *data,int *eras_pos,int no_eras,int pad);
+
+/* CCSDS standard (255,223) RS codec with dual-basis symbol representation */
+void encode_rs_ccsds(unsigned char *data,unsigned char *parity,int pad);
+int decode_rs_ccsds(unsigned char *data,int *eras_pos,int no_eras,int pad);
+
+/* Tables to map from conventional->dual (Taltab) and
+ * dual->conventional (Tal1tab) bases
+ */
+extern unsigned char Taltab[],Tal1tab[];
diff --git a/q65w/libm65/rs2.h b/q65w/libm65/rs2.h
new file mode 100644
index 000000000..c2b807d15
--- /dev/null
+++ b/q65w/libm65/rs2.h
@@ -0,0 +1,16 @@
+/* User include file for the Reed-Solomon codec
+ * Copyright 2002, Phil Karn KA9Q
+ * May be used under the terms of the GNU General Public License (GPL)
+ */
+
+/* General purpose RS codec, integer symbols */
+void encode_rs_int(void *rs,int *data,int *parity);
+int decode_rs_int(void *rs,int *data,int *eras_pos,int no_eras, int calc_syn);
+void *init_rs_int(int symsize,int gfpoly,int fcr,
+		  int prim,int nroots,int pad);
+void free_rs_int(void *rs);
+
+/* Tables to map from conventional->dual (Taltab) and
+ * dual->conventional (Tal1tab) bases
+ */
+extern unsigned char Taltab[],Tal1tab[];
diff --git a/q65w/libm65/s3avg.f90 b/q65w/libm65/s3avg.f90
new file mode 100644
index 000000000..9d76637c4
--- /dev/null
+++ b/q65w/libm65/s3avg.f90
@@ -0,0 +1,60 @@
+subroutine s3avg(nsave,mode65,nutc,nhz,xdt,npol,ntol,s3,nsum,nkv,decoded)
+
+! Save the current synchronized spectra, s3(64,63), for possible
+! decoding of average.
+
+  real s3(64,63)                        !Synchronized spectra for 63 symbols
+  real s3a(64,63,64)                    !Saved spectra
+  real s3b(64,63)                       !Average spectra
+  integer iutc(64),ihz(64),ipol(64)
+  real dt(64)
+  character*22 decoded
+  logical ltext,first
+  data first/.true./
+  save
+
+  if(first) then
+     iutc=-1
+     ihz=0
+     ipol=0
+     first=.false.
+     ihzdiff=min(100,ntol)
+     dtdiff=0.2
+  endif
+
+  do i=1,64
+     if(nutc.eq.iutc(i) .and. abs(nhz-ihz(i)).lt.ihzdiff) then
+        nsave=mod(nsave-1+64,64)+1
+        go to 10
+     endif
+  enddo
+  
+  iutc(nsave)=nutc                          !Save UTC
+  ihz(nsave)=nhz                            !Save freq in Hz
+  ipol(nsave)=npol                          !Save pol
+  dt(nsave)=xdt                             !Save DT
+  s3a(1:64,1:63,nsave)=s3                   !Save the spectra
+
+10 s3b=0.
+  do i=1,64                                 !Accumulate avg spectra
+     if(iutc(i).lt.0) cycle
+     if(mod(iutc(i),2).ne.mod(nutc,2)) cycle !Use only same sequence
+     if(abs(nhz-ihz(i)).gt.ihzdiff) cycle   !Freq must match
+     if(abs(xdt-dt(i)).gt.dtdiff) cycle     !DT must match
+     s3b=s3b + s3a(1:64,1:63,i)
+     nsum=nsum+1
+  enddo
+ 
+  decoded='                      '
+  if(nsum.ge.2) then                        !Try decoding the sverage
+     nadd=mode65*nsum
+     call extract(s3b,nadd,ncount,nhist,decoded,ltext)     !Extract the message
+     nkv=nsum
+     if(ncount.lt.0) then 
+        nkv=0
+        decoded='                      '
+     endif
+  endif
+
+  return
+end subroutine s3avg
diff --git a/q65w/libm65/sec_midn.f90 b/q65w/libm65/sec_midn.f90
new file mode 100644
index 000000000..0bbe62c2c
--- /dev/null
+++ b/q65w/libm65/sec_midn.f90
@@ -0,0 +1,11 @@
+real function sec_midn()
+  sec_midn=secnds(0.0)
+  return
+end function sec_midn
+
+subroutine sleep_msec(n)
+
+  call usleep(1000*n)
+
+  return
+end subroutine sleep_msec
diff --git a/q65w/libm65/set.f90 b/q65w/libm65/set.f90
new file mode 100644
index 000000000..ff7679889
--- /dev/null
+++ b/q65w/libm65/set.f90
@@ -0,0 +1,31 @@
+subroutine set(a,y,n)
+  real y(n)
+  do i=1,n
+     y(i)=a
+  enddo
+  return
+end subroutine set
+
+subroutine move(x,y,n)
+  real x(n),y(n)
+  do i=1,n
+     y(i)=x(i)
+  enddo
+  return
+end subroutine move
+
+subroutine zero(x,n)
+  real x(n)
+  do i=1,n
+     x(i)=0.0
+  enddo
+  return
+end subroutine zero
+
+subroutine add(a,b,c,n)
+  real a(n),b(n),c(n)
+  do i=1,n
+     c(i)=a(i)+b(i)
+  enddo
+  return
+end subroutine add
diff --git a/q65w/libm65/setup65.f90 b/q65w/libm65/setup65.f90
new file mode 100644
index 000000000..b1a867d18
--- /dev/null
+++ b/q65w/libm65/setup65.f90
@@ -0,0 +1,96 @@
+subroutine setup65
+
+! Defines arrays related to the JT65 pseudo-random synchronizing pattern.
+! Executed at program start.
+
+  integer nprc(126)
+  common/prcom/pr(126),mdat(126),mref(126,2),mdat2(126),mref2(126,2)
+
+! JT65
+  data nprc/                                    &
+       1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0, &
+       0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1, &
+       0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1, &
+       0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1, &
+       1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, &
+       0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, &
+       1,1,1,1,1,1/
+  data mr2/0/                !Silence compiler warning
+
+! Put the appropriate pseudo-random sequence into pr
+  nsym=126
+  do i=1,nsym
+     pr(i)=2*nprc(i)-1
+  enddo
+
+! Determine locations of data and reference symbols
+  k=0
+  mr1=0
+  do i=1,nsym
+     if(pr(i).lt.0.0) then
+        k=k+1
+        mdat(k)=i
+     else
+        mr2=i
+        if(mr1.eq.0) mr1=i
+     endif
+  enddo
+  nsig=k
+
+! Determine the reference symbols for each data symbol.
+  do k=1,nsig
+     m=mdat(k)
+     mref(k,1)=mr1
+     do n=1,10                     !Get ref symbol before data
+        if((m-n).gt.0) then
+           if (pr(m-n).gt.0.0) go to 10
+        endif
+     enddo
+     go to 12
+10   mref(k,1)=m-n
+12   mref(k,2)=mr2
+     do n=1,10                     !Get ref symbol after data
+        if((m+n).le.nsym) then
+           if (pr(m+n).gt.0.0) go to 20
+        endif
+     enddo
+     go to 22
+20   mref(k,2)=m+n
+22 enddo
+
+! Now do it all again, using opposite logic on pr(i)
+  k=0
+  mr1=0
+  do i=1,nsym
+     if(pr(i).gt.0.0) then
+        k=k+1
+        mdat2(k)=i
+     else
+        mr2=i
+        if(mr1.eq.0) mr1=i
+     endif
+  enddo
+  nsig=k
+
+  do k=1,nsig
+     m=mdat2(k)
+     mref2(k,1)=mr1
+     do n=1,10
+        if((m-n).gt.0) then
+           if (pr(m-n).lt.0.0) go to 110
+        endif
+     enddo
+     go to 112
+110  mref2(k,1)=m-n
+112  mref2(k,2)=mr2
+     do n=1,10
+        if((m+n).le.nsym) then
+           if (pr(m+n).lt.0.0) go to 120
+        endif
+     enddo
+     go to 122
+120  mref2(k,2)=m+n
+122 enddo
+
+  return
+end subroutine setup65
diff --git a/q65w/libm65/shell.f90 b/q65w/libm65/shell.f90
new file mode 100644
index 000000000..d7365bfc9
--- /dev/null
+++ b/q65w/libm65/shell.f90
@@ -0,0 +1,27 @@
+subroutine shell(n,a)
+  integer n
+  real a(n)
+  integer i,j,inc
+  real v
+
+  inc=1
+1 inc=3*inc+1
+  if(inc.le.n) go to 1
+2  inc=inc/3
+
+  do i=inc+1,n
+     v=a(i)
+     j=i
+3    if(a(j-inc).gt.v) then
+        a(j)=a(j-inc)
+        j=j-inc
+        if(j.le.inc) go to 4
+        go to 3
+     endif
+4    a(j)=v
+  enddo
+
+  if(inc.gt.1) go to 2
+
+  return
+end subroutine shell
diff --git a/q65w/libm65/sleep.h b/q65w/libm65/sleep.h
new file mode 100644
index 000000000..df60bc92a
--- /dev/null
+++ b/q65w/libm65/sleep.h
@@ -0,0 +1,32 @@
+/*
+ * sleep.h  1.0 02/03/10
+ *
+ * Defines cross-platform sleep, usleep, etc.
+ *
+ * By Wu Yongwei
+ *
+ */
+
+#ifndef _SLEEP_H
+#define _SLEEP_H
+
+#ifdef _WIN32
+# if defined(_NEED_SLEEP_ONLY) && (defined(_MSC_VER) || defined(__MINGW32__))
+#  include <stdlib.h>
+#  define sleep(t) _sleep((t) * 1000)
+# else
+#  include <windows.h>
+#  define sleep(t)  Sleep((t) * 1000)
+# endif
+# ifndef _NEED_SLEEP_ONLY
+#  define msleep(t) Sleep(t)
+#  define usleep(t) Sleep((t) / 1000)
+# endif
+#else
+# include <unistd.h>
+# ifndef _NEED_SLEEP_ONLY
+#  define msleep(t) usleep((t) * 1000)
+# endif
+#endif
+
+#endif /* _SLEEP_H */
diff --git a/q65w/libm65/sleep_msec.f90 b/q65w/libm65/sleep_msec.f90
new file mode 100644
index 000000000..1a8dbe4f9
--- /dev/null
+++ b/q65w/libm65/sleep_msec.f90
@@ -0,0 +1,4 @@
+subroutine sleep_msec(n)
+  call usleep(n*1000)
+  return
+end subroutine sleep_msec
diff --git a/q65w/libm65/smo.f90 b/q65w/libm65/smo.f90
new file mode 100644
index 000000000..c42de7c60
--- /dev/null
+++ b/q65w/libm65/smo.f90
@@ -0,0 +1,19 @@
+subroutine smo(x,npts,y,nadd)
+
+  real x(npts)
+  real y(npts)
+
+  nh=nadd/2
+  do i=1+nh,npts-nh
+     sum=0.
+     do j=-nh,nh
+        sum=sum + x(i+j)
+     enddo
+     y(i)=sum
+  enddo
+  x=y
+  x(:nh)=0.
+  x(npts-nh+1:)=0.
+
+  return
+end subroutine smo
diff --git a/q65w/libm65/sort.f90 b/q65w/libm65/sort.f90
new file mode 100644
index 000000000..8a05da288
--- /dev/null
+++ b/q65w/libm65/sort.f90
@@ -0,0 +1,6 @@
+subroutine sort(n,arr)
+
+  call ssort(arr,tmp,n,1)
+  
+  return
+end subroutine sort
diff --git a/q65w/libm65/ssort.f b/q65w/libm65/ssort.f
new file mode 100644
index 000000000..fa508ace6
--- /dev/null
+++ b/q65w/libm65/ssort.f
@@ -0,0 +1,287 @@
+      subroutine ssort (x,y,n,kflag)
+c***purpose  sort an array and optionally make the same interchanges in
+c            an auxiliary array.  the array may be sorted in increasing
+c            or decreasing order.  a slightly modified quicksort
+c            algorithm is used.
+c
+c   ssort sorts array x and optionally makes the same interchanges in
+c   array y.  the array x may be sorted in increasing order or
+c   decreasing order.  a slightly modified quicksort algorithm is used.
+c
+c   description of parameters
+c      x - array of values to be sorted
+c      y - array to be (optionally) carried along
+c      n - number of values in array x to be sorted
+c      kflag - control parameter
+c            =  2  means sort x in increasing order and carry y along.
+c            =  1  means sort x in increasing order (ignoring y)
+c            = -1  means sort x in decreasing order (ignoring y)
+c            = -2  means sort x in decreasing order and carry y along.
+
+      integer kflag, n
+!      real x(n), y(n)
+!      real r, t, tt, tty, ty
+      integer x(n), y(n)
+      integer r, t, tt, tty, ty
+      integer i, ij, j, k, kk, l, m, nn
+      integer il(21), iu(21)
+
+      nn = n
+      if (nn .lt. 1) then
+!         print*,'ssort: The number of sort elements is not positive.'
+!         print*,'ssort: n = ',nn,'   kflag = ',kflag
+         return
+      endif
+c
+      kk = abs(kflag)
+      if (kk.ne.1 .and. kk.ne.2) then
+         print *,
+     +      'the sort control parameter, k, is not 2, 1, -1, or -2.'
+         return
+      endif
+c
+c     alter array x to get decreasing order if needed
+c
+      if (kflag .le. -1) then
+         do 10 i=1,nn
+            x(i) = -x(i)
+   10    continue
+      endif
+c
+      if (kk .eq. 2) go to 100
+c
+c     sort x only
+c
+      m = 1
+      i = 1
+      j = nn
+      r = 0.375e0
+c
+   20 if (i .eq. j) go to 60
+      if (r .le. 0.5898437e0) then
+         r = r+3.90625e-2
+      else
+         r = r-0.21875e0
+      endif
+c
+   30 k = i
+c
+c     select a central element of the array and save it in location t
+c
+      ij = i + int((j-i)*r)
+      t = x(ij)
+c
+c     if first element of array is greater than t, interchange with t
+c
+      if (x(i) .gt. t) then
+         x(ij) = x(i)
+         x(i) = t
+         t = x(ij)
+      endif
+      l = j
+c
+c     if last element of array is less than than t, interchange with t
+c
+      if (x(j) .lt. t) then
+         x(ij) = x(j)
+         x(j) = t
+         t = x(ij)
+c
+c        if first element of array is greater than t, interchange with t
+c
+         if (x(i) .gt. t) then
+            x(ij) = x(i)
+            x(i) = t
+            t = x(ij)
+         endif
+      endif
+c
+c     find an element in the second half of the array which is smaller
+c     than t
+c
+   40 l = l-1
+      if (x(l) .gt. t) go to 40
+c
+c     find an element in the first half of the array which is greater
+c     than t
+c
+   50 k = k+1
+      if (x(k) .lt. t) go to 50
+c
+c     interchange these elements
+c
+      if (k .le. l) then
+         tt = x(l)
+         x(l) = x(k)
+         x(k) = tt
+         go to 40
+      endif
+c
+c     save upper and lower subscripts of the array yet to be sorted
+c
+      if (l-i .gt. j-k) then
+         il(m) = i
+         iu(m) = l
+         i = k
+         m = m+1
+      else
+         il(m) = k
+         iu(m) = j
+         j = l
+         m = m+1
+      endif
+      go to 70
+c
+c     begin again on another portion of the unsorted array
+c
+   60 m = m-1
+      if (m .eq. 0) go to 190
+      i = il(m)
+      j = iu(m)
+c
+   70 if (j-i .ge. 1) go to 30
+      if (i .eq. 1) go to 20
+      i = i-1
+c
+   80 i = i+1
+      if (i .eq. j) go to 60
+      t = x(i+1)
+      if (x(i) .le. t) go to 80
+      k = i
+c
+   90 x(k+1) = x(k)
+      k = k-1
+      if (t .lt. x(k)) go to 90
+      x(k+1) = t
+      go to 80
+c
+c     sort x and carry y along
+c
+  100 m = 1
+      i = 1
+      j = nn
+      r = 0.375e0
+c
+  110 if (i .eq. j) go to 150
+      if (r .le. 0.5898437e0) then
+         r = r+3.90625e-2
+      else
+         r = r-0.21875e0
+      endif
+c
+  120 k = i
+c
+c     select a central element of the array and save it in location t
+c
+      ij = i + int((j-i)*r)
+      t = x(ij)
+      ty = y(ij)
+c
+c     if first element of array is greater than t, interchange with t
+c
+      if (x(i) .gt. t) then
+         x(ij) = x(i)
+         x(i) = t
+         t = x(ij)
+         y(ij) = y(i)
+         y(i) = ty
+         ty = y(ij)
+      endif
+      l = j
+c
+c     if last element of array is less than t, interchange with t
+c
+      if (x(j) .lt. t) then
+         x(ij) = x(j)
+         x(j) = t
+         t = x(ij)
+         y(ij) = y(j)
+         y(j) = ty
+         ty = y(ij)
+c
+c        if first element of array is greater than t, interchange with t
+c
+         if (x(i) .gt. t) then
+            x(ij) = x(i)
+            x(i) = t
+            t = x(ij)
+            y(ij) = y(i)
+            y(i) = ty
+            ty = y(ij)
+         endif
+      endif
+c
+c     find an element in the second half of the array which is smaller
+c     than t
+c
+  130 l = l-1
+      if (x(l) .gt. t) go to 130
+c
+c     find an element in the first half of the array which is greater
+c     than t
+c
+  140 k = k+1
+      if (x(k) .lt. t) go to 140
+c
+c     interchange these elements
+c
+      if (k .le. l) then
+         tt = x(l)
+         x(l) = x(k)
+         x(k) = tt
+         tty = y(l)
+         y(l) = y(k)
+         y(k) = tty
+         go to 130
+      endif
+c
+c     save upper and lower subscripts of the array yet to be sorted
+c
+      if (l-i .gt. j-k) then
+         il(m) = i
+         iu(m) = l
+         i = k
+         m = m+1
+      else
+         il(m) = k
+         iu(m) = j
+         j = l
+         m = m+1
+      endif
+      go to 160
+c
+c     begin again on another portion of the unsorted array
+c
+  150 m = m-1
+      if (m .eq. 0) go to 190
+      i = il(m)
+      j = iu(m)
+c
+  160 if (j-i .ge. 1) go to 120
+      if (i .eq. 1) go to 110
+      i = i-1
+c
+  170 i = i+1
+      if (i .eq. j) go to 150
+      t = x(i+1)
+      ty = y(i+1)
+      if (x(i) .le. t) go to 170
+      k = i
+c
+  180 x(k+1) = x(k)
+      y(k+1) = y(k)
+      k = k-1
+      if (t .lt. x(k)) go to 180
+      x(k+1) = t
+      y(k+1) = ty
+      go to 170
+c
+c     clean up
+c
+  190 if (kflag .le. -1) then
+         do 200 i=1,nn
+            x(i) = -x(i)
+  200    continue
+      endif
+      return
+      end
diff --git a/q65w/libm65/sun.f90 b/q65w/libm65/sun.f90
new file mode 100644
index 000000000..ec011b66c
--- /dev/null
+++ b/q65w/libm65/sun.f90
@@ -0,0 +1,88 @@
+subroutine sun(y,m,DD,UT,lon,lat,RA,Dec,LST,Az,El,mjd,day)
+
+  implicit none
+
+  integer y                         !Year
+  integer m                         !Month
+  integer DD                        !Day
+  integer mjd                       !Modified Julian Date
+  real UT                           !UTC in hours
+  real RA,Dec                       !RA and Dec of sun
+
+! NB: Double caps here are single caps in the writeup.
+
+! Orbital elements of the Sun (also N=0, i=0, a=1):
+  real w                            !Argument of perihelion
+  real e                            !Eccentricity
+  real MM                           !Mean anomaly
+  real Ls                           !Mean longitude
+
+! Other standard variables:
+  real v                            !True anomaly
+  real EE                           !Eccentric anomaly
+  real ecl                          !Obliquity of the ecliptic
+  real d                            !Ephemeris time argument in days
+  real r                            !Distance to sun, AU
+  real xv,yv                        !x and y coords in ecliptic
+  real lonsun                       !Ecliptic long and lat of sun
+! Ecliptic coords of sun (geocentric)
+  real xs,ys
+! Equatorial coords of sun (geocentric)
+  real xe,ye,ze
+  real lon,lat
+  real GMST0,LST,HA
+  real xx,yy,zz
+  real xhor,yhor,zhor
+  real Az,El
+
+  real day
+  real rad
+  data rad/57.2957795/
+
+! Time in days, with Jan 0, 2000 equal to 0.0:
+  d=367*y - 7*(y+(m+9)/12)/4 + 275*m/9 + DD - 730530 + UT/24.0
+  mjd=d + 51543
+  ecl = 23.4393 - 3.563e-7 * d
+
+! Compute updated orbital elements for Sun:
+  w = 282.9404 + 4.70935e-5 * d
+  e = 0.016709 - 1.151e-9 * d
+  MM = mod(356.0470d0 + 0.9856002585d0 * d + 360000.d0,360.d0)
+  Ls = mod(w+MM+720.0,360.0)
+
+  EE = MM + e*rad*sin(MM/rad) * (1.0 + e*cos(M/rad))
+  EE = EE - (EE - e*rad*sin(EE/rad)-MM) / (1.0 - e*cos(EE/rad))
+
+  xv = cos(EE/rad) - e
+  yv = sqrt(1.0-e*e) * sin(EE/rad)
+  v = rad*atan2(yv,xv)
+  r = sqrt(xv*xv + yv*yv)
+  lonsun = mod(v + w + 720.0,360.0)
+! Ecliptic coordinates of sun (rectangular):
+  xs = r * cos(lonsun/rad)
+  ys = r * sin(lonsun/rad)
+
+! Equatorial coordinates of sun (rectangular):
+  xe = xs
+  ye = ys * cos(ecl/rad)
+  ze = ys * sin(ecl/rad)
+
+! RA and Dec in degrees:
+  RA = rad*atan2(ye,xe)
+  Dec = rad*atan2(ze,sqrt(xe*xe + ye*ye))
+
+  GMST0 = (Ls + 180.0)/15.0
+  LST = mod(GMST0+UT+lon/15.0+48.0,24.0)    !LST in hours
+  HA = 15.0*LST - RA                        !HA in degrees
+  xx = cos(HA/rad)*cos(Dec/rad)
+  yy = sin(HA/rad)*cos(Dec/rad)
+  zz =             sin(Dec/rad)
+  xhor = xx*sin(lat/rad) - zz*cos(lat/rad)
+  yhor = yy
+  zhor = xx*cos(lat/rad) + zz*sin(lat/rad)
+  Az = mod(rad*atan2(yhor,xhor) + 180.0 + 360.0,360.0)
+  El = rad*asin(zhor)
+  day=d-1.5
+
+  return
+end subroutine sun
diff --git a/q65w/libm65/symspec.f90 b/q65w/libm65/symspec.f90
new file mode 100644
index 000000000..e4160cfd1
--- /dev/null
+++ b/q65w/libm65/symspec.f90
@@ -0,0 +1,224 @@
+subroutine symspec(k,nxpol,ndiskdat,nb,nbslider,idphi,nfsample,    &
+     fgreen,iqadjust,iqapply,gainx,gainy,phasex,phasey,rejectx,rejecty,  &
+     pxdb,pydb,ssz5a,nkhz,ihsym,nzap,slimit,lstrong)
+
+!  k        pointer to the most recent new data
+!  nxpol    0/1 to indicate single- or dual-polarization
+!  ndiskdat 0/1 to indicate if data from disk
+!  nb       0/1 status of noise blanker
+!  idphi    Phase correction for Y channel, degrees
+!  nfsample sample rate (Hz)
+!  fgreen   Frequency of green marker in I/Q calibrate mode (-48.0 to +48.0 kHz)
+!  iqadjust 0/1 to indicate whether IQ adjustment is active
+!  iqapply  0/1 to indicate whether to apply I/Q calibration
+!  pxdb     power in x channel (0-60 dB)
+!  pydb     power in y channel (0-60 dB)
+!  ssz5a    polarized spectrum, for waterfall display
+!  nkhz     integer kHz portion of center frequency, e.g., 125 for 144.125
+!  ihsym    index number of this half-symbol (1-322)
+!  nzap     number of samples zero'ed by noise blanker
+
+  include 'njunk.f90'
+  parameter (NSMAX=60*96000)          !Total sample intervals per minute
+  parameter (NFFT=32768)              !Length of FFTs
+  real*8 ts,hsym
+  real*8 fcenter
+  common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fcenter,nutc,  &
+       junk(NJUNK)
+  real*4 ssz5a(NFFT),w(NFFT),w2a(NFFT),w2b(NFFT)
+  complex z,zfac
+  complex zsumx,zsumy
+  complex cx(NFFT),cy(NFFT)
+  complex cx00(NFFT),cy00(NFFT)
+  complex cx0(0:1023),cx1(0:1023)
+  complex cy0(0:1023),cy1(0:1023)
+  logical*1 lstrong(0:1023)
+  data rms/999.0/,k0/99999999/,nadjx/0/,nadjy/0/
+  save
+
+  nfast=1
+  if(k.gt.5751000) go to 999
+  if(k.lt.NFFT) then
+     ihsym=0
+     go to 999             !Wait for enough samples to start
+  endif
+  if(k0.eq.99999999) then
+     pi=4.0*atan(1.0)
+     w2a=0.
+     w2b=0.
+     do i=1,NFFT
+        w(i)=(sin(i*pi/NFFT))**2                          !Window for nfast=1
+        if(i.lt.17833) w2a(i)=(sin(i*pi/17832.925))**2    !Window a for nfast=2
+        j=i-8916
+        if(j.gt.0 .and. j.lt.17833) w2b(i)=(sin(j*pi/17832.925))**2    ! b
+     enddo
+     w2a=sqrt(2.0)*w2a
+     w2b=sqrt(2.0)*w2b
+  endif
+
+  hsym=2048.d0*96000.d0/11025.d0      !Samples per JT65 half-symbol
+  if(nfsample.eq.95238)   hsym=2048.d0*95238.1d0/11025.d0
+
+  if(k.lt.k0) then
+     ts=1.d0 - hsym
+     savg=0.
+     ihsym=0
+     k1=0
+     if(ndiskdat.eq.0) dd(1:4,k+1:5760000)=0.  !### Should not be needed ??? ###
+  endif
+  k0=k
+
+  nzap=0
+  sigmas=1.5*(10.0**(0.01*nbslider)) + 0.7
+  peaklimit=sigmas*max(10.0,rms)
+  faclim=3.0
+  px=0.
+  py=0.
+
+  iqapply0=0
+  iqadjust0=0
+  if(iqadjust.ne.0) iqapply0=0
+  nwindow=2
+!  nwindow=0                                    !### No windowing ###
+  nfft2=1024
+  kstep=nfft2
+  if(nwindow.ne.0) kstep=nfft2/2
+  nblks=(k-k1)/kstep
+  do nblk=1,nblks
+     j=k1+1
+     do i=0,nfft2-1
+        cx0(i)=cmplx(dd(1,j+i),dd(2,j+i))
+        if(nxpol.ne.0) cy0(i)=cmplx(dd(3,j+i),dd(4,j+i))
+     enddo
+     call timf2(k,nxpol,nfft2,nwindow,nb,peaklimit,iqadjust0,iqapply0,       &
+          faclim,cx0,cy0,gainx,gainy,phasex,phasey,cx1,cy1,slimit,lstrong,   &
+          px,py,nzap)
+
+     do i=0,kstep-1
+        dd(1,j+i)=real(cx1(i))
+        dd(2,j+i)=aimag(cx1(i))
+        if(nxpol.ne.0) then
+           dd(3,j+i)=real(cy1(i))
+           dd(4,j+i)=aimag(cy1(i))
+        endif
+     enddo
+     k1=k1+kstep
+  enddo
+
+  npts=NFFT                           !Samples used in each half-symbol FFT
+
+  ts=ts+hsym
+  ja=ts                               !Index of first sample
+  jb=ja+npts-1                        !Last sample
+
+  i=0
+  fac=0.0002
+  dphi=idphi/57.2957795
+  zfac=fac*cmplx(cos(dphi),sin(dphi))
+  do j=ja,jb                          !Copy data into cx, cy
+     x1=dd(1,j)
+     x2=dd(2,j)
+     if(nxpol.ne.0) then
+        x3=dd(3,j)
+        x4=dd(4,j)
+     else
+        x3=0.
+        x4=0.
+     endif
+     i=i+1
+     cx(i)=fac*cmplx(x1,x2)
+     cy(i)=zfac*cmplx(x3,x4)          !NB: cy includes dphi correction
+  enddo
+
+  if(nzap/178.lt.50 .and. (ndiskdat.eq.0 .or. ihsym.lt.280)) then
+     nsum=nblks*kstep - nzap
+     if(nsum.le.0) nsum=1
+     rmsx=sqrt(0.5*px/nsum)
+     rmsy=sqrt(0.5*py/nsum)
+     rms=rmsx
+     if(nxpol.ne.0) rms=sqrt((px+py)/(4.0*nsum))
+  endif
+  pxdb=0.
+  pydb=0.
+  if(rmsx.gt.1.0) pxdb=20.0*log10(rmsx)
+  if(rmsy.gt.1.0) pydb=20.0*log10(rmsy)
+  if(pxdb.gt.60.0) pxdb=60.0
+  if(pydb.gt.60.0) pydb=60.0
+
+  cx00=cx
+  if(nxpol.ne.0) cy00=cy
+
+  do mm=1,nfast
+     ihsym=ihsym+1
+     if(nfast.eq.1) then
+        cx=w*cx00                           !Apply window for 2nd forward FFT
+        if(nxpol.ne.0) cy=w*cy00
+     else
+        if(mm.eq.1) then
+           cx=w2a*cx00
+           if(nxpol.ne.0) cy=w2a*cy00
+        else
+           cx=w2b*cx00
+           if(nxpol.ne.0) cy=w2b*cy00
+        endif
+     endif
+
+     call four2a(cx,NFFT,1,1,1)          !Second forward FFT (X)
+     if(iqadjust.eq.0) nadjx=0
+     if(iqadjust.ne.0 .and. nadjx.lt.50) call iqcal(nadjx,cx,NFFT,    &
+          gainx,phasex,zsumx,ipkx,rejectx0)
+     if(iqapply.ne.0) call iqfix(cx,NFFT,gainx,phasex)
+
+     if(nxpol.ne.0) then
+        call four2a(cy,NFFT,1,1,1)       !Second forward FFT (Y)
+        if(iqadjust.eq.0) nadjy=0
+        if(iqadjust.ne.0 .and. nadjy.lt.50) call iqcal(nadjy,cy,NFFT, &
+             gainy,phasey,zsumy,ipky,rejecty)
+        if(iqapply.ne.0) call iqfix(cy,NFFT,gainy,phasey)
+     endif
+
+     n=min(322,ihsym)
+     do i=1,NFFT
+        sx=real(cx(i))**2 + aimag(cx(i))**2  
+        ss(1,n,i)=sx                    ! Pol = 0
+        savg(1,i)=savg(1,i) + sx
+
+        if(nxpol.ne.0) then
+           z=cx(i) + cy(i)
+           s45=0.5*(real(z)**2 + aimag(z)**2)
+           ss(2,n,i)=s45                   ! Pol = 45
+           savg(2,i)=savg(2,i) + s45
+
+           sy=real(cy(i))**2 + aimag(cy(i))**2
+           ss(3,n,i)=sy                    ! Pol = 90
+           savg(3,i)=savg(3,i) + sy
+        
+           z=cx(i) - cy(i)
+           s135=0.5*(real(z)**2 + aimag(z)**2)
+           ss(4,n,i)=s135                  ! Pol = 135
+           savg(4,i)=savg(4,i) + s135
+
+           z=cx(i)*conjg(cy(i))
+           q=sx - sy
+           u=2.0*real(z)
+           ssz5a(i)=0.707*sqrt(q*q + u*u)    !Spectrum of linear polarization
+! Leif's formula:
+!     ssz5a(i)=0.5*(sx+sy) + (real(z)**2 + aimag(z)**2 - sx*sy)/(sx+sy)
+        else
+           ssz5a(i)=sx
+        endif
+     enddo
+  enddo
+
+  if(ihsym.eq.278) then
+     if(iqadjust.ne.0 .and. ipkx.ne.0 .and. ipky.ne.0) then
+        rejectx=10.0*log10(savg(1,1+nfft-ipkx)/savg(1,1+ipkx))
+        rejecty=10.0*log10(savg(3,1+nfft-ipky)/savg(3,1+ipky))
+     endif
+  endif
+
+  nkhz=nint(1000.d0*(fcenter-int(fcenter)))
+  if(fcenter.eq.0.d0) nkhz=125
+
+999 return
+end subroutine symspec
diff --git a/q65w/libm65/synctest.f90 b/q65w/libm65/synctest.f90
new file mode 100644
index 000000000..a710daa13
--- /dev/null
+++ b/q65w/libm65/synctest.f90
@@ -0,0 +1,57 @@
+program synctest
+
+  ! Program to test an algorithm for detecting sync signals for both
+  ! JT65 and Q65-60x signals and rejecting birdies in MAP65 data.
+  ! The important work is done in module wideband_sync.
+
+  use timer_module, only: timer
+  use timer_impl, only: init_timer, fini_timer
+  use wideband_sync
+
+  real ss(4,322,NFFT),savg(4,NFFT)
+!  real candidate(MAX_CANDIDATES,5)             !snr1,f0,xdt0,ipol,flip
+  character*8 arg
+  type(candidate) :: cand(MAX_CANDIDATES)
+  
+  nargs=iargc()
+  if(nargs.ne.5) then
+     print*,'Usage:   synctest iutc nfa nfb nts_jt65 nts_q65'
+     print*,'Example: synctest 1814  23  83      2        1'
+     go to 999
+  endif
+  call getarg(1,arg)
+  read (arg,*) iutc
+  call getarg(2,arg)
+  read (arg,*) nfa
+  call getarg(3,arg)
+  read (arg,*) nfb
+  call getarg(4,arg)
+  read (arg,*) nts_jt65
+  call getarg(5,arg)
+  read (arg,*) nts_q65
+
+  open(50,file='50.a',form='unformatted',status='old')
+  do ifile=1,9999
+     read(50,end=998) nutc,npol,ss(1:npol,:,:),savg(1:npol,:)
+     if(nutc.eq.iutc) exit
+  enddo
+  close(50)
+
+  call init_timer('timer.out')
+  call timer('synctest',0)
+
+  call timer('get_cand',0)
+  call  get_candidates(ss,savg,302,.true.,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
+  call timer('get_cand',1)
+
+  do k=1,ncand
+     write(*,1010) k,cand(k)%snr,cand(k)%f,cand(k)%f+77,cand(k)%xdt,    &
+          cand(k)%ipol,cand(k)%iflip
+1010 format(i3,4f10.3,2i3)
+  enddo
+
+998 call timer('synctest',1)
+  call timer('synctest',101)
+  call fini_timer()
+
+999 end program synctest
diff --git a/q65w/libm65/synctst.f90 b/q65w/libm65/synctst.f90
new file mode 100644
index 000000000..248c7e197
--- /dev/null
+++ b/q65w/libm65/synctst.f90
@@ -0,0 +1,84 @@
+program synctst
+
+! Tests JT65B2 sync patterns
+
+  parameter (LAGMAX=20)
+  real ccf0(0:LAGMAX),ccf2(0:LAGMAX),ccf3(0:LAGMAX)
+  character*12 arg
+  integer npr(126),np0(126),np1(126),npr2(126)
+  data npr/1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0,  &
+           0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,  &
+           0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1,  &
+           0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,  &
+           1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,  &
+           0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,  &
+           1,1,1,1,1,1/
+
+  nargs=iargc()
+  if(nargs.ne.1) then
+     print*,'Usage: synctst iters'
+     go to 999
+  endif
+  call getarg(1,arg)
+  read(arg,*) iters
+
+  worst=0.
+  do lag=0,LAGMAX
+     nsum=0
+     do i=1,126-lag
+        nsum=nsum + npr(i)*npr(lag+i)
+     enddo
+     ccf0(lag)=2.0*nsum/(126.0-lag)
+     if(lag.ge.1 .and. ccf0(lag).gt.worst) worst=ccf0(lag)
+  enddo
+
+  best2=1.0
+  do iter=1,iters
+
+10   np0=0
+     np1=0
+     n0=0
+     do i=1,126
+        if(npr(i).eq.1) then
+           call random_number(r)
+           if(r.lt.0.5) then
+              np0(i)=1
+              n0=n0+1
+           else
+              np1(i)=1
+           endif
+        endif
+     enddo
+     if(n0.ne.31 .and. n0.ne.32) go to 10
+
+     worst2=0.
+     do lag=0,LAGMAX
+        nsum=0
+        do i=1,126-lag
+           nsum=nsum + np0(i)*np0(lag+i) + np1(i)*np1(lag+i)
+        enddo
+        ccf2(lag)=2.0*nsum/(126.0-lag)
+        if(lag.ge.1 .and. ccf2(lag).gt.worst2) then
+           worst2=ccf2(lag)
+           lagbad=lag
+        endif
+     enddo
+     if(worst2.lt.best2) then
+        best2=worst2
+        lagbest=lagbad
+        n0best=n0
+        ccf3=ccf2
+        npr2=np0 + 2*np1           
+     endif
+  enddo
+
+  do lag=0,LAGMAX
+     write(13,1100) lag,ccf0(lag),ccf3(lag)
+1100 format(i3,2f10.3)
+  enddo
+
+  print*,worst,best2,n0best,lagbest
+  write(*,1110) npr2
+1110 format((8x,20(i1,',')))
+
+999 end program synctst
diff --git a/q65w/libm65/synctst2.f90 b/q65w/libm65/synctst2.f90
new file mode 100644
index 000000000..8ff4971a3
--- /dev/null
+++ b/q65w/libm65/synctst2.f90
@@ -0,0 +1,91 @@
+program synctst2
+
+! Tests JT65B2 sync patterns
+
+  parameter (LAGMAX=20)
+  real ccf0(0:LAGMAX),ccf1(0:LAGMAX),ccf2(0:LAGMAX),ccf3(0:LAGMAX)
+  character arg*12,line*64
+  integer*8 n8
+  integer npr(126),np0(126),np1(126),npr1(126),npr2(126)
+  data npr/1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0,  &
+           0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,  &
+           0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1,  &
+           0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1,  &
+           1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,  &
+           0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1,  &
+           1,1,1,1,1,1/
+
+  data npr2/1,0,0,1,2,0,0,0,2,1,1,2,2,2,0,2,0,2,0,0,  &
+            0,1,0,2,1,0,0,1,0,0,0,2,1,1,0,0,1,1,2,2,  &
+            0,2,2,0,2,1,1,1,0,0,0,1,2,0,1,0,2,0,1,1,  &
+            0,0,2,2,0,1,0,1,0,2,0,0,2,0,0,0,0,0,0,1,  &
+            1,0,0,0,0,0,0,0,1,2,0,2,0,0,2,0,2,1,0,1,  &
+            0,2,0,1,0,0,2,2,0,0,1,0,0,2,0,0,0,0,1,1,  &
+            1,2,1,2,1,2/
+
+  data n8/x'4314f4725bb357e0'/
+
+  write(*,1102) n8
+  write(line,1102) n8
+1102 format(b63)
+  read(line,1104) npr1(1:63)
+1104 format(63i1)
+  npr1(64:126)=npr1(1:63)
+
+  worst=0.
+  do lag=0,LAGMAX
+     nsum=0
+     do i=1,126-lag
+        nsum=nsum + npr(i)*npr(lag+i)
+     enddo
+     ccf0(lag)=2.0*nsum/(126.0-lag)
+     if(lag.ge.1 .and. ccf0(lag).gt.worst) worst=ccf0(lag)
+  enddo
+  
+
+  worst1=0.
+  do lag=0,LAGMAX
+     nsum=0
+     do i=1,126-lag
+        nsum=nsum + npr1(i)*npr1(lag+i)
+     enddo
+     ccf1(lag)=(63.0/64.0)*2.0*nsum/(126.0-lag)
+     if(lag.ge.1 .and. ccf1(lag).gt.worst1) worst1=ccf1(lag)
+  enddo
+  ccf1=ccf1/ccf1(0)
+  worst1=worst1/ccf1(0)
+
+  np0=0
+  np1=0
+  n0=0
+  do i=1,126
+     if(npr2(i).eq.1) then
+        np0(i)=1
+        n0=n0+1
+     else if(npr2(i).eq.2) then
+        np1(i)=1
+     endif
+  enddo
+  
+  worst2=0.
+  do lag=0,LAGMAX
+     nsum=0
+     do i=1,126-lag
+        nsum=nsum + np0(i)*np0(lag+i) + np1(i)*np1(lag+i)
+     enddo
+     ccf2(lag)=2.0*nsum/(126.0-lag)
+     if(lag.ge.1 .and. ccf2(lag).gt.worst2) then
+        worst2=ccf2(lag)
+        lagbad=lag
+     endif
+  enddo
+
+  do lag=0,LAGMAX
+     write(13,1100) lag,ccf0(lag),ccf1(lag),ccf2(lag)
+1100 format(i3,3f10.3)
+  enddo
+
+  print*,worst,worst1,worst2,n0,lagbad
+
+
+999 end program synctst2
diff --git a/q65w/libm65/tastro.f90 b/q65w/libm65/tastro.f90
new file mode 100644
index 000000000..fac5c8003
--- /dev/null
+++ b/q65w/libm65/tastro.f90
@@ -0,0 +1,35 @@
+program tastro
+
+  implicit real*8 (a-h,o-z)
+
+  character grid*6
+  character*9 cauxra,cauxdec
+
+  character*12 clock(3)
+  integer nt(8)
+  equivalence (nt(1),nyear)
+
+  grid='FN20qi'
+  nfreq=144
+  cauxra='00:00:00'
+  
+10 call date_and_time(clock(1),clock(2),clock(3),nt)
+  ih=ihour-ntz/60
+  if(ih.le.0) then
+     ih=ih+24
+     nday=nday+1
+  endif
+  uth8=ih + imin/60.d0 + isec/3600.d0 + ims/3600000.d0 
+  call astro0(nyear,month,nday,uth8,nfreq,grid,cauxra,cauxdec,       &
+     AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,  &
+     dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0,  &
+     RaAux8,DecAux8,AzAux8,ElAux8,width1,width2,w501,w502,xlst8)
+  
+  write(*,1010) nyear,month,nday,ih,imin,isec,AzMoon8,ElMoon8,          &
+       AzSun8,ElSun8,ndop,dgrd8,ntsky
+1010 format(i4,i3,i3,i4.2,':',i2.2,':',i2.2,4f8.1,i6,f6.1,i6)
+
+  call system('sleep 1')
+  go to 10
+
+end program tastro
diff --git a/q65w/libm65/timeval.h b/q65w/libm65/timeval.h
new file mode 100644
index 000000000..83c77d5a1
--- /dev/null
+++ b/q65w/libm65/timeval.h
@@ -0,0 +1,76 @@
+/*
+ * timeval.h    1.0 01/12/19
+ *
+ * Defines gettimeofday, timeval, etc. for Win32
+ *
+ * By Wu Yongwei
+ *
+ */
+
+#ifndef _TIMEVAL_H
+#define _TIMEVAL_H
+
+#ifdef _WIN32
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <time.h>
+
+#ifndef __GNUC__
+#define EPOCHFILETIME (116444736000000000i64)
+#else
+#define EPOCHFILETIME (116444736000000000LL)
+#endif
+
+//struct timeval {
+//    long tv_sec;        /* seconds */
+//    long tv_usec;  /* microseconds */
+//};
+
+/*
+struct timezone {
+    int tz_minuteswest; // minutes W of Greenwich
+int tz_dsttime;         // type of dst correction 
+};
+*/
+
+__inline int gettimeofday(struct timeval *tv, struct timezone *tz)
+{
+    FILETIME        ft;
+    LARGE_INTEGER   li;
+    __int64         t;
+    static int      tzflag;
+
+    if (tv)
+    {
+        GetSystemTimeAsFileTime(&ft);
+        li.LowPart  = ft.dwLowDateTime;
+        li.HighPart = ft.dwHighDateTime;
+        t  = li.QuadPart;       /* In 100-nanosecond intervals */
+        t -= EPOCHFILETIME;     /* Offset to the Epoch time */
+        t /= 10;                /* In microseconds */
+        tv->tv_sec  = (long)(t / 1000000);
+        tv->tv_usec = (long)(t % 1000000);
+    }
+
+    if (tz)
+    {
+        if (!tzflag)
+        {
+            _tzset();
+            tzflag++;
+        }
+        tz->tz_minuteswest = _timezone / 60;
+        tz->tz_dsttime = _daylight;
+    }
+
+    return 0;
+}
+
+#else  /* _WIN32 */
+
+#include <sys/time.h>
+
+#endif /* _WIN32 */
+
+#endif /* _TIMEVAL_H */
diff --git a/q65w/libm65/timf2.f90 b/q65w/libm65/timf2.f90
new file mode 100644
index 000000000..4873d0e95
--- /dev/null
+++ b/q65w/libm65/timf2.f90
@@ -0,0 +1,215 @@
+subroutine timf2(k,nxpol,nfft,nwindow,nb,peaklimit,iqadjust,iqapply,faclim, &
+  cx0,cy0,gainx,gainy,phasex,phasey,cx1,cy1,slimit,lstrong,px,py,nzap)
+
+! Sequential processing of time-domain I/Q data, using Linrad-like
+! "first FFT" and "first backward FFT".  
+
+!  cx0,cy0      - complex input data
+!  nfft      - length of FFTs
+!  nwindow   - 0 for no window, 2 for sin^2 window
+!  iqapply   - 0/1 determines if I/Q phase and amplitude corrections applied
+!  gainx,y   - gain error in Q channel, relative to I
+!  phasex,y  - phase error
+!  cx1,cy1   - output data
+
+! Non-windowed processing means no overlap, so kstep=nfft.  
+! Sin^2 window has 50% overlap, kstep=nfft/2.
+
+! Frequencies with strong signals are identified and separated.  The back
+! transforms are done separately for weak and strong signals, so that
+! noise blanking can be applied to the weak-signal portion.  Strong and
+! weak are finally re-combined in the time domain.
+
+  parameter (MAXFFT=1024,MAXNH=MAXFFT/2)
+  parameter (MAXSIGS=100)
+  complex cx0(0:nfft-1),cx1(0:nfft-1)
+  complex cy0(0:nfft-1),cy1(0:nfft-1)
+  complex cx(0:MAXFFT-1),cxt(0:MAXFFT-1)
+  complex cy(0:MAXFFT-1),cyt(0:MAXFFT-1)
+  complex cxs(0:MAXFFT-1),covxs(0:MAXNH-1)     !Strong X signals
+  complex cys(0:MAXFFT-1),covys(0:MAXNH-1)     !Strong Y signals
+  complex cxw(0:MAXFFT-1),covxw(0:MAXNH-1)     !Weak X signals
+  complex cyw(0:MAXFFT-1),covyw(0:MAXNH-1)     !Weak Y signals
+  real*4 w(0:MAXFFT-1)
+  real*4 s(0:MAXFFT-1)
+  logical*1 lstrong(0:MAXFFT-1),lprev
+  integer ia(MAXSIGS),ib(MAXSIGS)
+  complex h,u,v
+  logical first
+  data first/.true./
+  data k0/99999999/
+  save
+
+  if(faclim+iqadjust.eq.-9999.0) iqadjust=0   !Silence compiler warning.
+  if(first) then
+     pi=4.0*atan(1.0)
+     do i=0,nfft-1
+        w(i)=(sin(i*pi/nfft))**2
+     enddo
+     s=0.
+     nh=nfft/2
+     kstep=nfft
+     if(nwindow.eq.2) kstep=nh
+     fac=1.0/nfft
+     slimit=1.e30
+     first=.false.
+  endif
+
+  if(k.lt.k0) then
+     covxs=0.
+     covxw=0.
+     covys=0.
+     covyw=0.
+  endif
+  k0=k
+
+  cx(0:nfft-1)=cx0
+  if(nwindow.eq.2) cx(0:nfft-1)=w(0:nfft-1)*cx(0:nfft-1)
+  call four2a(cx,nfft,1,1,1)                       !First forward FFT (X)
+
+  if(nxpol.ne.0) then
+     cy(0:nfft-1)=cy0
+     if(nwindow.eq.2) cy(0:nfft-1)=w(0:nfft-1)*cy(0:nfft-1)
+     call four2a(cy,nfft,1,1,1)                    !First forward FFT (Y)
+  endif
+
+  if(iqapply.ne.0) then                            !Apply I/Q corrections (X)
+     h=gainx*cmplx(cos(phasex),sin(phasex))
+     v=0.
+     do i=0,nfft-1
+        u=cx(i)
+        if(i.gt.0) v=cx(nfft-i)
+        x=real(u)  + real(v)  - (aimag(u) + aimag(v))*aimag(h) +         &
+             (real(u) - real(v))*real(h)
+        y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h)  +         &
+             (real(u) - real(v))*aimag(h)
+        cxt(i)=0.5*cmplx(x,y)
+     enddo
+  else
+     cxt(0:nfft-1)=cx(0:nfft-1)
+  endif
+
+  if(nxpol.ne.0) then
+     if(iqapply.ne.0) then                         !Apply I/Q corrections (Y)
+        h=gainy*cmplx(cos(phasey),sin(phasey))
+        v=0.
+        do i=0,nfft-1
+           u=cy(i)
+           if(i.gt.0) v=cy(nfft-i)
+           x=real(u)  + real(v)  - (aimag(u) + aimag(v))*aimag(h) +         &
+                (real(u) - real(v))*real(h)
+           y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h)  +         &
+                (real(u) - real(v))*aimag(h)
+           cyt(i)=0.5*cmplx(x,y)
+        enddo
+     else
+        cyt(0:nfft-1)=cy(0:nfft-1)
+     endif
+  endif
+
+! Identify frequencies with strong signals, copy frequency-domain
+! data into array cs (strong) or cw (weak).
+
+  do i=0,nfft-1
+     p=real(cxt(i))**2 + aimag(cxt(i))**2
+     if(nxpol.ne.0) p=p + real(cyt(i))**2 + aimag(cyt(i))**2
+     s(i)=p
+  enddo
+  ave=sum(s(0:nfft-1))/nfft
+  lstrong(0:nfft-1)=s(0:nfft-1).gt.10.0*ave
+
+  nsigs=0
+  lprev=.false.
+  iwid=1
+  ib=-99
+  do i=0,nfft-1
+     if(lstrong(i) .and. (.not.lprev)) then
+        if(nsigs.lt.MAXSIGS) nsigs=nsigs+1
+        ia(nsigs)=i-iwid
+        if(ia(nsigs).lt.0) ia(nsigs)=0
+     endif
+     if(.not.lstrong(i) .and. lprev) then
+        ib(nsigs)=i-1+iwid
+        if(ib(nsigs).gt.nfft-1) ib(nsigs)=nfft-1
+     endif
+     lprev=lstrong(i)
+  enddo
+
+  if(nsigs.gt.0) then
+     do i=1,nsigs
+        ja=ia(i)
+        jb=ib(i)
+        if(ja.lt.0 .or. ja.gt.nfft-1 .or. jb.lt.0 .or. jb.gt.nfft-1) then
+           cycle
+        endif
+        if(jb.eq.-99) jb=ja + min(2*iwid,nfft-1)
+        lstrong(ja:jb)=.true.
+     enddo
+  endif
+
+  do i=0,nfft-1
+     if(lstrong(i)) then
+        cxs(i)=fac*cxt(i)
+        cxw(i)=0.
+        if(nxpol.ne.0) then
+           cys(i)=fac*cyt(i)
+           cyw(i)=0.
+        endif
+     else
+        cxw(i)=fac*cxt(i)
+        cxs(i)=0.
+        if(nxpol.ne.0) then
+           cyw(i)=fac*cyt(i)
+           cys(i)=0.
+        endif
+     endif
+  enddo
+
+  call four2a(cxw,nfft,1,-1,1)                 !Transform weak and strong X
+  call four2a(cxs,nfft,1,-1,1)                 !back to time domain, separately
+
+  if(nxpol.ne.0) then
+     call four2a(cyw,nfft,1,-1,1)              !Transform weak and strong Y
+     call four2a(cys,nfft,1,-1,1)              !back to time domain, separately
+  endif
+
+  if(nwindow.eq.2) then
+     cxw(0:nh-1)=cxw(0:nh-1)+covxw(0:nh-1)     !Add previous segment's 2nd half
+     covxw(0:nh-1)=cxw(nh:nfft-1)              !Save 2nd half
+     cxs(0:nh-1)=cxs(0:nh-1)+covxs(0:nh-1)     !Ditto for strong signals
+     covxs(0:nh-1)=cxs(nh:nfft-1)
+
+     if(nxpol.ne.0) then
+        cyw(0:nh-1)=cyw(0:nh-1)+covyw(0:nh-1)  !Add previous segment's 2nd half
+        covyw(0:nh-1)=cyw(nh:nfft-1)           !Save 2nd half
+        cys(0:nh-1)=cys(0:nh-1)+covys(0:nh-1)  !Ditto for strong signals
+        covys(0:nh-1)=cys(nh:nfft-1)
+     endif
+  endif
+
+! Apply noise blanking to weak data
+  if(nb.ne.0) then
+     do i=0,kstep-1
+        peak=abs(cxw(i))
+        if(nxpol.ne.0) peak=max(peak,abs(cyw(i)))
+        if(peak.gt.peaklimit) then
+           cxw(i)=0.
+           if(nxpol.ne.0) cyw(i)=0.
+           nzap=nzap+1
+        endif
+     enddo
+  endif
+
+! Compute power levels from weak data only
+  do i=0,kstep-1
+     px=px + real(cxw(i))**2 + aimag(cxw(i))**2
+     if(nxpol.ne.0) py=py + real(cyw(i))**2 + aimag(cyw(i))**2
+  enddo
+
+  cx1(0:kstep-1)=cxw(0:kstep-1) + cxs(0:kstep-1)       !Weak + strong (X)
+  if(nxpol.ne.0) then
+     cy1(0:kstep-1)=cyw(0:kstep-1) + cys(0:kstep-1)    !Weak + strong (Y)
+  endif
+
+  return
+end subroutine timf2
diff --git a/q65w/libm65/tm2.f90 b/q65w/libm65/tm2.f90
new file mode 100644
index 000000000..fb831fab6
--- /dev/null
+++ b/q65w/libm65/tm2.f90
@@ -0,0 +1,14 @@
+subroutine tm2(day,xlat4,xlon4,xl4,b4)
+
+  implicit real*8 (a-h,o-z)
+  parameter (RADS=0.0174532925199433d0)
+
+  real*4 xlat4,xlon4,xl4,b4
+
+  glat=xlat4*RADS
+  glong=xlon4*RADS
+  call tmoonsub(day,glat,glong,el,rv,xl,b,pax)
+  xl4=xl
+  b4=b
+
+end subroutine tm2
diff --git a/q65w/libm65/tmoonsub.c b/q65w/libm65/tmoonsub.c
new file mode 100644
index 000000000..29ac28b49
--- /dev/null
+++ b/q65w/libm65/tmoonsub.c
@@ -0,0 +1,514 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+#define RADS 0.0174532925199433
+#define DEGS 57.2957795130823
+#define TPI 6.28318530717959
+#define PI 3.1415927
+
+/* ratio of     earth radius to astronomical unit */
+#define ER_OVER_AU 0.0000426352325194252
+
+/* all prototypes here */
+
+double getcoord(int coord);
+void getargs(int argc, char *argv[], int *y, int *m, double *tz, double *glong, double *glat);
+double range(double y);
+double rangerad(double y);
+double days(int y, int m, int dn, double hour);
+double days_(int *y, int *m, int *dn, double *hour);
+void moonpos(double, double *, double *, double *);
+void sunpos(double , double *, double *, double *);
+double moontransit(int y, int m, int d, double timezone, double glat, double glong, int *nt);
+double atan22(double y, double x);
+double epsilon(double d);
+void equatorial(double d, double *lon, double *lat, double *r);
+void ecliptic(double d, double *lon, double *lat, double *r);
+double gst(double d);
+void topo(double lst, double glat, double *alp, double *dec, double *r);
+double alt(double glat, double ha, double dec);
+void libration(double day, double lambda, double beta, double alpha, double *l, double *b, double *p);
+void illumination(double day, double lra, double ldec, double dr, double sra, double sdec, double *pabl, double *ill);
+int daysinmonth(int y, int m);
+int isleap(int y);
+void tmoonsub_(double *day, double *glat, double *glong, double *moonalt, 
+   double *mrv, double *l, double *b, double *paxis);
+
+static const char
+*usage = "  Usage: tmoon date[yyyymm] timz[+/-h.hh] long[+/-dddmm] lat[+/-ddmm]\n"
+            "example: tmoon 200009 0 -00155 5230\n";
+
+/*
+  getargs() gets the arguments from the command line, does some basic error
+  checking, and converts arguments into numerical form. Arguments are passed
+  back in pointers. Error messages print to stderr so re-direction of output
+  to file won't leave users blind. Error checking prints list of all errors
+  in a command line before quitting.
+*/
+void getargs(int argc, char *argv[], int *y, int *m, double *tz,
+             double *glong, double *glat) {
+
+  int date, latitude, longitude;
+  int mflag = 0, yflag = 0, longflag = 0, latflag = 0, tzflag = 0;
+  int longminflag = 0, latminflag = 0, dflag = 0;
+
+  /* if not right number of arguments, then print example command line */
+
+  if (argc !=5) {
+    fprintf(stderr, usage);
+    exit(EXIT_FAILURE);
+  }
+
+  date = atoi(argv[1]);
+  *y = date / 100;
+  *m = date - *y * 100;
+  *tz = (double) atof(argv[2]);
+  longitude = atoi(argv[3]);
+  latitude = atoi(argv[4]);
+  *glong = RADS * getcoord(longitude);
+  *glat = RADS * getcoord(latitude);
+
+  /* set a flag for each error found */
+
+  if (*m > 12 || *m < 1) mflag = 1;
+  if (*y > 2500) yflag = 1;
+  if (date < 150001) dflag = 1;
+  if (fabs((float) *glong) > 180 * RADS) longflag = 1;
+  if (abs(longitude) % 100 > 59) longminflag = 1;
+  if (fabs((float) *glat) > 90 * RADS) latflag = 1;
+  if (abs(latitude) % 100 > 59) latminflag = 1;
+  if (fabs((float) *tz) > 12) tzflag = 1;
+
+  /* print all the errors found */
+  
+  if (dflag == 1) {
+    fprintf(stderr, "date: dates must be in form yyyymm, gregorian, and later than 1500 AD\n");
+  }
+  if (yflag == 1) {
+    fprintf(stderr, "date: too far in future - accurate from 1500 to 2500\n");
+  }
+  if (mflag == 1) {
+    fprintf(stderr, "date: month must be in range 0 to 12, eg - August 2000 is entered as 200008\n");
+  }
+  if (tzflag == 1) {
+    fprintf(stderr, "timz: must be in range +/- 12 hours, eg -6 for Chicago\n");
+  }
+  if (longflag == 1) {
+    fprintf(stderr, "long: must be in range +/- 180 degrees\n");
+  }
+  if (longminflag == 1) {
+    fprintf(stderr, "long: last two digits are arcmin - max 59\n");
+  }
+  if (latflag == 1) {
+    fprintf(stderr, " lat: must be in range +/- 90 degrees\n");
+  }
+  if (latminflag == 1) {
+    fprintf(stderr, " lat: last two digits are arcmin - max 59\n");
+  }
+
+  /* quits if one or more flags set */
+
+  if (dflag + mflag + yflag + longflag + latflag + tzflag + longminflag + latminflag > 0) {
+    exit(EXIT_FAILURE);
+  }
+  
+}
+
+/*
+   returns coordinates in decimal degrees given the
+   coord as a ddmm value stored in an integer.
+*/
+double getcoord(int coord) {
+  int west = 1;
+  double glg, deg;
+  if (coord < 0) west = -1;
+  glg = fabs((double) coord/100);
+  deg = floor(glg);
+  glg = west* (deg + (glg - deg)*100 / 60);
+  return(glg);
+}
+
+/*
+  days() takes the year, month, day in the month and decimal hours
+  in the day and returns the number of days since J2000.0.
+  Assumes Gregorian calendar.
+*/
+double days(int y, int m, int d, double h) {
+  int a, b;
+  double day;
+  
+  /*
+    The lines below work from 1900 march to feb 2100
+    a = 367 * y - 7 * (y + (m + 9) / 12) / 4 + 275 * m / 9 + d;
+    day = (double)a - 730531.5 + hour / 24;
+  */
+
+  /*  These lines work for any Gregorian date since 0 AD */
+  if (m ==1 || m==2) {
+    m +=12;
+    y -= 1;
+  }
+  a = y / 100;
+  b = 2 - a + a/4;
+  day = floor(365.25*(y + 4716)) + floor(30.6001*(m + 1))
+    + d + b - 1524.5 - 2451545 + h/24;
+  return(day);
+}
+double days_(int *y0, int *m0, int *d0, double *h0) 
+{
+  return days(*y0,*m0,*d0,*h0);
+}
+
+/*
+Returns 1 if y a leap year, and 0 otherwise, according
+to the Gregorian calendar
+*/
+int isleap(int y) {
+  int a = 0;
+  if(y % 4 == 0) a = 1;
+  if(y % 100 == 0) a = 0;
+  if(y % 400 == 0) a = 1;
+  return(a);
+}
+
+/*
+Given the year and the month, function returns the
+number of days in the month. Valid for Gregorian
+calendar.
+*/
+int daysinmonth(int y, int m) {
+  int b = 31;
+  if(m == 2) {
+    if(isleap(y) == 1) b= 29;
+    else b = 28;
+  }
+  if(m == 4 || m == 6 || m == 9 || m == 11) b = 30;
+  return(b);
+}
+
+/*
+moonpos() takes days from J2000.0 and returns ecliptic coordinates
+of moon in the pointers. Note call by reference.
+This function is within a couple of arcminutes most of the time,
+and is truncated from the Meeus Ch45 series, themselves truncations of
+ELP-2000. Returns moon distance in earth radii.
+Terms have been written out explicitly rather than using the
+table based method as only a small number of terms is
+retained.
+*/
+void moonpos(double d, double *lambda, double *beta, double *rvec) {
+  double dl, dB, dR, L, D, M, M1, F, e, lm, bm, rm, t;
+
+  t = d / 36525;
+
+  L = range(218.3164591  + 481267.88134236  * t) * RADS;
+  D = range(297.8502042  + 445267.1115168  * t) * RADS;
+  M = range(357.5291092  + 35999.0502909  * t) * RADS;
+  M1 = range(134.9634114  + 477198.8676313  * t - .008997 * t * t) * RADS;
+  F = range(93.27209929999999  + 483202.0175273  * t - .0034029*t*t)*RADS;
+  e = 1 - .002516 * t;
+
+  dl =      6288774 * sin(M1);
+  dl +=     1274027 * sin(2 * D - M1);
+  dl +=      658314 * sin(2 * D);
+  dl +=      213618 * sin(2 * M1);
+  dl -=  e * 185116 * sin(M);
+  dl -=      114332 * sin(2 * F) ;
+  dl +=       58793 * sin(2 * D - 2 * M1);
+  dl +=   e * 57066 * sin(2 * D - M - M1) ;
+  dl +=       53322 * sin(2 * D + M1);
+  dl +=   e * 45758 * sin(2 * D - M);
+  dl -=   e * 40923 * sin(M - M1);
+  dl -=       34720 * sin(D) ;
+  dl -=   e * 30383 * sin(M + M1) ;
+  dl +=       15327 * sin(2 * D - 2 * F) ;
+  dl -=       12528 * sin(M1 + 2 * F);
+  dl +=       10980 * sin(M1 - 2 * F);
+  lm = rangerad(L + dl / 1000000 * RADS);
+
+  dB =   5128122 * sin(F);
+  dB +=   280602 * sin(M1 + F);
+  dB +=   277693 * sin(M1 - F);
+  dB +=   173237 * sin(2 * D - F);
+  dB +=    55413 * sin(2 * D - M1 + F);
+  dB +=    46271 * sin(2 * D - M1 - F);
+  dB +=    32573 * sin(2 * D + F);
+  dB +=    17198 * sin(2 * M1 + F);
+  dB +=     9266 * sin(2 * D + M1 - F);
+  dB +=     8822 * sin(2 * M1 - F);
+  dB += e * 8216 * sin(2 * D - M - F);
+  dB +=     4324 * sin(2 * D - 2 * M1 - F);
+  bm = dB / 1000000 * RADS;
+
+  dR =    -20905355 * cos(M1);
+  dR -=     3699111 * cos(2 * D - M1);
+  dR -=     2955968 * cos(2 * D);
+  dR -=      569925 * cos(2 * M1);
+  dR +=   e * 48888 * cos(M);
+  dR -=        3149 * cos(2 * F);
+  dR +=      246158 * cos(2 * D - 2 * M1);
+  dR -=  e * 152138 * cos(2 * D - M - M1) ;
+  dR -=      170733 * cos(2 * D + M1);
+  dR -=  e * 204586 * cos(2 * D - M);
+  dR -=  e * 129620 * cos(M - M1);
+  dR +=      108743 * cos(D);
+  dR +=  e * 104755 * cos(M + M1);
+  dR +=       79661 * cos(M1 - 2 * F);
+  rm = 385000.56  + dR / 1000;
+
+  *lambda = lm;
+  *beta = bm;
+  /* distance to Moon must be in Earth radii */
+  *rvec = rm / 6378.14;
+}
+
+/*
+topomoon() takes the local siderial time, the geographical
+latitude of the observer, and pointers to the geocentric
+equatorial coordinates. The function overwrites the geocentric
+coordinates with topocentric coordinates on a simple spherical
+earth model (no polar flattening). Expects Moon-Earth distance in
+Earth radii.    Formulas scavenged from Astronomical Almanac 'low
+precision formulae for Moon position' page D46.
+*/
+
+void topo(double lst, double glat, double *alp, double *dec, double *r) {
+  double x, y, z, r1;
+  x = *r * cos(*dec) * cos(*alp) - cos(glat) * cos(lst);
+  y = *r * cos(*dec) * sin(*alp) - cos(glat) * sin(lst);
+  z = *r * sin(*dec)  - sin(glat);
+  r1 = sqrt(x*x + y*y + z*z);
+  *alp = atan22(y, x);
+  *dec = asin(z / r1);
+  *r = r1;
+}
+
+/*
+moontransit() takes date, the time zone and geographic longitude
+of observer and returns the time (decimal hours) of lunar transit
+on that day if there is one, and sets the notransit flag if there
+isn't. See Explanatory Supplement to Astronomical Almanac
+section 9.32 and 9.31 for the method.
+*/
+
+double moontransit(int y, int m, int d, double tz, double glat, double glong, int *notransit) {
+  double hm, ht, ht1, lon, lat, rv, dnew, lst;
+  int itcount;
+
+  ht1 = 180 * RADS;
+  ht = 0;
+  itcount = 0;
+  *notransit = 0;
+  do {
+    ht = ht1;
+    itcount++;
+    dnew = days(y, m, d, ht * DEGS/15) - tz/24;
+    lst = gst(dnew) + glong;
+    /* find the topocentric Moon ra (hence hour angle) and dec */
+    moonpos(dnew, &lon, &lat, &rv);
+    equatorial(dnew, &lon, &lat, &rv);
+    topo(lst, glat, &lon, &lat, &rv);
+    hm = rangerad(lst -  lon);
+    ht1 = rangerad(ht - hm);
+    /* if no convergence, then no transit on that day */
+    if (itcount > 30) {
+      *notransit = 1;
+      break;
+    }
+  }
+  while (fabs(ht - ht1) > 0.04 * RADS);
+  return(ht1);
+}
+
+/*
+  Calculates the selenographic coordinates of either the sub Earth point
+  (optical libration) or the sub-solar point (selen. coords of centre of
+  bright hemisphere).  Based on Meeus chapter 51 but neglects physical
+  libration and nutation, with some simplification of the formulas.
+*/
+void libration(double day, double lambda, double beta, double alpha, double *l, double *b, double *p) {
+  double i, f, omega, w, y, x, a, t, eps;
+  t = day / 36525;
+  i = 1.54242 * RADS;
+  eps = epsilon(day);
+  f = range(93.2720993 + 483202.0175273 * t - .0034029 * t * t) * RADS;
+  omega = range(125.044555 - 1934.1361849 * t + .0020762 * t * t) * RADS;
+  w = lambda - omega;
+  y = sin(w) * cos(beta) * cos(i) - sin(beta) * sin(i);
+  x = cos(w) * cos(beta);
+  a = atan22(y, x);
+  *l = a - f;
+
+  /*  kludge to catch cases of 'round the back' angles  */
+  if (*l < -90 * RADS) *l += TPI;
+  if (*l > 90 * RADS)  *l -= TPI;
+  *b = asin(-sin(w) * cos(beta) * sin(i) - sin(beta) * cos(i));
+
+  /*  pa pole axis - not used for Sun stuff */
+  x = sin(i) * sin(omega);
+  y = sin(i) * cos(omega) * cos(eps) - cos(i) * sin(eps);
+  w = atan22(x, y);
+  *p = rangerad(asin(sqrt(x*x + y*y) * cos(alpha - w) / cos(*b)));
+}
+
+/*
+  Takes: days since J2000.0, eq coords Moon, ratio of moon to sun distance,
+  eq coords Sun
+  Returns: position angle of bright limb wrt NCP, percentage illumination
+  of Sun
+*/
+void illumination(double day, double lra, double ldec, double dr, double sra, double sdec, double *pabl, double *ill) {
+  double x, y, phi, i;
+  y = cos(sdec) * sin(sra - lra);
+  x = sin(sdec) * cos(ldec) - cos(sdec) * sin(ldec) * cos (sra - lra);
+  *pabl = atan22(y, x);
+  phi = acos(sin(sdec) * sin(ldec) + cos(sdec) * cos(ldec) * cos(sra-lra));
+  i = atan22(sin(phi) , (dr - cos(phi)));
+  *ill = 0.5*(1 + cos(i));
+}
+
+/*
+sunpos() takes days from J2000.0 and returns ecliptic longitude
+of Sun in the pointers. Latitude is zero at this level of precision,
+but pointer left in for consistency in number of arguments.
+This function is within 0.01 degree (1 arcmin) almost all the time
+for a century either side of J2000.0. This is from the 'low precision
+fomulas for the Sun' from C24 of Astronomical Alamanac
+*/
+void sunpos(double d, double *lambda, double *beta, double *rvec) {
+  double L, g, ls, bs, rs;
+
+  L = range(280.461 + .9856474 * d) * RADS;
+  g = range(357.528 + .9856003 * d) * RADS;
+  ls = L + (1.915 * sin(g) + .02 * sin(2 * g)) * RADS;
+  bs = 0;
+  rs = 1.00014 - .01671 * cos(g) - .00014 * cos(2 * g);
+  *lambda = ls;
+  *beta = bs;
+  *rvec = rs;
+}
+
+/*
+this routine returns the altitude given the days since J2000.0
+the hour angle and declination of the object and the latitude
+of the observer. Used to find the Sun's altitude to put a letter
+code on the transit time, and to find the Moon's altitude at
+transit just to make sure that the Moon is visible.
+*/
+double alt(double glat, double ha, double dec) {
+  return(asin(sin(dec) * sin(glat) + cos(dec) * cos(glat) * cos(ha)));
+}
+
+/* returns an angle in degrees in the range 0 to 360 */
+double range(double x) {
+  double a, b;
+  b = x / 360;
+  a = 360 * (b - floor(b));
+  if (a < 0)
+    a = 360 + a;
+  return(a);
+}
+
+/* returns an angle in rads in the range 0 to two pi */
+double rangerad(double x) {
+  double a, b;
+  b = x / TPI;
+  a = TPI * (b - floor(b));
+  if (a < 0)
+    a = TPI + a;
+  return(a);
+}
+
+/*
+gets the atan2 function returning angles in the right
+order and  range
+*/
+double atan22(double y, double x) {
+  double a;
+
+  a = atan2(y, x);
+  if (a < 0) a += TPI;
+  return(a);
+}
+
+/*
+returns mean obliquity of ecliptic in radians given days since
+J2000.0.
+*/
+double epsilon(double d) {
+  double t = d/ 36525;
+  return((23.4392911111111 - (t* (46.8150 + 0.00059*t)/3600)) *RADS);
+}
+
+/*
+replaces ecliptic coordinates with equatorial coordinates
+note: call by reference destroys original values
+R is unchanged.
+*/
+void equatorial(double d, double *lon, double *lat, double *r) {
+  double  eps, ceps, seps, l, b;
+
+  l = *lon;
+  b = * lat;
+  eps = epsilon(d);
+  ceps = cos(eps);
+  seps = sin(eps);
+  *lon = atan22(sin(l)*ceps - tan(b)*seps, cos(l));
+  *lat = asin(sin(b)*ceps + cos(b)*seps*sin(l));
+}
+
+/*
+replaces equatorial coordinates with ecliptic ones. Inverse
+of above, but used to find topocentric ecliptic coords.
+*/
+void ecliptic(double d, double *lon, double *lat, double *r) {
+  double  eps, ceps, seps, alp, dec;
+  alp = *lon;
+  dec = *lat;
+  eps = epsilon(d);
+  ceps = cos(eps);
+  seps = sin(eps);
+  *lon = atan22(sin(alp)*ceps + tan(dec)*seps, cos(alp));
+  *lat = asin(sin(dec)*ceps - cos(dec)*seps*sin(alp));
+}
+
+/*
+returns the siderial time at greenwich meridian as
+an angle in radians given the days since J2000.0
+*/
+double gst( double d) {
+  double t = d / 36525;
+  double theta;
+  theta = range(280.46061837 + 360.98564736629 * d + 0.000387933 * t * t);
+  return(theta * RADS);
+}
+
+void tmoonsub_(double *day, double *glat, double *glong, double *moonalt, 
+   double *mrv, double *l, double *b, double *paxis)
+{
+  double mlambda, mbeta;
+  double malpha, mdelta;
+  double lst, mhr;
+  double tlambda, tbeta, trv;
+
+  lst = gst(*day) + *glong;
+      
+  /* find Moon topocentric coordinates for libration calculations */
+
+  moonpos(*day, &mlambda, &mbeta, mrv);
+  malpha = mlambda;
+  mdelta = mbeta;
+  equatorial(*day, &malpha, &mdelta, mrv);
+  topo(lst, *glat, &malpha, &mdelta, mrv);
+  mhr = rangerad(lst - malpha);
+  *moonalt = alt(*glat, mhr, mdelta);
+      
+  /* Optical libration and Position angle of the Pole */
+
+  tlambda = malpha;
+  tbeta = mdelta;
+  trv = *mrv;
+  ecliptic(*day, &tlambda, &tbeta, &trv);
+  libration(*day, tlambda, tbeta, malpha,  l, b, paxis);
+}
diff --git a/q65w/libm65/toxyz.f90 b/q65w/libm65/toxyz.f90
new file mode 100644
index 000000000..aef160c9d
--- /dev/null
+++ b/q65w/libm65/toxyz.f90
@@ -0,0 +1,25 @@
+subroutine toxyz(alpha,delta,r,vec)
+
+  implicit real*8 (a-h,o-z)
+  real*8 vec(3)
+
+  vec(1)=r*cos(delta)*cos(alpha)
+  vec(2)=r*cos(delta)*sin(alpha)
+  vec(3)=r*sin(delta)
+
+  return
+end subroutine toxyz
+
+subroutine fromxyz(vec,alpha,delta,r)
+  
+  implicit real*8 (a-h,o-z)
+  real*8 vec(3)
+  data twopi/6.283185307d0/
+
+  r=sqrt(vec(1)**2 + vec(2)**2 + vec(3)**2)
+  alpha=atan2(vec(2),vec(1))
+  if(alpha.lt.0.d0) alpha=alpha+twopi
+  delta=asin(vec(3)/r)
+
+  return
+end subroutine fromxyz
diff --git a/q65w/libm65/trimlist.f90 b/q65w/libm65/trimlist.f90
new file mode 100644
index 000000000..9e8a36e69
--- /dev/null
+++ b/q65w/libm65/trimlist.f90
@@ -0,0 +1,28 @@
+subroutine trimlist(sig,km,ftol,indx,nsiz,nz)
+
+  parameter (MAXMSG=1000)             !Size of decoded message list
+  real sig(MAXMSG,30)
+  integer indx(MAXMSG),nsiz(MAXMSG)
+
+!    1      2     3    4    5    6     7     8
+!  nfile  nutc  freq  snr  dt  ipol  flip  sync
+
+  call indexx(sig(1,3),km,indx)            !Sort list by frequency
+
+  n=1
+  i0=1
+  do i=2,km         
+     j0=indx(i-1)
+     j=indx(i)
+     if(sig(j,3)-sig(j0,3).gt.ftol) then
+        nsiz(n)=i-i0
+        i0=i
+        n=n+1
+     endif
+  enddo
+  nz=n
+  nsiz(nz)=km+1-i0
+  nsiz(nz+1)=-1
+
+  return
+end subroutine trimlist
diff --git a/q65w/libm65/twkfreq.f90 b/q65w/libm65/twkfreq.f90
new file mode 100644
index 000000000..be1fef0fe
--- /dev/null
+++ b/q65w/libm65/twkfreq.f90
@@ -0,0 +1,26 @@
+subroutine twkfreq(c3,c4,npts,fsample,a)
+
+  complex c3(npts)
+  complex c4(npts)
+  complex w,wstep
+  real a(3)
+  data twopi/6.283185307/
+
+! Mix the complex signal
+  w=1.0
+  wstep=1.0
+  x0=0.5*(npts+1)
+  s=2.0/npts
+  do i=1,npts
+     x=s*(i-x0)
+     p2=1.5*x*x - 0.5
+!          p3=2.5*(x**3) - 1.5*x
+!          p4=4.375*(x**4) - 3.75*(x**2) + 0.375
+     dphi=(a(1) + x*a(2) + p2*a(3)) * (twopi/fsample)
+     wstep=cmplx(cos(dphi),sin(dphi))
+     w=w*wstep
+     c4(i)=w*c3(i)
+  enddo
+
+  return
+end subroutine twkfreq
diff --git a/q65w/libm65/twkfreq_xy.f90 b/q65w/libm65/twkfreq_xy.f90
new file mode 100644
index 000000000..a5cc3769a
--- /dev/null
+++ b/q65w/libm65/twkfreq_xy.f90
@@ -0,0 +1,29 @@
+subroutine twkfreq_xy(c4aa,c4bb,n5,a)
+
+  complex c4aa(n5)
+  complex c4bb(n5)
+  real a(5)
+  complex w,wstep
+  data twopi/6.283185307/
+
+! Apply AFC corrections to the c4aa and c4bb data
+  w=1.0
+  wstep=1.0
+  x0=0.5*(n5+1)
+  s=2.0/n5
+  do i=1,n5
+     x=s*(i-x0)
+     if(mod(i,1000).eq.1) then
+        p2=1.5*x*x - 0.5
+!            p3=2.5*(x**3) - 1.5*x
+!            p4=4.375*(x**4) - 3.75*(x**2) + 0.375
+        dphi=(a(1) + x*a(2) + p2*a(3)) * (twopi/1378.125)
+        wstep=cmplx(cos(dphi),sin(dphi))
+     endif
+     w=w*wstep
+     c4aa(i)=w*c4aa(i)
+     c4bb(i)=w*c4bb(i)
+  enddo
+
+  return
+end subroutine twkfreq_xy
diff --git a/q65w/libm65/txpol.f90 b/q65w/libm65/txpol.f90
new file mode 100644
index 000000000..042d3e549
--- /dev/null
+++ b/q65w/libm65/txpol.f90
@@ -0,0 +1,33 @@
+subroutine txpol(xpol,decoded,mygrid,npol,nxant,ntxpol,cp)
+
+!  If Tx station's grid is in decoded message, compute optimum TxPol
+  character*22 decoded
+  character*6 mygrid,grid
+  character*1 cp
+  logical xpol
+
+  ntxpol=0
+  i1=index(decoded,' ')
+  i2=index(decoded(i1+1:),' ') + i1
+  grid='      '
+  if(i2.ge.8 .and. i2.le.18) grid=decoded(i2+1:i2+4)//'mm'
+  ntxpol=0
+  cp=' '
+  if(xpol .and.grid(1:4).ne.'RR73') then
+     if(grid(1:1).ge.'A' .and. grid(1:1).le.'R' .and.           &
+          grid(2:2).ge.'A' .and. grid(2:2).le.'R' .and.         &
+          grid(3:3).ge.'0' .and. grid(3:3).le.'9' .and.         &
+          grid(4:4).ge.'0' .and. grid(4:4).le.'9') then                 
+        ntxpol=mod(npol-nint(2.0*dpol(mygrid,grid))+720,180)
+        if(nxant.eq.0) then
+           cp='H'
+           if(ntxpol.gt.45 .and. ntxpol.le.135) cp='V'
+        else
+           cp='/'
+           if(ntxpol.ge.90 .and. ntxpol.lt.180) cp='\'
+        endif
+     endif
+  endif
+
+  return
+end subroutine txpol
diff --git a/q65w/libm65/usleep.c b/q65w/libm65/usleep.c
new file mode 100644
index 000000000..21d242a68
--- /dev/null
+++ b/q65w/libm65/usleep.c
@@ -0,0 +1,7 @@
+#include <unistd.h>
+
+/* usleep(3) */
+void usleep_(unsigned long *microsec)
+{
+  usleep(*microsec);
+}
diff --git a/q65w/libm65/wavhdr.f90 b/q65w/libm65/wavhdr.f90
new file mode 100644
index 000000000..6568c1fa6
--- /dev/null
+++ b/q65w/libm65/wavhdr.f90
@@ -0,0 +1,110 @@
+module wavhdr
+  type hdr
+     character*4 ariff
+     integer*4 lenfile
+     character*4 awave
+     character*4 afmt
+     integer*4 lenfmt
+     integer*2 nfmt2
+     integer*2 nchan2
+     integer*4 nsamrate
+     integer*4 nbytesec
+     integer*2 nbytesam2
+     integer*2 nbitsam2
+     character*4 adata
+     integer*4 ndata
+  end type hdr
+
+  contains
+
+    function default_header(nsamrate,npts)
+      type(hdr) default_header,h
+      h%ariff='RIFF'
+      h%awave='WAVE'
+      h%afmt='fmt '
+      h%lenfmt=16
+      h%nfmt2=1
+      h%nchan2=1
+      h%nsamrate=nsamrate
+      h%nbitsam2=16
+      h%nbytesam2=h%nbitsam2 * h%nchan2 / 8
+      h%adata='data'
+      h%nbytesec=h%nsamrate * h%nbitsam2 * h%nchan2 / 8
+      h%ndata=2*npts
+      h%lenfile=h%ndata + 44 - 8
+      default_header=h
+    end function default_header
+
+    subroutine set_wsjtx_wav_params(fMHz,mode,nsubmode,ntrperiod,id2)
+
+      parameter (NBANDS=23,NMODES=13)
+      character*8 mode,modes(NMODES)
+      integer*2 id2(4)
+      integer iperiod(8)
+      real fband(NBANDS)
+      data fband/0.137,0.474,1.8,3.5,5.1,7.0,10.14,14.0,18.1,21.0,24.9,  &
+           28.0,50.0,144.0,222.0,432.0,902.0,1296.0,2304.0,3400.0,       &
+           5760.0,10368.0,24048.0/
+      data modes/'Echo','FSK441','ISCAT','JT4','JT65','JT6M','JT9',      &
+           'JT9+JT65','JTMS','JTMSK','WSPR','FT8','FT2'/
+      data iperiod/5,10,15,30,60,120,900,0/
+
+      dmin=1.e30
+      iband=0
+      do i=1,NBANDS
+         if(abs(fMHz-fband(i)).lt.dmin) then
+            dmin=abs(fMHz-fband(i))
+            iband=i
+         endif
+      enddo
+
+      imode=0
+      do i=1,NMODES
+         if(mode.eq.modes(i)) imode=i
+      enddo
+
+      ip=0
+      do i=1,8
+         if(ntrperiod.eq.iperiod(i)) ip=i
+      enddo
+
+      id2(1)=iband
+      id2(2)=imode
+      id2(3)=nsubmode
+      id2(4)=ip
+      
+      return
+    end subroutine set_wsjtx_wav_params
+
+    subroutine get_wsjtx_wav_params(id2,band,mode,nsubmode,ntrperiod,ok)
+
+      parameter (NBANDS=23,NMODES=13)
+      character*8 mode,modes(NMODES)
+      character*6 band,bands(NBANDS)
+      integer*2 id2(4)
+      integer iperiod(8)
+      logical ok
+      data modes/'Echo','FSK441','ISCAT','JT4','JT65','JT6M','JT9',    &
+           'JT9+JT65','JTMS','JTMSK','WSPR','FT8','FT2'/
+      data iperiod/5,10,15,30,60,120,900,0/
+      data bands/'2190m','630m','160m','80m','60m','40m','30m','20m',  &
+           '17m','15m','12m','10m','6m','2m','1.25m','70cm','33cm',    &
+           '23cm','13cm','9cm','6cm','3cm','1.25cm'/
+
+      ok=.true.
+      if(id2(1).lt.1 .or. id2(1).gt.NBANDS) ok=.false.
+      if(id2(2).lt.1 .or. id2(2).gt.NMODES) ok=.false.
+      if(id2(3).lt.1 .or. id2(3).gt.8) ok=.false.
+      if(id2(4).lt.1 .or. id2(4).gt.8) ok=.false.
+
+      if(ok) then
+         band=bands(id2(1))
+         mode=modes(id2(2))
+         nsubmode=id2(3)
+         ntrperiod=iperiod(id2(4))
+      endif
+
+      return
+    end subroutine get_wsjtx_wav_params
+
+end module wavhdr
diff --git a/q65w/libm65/wideband_sync.f90 b/q65w/libm65/wideband_sync.f90
new file mode 100644
index 000000000..31a96d2cb
--- /dev/null
+++ b/q65w/libm65/wideband_sync.f90
@@ -0,0 +1,281 @@
+module wideband_sync
+
+  type candidate
+     real :: snr          !Relative S/N of sync detection
+     real :: f            !Freq of sync tone, 0 to 96000 Hz
+     real :: xdt          !DT of matching sync pattern, -1.0 to +4.0 s
+     real :: pol          !Polarization angle, degrees
+     integer :: ipol      !Polarization angle, 1 to 4 ==> 0, 45, 90, 135 deg
+     integer :: iflip     !Sync type: JT65 = +/- 1, Q65 = 0
+     integer :: indx
+  end type candidate
+  type sync_dat
+     real :: ccfmax
+     real :: xdt
+     real :: pol
+     integer :: ipol
+     integer :: iflip
+     logical :: birdie
+  end type sync_dat
+
+  parameter (NFFT=32768)
+  parameter (MAX_CANDIDATES=50)
+  parameter (SNR1_THRESHOLD=4.5)
+  type(sync_dat) :: sync(NFFT)
+  integer nkhz_center
+
+  contains
+
+subroutine get_candidates(ss,savg,xpol,jz,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
+
+! Search symbol spectra ss() over frequency range nfa to nfb (in kHz) for
+! JT65 and Q65 sync patterns. The nts_* variables are the submode tone
+! spacings: 1 2 4 8 16 for A B C D E.  Birdies are detected and
+! excised.  Candidates are returned in the structure array cand().
+
+  parameter (MAX_PEAKS=100)
+  real ss(4,322,NFFT),savg(4,NFFT)
+  real pavg(-20:20)
+  integer indx(NFFT)
+  logical xpol,skip,ldecoded
+  type(candidate) :: cand(MAX_CANDIDATES)
+  common/early/nhsym1,nhsym2,ldecoded(32768)
+
+  call wb_sync(ss,savg,xpol,jz,nfa,nfb)          !Output to sync() array
+
+  tstep=2048.0/11025.0        !0.185760 s: 0.5*tsym_jt65, 0.3096*tsym_q65
+  df3=96000.0/NFFT
+  ia=nint(1000*nfa/df3) + 1
+  ib=nint(1000*nfb/df3) + 1
+  if(ia.lt.1) ia=1
+  if(ib.gt.NFFT-1) ib=NFFT-1
+  iz=ib-ia+1
+  
+  call indexx(sync(ia:ib)%ccfmax,iz,indx)   !Sort by relative snr
+
+  k=0
+  do i=1,MAX_PEAKS
+     n=indx(iz+1-i) + ia - 1
+     f0=0.001*(n-1)*df3
+     snr1=sync(n)%ccfmax
+     if(snr1.lt.SNR1_THRESHOLD) exit
+     flip=sync(n)%iflip
+     if(flip.ne.0.0 .and. nts_jt65.eq.0) cycle
+     if(flip.eq.0.0 .and. nts_q65.eq.0) cycle
+     if(sync(n)%birdie) cycle
+
+! Test for signal outside of TxT range and set bw for this signal type   
+     j1=(sync(n)%xdt + 1.0)/tstep - 1.0
+     j2=(sync(n)%xdt + 52.0)/tstep + 1.0
+     if(flip.ne.0) j2=(sync(n)%xdt + 47.811)/tstep + 1.0
+     ipol=sync(n)%ipol
+     pavg=0.
+     do j=1,j1
+        pavg=pavg + ss(ipol,j,n-20:n+20)
+     enddo
+     do j=j2,jz
+        pavg=pavg + ss(ipol,j,n-20:n+20)
+     enddo
+     jsum=j1 + (jz-j2+1)
+     pmax=maxval(pavg(-2:2))              !### Why not just pavg(0) ?
+     base=(sum(pavg)-pmax)/jsum
+     pmax=pmax/base
+     if(pmax.gt.5.0) cycle
+     skip=.false.
+     do m=1,k                              !Skip false syncs within signal bw
+        diffhz=1000.0*(f0-cand(m)%f)
+        bw=nts_q65*110.0
+        if(cand(m)%iflip.ne.0) bw=nts_jt65*178.0
+        if(diffhz.gt.-0.03*bw .and. diffhz.lt.1.03*bw) skip=.true.
+     enddo
+     if(skip) cycle
+     k=k+1
+     cand(k)%snr=snr1
+     cand(k)%f=f0
+     cand(k)%xdt=sync(n)%xdt
+     cand(k)%pol=sync(n)%pol
+     cand(k)%ipol=sync(n)%ipol
+     cand(k)%iflip=nint(flip)
+     cand(k)%indx=n
+!     write(50,3050) i,k,m,f0+32.0,diffhz,bw,snr1,db(snr1)
+!3050 format(3i5,f8.3,2f8.0,2f8.2)
+     if(k.ge.MAX_CANDIDATES) exit
+  enddo
+  ncand=k
+
+  return
+end subroutine get_candidates
+
+subroutine wb_sync(ss,savg,xpol,jz,nfa,nfb)
+
+! Compute "orange sync curve" using the Q65 sync pattern
+
+  use timer_module, only: timer
+  parameter (NFFT=32768)
+  parameter (LAGMAX=30)
+  real ss(4,322,NFFT)
+  real savg(4,NFFT)
+  real savg_med(4)
+  real ccf4(4),ccf4best(4),a(3)
+  logical first,xpol
+  integer isync(22)
+  integer jsync0(63),jsync1(63)
+  integer ip(1)
+
+! Q65 sync symbols
+  data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/
+  data jsync0/                                                         &
+       1,  4,  5,  9, 10, 11, 12, 13, 14, 16, 18, 22, 24, 25, 28, 32,  &
+       33, 34, 37, 38, 39, 40, 42, 43, 45, 46, 47, 48, 52, 53, 55, 57, &
+       59, 60, 63, 64, 66, 68, 70, 73, 80, 81, 89, 90, 92, 95, 97, 98, &
+       100,102,104,107,108,111,114,119,120,121,122,123,124,125,126/
+  data jsync1/                                                         &
+       2,  3,  6,  7,  8, 15, 17, 19, 20, 21, 23, 26, 27, 29, 30, 31,  &
+       35, 36, 41, 44, 49, 50, 51, 54, 56, 58, 61, 62, 65, 67, 69, 71, &
+       72, 74, 75, 76, 77, 78, 79, 82, 83, 84, 85, 86, 87, 88, 91, 93, &
+       94, 96, 99,101,103,105,106,109,110,112,113,115,116,117,118/
+  data first/.true./
+  save first,isync,jsync0,jsync1
+
+  tstep=2048.0/11025.0        !0.185760 s: 0.5*tsym_jt65, 0.3096*tsym_q65
+  if(first) then
+     fac=0.6/tstep
+     do i=1,22                                !Expand the Q65 sync stride
+        isync(i)=nint((isync(i)-1)*fac) + 1
+     enddo
+     do i=1,63
+        jsync0(i)=2*(jsync0(i)-1) + 1
+        jsync1(i)=2*(jsync1(i)-1) + 1
+     enddo
+     first=.false.
+  endif
+
+  df3=96000.0/NFFT
+  ia=nint(1000*nfa/df3) + 1          !Flat frequency range for WSE converters
+  ib=nint(1000*nfb/df3) + 1
+  if(ia.lt.1) ia=1
+  if(ib.gt.NFFT-1) ib=NFFT-1
+  npol=1
+  if(xpol) npol=4
+
+  do i=1,npol
+     call pctile(savg(i,ia:ib),ib-ia+1,50,savg_med(i))
+  enddo
+!  do i=ia,ib
+!     write(14,3014) 0.001*(i-1)*df3,savg(1:npol,i)
+!3014 format(5f10.3)
+!  enddo
+
+  lagbest=0
+  ipolbest=1
+  flip=0.
+
+  do i=ia,ib
+     ccfmax=0.
+     do lag=0,LAGMAX
+
+        ccf=0.
+        ccf4=0.
+        do j=1,22                        !Test for Q65 sync
+           k=isync(j) + lag
+           ccf4(1:npol)=ccf4(1:npol) + ss(1:npol,k,i+1) +       &
+                ss(1:npol,k+1,i+1) + ss(1:npol,k+2,i+1) 
+        enddo
+        ccf4(1:npol)=ccf4(1:npol) - savg(1:npol,i+1)*3*22/float(jz)
+        ccf=maxval(ccf4)
+        ip=maxloc(ccf4)
+        ipol=ip(1)
+        if(ccf.gt.ccfmax) then
+           ipolbest=ipol
+           lagbest=lag
+           ccfmax=ccf
+           ccf4best=ccf4
+           flip=0.
+        endif
+
+        ccf=0.
+        ccf4=0.
+        do j=1,63                       !Test for JT65 sync, std msg
+           k=jsync0(j) + lag
+           ccf4(1:npol)=ccf4(1:npol) + ss(1:npol,k,i+1) + ss(1:npol,k+1,i+1)
+        enddo
+        ccf4(1:npol)=ccf4(1:npol) - savg(1:npol,i+1)*2*63/float(jz)
+        ccf=maxval(ccf4)
+        ip=maxloc(ccf4)
+        ipol=ip(1)
+        if(ccf.gt.ccfmax) then
+           ipolbest=ipol
+           lagbest=lag
+           ccfmax=ccf
+           ccf4best=ccf4
+           flip=1.0
+        endif
+
+        ccf=0.
+        ccf4=0.
+        do j=1,63                       !Test for JT65 sync, OOO msg
+           k=jsync1(j) + lag
+           ccf4(1:npol)=ccf4(1:npol) + ss(1:npol,k,i+1) + ss(1:npol,k+1,i+1)
+        enddo
+        ccf4(1:npol)=ccf4(1:npol) - savg(1:npol,i+1)*2*63/float(jz)
+        ccf=maxval(ccf4)
+        ip=maxloc(ccf4)
+        ipol=ip(1)
+        if(ccf.gt.ccfmax) then
+           ipolbest=ipol
+           lagbest=lag
+           ccfmax=ccf
+           ccf4best=ccf4
+           flip=-1.0
+        endif
+
+     enddo  ! lag
+
+     poldeg=0.
+     if(xpol .and. ccfmax.ge.SNR1_THRESHOLD) then
+        call polfit(ccf4best,4,a)
+        poldeg=a(3)
+     endif
+     sync(i)%ccfmax=ccfmax
+     sync(i)%xdt=lagbest*tstep-1.0
+     sync(i)%pol=poldeg
+     sync(i)%ipol=ipolbest
+     sync(i)%iflip=flip
+     sync(i)%birdie=.false.
+     if(ccfmax/(savg(ipolbest,i)/savg_med(ipolbest)).lt.3.0) sync(i)%birdie=.true.
+!     if(sync(i)%iflip.eq.0 .and. sync(i)%ccfmax .gt. 20.0) then
+!        write(50,3050) i,lagbest,sync(i)%ccfmax,sync(i)%xdt,sync(i)%ipol,  &
+!             sync(i)%birdie,ccf4best
+!3050    format(2i5,f10.3,f8.2,i5,1x,L3,4f7.1)
+!     endif
+
+  enddo  ! i (frequency bin)
+
+  call pctile(sync(ia:ib)%ccfmax,ib-ia+1,50,base)
+  sync(ia:ib)%ccfmax=sync(ia:ib)%ccfmax/base
+
+  bw=65*4*1.66666667                        !Q65-60C bandwidth
+  nbw=bw/df3 + 1                            !Number of bins to blank
+  syncmin=2.0
+  nguard=10
+  do i=ia,ib
+     if(sync(i)%ccfmax.lt.syncmin) cycle
+     spk=maxval(sync(i:i+nbw)%ccfmax)
+     ip =maxloc(sync(i:i+nbw)%ccfmax)
+     i0=ip(1)+i-1
+     ja=min(i,i0-nguard)
+     jb=i0+nbw+nguard
+     sync(ja:jb)%ccfmax=0.
+     sync(i0)%ccfmax=spk
+  enddo
+
+!  do i=ia,ib
+!     write(15,3015) 0.001*(i-1)*df3+32.0,sync(i)%ccfmax,sync(i)%xdt,  &
+!          sync(i)%ipol,sync(i)%iflip,sync(i)%birdie
+!3015 format(3f10.3,2i6,L5)
+!  enddo
+
+  return
+end subroutine wb_sync
+
+end module wideband_sync
diff --git a/q65w/libm65/wrapkarn.c b/q65w/libm65/wrapkarn.c
new file mode 100644
index 000000000..9e0a51caf
--- /dev/null
+++ b/q65w/libm65/wrapkarn.c
@@ -0,0 +1,70 @@
+#include <math.h>
+#include <stdio.h>
+#include <float.h>
+#include <limits.h>
+#include <stdlib.h>
+#include "rs.h"
+
+static void *rs;
+static int first=1;
+
+void rs_encode_(int *dgen, int *sent)
+// Encode JT65 data dgen[12], producing sent[63].
+{
+  int dat1[12];
+  int b[51];
+  int i;
+
+  if(first) {
+    // Initialize the JT65 codec
+    rs=init_rs_int(6,0x43,3,1,51,0);
+    first=0;
+  }
+
+  // Reverse data order for the Karn codec.
+  for(i=0; i<12; i++) {
+    dat1[i]=dgen[11-i];
+  }
+  // Compute the parity symbols
+  encode_rs_int(rs,dat1,b);
+
+  // Move parity symbols and data into sent[] array, in reverse order.
+  for (i = 0; i < 51; i++) sent[50-i] = b[i];
+  for (i = 0; i < 12; i++) sent[i+51] = dat1[11-i];
+}
+
+void rs_decode_(int *recd0, int *era0, int *numera0, int *decoded, int *nerr)
+// Decode JT65 received data recd0[63], producing decoded[12].
+// Erasures are indicated in era0[numera].  The number of corrected
+// errors is *nerr.  If the data are uncorrectable, *nerr=-1 is returned.
+{
+  int numera;
+  int i;
+  int era_pos[50];
+  int recd[63];
+
+  if(first) {
+    rs=init_rs_int(6,0x43,3,1,51,0);
+    first=0;
+  }
+
+  numera=*numera0;
+  for(i=0; i<12; i++) recd[i]=recd0[62-i];
+  for(i=0; i<51; i++) recd[12+i]=recd0[50-i];
+  if(numera) 
+    for(i=0; i<numera; i++) era_pos[i]=era0[i];
+  *nerr=decode_rs_int(rs,recd,era_pos,numera);
+  for(i=0; i<12; i++) decoded[i]=recd[11-i];
+}
+
+
+void rs_encode__(int *dgen, int *sent)
+{
+  rs_encode_(dgen, sent);
+}
+
+void rs_decode__(int *recd0, int *era0, int *numera0, int *decoded, int *nerr)
+{
+  rs_decode_(recd0, era0, numera0, decoded, nerr);
+}
+
diff --git a/q65w/libm65/zplot.f90 b/q65w/libm65/zplot.f90
new file mode 100644
index 000000000..55aa3c6fa
--- /dev/null
+++ b/q65w/libm65/zplot.f90
@@ -0,0 +1,34 @@
+subroutine zplot(amp,nz,jj,ave,rms)
+
+  real amp(nz)
+  character*1 line(100),mark(0:6)
+  data mark/' ',' ','.','-','+','X','$'/
+
+  sum=0.
+  smax=0.
+  do i=1,nz
+     sum=sum+amp(i)
+     if(amp(i).gt.smax) then
+        smax=amp(i)
+        ipk=i
+     endif
+  enddo
+  ave=(sum-smax)/(nz-1)
+  sq=0.
+  do i=1,nz
+     if(i.ne.ipk) sq=sq+(amp(i)-ave)**2
+  enddo
+  rms=sqrt(sq/(nz-2))
+
+  do i=1,nz
+     n=(amp(i)-ave)/rms
+!     n=(amp(i)-ave)/0.33
+     if(n.lt.0) n=0
+     if(n.gt.6) n=6
+     line(i)=mark(n)
+  enddo
+  write(89,1010) jj,0.01*ave,0.01*rms,(line(i),i=1,nz)
+1010 format(i3,2f6.1,1x,100a1)
+  
+  return
+end subroutine zplot
diff --git a/q65w/main.cpp b/q65w/main.cpp
new file mode 100644
index 000000000..0fd3680b2
--- /dev/null
+++ b/q65w/main.cpp
@@ -0,0 +1,43 @@
+#include <fftw3.h>
+#ifdef QT5
+#include <QtWidgets>
+#else
+#include <QtGui>
+#endif
+#include <QApplication>
+
+#include "revision_utils.hpp"
+#include "mainwindow.h"
+
+extern "C" {
+  // Fortran procedures we need
+  void four2a_ (_Complex float *, int * nfft, int * ndim, int * isign, int * iform, int len);
+}
+
+int main(int argc, char *argv[])
+{
+  QApplication a {argc, argv};
+  // Override programs executable basename as application name.
+  a.setApplicationName ("MAP65");
+  a.setApplicationVersion ("3.0.1");
+  // switch off as we share an Info.plist file with WSJT-X
+  a.setAttribute (Qt::AA_DontUseNativeMenuBar);
+  MainWindow w;
+  w.show ();
+  QObject::connect (&a, &QApplication::lastWindowClosed, &a, &QApplication::quit);
+  auto result = a.exec ();
+
+  // clean up lazily initialized FFTW3 resources
+  {
+    int nfft {-1};
+    int ndim {1};
+    int isign {1};
+    int iform {1};
+    // free FFT plan resources
+    four2a_ (nullptr, &nfft, &ndim, &isign, &iform, 0);
+  }
+  fftwf_forget_wisdom ();
+  fftwf_cleanup ();
+
+  return result;
+}
diff --git a/q65w/mainwindow.cpp b/q65w/mainwindow.cpp
new file mode 100644
index 000000000..98a34a164
--- /dev/null
+++ b/q65w/mainwindow.cpp
@@ -0,0 +1,2409 @@
+//------------------------------------------------------------------ MainWindow
+#include "mainwindow.h"
+#include <fftw3.h>
+#include <QDir>
+#include <QSettings>
+#include <QTimer>
+#include <QToolTip>
+#include "revision_utils.hpp"
+#include "qt_helpers.hpp"
+#include "SettingsGroup.hpp"
+#include "widgets/MessageBox.hpp"
+#include "ui_mainwindow.h"
+#include "devsetup.h"
+#include "plotter.h"
+#include "about.h"
+#include "astro.h"
+#include "widegraph.h"
+#include "messages.h"
+#include "bandmap.h"
+#include "txtune.h"
+#include "sleep.h"
+#include <portaudio.h>
+
+#define NFFT 32768
+
+short int iwave[2*60*12000];          //Wave file for Tx audio
+int nwave;                            //Length of Tx waveform
+bool btxok;                           //True if OK to transmit
+bool bTune;
+bool bIQxt;
+double outputLatency;                 //Latency in seconds
+int txPower;
+int iqAmp;
+int iqPhase;
+qint16 id[4*60*96000];
+
+TxTune*    g_pTxTune = NULL;
+QSharedMemory mem_m65("mem_m65");
+
+extern const int RxDataFrequency = 96000;
+extern const int TxDataFrequency = 11025;
+
+//-------------------------------------------------- MainWindow constructor
+MainWindow::MainWindow(QWidget *parent) :
+  QMainWindow(parent),
+  ui(new Ui::MainWindow),
+  m_appDir {QApplication::applicationDirPath ()},
+  m_settings_filename {m_appDir + "/map65.ini"},
+  m_astro_window {new Astro {m_settings_filename}},
+  m_band_map_window {new BandMap {m_settings_filename}},
+  m_messages_window {new Messages {m_settings_filename}},
+  m_wide_graph_window {new WideGraph {m_settings_filename}},
+  m_gui_timer {new QTimer {this}}
+{
+  ui->setupUi(this);
+  on_EraseButton_clicked();
+  ui->labUTC->setStyleSheet( \
+        "QLabel { background-color : black; color : yellow; }");
+  ui->labTol1->setStyleSheet( \
+        "QLabel { background-color : white; color : black; }");
+  ui->labTol1->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  ui->dxStationGroupBox->setStyleSheet("QFrame{border: 5px groove red}");
+
+  QActionGroup* paletteGroup = new QActionGroup(this);
+  ui->actionCuteSDR->setActionGroup(paletteGroup);
+  ui->actionLinrad->setActionGroup(paletteGroup);
+  ui->actionAFMHot->setActionGroup(paletteGroup);
+  ui->actionBlue->setActionGroup(paletteGroup);
+
+  QActionGroup* modeGroup = new QActionGroup(this);
+  ui->actionNoJT65->setActionGroup(modeGroup);
+  ui->actionJT65A->setActionGroup(modeGroup);
+  ui->actionJT65B->setActionGroup(modeGroup);
+  ui->actionJT65C->setActionGroup(modeGroup);
+
+  QActionGroup* modeGroup2 = new QActionGroup(this);
+  ui->actionNoQ65->setActionGroup(modeGroup2);
+  ui->actionQ65A->setActionGroup(modeGroup2);
+  ui->actionQ65B->setActionGroup(modeGroup2);
+  ui->actionQ65C->setActionGroup(modeGroup2);
+  ui->actionQ65D->setActionGroup(modeGroup2);
+  ui->actionQ65E->setActionGroup(modeGroup2);
+
+  QActionGroup* saveGroup = new QActionGroup(this);
+  ui->actionSave_all->setActionGroup(saveGroup);
+  ui->actionNone->setActionGroup(saveGroup);
+
+  QActionGroup* DepthGroup = new QActionGroup(this);
+  ui->actionNo_Deep_Search->setActionGroup(DepthGroup);
+  ui->actionNormal_Deep_Search->setActionGroup(DepthGroup);
+  ui->actionAggressive_Deep_Search->setActionGroup(DepthGroup);
+
+  QButtonGroup* txMsgButtonGroup = new QButtonGroup;
+  txMsgButtonGroup->addButton(ui->txrb1,1);
+  txMsgButtonGroup->addButton(ui->txrb2,2);
+  txMsgButtonGroup->addButton(ui->txrb3,3);
+  txMsgButtonGroup->addButton(ui->txrb4,4);
+  txMsgButtonGroup->addButton(ui->txrb5,5);
+  txMsgButtonGroup->addButton(ui->txrb6,6);
+  connect(txMsgButtonGroup,SIGNAL(buttonClicked(int)),SLOT(set_ntx(int)));
+  connect(ui->decodedTextBrowser,SIGNAL(selectCallsign(bool)),this,
+          SLOT(selectCall2(bool)));
+
+  setWindowTitle (program_title ());
+
+  connect(&soundInThread, SIGNAL(readyForFFT(int)),
+             this, SLOT(dataSink(int)));
+  connect(&soundInThread, SIGNAL(error(QString)), this,
+          SLOT(showSoundInError(QString)));
+  connect(&soundInThread, SIGNAL(status(QString)), this,
+          SLOT(showStatusMessage(QString)));
+  createStatusBar();
+
+  connect(&proc_m65, SIGNAL(readyReadStandardOutput()), this, SLOT(readFromStdout()));
+  connect(&proc_m65, &QProcess::errorOccurred, this, &MainWindow::m65_error);
+  connect(&proc_m65, static_cast<void (QProcess::*) (int, QProcess::ExitStatus)> (&QProcess::finished),
+          [this] (int exitCode, QProcess::ExitStatus status) {
+            if (subProcessFailed (&proc_m65, exitCode, status))
+              {
+                QTimer::singleShot (0, this, SLOT (close ()));
+              }
+          });
+
+  connect(&proc_editor, SIGNAL(error(QProcess::ProcessError)),
+          this, SLOT(editor_error()));
+
+  connect(m_gui_timer, &QTimer::timeout, this, &MainWindow::guiUpdate);
+
+  m_auto=false;
+  m_waterfallAvg = 1;
+  m_network = true;
+  m_txFirst=false;
+  m_txMute=false;
+  btxok=false;
+  m_restart=false;
+  m_transmitting=false;
+  m_widebandDecode=false;
+  m_ntx=1;
+  m_myCall="K1JT";
+  m_myGrid="FN20qi";
+  m_saveDir="/users/joe/map65/install/save";
+  m_azelDir="/users/joe/map65/install/";
+  m_editorCommand="notepad";
+  m_txFreq=125;
+  m_setftx=0;
+  m_loopall=false;
+  m_startAnother=false;
+  m_saveAll=false;
+  m_onlyEME=false;
+  m_sec0=-1;
+  m_hsym0=-1;
+  m_palette="CuteSDR";
+  m_map65RxLog=1;                     //Write Date and Time to all65.txt
+  m_nutc0=9999;
+  m_kb8rq=false;
+  m_NB=false;
+  m_mode="JT65B";
+  m_mode65=2;
+  m_fs96000=true;
+  m_udpPort=50004;
+  m_adjustIQ=0;
+  m_applyIQcal=0;
+  m_colors="000066ff0000ffff00969696646464";
+  m_nsave=0;
+  m_modeJT65=0;
+  m_modeQ65=0;
+  m_TRperiod=60;
+  m_modeTx="JT65";
+  bTune=false;
+  txPower=100;
+  iqAmp=0;
+  iqPhase=0;
+
+  xSignalMeter = new SignalMeter(ui->xMeterFrame);
+  xSignalMeter->resize(50, 160);
+  ySignalMeter = new SignalMeter(ui->yMeterFrame);
+  ySignalMeter->resize(50, 160);
+
+#ifdef WIN32
+  while(true) {
+      int iret=killbyname("m65.exe");
+      if(iret == 603) break;
+      if(iret != 0) msgBox("KillByName return code: " +
+                           QString::number(iret));
+  }
+#endif
+
+  if(!mem_m65.attach()) {
+    if (!mem_m65.create(sizeof(datcom_))) {
+      msgBox("Unable to create shared memory segment.");
+    }
+  }
+  char *to = (char*)mem_m65.data();
+  int size=sizeof(datcom_);
+  if(datcom_.newdat==0) {
+    int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768;
+    to += noffset;
+    size -= noffset;
+  }
+  memset(to,0,size);         //Zero all decoding params in shared memory
+
+  fftwf_import_wisdom_from_filename (QDir {m_appDir}.absoluteFilePath ("map65_wisdom.dat").toLocal8Bit ());
+
+  PaError paerr=Pa_Initialize();                    //Initialize Portaudio
+  if(paerr!=paNoError) {
+    msgBox("Unable to initialize PortAudio.");
+  }
+  readSettings();		             //Restore user's setup params
+  QFile lockFile(m_appDir + "/.lock"); //Create .lock so m65 will wait
+  lockFile.open(QIODevice::ReadWrite);
+  QFile quitFile(m_appDir + "/.quit");
+  quitFile.remove();
+  proc_m65.start(QDir::toNativeSeparators(m_appDir + "/m65"), {"-s", });
+
+  m_pbdecoding_style1="QPushButton{background-color: cyan; \
+      border-style: outset; border-width: 1px; border-radius: 5px; \
+      border-color: black; min-width: 5em; padding: 3px;}";
+  m_pbmonitor_style="QPushButton{background-color: #00ff00; \
+      border-style: outset; border-width: 1px; border-radius: 5px; \
+      border-color: black; min-width: 5em; padding: 3px;}";
+  m_pbAutoOn_style="QPushButton{background-color: red; \
+      border-style: outset; border-width: 1px; border-radius: 5px; \
+      border-color: black; min-width: 5em; padding: 3px;}";
+
+  genStdMsgs("");
+
+  on_actionAstro_Data_triggered();           //Create the other windows
+  on_actionWide_Waterfall_triggered();
+  on_actionMessages_triggered();
+  on_actionBand_Map_triggered();
+  if (m_messages_window) m_messages_window->setColors(m_colors);
+  m_band_map_window->setColors(m_colors);
+  if (m_astro_window) m_astro_window->setFontSize (m_astroFont);
+
+  if(m_modeQ65==0) on_actionNoQ65_triggered();
+  if(m_modeQ65==1) on_actionQ65A_triggered();
+  if(m_modeQ65==2) on_actionQ65B_triggered();
+  if(m_modeQ65==3) on_actionQ65C_triggered();
+  if(m_modeQ65==4) on_actionQ65D_triggered();
+  if(m_modeQ65==5) on_actionQ65E_triggered();
+
+  if(m_modeJT65==0) on_actionNoJT65_triggered();
+  if(m_modeJT65==1) on_actionJT65A_triggered();
+  if(m_modeJT65==2) on_actionJT65B_triggered();
+  if(m_modeJT65==3) on_actionJT65C_triggered();
+  future1 = new QFuture<void>;
+  watcher1 = new QFutureWatcher<void>;
+  connect(watcher1, SIGNAL(finished()),this,SLOT(diskDat()));
+
+  future2 = new QFuture<void>;
+  watcher2 = new QFutureWatcher<void>;
+  connect(watcher2, SIGNAL(finished()),this,SLOT(diskWriteFinished()));
+
+// Assign input device and start input thread
+  soundInThread.setInputDevice(m_paInDevice);
+  if(m_fs96000) soundInThread.setRate(96000.0);
+  if(!m_fs96000) soundInThread.setRate(95238.1);
+  soundInThread.setBufSize(10*7056);
+  soundInThread.setNetwork(m_network);
+  soundInThread.setPort(m_udpPort);
+  if(!m_xpol) soundInThread.setNrx(1);
+  if(m_xpol) soundInThread.setNrx(2);
+  soundInThread.start(QThread::HighestPriority);
+
+  // Assign output device and start output thread
+  soundOutThread.setOutputDevice(m_paOutDevice);
+//  soundOutThread.start(QThread::HighPriority);
+
+  m_monitoring=true;                           // Start with Monitoring ON
+  soundInThread.setMonitoring(m_monitoring);
+  m_diskData=false;
+  m_tol=500;
+  m_wide_graph_window->setTol(m_tol);
+  m_wide_graph_window->setFcal(m_fCal);
+  if(m_fs96000) m_wide_graph_window->setFsample(96000);
+  if(!m_fs96000) m_wide_graph_window->setFsample(95238);
+  m_wide_graph_window->m_mult570=m_mult570;
+  m_wide_graph_window->m_mult570Tx=m_mult570Tx;
+  m_wide_graph_window->m_cal570=m_cal570;
+  m_wide_graph_window->m_TxOffset=m_TxOffset;
+  if(m_initIQplus) m_wide_graph_window->initIQplus();
+
+// Create "m_worked", a dictionary of all calls in wsjt.log
+  QFile f("wsjt.log");
+  f.open(QIODevice::ReadOnly);
+  if(f.isOpen()) {
+    QTextStream in(&f);
+    QString line,t,callsign;
+    for(int i=0; i<99999; i++) {
+      line=in.readLine();
+      if(line.length()<=0) break;
+      t=line.mid(18,12);
+      callsign=t.mid(0,t.indexOf(","));
+      m_worked[callsign]=true;
+    }
+    f.close();
+  }
+
+  if(ui->actionLinrad->isChecked()) on_actionLinrad_triggered();
+  if(ui->actionCuteSDR->isChecked()) on_actionCuteSDR_triggered();
+  if(ui->actionAFMHot->isChecked()) on_actionAFMHot_triggered();
+  if(ui->actionBlue->isChecked()) on_actionBlue_triggered();
+
+  connect (m_messages_window.get (), &Messages::click2OnCallsign, this, &MainWindow::doubleClickOnMessages);
+  connect (m_wide_graph_window.get (), &WideGraph::freezeDecode2, this, &MainWindow::freezeDecode);
+  connect (m_wide_graph_window.get (), &WideGraph::f11f12, this, &MainWindow::bumpDF);
+
+  // only start the guiUpdate timer after this constructor has finished
+  QTimer::singleShot (0, [=] {
+                           m_gui_timer->start(100); //Don't change the 100 ms!
+                         });
+}
+
+  //--------------------------------------------------- MainWindow destructor
+MainWindow::~MainWindow()
+{
+  writeSettings();
+  if (soundInThread.isRunning()) {
+    soundInThread.quit();
+    soundInThread.wait(3000);
+  }
+  if (soundOutThread.isRunning()) {
+    soundOutThread.quitExecution=true;
+    soundOutThread.wait(3000);
+  }
+  Pa_Terminate();
+  fftwf_export_wisdom_to_filename (QDir {m_appDir}.absoluteFilePath ("map65_wisdom.dat").toLocal8Bit ());
+  if(!m_decoderBusy) {
+    QFile lockFile(m_appDir + "/.lock");
+    lockFile.remove();
+  }
+  delete ui;
+}
+
+//-------------------------------------------------------- writeSettings()
+void MainWindow::writeSettings()
+{
+  QSettings settings(m_settings_filename, QSettings::IniFormat);
+  {
+    SettingsGroup g {&settings, "MainWindow"};
+    settings.setValue("geometry", saveGeometry());
+    settings.setValue("MRUdir", m_path);
+    settings.setValue("TxFirst",m_txFirst);
+    settings.setValue("DXcall",ui->dxCallEntry->text());
+    settings.setValue("DXgrid",ui->dxGridEntry->text());
+  }
+
+  SettingsGroup g {&settings, "Common"};
+  settings.setValue("MyCall",m_myCall);
+  settings.setValue("MyGrid",m_myGrid);
+  settings.setValue("IDint",m_idInt);
+  settings.setValue("PTTport",m_pttPort);
+  settings.setValue("AstroFont",m_astroFont);
+  settings.setValue("Xpol",m_xpol);
+  settings.setValue("XpolX",m_xpolx);
+  settings.setValue("SaveDir",m_saveDir);
+  settings.setValue("AzElDir",m_azelDir);
+  settings.setValue("Editor",m_editorCommand);
+  settings.setValue("DXCCpfx",m_dxccPfx);
+  settings.setValue("Timeout",m_timeout);
+  settings.setValue("TxPower",txPower);
+  settings.setValue("IQamp",iqAmp);
+  settings.setValue("IQphase",iqPhase);
+  settings.setValue("ApplyIQcal",m_applyIQcal);
+  settings.setValue("dPhi",m_dPhi);
+  settings.setValue("Fcal",m_fCal);
+  settings.setValue("Fadd",m_fAdd);
+  settings.setValue("NetworkInput", m_network);
+  settings.setValue("FSam96000", m_fs96000);
+  settings.setValue("SoundInIndex",m_nDevIn);
+  settings.setValue("paInDevice",m_paInDevice);
+  settings.setValue("SoundOutIndex",m_nDevOut);
+  settings.setValue("paOutDevice",m_paOutDevice);
+  settings.setValue("IQswap",m_IQswap);
+  settings.setValue("Scale_dB",m_dB);
+  settings.setValue("IQxt",m_bIQxt);
+  settings.setValue("InitIQplus",m_initIQplus);
+  settings.setValue("UDPport",m_udpPort);
+  settings.setValue("PaletteCuteSDR",ui->actionCuteSDR->isChecked());
+  settings.setValue("PaletteLinrad",ui->actionLinrad->isChecked());
+  settings.setValue("PaletteAFMHot",ui->actionAFMHot->isChecked());
+  settings.setValue("PaletteBlue",ui->actionBlue->isChecked());
+  settings.setValue("Mode",m_mode);
+  settings.setValue("nModeJT65",m_modeJT65);
+  settings.setValue("nModeQ65",m_modeQ65);
+  settings.setValue("TxMode",m_modeTx);
+  settings.setValue("SaveNone",ui->actionNone->isChecked());
+  settings.setValue("SaveAll",ui->actionSave_all->isChecked());
+  settings.setValue("NDepth",m_ndepth);
+  settings.setValue("NEME",m_onlyEME);
+  settings.setValue("KB8RQ",m_kb8rq);
+  settings.setValue("NB",m_NB);
+  settings.setValue("NBslider",m_NBslider);
+  settings.setValue("GainX",(double)m_gainx);
+  settings.setValue("GainY",(double)m_gainy);
+  settings.setValue("PhaseX",(double)m_phasex);
+  settings.setValue("PhaseY",(double)m_phasey);
+  settings.setValue("Mult570",m_mult570);
+  settings.setValue("Mult570Tx",m_mult570Tx);
+  settings.setValue("Cal570",m_cal570);
+  settings.setValue("TxOffset",m_TxOffset);
+  settings.setValue("Colors",m_colors);
+  settings.setValue("MaxDrift",ui->sbMaxDrift->value());
+}
+
+//---------------------------------------------------------- readSettings()
+void MainWindow::readSettings()
+{
+  QSettings settings(m_settings_filename, QSettings::IniFormat);
+  {
+    SettingsGroup g {&settings, "MainWindow"};
+    restoreGeometry(settings.value("geometry").toByteArray());
+    ui->dxCallEntry->setText(settings.value("DXcall","").toString());
+    ui->dxGridEntry->setText(settings.value("DXgrid","").toString());
+    m_path = settings.value("MRUdir", m_appDir + "/save").toString();
+    m_txFirst = settings.value("TxFirst",false).toBool();
+    ui->txFirstCheckBox->setChecked(m_txFirst);
+  }
+
+  SettingsGroup g {&settings, "Common"};
+  m_myCall=settings.value("MyCall","").toString();
+  m_myGrid=settings.value("MyGrid","").toString();
+  m_idInt=settings.value("IDint",0).toInt();
+  m_pttPort=settings.value("PTTport",0).toInt();
+  m_astroFont=settings.value("AstroFont",20).toInt();
+  m_xpol=settings.value("Xpol",false).toBool();
+  ui->actionFind_Delta_Phi->setEnabled(m_xpol);
+  m_xpolx=settings.value("XpolX",false).toBool();
+  m_saveDir=settings.value("SaveDir",m_appDir + "/save").toString();
+  m_azelDir=settings.value("AzElDir",m_appDir).toString();
+  m_editorCommand=settings.value("Editor","notepad").toString();
+  m_dxccPfx=settings.value("DXCCpfx","").toString();
+  m_timeout=settings.value("Timeout",20).toInt();
+  txPower=settings.value("TxPower",100).toInt();
+  iqAmp=settings.value("IQamp",0).toInt();
+  iqPhase=settings.value("IQphase",0).toInt();
+  m_applyIQcal=settings.value("ApplyIQcal",0).toInt();
+  ui->actionApply_IQ_Calibration->setChecked(m_applyIQcal!=0);
+  m_dPhi=settings.value("dPhi",0).toInt();
+  m_fCal=settings.value("Fcal",0).toInt();
+  m_fAdd=settings.value("FAdd",0).toDouble();
+  soundInThread.setFadd(m_fAdd);
+  m_network = settings.value("NetworkInput",true).toBool();
+  m_fs96000 = settings.value("FSam96000",true).toBool();
+  m_nDevIn = settings.value("SoundInIndex", 0).toInt();
+  m_paInDevice = settings.value("paInDevice",0).toInt();
+  m_nDevOut = settings.value("SoundOutIndex", 0).toInt();
+  m_paOutDevice = settings.value("paOutDevice",0).toInt();
+  m_IQswap = settings.value("IQswap",false).toBool();
+  m_dB = settings.value("Scale_dB",0).toInt();
+  m_initIQplus = settings.value("InitIQplus",false).toBool();
+  m_bIQxt = settings.value("IQxt",false).toBool();
+  m_udpPort = settings.value("UDPport",50004).toInt();
+  soundInThread.setSwapIQ(m_IQswap);
+  soundInThread.setScale(m_dB);
+  soundInThread.setPort(m_udpPort);
+  ui->actionCuteSDR->setChecked(settings.value(
+                                  "PaletteCuteSDR",true).toBool());
+  ui->actionLinrad->setChecked(settings.value(
+                                 "PaletteLinrad",false).toBool());
+  m_mode=settings.value("Mode","JT65B").toString();
+  m_modeJT65=settings.value("nModeJT65",2).toInt();
+  if(m_modeJT65==0) ui->actionNoJT65->setChecked(true);
+  if(m_modeJT65==1) ui->actionJT65A->setChecked(true);
+  if(m_modeJT65==2) ui->actionJT65B->setChecked(true);
+  if(m_modeJT65==3) ui->actionJT65C->setChecked(true);
+
+  m_modeQ65=settings.value("nModeQ65",2).toInt();
+  m_modeTx=settings.value("TxMode","JT65").toString();
+  if(m_modeQ65==0) ui->actionNoQ65->setChecked(true);
+  if(m_modeQ65==1) ui->actionQ65A->setChecked(true);
+  if(m_modeQ65==2) ui->actionQ65B->setChecked(true);
+  if(m_modeQ65==3) ui->actionQ65C->setChecked(true);
+  if(m_modeQ65==4) ui->actionQ65D->setChecked(true);
+  if(m_modeQ65==5) ui->actionQ65E->setChecked(true);
+  if(m_modeTx=="JT65")  ui->pbTxMode->setText("Tx JT65   #");
+  if(m_modeTx=="Q65") ui->pbTxMode->setText("Tx Q65  :");
+
+  ui->actionNone->setChecked(settings.value("SaveNone",true).toBool());
+  ui->actionSave_all->setChecked(settings.value("SaveAll",false).toBool());
+  m_saveAll=ui->actionSave_all->isChecked();
+  m_ndepth=settings.value("NDepth",0).toInt();
+  m_onlyEME=settings.value("NEME",false).toBool();
+  ui->actionOnly_EME_calls->setChecked(m_onlyEME);
+  m_kb8rq=settings.value("KB8RQ",false).toBool();
+  ui->actionF4_sets_Tx6->setChecked(m_kb8rq);
+  m_NB=settings.value("NB",false).toBool();
+  ui->NBcheckBox->setChecked(m_NB);
+  ui->sbMaxDrift->setValue(settings.value("MaxDrift",0).toInt());
+  m_NBslider=settings.value("NBslider",40).toInt();
+  ui->NBslider->setValue(m_NBslider);
+  m_gainx=settings.value("GainX",1.0).toFloat();
+  m_gainy=settings.value("GainY",1.0).toFloat();
+  m_phasex=settings.value("PhaseX",0.0).toFloat();
+  m_phasey=settings.value("PhaseY",0.0).toFloat();
+  m_mult570=settings.value("Mult570",2).toInt();
+  m_mult570Tx=settings.value("Mult570Tx",1).toInt();
+  m_cal570=settings.value("Cal570",0.0).toDouble();
+  m_TxOffset=settings.value("TxOffset",130.9).toDouble();
+  m_colors=settings.value("Colors","000066ff0000ffff00969696646464").toString();
+
+  if(!ui->actionLinrad->isChecked() && !ui->actionCuteSDR->isChecked() &&
+    !ui->actionAFMHot->isChecked() && !ui->actionBlue->isChecked()) {
+    on_actionLinrad_triggered();
+    ui->actionLinrad->setChecked(true);
+  }
+  if(m_ndepth==0) ui->actionNo_Deep_Search->setChecked(true);
+  if(m_ndepth==1) ui->actionNormal_Deep_Search->setChecked(true);
+  if(m_ndepth==2) ui->actionAggressive_Deep_Search->setChecked(true);
+}
+
+//-------------------------------------------------------------- dataSink()
+void MainWindow::dataSink(int k)
+{
+  static float s[NFFT],splot[NFFT];
+  static int n=0;
+  static int ihsym=0;
+  static int nzap=0;
+  static int ntrz=0;
+  static int nkhz;
+  static int nfsample=96000;
+  static int nxpol=0;
+  static int nsec0=0;
+  static int nsum=0;
+  static float fgreen;
+  static int ndiskdat;
+  static int nb;
+  static int nadj=0;
+  static float px=0.0,py=0.0;
+  static uchar lstrong[1024];
+  static float rejectx;
+  static float rejecty;
+  static float slimit;
+  static double xsum=0.0;
+
+  if(m_diskData) {
+    ndiskdat=1;
+    datcom_.ndiskdat=1;
+  } else {
+    ndiskdat=0;
+    datcom_.ndiskdat=0;
+  }
+// Get x and y power, polarized spectrum, nkhz, and ihsym
+  nb=0;
+  if(m_NB) nb=1;
+  nfsample=96000;
+  if(!m_fs96000) nfsample=95238;
+  nxpol=0;
+  if(m_xpol) nxpol=1;
+  fgreen=m_wide_graph_window->fGreen();
+  nadj++;
+  if(m_adjustIQ==0) nadj=0;
+  symspec_(&k, &nxpol, &ndiskdat, &nb, &m_NBslider, &m_dPhi,
+           &nfsample, &fgreen, &m_adjustIQ, &m_applyIQcal,
+           &m_gainx, &m_gainy, &m_phasex, &m_phasey, &rejectx, &rejecty,
+           &px, &py, s, &nkhz, &ihsym, &nzap, &slimit, lstrong);
+
+  int nsec=QDateTime::currentSecsSinceEpoch();
+  if(nsec==nsec0) {
+    xsum+=pow(10.0,0.1*px);
+    nsum+=1;
+  } else {
+    m_xavg=0.0;
+    if(nsum>0) m_xavg=xsum/nsum;
+    xsum=pow(10.0,0.1*px);
+    nsum=1;
+  }
+  nsec0=nsec;
+
+  QString t;
+  m_pctZap=nzap/178.3;
+  ui->yMeterFrame->setVisible(m_xpol);
+  if(m_xpol) {
+    lab4->setText (
+                  QString {" Rx noise: %1  %2 %3 %% "}
+                     .arg (px, 5, 'f', 1)
+                     .arg (py, 5, 'f', 1)
+                     .arg (m_pctZap, 5, 'f', 1)
+                  );
+  } else {
+    lab4->setText (
+                  QString {" Rx noise: %1  %2 %% "}
+                  .arg (px, 5, 'f', 1)
+                  .arg (m_pctZap, 5, 'f', 1)
+                  );
+  }
+  xSignalMeter->setValue(px);                   // Update the signal meters
+  ySignalMeter->setValue(py);
+  if(m_monitoring || m_diskData) {
+    m_wide_graph_window->dataSink2(s,nkhz,ihsym,m_diskData,lstrong);
+  }
+
+  if(nadj == 10) {
+    if(m_xpol) {
+      ui->decodedTextBrowser->append (
+                                      QString {"Amp: %1 %2   Phase: %3 %4"}
+                                         .arg (m_gainx, 6, 'f', 4).arg (m_gainy, 6, 'f', 4)
+                                         .arg (m_phasex, 6, 'f', 4)
+                                         .arg (m_phasey, 6, 'f', 4)
+                                      );
+    } else {
+      ui->decodedTextBrowser->append(
+                                     QString {"Amp: %1   Phase: %1"}
+                                        .arg (m_gainx, 6, 'f', 4)
+                                        .arg (m_phasex, 6, 'f', 4)
+                                     );
+    }
+    ui->decodedTextBrowser->append(t);
+    m_adjustIQ=0;
+  }
+
+  //Average over specified number of spectra
+  if (n==0) {
+    for (int i=0; i<NFFT; i++)
+      splot[i]=s[i];
+  } else {
+    for (int i=0; i<NFFT; i++)
+      splot[i] += s[i];
+  }
+  n++;
+
+  if (n>=m_waterfallAvg) {
+    for (int i=0; i<NFFT; i++) {
+        splot[i] /= n;                           //Normalize the average
+    }
+
+// Time according to this computer
+    qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+    int ntr = (ms/1000) % m_TRperiod;
+    if((m_diskData && ihsym <= m_waterfallAvg) || (!m_diskData && ntr<ntrz)) {
+      for (int i=0; i<NFFT; i++) {
+        splot[i] = 1.e30;
+      }
+    }
+    ntrz=ntr;
+    n=0;
+  }
+
+  if(ihsym<280) m_RxState=0;
+
+  if(m_RxState==0 and ihsym>=280 and !m_diskData) {   //Early decode, t=52 s
+    m_RxState=1;
+    datcom_.newdat=1;
+    datcom_.nagain=0;
+    datcom_.nhsym=ihsym;
+    QDateTime t = QDateTime::currentDateTimeUtc();
+    m_dateTime=t.toString("yyyy-MMM-dd hh:mm");
+    decode();                                           //Start the decoder
+  }
+
+  if(m_RxState<=1 and ihsym>=302) {   //Decode at t=56 s (for Q65 and data from disk)
+    m_RxState=2;
+    datcom_.newdat=1;
+    datcom_.nagain=0;
+    datcom_.nhsym=ihsym;
+    QDateTime t = QDateTime::currentDateTimeUtc();
+    m_dateTime=t.toString("yyyy-MMM-dd hh:mm");
+    decode();                                           //Start the decoder
+    if(m_saveAll and !m_diskData) {
+      QString fname=m_saveDir + "/" + t.date().toString("yyMMdd") + "_" +
+          t.time().toString("hhmm");
+      if(m_xpol) fname += ".tf2";
+      if(!m_xpol) fname += ".iq";
+      *future2 = QtConcurrent::run(savetf2, fname, m_xpol);
+      watcher2->setFuture(*future2);
+    }
+  }
+
+  soundInThread.m_dataSinkBusy=false;
+}
+
+void MainWindow::showSoundInError(const QString& errorMsg)
+ {QMessageBox::critical(this, tr("Error in SoundIn"), errorMsg);}
+
+void MainWindow::showStatusMessage(const QString& statusMsg)
+ {statusBar()->showMessage(statusMsg);}
+
+void MainWindow::on_actionDeviceSetup_triggered()               //Setup Dialog
+{
+  DevSetup dlg(this);
+  dlg.m_myCall=m_myCall;
+  dlg.m_myGrid=m_myGrid;
+  dlg.m_idInt=m_idInt;
+  dlg.m_pttPort=m_pttPort;
+  dlg.m_astroFont=m_astroFont;
+  dlg.m_xpol=m_xpol;
+  dlg.m_xpolx=m_xpolx;
+  dlg.m_saveDir=m_saveDir;
+  dlg.m_azelDir=m_azelDir;
+  dlg.m_editorCommand=m_editorCommand;
+  dlg.m_dxccPfx=m_dxccPfx;
+  dlg.m_timeout=m_timeout;
+  dlg.m_dPhi=m_dPhi;
+  dlg.m_fCal=m_fCal;
+  dlg.m_fAdd=m_fAdd;
+  dlg.m_network=m_network;
+  dlg.m_fs96000=m_fs96000;
+  dlg.m_nDevIn=m_nDevIn;
+  dlg.m_nDevOut=m_nDevOut;
+  dlg.m_udpPort=m_udpPort;
+  dlg.m_IQswap=m_IQswap;
+  dlg.m_dB=m_dB;
+  dlg.m_initIQplus=m_initIQplus;
+  dlg.m_bIQxt=m_bIQxt;
+  dlg.m_cal570=m_cal570;
+  dlg.m_TxOffset=m_TxOffset;
+  dlg.m_mult570=m_mult570;
+  dlg.m_mult570Tx=m_mult570Tx;
+  dlg.m_colors=m_colors;
+
+  dlg.initDlg();
+  if(dlg.exec() == QDialog::Accepted) {
+    m_myCall=dlg.m_myCall;
+    m_myGrid=dlg.m_myGrid;
+    m_idInt=dlg.m_idInt;
+    m_pttPort=dlg.m_pttPort;
+    m_astroFont=dlg.m_astroFont;
+    if(m_astro_window && m_astro_window->isVisible()) m_astro_window->setFontSize(m_astroFont);
+    m_xpol=dlg.m_xpol;
+    ui->actionFind_Delta_Phi->setEnabled(m_xpol);
+    m_xpolx=dlg.m_xpolx;
+    m_saveDir=dlg.m_saveDir;
+    m_azelDir=dlg.m_azelDir;
+    m_editorCommand=dlg.m_editorCommand;
+    m_dxccPfx=dlg.m_dxccPfx;
+    m_timeout=dlg.m_timeout;
+    m_dPhi=dlg.m_dPhi;
+    m_fCal=dlg.m_fCal;
+    m_fAdd=dlg.m_fAdd;
+    m_wide_graph_window->setFcal(m_fCal);
+    m_fs96000=dlg.m_fs96000;
+    m_network=dlg.m_network;
+    m_nDevIn=dlg.m_nDevIn;
+    m_paInDevice=dlg.m_paInDevice;
+    m_nDevOut=dlg.m_nDevOut;
+    m_paOutDevice=dlg.m_paOutDevice;
+    m_udpPort=dlg.m_udpPort;
+    m_IQswap=dlg.m_IQswap;
+    m_dB=dlg.m_dB;
+    m_initIQplus=dlg.m_initIQplus;
+    m_bIQxt=dlg.m_bIQxt;
+    m_colors=dlg.m_colors;
+    m_messages_window->setColors(m_colors);
+    m_band_map_window->setColors(m_colors);
+    m_cal570=dlg.m_cal570;
+    m_TxOffset=dlg.m_TxOffset;
+    m_mult570Tx=dlg.m_mult570Tx;
+    m_wide_graph_window->m_mult570=m_mult570;
+    m_wide_graph_window->m_mult570Tx=m_mult570Tx;
+    m_wide_graph_window->m_cal570=m_cal570;
+    soundInThread.setSwapIQ(m_IQswap);
+    soundInThread.setScale(m_dB);
+
+    if(dlg.m_restartSoundIn) {
+      soundInThread.quit();
+      soundInThread.wait(1000);
+      soundInThread.setNetwork(m_network);
+      if(m_fs96000) soundInThread.setRate(96000.0);
+      if(!m_fs96000) soundInThread.setRate(95238.1);
+      soundInThread.setFadd(m_fAdd);
+      if(!m_xpol) soundInThread.setNrx(1);
+      if(m_xpol) soundInThread.setNrx(2);
+      soundInThread.setInputDevice(m_paInDevice);
+      soundInThread.start(QThread::HighestPriority);
+    }
+
+    if(dlg.m_restartSoundOut) {
+      soundOutThread.quitExecution=true;
+      soundOutThread.wait(1000);
+      soundOutThread.setOutputDevice(m_paOutDevice);
+//      soundOutThread.start(QThread::HighPriority);
+    }
+  }
+}
+
+void MainWindow::on_monitorButton_clicked()                  //Monitor
+{
+  m_monitoring=true;
+  soundInThread.setMonitoring(true);
+  m_diskData=false;
+}
+void MainWindow::on_actionLinrad_triggered()                 //Linrad palette
+{
+  if(m_wide_graph_window) m_wide_graph_window->setPalette("Linrad");
+}
+
+void MainWindow::on_actionCuteSDR_triggered()                //CuteSDR palette
+{
+  if(m_wide_graph_window) m_wide_graph_window->setPalette("CuteSDR");
+}
+
+void MainWindow::on_actionAFMHot_triggered()
+{
+  if(m_wide_graph_window) m_wide_graph_window->setPalette("AFMHot");
+}
+
+void MainWindow::on_actionBlue_triggered()
+{
+  if(m_wide_graph_window) m_wide_graph_window->setPalette("Blue");
+}
+
+void MainWindow::on_actionAbout_triggered()                  //Display "About"
+{
+  CAboutDlg dlg(this);
+  dlg.exec();
+}
+
+void MainWindow::on_autoButton_clicked()                     //Auto
+{
+  m_auto = !m_auto;
+  if(m_auto) {
+    ui->autoButton->setStyleSheet(m_pbAutoOn_style);
+    ui->autoButton->setText("Auto is ON");
+  } else {
+    btxok=false;
+    ui->autoButton->setStyleSheet("");
+    ui->autoButton->setText("Auto is OFF");
+    on_monitorButton_clicked();
+  }
+}
+
+void MainWindow::on_stopTxButton_clicked()                    //Stop Tx
+{
+  if(m_auto) on_autoButton_clicked();
+  btxok=false;
+}
+
+void MainWindow::keyPressEvent( QKeyEvent *e )                //keyPressEvent
+{
+  switch(e->key())
+  {
+  case Qt::Key_F3:
+    m_txMute=!m_txMute;
+    break;
+  case Qt::Key_F4:
+    ui->dxCallEntry->setText("");
+    ui->dxGridEntry->setText("");
+    if(m_kb8rq) {
+      m_ntx=6;
+      ui->txrb6->setChecked(true);
+    }
+    break;
+  case Qt::Key_F6:
+    if(e->modifiers() & Qt::ShiftModifier) {
+      on_actionDecode_remaining_files_in_directory_triggered();
+    }
+    break;
+  case Qt::Key_F11:
+    if(e->modifiers() & Qt::ShiftModifier) {
+    } else {
+      int n0=m_wide_graph_window->DF();
+      int n=(n0 + 10000) % 5;
+      if(n==0) n=5;
+      m_wide_graph_window->setDF(n0-n);
+    }
+    break;
+  case Qt::Key_F12:
+    if(e->modifiers() & Qt::ShiftModifier) {
+    } else {
+      int n0=m_wide_graph_window->DF();
+      int n=(n0 + 10000) % 5;
+      if(n==0) n=5;
+      m_wide_graph_window->setDF(n0+n);
+    }
+    break;
+  case Qt::Key_G:
+    if(e->modifiers() & Qt::AltModifier) {
+      genStdMsgs("");
+    }
+    break;
+  case Qt::Key_L:
+    if(e->modifiers() & Qt::ControlModifier) {
+      lookup();
+      genStdMsgs("");
+      break;
+    }
+  }
+}
+
+void MainWindow::bumpDF(int n)                                  //bumpDF()
+{
+  if(n==11) {
+    int n0=m_wide_graph_window->DF();
+    int n=(n0 + 10000) % 5;
+    if(n==0) n=5;
+    m_wide_graph_window->setDF(n0-n);
+  }
+  if(n==12) {
+    int n0=m_wide_graph_window->DF();
+    int n=(n0 + 10000) % 5;
+    if(n==0) n=5;
+    m_wide_graph_window->setDF(n0+n);
+  }
+}
+
+bool MainWindow::eventFilter(QObject *object, QEvent *event)  //eventFilter()
+{
+  if (event->type() == QEvent::KeyPress) {
+    //Use the event in parent using its keyPressEvent()
+    QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
+    MainWindow::keyPressEvent(keyEvent);
+    return QObject::eventFilter(object, event);
+  }
+  return QObject::eventFilter(object, event);
+}
+
+void MainWindow::createStatusBar()                           //createStatusBar
+{
+  lab1 = new QLabel("Receiving");
+  lab1->setAlignment(Qt::AlignHCenter);
+  lab1->setMinimumSize(QSize(80,10));
+  lab1->setStyleSheet("QLabel{background-color: #00ff00}");
+  lab1->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  statusBar()->addWidget(lab1);
+
+  lab2 = new QLabel("QSO freq:  125");
+  lab2->setAlignment(Qt::AlignHCenter);
+  lab2->setMinimumSize(QSize(90,10));
+  lab2->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  statusBar()->addWidget(lab2);
+
+  lab3 = new QLabel("QSO DF:   0");
+  lab3->setAlignment(Qt::AlignHCenter);
+  lab3->setMinimumSize(QSize(80,10));
+  lab3->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  statusBar()->addWidget(lab3);
+
+  lab4 = new QLabel("");
+  lab4->setAlignment(Qt::AlignHCenter);
+  lab4->setMinimumSize(QSize(80,10));
+  lab4->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  statusBar()->addWidget(lab4);
+
+  lab5 = new QLabel("");
+  lab5->setAlignment(Qt::AlignHCenter);
+  lab5->setMinimumSize(QSize(50,10));
+  lab5->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  statusBar()->addWidget(lab5);
+
+  lab6 = new QLabel("");
+  lab6->setAlignment(Qt::AlignHCenter);
+  lab6->setMinimumSize(QSize(50,10));
+  lab6->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  statusBar()->addWidget(lab6);
+
+  lab7 = new QLabel("Avg: 0");
+  lab7->setAlignment(Qt::AlignHCenter);
+  lab7->setMinimumSize(QSize(50,10));
+  lab7->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  statusBar()->addWidget(lab7);
+}
+
+void MainWindow::on_tolSpinBox_valueChanged(int i)             //tolSpinBox
+{
+  static int ntol[] = {10,20,50,100,200,500,1000};
+  m_tol=ntol[i];
+  m_wide_graph_window->setTol(m_tol);
+  ui->labTol1->setText(QString::number(ntol[i]));
+}
+
+void MainWindow::on_actionExit_triggered()                     //Exit()
+{
+  close ();
+}
+
+void MainWindow::closeEvent (QCloseEvent * e)
+{
+  if (m_gui_timer) m_gui_timer->stop ();
+  m_wide_graph_window->saveSettings();
+  QFile quitFile(m_appDir + "/.quit");
+  quitFile.open(QIODevice::ReadWrite);
+  QFile lockFile(m_appDir + "/.lock");
+  lockFile.remove();                      // Allow m65 to terminate
+
+  // close pipes
+  proc_m65.closeReadChannel (QProcess::StandardOutput);
+  proc_m65.closeReadChannel (QProcess::StandardError);
+
+  // flush all input
+  proc_m65.setReadChannel (QProcess::StandardOutput);
+  proc_m65.readAll ();
+  proc_m65.setReadChannel (QProcess::StandardError);
+  proc_m65.readAll ();
+
+  proc_m65.disconnect ();
+  if (!proc_m65.waitForFinished (1000)) proc_m65.kill();
+  quitFile.remove();
+  mem_m65.detach();
+  if (m_astro_window) m_astro_window->close ();
+  if (m_band_map_window) m_band_map_window->close ();
+  if (m_messages_window) m_messages_window->close ();
+  if (m_wide_graph_window) m_wide_graph_window->close ();
+  QMainWindow::closeEvent (e);
+}
+
+void MainWindow::on_stopButton_clicked()                       //stopButton
+{
+  m_monitoring=false;
+  soundInThread.setMonitoring(m_monitoring);
+  m_loopall=false;  
+}
+
+void MainWindow::msgBox(QString t)                             //msgBox
+{
+  msgBox0.setText(t);
+  msgBox0.exec();
+}
+
+void MainWindow::stub()                                        //stub()
+{
+  msgBox("Not yet implemented.");
+}
+
+void MainWindow::on_actionRelease_Notes_triggered()
+{
+  QDesktopServices::openUrl(QUrl(
+  "https://www.physics.princeton.edu/pulsar/K1JT/Release_Notes.txt",
+                              QUrl::TolerantMode));
+}
+
+void MainWindow::on_actionOnline_Users_Guide_triggered()      //Display manual
+{
+  QDesktopServices::openUrl(QUrl(
+  "https://www.physics.princeton.edu/pulsar/K1JT/MAP65_Users_Guide.pdf",
+                              QUrl::TolerantMode));
+}
+
+void MainWindow::on_actionQSG_Q65_triggered()
+{
+  QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/Q65_Quick_Start.pdf"});
+}
+
+void MainWindow::on_actionQSG_MAP65_v3_triggered()
+{
+  QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/WSJTX_2.5.0_MAP65_3.0_Quick_Start.pdf"});
+}
+
+void MainWindow::on_actionQ65_Sensitivity_in_MAP65_3_0_triggered()
+{
+  QDesktopServices::openUrl (QUrl {"https://physics.princeton.edu/pulsar/k1jt/Q65_Sensitivity_in_MAP65.pdf"});
+}
+
+void MainWindow::on_actionAstro_Data_triggered()             //Display Astro
+{
+  if (m_astro_window ) m_astro_window->show();
+}
+
+void MainWindow::on_actionWide_Waterfall_triggered()      //Display Waterfalls
+{
+  m_wide_graph_window->show();
+}
+
+void MainWindow::on_actionBand_Map_triggered()              //Display BandMap
+{
+  m_band_map_window->show ();
+}
+
+void MainWindow::on_actionMessages_triggered()              //Display Messages
+{
+  m_messages_window->show();
+}
+
+void MainWindow::on_actionOpen_triggered()                     //Open File
+{
+  m_monitoring=false;
+  soundInThread.setMonitoring(m_monitoring);
+  QString fname;
+  if(m_xpol) {
+    fname=QFileDialog::getOpenFileName(this, "Open File", m_path,
+                                       "MAP65 Files (*.tf2)");
+  } else {
+    fname=QFileDialog::getOpenFileName(this, "Open File", m_path,
+                                       "MAP65 Files (*.iq)");
+  }
+  if(fname != "") {
+    m_path=fname;
+    int i;
+    i=fname.indexOf(".iq") - 11;
+    if(m_xpol) i=fname.indexOf(".tf2") - 11;
+    if(i>=0) {
+      lab1->setStyleSheet("QLabel{background-color: #66ff66}");
+      lab1->setText(" " + fname.mid(i,15) + " ");
+    }
+    on_stopButton_clicked();
+    m_diskData=true;
+    int dbDgrd=0;
+    if(m_myCall=="K1JT" and m_idInt<0) dbDgrd=m_idInt;
+    *future1 = QtConcurrent::run(getfile, fname, m_xpol, dbDgrd);
+    watcher1->setFuture(*future1);
+  }
+}
+
+void MainWindow::on_actionOpen_next_in_directory_triggered()   //Open Next
+{
+  int i,len;
+  QFileInfo fi(m_path);
+  QStringList list;
+  if(m_xpol) {
+      list= fi.dir().entryList().filter(".tf2");
+  } else {
+      list= fi.dir().entryList().filter(".iq");
+  }
+  for (i = 0; i < list.size()-1; ++i) {
+    if(i==list.size()-2) m_loopall=false;
+    len=list.at(i).length();
+    if(list.at(i)==m_path.right(len)) {
+      int n=m_path.length();
+      QString fname=m_path.replace(n-len,len,list.at(i+1));
+      m_path=fname;
+      int i;
+      i=fname.indexOf(".iq") - 11;
+      if(m_xpol) i=fname.indexOf(".tf2") - 11;
+      if(i>=0) {
+        lab1->setStyleSheet("QLabel{background-color: #66ff66}");
+        lab1->setText(" " + fname.mid(i,len) + " ");
+      }
+      m_diskData=true;
+      int dbDgrd=0;
+      if(m_myCall=="K1JT" and m_idInt<0) dbDgrd=m_idInt;
+      *future1 = QtConcurrent::run(getfile, fname, m_xpol, dbDgrd);
+      watcher1->setFuture(*future1);
+      return;
+    }
+  }
+}
+                                                   //Open all remaining files
+void MainWindow::on_actionDecode_remaining_files_in_directory_triggered()
+{
+  m_loopall=true;
+  on_actionOpen_next_in_directory_triggered();
+}
+
+void MainWindow::diskDat()                                   //diskDat()
+{
+  double hsym;
+  //These may be redundant??
+  m_diskData=true;
+  datcom_.newdat=1;
+  if(m_wide_graph_window->m_bForceCenterFreq) {
+    datcom_.fcenter=m_wide_graph_window->m_dForceCenterFreq;
+  }
+
+  if(m_fs96000) hsym=2048.0*96000.0/11025.0;   //Samples per JT65 half-symbol
+  if(!m_fs96000) hsym=2048.0*95238.1/11025.0;
+  for(int i=0; i<304; i++) {           // Do the half-symbol FFTs
+    int k = i*hsym + 2048.5;
+    dataSink(k);
+    qApp->processEvents();             // Allow the waterfall to update
+  }
+}
+
+void MainWindow::diskWriteFinished()                      //diskWriteFinished
+{
+//  qDebug() << "diskWriteFinished";
+}
+                                                        //Delete ../save/*.tf2
+void MainWindow::on_actionDelete_all_tf2_files_in_SaveDir_triggered()
+{
+  int i;
+  QString fname;
+  int ret = QMessageBox::warning(this, "Confirm Delete",
+      "Are you sure you want to delete all *.tf2 and *.iq files in\n" +
+       QDir::toNativeSeparators(m_saveDir) + " ?",
+       QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+  if(ret==QMessageBox::Yes) {
+    QDir dir(m_saveDir);
+    QStringList files=dir.entryList(QDir::Files);
+    QList<QString>::iterator f;
+    for(f=files.begin(); f!=files.end(); ++f) {
+      fname=*f;
+      i=(fname.indexOf(".tf2"));
+      if(i==11) dir.remove(fname);
+      i=(fname.indexOf(".iq"));
+      if(i==11) dir.remove(fname);
+    }
+  }
+}
+                                          //Clear BandMap and Messages windows
+void MainWindow::on_actionErase_Band_Map_and_Messages_triggered()
+{
+  m_band_map_window->setText("");
+  m_messages_window->setText("","");
+  m_map65RxLog |= 4;
+}
+
+void MainWindow::on_actionFind_Delta_Phi_triggered()              //Find dPhi
+{
+  m_map65RxLog |= 8;
+  on_DecodeButton_clicked();
+}
+
+void MainWindow::on_actionF4_sets_Tx6_triggered()                //F4 sets Tx6
+{
+  m_kb8rq = !m_kb8rq;
+}
+
+void MainWindow::on_actionOnly_EME_calls_triggered()          //EME calls only
+{
+  m_onlyEME = ui->actionOnly_EME_calls->isChecked();
+}
+
+void MainWindow::on_actionNo_shorthands_if_Tx1_triggered()
+{
+  stub();
+}
+
+void MainWindow::on_actionNo_Deep_Search_triggered()          //No Deep Search
+{
+  m_ndepth=0;
+}
+
+void MainWindow::on_actionNormal_Deep_Search_triggered()      //Normal DS
+{
+  m_ndepth=1;
+}
+
+void MainWindow::on_actionAggressive_Deep_Search_triggered()  //Aggressive DS
+{
+  m_ndepth=2;
+}
+
+void MainWindow::on_actionNone_triggered()                    //Save None
+{
+  m_saveAll=false;
+}
+
+// ### Implement "Save Last" here? ###
+
+void MainWindow::on_actionSave_all_triggered()                //Save All
+{
+  m_saveAll=true;
+}
+                                          //Display list of keyboard shortcuts
+void MainWindow::on_actionKeyboard_shortcuts_triggered()
+{
+  stub();
+}
+                                              //Display list of mouse commands
+void MainWindow::on_actionSpecial_mouse_commands_triggered()
+{
+  stub();
+}
+                                              //Diaplay list of Add-On pfx/sfx
+void MainWindow::on_actionAvailable_suffixes_and_add_on_prefixes_triggered()
+{
+  stub();
+}
+
+void MainWindow::on_DecodeButton_clicked()                    //Decode request
+{
+  int n=m_sec0%m_TRperiod;
+  if(m_monitoring and n>47 and (n<52 or m_decoderBusy)) return;
+  if(!m_decoderBusy) {
+    datcom_.newdat=0;
+    datcom_.nagain=1;
+    decode();
+  }
+}
+
+void MainWindow::freezeDecode(int n)                          //freezeDecode()
+{
+  if(n==2) {
+    ui->tolSpinBox->setValue(5);
+    datcom_.ntol=m_tol;
+    datcom_.mousedf=0;
+  } else {
+    ui->tolSpinBox->setValue(qMin(3,ui->tolSpinBox->value()));
+    datcom_.ntol=m_tol;
+  }
+  if(!m_decoderBusy) {
+    datcom_.nagain=1;
+    datcom_.newdat=0;
+    decode();
+  }
+}
+
+void MainWindow::decode()                                       //decode()
+{
+  ui->DecodeButton->setStyleSheet(m_pbdecoding_style1);
+
+//  QFile f("mockRTfiles.txt");
+//  if(datcom_.nagain==0 && (!m_diskData) && !f.exists()) {
+  if(datcom_.nagain==0 && (!m_diskData)) {
+    qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+    int imin=ms/60000;
+    int ihr=imin/60;
+    imin=imin % 60;
+    datcom_.nutc=100*ihr + imin;
+  }
+
+  datcom_.idphi=m_dPhi;
+  datcom_.mousedf=m_wide_graph_window->DF();
+  datcom_.mousefqso=m_wide_graph_window->QSOfreq();
+  datcom_.ndepth=m_ndepth;
+  datcom_.ndiskdat=0;
+  if(m_diskData) {
+    datcom_.ndiskdat=1;
+    int i0=m_path.indexOf(".tf2");
+    if(i0<0) i0=m_path.indexOf(".iq");
+    if(i0>0) {
+      // Compute self Doppler using the filename for Date and Time
+      int nyear=m_path.mid(i0-11,2).toInt()+2000;
+      int month=m_path.mid(i0-9,2).toInt();
+      int nday=m_path.mid(i0-7,2).toInt();
+      int nhr=m_path.mid(i0-4,2).toInt();
+      int nmin=m_path.mid(i0-2,2).toInt();
+      double uth=nhr + nmin/60.0;
+      int nfreq=(int)datcom_.fcenter;
+      int ndop00;
+
+      astrosub00_(&nyear, &month, &nday, &uth, &nfreq, m_myGrid.toLatin1(),&ndop00,6);
+      datcom_.nfast=ndop00;               //Send self Doppler to decoder, via datcom
+    }
+  }
+  datcom_.neme=0;
+  if(ui->actionOnly_EME_calls->isChecked()) datcom_.neme=1;
+
+  int ispan=int(m_wide_graph_window->fSpan());
+  if(ispan%2 == 1) ispan++;
+  int ifc=int(1000.0*(datcom_.fcenter - int(datcom_.fcenter))+0.5);
+  int nfa=m_wide_graph_window->nStartFreq();
+  int nfb=nfa+ispan;
+  int nfshift=nfa + ispan/2 - ifc;
+
+  datcom_.nfa=nfa;
+  datcom_.nfb=nfb;
+  datcom_.nfcal=m_fCal;
+  datcom_.nfshift=nfshift;
+  datcom_.mcall3=0;
+  if(m_call3Modified) datcom_.mcall3=1;
+  datcom_.ntimeout=m_timeout;
+  datcom_.ntol=m_tol;
+  datcom_.nxant=0;
+  if(m_xpolx) datcom_.nxant=1;
+  if(datcom_.nutc < m_nutc0) m_map65RxLog |= 1;  //Date and Time to map65_rx.log
+  m_nutc0=datcom_.nutc;
+  datcom_.map65RxLog=m_map65RxLog;
+  datcom_.nfsample=96000;
+  if(!m_fs96000) datcom_.nfsample=95238;
+  datcom_.nxpol=0;
+  if(m_xpol) datcom_.nxpol=1;
+  datcom_.nmode=10*m_modeQ65 + m_modeJT65;
+//  datcom_.nfast=1;                               //No longer used
+  datcom_.nsave=m_nsave;
+  datcom_.max_drift=ui->sbMaxDrift->value();
+
+  QString mcall=(m_myCall+"            ").mid(0,12);
+  QString mgrid=(m_myGrid+"            ").mid(0,6);
+  QString hcall=(ui->dxCallEntry->text()+"            ").mid(0,12);
+  QString hgrid=(ui->dxGridEntry->text()+"      ").mid(0,6);
+
+  memcpy(datcom_.mycall, mcall.toLatin1(), 12);
+  memcpy(datcom_.mygrid, mgrid.toLatin1(), 6);
+  memcpy(datcom_.hiscall, hcall.toLatin1(), 12);
+  memcpy(datcom_.hisgrid, hgrid.toLatin1(), 6);
+  memcpy(datcom_.datetime, m_dateTime.toLatin1(), 17);
+  datcom_.junk1=1234;
+  datcom_.junk2=5678;
+
+  //newdat=1  ==> this is new data, must do the big FFT
+  //nagain=1  ==> decode only at fQSO +/- Tol
+
+  char *to = (char*)mem_m65.data();
+  char *from = (char*) datcom_.d4;
+  int size=sizeof(datcom_);
+  if(datcom_.newdat==0) {
+    int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768;
+    to += noffset;
+    from += noffset;
+    size -= noffset;
+  }
+  memcpy(to, from, qMin(mem_m65.size(), size-8));
+  datcom_.nagain=0;
+  datcom_.ndiskdat=0;
+  m_map65RxLog=0;
+  m_call3Modified=false;
+
+  QFile lockFile(m_appDir + "/.lock");       // Allow m65 to start
+  lockFile.remove();
+  decodeBusy(true);
+}
+
+bool MainWindow::subProcessFailed (QProcess * process, int exit_code, QProcess::ExitStatus status)
+{
+  if (exit_code || QProcess::NormalExit != status)
+    {
+      QStringList arguments;
+      for (auto argument: process->arguments ())
+        {
+          if (argument.contains (' ')) argument = '"' + argument + '"';
+          arguments << argument;
+        }
+      MessageBox::critical_message (this, tr ("Subprocess Error")
+                                    , tr ("Subprocess failed with exit code %1")
+                                    .arg (exit_code)
+                                    , tr ("Running: %1\n%2")
+                                    .arg (process->program () + ' ' + arguments.join (' '))
+                                    .arg (QString {process->readAllStandardError()}));
+      return true;
+    }
+  return false;
+}
+
+void MainWindow::m65_error (QProcess::ProcessError)
+{
+  msgBox("Error starting or running\n" + m_appDir + "/m65 -s\n\n"
+         + proc_m65.errorString ());
+  QTimer::singleShot (0, this, SLOT (close ()));
+}
+
+void MainWindow::editor_error()                                 //editor_error
+{
+  msgBox("Error starting or running\n" + m_appDir + "/" + m_editorCommand);
+}
+
+void MainWindow::readFromStdout()                             //readFromStdout
+{
+  while(proc_m65.canReadLine())
+  {
+    QByteArray t=proc_m65.readLine();
+    if(t.indexOf("<QuickDecodeDone>") >= 0) {
+      m_nsum=t.mid(17,4).toInt();
+      m_nsave=t.mid(21,4).toInt();
+      lab7->setText (QString {"Avg: %1"}.arg (m_nsum));
+      if(m_modeQ65>0) m_wide_graph_window->setDecodeFinished();
+    }
+
+    if((t.indexOf("<EarlyFinished>") >= 0) or (t.indexOf("<DecodeFinished>") >= 0)) {
+      if(m_widebandDecode) {
+        m_messages_window->setText(m_messagesText,m_bandmapText);
+        m_band_map_window->setText(m_bandmapText);
+        m_widebandDecode=false;
+      }
+      QFile lockFile(m_appDir + "/.lock");
+      lockFile.open(QIODevice::ReadWrite);
+      if(t.indexOf("<DecodeFinished>") >= 0) {
+        int ndecodes=t.mid(40,5).toInt();
+        lab5->setText(QString::number(ndecodes));
+        m_map65RxLog=0;
+        m_startAnother=m_loopall;
+      }
+      ui->DecodeButton->setStyleSheet("");
+      decodeBusy(false);
+      return;
+    }
+
+    read_log();
+
+    if(t.indexOf("!") >= 0) {
+      int n=t.length();
+      int m=2;
+#ifdef WIN32
+      m=3;
+#endif
+      if(n>=30 or t.indexOf("Best-fit")>=0) ui->decodedTextBrowser->append(t.mid(1,n-m));
+      n=ui->decodedTextBrowser->verticalScrollBar()->maximum();
+      ui->decodedTextBrowser->verticalScrollBar()->setValue(n);
+      m_messagesText="";
+      m_bandmapText="";
+    }
+
+    if(t.indexOf("@") >= 0) {
+      m_messagesText += t.mid(1);
+      m_widebandDecode=true;
+    }
+
+    if(t.indexOf("&") >= 0) {
+      QString q(t);
+      QString callsign=q.mid(5);
+      callsign=callsign.mid(0,callsign.indexOf(" "));
+      if(callsign.length()>2) {
+        if(m_worked[callsign]) {
+          q=q.mid(1,4) + "  " + q.mid(5);
+        } else {
+          q=q.mid(1,4) + " *" + q.mid(5);
+        }
+        m_bandmapText += q;
+      }
+    }
+    if(t.indexOf("=") >= 0) {
+      int n=t.size();
+      qDebug() << t.mid(1,n-3).trimmed();
+    }
+  }
+}
+
+void MainWindow::on_EraseButton_clicked()
+{
+  qint64 ms=QDateTime::currentMSecsSinceEpoch();
+  ui->decodedTextBrowser->clear();
+  if((ms-m_msErase)<500) {
+    on_actionErase_Band_Map_and_Messages_triggered();
+  }
+  m_msErase=ms;
+}
+
+
+void MainWindow::decodeBusy(bool b)                             //decodeBusy()
+{
+  m_decoderBusy=b;
+  ui->DecodeButton->setEnabled(!b);
+  ui->actionOpen->setEnabled(!b);
+  ui->actionOpen_next_in_directory->setEnabled(!b);
+  ui->actionDecode_remaining_files_in_directory->setEnabled(!b);
+}
+
+//------------------------------------------------------------- //guiUpdate()
+void MainWindow::guiUpdate()
+{
+  static int iptt0=0;
+  static int iptt=0;
+  static bool btxok0=false;
+  static bool bTune0=false;
+  static bool bMonitoring0=false;
+  static int nc0=1;
+  static int nc1=1;
+  static char msgsent[23];
+  static int nsendingsh=0;
+  int khsym=0;
+
+  double tx1=0.0;
+  double tx2=126.0*4096.0/11025.0 + 1.8;
+  if(m_modeTx=="Q65") tx2=85.0*7200.0/12000.0 + 1.8;
+
+  if(!m_txFirst) {
+    tx1 += m_TRperiod;
+    tx2 += m_TRperiod;
+  }
+  qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+  int nsec=ms/1000;
+  double tsec=0.001*ms;
+  double t2p=fmod(tsec,120.0);
+  bool bTxTime = (t2p >= tx1) and (t2p < tx2);
+
+  if(bTune0 and !bTune) {
+    btxok=false;
+    m_monitoring=bMonitoring0;
+    soundInThread.setMonitoring(m_monitoring);
+  }
+  if(bTune and !bTune0) bMonitoring0=m_monitoring;
+  bTune0=bTune;
+
+  if(m_auto or bTune) {
+    if((bTxTime or bTune) and iptt==0 and !m_txMute) {
+      int itx=1;
+      int ierr = ptt_(&m_pttPort,&itx,&iptt);       // Raise PTT
+      if(ierr != 0) {
+        on_stopTxButton_clicked();
+        char s[18];
+        sprintf(s,"Cannot open COM%d",m_pttPort);
+        msgBox(s);
+      }
+
+      if(m_bIQxt) m_wide_graph_window->tx570();     // Set Si570 to Tx Freq
+
+      if(!soundOutThread.isRunning()) {
+        soundOutThread.start(QThread::HighPriority);
+      }
+    }
+    if((!bTxTime and !bTune) or m_txMute) {
+      btxok=false;
+    }
+  }
+
+// Calculate Tx waveform when needed
+  if((iptt==1 && iptt0==0) || m_restart) {
+    char message[23];
+    QByteArray ba;
+    if(m_ntx == 1) ba=ui->tx1->text().toLocal8Bit();
+    if(m_ntx == 2) ba=ui->tx2->text().toLocal8Bit();
+    if(m_ntx == 3) ba=ui->tx3->text().toLocal8Bit();
+    if(m_ntx == 4) ba=ui->tx4->text().toLocal8Bit();
+    if(m_ntx == 5) ba=ui->tx5->text().toLocal8Bit();
+    if(m_ntx == 6) ba=ui->tx6->text().toLocal8Bit();
+
+    ba2msg(ba,message);
+    int len1=22;
+    int mode65=m_mode65;
+    int ntxFreq=1000;
+    double samfac=1.0;
+
+    if(m_modeTx=="JT65") {
+      gen65_(message,&mode65,&samfac,&nsendingsh,msgsent,iwave,
+             &nwave,len1,len1);
+    } else {
+      if(m_modeQ65==5) ntxFreq=700;
+      gen_q65_wave_(message,&ntxFreq,&m_modeQ65,msgsent,iwave,
+                 &nwave,len1,len1);
+    }
+    msgsent[22]=0;
+
+    if(m_restart) {
+      QString t="  Tx " + m_modeTx + "   ";
+      t=t.left(11);
+      QFile f("map65_tx.log");
+      f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append);
+      QTextStream out(&f);
+      out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm")
+          << t << QString::fromLatin1(msgsent)
+#if QT_VERSION >= QT_VERSION_CHECK (5, 15, 0)
+          << Qt::endl
+#else
+          << endl
+#endif
+        ;
+      f.close();
+    }
+
+    m_restart=false;
+  }
+
+// If PTT was just raised, start a countdown for raising TxOK:
+  if(iptt==1 && iptt0==0) nc1=-9;    // TxDelay = 0.8 s
+  if(nc1 <= 0) nc1++;
+  if(nc1 == 0) {
+    xSignalMeter->setValue(0);
+    ySignalMeter->setValue(0);
+    m_monitoring=false;
+    soundInThread.setMonitoring(false);
+    btxok=true;
+    m_transmitting=true;
+    m_wide_graph_window->enableSetRxHardware(false);
+
+    QString t="  Tx " + m_modeTx + "   ";
+    t=t.left(11);
+    QFile f("map65_tx.log");
+    f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append);
+    QTextStream out(&f);
+    out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm")
+        << t << QString::fromLatin1(msgsent)
+#if QT_VERSION >= QT_VERSION_CHECK (5, 15, 0)
+        << Qt::endl
+#else
+        << endl
+#endif
+      ;
+    f.close();
+  }
+
+// If btxok was just lowered, start a countdown for lowering PTT
+  if(!btxok && btxok0 && iptt==1) nc0=-11;  //RxDelay = 1.0 s
+  btxok0=btxok;
+  if(nc0 <= 0) nc0++;
+  if(nc0 == 0) {
+    if(m_bIQxt) m_wide_graph_window->rx570();     // Set Si570 back to Rx Freq
+    int itx=0;
+    ptt_(&m_pttPort,&itx,&iptt);       // Lower PTT
+    if(!m_txMute) {
+      soundOutThread.quitExecution=true;\
+    }
+    m_transmitting=false;
+    m_wide_graph_window->enableSetRxHardware(true);
+    if(m_auto) {
+      m_monitoring=true;
+      soundInThread.setMonitoring(m_monitoring);
+    }
+  }
+
+  if(iptt == 0 && !btxok) {
+    // sending=""
+    // nsendingsh=0
+  }
+
+  if(m_monitoring) {
+    ui->monitorButton->setStyleSheet(m_pbmonitor_style);
+  } else {
+    ui->monitorButton->setStyleSheet("");
+  }
+
+  lab2->setText("QSO Freq:  " + QString::number(m_wide_graph_window->QSOfreq()));
+  lab3->setText("QSO DF:  " + QString::number(m_wide_graph_window->DF()));
+
+  m_wide_graph_window->updateFreqLabel();
+
+  if(m_startAnother) {
+    m_startAnother=false;
+    on_actionOpen_next_in_directory_triggered();
+  }
+  if(m_modeQ65==0 and m_modeTx=="Q65") on_pbTxMode_clicked();
+  if(m_modeJT65==0  and m_modeTx=="JT65")  on_pbTxMode_clicked();
+
+  if(nsec != m_sec0) {                                     //Once per second
+//    qDebug() << "A" << nsec%60 << m_mode65 << m_modeQ65 << m_modeTx;
+    soundInThread.setForceCenterFreqMHz(m_wide_graph_window->m_dForceCenterFreq);
+    soundInThread.setForceCenterFreqBool(m_wide_graph_window->m_bForceCenterFreq);
+
+    if(m_pctZap>30.0 and !m_transmitting) {
+      lab4->setStyleSheet("QLabel{background-color: #ff0000}");
+    } else {
+      lab4->setStyleSheet("");
+    }
+
+    if(m_transmitting) {
+      if(nsendingsh==1) {
+        lab1->setStyleSheet("QLabel{background-color: #66ffff}");
+      } else if(nsendingsh==-1) {
+        lab1->setStyleSheet("QLabel{background-color: #ffccff}");
+      } else {
+        lab1->setStyleSheet("QLabel{background-color: #ffff33}");
+      }
+      char s[37];
+      sprintf(s,"Tx: %s",msgsent);
+      lab1->setText(s);
+    } else if(m_monitoring) {
+      lab1->setStyleSheet("QLabel{background-color: #00ff00}");
+      m_nrx=soundInThread.nrx();
+      khsym=soundInThread.mhsym();
+      QString t;
+      if(m_network) {
+        if(m_nrx==-1) t="F1";
+        if(m_nrx==1) t="I1";
+        if(m_nrx==-2) t="F2";
+        if(m_nrx==+2) t="I2";
+      } else {
+        if(m_nrx==1) t="S1";
+        if(m_nrx==2) t="S2";
+      }
+      if((abs(m_nrx)==1 and m_xpol) or (abs(m_nrx)==2 and !m_xpol))
+        lab1->setStyleSheet("QLabel{background-color: #ff1493}");
+      if(khsym==m_hsym0) {
+        t="Nil";
+        lab1->setStyleSheet("QLabel{background-color: #ffc0cb}");
+      }
+      lab1->setText("Receiving " + t);
+    } else if (!m_diskData) {
+      lab1->setStyleSheet("");
+      lab1->setText("");
+    }
+
+    QDateTime t = QDateTime::currentDateTimeUtc();
+    int fQSO=m_wide_graph_window->QSOfreq();
+    m_astro_window->astroUpdate(t, m_myGrid, m_hisGrid, fQSO, m_setftx,
+                          m_txFreq, m_azelDir, m_xavg);
+    m_setftx=0;
+    QString utc = t.date().toString(" yyyy MMM dd \n") + t.time().toString();
+    ui->labUTC->setText(utc);
+    if((!m_monitoring and !m_diskData) or (khsym==m_hsym0)) {
+      xSignalMeter->setValue(0);
+      ySignalMeter->setValue(0);
+      lab4->setText(" Rx noise:    0.0     0.0  0.0% ");
+    }
+    m_hsym0=khsym;
+    m_sec0=nsec;
+  }
+  iptt0=iptt;
+  bIQxt=m_bIQxt;
+}
+
+void MainWindow::ba2msg(QByteArray ba, char message[])             //ba2msg()
+{
+  bool eom;
+  eom=false;
+  for(int i=0;i<22; i++) {
+    if (i >= ba.size () || !ba[i]) eom=true;
+    if(eom) {
+      message[i] = ' ';
+    } else {
+      message[i]=ba[i];
+    }
+  }
+  message[22] = '\0';
+}
+
+void MainWindow::on_txFirstCheckBox_stateChanged(int nstate)        //TxFirst
+{
+  m_txFirst = (nstate==2);
+}
+
+void MainWindow::set_ntx(int n)                                   //set_ntx()
+{
+  m_ntx=n;
+}
+
+void MainWindow::on_txb1_clicked()                                //txb1
+{
+  m_ntx=1;
+  ui->txrb1->setChecked(true);
+  m_restart=true;
+}
+
+void MainWindow::on_txb2_clicked()                                //txb2
+{
+  m_ntx=2;
+  ui->txrb2->setChecked(true);
+  m_restart=true;
+}
+
+void MainWindow::on_txb3_clicked()                                //txb3
+{
+  m_ntx=3;
+  ui->txrb3->setChecked(true);
+  m_restart=true;
+}
+
+void MainWindow::on_txb4_clicked()                                //txb4
+{
+  m_ntx=4;
+  ui->txrb4->setChecked(true);
+  m_restart=true;
+}
+
+void MainWindow::on_txb5_clicked()                                //txb5
+{
+  m_ntx=5;
+  ui->txrb5->setChecked(true);
+  m_restart=true;
+}
+
+void MainWindow::on_txb6_clicked()                                //txb6
+{
+  m_ntx=6;
+  ui->txrb6->setChecked(true);
+  m_restart=true;
+}
+
+void MainWindow::selectCall2(bool ctrl)                         //selectCall2
+{
+  QString t = ui->decodedTextBrowser->toPlainText();   //Full contents
+  int i=ui->decodedTextBrowser->textCursor().position();
+  int i0=t.lastIndexOf(" ",i);
+  int i1=t.indexOf(" ",i);
+  QString hiscall=t.mid(i0+1,i1-i0-1);
+  if(hiscall!="") {
+    int n=hiscall.length();
+    if( n>2 and n<13 and hiscall.toDouble()==0.0 and \
+        hiscall.mid(2,-1).toInt()==0) doubleClickOnCall(hiscall, ctrl);
+  }
+}
+                                                          //doubleClickOnCall
+void MainWindow::doubleClickOnCall(QString hiscall, bool ctrl)
+{
+  if(m_worked[hiscall]) {
+    msgBox("Possible dupe: " + hiscall + " already in log.");
+  }
+  ui->dxCallEntry->setText(hiscall);
+  QString t = ui->decodedTextBrowser->toPlainText();   //Full contents
+  int i2=ui->decodedTextBrowser->textCursor().position();
+  QString t1 = t.mid(0,i2);              //contents up to text cursor
+  int i1=t1.lastIndexOf("\n") + 1;
+  QString t2 = t1.mid(i1,i2-i1);         //selected line
+  int n = 60*t2.mid(14,2).toInt() + t2.mid(16,2).toInt();
+  m_txFirst = ((n%2) == 1);
+  ui->txFirstCheckBox->setChecked(m_txFirst);
+  if((t2.indexOf("#")>0) and m_modeTx!="JT65") on_pbTxMode_clicked();
+  if((t2.indexOf(":")>0) and m_modeTx!="Q65") on_pbTxMode_clicked();
+
+  QString t3=t.mid(i1);
+  int i3=t3.indexOf("\n");
+  if(i3<0) i3=t3.length();
+  t3=t3.left(i3);
+  auto const& words = t3.mid(30).split(' ', SkipEmptyParts);
+  QString grid=words[2];
+  if(isGrid4(grid) and hiscall==words[1]) {
+    ui->dxGridEntry->setText(grid);
+  } else {
+    lookup();
+  }
+
+  QString rpt="";
+  if(ctrl or m_modeTx=="Q65") rpt=t2.mid(25,3);
+  genStdMsgs(rpt);
+  if(t2.indexOf(m_myCall)>0) {
+    m_ntx=2;
+    ui->txrb2->setChecked(true);
+  } else {
+    m_ntx=1;
+    ui->txrb1->setChecked(true);
+  }
+}
+                                                      //doubleClickOnMessages
+void MainWindow::doubleClickOnMessages(QString hiscall, QString t2, bool ctrl)
+{
+  if(hiscall.length()<3) return;
+  if(m_worked[hiscall]) {
+    msgBox("Possible dupe: " + hiscall + " already in log.");
+  }
+  ui->dxCallEntry->setText(hiscall);
+  int n = 60*t2.mid(13,2).toInt() + t2.mid(15,2).toInt();
+  m_txFirst = ((n%2) == 1);
+  ui->txFirstCheckBox->setChecked(m_txFirst);
+
+  if((t2.indexOf(":")<0) and m_modeTx!="JT65") on_pbTxMode_clicked();
+  if((t2.indexOf(":")>0) and m_modeTx!="Q65") on_pbTxMode_clicked();
+
+  auto const& words = t2.mid(25).split(' ', SkipEmptyParts);
+  QString grid=words[2];
+  if(isGrid4(grid) and hiscall==words[1]) {
+    ui->dxGridEntry->setText(grid);
+  } else {
+    lookup();
+  }
+
+  QString rpt="";
+  if(ctrl or m_modeTx=="Q65") rpt=t2.mid(20,3);
+  genStdMsgs(rpt);
+
+  if(t2.indexOf(m_myCall)>0) {
+    m_ntx=2;
+    ui->txrb2->setChecked(true);
+  } else {
+    m_ntx=1;
+    ui->txrb1->setChecked(true);
+  }
+}
+
+void MainWindow::genStdMsgs(QString rpt)                       //genStdMsgs()
+{
+  if(rpt.left(2)==" -") rpt="-0"+rpt.mid(2,1);
+  if(rpt.left(2)==" +") rpt="+0"+rpt.mid(2,1);
+  QString hiscall=ui->dxCallEntry->text().toUpper().trimmed();
+  ui->dxCallEntry->setText(hiscall);
+  QString t0=hiscall + " " + m_myCall + " ";
+  QString t=t0;
+  if(t0.indexOf("/")<0) t=t0 + m_myGrid.mid(0,4);
+  msgtype(t, ui->tx1);
+  if(rpt == "" and m_modeTx=="Q65") rpt="-24";
+  if(rpt == "" and m_modeTx=="JT65") {
+    t=t+" OOO";
+    msgtype(t, ui->tx2);
+    msgtype("RO", ui->tx3);
+    msgtype("RRR", ui->tx4);
+    msgtype("73", ui->tx5);
+  } else {
+    t=t0 + rpt;
+    msgtype(t, ui->tx2);
+    t=t0 + "R" + rpt;
+    msgtype(t, ui->tx3);
+    t=t0 + "RRR";
+    msgtype(t, ui->tx4);
+    t=t0 + "73";
+    msgtype(t, ui->tx5);
+  }
+  t="CQ " + m_myCall + " " + m_myGrid.mid(0,4);
+  msgtype(t, ui->tx6);
+  m_ntx=1;
+  ui->txrb1->setChecked(true);
+}
+
+void MainWindow::lookup()                                       //lookup()
+{
+  QString hiscall=ui->dxCallEntry->text().toUpper().trimmed();
+  ui->dxCallEntry->setText(hiscall);
+  QString call3File = m_appDir + "/CALL3.TXT";
+  QFile f(call3File);
+  if(!f.open(QIODevice::ReadOnly | QIODevice::Text)) {
+    msgBox("Cannot open " + call3File);
+    return;
+  }
+  char c[132];
+  qint64 n=0;
+  for(int i=0; i<999999; i++) {
+    n=f.readLine(c,sizeof(c));
+    if(n <= 0) {
+      ui->dxGridEntry->setText("");
+      break;
+     }
+    QString t=QString(c);
+    if(t.indexOf(hiscall)==0) {
+      int i1=t.indexOf(",");
+      QString hisgrid=t.mid(i1+1,6);
+      i1=hisgrid.indexOf(",");
+      if(i1>0) {
+        hisgrid=hisgrid.mid(0,4);
+      } else {
+        hisgrid=hisgrid.mid(0,4) + hisgrid.mid(4,2).toLower();
+      }
+      ui->dxGridEntry->setText(hisgrid);
+      break;
+    }
+  }
+  f.close();
+}
+
+void MainWindow::on_lookupButton_clicked()                    //Lookup button
+{
+  lookup();
+}
+
+void MainWindow::on_addButton_clicked()                       //Add button
+{
+  if(ui->dxGridEntry->text()=="") {
+    msgBox("Please enter a valid grid locator.");
+    return;
+  }
+  m_call3Modified=false;
+  QString hiscall=ui->dxCallEntry->text().toUpper().trimmed();
+  QString hisgrid=ui->dxGridEntry->text().trimmed();
+  QString newEntry=hiscall + "," + hisgrid;
+
+  int ret = QMessageBox::warning(this, "Add",
+       newEntry + "\n" + "Is this station known to be active on EME?",
+       QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+  if(ret==QMessageBox::Yes) {
+    newEntry += ",EME,,";
+  } else {
+    newEntry += ",,,";
+  }
+  QString call3File = m_appDir + "/CALL3.TXT";
+  QFile f1(call3File);
+  if(!f1.open(QIODevice::ReadWrite | QIODevice::Text)) {
+    msgBox("Cannot open " + call3File);
+    return;
+  }
+
+  if(f1.size()==0) {
+    QTextStream out(&f1);
+    out << "ZZZZZZ"
+#if QT_VERSION >= QT_VERSION_CHECK (5, 15, 0)
+        << Qt::endl
+#else
+        << endl
+#endif
+      ;
+    f1.seek (0);
+  }
+
+  QString tmpFile = m_appDir + "/CALL3.TMP";
+  QFile f2(tmpFile);
+  if(!f2.open(QIODevice::ReadWrite | QIODevice::Truncate | QIODevice::Text)) {
+    msgBox("Cannot open " + tmpFile);
+    return;
+  }
+  {
+    QTextStream in(&f1);
+    QTextStream out(&f2);
+    QString hc=hiscall;
+    QString hc1="";
+    QString hc2="000000";
+    QString s;
+    do {
+      s=in.readLine();
+      hc1=hc2;
+      if(s.mid(0,2)=="//") {
+        out << s + "\n";
+      } else {
+        int i1=s.indexOf(",");
+        hc2=s.mid(0,i1);
+        if(hc>hc1 && hc<hc2) {
+          out << newEntry + "\n";
+          out << s + "\n";
+          m_call3Modified=true;
+        } else if(hc==hc2) {
+          QString t=s + "\n\n is already in CALL3.TXT\n" +
+            "Do you wish to replace it?";
+          int ret = QMessageBox::warning(this, "Add",t,
+                                         QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+          if(ret==QMessageBox::Yes) {
+            out << newEntry + "\n";
+            m_call3Modified=true;
+          }
+        } else {
+          if(s!="") out << s + "\n";
+        }
+      }
+    } while(!s.isNull());
+    if(hc>hc1 && !m_call3Modified) out << newEntry + "\n";
+  }
+  
+  if(m_call3Modified) {
+    auto const& old_path = m_appDir + "/CALL3.OLD";
+    QFile f0 {old_path};
+    if (f0.exists ()) f0.remove ();
+    f1.copy (old_path);         // copying as we want to preserve
+                                // symlinks
+    f1.open (QFile::WriteOnly | QFile::Text); // truncates
+    f2.seek (0);
+    f1.write (f2.readAll ());   // copy contents
+    f2.remove ();
+  }
+}
+
+void MainWindow::msgtype(QString t, QLineEdit* tx)                //msgtype()
+{
+//  if(t.length()<1) return 0;
+  char message[23];
+  char msgsent[23];
+  int len1=22;
+  int mode65=0;            //mode65 ==> check message but don't make wave()
+  double samfac=1.0;
+  int nsendingsh=0;
+  int mwave;
+  t=t.toUpper();
+  int i1=t.indexOf(" OOO");
+  QByteArray s=t.toUpper().toLocal8Bit();
+  ba2msg(s,message);
+  gen65_(message,&mode65,&samfac,&nsendingsh,msgsent,iwave,
+         &mwave,len1,len1);
+
+  QPalette p(tx->palette());
+  if(nsendingsh==1) {
+    p.setColor(QPalette::Base,"#66ffff");
+  } else if(nsendingsh==-1) {
+    p.setColor(QPalette::Base,"#ffccff");
+  } else {
+    p.setColor(QPalette::Base,Qt::white);
+  }
+  tx->setPalette(p);
+  int len=t.length();
+  if(nsendingsh==-1) {
+    len=qMin(len,13);
+    if(i1>10) {
+      tx->setText(t.mid(0,len).toUpper() + " OOO");
+    } else {
+      tx->setText(t.mid(0,len).toUpper());
+    }
+  } else {
+    tx->setText(t);
+  }
+}
+
+void MainWindow::on_tx1_editingFinished()                       //tx1 edited
+{
+  QString t=ui->tx1->text();
+  msgtype(t, ui->tx1);
+}
+
+void MainWindow::on_tx2_editingFinished()                       //tx2 edited
+{
+  QString t=ui->tx2->text();
+  msgtype(t, ui->tx2);
+}
+
+void MainWindow::on_tx3_editingFinished()                       //tx3 edited
+{
+  QString t=ui->tx3->text();
+  msgtype(t, ui->tx3);
+}
+
+void MainWindow::on_tx4_editingFinished()                       //tx4 edited
+{
+  QString t=ui->tx4->text();
+  msgtype(t, ui->tx4);
+}
+
+void MainWindow::on_tx5_editingFinished()                       //tx5 edited
+{
+  QString t=ui->tx5->text();
+  msgtype(t, ui->tx5);
+}
+
+void MainWindow::on_tx6_editingFinished()                       //tx6 edited
+{
+  QString t=ui->tx6->text();
+  msgtype(t, ui->tx6);
+}
+
+void MainWindow::on_setTxFreqButton_clicked()                  //Set Tx Freq
+{
+  m_setftx=1;
+  m_txFreq=m_wide_graph_window->QSOfreq();
+}
+
+void MainWindow::on_dxCallEntry_textChanged(const QString &t) //dxCall changed
+{
+  m_hisCall=t.toUpper().trimmed();
+  ui->dxCallEntry->setText(m_hisCall);
+}
+
+void MainWindow::on_dxGridEntry_textChanged(const QString &t) //dxGrid changed
+{
+  int n=t.length();
+  if(n!=4 and n!=6) return;
+  if(!t[0].isLetter() or !t[1].isLetter()) return;
+  if(!t[2].isDigit() or !t[3].isDigit()) return;
+  if(n==4) m_hisGrid=t.mid(0,2).toUpper() + t.mid(2,2);
+  if(n==6) m_hisGrid=t.mid(0,2).toUpper() + t.mid(2,2) +
+      t.mid(4,2).toLower();
+  ui->dxGridEntry->setText(m_hisGrid);
+}
+
+void MainWindow::on_genStdMsgsPushButton_clicked()         //genStdMsgs button
+{
+  genStdMsgs("");
+}
+
+void MainWindow::on_logQSOButton_clicked()                 //Log QSO button
+{
+  int nMHz=int(datcom_.fcenter);
+  QDateTime t = QDateTime::currentDateTimeUtc();
+  QString qsoMode=lab5->text();
+  if(m_modeTx.startsWith("Q65")) qsoMode=lab6->text();
+  QString logEntry=t.date().toString("yyyy-MMM-dd,") +
+      t.time().toString("hh:mm,") + m_hisCall + "," + m_hisGrid + "," +
+          QString::number(nMHz) + "," + qsoMode + "\r\n";
+
+  int ret = QMessageBox::warning(this, "Log Entry",
+       "Please confirm log entry:\n\n" + logEntry + "\n",
+       QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+  if(ret==QMessageBox::No) return;
+  QFile f("wsjt.log");
+  if(!f.open(QFile::Append)) {
+    msgBox("Cannot open file \"wsjt.log\".");
+    return;
+  }
+  QTextStream out(&f);
+  out << logEntry;
+  f.close();
+  m_worked[m_hisCall]=true;
+}
+
+void MainWindow::on_actionErase_map65_rx_log_triggered()     //Erase Rx log
+{
+  int ret = QMessageBox::warning(this, "Confirm Erase",
+      "Are you sure you want to erase file map65_rx.log ?",
+       QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+  if(ret==QMessageBox::Yes) {
+    m_map65RxLog |= 2;                      // Rewind map65_rx.log
+  }
+}
+
+void MainWindow::on_actionErase_map65_tx_log_triggered()     //Erase Tx log
+{
+  int ret = QMessageBox::warning(this, "Confirm Erase",
+      "Are you sure you want to erase file map65_tx.log ?",
+       QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
+  if(ret==QMessageBox::Yes) {
+    QFile f("map65_tx.log");
+    f.remove();
+  }
+}
+
+void MainWindow::on_actionNoJT65_triggered()
+{
+  m_mode65=0;
+  m_modeJT65=0;
+  m_TRperiod=60;
+  soundInThread.setPeriod(m_TRperiod);
+  soundOutThread.setPeriod(m_TRperiod);
+  m_wide_graph_window->setMode65(m_mode65);
+  m_wide_graph_window->setPeriod(m_TRperiod);
+  lab5->setStyleSheet("");
+  lab5->setText("");
+}
+void MainWindow::on_actionJT65A_triggered()
+{
+  m_mode="JT65A";
+  m_modeJT65=1;
+  m_mode65=1;
+  m_modeJT65=1;
+  m_TRperiod=60;
+  soundInThread.setPeriod(m_TRperiod);
+  soundOutThread.setPeriod(m_TRperiod);
+  m_wide_graph_window->setMode65(m_mode65);
+  m_wide_graph_window->setPeriod(m_TRperiod);
+  lab5->setStyleSheet("QLabel{background-color: #ff6666}");
+  lab5->setText("JT65A");
+  ui->actionJT65A->setChecked(true);
+}
+
+void MainWindow::on_actionJT65B_triggered()
+{
+  m_mode="JT65B";
+  m_modeJT65=2;
+  m_mode65=2;
+  m_modeJT65=2;
+  m_TRperiod=60;
+  soundInThread.setPeriod(m_TRperiod);
+  soundOutThread.setPeriod(m_TRperiod);
+  m_wide_graph_window->setMode65(m_mode65);
+  m_wide_graph_window->setPeriod(m_TRperiod);
+  lab5->setStyleSheet("QLabel{background-color: #ffff66}");
+  lab5->setText("JT65B");
+  ui->actionJT65B->setChecked(true);
+}
+
+void MainWindow::on_actionJT65C_triggered()
+{
+  m_mode="JT65C";
+  m_modeJT65=3;
+  m_mode65=4;
+  m_TRperiod=60;
+  soundInThread.setPeriod(m_TRperiod);
+  soundOutThread.setPeriod(m_TRperiod);
+  m_wide_graph_window->setMode65(m_mode65);
+  m_wide_graph_window->setPeriod(m_TRperiod);
+  lab5->setStyleSheet("QLabel{background-color: #66ffb2}");
+  lab5->setText("JT65C");
+  ui->actionJT65C->setChecked(true);
+}
+
+void MainWindow::on_actionNoQ65_triggered()
+{
+  m_modeQ65=0;
+  lab6->setStyleSheet("");
+  lab6->setText("");
+}
+
+void MainWindow::on_actionQ65A_triggered()
+{
+  m_modeQ65=1;
+  lab6->setStyleSheet("QLabel{background-color: #ffb266}");
+  lab6->setText("Q65A");
+}
+
+void MainWindow::on_actionQ65B_triggered()
+{
+  m_modeQ65=2;
+  lab6->setStyleSheet("QLabel{background-color: #b2ff66}");
+  lab6->setText("Q65B");
+}
+
+
+void MainWindow::on_actionQ65C_triggered()
+{
+  m_modeQ65=3;
+  lab6->setStyleSheet("QLabel{background-color: #66ffff}");
+  lab6->setText("Q65C");
+}
+
+void MainWindow::on_actionQ65D_triggered()
+{
+  m_modeQ65=4;
+  lab6->setStyleSheet("QLabel{background-color: #b266ff}");
+  lab6->setText("Q65D");
+}
+
+void MainWindow::on_actionQ65E_triggered()
+{
+  m_modeQ65=5;
+  lab6->setStyleSheet("QLabel{background-color: #ff66ff}");
+  lab6->setText("Q65E");
+}
+
+
+void MainWindow::on_NBcheckBox_toggled(bool checked)
+{
+  m_NB=checked;
+  ui->NBslider->setEnabled(m_NB);
+}
+
+void MainWindow::on_NBslider_valueChanged(int n)
+{
+  m_NBslider=n;
+}
+
+void MainWindow::on_actionAdjust_IQ_Calibration_triggered()
+{
+  m_adjustIQ=1;
+}
+
+void MainWindow::on_actionApply_IQ_Calibration_triggered()
+{
+  m_applyIQcal= 1-m_applyIQcal;
+}
+
+void MainWindow::on_actionFUNcube_Dongle_triggered()
+{
+  proc_qthid.start (QDir::toNativeSeparators(m_appDir + "/qthid"), QStringList {});
+}
+
+void MainWindow::on_actionEdit_wsjt_log_triggered()
+{
+  proc_editor.start (QDir::toNativeSeparators (m_editorCommand), {QDir::toNativeSeparators (m_appDir + "/wsjt.log"), });
+}
+
+void MainWindow::on_actionTx_Tune_triggered()
+{
+  if(g_pTxTune==NULL) {
+    g_pTxTune = new TxTune(0);
+  }
+  g_pTxTune->set_iqAmp(iqAmp);
+  g_pTxTune->set_iqPhase(iqPhase);
+  g_pTxTune->set_txPower(txPower);
+  g_pTxTune->show();
+}
+
+void MainWindow::on_pbTxMode_clicked()
+{
+  if(m_modeTx=="Q65") {
+    m_modeTx="JT65";
+    ui->pbTxMode->setText("Tx JT65   #");
+  } else {
+    m_modeTx="Q65";
+    ui->pbTxMode->setText("Tx Q65  :");
+  }
+//  m_wideGraph->setModeTx(m_modeTx);
+//  statusChanged();
+}
+
+bool MainWindow::isGrid4(QString g)
+{
+  if(g.length()!=4) return false;
+  if(g.mid(0,1)<'A' or g.mid(0,1)>'R') return false;
+  if(g.mid(1,1)<'A' or g.mid(1,1)>'R') return false;
+  if(g.mid(2,1)<'0' or g.mid(2,1)>'9') return false;
+  if(g.mid(3,1)<'0' or g.mid(3,1)>'9') return false;
+  return true;
+}
+
+void MainWindow::read_log()
+{
+  // Update "m_worked" by reading wsjtx.log
+  m_worked.clear();                     //Start from scratch
+  QFile f("wsjtx.log");
+  f.open(QIODevice::ReadOnly);
+  if(f.isOpen()) {
+    QTextStream in(&f);
+    QString line,callsign;
+    for(int i=0; i<99999; i++) {
+      line=in.readLine();
+      if(line.length()<=0) break;
+      callsign=line.mid(40,6);
+      int n=callsign.indexOf(",");
+      if(n>0) callsign=callsign.left(n);
+      m_worked[callsign]=true;
+    }
+    f.close();
+  }
+}
diff --git a/q65w/mainwindow.h b/q65w/mainwindow.h
new file mode 100644
index 000000000..efe58b866
--- /dev/null
+++ b/q65w/mainwindow.h
@@ -0,0 +1,330 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+#include <QtGui>
+#include <QtWidgets>
+#include <QPointer>
+#include <QScopedPointer>
+#include <QLabel>
+#include <QDateTime>
+#include <QHash>
+#include <QProcess>
+#include "getfile.h"
+#include "soundin.h"
+#include "soundout.h"
+#include "signalmeter.h"
+#include "commons.h"
+#include "sleep.h"
+#include <QtConcurrent/QtConcurrent>
+
+#define NFFT 32768
+#define NSMAX 5760000
+
+//--------------------------------------------------------------- MainWindow
+namespace Ui {
+  class MainWindow;
+}
+
+class QTimer;
+class Astro;
+class BandMap;
+class Messages;
+class WideGraph;
+
+class MainWindow : public QMainWindow
+{
+  Q_OBJECT
+
+public:
+  explicit MainWindow(QWidget *parent = 0);
+  ~MainWindow();
+  bool m_network;
+
+public slots:
+  void showSoundInError(const QString& errorMsg);
+  void showStatusMessage(const QString& statusMsg);
+  void dataSink(int k);
+  void diskDat();
+  void diskWriteFinished();
+  void freezeDecode(int n);
+  void readFromStdout();
+  void m65_error (QProcess::ProcessError);
+  void editor_error();
+  void guiUpdate();
+  void doubleClickOnCall(QString hiscall, bool ctrl);
+  void doubleClickOnMessages(QString hiscall, QString t2, bool ctrl);
+
+private:
+  virtual void keyPressEvent (QKeyEvent *) override;
+  virtual bool eventFilter (QObject *, QEvent *) override;
+  virtual void closeEvent (QCloseEvent *) override;
+
+private slots:
+  void on_tx1_editingFinished();
+  void on_tx2_editingFinished();
+  void on_tx3_editingFinished();
+  void on_tx4_editingFinished();
+  void on_tx5_editingFinished();
+  void on_tx6_editingFinished();
+  void on_actionDeviceSetup_triggered();
+  void on_monitorButton_clicked();
+  void on_actionExit_triggered();
+  void on_actionAbout_triggered();
+  void on_actionLinrad_triggered();
+  void on_actionCuteSDR_triggered();
+  void on_autoButton_clicked();
+  void on_stopTxButton_clicked();
+  void on_tolSpinBox_valueChanged(int arg1);
+  void on_actionAstro_Data_triggered();
+  void on_stopButton_clicked();
+  void on_actionRelease_Notes_triggered();
+  void on_actionOnline_Users_Guide_triggered();
+  void on_actionQSG_Q65_triggered();
+  void on_actionQSG_MAP65_v3_triggered();
+  void on_actionQ65_Sensitivity_in_MAP65_3_0_triggered();
+  void on_actionWide_Waterfall_triggered();
+  void on_actionBand_Map_triggered();
+  void on_actionMessages_triggered();
+  void on_actionOpen_triggered();
+  void on_actionOpen_next_in_directory_triggered();
+  void on_actionDecode_remaining_files_in_directory_triggered();
+  void on_actionDelete_all_tf2_files_in_SaveDir_triggered();
+  void on_actionErase_Band_Map_and_Messages_triggered();
+  void on_actionFind_Delta_Phi_triggered();
+  void on_actionF4_sets_Tx6_triggered();
+  void on_actionOnly_EME_calls_triggered();
+  void on_actionNo_shorthands_if_Tx1_triggered();
+  void on_actionNo_Deep_Search_triggered();
+  void on_actionNormal_Deep_Search_triggered();
+  void on_actionAggressive_Deep_Search_triggered();
+  void on_actionNone_triggered();
+  void on_actionSave_all_triggered();
+  void on_actionKeyboard_shortcuts_triggered();
+  void on_actionSpecial_mouse_commands_triggered();
+  void on_actionAvailable_suffixes_and_add_on_prefixes_triggered();
+  void on_DecodeButton_clicked();
+  void decode();
+  void decodeBusy(bool b);
+  void on_EraseButton_clicked();
+  void on_txb1_clicked();
+  void on_txFirstCheckBox_stateChanged(int arg1);
+  void set_ntx(int n);
+  void on_txb2_clicked();
+  void on_txb3_clicked();
+  void on_txb4_clicked();
+  void on_txb5_clicked();
+  void on_txb6_clicked();
+  void on_lookupButton_clicked();
+  void on_addButton_clicked();
+  void on_setTxFreqButton_clicked();
+  void on_dxCallEntry_textChanged(const QString &arg1);
+  void on_dxGridEntry_textChanged(const QString &arg1);
+  void selectCall2(bool ctrl);
+  void on_genStdMsgsPushButton_clicked();
+  void bumpDF(int n);
+  void on_logQSOButton_clicked();
+  void on_actionErase_map65_rx_log_triggered();
+  void on_actionErase_map65_tx_log_triggered();
+  void on_NBcheckBox_toggled(bool checked);
+  void on_actionJT65A_triggered();
+  void on_actionJT65B_triggered();
+  void on_actionJT65C_triggered();
+  void on_NBslider_valueChanged(int value);
+  void on_actionAdjust_IQ_Calibration_triggered();
+  void on_actionApply_IQ_Calibration_triggered();
+  void on_actionAFMHot_triggered();
+  void on_actionBlue_triggered();
+  void on_actionFUNcube_Dongle_triggered();
+  void on_actionEdit_wsjt_log_triggered();
+  void on_actionTx_Tune_triggered();
+  void on_actionQ65A_triggered();
+  void on_actionQ65B_triggered();
+  void on_actionNoJT65_triggered();
+  void on_actionNoQ65_triggered();
+  void on_actionQ65C_triggered();
+  void on_actionQ65D_triggered();
+  void on_actionQ65E_triggered();
+
+  void on_pbTxMode_clicked();
+
+private:
+  Ui::MainWindow *ui;
+  QString m_appDir;
+  QString m_settings_filename;
+  QScopedPointer<Astro> m_astro_window;
+  QScopedPointer<BandMap> m_band_map_window;
+  QScopedPointer<Messages> m_messages_window;
+  QScopedPointer<WideGraph> m_wide_graph_window;
+  QPointer<QTimer> m_gui_timer;
+  qint64  m_msErase;
+  qint32  m_nDevIn;
+  qint32  m_nDevOut;
+  qint32  m_idInt;
+  qint32  m_waterfallAvg;
+  qint32  m_DF;
+  qint32  m_tol;
+  qint32  m_QSOfreq0;
+  qint32  m_ntx;
+  qint32  m_pttPort;
+  qint32  m_astroFont;
+  qint32  m_timeout;
+  qint32  m_dPhi;
+  qint32  m_fCal;
+  qint32  m_txFreq;
+  qint32  m_setftx;
+  qint32  m_ndepth;
+  qint32  m_sec0;
+  qint32  m_map65RxLog;
+  qint32  m_nutc0;
+  qint32  m_mode65;
+  qint32  m_nrx;
+  qint32  m_hsym0;
+  qint32  m_paInDevice;
+  qint32  m_paOutDevice;
+  qint32  m_udpPort;
+  qint32  m_NBslider;
+  qint32  m_adjustIQ;
+  qint32  m_applyIQcal;
+  qint32  m_mult570;
+  qint32  m_mult570Tx;
+  qint32  m_nsum;
+  qint32  m_nsave;
+  qint32  m_TRperiod;
+  qint32  m_modeJT65;
+  qint32  m_modeQ65;
+  qint32  m_RxState;
+  qint32  m_dB;
+
+  double  m_fAdd;
+  //    double  m_IQamp;
+  //    double  m_IQphase;
+  double  m_cal570;
+  double  m_TxOffset;
+  double  m_xavg;
+
+  bool    m_monitoring;
+  bool    m_transmitting;
+  bool    m_diskData;
+  bool    m_loopall;
+  bool    m_decoderBusy;
+  bool    m_txFirst;
+  bool    m_auto;
+  bool    m_txMute;
+  bool    m_restart;
+  bool    m_xpol;
+  bool    m_xpolx;
+  bool    m_call3Modified;
+  bool    m_startAnother;
+  bool    m_saveAll;
+  bool    m_onlyEME;
+  bool    m_widebandDecode;
+  bool    m_kb8rq;
+  bool    m_NB;
+  bool    m_fs96000;
+  bool    m_IQswap;
+  bool    m_initIQplus;
+  bool    m_bIQxt;
+
+  float   m_gainx;
+  float   m_gainy;
+  float   m_phasex;
+  float   m_phasey;
+  float   m_pctZap;
+
+  QRect   m_wideGraphGeom;
+
+  QLabel* lab1;                            // labels in status bar
+  QLabel* lab2;
+  QLabel* lab3;
+  QLabel* lab4;
+  QLabel* lab5;
+  QLabel* lab6;
+  QLabel* lab7;
+
+  QMessageBox msgBox0;
+
+  QFuture<void>* future1;
+  QFuture<void>* future2;
+  QFutureWatcher<void>* watcher1;
+  QFutureWatcher<void>* watcher2;
+
+  QProcess proc_m65;
+  QProcess proc_qthid;
+  QProcess proc_editor;
+
+
+  QString m_path;
+  QString m_pbdecoding_style1;
+  QString m_pbmonitor_style;
+  QString m_pbAutoOn_style;
+  QString m_messagesText;
+  QString m_bandmapText;
+  QString m_myCall;
+  QString m_myGrid;
+  QString m_hisCall;
+  QString m_hisGrid;
+  QString m_saveDir;
+  QString m_azelDir;
+  QString m_dxccPfx;
+  QString m_palette;
+  QString m_dateTime;
+  QString m_mode;
+  QString m_colors;
+  QString m_editorCommand;
+  QString m_modeTx;
+
+  QHash<QString,bool> m_worked;
+
+  SignalMeter *xSignalMeter;
+  SignalMeter *ySignalMeter;
+
+
+  SoundInThread soundInThread;             //Instantiate the audio threads
+  SoundOutThread soundOutThread;
+
+  //---------------------------------------------------- private functions
+  void readSettings();
+  void writeSettings();
+  void createStatusBar();
+  void updateStatusBar();
+  void msgBox(QString t);
+  void genStdMsgs(QString rpt);
+  void lookup();
+  void ba2msg(QByteArray ba, char* message);
+  void msgtype(QString t, QLineEdit* tx);
+  void stub();
+  bool isGrid4(QString g);
+  bool subProcessFailed (QProcess *, int exit_code, QProcess::ExitStatus);
+  void read_log();
+};
+
+extern void getfile(QString fname, bool xpol, int idInt);
+extern void savetf2(QString fname, bool xpol);
+extern int killbyname(const char* progName);
+extern void getDev(int* numDevices,char hostAPI_DeviceName[][50],
+                   int minChan[], int maxChan[],
+                   int minSpeed[], int maxSpeed[]);
+
+extern "C" {
+//----------------------------------------------------- C and Fortran routines
+  void symspec_(int* k, int* nxpol, int* ndiskdat, int* nb,
+                int* m_NBslider, int* idphi, int* nfsample, float* fgreen,
+                int* iqadjust, int* iqapply, float* gainx, float* gainy,
+                float* phasex, float* phasey, float* rejectx, float* rejecty,
+                float* px, float* py, float s[], int* nkhz, int* nhsym,
+                int* nzap, float* slimit, uchar lstrong[]);
+
+  void gen65_(char* msg, int* mode65, double* samfac,
+              int* nsendingsh, char* msgsent, short iwave[], int* nwave,
+              int len1, int len2);
+
+  void gen_q65_wave_(char* msg, int* ntxFreq, int* mode64,
+              char* msgsent, short iwave[], int* nwave,
+              int len1, int len2);
+
+  int ptt_(int* nport, int* itx, int* iptt);
+
+  void astrosub00_ (int* nyear, int* month, int* nday, double* uth, int* nfreq,
+                    const char* mygrid, int* ndop00, int len1);
+  }
+
+#endif // MAINWINDOW_H
diff --git a/q65w/mainwindow.ui b/q65w/mainwindow.ui
new file mode 100644
index 000000000..7497108da
--- /dev/null
+++ b/q65w/mainwindow.ui
@@ -0,0 +1,1742 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>635</width>
+    <height>523</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>635</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>2048</width>
+    <height>800</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>SpecJT   by K1JT</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"/>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <layout class="QVBoxLayout" name="verticalLayout_8">
+    <item>
+     <layout class="QVBoxLayout" name="verticalLayout_7">
+      <item>
+       <widget class="QGroupBox" name="groupBox">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>453</width>
+          <height>170</height>
+         </size>
+        </property>
+        <property name="maximumSize">
+         <size>
+          <width>620</width>
+          <height>16777215</height>
+         </size>
+        </property>
+        <property name="title">
+         <string>   Freq        DF      Pol         UTC           DT         dB                                                                     RC       DS       TxPol</string>
+        </property>
+        <layout class="QVBoxLayout" name="verticalLayout_9">
+         <item>
+          <widget class="DisplayText" name="decodedTextBrowser">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Maximum" vsizetype="Expanding">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>421</width>
+             <height>100</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>610</width>
+             <height>400</height>
+            </size>
+           </property>
+           <property name="font">
+            <font>
+             <family>Courier New</family>
+             <pointsize>10</pointsize>
+            </font>
+           </property>
+           <property name="verticalScrollBarPolicy">
+            <enum>Qt::ScrollBarAlwaysOn</enum>
+           </property>
+           <property name="horizontalScrollBarPolicy">
+            <enum>Qt::ScrollBarAsNeeded</enum>
+           </property>
+           <property name="html">
+            <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Courier New'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+           </property>
+           <property name="acceptRichText">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_2">
+        <item>
+         <widget class="QPushButton" name="logQSOButton">
+          <property name="minimumSize">
+           <size>
+            <width>50</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text">
+           <string>Log &amp;QSO</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="stopButton">
+          <property name="minimumSize">
+           <size>
+            <width>50</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text">
+           <string>&amp;Stop</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="monitorButton">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>50</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="maximumSize">
+           <size>
+            <width>16777215</width>
+            <height>16777215</height>
+           </size>
+          </property>
+          <property name="text">
+           <string>&amp;Monitor</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="DecodeButton">
+          <property name="minimumSize">
+           <size>
+            <width>50</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text">
+           <string>&amp;Decode</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="EraseButton">
+          <property name="minimumSize">
+           <size>
+            <width>50</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text">
+           <string>&amp;Erase</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="autoButton">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>50</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text">
+           <string>&amp;Auto is OFF</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="stopTxButton">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="minimumSize">
+           <size>
+            <width>50</width>
+            <height>0</height>
+           </size>
+          </property>
+          <property name="text">
+           <string>St&amp;op Tx</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_5">
+        <item>
+         <widget class="QFrame" name="xMeterFrame">
+          <property name="frameShape">
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Raised</enum>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QFrame" name="yMeterFrame">
+          <property name="frameShape">
+           <enum>QFrame::StyledPanel</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Raised</enum>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout">
+          <item>
+           <widget class="QGroupBox" name="dxStationGroupBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="minimumSize">
+             <size>
+              <width>164</width>
+              <height>40</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>290</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="styleSheet">
+             <string notr="true"/>
+            </property>
+            <property name="title">
+             <string>       DX Call             DX Grid     </string>
+            </property>
+            <widget class="QPushButton" name="pushButton">
+             <property name="geometry">
+              <rect>
+               <x>231</x>
+               <y>13</y>
+               <width>50</width>
+               <height>23</height>
+              </rect>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>50</width>
+               <height>16777215</height>
+              </size>
+             </property>
+             <property name="text">
+              <string>SetMsgs</string>
+             </property>
+            </widget>
+            <widget class="QWidget" name="layoutWidget_2">
+             <property name="geometry">
+              <rect>
+               <x>7</x>
+               <y>13</y>
+               <width>150</width>
+               <height>64</height>
+              </rect>
+             </property>
+             <layout class="QVBoxLayout" name="verticalLayout_6">
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_3">
+                <item>
+                 <widget class="QLineEdit" name="dxCallEntry">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>23</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>70</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QLineEdit" name="dxGridEntry">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>0</width>
+                    <height>23</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>70</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string/>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignCenter</set>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item>
+               <layout class="QHBoxLayout" name="horizontalLayout_4">
+                <item>
+                 <widget class="QPushButton" name="lookupButton">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="minimumSize">
+                   <size>
+                    <width>70</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>50</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string>&amp;Lookup</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="addButton">
+                  <property name="minimumSize">
+                   <size>
+                    <width>70</width>
+                    <height>0</height>
+                   </size>
+                  </property>
+                  <property name="maximumSize">
+                   <size>
+                    <width>50</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string>Add</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+             </layout>
+            </widget>
+            <widget class="QPushButton" name="genStdMsgsPushButton">
+             <property name="geometry">
+              <rect>
+               <x>40</x>
+               <y>80</y>
+               <width>90</width>
+               <height>23</height>
+              </rect>
+             </property>
+             <property name="sizePolicy">
+              <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="minimumSize">
+              <size>
+               <width>90</width>
+               <height>0</height>
+              </size>
+             </property>
+             <property name="maximumSize">
+              <size>
+               <width>70</width>
+               <height>16777215</height>
+              </size>
+             </property>
+             <property name="text">
+              <string>&amp;GenStdMsgs</string>
+             </property>
+            </widget>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLabel" name="labUTC">
+            <property name="minimumSize">
+             <size>
+              <width>140</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>165</width>
+              <height>60</height>
+             </size>
+            </property>
+            <property name="font">
+             <font>
+              <pointsize>16</pointsize>
+             </font>
+            </property>
+            <property name="frameShape">
+             <enum>QFrame::Panel</enum>
+            </property>
+            <property name="text">
+             <string> 2014 Dec 02
+01:23:45 </string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeType">
+           <enum>QSizePolicy::Minimum</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout_5">
+          <item>
+           <spacer name="verticalSpacer_3">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="txFirstCheckBox">
+            <property name="minimumSize">
+             <size>
+              <width>0</width>
+              <height>23</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>80</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Tx first</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="pbTxMode">
+            <property name="minimumSize">
+             <size>
+              <width>90</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>80</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Tx Q65  $</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="setTxFreqButton">
+            <property name="minimumSize">
+             <size>
+              <width>90</width>
+              <height>0</height>
+             </size>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>80</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="text">
+             <string>Set Tx Freq</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSpinBox" name="sbMaxDrift">
+            <property name="toolTip">
+             <string>Maximum drift rate in units of symbol rate per transmissiion.</string>
+            </property>
+            <property name="alignment">
+             <set>Qt::AlignCenter</set>
+            </property>
+            <property name="prefix">
+             <string>Max Drift  </string>
+            </property>
+            <property name="maximum">
+             <number>50</number>
+            </property>
+            <property name="singleStep">
+             <number>5</number>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="verticalSpacer">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeType">
+             <enum>QSizePolicy::Fixed</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>20</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+          <item>
+           <widget class="QCheckBox" name="NBcheckBox">
+            <property name="text">
+             <string>NB</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QSlider" name="NBslider">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="maximumSize">
+             <size>
+              <width>80</width>
+              <height>16777215</height>
+             </size>
+            </property>
+            <property name="minimum">
+             <number>0</number>
+            </property>
+            <property name="maximum">
+             <number>100</number>
+            </property>
+            <property name="value">
+             <number>40</number>
+            </property>
+            <property name="orientation">
+             <enum>Qt::Horizontal</enum>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout">
+            <item>
+             <widget class="QLabel" name="labTol1">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>42</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>42</width>
+                <height>18</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>500</string>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignCenter</set>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="tolSpinBox">
+              <property name="enabled">
+               <bool>true</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>23</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>18</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="minimum">
+               <number>1</number>
+              </property>
+              <property name="maximum">
+               <number>6</number>
+              </property>
+              <property name="value">
+               <number>5</number>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLabel" name="labTol2">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Tol</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <layout class="QHBoxLayout" name="horizontalLayout_9">
+          <item>
+           <layout class="QVBoxLayout" name="verticalLayout_2">
+            <item>
+             <widget class="QLineEdit" name="tx1">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>160</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>180</width>
+                <height>24</height>
+               </size>
+              </property>
+              <property name="font">
+               <font>
+                <family>MS Shell Dlg 2</family>
+               </font>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="tx2">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>160</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>180</width>
+                <height>24</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="tx3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>160</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>180</width>
+                <height>24</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="tx4">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>160</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>180</width>
+                <height>24</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="tx5">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>160</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>180</width>
+                <height>24</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QLineEdit" name="tx6">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>160</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>180</width>
+                <height>24</height>
+               </size>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <layout class="QVBoxLayout" name="verticalLayout_3">
+            <item>
+             <widget class="QRadioButton" name="txrb1">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>16</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <property name="checked">
+               <bool>true</bool>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">buttonGroup</string>
+              </attribute>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="txrb2">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>16</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">buttonGroup</string>
+              </attribute>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="txrb3">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>16</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">buttonGroup</string>
+              </attribute>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="txrb4">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>16</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">buttonGroup</string>
+              </attribute>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="txrb5">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>16</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">buttonGroup</string>
+              </attribute>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="txrb6">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>16</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>20</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string/>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">buttonGroup</string>
+              </attribute>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <layout class="QVBoxLayout" name="verticalLayout_4">
+            <item>
+             <widget class="QPushButton" name="txb1">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>50</horstretch>
+                <verstretch>20</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>16</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>29</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Tx1</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="txb2">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>16</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>29</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Tx2</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="txb3">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>16</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>29</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Tx3</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="txb4">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>16</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>29</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Tx4</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="txb5">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>16</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>29</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Tx5</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QPushButton" name="txb6">
+              <property name="minimumSize">
+               <size>
+                <width>0</width>
+                <height>16</height>
+               </size>
+              </property>
+              <property name="maximumSize">
+               <size>
+                <width>29</width>
+                <height>20</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Tx6</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>635</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <widget class="QMenu" name="menuFile">
+    <property name="title">
+     <string>File</string>
+    </property>
+    <addaction name="actionOpen"/>
+    <addaction name="actionOpen_next_in_directory"/>
+    <addaction name="actionDecode_remaining_files_in_directory"/>
+    <addaction name="separator"/>
+    <addaction name="actionEdit_wsjt_log"/>
+    <addaction name="separator"/>
+    <addaction name="actionDelete_all_tf2_files_in_SaveDir"/>
+    <addaction name="actionErase_Band_Map_and_Messages"/>
+    <addaction name="actionErase_map65_rx_log"/>
+    <addaction name="actionErase_map65_tx_log"/>
+    <addaction name="separator"/>
+    <addaction name="actionExit"/>
+   </widget>
+   <widget class="QMenu" name="menuSetup">
+    <property name="title">
+     <string>Setup</string>
+    </property>
+    <addaction name="actionDeviceSetup"/>
+    <addaction name="separator"/>
+    <addaction name="actionAdjust_IQ_Calibration"/>
+    <addaction name="actionApply_IQ_Calibration"/>
+    <addaction name="actionFind_Delta_Phi"/>
+    <addaction name="actionTx_Tune"/>
+    <addaction name="separator"/>
+    <addaction name="actionF4_sets_Tx6"/>
+    <addaction name="separator"/>
+    <addaction name="actionFUNcube_Dongle"/>
+   </widget>
+   <widget class="QMenu" name="menuView">
+    <property name="title">
+     <string>View</string>
+    </property>
+    <widget class="QMenu" name="menuWaterfall_palette">
+     <property name="title">
+      <string>Waterfall palette</string>
+     </property>
+     <addaction name="actionLinrad"/>
+     <addaction name="actionCuteSDR"/>
+    </widget>
+    <addaction name="actionAstro_Data"/>
+    <addaction name="actionBand_Map"/>
+    <addaction name="actionMessages"/>
+    <addaction name="actionWide_Waterfall"/>
+    <addaction name="separator"/>
+    <addaction name="menuWaterfall_palette"/>
+   </widget>
+   <widget class="QMenu" name="menuDecode">
+    <property name="title">
+     <string>Decode</string>
+    </property>
+    <addaction name="actionOnly_EME_calls"/>
+    <addaction name="actionNo_shorthands_if_Tx1"/>
+    <addaction name="separator"/>
+    <addaction name="actionNo_Deep_Search"/>
+    <addaction name="actionNormal_Deep_Search"/>
+    <addaction name="actionAggressive_Deep_Search"/>
+    <addaction name="separator"/>
+   </widget>
+   <widget class="QMenu" name="menuSave">
+    <property name="title">
+     <string>Save</string>
+    </property>
+    <addaction name="actionNone"/>
+    <addaction name="actionSave_all"/>
+   </widget>
+   <widget class="QMenu" name="menuHelp">
+    <property name="title">
+     <string>Help</string>
+    </property>
+    <addaction name="actionRelease_Notes"/>
+    <addaction name="actionOnline_Users_Guide"/>
+    <addaction name="actionQSG_Q65"/>
+    <addaction name="actionQSG_MAP65_v3"/>
+    <addaction name="actionQ65_Sensitivity_in_MAP65_3_0"/>
+    <addaction name="actionKeyboard_shortcuts"/>
+    <addaction name="actionSpecial_mouse_commands"/>
+    <addaction name="actionAvailable_suffixes_and_add_on_prefixes"/>
+    <addaction name="actionAbout"/>
+   </widget>
+   <widget class="QMenu" name="menuMode">
+    <property name="title">
+     <string>Mode</string>
+    </property>
+    <addaction name="actionNoJT65"/>
+    <addaction name="actionJT65A"/>
+    <addaction name="actionJT65B"/>
+    <addaction name="actionJT65C"/>
+    <addaction name="separator"/>
+    <addaction name="actionNoQ65"/>
+    <addaction name="actionQ65A"/>
+    <addaction name="actionQ65B"/>
+    <addaction name="actionQ65C"/>
+    <addaction name="actionQ65D"/>
+    <addaction name="actionQ65E"/>
+   </widget>
+   <addaction name="menuFile"/>
+   <addaction name="menuSetup"/>
+   <addaction name="menuView"/>
+   <addaction name="menuMode"/>
+   <addaction name="menuDecode"/>
+   <addaction name="menuSave"/>
+   <addaction name="menuHelp"/>
+  </widget>
+  <widget class="QToolBar" name="mainToolBar">
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+  </widget>
+  <widget class="QStatusBar" name="statusBar"/>
+  <action name="actionExit">
+   <property name="text">
+    <string>Exit</string>
+   </property>
+  </action>
+  <action name="actionDeviceSetup">
+   <property name="text">
+    <string>Options</string>
+   </property>
+   <property name="shortcut">
+    <string>F2</string>
+   </property>
+  </action>
+  <action name="actionAbout">
+   <property name="text">
+    <string> About MAP65</string>
+   </property>
+   <property name="shortcut">
+    <string>Ctrl+F1</string>
+   </property>
+  </action>
+  <action name="actionAstro_Data">
+   <property name="text">
+    <string>Astro Data</string>
+   </property>
+   <property name="shortcut">
+    <string>Shift+F10</string>
+   </property>
+  </action>
+  <action name="actionBand_Map">
+   <property name="text">
+    <string>Band Map</string>
+   </property>
+  </action>
+  <action name="actionMessages">
+   <property name="text">
+    <string>Messages</string>
+   </property>
+  </action>
+  <action name="actionWide_Waterfall">
+   <property name="text">
+    <string>Wide Waterfall</string>
+   </property>
+  </action>
+  <action name="actionOpen">
+   <property name="text">
+    <string>Open</string>
+   </property>
+  </action>
+  <action name="actionOpen_next_in_directory">
+   <property name="text">
+    <string>Open next in directory</string>
+   </property>
+   <property name="shortcut">
+    <string>F6</string>
+   </property>
+  </action>
+  <action name="actionDecode_remaining_files_in_directory">
+   <property name="text">
+    <string>Decode remaining files in directory</string>
+   </property>
+   <property name="shortcut">
+    <string>Shift+F6</string>
+   </property>
+  </action>
+  <action name="actionDelete_all_tf2_files_in_SaveDir">
+   <property name="text">
+    <string>Delete all *.tf2 and *.iq files in SaveDir</string>
+   </property>
+  </action>
+  <action name="actionErase_Band_Map_and_Messages">
+   <property name="text">
+    <string>Erase Band Map and Messages</string>
+   </property>
+  </action>
+  <action name="actionErase_map65_rx_log">
+   <property name="text">
+    <string>Erase map65_rx.log</string>
+   </property>
+  </action>
+  <action name="actionLinrad">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>false</bool>
+   </property>
+   <property name="text">
+    <string>Linrad</string>
+   </property>
+  </action>
+  <action name="actionCuteSDR">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>CuteSDR</string>
+   </property>
+  </action>
+  <action name="actionFind_Delta_Phi">
+   <property name="text">
+    <string>Find Delta Phi</string>
+   </property>
+  </action>
+  <action name="actionF4_sets_Tx6">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>F4 sets Tx6</string>
+   </property>
+  </action>
+  <action name="actionOnly_EME_calls">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Only EME calls</string>
+   </property>
+  </action>
+  <action name="actionNo_shorthands_if_Tx1">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>No shorthand decodes if Tx1</string>
+   </property>
+  </action>
+  <action name="actionNo_Deep_Search">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>No Deep Search</string>
+   </property>
+  </action>
+  <action name="actionNormal_Deep_Search">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Normal Deep Search</string>
+   </property>
+  </action>
+  <action name="actionAggressive_Deep_Search">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Aggressive Deep Search</string>
+   </property>
+  </action>
+  <action name="actionNone">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>None</string>
+   </property>
+  </action>
+  <action name="actionSave_all">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Save all</string>
+   </property>
+  </action>
+  <action name="action50">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>50</string>
+   </property>
+  </action>
+  <action name="action144">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>144</string>
+   </property>
+  </action>
+  <action name="action222">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>222</string>
+   </property>
+  </action>
+  <action name="action432">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>432</string>
+   </property>
+  </action>
+  <action name="action1296">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>1296</string>
+   </property>
+  </action>
+  <action name="action2304">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>2304</string>
+   </property>
+  </action>
+  <action name="actionOnline_Users_Guide">
+   <property name="text">
+    <string>Online User's Guide</string>
+   </property>
+   <property name="shortcut">
+    <string>F1</string>
+   </property>
+  </action>
+  <action name="actionKeyboard_shortcuts">
+   <property name="text">
+    <string>Keyboard shortcuts</string>
+   </property>
+  </action>
+  <action name="actionSpecial_mouse_commands">
+   <property name="text">
+    <string>Special mouse commands</string>
+   </property>
+  </action>
+  <action name="actionAvailable_suffixes_and_add_on_prefixes">
+   <property name="text">
+    <string>Available suffixes and add-on-prefixes</string>
+   </property>
+  </action>
+  <action name="actionErase_map65_tx_log">
+   <property name="text">
+    <string>Erase map65_tx.log</string>
+   </property>
+  </action>
+  <action name="actionJT65A">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>JT65A</string>
+   </property>
+  </action>
+  <action name="actionJT65B">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>JT65B</string>
+   </property>
+  </action>
+  <action name="actionJT65C">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>JT65C</string>
+   </property>
+  </action>
+  <action name="actionI_Q_Calibration">
+   <property name="text">
+    <string>I/Q Calibration</string>
+   </property>
+   <property name="shortcut">
+    <string>F7</string>
+   </property>
+  </action>
+  <action name="actionAdjust_IQ_Calibration">
+   <property name="text">
+    <string>Adjust Rx I/Q Calibration</string>
+   </property>
+  </action>
+  <action name="actionApply_IQ_Calibration">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Apply Rx I/Q Calibration</string>
+   </property>
+  </action>
+  <action name="actionAFMHot">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>AFMHot</string>
+   </property>
+  </action>
+  <action name="actionBlue">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Blue</string>
+   </property>
+  </action>
+  <action name="actionFUNcube_Dongle">
+   <property name="text">
+    <string>FUNcube Dongle Settings</string>
+   </property>
+  </action>
+  <action name="actionEdit_wsjt_log">
+   <property name="text">
+    <string>Edit wsjt.log</string>
+   </property>
+   <property name="shortcut">
+    <string>Alt+Shift+E</string>
+   </property>
+  </action>
+  <action name="actionTx_Tune">
+   <property name="text">
+    <string>Tx Tune</string>
+   </property>
+   <property name="shortcut">
+    <string>Alt+T</string>
+   </property>
+  </action>
+  <action name="actionDecode_Q65_near_QSO_frequency">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Decode Q65 near QSO frequency</string>
+   </property>
+  </action>
+  <action name="actionQ65A">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Q65A</string>
+   </property>
+  </action>
+  <action name="actionQ65B">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Q65B</string>
+   </property>
+  </action>
+  <action name="actionNoJT65">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>No JT65</string>
+   </property>
+  </action>
+  <action name="actionNoQ65">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="checked">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>No Q65</string>
+   </property>
+  </action>
+  <action name="actionQ65C">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Q65C</string>
+   </property>
+  </action>
+  <action name="actionQ65D">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Q65D</string>
+   </property>
+  </action>
+  <action name="actionQ65E">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Q65E</string>
+   </property>
+  </action>
+  <action name="actionQSG_Q65">
+   <property name="text">
+    <string>Quick-Start Guide to Q65</string>
+   </property>
+  </action>
+  <action name="actionQSG_MAP65_v3">
+   <property name="text">
+    <string>Quick-Start Guide to WSJT-X 2.5.0 and MAP65 3.0</string>
+   </property>
+  </action>
+  <action name="actionQ65_Sensitivity_in_MAP65_3_0">
+   <property name="text">
+    <string>Q65 Sensitivity in MAP65 3.0</string>
+   </property>
+  </action>
+  <action name="actionRelease_Notes">
+   <property name="text">
+    <string>Release Notes</string>
+   </property>
+  </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <customwidgets>
+  <customwidget>
+   <class>DisplayText</class>
+   <extends>QTextBrowser</extends>
+   <header>widgets/displaytext.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>monitorButton</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>update()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>269</x>
+     <y>255</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>126</x>
+     <y>515</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+ <buttongroups>
+  <buttongroup name="buttonGroup">
+   <property name="exclusive">
+    <bool>true</bool>
+   </property>
+  </buttongroup>
+ </buttongroups>
+</ui>
diff --git a/q65w/map65.pro b/q65w/map65.pro
new file mode 100644
index 000000000..83862ada8
--- /dev/null
+++ b/q65w/map65.pro
@@ -0,0 +1,70 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2011-07-07T08:39:24
+#
+#-------------------------------------------------
+
+QT       += core gui network
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+CONFIG   += thread
+#CONFIG   += console
+
+TARGET = map65
+VERSION = 2.5.0
+TEMPLATE = app
+DEFINES = QT5
+DESTDIR = /MAP65_2.9
+
+F90 = gfortran
+gfortran.output = ${QMAKE_FILE_BASE}.o
+gfortran.commands = $$F90 -c -O2 -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
+gfortran.input = F90_SOURCES
+QMAKE_EXTRA_COMPILERS += gfortran
+
+win32 {
+DEFINES = WIN32
+}
+
+unix {
+DEFINES = UNIX
+}
+
+SOURCES += main.cpp mainwindow.cpp plotter.cpp about.cpp \
+    soundin.cpp soundout.cpp devsetup.cpp \
+    widegraph.cpp getfile.cpp messages.cpp bandmap.cpp \
+    astro.cpp displaytext.cpp getdev.cpp \
+    txtune.cpp meterwidget.cpp signalmeter.cpp
+
+win32 {
+SOURCES += killbyname.cpp     set570.cpp
+}
+
+HEADERS  += mainwindow.h plotter.h soundin.h soundout.h \
+            about.h devsetup.h widegraph.h getfile.h messages.h \
+            bandmap.h commons.h sleep.h astro.h displaytext.h \
+            txtune.h meterwidget.h signalmeter.h
+
+FORMS    += mainwindow.ui about.ui devsetup.ui widegraph.ui \
+    messages.ui bandmap.ui astro.ui \
+    txtune.ui
+
+RC_FILE = map65.rc
+
+unix {
+LIBS += ../map65/libm65/libm65.a
+LIBS += -lfftw3f -lportaudio -lgfortran
+#LIBS +- -lusb
+}
+
+win32 {
+LIBS += ../map65/libm65/libm65.a
+LIBS += ../map65/libfftw3f_win.a
+LIBS += ../map65/palir-02.dll
+LIBS += libwsock32
+#LIBS += C:/MinGW/lib/libf95.a
+LIBS += -lgfortran
+#LIBS += -lusb
+LIBS += ../map65/libusb.a
+#LIBS += -lQt5Concurrent
+#LIBS += c:\JTSDK-QT\Qt5\Tools\mingw48_32\i686-w64-mingw32\lib\libmingwex.a
+}
diff --git a/q65w/map65_config.h.in b/q65w/map65_config.h.in
new file mode 100644
index 000000000..ffb971758
--- /dev/null
+++ b/q65w/map65_config.h.in
@@ -0,0 +1,4 @@
+#include "svnversion.h"
+
+#define MAP65_VERSION_MAJOR @MAP65_VERSION_MAJOR@
+#define MAP65_VERSION_MINOR @MAP65_VERSION_MINOR@
diff --git a/q65w/map65b.iss b/q65w/map65b.iss
new file mode 100644
index 000000000..e2fbdf495
--- /dev/null
+++ b/q65w/map65b.iss
@@ -0,0 +1,46 @@
+; For Use With JTSDK v2.0.0
+#define MyAppName "MAP65"
+#define MyAppVersion "2.7"
+#define MyAppPublisher "Joe Taylor, K1JT"
+#define MyAppCopyright "Copyright (C) 2001-2017 by Joe Taylor, K1JT"
+#define MyAppURL "http://physics.princeton.edu/pulsar/k1jt/map65.html"
+#define WsjtGroupURL "https://groups.yahoo.com/neo/groups/wsjtgroup/info"
+
+[Setup]
+AppName={#MyAppName}
+AppVersion={#MyAppVersion}
+AppPublisher={#MyAppPublisher}
+AppPublisherURL={#MyAppURL}
+AppSupportURL={#MyAppURL}
+AppUpdatesURL={#MyAppURL}
+DisableReadyPage=yes
+DefaultDirName=C:\WSJT\MAP65
+DefaultGroupName=WSJT
+DisableProgramGroupPage=yes
+LicenseFile=C:\JTSDK\common-licenses\GPL-3
+OutputDir=C:\JTSDK\map65\package
+OutputBaseFilename={#MyAppName}-{#MyAppVersion}-Win32
+SetupIconFile=C:\JTSDK\icons\wsjt.ico
+Compression=lzma
+SolidCompression=yes
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+
+[Files]
+Source: "c:\JTSDK\map65\install\Release\bin\*"; DestDir: "{app}"; Excludes: CALL3.TXT; Flags: ignoreversion recursesubdirs createallsubdirs
+Source: "C:\JTSDK\src\map65\resources\*"; DestDir: "{app}"; Flags: ignoreversion onlyifdoesntexist
+
+[Icons]
+Name: "{group}\{#MyAppName}\Documentation\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
+Name: "{group}\{#MyAppName}\Resources\{cm:ProgramOnTheWeb,WSJT Group}"; Filename: "{#WsjtGroupURL}"
+Name: "{group}\{#MyAppName}\Tools\Wisdom-1"; Filename: "{app}\wisdom1.bat"; WorkingDir: {app}; IconFileName: "{app}\wsjt.ico"
+Name: "{group}\{#MyAppName}\Tools\Wisdom-2"; Filename: "{app}\wisdom2.bat"; WorkingDir: {app}; IconFileName: "{app}\wsjt.ico"
+Name: "{group}\{#MyAppName}\Uninstall\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Comment: "Uninstall MAP65";
+Name: "{group}\{#MyAppName}\{#MyAppName}"; Filename: "{app}\map65.exe"; WorkingDir: {app}; IconFileName: "{app}\wsjt.ico"
+Name: "{userdesktop}\{#MyAppName}"; Filename: "{app}\map65.exe";    WorkingDir: {app}; IconFileName: "{app}\wsjt.ico"
+
+[Run]
+Filename: "{app}\wisdom1.bat"; Description: "Optimize plans for FFTs (takes a few minutes)"; Flags: postinstall
+Filename: "{app}\wisdom2.bat"; Description: "Patiently optimize plans for FFTs (up to one hour)"; Flags: postinstall unchecked
+Filename: "{app}\map65.exe"; Description: "Launch MAP65"; Flags: postinstall nowait unchecked
diff --git a/q65w/messages.cpp b/q65w/messages.cpp
new file mode 100644
index 000000000..3d0b18954
--- /dev/null
+++ b/q65w/messages.cpp
@@ -0,0 +1,113 @@
+#include "messages.h"
+#include <QSettings>
+#include "SettingsGroup.hpp"
+#include "ui_messages.h"
+#include "mainwindow.h"
+#include "qt_helpers.hpp"
+
+Messages::Messages (QString const& settings_filename, QWidget * parent) :
+  QDialog {parent},
+  ui {new Ui::Messages},
+  m_settings_filename {settings_filename}
+{
+  ui->setupUi(this);
+  setWindowTitle("Messages");
+  setWindowFlags (Qt::Dialog | Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint);
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  SettingsGroup g {&settings, "MainWindow"}; // MainWindow group for
+                                             // historical reasons
+  setGeometry (settings.value ("MessagesGeom", QRect {800, 400, 381, 400}).toRect ());
+  ui->messagesTextBrowser->setStyleSheet( \
+          "QTextBrowser { background-color : #000066; color : red; }");
+  ui->messagesTextBrowser->clear();
+  m_cqOnly=false;
+  m_cqStarOnly=false;
+  connect (ui->messagesTextBrowser, &DisplayText::selectCallsign, this, &Messages::selectCallsign2);
+}
+
+Messages::~Messages()
+{
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  SettingsGroup g {&settings, "MainWindow"};
+  settings.setValue ("MessagesGeom", geometry ());
+  delete ui;
+}
+
+void Messages::setText(QString t, QString t2)
+{
+  QString cfreq,cfreq0;
+  m_t=t;
+  m_t2=t2;
+
+  QString s="QTextBrowser{background-color: "+m_colorBackground+"}";
+  ui->messagesTextBrowser->setStyleSheet(s);
+
+  ui->messagesTextBrowser->clear();
+  QStringList lines = t.split( "\n", SkipEmptyParts );
+  foreach( QString line, lines ) {
+    QString t1=line.mid(0,50);
+    int ncq=t1.indexOf(" CQ ");
+    if((m_cqOnly or m_cqStarOnly) and  ncq< 0) continue;
+    if(m_cqStarOnly) {
+      QString caller=t1.mid(ncq+4,-1);
+      int nz=caller.indexOf(" ");
+      caller=caller.mid(0,nz);
+      int i=t2.indexOf(caller);
+      if(t2.mid(i-1,1)==" ") continue;
+    }
+    int n=line.mid(50,2).toInt();
+//    if(line.indexOf(":")>0) n=-1;
+//    if(n==-1) ui->messagesTextBrowser->setTextColor("#ffffff");  // white
+    if(n==0) ui->messagesTextBrowser->setTextColor(m_color0);
+    if(n==1) ui->messagesTextBrowser->setTextColor(m_color1);
+    if(n==2) ui->messagesTextBrowser->setTextColor(m_color2);
+    if(n>=3) ui->messagesTextBrowser->setTextColor(m_color3);
+    cfreq=t1.mid(0,3);
+    if(cfreq == cfreq0) {
+      t1="   " + t1.mid(3,-1);
+    }
+    cfreq0=cfreq;
+    ui->messagesTextBrowser->append(t1);
+  }
+}
+
+void Messages::selectCallsign2(bool ctrl)
+{
+  QString t = ui->messagesTextBrowser->toPlainText();   //Full contents
+  int i=ui->messagesTextBrowser->textCursor().position();
+  int i0=t.lastIndexOf(" ",i);
+  int i1=t.indexOf(" ",i);
+  QString hiscall=t.mid(i0+1,i1-i0-1);
+  if(hiscall!="") {
+    if(hiscall.length() < 13) {
+      QString t1 = t.mid(0,i);              //contents up to text cursor
+      int i1=t1.lastIndexOf("\n") + 1;
+      QString t2 = t.mid(i1,-1);            //selected line to end
+      int i2=t2.indexOf("\n");
+      t2=t2.left(i2);                       //selected line
+      emit click2OnCallsign(hiscall,t2,ctrl);
+    }
+  }
+}
+
+void Messages::setColors(QString t)
+{
+  m_colorBackground = "#"+t.mid(0,6);
+  m_color0 = "#"+t.mid(6,6);
+  m_color1 = "#"+t.mid(12,6);
+  m_color2 = "#"+t.mid(18,6);
+  m_color3 = "#"+t.mid(24,6);
+  setText(m_t,m_t2);
+}
+
+void Messages::on_cbCQ_toggled(bool checked)
+{
+  m_cqOnly = checked;
+  setText(m_t,m_t2);
+}
+
+void Messages::on_cbCQstar_toggled(bool checked)
+{
+  m_cqStarOnly = checked;
+  setText(m_t,m_t2);
+}
diff --git a/q65w/messages.h b/q65w/messages.h
new file mode 100644
index 000000000..995c3d12f
--- /dev/null
+++ b/q65w/messages.h
@@ -0,0 +1,44 @@
+#ifndef MESSAGES_H
+#define MESSAGES_H
+
+#include <QDialog>
+
+namespace Ui {
+  class Messages;
+}
+
+class Messages : public QDialog
+{
+  Q_OBJECT
+
+public:
+  explicit Messages (QString const& settings_filename, QWidget * parent = nullptr);
+  void setText(QString t, QString t2);
+  void setColors(QString t);
+
+  ~Messages();
+
+signals:
+  void click2OnCallsign(QString hiscall, QString t2, bool ctrl);
+
+private slots:
+  void selectCallsign2(bool ctrl);
+  void on_cbCQ_toggled(bool checked);
+  void on_cbCQstar_toggled(bool checked);
+
+private:
+  Ui::Messages *ui;
+  QString m_settings_filename;
+  QString m_t;
+  QString m_t2;
+  QString m_colorBackground;
+  QString m_color0;
+  QString m_color1;
+  QString m_color2;
+  QString m_color3;
+
+  bool m_cqOnly;
+  bool m_cqStarOnly;
+};
+
+#endif
diff --git a/q65w/messages.ui b/q65w/messages.ui
new file mode 100644
index 000000000..3bf0dc67a
--- /dev/null
+++ b/q65w/messages.ui
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Messages</class>
+ <widget class="QDialog" name="Messages">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>399</width>
+    <height>595</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <property name="sizeConstraint">
+      <enum>QLayout::SetDefaultConstraint</enum>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="lab1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string> Freq     DF     Pol     UTC       dB</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="cbCQstar">
+         <property name="text">
+          <string>CQ* Only</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="cbCQ">
+         <property name="text">
+          <string>CQ Only</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="DisplayText" name="messagesTextBrowser">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>340</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="font">
+        <font>
+         <family>Courier New</family>
+         <pointsize>9</pointsize>
+        </font>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>DisplayText</class>
+   <extends>QTextBrowser</extends>
+   <header>displaytext.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/q65w/meterwidget.cpp b/q65w/meterwidget.cpp
new file mode 100644
index 000000000..8e48ed57d
--- /dev/null
+++ b/q65w/meterwidget.cpp
@@ -0,0 +1,49 @@
+// Simple bargraph meter
+// Implemented by Edson Pereira PY2SDR
+
+#include "meterwidget.h"
+
+MeterWidget::MeterWidget(QWidget *parent) :
+    QWidget(parent),
+    m_signal(0)
+{
+    for ( int i = 0; i < 10; i++ ) {
+        signalQueue.enqueue(0);
+    }
+}
+
+void MeterWidget::setValue(int value)
+{
+    m_signal = value;
+    signalQueue.enqueue(value);
+    signalQueue.dequeue();
+
+    // Get signal peak
+    int tmp = 0;
+    for (int i = 0; i < signalQueue.size(); ++i) {
+        if (signalQueue.at(i) > tmp)
+            tmp = signalQueue.at(i);
+    }
+    m_sigPeak = tmp;
+
+    update();
+}
+
+void MeterWidget::paintEvent( QPaintEvent * )
+{
+    int pos;
+    QPainter p {this};
+
+    // Sanitize
+    m_signal = m_signal < 0 ? 0 : m_signal;
+    m_signal = m_signal > 60 ? 60 : m_signal;
+
+    pos = m_signal * 2;
+    QRect r(0, height() - pos, width(), pos );
+    p.fillRect(r, QColor( 255, 150, 0 ));
+
+    // Draw peak hold indicator
+    p.setPen(Qt::black);
+    pos = m_sigPeak * 2;
+    p.drawLine(0, height() - pos, 10, height() - pos);
+}
diff --git a/q65w/meterwidget.h b/q65w/meterwidget.h
new file mode 100644
index 000000000..7b51efb65
--- /dev/null
+++ b/q65w/meterwidget.h
@@ -0,0 +1,30 @@
+#ifndef METERWIDGET_H
+#define METERWIDGET_H
+
+#include <QWidget>
+#include <QtGui>
+#include <QQueue>
+
+class MeterWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit MeterWidget(QWidget *parent = 0);
+    
+signals:
+    
+public slots:
+    void setValue(int value);
+
+private:
+    QQueue<int> signalQueue;
+
+    int m_signal;
+    int m_sigPeak;
+
+protected:
+    void paintEvent( QPaintEvent * );
+    
+};
+
+#endif // METERWIDGET_H
diff --git a/q65w/paInputDevice.c b/q65w/paInputDevice.c
new file mode 100644
index 000000000..bad4973f4
--- /dev/null
+++ b/q65w/paInputDevice.c
@@ -0,0 +1,56 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+void paInputDevice(int id, char* hostAPI_DeviceName, int* minChan, 
+		   int* maxChan, int* minSpeed, int* maxSpeed)
+{
+  int i;
+  char pa_device_name[128];     
+  char pa_device_hostapi[128]; 
+  double pa_device_max_speed;
+  double pa_device_min_speed;
+  int pa_device_max_bytes;
+  int pa_device_min_bytes;
+  int pa_device_max_channels;
+  int pa_device_min_channels;
+  char p2[256];
+  char *p,*p1;
+  static int iret, valid_dev_cnt;
+
+  iret=pa_get_device_info (id,
+                          &pa_device_name,
+                          &pa_device_hostapi,
+			  &pa_device_max_speed,
+			  &pa_device_min_speed,
+			  &pa_device_max_bytes,
+			  &pa_device_min_bytes,
+			  &pa_device_max_channels,
+			  &pa_device_min_channels);
+
+  if (iret >= 0 ) {
+    valid_dev_cnt++;
+
+    p1="";
+    p=strstr(pa_device_hostapi,"MME");
+    if(p!=NULL) p1="MME";
+    p=strstr(pa_device_hostapi,"Direct");
+    if(p!=NULL) p1="DirectX";
+    p=strstr(pa_device_hostapi,"WASAPI");
+    if(p!=NULL) p1="WASAPI";
+    p=strstr(pa_device_hostapi,"ASIO");
+    if(p!=NULL) p1="ASIO";
+    p=strstr(pa_device_hostapi,"WDM-KS");
+    if(p!=NULL) p1="WDM-KS";
+
+    sprintf(p2,"%-8s %-39s",p1,pa_device_name);
+    for(i=0; i<50; i++) {
+      hostAPI_DeviceName[i]=p2[i];
+      if(p2[i]==0) break;
+    }
+    *minChan=pa_device_min_channels;
+    *maxChan=pa_device_max_channels;
+    *minSpeed=(int)pa_device_min_speed;
+    *maxSpeed=(int)pa_device_max_speed;
+  }
+}
diff --git a/q65w/pa_get_device_info.c b/q65w/pa_get_device_info.c
new file mode 100644
index 000000000..968d3434b
--- /dev/null
+++ b/q65w/pa_get_device_info.c
@@ -0,0 +1,173 @@
+#include <portaudio.h>
+#include <stdio.h>
+#include <string.h>
+
+#define MAX_LATENCY 20
+
+PaStream *in_stream;
+//------------------------------------------------------- pa_get_device_info
+int pa_get_device_info (int  n,
+                        void *pa_device_name,
+                        void *pa_device_hostapi, 
+			double *pa_device_max_speed,
+			double *pa_device_min_speed,
+			int *pa_device_max_bytes,
+			int *pa_device_min_bytes,
+			int *pa_device_max_channels,
+			int *pa_device_min_channels )
+{
+
+  (void) n ;
+  (void) pa_device_name;
+  (void) pa_device_hostapi; 
+  (void) pa_device_max_speed;
+  (void) pa_device_min_speed;
+  (void) pa_device_max_bytes;
+  (void) pa_device_min_bytes;
+  (void) pa_device_max_channels;
+  (void) pa_device_min_channels;
+  const PaDeviceInfo *deviceInfo;
+  PaError pa_err;
+  PaStreamParameters inputParameters;
+  int i,j, speed_warning;
+  int minBytes, maxBytes;
+  double maxStandardSampleRate;
+  double minStandardSampleRate;
+  int minInputChannels;
+  int maxInputChannels;
+
+// negative terminated  list
+  static double standardSampleRates[] = {8000.0, 9600.0, 
+        11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0,
+        44100.0, 48000.0, 88200.0, 96000.0, 192000.0, -1};
+// *******************************************************
+
+
+  *pa_device_max_speed=0;
+  *pa_device_min_speed=0;
+  *pa_device_max_bytes=0;
+  *pa_device_min_bytes=0;
+  *pa_device_max_channels=0;
+  *pa_device_min_channels=0;
+  minInputChannels=0;
+  if(n >= Pa_GetDeviceCount() ) return -1;
+  deviceInfo = Pa_GetDeviceInfo(n);
+  if (deviceInfo->maxInputChannels==0) return -1; 
+  sprintf((char*)(pa_device_name),"%s",deviceInfo->name);
+  sprintf((char*)(pa_device_hostapi),"%s",
+	  Pa_GetHostApiInfo( deviceInfo->hostApi )->name);
+  speed_warning=0;
+
+// bypass bug in Juli@ ASIO driver: 
+// this driver hangs after a Pa_IsFormatSupported call 
+  i = strncmp(deviceInfo->name, "ASIO 2.0 - ESI Juli@", 19);
+  if (i == 0) {
+    minStandardSampleRate=44100;
+    maxStandardSampleRate=192000;
+    minBytes=1;
+    maxBytes=4;
+    maxInputChannels= deviceInfo->maxInputChannels;
+    minInputChannels= 1;
+    goto end_pa_get_device_info;
+  }
+
+// Investigate device capabilities.
+// Check min and max samplerates  with 16 bit data.
+  maxStandardSampleRate=0;
+  minStandardSampleRate=0;
+  inputParameters.device = n;
+  inputParameters.channelCount = deviceInfo->maxInputChannels;
+  inputParameters.sampleFormat = paInt16;
+  inputParameters.suggestedLatency = 0;
+  inputParameters.hostApiSpecificStreamInfo = NULL;
+
+// ************************************************************************
+//filter for portaudio Windows hostapi's with non experts.
+//only allow ASIO or WASAPI or WDM-KS
+  i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, "ASIO", 4);
+  if (i==0 ) goto end_filter_hostapi;
+  i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, 
+	      "Windows WASAPI", 14);
+  if (i==0 ) goto end_filter_hostapi;
+  i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, 
+	      "Windows WDM-KS", 14);
+  if (i==0 ) goto end_filter_hostapi;
+  speed_warning=1;
+end_filter_hostapi:;
+
+// ************************************************************************
+  i=0;
+  while(standardSampleRates[i] > 0 && minStandardSampleRate==0) {
+    pa_err=Pa_IsFormatSupported(&inputParameters, NULL, 
+				standardSampleRates[i] );
+    if(pa_err == paDeviceUnavailable) return -1;
+    if(pa_err == paInvalidDevice) return -1;
+    if(pa_err == paFormatIsSupported ) { 
+      minStandardSampleRate=standardSampleRates[i];
+    }
+    i++;
+  }
+  if(minStandardSampleRate == 0) return -1;
+  j=i;
+  while(standardSampleRates[i] > 0 ) i++;
+  i--;
+  while(i >= j && maxStandardSampleRate==0) {
+      pa_err=Pa_IsFormatSupported(&inputParameters, NULL, 
+				  standardSampleRates[i] );
+    if(pa_err == paDeviceUnavailable) return -1;
+    if(pa_err == paInvalidDevice) return -1;
+    if( pa_err == paFormatIsSupported ) { 
+      maxStandardSampleRate=standardSampleRates[i];
+    }
+    i--;
+  }
+
+// check if min SampleRate  = max SampleRate 
+  if(maxStandardSampleRate==0 && (minStandardSampleRate != 0)) {
+    maxStandardSampleRate= minStandardSampleRate;
+  }
+
+// check min and max bytes
+  minBytes=2;
+  maxBytes=2;
+  inputParameters.sampleFormat = paUInt8;
+  pa_err=Pa_IsFormatSupported(&inputParameters, NULL, 
+				maxStandardSampleRate );
+  if( pa_err == paFormatIsSupported ) { 
+    minBytes=1;
+  }
+    inputParameters.sampleFormat = paInt32;
+    pa_err=Pa_IsFormatSupported(&inputParameters, NULL, 
+				maxStandardSampleRate );
+  if( pa_err == paFormatIsSupported ) { 
+    maxBytes=4;
+  }
+
+// check min channel count
+  maxInputChannels= deviceInfo->maxInputChannels;
+  inputParameters.channelCount = 1;
+  inputParameters.sampleFormat = paInt16;
+  pa_err=paFormatIsSupported+32000;
+  while(pa_err != paFormatIsSupported &&
+	  ( inputParameters.channelCount < (maxInputChannels+1)) ) {
+    pa_err=Pa_IsFormatSupported(&inputParameters, NULL, 
+				maxStandardSampleRate );
+    inputParameters.channelCount++;
+  }
+  if( pa_err == paFormatIsSupported ) {
+    minInputChannels=inputParameters.channelCount-1;
+  } else {
+    return -1;
+  }
+
+end_pa_get_device_info:;
+
+  *pa_device_max_speed=maxStandardSampleRate;
+  *pa_device_min_speed=minStandardSampleRate;
+  *pa_device_max_bytes=maxBytes;
+  *pa_device_min_bytes=minBytes;
+  *pa_device_max_channels= maxInputChannels;
+  *pa_device_min_channels= minInputChannels;
+
+  return speed_warning;
+}
diff --git a/q65w/plotter.cpp b/q65w/plotter.cpp
new file mode 100644
index 000000000..ab53a4efb
--- /dev/null
+++ b/q65w/plotter.cpp
@@ -0,0 +1,792 @@
+#include "plotter.h"
+#include <math.h>
+#include <QDebug>
+#include <fstream>
+#include <iostream>
+
+#define MAX_SCREENSIZE 2048
+
+
+CPlotter::CPlotter(QWidget *parent) :                  //CPlotter Constructor
+  QFrame(parent)
+{
+  setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+  setFocusPolicy(Qt::StrongFocus);
+  setAttribute(Qt::WA_PaintOnScreen,false);
+  setAutoFillBackground(false);
+  setAttribute(Qt::WA_OpaquePaintEvent, false);
+  setAttribute(Qt::WA_NoSystemBackground, true);
+  setMouseTracking(true);
+
+  m_StartFreq = 100;
+  m_nSpan=65;                    //Units: kHz
+  m_fSpan=(float)m_nSpan;
+  m_hdivs = HORZ_DIVS;
+  m_FreqUnits = 1;
+  m_Running = false;
+  m_paintEventBusy=false;
+  m_WaterfallPixmap = QPixmap(0,0);
+  m_ZoomWaterfallPixmap = QPixmap(0,0);
+  m_2DPixmap = QPixmap(0,0);
+  m_ScalePixmap = QPixmap(0,0);
+  m_ZoomScalePixmap = QPixmap(0,0);
+  m_Size = QSize(0,0);
+  m_fQSO = 125;
+  m_TXkHz = m_fQSO;
+  m_line = 0;
+  m_fSample = 96000;
+  m_paintAllZoom = false;
+  m_TxDF=0;
+  m_bDecodeFinished=false;
+}
+
+CPlotter::~CPlotter() { }                                      // Destructor
+
+QSize CPlotter::minimumSizeHint() const
+{
+  return QSize(50, 50);
+}
+
+QSize CPlotter::sizeHint() const
+{
+  return QSize(180, 180);
+}
+
+void CPlotter::resizeEvent(QResizeEvent* )                    //resizeEvent()
+{
+  if(!size().isValid()) return;
+  if( m_Size != size() ) {
+    //if changed, resize pixmaps to new screensize
+    m_Size = size();
+    int w = m_Size.width();
+    int h = (m_Size.height()-60)/2;
+    m_WaterfallPixmap = QPixmap(w,h);
+    m_ZoomWaterfallPixmap = QPixmap(w,h);
+    m_2DPixmap = QPixmap(w,h);
+    m_WaterfallPixmap.fill(Qt::black);
+    m_ZoomWaterfallPixmap.fill(Qt::black);
+    m_2DPixmap.fill(Qt::black);
+    memset(m_zwf,0,32768*h);
+    m_ScalePixmap = QPixmap(w,30);
+    m_ZoomScalePixmap = QPixmap(w,30);    //(no change on resize...)
+    m_ScalePixmap.fill(Qt::white);
+    m_ZoomScalePixmap.fill(Qt::yellow);
+  }
+  SetCenterFreq(-1);
+  DrawOverlay();
+}
+
+void CPlotter::paintEvent(QPaintEvent *)                    // paintEvent()
+{
+  static int x00=-99;
+
+  if(m_paintEventBusy) return;
+  m_paintEventBusy=true;
+  QPainter painter(this);
+  int w = m_Size.width();
+  int h = (m_Size.height()-60)/2;
+  painter.drawPixmap(0,0,m_ScalePixmap);
+  painter.drawPixmap(0,30,m_WaterfallPixmap);
+  if(m_2Dspec) {
+    painter.drawPixmap(0,h+30,m_ScalePixmap);
+    painter.drawPixmap(0,h+60,m_2DPixmap);
+    m_paintEventBusy=false;
+    return;
+  }
+
+  painter.drawPixmap(0,h+30,m_ZoomScalePixmap);
+  painter.drawPixmap(0,h+60,m_ZoomWaterfallPixmap);
+
+  QRect target(0,h+30,w,30);           // (x,y,width,height)
+  QRect source(0,0,w,30);
+  painter.drawPixmap(target,m_ZoomScalePixmap,source);
+
+  float df=m_fSample/32768.0;
+  int x0=16384 + (0.001*(m_ZoomStartFreq+m_fCal)+m_fQSO-m_nkhz+1.27046) * \
+      1000.0/df + 0.5;
+
+  QPainter painter1(&m_WaterfallPixmap);
+  QPainter painter2(&m_ZoomWaterfallPixmap);
+  for(int i=0; i<w; i++) {                      //Paint the top row
+    painter2.setPen(m_ColorTbl[m_zwf[x0+i]]);
+    painter2.drawPoint(i,0);
+  }
+  if(m_paintAllZoom or (x0 != x00 and x00 != -99)) {
+    // If new fQSO, paint all rows
+    int k=x0;
+    for(int j=1; j<h; j++) {
+      k += 32768;
+      if(x0 != x00 and x00 != -99) {
+        for(int i=0; i<w; i++) {
+          painter2.setPen(m_ColorTbl[m_zwf[i+k]]);
+          painter2.drawPoint(i,j);
+        }
+      }
+      if(j == 13 and x0 == x00) {
+        painter2.setPen(m_ColorTbl[255]);
+        painter2.drawText(5,10,m_sutc);
+      }
+    }
+  } else if(m_line == 13) {
+    painter2.setPen(m_ColorTbl[255]);
+    UTCstr();
+    painter2.drawText(5,10,m_sutc);
+  }
+
+//  if(m_line==63) {
+  if(m_bDecodeFinished) {
+    /*
+    std::ifstream f;
+    f.open("./red.dat");
+    if(f) {
+      int x,y;
+      float freq,sync;
+      float slimit=6.0;
+      QPen pen0(Qt::red,1);
+      painter2.setPen(pen0);
+      for(int i=0; i<99999; i++) {
+        f >> freq >> sync;
+        if(f.eof()) break;
+        x=(freq - m_ZoomStartFreq)/df;
+        y=(sync-slimit)*3.0;
+        if(y>0) {
+          if(y>15.0) y=15.0;
+          if(x>=0 and x<=w) painter2.drawLine(x,0,x,y);
+          x=XfromFreq(float(fQSO()+0.001*freq));
+          painter1.setPen(pen0);
+          painter1.drawLine(x,0,x,y);
+        }
+      }
+      f.close();
+    }
+    */
+    m_bDecodeFinished=false;
+  }
+
+  m_paintAllZoom=false;
+  x00=x0;
+
+  QRect target2(0,h+60,w,h);           // (x,y,width,height)
+  QRect source2(0,0,w,h);
+  painter.drawPixmap(target2,m_ZoomWaterfallPixmap,source2);
+  m_paintEventBusy=false;
+}
+
+void CPlotter::DecodeFinished()
+{
+  m_bDecodeFinished=true;
+  update();                              //trigger a new paintEvent
+}
+
+void CPlotter::draw(float s[], int i0, float splot[])                 //draw()
+{
+  int i,j,w,h;
+  float y;
+
+  m_i0=i0;
+  w = m_WaterfallPixmap.width();
+  h = m_WaterfallPixmap.height();
+  double gain = pow(10.0,0.05*(m_plotGain+7));
+
+  //move current data down one line
+  //(must do this before attaching a QPainter object)
+  m_WaterfallPixmap.scroll(0,1,0,0,w,h);
+  m_ZoomWaterfallPixmap.scroll(0,1,0,0, w, h);
+  memmove(&m_zwf[32768],m_zwf,32768*(h-1));
+  QPainter painter1(&m_WaterfallPixmap);
+  QPainter painter2D(&m_2DPixmap);
+
+  for(i=0; i<256; i++) {                     //Zero the histograms
+    m_hist1[i]=0;
+    m_hist2[i]=0;
+  }
+
+  painter2D.setPen(Qt::green);
+  QRect tmp(0,0,w,h);
+  painter2D.fillRect(tmp,Qt::black);
+  QPoint LineBuf[MAX_SCREENSIZE];
+  j=0;
+  bool strong0=false;
+  bool strong=false;
+
+  for(i=0; i<w; i++) {
+    strong=false;
+    if(s[i]<0) {
+      strong=true;
+      s[i]=-s[i];
+    }
+    y = 10.0*log10(s[i]);
+    int y1 = 5.0*gain*(y + 29 -m_plotZero);
+    if (y1<0) y1=0;
+    if (y1>254) y1=254;
+    if (s[i]>1.e29) y1=255;
+    m_hist1[y1]++;
+    painter1.setPen(m_ColorTbl[y1]);
+    painter1.drawPoint(i,0);
+    if(m_2Dspec) {
+      int y2 = gain*(y + 34 -m_plotZero);
+      if (y2<0) y2=0;
+      if (y2>254) y2=254;
+      if (s[i]>1.e29) y2=255;
+      if(strong != strong0 or i==w-1) {
+        painter2D.drawPolyline(LineBuf,j);
+        j=0;
+        strong0=strong;
+        if(strong0) painter2D.setPen(Qt::red);
+        if(!strong0) painter2D.setPen(Qt::green);
+      }
+      LineBuf[j].setX(i);
+      LineBuf[j].setY(h-y2);
+      j++;
+    }
+  }
+
+  for(i=0; i<32768; i++) {
+    y = 10.0*log10(splot[i]);
+    int y1 = 5.0*gain*(y + 30 - m_plotZero);
+    if (y1<0) y1=0;
+    if (y1>254) y1=254;
+    if (splot[i]>1.e29) y1=255;
+    m_hist2[y1]++;
+    m_zwf[i]=y1;
+  }
+
+  if(s[0]>1.0e29) m_line=0;
+  m_line++;
+  if(m_line == 13) {
+    UTCstr();
+    painter1.setPen(m_ColorTbl[255]);
+    painter1.drawText(5,10,m_sutc);
+    m_paintAllZoom=true;
+  }
+  update();                              //trigger a new paintEvent
+}
+
+void CPlotter::UTCstr()
+{
+  int ihr,imin;
+  if(datcom_.ndiskdat != 0) {
+    ihr=datcom_.nutc/100;
+    imin=(datcom_.nutc) % 100;
+  } else {
+    qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+    imin=ms/60000;
+    ihr=imin/60;
+    imin=imin % 60;
+  }
+  m_sutc = QString {"%1:%2"}.arg (ihr,2,10,QLatin1Char('0')).arg (imin,2,10,QLatin1Char('0'));
+}
+
+void CPlotter::DrawOverlay()                                 //DrawOverlay()
+{
+  if(m_WaterfallPixmap.isNull()) return;
+  int w = m_WaterfallPixmap.width();
+  int x,y;
+  float pixperdiv;
+
+  QRect rect0;
+  QPainter painter0(&m_ScalePixmap);
+
+  //create Font to use for scales
+  QFont Font("Arial");
+  Font.setPointSize(12);
+  QFontMetrics metrics(Font);
+  Font.setWeight(QFont::Normal);
+  painter0.setFont(Font);
+  painter0.setPen(Qt::black);
+
+  m_binsPerPixel = m_nSpan * 32768.0/(w*0.001*m_fSample) + 0.5;
+  double FreqPerDiv=5.0;
+  double df = m_binsPerPixel*0.001*m_fSample/32768.0;
+  m_hdivs = w*df/FreqPerDiv + 0.9999;
+  m_fSpan = w*df;
+  m_ScalePixmap.fill(Qt::white);
+  painter0.drawRect(0, 0, w, 30);
+
+  //draw tick marks on wideband (upper) scale
+  pixperdiv = FreqPerDiv/df;
+  for( int i=1; i<m_hdivs; i++) {     //major ticks
+    x = (int)( (float)i*pixperdiv );
+    painter0.drawLine(x,18,x,30);
+  }
+  for( int i=1; i<5*m_hdivs; i++) {   //minor ticks
+    x = i*pixperdiv/5.0;
+    painter0.drawLine(x,24,x,30);
+  }
+
+  //draw frequency values
+  MakeFrequencyStrs();
+  for( int i=0; i<=m_hdivs; i++) {
+    if(0==i) {
+      //left justify the leftmost text
+      x = (int)( (float)i*pixperdiv);
+      rect0.setRect(x,0, (int)pixperdiv, 20);
+      painter0.drawText(rect0, Qt::AlignLeft|Qt::AlignVCenter,
+                       m_HDivText[i]);
+    }
+    else if(m_hdivs == i) {
+      //right justify the rightmost text
+      x = (int)( (float)i*pixperdiv - pixperdiv);
+      rect0.setRect(x,0, (int)pixperdiv, 20);
+      painter0.drawText(rect0, Qt::AlignRight|Qt::AlignVCenter,
+                       m_HDivText[i]);
+    } else {
+      //center justify the rest of the text
+      x = (int)( (float)i*pixperdiv - pixperdiv/2);
+      rect0.setRect(x,0, (int)pixperdiv, 20);
+      painter0.drawText(rect0, Qt::AlignHCenter|Qt::AlignVCenter,
+                       m_HDivText[i]);
+    }
+  }
+
+
+  if(m_2Dspec) {
+    QPen pen0(Qt::green, 3);                 //Mark Cal Freq with green tick
+    painter0.setPen(pen0);
+    x = m_xClick;
+    painter0.drawLine(x,15,x,30);
+    int x0=(16384-m_i0)/m_binsPerPixel;
+    m_fGreen=(x-x0)*df;
+    x0 += (x0-x);
+    QPen pen3(Qt::red, 3);
+    painter0.setPen(pen3);
+    if(x0>0 and x0<w) painter0.drawLine(x0,15,x0,30);
+  } else {
+    QPen pen0(Qt::green, 3);                 //Mark fQSO with green tick
+    painter0.setPen(pen0);
+    x = XfromFreq(float(fQSO()));
+    painter0.drawLine(x,15,x,30);
+    QPen pen3(Qt::red, 3);                  //Mark Tx freq (kHz) with red tick
+    painter0.setPen(pen3);
+    x = XfromFreq(float(m_TXkHz));
+    painter0.drawLine(x,0,x,15);
+  }
+
+  // Now make the zoomed scale, using m_ZoomScalePixmap and painter3
+  QRect rect1;
+  QPainter painter3(&m_ZoomScalePixmap);
+  painter3.setFont(Font);
+  painter3.setPen(Qt::black);
+
+  FreqPerDiv=0.2;
+  df = 0.001*m_fSample/32768.0;
+  m_hdivs = 32768*df/FreqPerDiv + 0.9999;
+  int nlabs=df*w/0.2 + 1.0;
+  m_ZoomScalePixmap.fill(Qt::white);
+  painter3.drawRect(0, 0, w, 30);
+
+  pixperdiv = FreqPerDiv/df;
+  for( int i=0; i<10*nlabs; i++) {
+    x = i*pixperdiv/10;
+    y=24;
+    if ((i%5) == 0) y=18;
+    painter3.drawLine(x,y,x,30);
+  }
+
+  //draw frequency values
+  MakeFrequencyStrs();
+  for( int i=0; i<=nlabs; i++) {
+    x = (int)( (float)i*pixperdiv - pixperdiv/2);
+    rect1.setRect(x,0, (int)pixperdiv, 20);
+    painter3.drawText(rect1, Qt::AlignHCenter|Qt::AlignVCenter,
+                      m_HDivText[i]);
+  }
+
+  df=m_fSample/32768.0;
+  if(m_bLockTxRx) m_TxDF=m_DF;
+  x = (m_DF + m_mode65*66*11025.0/4096.0 - m_ZoomStartFreq)/df;
+  QPen pen2(Qt::darkGreen, 3);      //Mark top JT65B tone with dark Green tick
+  painter3.setPen(pen2);
+  painter3.drawLine(x,15,x,30);
+  x = (m_DF - m_ZoomStartFreq)/df;
+  QPen pen1(Qt::green, 3);                //Mark DF with a green tick
+  painter3.setPen(pen1);
+  painter3.drawLine(x,15,x,30);
+  for(int i=2; i<5; i++) {                //Mark the shorthand freqs
+    x = (m_DF + m_mode65*10*i*11025.0/4096.0 - m_ZoomStartFreq)/df;
+    painter3.drawLine(x,20,x,30);
+  }
+  int x1=(m_DF - m_tol - m_ZoomStartFreq)/df;
+  int x2=(m_DF + m_tol - m_ZoomStartFreq)/df;
+  pen1.setWidth(4);
+  painter3.setPen(pen1);
+  painter3.drawLine(x1,28,x2,28);
+
+  pen1.setWidth(3);
+  pen1.setColor(Qt::red);                  //Mark Tx DF with red tick
+  painter3.setPen(pen1);
+  x = (m_TxDF - m_ZoomStartFreq)/df;
+  painter3.drawLine(x,0,x,15);
+}
+
+void CPlotter::MakeFrequencyStrs()                       //MakeFrequencyStrs
+{
+  float StartFreq = m_StartFreq;
+  float freq;
+  int i,j;
+  int FreqPerDiv=5;
+
+  if(m_hdivs > 100) {
+    m_FreqUnits = 1;
+    FreqPerDiv = 200;
+    int w = m_WaterfallPixmap.width();
+    float df=m_fSample/32768.0;
+    StartFreq = -w*df/2;
+    int n=StartFreq/FreqPerDiv;
+    StartFreq=n*200;
+    m_ZoomStartFreq = (int)StartFreq;
+  }
+  int numfractdigits = (int)log10((double)m_FreqUnits);
+
+  if(1 == m_FreqUnits) {
+    //if units is Hz then just output integer freq
+    for(int i=0; i<=m_hdivs; i++) {
+      freq = StartFreq/(float)m_FreqUnits;
+      m_HDivText[i].setNum((int)freq);
+      StartFreq += FreqPerDiv;
+    }
+    return;
+  }
+  //here if is fractional frequency values
+  //so create max sized text based on frequency units
+  for(int i=0; i<=m_hdivs; i++) {
+    freq = StartFreq/(float)m_FreqUnits;
+    m_HDivText[i].setNum(freq,'f', numfractdigits);
+    StartFreq += FreqPerDiv;
+  }
+  //now find the division text with the longest non-zero digit
+  //to the right of the decimal point.
+  int max = 0;
+  for(i=0; i<=m_hdivs; i++) {
+    int dp = m_HDivText[i].indexOf('.');
+    int l = m_HDivText[i].length()-1;
+    for(j=l; j>dp; j--) {
+      if(m_HDivText[i][j] != '0')
+        break;
+    }
+    if( (j-dp) > max)
+      max = j-dp;
+  }
+  //truncate all strings to maximum fractional length
+  StartFreq = m_CenterFreq - 0.5*m_fSpan;
+  for( i=0; i<=m_hdivs; i++) {
+    freq = (float)StartFreq/(float)m_FreqUnits;
+    m_HDivText[i].setNum(freq,'f', max);
+    StartFreq += FreqPerDiv;
+  }
+}
+
+int CPlotter::XfromFreq(float f)                               //XfromFreq()
+{
+  float w = m_WaterfallPixmap.width();
+  int x = (int) w * (f - m_StartFreq)/m_fSpan;
+  if(x<0 ) return 0;
+  if(x>(int)w) return m_WaterfallPixmap.width();
+  return x;
+}
+
+float CPlotter::FreqfromX(int x)                               //FreqfromX()
+{
+  float w = m_WaterfallPixmap.width();
+  float f =m_CenterFreq - 0.5*m_fSpan + m_fSpan * x/w;
+  return f;
+}
+
+void CPlotter::SetRunningState(bool running)              //SetRunningState()
+{
+  m_Running = running;
+}
+
+void CPlotter::setPlotZero(int plotZero)                  //setPlotZero()
+{
+  m_plotZero=plotZero;
+}
+
+int CPlotter::getPlotZero()                               //getPlotZero()
+{
+  return m_plotZero;
+}
+
+void CPlotter::setPlotGain(int plotGain)                  //setPlotGain()
+{
+  m_plotGain=plotGain;
+}
+
+int CPlotter::getPlotGain()                               //getPlotGain()
+{
+  return m_plotGain;
+}
+
+void CPlotter::SetCenterFreq(int f)                   //setCenterFreq()
+{
+// f is the integer kHz portion of cfreq, from Linrad packets
+  if(f<0) f=m_nkhz;
+  int ns = (f+m_FreqOffset-0.5*m_fSpan)/5.0 + 0.5;
+  double fs = 5*ns;
+  m_CenterFreq = fs + 0.5*m_fSpan;
+}
+
+qint64 CPlotter::centerFreq()                             //centerFreq()
+{
+  return m_CenterFreq;
+}
+
+void CPlotter::SetStartFreq(quint64 f)                    //SetStartFreq()
+{
+  m_StartFreq=f;
+//    resizeEvent(NULL);
+  DrawOverlay();
+}
+
+qint64 CPlotter::startFreq()                              //startFreq()
+{
+  return m_StartFreq;
+}
+
+void CPlotter::SetFreqOffset(quint64 f)                   //SetFreqOffset()
+{
+  m_FreqOffset=f;
+  DrawOverlay();
+}
+
+qint64 CPlotter::freqOffset() {return m_FreqOffset;}         //freqOffset()
+int CPlotter::plotWidth(){return m_WaterfallPixmap.width();}
+void CPlotter::UpdateOverlay() {DrawOverlay();}
+void CPlotter::setDataFromDisk(bool b) {m_dataFromDisk=b;}
+
+void CPlotter::setTol(int n)                                 //setTol()
+{
+  m_tol=n;
+  DrawOverlay();
+}
+
+void CPlotter::setBinsPerPixel(int n) {m_binsPerPixel = n;}  //set nbpp
+
+int CPlotter::binsPerPixel(){return m_binsPerPixel;}         //get nbpp
+
+void CPlotter::setFQSO(int x, bool bf)                       //setFQSO()
+{
+  if(bf) {
+    m_fQSO=x;         // x is freq in kHz
+  } else {
+    if(x<0) x=0;      // x is pixel number
+    if(x>m_Size.width()) x=m_Size.width();
+    m_fQSO = int(FreqfromX(x)+0.5);
+    m_xClick=x;
+  }
+  if(m_bLockTxRx) m_TXkHz=m_fQSO;
+  m_TXfreq = floor(datcom_.fcenter) + 0.001*m_TXkHz;
+  DrawOverlay();
+  update();
+}
+
+void CPlotter::setFcal(int n)                                  //setFcal()
+{
+  m_fCal=n;
+}
+
+void CPlotter::setNkhz(int n)                                  //setNkhz()
+{
+  m_nkhz=n;
+}
+
+int CPlotter::fQSO() {return m_fQSO;}                          //get fQSO
+
+int CPlotter::DF() {return m_DF;}                              // get DF
+
+void CPlotter::mousePressEvent(QMouseEvent *event)       //mousePressEvent
+{
+  int h = (m_Size.height()-60)/2;
+  int x=event->x();
+  int y=event->y();
+  int button=event->button();
+  if(y < h+30) {                                      // Wideband waterfall
+    if(button==1) {
+      setFQSO(x,false);
+    }
+    if(button==2 and !m_bLockTxRx) {
+      if(x<0) x=0;      // x is pixel number
+      if(x>m_Size.width()) x=m_Size.width();
+      m_TXkHz = int(FreqfromX(x)+0.5);
+      m_TXfreq = floor(datcom_.fcenter) + 0.001*m_TXkHz;
+    }
+  } else {                                            // Zoomed waterfall
+    if(button==1) m_DF=int(m_ZoomStartFreq + x*m_fSample/32768.0);
+    if(button==2 and !m_bLockTxRx) m_TxDF=int(m_ZoomStartFreq + x*m_fSample/32768.0);
+    if(m_bLockTxRx) m_TxDF=m_DF;
+  }
+  DrawOverlay();
+  update();
+}
+
+void CPlotter::mouseDoubleClickEvent(QMouseEvent *event)  //mouse2click
+{
+  if(event->button()!=1) return;       //Act only on left double-click
+  int h = (m_Size.height()-60)/2;
+  int x=event->x();
+  int y=event->y();
+  if(y < h+30) {
+    m_DF=0;
+    setFQSO(x,false);
+    emit freezeDecode1(2);                  //### ???
+  } else {
+    float f = m_ZoomStartFreq + x*m_fSample/32768.0;
+    m_DF=int(f);
+    emit freezeDecode1(1);
+    DrawOverlay();
+  }
+}
+
+int CPlotter::autoZero()                                        //autoZero()
+{
+  m_z1=0;
+  m_z2=0;
+  int sum1=0;
+  for(int i=0; i<256; i++) {
+    sum1 += m_hist1[i];
+    if(sum1 > m_Size.width()/2) {
+      m_z1=i;
+      break;
+    }
+  }
+  int sum2=0;
+  for(int i=0; i<256; i++) {
+    sum2 += m_hist2[i];
+    if(sum2 > 16384) {
+      m_z2=i;
+      break;
+    }
+  }
+  double gain = pow(10.0,0.05*(m_plotGain+7));
+//  double dz1 = (m_z1-38)/(5.0*gain);
+  double dz2 = (m_z2-28)/(5.0*gain);
+  if(m_z2 < 255) m_plotZero = int(m_plotZero + dz2 + 0.5);
+  return m_plotZero;
+}
+
+void CPlotter::setNSpan(int n)                                  //setNSpan()
+{
+  m_nSpan=n;
+}
+
+void CPlotter::setPalette(QString palette)                      //setPalette()
+{
+  if(palette=="Linrad") {
+    float twopi=6.2831853;
+    float r,g,b,phi,x;
+    for(int i=0; i<256; i++) {
+      r=0.0;
+      if(i>105 and i<=198) {
+        phi=(twopi/4.0) * (i-105.0)/(198.0-105.0);
+        r=sin(phi);
+      } else if(i>=198) {
+          r=1.0;
+      }
+
+      g=0.0;
+      if(i>35 and i<198) {
+        phi=(twopi/4.0) * (i-35.0)/(122.5-35.0);
+        g=0.625*sin(phi);
+      } else if(i>=198) {
+        x=(i-186.0);
+        g=-0.014 + 0.0144*x -0.00007*x*x +0.000002*x*x*x;
+        if(g>1.0) g=1.0;
+      }
+
+      b=0.0;
+      if(i<=117) {
+        phi=(twopi/2.0) * i/117.0;
+        b=0.4531*sin(phi);
+      } else if(i>186) {
+        x=(i-186.0);
+        b=-0.014 + 0.0144*x -0.00007*x*x +0.000002*x*x*x;
+        if(b>1.0) b=1.0;
+      }
+      m_ColorTbl[i].setRgb(int(255.0*r),int(255.0*g),int(255.0*b));
+    }
+    m_ColorTbl[255].setRgb(255,255,100);
+
+  }
+
+  if(palette=="CuteSDR") {
+      for( int i=0; i<256; i++) {
+      if( (i<43) )
+        m_ColorTbl[i].setRgb( 0,0, 255*(i)/43);
+      if( (i>=43) && (i<87) )
+        m_ColorTbl[i].setRgb( 0, 255*(i-43)/43, 255 );
+      if( (i>=87) && (i<120) )
+        m_ColorTbl[i].setRgb( 0,255, 255-(255*(i-87)/32));
+      if( (i>=120) && (i<154) )
+        m_ColorTbl[i].setRgb( (255*(i-120)/33), 255, 0);
+      if( (i>=154) && (i<217) )
+        m_ColorTbl[i].setRgb( 255, 255 - (255*(i-154)/62), 0);
+      if( (i>=217)  )
+        m_ColorTbl[i].setRgb( 255, 0, 128*(i-217)/38);
+    }
+    m_ColorTbl[255].setRgb(255,255,100);
+  }
+}
+
+void CPlotter::setFsample(int n)
+{
+  m_fSample=n;
+}
+
+void CPlotter::setMode65(int n)
+{
+  m_mode65=n;
+  DrawOverlay();                         //Redraw scales and ticks
+  update();                              //trigger a new paintEvent
+}
+
+void CPlotter::set2Dspec(bool b)
+{
+  m_2Dspec=b;
+  m_paintAllZoom=!b;
+  DrawOverlay();                         //Redraw scales and ticks
+  update();                              //trigger a new paintEvent}
+}
+
+double CPlotter::fGreen()
+{
+  return m_fGreen;
+}
+
+void CPlotter::setLockTxRx(bool b)
+{
+  m_bLockTxRx=b;
+  if(m_bLockTxRx) {
+    m_TXkHz=m_fQSO;
+    m_TXfreq=floor(m_TXfreq) + 0.001*m_TXkHz;
+    m_TxDF=m_DF;
+    DrawOverlay();                         //Redraw scales and ticks
+    update();                              //trigger a new paintEvent}
+  }
+}
+
+void CPlotter::mouseMoveEvent (QMouseEvent * event)
+{
+  int h = m_WaterfallPixmap.height();
+  int x=event->x();
+  int y=event->y();
+  bool lower=(y > 30+h);
+  float freq=FreqfromX(x);
+  float df=m_fSample/32768.0;
+  int ndf=x*df + m_ZoomStartFreq;
+  if(lower) {
+    QToolTip::showText(event->globalPos(),QString::number(ndf));
+  } else {
+    QToolTip::showText(event->globalPos(),QString::number(freq,'f',3));
+  }
+  QWidget::mouseMoveEvent(event);
+}
+
+double CPlotter::rxFreq()
+{
+  return floor(datcom_.fcenter) + 0.001*m_fQSO + 0.000001*m_DF;
+}
+
+double CPlotter::txFreq()
+{
+  return m_TXfreq + 0.000001*m_TxDF;
+}
diff --git a/q65w/plotter.h b/q65w/plotter.h
new file mode 100644
index 000000000..36f0bcd0f
--- /dev/null
+++ b/q65w/plotter.h
@@ -0,0 +1,139 @@
+///////////////////////////////////////////////////////////////////////////
+// Some code in this file and accompanying files is based on work by
+// Moe Wheatley, AE4Y, released under the "Simplified BSD License".
+// For more details see the accompanying file LICENSE_WHEATLEY.TXT
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef PLOTTER_H
+#define PLOTTER_H
+
+#include <QtGui>
+#include <QFrame>
+#include <QImage>
+#include <QToolTip>
+#include <cstring>
+#include "commons.h"
+
+#define VERT_DIVS 7	//specify grid screen divisions
+#define HORZ_DIVS 20
+
+class CPlotter : public QFrame
+{
+  Q_OBJECT
+public:
+  explicit CPlotter(QWidget *parent = 0);
+  ~CPlotter();
+
+  QSize minimumSizeHint() const override;
+  QSize sizeHint() const override;
+  QColor  m_ColorTbl[256];
+  bool    m_bDecodeFinished;
+  int     m_plotZero;
+  int     m_plotGain;
+  float   m_fSpan;
+  qint32  m_nSpan;
+  qint32  m_binsPerPixel;
+  qint32  m_fQSO;
+  qint32  m_DF;
+  qint32  m_tol;
+  qint32  m_fCal;
+
+  void draw(float sw[], int i0, float splot[]);		//Update the waterfalls
+  void SetRunningState(bool running);
+  void setPlotZero(int plotZero);
+  int  getPlotZero();
+  void setPlotGain(int plotGain);
+  int  getPlotGain();
+  void SetCenterFreq(int f);
+  qint64 centerFreq();
+  void SetStartFreq(quint64 f);
+  qint64 startFreq();
+  void SetFreqOffset(quint64 f);
+  qint64 freqOffset();
+  int  plotWidth();
+  void setNSpan(int n);
+  void UpdateOverlay();
+  void setDataFromDisk(bool b);
+  void setTol(int n);
+  void setBinsPerPixel(int n);
+  int  binsPerPixel();
+  void setFQSO(int n, bool bf);
+  void setFcal(int n);
+  void setNkhz(int n);
+  void DecodeFinished();
+  void DrawOverlay();
+  int  fQSO();
+  int  DF();
+  int  autoZero();
+  void setPalette(QString palette);
+  void setFsample(int n);
+  void setMode65(int n);
+  void set2Dspec(bool b);
+  double fGreen();
+  void setLockTxRx(bool b);
+  double rxFreq();
+  double txFreq();
+//  void updateFreqLabel();
+
+signals:
+  void freezeDecode0(int n);
+  void freezeDecode1(int n);
+
+protected:
+  //re-implemented widget event handlers
+  void paintEvent(QPaintEvent *event) override;
+  void resizeEvent(QResizeEvent* event) override;
+  void mouseMoveEvent(QMouseEvent * event) override;
+
+private:
+
+  void MakeFrequencyStrs();
+  void UTCstr();
+  int XfromFreq(float f);
+  float FreqfromX(int x);
+  qint64 RoundFreq(qint64 freq, int resolution);
+
+  QPixmap m_WaterfallPixmap;
+  QPixmap m_ZoomWaterfallPixmap;
+  QPixmap m_2DPixmap;
+  unsigned char m_zwf[32768*400];
+  QPixmap m_ScalePixmap;
+  QPixmap m_ZoomScalePixmap;
+  QSize   m_Size;
+  QString m_Str;
+  QString m_HDivText[483];
+  bool    m_Running;
+  bool    m_paintEventBusy;
+  bool    m_2Dspec;
+  bool    m_paintAllZoom;
+  bool    m_bLockTxRx;
+  double  m_CenterFreq;
+  double  m_fGreen;
+  double  m_TXfreq;
+  qint64  m_StartFreq;
+  qint64  m_ZoomStartFreq;
+  qint64  m_FreqOffset;
+  qint32  m_dBStepSize;
+  qint32  m_FreqUnits;
+  qint32  m_hdivs;
+  bool    m_dataFromDisk;
+  QString m_sutc;
+  qint32  m_line;
+  qint32  m_hist1[256];
+  qint32  m_hist2[256];
+  qint32  m_z1;
+  qint32  m_z2;
+  qint32  m_nkhz;
+  qint32  m_fSample;
+  qint32  m_mode65;
+  qint32  m_i0;
+  qint32  m_xClick;
+  qint32  m_TXkHz;
+  qint32  m_TxDF;
+
+private slots:
+  void mousePressEvent(QMouseEvent *event) override;
+  void mouseDoubleClickEvent(QMouseEvent *event) override;
+};
+
+#endif // PLOTTER_H
diff --git a/q65w/q65w.rc b/q65w/q65w.rc
new file mode 100644
index 000000000..96895aada
--- /dev/null
+++ b/q65w/q65w.rc
@@ -0,0 +1 @@
+IDI_ICON1       ICON    DISCARDABLE     "wsjt.ico"
diff --git a/q65w/resources/CALL3.TXT b/q65w/resources/CALL3.TXT
new file mode 100644
index 000000000..d4c2e3532
--- /dev/null
+++ b/q65w/resources/CALL3.TXT
@@ -0,0 +1,5708 @@
+//ms 3.0 2009-07-01 01:15:53 UTC _WSJT_CALL3 > CALL3.txt format for WSJT-PROGRAM by K1JT
+//MS-EME-WSJT-Version 2009-07-01 01:15:53 UTC an exerp of VHF-DATABASE on MMMonVHF
+//UPDATES welcome: http://www.mmmonvhf.de/dbase.php - 73 the Team of MMMonVHF
+2E0ZWW,JO01ED,,,M3ZWW,,ICOM IC-820H  FT897D,04/09
+2I0BIW,IO64PF,,,MI3IYA,,Yaesu ft-847,06/07
+2M0EXD,IO88FO,,,,,,04/04
+3B9C,MH10QG,EME,,,,,01/03
+3D2LR,RH92,EME,,
+3DA0HL,KG53MS,EME,,EXPEDITION,,,03/07
+3V8BB,JM56ER,EME,,,,,06/02
+3V8SS,JM55GX,EME,,Expedition,,144: 16JXX and 1kw,12/05
+3X5A,IJ39JJ,EME,,EXPEDITION,,144: 2M28XPOLs and a KW,11/07
+3Y0X,EC41RE,EME,,Expedition,,144: 4x 9el 350W,02/06
+4F2KWT,PK06CI,EME,,,,50: 7el 650W,07-06
+4J1FS,KP40,,,Expedition,,,01/90
+4K6D,LN40VK,EME,,,,,01/94
+4N7AX,KN05PC,,,,,144:  200 W  2x10el 9BV,08/00
+4O3T,JN92HJ,EME,,,,144:  IC706  Skysar 1kW FM-PA 3x 10 el at 10m abt 700m asl,08/06
+4O4AR,JN94AS,,,= YU4AR,,144: TR9130 250W 10el PA0MS-ant Preamp,11/02
+4O4D,JN94BR,,,,,144: 300W  11el,05/97
+4O9T,JN94XC,,,YU7AAA  YT7C,,,11/08
+4S7CCG,MJ96WV,EME,,,,144: 4 x 8el and 300W,07/06
+4U1ITU,JN36BF,EME,,div. Activities,,144: 8el  600W,11/00
+4X1IF,KM72KA,EME,,,,,07/05
+4X4IF,KM72KD,EME,,,,,05/00
+4X6UJ,KM72,EME,,,,,01/00
+4Z5AO,KM72MW,,,ex UA1AKZ,,ft-857 ic-746,07/05
+4Z5BS,KM71JW,,,,,,07/95
+5A7A,JM62MU,EME,,Expedition,,144: 2x 10el 7ZB 1KW  - 432: 9wl ant 200W,03/07
+5B4AGY,KM64EV,,,ex G3RSI  5A3CAD  VO2AN,,FT-726R plus 1kW Linears and head amplifiers for 6M and 2M and 100w for 70cms,01/05
+5B4AIA,KM65GD,EME,,EXPEDITION,,144: 2MXP32 6WL  500W,09/07
+5B8AD,KM64TV,EME,,,,144: 2x16 el 14.3dB 230w,03/05
+5B8AV,KM64FT,,,ex 5B/G1JJE,,,05/04
+5C8M,IM64PD,EME,,Expedition,,144: IC706 MKIIG PA 1KW  preamp. 2x 3WL yagis,10/00
+5F3COM,IM52JJ,EME,,= SV8CS,,,09/06
+5H1HP,KI93RV,EME,,EXPEDITION,,144: 14el XP 1.2KW,05/09
+5H1HP/KI94,KI94,EME,,EXPEDITION,,144: 14el XP 1.2KW,05/09
+5H1MS,KI93RV,EME,,EXPEDITION,,144: 14el XP 1.2KW,05/09
+5H1MS/KI94,KI94,EME,,EXPEDITION,,144: 14el XP 1.2KW,05/09
+5P8Z,JO55RT,EME,,,,144: IC706  GS31b  1KW  4x8el,04/07
+5P9S,JO54TU,EME,,= OU9S  OV9S  5Q9S OZ9S,,See www.oz9s.dk (click rig) for actual and updated info,05/07
+5Q2M,JO65AN,EME,,= OZ1PIF,,FT847 50: 100W 4el - 144: 350W  2x 13el  Preamp,04/07
+5Q9S,JO54TU,EME,,= 5P9S  OU9S  OV9S  OZ9S,,See www.oz9s.dk (click rig) for actual and updated info,05/07
+5R8EM,LH42WX,EME,,EXPEDITION,,,09/08
+5T5JC,IL30AM,EME,,,,,01/94
+5T5SN,IK28AC,EME,,QRT,,,09/05
+5X1D,KJ60EM,EME,,,,300W- 17el,03/97
+5X1EME,KJ60gh,EME,,
+5Z4NU,KI88IP,,,,,144: 25W 9el,09/05
+6F75A,DL81UU,EME,,= XE2AT,,144: IC820 400W 4x 9el,01/07
+6I2AT,DL81UU,EME,,= XE2AT,,144: IC820 400W 4x 9el,01/07
+6V7A,IK14LK,EME,,Expedition,,144: 2 times BQH8B cross yagis  14.5 dBd  and 500w SSPA,05/06
+6Y4A,FK18AA,EME,,Expedition,,144: 2x 2MXP28 cross pol ant.  1KW,10/00
+7J0AAD,PM97OS,EME,,,,144: 1KW  4x19el 2x18el MGF1801,01/00
+7J6CCU,PL36VI,EME,,,,50: TS570 or IC821,04/02
+7K1MFR,PM95SP,,,,,,01/03
+7K3LGC,PM95RI,EME,,,,,09/06
+7L1RLL,PM95SO,,,,,,01/03
+7M1QMY,PM95VQ,,,,,,02/09
+7M2PDT,QM05EK,EME,,,,432: 16x14el 1-5KW,11/06
+7Q7JE,KH76DW,EME,,= ZS6JDE,,144: 2x 9el 350W,07/06
+7S2AT,KP03DU,,,= SK2AT,,,03/06
+7W0AD,JM16JR,,,,,,11/04
+7X0AD,JM16JR,,,,,144: 9el 200W,11/04
+7X2VV,JM16WJ,,,,,,07/02
+7Z1SJ,LL25WG,EME,,,,144: 2x 13el,02/07
+8J1AXA,QM05DF,EME,,SPECIALCALL,,,05/08
+8N1EME,QM06IQ,EME,,Expedition,,,03/07
+8S4BX,JO79SD,EME,,,,,10/99
+8S6T,JO68SE,,,ALSO SM6WET & SG6T,,FT650 847 920,11/08
+9A1AAX,JN65TF,,,,,144: 16el 500W,04/01
+9A1CAL,JN86EL,,,,,144: IC271  FT736  FT225RD  4CX1500A  2x17el  BF981,11/04
+9A1CBE,JN86BE,,,,,,01/96
+9A1CCB,JN85LN,,,ex YU2CCB- YT2C,,,03/01
+9A1CCY,JN85OO,EME,,ex YU2CCY,,,08/01
+9A1CDD,JN85LW,,,,,,01/91
+9A1CEU,JN75RO,EME,,,,144: 80W 2x18el 5.5wl 4x11el -  432: 10W 38el,01/99
+9A1CHI,JN95JG,,,ex YU2CHI,,,01/94
+9A1CHL,JN83,,,,,,03/98
+9A1CMS,JN86DM,,,,,,05/07
+9A1DFG,JN85EL,,,,,,07/96
+9A1EZA,JN86HG,EME,,ex YU2EZA,,IC271E 144: 2x4CX250b MGF1302 10mM2,11/01
+9A1KDE,JN95FQ,,,,,,01/94
+9A1RGC,JN75XT,,,,,,01/03
+9A1Z,JN86FJ,,,ex YU2SOM YT2SOM 9A3HZ,,IC706  DB6NT 1W ON 3CM,01/05
+9A2AE,JN86HF,,,,,144: 8x24el 1KW,12/08
+9A2AT,JN86LL,,,,,,01/03
+9A2DI,JN95,,,,,,06/95
+9A2EU,JN85JO,,,,,,07/96
+9A2GH,JN75IE,,,,,,01/03
+9A2KK,JN85KV,,,,,,11/01
+9A2KL,JN74OC,,,,,,08/07
+9A2MF,JN65SL,,,YU2SBF  YU2MF,,YAESU  FT-480 r,05/07
+9A2MK,JN75XU,EME,,,,,01/94
+9A2PT,JN86,EME,,,,,11/01
+9A2RD,JN65TF,,,,,144: 2x16el 1KW,05/04
+9A2SB,JN95GM,,,ex YU2SB,,,06/99
+9A2TE,JN85KK,,,,,144: ft225rd  ts690s  100w,03/06
+9A2TK,JN76WA,EME,,YU2SSU  YU2TK,,TS2000X   FT290RII  FT7,07/07
+9A2U,JN75RO,EME,,,,144: 80W 2x18el 5.5wl 4x11el,01/99
+9A2VR,JN95FQ,,,,,,06/07
+9A3DF,JN86HG,,,,,,04/03
+9A3GE,JN75EI,EME,,YU2RNF,,TR7 FT817 FT857 IC703 HOME MADE TRANSV. PA 4CX250B  4x 8el,08/07
+9A3JH,JN75AD,EME,,,,,01/06
+9A3JI,JN86FJ,,,= 9A4K,,50: FT-101ZD+FTV650- IC706mk2g  7ele M2,05/02
+9A3LN,JN95IN,,,,,,06/08
+9A3MR,JN83FM,,,,,,08/00
+9A3PA,JN85EG,EME,,,,FT736r -  50: 10W 5el - 144:  8x13el  800W  MGF1302 - 4320: 300W 4x19el MGF1302,08/04
+9A3TF,JN85,,,,,,08/96
+9A3TU,JN95EH,,,YT2TU,,TS 830s + transverter home made 6m/2m 10W,06/08
+9A3W,JN74OC,,,ex 9A1RKV,,IC706,09/02
+9A3ZA,JN75RO,,,,,144: 100W 12el,08/00
+9A4C,JN85LN,,,,,,03/01
+9A4CK,JN86,,,,,,08/96
+9A4EW,JN95KG,EME,,,,144: 200W  10 el. BVOpt,06/08
+9A4FW,JN95JG,EME,,,,144: 600W  4x17el F9FT  MGF1302,08/00
+9A4K,JN86FJ,,,= 9A3JI,,50: FT-101ZD+FTV650- IC706mk2g  7ele M2,05/02
+9A4NF,JN73VS,,,,,50: 50W 6el 144: 400W  MGF1302  4.5wl,06/08
+9A4VM,JN85FS,,,,,,05/07
+9A4WY,JN74,,,,,144: 50W,08/98
+9A5CW,JN65UF,,,EX 9A5AEI,,,09/07
+9A5D,JN92BP,,,Expedition,,,08/99
+9A5WA,JN85LN,,,,,,06/96
+9A5Y,JN85OO,,,SpecialCall,,144: 800W   16x5el,10/99
+9A6PSM,JN75EJ,,,,,FT817 FT225 IC-7000 IC-202,10/07
+9A6WW,JN86EL,,,,,144: IC271  FT736  FT225RD  4CX1500A  2x17el  BF981,09/06
+9A7W,JN85PO,,,ex YU2QS,,,06/06
+9A90CBD,JN85OO,EME,,SpecialCall,,,07/97
+9A9B,JN75XU,EME,,,,144: 4x 16el  1KW,09/06
+9A9PP,JN85IW,,,9A7PSN,,Yaesu FT-857D,05/09
+9H1BN,JM75GU,EME,,,,,09/99
+9H1BT,JM75EU,EME,,,,,01/94
+9H1CD,JM75FV,EME,,NOT qrv MS nw (01/01),,144: TS850  LT2S  1KW  2x4.4lb DJ9BV  MGF1302,01/01
+9H1CG,JM75,,,,,144: FT902DM FTV250 100W 17el,11/01
+9H1ES,JM75FV,EME,,,,,09/99
+9H1GB,JM75FU,EME,,,,144: TS780 100W 19el,08/03
+9H1LO,JM75EW,EME,,9H5LO,,IC746 - IC706 - FT817 - TH-F7E,12/08
+9H1PA,JM75FV,EME,,9H5O,,144 Mhz: TS711 4x10el (3wl) crossed yagi GS35b  - 50 Mhz - 8el yagi 2wl,09/07
+9H1PI,JM75FU,,,ex 9H5PI,,50: 100W 5el,03/03
+9H1TX,JM75FU,EME,,,,50: 8el yagi 100W - 144: IC7400 GS35 1000 W 2x 15el Xpol LNA145MKII,08/06
+9H1XT,JM75GV,,,,,,08/02
+9H3LF,JM76,,,Expedition,,,01/91
+9H3ZZ,JM76CB,EME,,Expedition,,,01/93
+9J2JD,KH46MM,EME,,Expedition,,144: 2M7 antenna,05/06
+9K2YM,LL48CJ,EME,,,,144: 2M5WL  450 W,06/07
+9K48NLD,LL48CJ,EME,,SPECIALCALL,,144: 4x 13el 300W,02/09
+9M2BV,OJ30UD,EME,,,,,01/94
+9M6YBG,OJ85BW,EME,,,,2x 10el 50w,10/08
+9N7JO,NL27QR,EME,,YU7EF,,,04/07
+9W2QC,OJ03TB,EME,,,,144: 2x 10el Vert  70 W,10/08
+9X4V,PM95RI,EME,,SpecialCall,,,09/06
+A22BW,KG38SU,EME,,,,,01/94
+A35RS,AG28HV,EME,,= ZL1RS,,,12/08
+A43DLH,LL93,EME,,EXPEDITION,,,09/08
+A43EME,LL93,EME,,EXPEDITION,,,11/08
+A61Q,LL75SJ,EME,,,,144: 4x 13el 700W,10/06
+A71AW,LL55RH,EME,,,,144:  2XP20 1KW,07/06
+AA0BR,DN70KN,,,,,,01/03
+AA0BW,EM29PS,,,,,,04/03
+AA0DQ,EN12,,,,,,01/03
+AA0EN,EM29,,,,,,01/03
+AA0P,DM79,,,,,,01/03
+AA1OV,FN43GE,,,,,,04/03
+AA1VL,FN42HN,,,,,,04/03
+AA1YN,FN43GC,EME,,,,144: 4x 16el 100W,10/06
+AA2GF,FN02,,,,,,01/03
+AA2WV,FN12BV,EME,,,,144: 4x 17el 400W,10/06
+AA3NM,FM19JE,,,,,,01/03
+AA4FQ,EM67LQ,EME,,,,1500W,01/05
+AA4SC,EM94MX,EME,,,,,05/08
+AA5C,EM13SE,,,,,FT-990  FT-736R  Homebrew Microwave Gear,10/07
+AA5CH,EM35GK,,,,,,01/03
+AA5IB,EM12,,,,,,01/03
+AA5WL,EM32,,,,,,01/03
+AA5WQ,EM26BC,,,,,,01/03
+AA6GS,DM12,,,,,,01/03
+AA6HA,DM43CN,,,,,144: 500W  9el M2,01/01
+AA6IW,CM97VI,,,,,,01/03
+AA6WI,CM97,,,,,,01/03
+AA7A,DM43AO,EME,,,,144: 8877 1.5KW  6x13el (DJ9BV),09/06
+AA8BC,EN90FE,,,,,,01/03
+AA8HS,EN81,,,,,,01/03
+AA9D,EN52,,,,,,01/01
+AA9IL,EN62AI,,,,,,01/03
+AA9MY,EN50FM,EME,,,,144: Yaesu 847  IC910H  IC706MKIIG 2x 18XXX M2,11/05
+AB0SD,EN30LL,,,,,,01/03
+AB0TJ,DN60FN,,,,,,01/03
+AB3BK,FN10PD,EME,,,,144: 17el 400W,09/06
+AB4CR,EM77,,,,,,01/03
+AB4OO,EM81,,,,,,01/98
+AB5F,EM46FG,,,KG7CV,,KENWOOD TS-2000--VIKING VALIANT--HQ-170,05/07
+AB5IG,EM12,,,,,,01/03
+AB9FN,EN53,,,,,,01/03
+AC1H,FN33XJ,,,,,144: 300W 13dbD yagi,01/01
+AC1T,FN32,,,,,,01/03
+AC3A,EM28QV,EME,,,,FT847  144:  4x 9el M2  8877  1-5KW,08/05
+AC4TO,EM70,,,,,,02/05
+AC5OG,EM10,EME,,,,,03/05
+AC5TM,EM40LL,EME,,,,144: 2M5 400W,03/05
+AD4EB,EM65NS,,,,,,01/03
+AD4TJ,FM08LE,EME,,,,IC706MKIIG 144: 4x 15el K1FO 700w JT--KW+ CW,10/08
+AD6A,CM97AG,,,,,,01/03
+AD6FP,CM87WI,EME,,,,,01/04
+AD6P,EM18,,,,,,01/03
+AE0G,EN10PS,,,,,,01/03
+AE0W,DM78,,,,,,01/03
+AE4RO,EL97TG,,,,,,09/01
+AE5K,EM36PC,,,,,,01/03
+AE6EQ,CM95OH,EME,,,,432: 16x 14el 700W,09/05
+AF1T,FN43ED,EME,,,,,01705
+AF4IF,EL95US,,,KD4GKO,,Yaesu,08/07
+AF4O,EM55LK,,,,,,01/03
+AF6O,DM14EJ,EME,,ex G3PRM,,144: 4x 2M12  800W  - 432:  4x 9wl 1500W,01/06
+AF9R,EN52XB,,,,,,01/03
+AG2A,FN30FR,,,,,,01/03
+AG4QE,FM04KX,,,,,,01/03
+AG4ZE,EM83WM,EME,,,,,07/06
+AG9Y,EN40,,,,,144: 160W  13el,01/01
+AH6EZ,EN51SW,,,,,,12/01
+AH6LE,CN85NK,,,,,,01/03
+AH8A,AH45OP,,,,,,01/03
+AI1K,FN41IL,,,,,,01/03
+AI3W,FM19PW,,,,,,01/04
+AI8Z,DM79,,,,,,01/03
+AJ0E,EM29RD,,,,,,01/03
+AJ6T,CM87XK,,,,,144: 200w 10el   50:100w 6el,05/07
+AM25DXU,JN11CM,EME,,SpecialCall,,,01/92
+AN3JT,JN01UI,EME,,SPECIALCALL,,IC910 + SP2 + 4x13B2 + GS35B,08/07
+AN6SA,JM19IR,EME,,SpecialCall,,144: FT847  2x4CX250 2x17el -  432: 4x33el,01/01
+AO4WT,IN80KN,,,,,,08/08
+AO5TT,IM99SL,,,= EA5TT,,,08/08
+AO6SA,JM19IR,EME,,SPECIALCALL,,,09/07
+AO6VQ,JM19HN,EME,,SPECIALCALL,,144:  2KW  MGF1302  8x17el M2    432: 21el 115w   1296:  55el 10w,12/07
+BA4TB,PM01EO,EME,,EXPEDITION,,IC746 + HL250PA (running 250W) 2x 10ele Yagi,03/08
+BD1AX,PL04VQ,EME,,,,144: 2wl Yagi 350W,04/08
+BV6GU,PL03CD,EME,,,,144: 250W 20ele cross yagi,05/06
+BX1AD,PL04VQ,EME,,,,144: 11 Xpol 100W,03/08
+BY1QH,ON80DA,,,,,,01/03
+BY4RRR,OM92JA,EME,,,,144: 2x13 ele  100W  432:  2x 17 ele 70W,02/08
+BY4RSA,OM91,EME,,= DL3OCH,,,05/07
+BY7PP,OL63NA,EME,,EXPEDITION,,50:  2x 6el 100W 144: 2x9el 300W Preamp SP-2000 432: 2x20el 70W,02/08
+BY9AA,OM44LL,EME,,,,144: IC920  2 x 15 XP  350W,03/08
+C31MS,JN02UN,,,Expedition,,144: 2Stn a� 800W  2x17el  or 11el,05/97
+C31RC,JN02SK,EME,,Expedition,,,01/89
+C31TLT,JN02TL,EME,,Expedition,,144:  4x24el  2x4CX250  900W,08/01
+C56EME,IK13ql,EME,,
+C6AIE,FL16IQ,EME,,= WZ8D,,144: TS2000 250W 13el,03/06
+C91CF,KG64HB,EME,,EXPEDITION,,,04/08
+CN8KD,IM63KX,,,,,144: 10W  11el,06/03
+CN8LI,IM63NX,EME,,,,50: IC746 250W 6el - 144: 2x17elts- 250w- lna- 1/2' lowloss cable- Az+Elevat,10/07
+CN8ST,IM64NA,EME,,QRT (is nw PA....),,,06/98
+CN8TW,IM63EN,EME,,,,144: 4x 13el,01/06
+CO2OJ,EL83TD,,,,,50: 100W 4el - 144: 110W 9el,06/06
+CQ14HZE,IM57NH,,,SpecialCall,,,02/04
+CS0DIZ,IM69,,,SpecialCall,,,01/89
+CS1GDX,IM59IB,,,SpecialCall,,144: IC706MK II G  200W  12el,11/03
+CS6ARC,IM59RX,,,SpecialCall,,,11/01
+CT1ANO,IN51RE,,,,,144: TS2000 4cx250B 1x16JXX2 SP 2000,06/09
+CT1BYM,IM58SM,EME,,,,,05/07
+CT1DHM,IN61CB,EME,,,,,04/07
+CT1DIZ,IM58KP,,,,,,06/03
+CT1DMK,IN50QP,EME,,,,144: 1-5KW  4x11el DL6WU,03/99
+CT1DNF,IN50QP,,,,,144: IC821H  200Watts  2x12ele DL6WU Preamp,12/04
+CT1EKD,IM59IB,EME,,,,144: IC706 MK II G  400W  4 x 17 el  432: 300W + 10wl Yagi,08/08
+CT1EWA,IM59NS,EME,,,,,06/09
+CT1FAK,IN50QO,EME,,,,144: FT1000D  FT736R  200W  4x13el DL6WU  MGF1302,05/03
+CT1FFU,IM59KJ,EME,,,,,03/05
+CT1FJC,IM57OC,,,= G4MAW,,TS-2000 5el yagi 6 metres. 4el yagi on 4metres,03/07
+CT1FOH,IN50RA,,,,,50: 6el - 144: 200W 4x 12el MGF1302,04/04
+CT1HZE,IM57NH,,,= DL8HCZ,,,12/05
+CT1WW,IN61GE,,,SilentKey,,,11/96
+CT2FEY,IN61OT,,,,,,07/07
+CT2GUR,IM59ML,EME,,,,IC-910H+ 2x17el+LNA+1KW,06/09
+CT2HSN,IN61CB,,,,,,03/07
+CT2HSO,IN61CB,,,,,,06/07
+CT2IET,IN60GD,,,,,FT100D,11/02
+CT2IWG,IN51OJ,,,,,144: IC706 100W 9el,02/05
+CT2JIB,IM58MO,EME,,,,IC-910H + IC-706MKIIG + IC-746,05/08
+CT4KQ,IN60BP,,,,,,03/98
+CU2E,HM77UD,EME,,,,144:  1KW  28 Xpol,06/07
+CU2IJ,HM77ES,,,,,,04/04
+CU3EQ,HM68KP,,,,,KENWOOD TS 2000 - TS 570,04/08
+CX5BBF,GF15WM,EME,,,,432: 3m dish with 4 dipole,08/07
+CX5CJ,GJ15,EME,,,,144: 4x 17el 1KW,02/02
+CX5IC,GF07WQ,EME,,,,,03/08
+CX5UR,GF26TS,,,CX2AAE - CX3UU - CX1JO,,KENWOOD TS430 - IC 241 - FT 2500,02/08
+CX9BT,GF15WK,,,,,,01/03
+CY9SS,FN97WE,EME,,Expedition,,144: 400W single yagi,01/05
+DA0BV,JN58VF,,,SpecialCall,,,01/94
+DA0DD,JO61,EME,,SpecialCall,,,05/06
+DA0HEL,JO34WE,,,EXPEDITION,,,08/08
+DA0NRW,JO41GV,,,SpecialCall,,144: 3CX400A7  4x14el  or 17el,12/96
+DA0WAE,JO41GU,,,SpecialCall,,,12/04
+DA0Y,JN48MB,EME,,,,,04/09
+DA0YFD,JN59MO,EME,,,,,05/07
+DA4RG,JO31FG,,,= GW8VHI,,,11/95
+DB1PB,JO30UE,,,,,,12/01
+DB2WD,JN39VV,EME,,,,,04/96
+DB3BW,JO42AC,EME,,,,HF: TS520 - 144/432: FT726r Tube PA 2m 350W 70cm 150W  6m trv8W,06/09
+DB3LA,JO31JK,,,,,,07/02
+DB4ET,JO31,,,,,,11/02
+DB4LL,JO54SM,,,,,144: FT221 20W 4el,08/01
+DB4VQ,JN39MF,,,,,,01/94
+DB5ML,JN58OI,,,,,,09/03
+DB5WC,JN49EJ,,,,,60W 11el Preamp,12/03
+DB6BX,JO32OK,,,SilentKey,,,11/96
+DB6NT,JO50UI,,,,,,01/03
+DB6RO,JN58QB,,,,,,12/03
+DB7OB,JO52IJ,,,,,144: FT221 100W 11el,08/00
+DB8AT,JO51CP,,,,,,05/04
+DB8WK,JO33XN,,,,,144: 200W 2x11El. -  432: 300W 2x23El.,03/06
+DB8YL,JO41EV,,,,,,12/99
+DC0KK,JO41KQ,,,,,,03/08
+DC1ECD,JO31MH,,,,,,10/04
+DC1MUS,JN69EP,,,,,,11/02
+DC1MWB,JN58,,,,,,04/05
+DC2IP,JN49FD,,,,,144: IC706 max. 50W 6el,08/08
+DC2JR,JO64CA,,,,,,11/01
+DC2MW,JN58IV,EME,,,,144: 4x 9el 300W,09/07
+DC3VM,JN39KK,,,,,,12/99
+DC3VW,JN39KJ,,,,,,10/04
+DC3ZR,JN68CV,,,,,,01/03
+DC5JQ,JO31BC,,,,,,10/07
+DC6DY,JO53GO,,,,,,06/09
+DC6GF,JN48OC,,,,,IC 706 MKIIG PreAmp,01/05
+DC6KI,JO30IL,,,NOT qrv MS nw (01/01),,,04/05
+DC6RN,JN59WK,,,,,144: 12el  PA GS35,04/09
+DC7OH,JO62OK,,,,,,01/01
+DC7UT,JO31NJ,EME,,,,144: 4x17el  500W,03/01
+DC9UP,JN39QN,EME,,F5VKQ,,,01/09
+DC9YC,JO31QK,,,,,,10/07
+DD0NM,JN59NI,,,,,144: IC 910 100W 2x11 el Yagi,08/07
+DD0VF,JO60UX,EME,,,,144: 550W-CW 250W-digi 4x8el MGF1303 (JO61WA: 100W 5el BF998),06/09
+DD1JN,JO50DJ,,,,,144: 600W 11el Preamp - 432: 21el 200W VV - 1296: 55el 10W VV - 2320: 80el 1W,04/02
+DD1WKS,JN39KK,,,,,,01/01
+DD2KR,JO30FQ,EME,,,,FT1000 144:  LT2S 3CX800A7 Preamp  17ele M2  432: LT70S 3CX800A7 Preamp 2x39el M2,10/07
+DD2UJ,JO61WD,,,,,,10/04
+DD3DX,JO31TN,,,,,,07/01
+DD3SP,JO72EN,,,,,50: 5el - 144:  FT847  4CX250  17el F9FT MGF1302 - 432: 21el,02/04
+DD5DX,JO61CA,,,,,144: 180Watt 2x17el Preamp,07/04
+DD6UBS,JO41AH,,,,,144: TM255 MGF1302 180W 11El F9FT - 432: TM455 MGF1302 40W,10/04
+DD7PC,JN49AX,EME,,,,,05/07
+DD9SQ,JN59BH,,,,,,07/98
+DF0AK,JN49EA,,,,,,07/97
+DF0AW,JO31MG,EME,,,,FT736 144: 800W 2x 11el  432: 200W 4x 23el  1296: 23el 10W,09/07
+DF0BV,JN68AH,EME,,,,144: 2x17el 750W,04/05
+DF0CI,JO51CH,,,,,,11/03
+DF0CK,JO50AN,EME,,= DK0R,,144: 500Watt 2x11el,09/05
+DF0EME,JO40,,,,,,01/03
+DF0LBO,JO53CT,,,,,,05/02
+DF0MMO,JN49JX,,,,,144: 200W 11el,11/00
+DF0MTL,JO61JF,,,,,,07/05
+DF0SAX,JO61VC,,,,,144: 20W 13el,12/98
+DF0SL,JN59OI,,,,,,08/08
+DF0WD,JO42FD,,,,,144: 8874 250W 2x9el - 432: 3CX800 4x18el,02/08
+DF0WF,JO62VT,,,,,,01/05
+DF1AN,JO63SX,,,ex DL1KUS,,,01/00
+DF1BN,JO31GD,,,,,144: IC821 HLV-300  300Watts  MGF 1302  2x17ele F9FT,07/01
+DF1CF,JN57FP,EME,,,,144: CF300  3CX800  4x13el (3lb),12/04
+DF1GL,JN47CO,,,,,144: IC 746  300W  8el,04/07
+DF1HF,JO43WJ,EME,,,,144: 6el  432: 19el   1296: 44el,09/07
+DF1IAZ,JN49LD,,,,,50: 3 el -  144: 150W  2x10el  MGF1302,07/01
+DF1OC,JO52,,,,,,01/93
+DF1SO,JN48PO,,,,,144: homemade 200W,08/98
+DF1VB,JO31SK,EME,,,,,03/07
+DF1ZE,JN49,EME,,,,,01/94
+DF2CQ,JN58SE,,,,,,10/04
+DF2NU,JN58XA,,,DL0UMK,,TS-790S + PA + Preamp + 11 ele yagi,10/07
+DF2OOO,JO41RF,,,SpecialCall,,IC820H 144: 250W  2x11el- 432: 130W 2x23el Preamp,09/99
+DF2UJ,JO61QH,,,,,,02/02
+DF2ZC,JO30RN,EME,,,,144: TS2000 LT2S 2xGU74b 750W MGF1302 4x2M18XXX (21 dbd),04/07
+DF3FJ,JO40CC,,,,,,01/93
+DF3RU,JN59UL,EME,,,,,03/05
+DF4IP,JN49HE,,,,,,08/08
+DF4MAA,JN58WH,EME,,,,,05/97
+DF4UE,JN48RR,,,,,432:  4x27el  600W,09/03
+DF4WC,JN49KV,,,DB4PN,,TR9000-IC490,09/08
+DF5BN,JN49GU,,,,,,08/99
+DF5DE,JO40CX,,,,,,12/06
+DF5HC,JN49HT,EME,,,,50: 4 Ele  - 144: 4x8Ele  500W - 432: 4x17Ele  500W,05/09
+DF5JJ,JO43XO,,,ex EA6/DF5JJ + ex EA6ADW,,432: 700W 19el - 1296: 500W  26el - 10368: 20W  dish,03/04
+DF5KB,JO72CM,,,ex DD6BKR,,FT847 - 144Mhz 750 wtts  14 el Longyagi -  50Mhz  7el  by DK7ZB,08/06
+DF5NK,JN59PM,,,DB6NJ,,144: 11el 600W alt. 15el 750W(JN59OP)  432: 19el 500W,06/09
+DF5NK/P,JN59OP,,,DB6NJ,,144: 11el 600W alt. 15el 750W(JN59OP)  432: 19el 500W,06/09
+DF6HT,JO64FG,,,,,,12/06
+DF6LO,JO52CE,,,,,,01/93
+DF6MU,JN58WF,,,DL1ABD,,Elecraft k2 + XV144 + THP PA 160W,09/07
+DF6NA,JN49XS,,,,,432: 2x3CX800 4x30el,10/01
+DF6OB,JO42,,,NOT qrv MS nw (01/01),,,07/97
+DF6VW,JO42KH,,,,,,07/97
+DF6YL,JO31WS,EME,,,,,02/08
+DF7AP,JO51FI,,,,,,04/09
+DF7DJ,JO31UO,,,,,,06/97
+DF7IF,JN48DN,,,,,,01/03
+DF7IT,JN49IN,,,,,,10/04
+DF7KF,JO30GU,EME,,,,144:  16x18el  EME Pwr,12/04
+DF7OG,JO52BN,,,,,144: TS770E  4x150  16el,04/04
+DF7RG,JN68HG,EME,,,,,01/05
+DF8AA,JO60XX,,,ex DL2VAA,,144: 100W 17el,12/99
+DF8AE,JO41GX,,,,,,10/04
+DF8IK,JO30JT,,,,,144: 300W 11el  432: 400W 27el,01/05
+DF8LC,JO53GX,EME,,,,,08/99
+DF8PC,JO43RS,EME,,,,144: 100W 16el M2,03/06
+DF9CY,JO54AL,EME,,,,IC820H + 400w + 1x9ele 2.5wl full elevation + MGF1302,10/08
+DF9IJ,JN48CX,,,,,,01/03
+DF9KT,JO30GU,,,,,,11/95
+DF9KX,JO30FQ,EME,,,,FT1000 144:  LT2S 3CX800A7 Preamp  17ele M2  432: LT70S 3CX800A7 Preamp 2x39el M2,10/07
+DF9QT,JO30OR,,,,,144: 700W  11Ele,07/08
+DF9QX,JO42HD,EME,,,,,01/94
+DF9RJ,JN68GS,EME,,,,144Mhz: 1.8KW 4x17Ele.  -  432Mhz: 1KW 4x21Ele.  -  10Ghz: 5W 60cm Spiegel,03/06
+DF9YF,JO42GE,,,,,,12/03
+DG0CAL,JO31,,,,,,06/00
+DG0FE,JO62UN,EME,,,,FT736r  50: 25 watt 1x4el  - 144:  500W 4x17el - 432: 25 watt 2x21el - 1296: 10 watt 2x35el,04/08
+DG0KU,JO64AC,,,,,,01/03
+DG0KW,JO64MH,EME,,,,144: 2x 13el,01/05
+DG0OPK,JO50GQ,EME,,,,50MHZ Dipol - 144: 400W 17dBd MGF1302,12/08
+DG0TU,JO61TU,,,,,,08/97
+DG0WJ,JO60CV,,,,,,11/02
+DG1BA,JO43LB,,,,,,01/00
+DG1BHA,JO73DB,,,,,,09/07
+DG1CMZ,JO60DS,,,,,,08/01
+DG1IU,JN49FA,,,,,,08/96
+DG1LY,JO44RK,,,,,,03/04
+DG1TA,JN69GH,,,,,,02/01
+DG1VL,JO61WE,EME,,Y91VL,,144: 150W 9el MGF1302,05/09
+DG1YBO,JO32RG,,,,,144: FT225RD 80W 9el,09/04
+DG2BCP,JO43DC,EME,,,,144: 4x 3.6l DJ9BV+GS35 Pa 432: 4x 11l DJ9BV,03/06
+DG2DAA,JO62GU,,,,,,06/02
+DG2GEP,JN48DL,,,,,144:  200W 9ele Yagi,04/03
+DG2KBC,JN58MI,EME,,,,2x7ele FT847 GS35b LNA,06/09
+DG2NBN,JN59NR,,,,,FT847 144: 200W 2x3wl 9BV MGF1302 - 432: 300W  22el MGF1302,08/01
+DG2NZM,JN59IV,,,,,,06/03
+DG2SRL,JO61HN,EME,,,,144:  Transv. LT2S  18el M2 500W,04/06
+DG2TOM,JO62BM,,,,,IC706  50: 4el Yagi - 144:  15el M2 100W,08/05
+DG2VC,JO61VC,,,,,,01/04
+DG3FK,JO41PG,,,,,TS850+TV TS790  144: 17el 150W - 432: 4x17el 200W - 1296: 55el 100W,09/03
+DG3JO,JO31JK,,,,,TR-2000- TM-D700- DSPCOM,04/03
+DG3MDE,JN58EI,,,,,ICOM IC-7400   Inv.V  2x13 5m,09/07
+DG3XA,JO43WJ,,,,,144: 1500 Watt  7 ele M2,02/09
+DG4BH,JO30RX,,,,,,01/03
+DG4EK,JO31NI,,,,,,01/03
+DG4EKE,JO31NI,,,,,144: IC820h- SP2000- 17/11el- QQE06-40,01/97
+DG4NBI,JN59IF,EME,,,,,10/07
+DG5AAG,JO51,,,,,,07/01
+DG5CST,JO60DS,EME,,,,144: FT847 4x12el I0JXX GU74,08/07
+DG5HV,JO43XQ,,,,,,01/99
+DG5NEX,JN49WS,,,,,,01/93
+DG5OAF,JO51EP,,,,,144: FT736 400W  2x17el B2  MGF1302,11/99
+DG5SMY,JN49QA,EME,,,,144:  4x 17ele   432: 4x 23ele,08/04
+DG6JF,JO31,,,,,,10/01
+DG6LS,JO54AK,,,,,144:TS790 8877 4x17el - 432: 8x33el DJ9BV 3CX800A7,12/96
+DG6MBS,JO41AH,,,,,144: TM255 MGF1302 180W 11El-F9FT - 432: TM-455 MGF1302 40W,08/02
+DG6MGP,JN58WH,,,,,,01/95
+DG6SYL,JO53QP,,,,,144: 150W 11el 6WU Preamp - 432: 150W 23el Preamp - 1296: 10W 48el Preamp,03/02
+DG7MHR,JN57DR,,,,,,03/03
+DG7NT,JN47QQ,,,,,144: 2x10 el,02/08
+DG7OV,JO42VX,,,,,,10/04
+DG7RBV,JN59UM,,,,,,01/90
+DG7SF,JN48RR,,,,,144: FT736  300W  2x7el,06/01
+DG7SFL,JN49XF,,,,,144: 300 W + 10El. - 432: 150W + 2*21El.,01/04
+DG7TG,JO43SV,,,,,,06/05
+DG8DP,JN68BI,,,,,Yaesu FT-950 - Elecraft XV144 - VHF PA 4CX250B - 9 Ele. M2,04/09
+DG8NCO,JO50VH,EME,,,,144: 4 x 9 El + BEKO HLV-1500 ICOM IC7400 / 8 x 10 El + BEKO HLV 3000,05/09
+DG8NCY,JO50HA,,,,,,07/02
+DG8UAW,JN48BR,,,,,FT-847: 144MHz: 50W  7el Preamp  - 432MHz: 300W 16el Preamp,09/01
+DG8WH,JO43GH,,,DO6BH,,IC271E + FT897D,07/08
+DG8YFM,JO32MF,,,,,,03/06
+DG8YHH,JO32QI,EME,,,,,10/06
+DG9BEM,JO43CD,,,,,144: 350W 17el VV - 432: 300W 4x20el VV - 1296: 150W 1.2m dish VV,01/03
+DG9DAZ,JO31XB,,,,,144: TM255,11/01
+DG9GLA,JO40,,,,,,12/01
+DG9MAQ,JN58LJ,EME,,,,144: HA8UG-PA Gi46b  9 El. Tonna  SP-2000,12/07
+DG9NCX,JN59BT,,,,,,11/99
+DG9NFM,JO50QG,,,,,,01/94
+DG9YIH,JO32QI,,,,,144: 500W 17el,12/04
+DH0AAI,JO51AR,,,,,144: FT225rd PA 200W SP2000 4xDL7KM,08/02
+DH0GHU,JN38VN,,,ex DG2GHU,,144: TS850 LT2S HLV300 300W 11el,09/01
+DH0LS,JO61II,,,,,144: 4CX350 500W 2x17el Preamp - 432: 150W 21el - 10W Dish,12/03
+DH0MBH,JN58JD,,,,,,01/02
+DH0OAH,JO42OB,,,,,,01/03
+DH0X,JN49DE,EME,,,,,08/05
+DH0YAZ,JO41GG,,,,,,01/03
+DH1FM,JO61UD,,,,,144:  90W 10el - 1296: 1W 30el,08/02
+DH1HC,JO53FF,,,,,144: 13el 500W,10/05
+DH1KBB,JO20XX,,,,,,01/93
+DH1NAD,JN49,,,,,,01/93
+DH1NSP,JN59JX,,,,,,01/01
+DH1TW,JN48QM,EME,,,,144: 600W 10el,04/01
+DH2FAF,JO40,,,,,,01/93
+DH2OAA,JO42TU,,,,,144: IC275E 4x11el 6WU 500W,03/04
+DH2RS,JN47TT,,,ex DG3GSR,,144: 75W  11el  MGF1302,01/98
+DH2UAK,JO71FU,EME,,DG6IBO,,IC910+Preamp - 144: 4x 14el 500W - 432: 2x 29el 50W- 1296: 67el 10Ghz: 1.25m/10W,05/09
+DH3DP,JO31,,,,,,07/96
+DH3NAN,JO50NC,EME,,,,,12/97
+DH3YAK,JO31RS,EME,,DD4QI,,144: 4x 12el M2 750W,02/09
+DH4FAJ,JN49EX,EME,,,,IC910 IC7400 144: 4x 9el 1KW - 432: 4X15 50 watt,12/08
+DH5BS,JO63PX,EME,,EX DB3VE DH3VE,,FT857d IC970h   Pa's  Yagi's 50-432mc,07/07
+DH5FS,JO61UA,,,,,144: 9el 120W - 432: 4x21el,11/00
+DH5HS,JO31FF,,,,,FT847,11/02
+DH5HV,JO31AS,,,EX DB5VH,,144: IC746 Pro (100W only) with 2M12 Msquare @ 14m,07/08
+DH5LAN,JO44TN,,,,,,05/97
+DH5MK,JO41IV,,,DC3QB,,144: 100W 5ele. DK7ZB MGF1302,05/09
+DH6ICE,JO61XU,,,,,,07/04
+DH6JL,JO31NI,,,EX DG1JL,,50: IC-746   6M5X wid 360 view till Horizont,10/07
+DH7FB,JO62SM,,,ex DD6UFR,,144: FT847  GS35b  2x9el DK7ZB,08/05
+DH8BQA,JO73CE,EME,,,,,05/07
+DH8GV,JO33RL,,,EX DD0BI,,FT-100  300W,02/08
+DH8IAB,JO30NO,EME,,DC5IV,,144: 17el 750W,09/07
+DH8IAT,JN49GC,,,,,,12/07
+DH8WE,JO50TJ,EME,,DG0OLT,,,04/08
+DH8YHR,JO41GV,,,,,,01/03
+DH9FAG,JN49LX,,,,,,01/03
+DH9GCD,JN38VF,,,ex DG9GCD,,144: 11el 100W MGF1302,05/02
+DH9KAE,JO30BW,,,,,,01/93
+DH9NBB,JN49WS,,,ex DG9NBT,,,01/99
+DH9NFM,JO50RF,EME,,,,144: 2X17 M2 - 432: 2X38 M2 - 1296: 4x21 - 2320: 67ele - 10368: 60cm dish,06/05
+DH9OK,JO51AS,,,,,,06/04
+DH9OY,JO51AQ,,,ex DG5OAA,,,05/00
+DJ0QZ,JN49LM,EME,,,,144: IC746 8877 2x18el M2 MGF1302,11/01
+DJ0RU,JO31KM,,,,,,07/02
+DJ1JD,JO52CK,EME,,,,,08/00
+DJ1LP,JO64,,,,,,01/93
+DJ1OJ,JN58SE,,,,,144: 100W  2x11el SP2000,10/00
+DJ1SHF,JO73AM,,,,,144: TS711  120W  2x10el- Preamp,11/96
+DJ1TU,JN48TR,EME,,EX DL2SAD,,FT-897D,10/07
+DJ2GM,JN58SC,,,,,,04/06
+DJ2IA,JO71AO,,,ex DM2BHF,,144: FT736R  100Watt  9-ele-Yagi,08/02
+DJ2IE,JN48HV,,,,,,07/02
+DJ2JA,JO40IM,EME,,,,,04/04
+DJ2JS,JO31SL,,,,,,04/04
+DJ2KQ,JO30BW,,,DC8KQ  DH9KAE,,FT736R 2x14elm 144Mhz - 5elm 50Mhz,12/07
+DJ2QV,JN58UA,,,= M0RUN,,,06/09
+DJ2QV/P,JN57XX,,,,,,06/09
+DJ2XS,JO53AK,,,,,,01/95
+DJ3FI,JO31DI,EME,,,,,08/00
+DJ3HW,JO42LH,,,,,144: R2CW  750W  12elM2 MGF1302   432: 750W   28el.M2   1296: 220W 48el.,09/08
+DJ3JJ,JN48JS,EME,,,,TS2000x,01/09
+DJ3LE,JO44TN,,,= OZ7LE,,50: 25WERP 5el - 144: 2x17el 600W - 432: 2x21 100W,02/04
+DJ3MY,JN58QD,EME,,,,144: 600W  4x17el,08/99
+DJ3RU,JN58,,,,,,01/95
+DJ3ST,JN48,,,,,,01/03
+DJ3TF,JN59WK,,,,,,06/00
+DJ3VI,JO43VI,EME,,,,144: FT736r  2x11el  750W,02/06
+DJ4SO,JO44WG,,,,,,11/99
+DJ4TC,JO63PN,EME,,EX Y21TC  DL1NTC,,144: 380W 2x 11el -  432: 460W 2x 26el homemade,05/08
+DJ4UF,JO30BR,,,,,144: 300W  2x 8el MGF1302,09/04
+DJ5BV,JO30KI,,,,,144: 600W 11el MGF1302 - 432: 400W 20el  - 1296: 500W 4x20el - 10386: 15W 1m dish,07/02
+DJ5CL,JN58WH,,,ex DG1MHY,,,08/00
+DJ5DT,JN49IV,,,,,,05/02
+DJ5HG,JO53IU,,,,,,06/04
+DJ5MN,JN58WH,EME,,,,,06/96
+DJ5MS,JN68KS,,,SilentKey,,,10/99
+DJ5NV,JN59KN,EME,,ex DL9NDD,,,12/01
+DJ5RE,JN59WK,EME,,,,144: GS35b 250W  2x12el M2,03/04
+DJ5SQ,JN37UW,,,,,144: TS870 LT2S 600W 11el,12/97
+DJ6JJ,JO31LG,,,,,,12/01
+DJ6MB,JO30,EME,,,,,01/94
+DJ6OL,JO52AP,,,,,,05/08
+DJ6SN,JO30BU,,,DC6SN  DH6SN,,YAESU FT-736R -PA- 2m 2x17Ele -6m 5Ele --IC7000,07/08
+DJ6TN,JO54CF,,,,,,09/96
+DJ6WD,JO40AT,,,SilentKey,,,03/99
+DJ6XV,JO31LQ,,,,,,04/04
+DJ7AL,JO61VC,EME,,,,144: IC910   VLA 200   4el  F9FT,04/06
+DJ7FJ,JN48AG,EME,,,,,01/94
+DJ7IL,JO52LD,,,,,IC7400  IC910H  HLV120  homemade,04/07
+DJ7OF,JO51HQ,EME,,ex DG5OAE,,144: 6x17el CC 17B2  MGF1302  EME Pwr,04/05
+DJ7OQ,JO42WJ,,,,,144: TS 850  LT2S  PA 2x 4CX250  Preamp 0.5 dB  M2 5WL,06/09
+DJ7PW,JN48TR,,,,,IC7400  11ele Yagi,12/07
+DJ7RI,JO54CH,,,,,,12/03
+DJ7RST,JN59UK,EME,,,,144: 4 x 2MXP20 1k2  432: 5 x 20el 1k5,09/07
+DJ8ES,JO43SX,,,,,144: 300W 17el - 432: 300W  24el -  1296: 100W 49el - 2320: 10W 44el - 10368: 1.5W  60cm Parabol,08/03
+DJ8MS,JO63CT,EME,,EX DG5TR,,144: 750W 11el 7ZB Preamp   432: 300W 2x13el 7ZB Preamp,02/08
+DJ8OG,JO40MF,,,,,IC 275H  8el DK7ZB,04/04
+DJ8PB,JO44MC,,,SilentKey,,,01/93
+DJ9CS,JO54DG,,,,,FT-847  200W PA  50: 3 el    144:  9el,09/04
+DJ9EV,JN49SC,EME,,,,FT847/17 el yagi,02/09
+DJ9FG,JO52TD,,,ex DM2CFG Y23FG DL9ZFG,,HF: FT757GXII 10m Longwire - 50:  25W IRF610 Dipol - 144:  300W 9el- 432: 150W 12el,10/06
+DJ9JY,JO31JM,,,ex DG1JY,,,01/01
+DJ9KV,JN68OK,,,,,,06/95
+DJ9MG,JO52TC,EME,,EX DM2BQG Y22QG DL8CME,,144: 2x 17el 500W,01/08
+DJ9YE,JO43HV,,,,,144: 400Watt 17el  M2 MGF1302,02/08
+DJ9YW,JO42QA,EME,,,,144:  2x10el 500W - 1296: 3.5 and 4.5m dish 360W,02/01
+DK0AK,JO30NQ,,,,,,05/04
+DK0ALK,JN38TD,,,,,,06/96
+DK0BN,JN39VX,EME,,,,144: 700W 3x 9el F9FT + 2x 11elF9FT,09/03
+DK0EP,JO31TS,,,,,,11/04
+DK0IG,JN58SE,,,,,144: 350W  2x11el,12/96
+DK0NHF,JO62JR,EME,,,,,01/94
+DK0OG,JN68GI,EME,,,,144: 700W 8x17el,12/04
+DK0R,JO50AN,EME,,= DF0CK,,144: 500Watt 2x11el,09/05
+DK0TU,JO62PM,EME,,,,144: 4x 12el QRO,05/06
+DK0TX,JO50HK,,,,,,03/02
+DK0UB,JO31PK,,,,,,08/97
+DK0VV,JO61WB,,,,,144: 550W 4x7el MGF1303,03/04
+DK1CM,JO40LG,EME,,ex DL2FDX,,144: FT990 LT2S 700W YL1050 18el MGF1302 - 432: 41el MGF1302 - 1296: 48el MGF1302,04/01
+DK1CO,JO63SX,EME,,EX DL9GKA,,TS2000  TS790  AMPLITEC PA UG2-100-1500  50: 4el  144: 4x17el H 2x17el V LNA  432: 50 W 2x 20el LNA,03/08
+DK1EJP,JO31DD,,,,,,03/03
+DK1KO,JO53CT,EME,,,,144:  8877 4X17el  F9FT  full elevation  MGF1302,11/08
+DK1MAX,JN58SP,EME,,EX DL4MDQ,,144:  11 el F9FT  750W,10/08
+DK1MZ,JO42XP,EME,,ex LZ1KU DL4ABJ,,144: EME Pwr  13el  MGF1302,11/03
+DK1PZ,JO41TH,EME,,,,,01/94
+DK1VI,JN49HH,,,,,144: 650W 16 el.- 432: 100W 21 el.- 1296: 120W  1-2m Spiegel,09/08
+DK2AM,JO43AK,,,,,144: 450W 4x14el MGF1302,12/01
+DK2BJ,JO30BS,,,,,IC746 PRO  IC706MKIIG   Transverters,05/07
+DK2FT,JO42KC,,,,,,01/03
+DK2PH,JO41GV,EME,,CT1DTQ,,IC 746   50:  6M7JHV  - 144:  4x 16JXX,07/07
+DK2UO,JO30,,,,,,01/93
+DK2YCT,JO32RG,,,,,,12/03
+DK2ZF,JO43VH,EME,,,,,10/08
+DK3BU,JO33NO,EME,,,,50: 25 W ERP  5el - 144:  749W  4x12el  Preamp  -  432: 749W 4x34el Preamp (16x11el) - 1296: 749W 0.9m dish,08/08
+DK3DUA,JO61TC,,,ex DG0DU,,144: FT847 1000Watts ERP,04/00
+DK3EE,JO41GU,EME,,= DK3T ex DL9YEY,,144: 8877 4x 24el M2,09/06
+DK3EP,JO31TS,,,,,,06/05
+DK3FB,JO31UC,EME,,,,432: 750W 4x23el - 1296: 150W 37el - 2300: 5W 65el,03/01
+DK3IK,JN39JF,,,,,,04/97
+DK3MU,JO72GK,,,,,,10/04
+DK3NG,JO43VC,EME,,,,,01/09
+DK3QN,JN58LJ,EME,,,,,06/09
+DK3QZ,JO31LP,,,,,,07/02
+DK3RV,JO31,,,,,,07/96
+DK3SE,JN37VP,EME,,,,144: 50W  2x 12JXX,04/05
+DK3SML,JN49SF,,,DO3ML,,IC-910H    100 W    9-elem. Yagi after DK7ZB,05/09
+DK3T,JO41GV,EME,,,,,08/05
+DK3WG,JO72GI,EME,,EX DM2BYE  Y22ME  DL3BWW,,144:  GS35B  6x 14el (5wl)   432: GS23B  8x 27el & 16x27el   1296:  100 W  1x55el,06/08
+DK3WW,JO62NH,,,EX Y54WL Y21EF Y41ZF DL6USB,,,10/07
+DK3XM,JO43XL,,,,,144: 700w 2x2wl 60m asl,09/04
+DK3XT,JN49FE,,,= AB7IY,,,01/07
+DK4JN,JO31,EME,,,,,01/94
+DK4KW,JO60EM,,,EX DG0JWW,,TS-2000X,05/08
+DK4OG,JN68GI,,,,,,01/03
+DK4TG,JO31LB,EME,,,,144: 2X11el. 750W,12/07
+DK4U,JO42FD,,,,,144: 8874 250W 2x9el - 432: 3CX800 4x18el,02/08
+DK4WN,JN49EP,,,ex DC1PN,,,11/03
+DK4XI,JN39NG,,,,,,01/03
+DK5AI,JO51GO,,,,,,10/07
+DK5DC,JO31SL,,,,,,07/02
+DK5DQ,JO31PG,,,,,144: 300W 2x10el,03/04
+DK5DV,JO30XS,,,,,FT-847  TS850SAT,04/09
+DK5E,JO42DC,EME,,,,,07/06
+DK5EW,JN48MB,EME,,EX DG3GAG,,144:  IC-7400  ATF54143 HEMT  16x 7el  750Watt,11/08
+DK5IT,JN49FB,,,,,,01/03
+DK5KK,JO63EX,,,ex DG0KK,,,01/01
+DK5KMA,JO50IK,,,ex DO8KB,,,03/06
+DK5LA,JO44TR,EME,,,,144: 100W 20el,08/05
+DK5MV,JN58WH,,,,,,08/97
+DK5OX,JN59MO,EME,,,,TS-2000X   144: 10el DK7ZB   50: Dipole,08/07
+DK5PD,JN39VV,EME,,,,,03/00
+DK5SO,JN58AV,EME,,,,144: TS700 600Wtts 4x3.5WL,12/08
+DK5TE,JN58BG,,,,,144: IC746 HLV600/8877 2x13el 432: IC475H 2x20el GS35b,05/02
+DK5WL,JN39VW,EME,,,,144: 750W  2x 2MXP20 (10 element XPOL),09/07
+DK5WO,JO30AS,,,,,YAESU FT-767GX  LT23S,07/05
+DK5YA,JN49NX,EME,,EX DH8NAA,,50: 4el - 144: GS35b  4x9elM2  PHEMT 0.3db - 432: TH338 19el BV,06/07
+DK6AS,JO52,EME,,,,,02/01
+DK7BY,JO33RJ,EME,,,,750W,03/04
+DK7DN,JO40CW,,,,,,05/09
+DK7DR,JN47DP,,,EX DL8GCL DG7GAL 9H3XV,,IC821,07/06
+DK7LH,JO43BB,,,ex DG8BCC,,144: IC271 400W 2x3.6wl 9BV - 432: IC471H 100W 4x11wl 9BV,12/01
+DK7LZ,JO30,,,,,,12/01
+DK7T,JN48XK,,,ex DL0UL,,144: 11el 400W 3CX800,12/05
+DK8EL,JO31LJ,,,ex DH6JT,,144: 100W  9el  MGF1302,12/04
+DK8KX,JO30,,,,,,05/04
+DK8VS,JN39NF,EME,,,,,07/01
+DK8ZJ,JO54AG,EME,,,,144: 600W  BEKO 4x 12el M2,09/05
+DK9OY,JO52CK,EME,,,,,10/01
+DK9RL,JN69BB,,,,,,01/97
+DK9ZY,JO40BE,EME,,,,144: TS850  Trvt  YL1052  MGF1302  4x10el 2.2wl DJ9BV,11/99
+DL0AO,JN59WI,EME,,,,,02/03
+DL0AVH,JO52,EME,,,,144: 700W 2x2M18XXX,07/01
+DL0BWS,JO64EB,,,,,144: IC-910 100W 2x9el    432: IC910 4x19el 75W   1296:IC910 2x35el 10W,04/07
+DL0DAN,JO33OP,,,SPECIALCALL,,,03/98
+DL0DBR,JO54WC,EME,,,,,06/99
+DL0DET,JO52CK,EME,,,,,01/94
+DL0EF,JO30IM,,,,,,01/03
+DL0FTG,JO53FM,,,,,,04/01
+DL0GER,JN49CC,,,,,,08/00
+DL0HES,JO41RF,,,,,IC820H 144: 250W  2x11el - 432: 130W 2x23el Preamp,07/01
+DL0HOF,JO50XG,EME,,,,144: 2x 10el 750W 432: 4x19el 250W 1296 56El 30W,08/07
+DL0LAU,JO61JF,,,,,,05/02
+DL0LN,JO31RS,,,,,,10/04
+DL0LSW,JO61XU,,,,,144: 17el 750W,12/99
+DL0PO,JO43CD,,,,,,08/96
+DL0SHF,JO54BH,,,,,,01/03
+DL0UEM,JO73AR,,,,,,07/05
+DL0UL,JN48XK,,,= DK7T,,144: 11el 400W 3CX800,12/05
+DL0UMK,JN68BC,EME,,,,144: TS790S 4CX1000 4x17el 5WL,01/95
+DL0VV,JO64AD,EME,,,,144:  500W  4x WY209 Preamp 3SK121,09/07
+DL0WAE,JO42DC,EME,,,,750w and lots of aluminium!,05/04
+DL0WH,JN49HN,EME,,,,,01/92
+DL0WX,JO30FQ,,,,,,07/96
+DL1AAH,JO52EF,,,,,IC-756pro3 / TR-144H+40 / TR-432H / 12 and 28 el M� yagi,06/09
+DL1AIW,JO43SX,EME,,,,FT 736  FT 221  FT 290,08/08
+DL1AOQ,JO50IW,,,,,,05/02
+DL1BKY,JO33RL,,,,,,01/03
+DL1DAX,JO31RM,,,,,144:  IC251E  100W  11el - 432:  FT780R  30W  19el,07/05
+DL1DSB,JO61,,,ex Y28OL,,,01/93
+DL1DUR,JO70KV,EME,,,,144: IC275H  700W  4x11el  S3030,08/00
+DL1DWI,JO61TD,EME,,,,144: 2x 8el 750W,06/06
+DL1EAP,JO31IK,,,,,144: 12el 750W,04/07
+DL1EEX,JO31MA,,,,,144: 750W 10db ant.,09/00
+DL1EFJ,JO31GM,,,NOT qrv MS nw (01/01),,,09/01
+DL1EL,JO41RF,,,ex DL3ZBA,,IC820H 144: 250W  2x11el - 432: 130W 2x23el Preamp,09/01
+DL1ELY,JO31IO,,,,,144: FT225rd Mutek 17el 150W,01/01
+DL1GBF,JN48NJ,EME,,,,,02/97
+DL1GBM,JN48FD,,,,,50: 7W - 144: 400W- 432: 100W- 1296: 200W,07/02
+DL1GGT,JN58AO,EME,,,,144: 8877 2x 12el elev.   10368: 5W 60cm,12/04
+DL1GI,JN49FG,,,ex DL1GJO,,,12/03
+DL1GNM,JN38WB,,,,,,10/02
+DL1HTT,JO61FR,,,,,,11/99
+DL1HYZ,JO62,EME,,,,,03/01
+DL1JJ,JO31IA,,,,,,08/02
+DL1KDA,JO30FQ,EME,,EX DG1KDA,,FT1000 144:  LT2S 3CX800A7 Preamp  17ele M2  432: LT70S 3CX800A7 Preamp 2x39el M2,10/07
+DL1MAJ,JN68AH,,,= HA1BC,,144: 2x17el 750W,12/99
+DL1NEO,JN59KV,,,,,144: IC275H SP2000  Beko HLV600 (max. 600 W) 2x17el Tonna,09/99
+DL1NFI,JN59KV,,,ex DG5NGC,,144: IC746 100W 12el M2,01/02
+DL1NUX,JO50LE,,,DO2NAK,,KWD TS2000X  IC706MK II G,04/07
+DL1OJ,JO42QI,,,,,144: Elecraft K2  LT2S  Beko HLV600  9el 300W,04/07
+DL1RNW,JO62GH,EME,,,,144: 300W 4x10 DK7ZB,12/07
+DL1RTL,JO62PH,,,,,144: 13el 100W MGF1302,07/01
+DL1SDN,JN48PP,,,,,144: 2x11el  500W,07/99
+DL1SFK,JN48PR,,,,,,06/02
+DL1SUN,JO53PN,,,ex Y21NB,,,04/00
+DL1SUZ,JO53UN,EME,,EX Y24LB,,TS2000  2m: GS35  2x2.2WL Preamp 3SK121 70cm: 2xEC9000 2x7.7WL Preamp.,01/09
+DL1UU,JO62SP,,,ex DL7VBW,,144: 300W  2x9el,04/06
+DL1VPL,JO61UA,,,EX Y21PL  DM2GPL  DM3XML,,,05/09
+DL1YDD,JO31OO,,,EX DG8YDJ,,144/432: 4CX250 X-Yagis 3 m 1296: 100 W Yagi 3 m,08/08
+DL1YMK,JO31QX,EME,,EX DB1DI,,,10/07
+DL1ZU,JO40IM,,,,,,06/09
+DL2ALF,JO50IW,,,,,144: 100W 9el,08/02
+DL2ARD,JO60AR,,,,,144: IC275E  350W  4x17el,02/05
+DL2BWH,JO62XR,EME,,,,HF: TS 830+GS35+ Log-Periodic  /// 144: 350 W 10 over 10 El. Yagi,08/08
+DL2CJ,JO50,EME,,,,,01/94
+DL2DAO,JO31PH,,,,,144: 600W 24el,11/02
+DL2DBX,JO31OL,,,,,,07/05
+DL2DXA,JO61VC,,,,,144: 150W  11el,01/97
+DL2EAA,JN59PL,EME,,,,,06/09
+DL2FCN,JN49JU,EME,,,,50: 10W 2el BF981 - 144: 400W 11el MGF1302 - 432: 30W 19el CF300,03/06
+DL2FDL,JO40LN,,,,,FT736R  50: 5el - 144: 150W 9el - 432: 19el 25W - 1296: 23el 10W,08/03
+DL2GPS,JN48CD,EME,,DG2GPS,,TS2000 144Mhz:4x9el DK7ZB Yagi  432Mhz 2x20el X-Yagi Maspro,03/09
+DL2IAN,JN49BC,EME,,,,144: 1 KW  2x9el,07/01
+DL2IE,JN48,,,,,,01/93
+DL2JA,JN58,,,,,,02/04
+DL2LAC,JO44MR,EME,,,,144:  18 dBd  GS35b   432:  20 dBd  GS35b   10368:  4 m dish,03/05
+DL2LAH,JO44QS,EME,,DD0LV,,144: 750W 4x12ele DK7ZB  432: 300W  4x16 ele DK7ZB,02/09
+DL2MF,JO52DP,,,DL4OBI,,,06/08
+DL2MHS,JN58,EME,,,,,03/00
+DL2NFX,JN59IV,,,,,144: IC746 100W,04/01
+DL2NUD,JO63MF,EME,,,,144: 4x 18el QRO,05/06
+DL2NWK,JO63SP,EME,,,,,01/93
+DL2OCB,JN49HR,,,,,TS-2000,06/07
+DL2OM,JO30SN,EME,,,,,08/01
+DL2RDH,JN68HW,,,,,TenTec ORION II + DB6NT-Transverter+PA,05/07
+DL2RMC,JN68GI,,,,,,11/97
+DL2RSX,JO62SH,EME,,,,144: 19 dBd  MGF 1302  DSP  1-2KW,12/03
+DL2RUG,JO62,,,,,,01/03
+DL2SDQ,JN49OC,,,,,,08/01
+DL2YDS,JO32,,,,,,08/97
+DL3AAL,JO52,,,,,,01/93
+DL3ANK,JO50NL,,,,,,10/07
+DL3AZI,JO51ME,,,,,,01/97
+DL3BUE,JO72FH,,,,,,08/02
+DL3BWG,JO62TQ,,,ex DM5DD Y26GE DR3R,,FT-847  11-ELE-F9FT,03/06
+DL3DTS,JO61UA,,,,,,01/93
+DL3FBJ,JO40,,,,,,11/01
+DL3HRT,JO61AB,,,ex Y32MH,,144: 10el 2.3wl  100W  GaAsFet  DSP-NR,07/02
+DL3IAE,JN49DE,EME,,,,50: TS120 trvt 6el - 144: 3CX800 750W  2x10el MGF1302,08/05
+DL3IAS,JN49EJ,,,,,144: 20w 10el DK7ZB 432: 3w 23el DK7ZB 1296: 100w 1.5m 2320: 75w 1.5m 3400: 40w 1.5m 5760: 8w 1.5m 10368: 10w 48cm,07/05
+DL3JAN,JO60KT,,,,,144: 9el  300W,03/01
+DL3JIN,JO60LX,,,Y32IN,,50W 6ele,05/08
+DL3JPN,JO60IS,,,Y56YN -  Y23PN,,2m 150W@9ele - HF 500W@3ele (20/15/10) and FD4 - 70cm 100W@10ele,03/07
+DL3LBK,JO54AH,,,,,144: 250Watt 11el,07/96
+DL3LSM,JO61GG,EME,,,,Elecraft K3+TR144H - 300 W - 11 ele. Flexayagi,01/09
+DL3LST,JO61FI,EME,,,,144: 9el,04/05
+DL3MBG,JN68,,,NOT qrv MS nw (01/01),,,12/05
+DL3MGL,JN58QD,,,= EA/DL3MGL,,,12/01
+DL3NAW,JN59KV,,,zzT W3TWX,,144: 500W 2x11el,08/03
+DL3NCR,JN48QX,,,,,50: IC736 3el Yagi - 144: IC275E 11el DL6WU 8874 BF982,08/08
+DL3NUA,JO64XB,EME,,EX Y38ZA,,144: 500W 9el Yagi,02/07
+DL3RBH,JN68HJ,,,,,,05/99
+DL3RU,JN49FG,,,,,,01/03
+DL3SAS,JN48OR,EME,,,,,04/96
+DL3TN,JO31LC,,,,,,12/01
+DL3TW,JO44SK,,,,,144: FT1000 LT2S 6x6el 600W,01/03
+DL3WW,JO60FL,,,,,,08/08
+DL3XT,JN49FT,,,,,,01/93
+DL3YBP,JO42,EME,,,,,01/93
+DL3YEE,JO42GE,EME,,,,50MHz: 5ele  70MHz: 4ele  144MHz: 5el 100W  432MHz: 28ele 400W  1296MHz: 48ele 150W,05/08
+DL3YEL,JO41EV,,,,,144: 9el 3CX800,03/06
+DL4ABJ,JO42XP,,,,,,01/03
+DL4ALI,JO50JW,,,,,,07/99
+DL4ANT,JN49LF,,,,,,09/01
+DL4AO,JO42NX,,,,,144: 150W 11el,05/08
+DL4DD,JO43OT,,,,,TS2000,07/05
+DL4DTU,JO60TS,EME,,,,1296: 200W 3.7m dish 0.4db,08/05
+DL4DWA,JO61QH,EME,,,,144: 600W 13ele 432: 35w 19ele,12/05
+DL4EA,JO31,,,,,,09/96
+DL4EBY,JO62PM,EME,,,,,12/03
+DL4IB,JO64CC,,,ex DL5KVA,,144: 11el  300W,12/98
+DL4JM,JO31ED,EME,,,,144: 4el 100W,05/05
+DL4KG,JN48OU,EME,,,,TS2000 -  50: dipole  30 W   144:  10el DJ9BV  100 W   432:  23el DJ9BV  300 W    1296: 35el  80 W,04/07
+DL4MEA,JN58RI,EME,,,,432: 4.5m dish EME  KA0RYT peamp  GS35b 1296: TH347 750W  1.5m tropo 4.5m dish EME FHX35 HEMT preamp 2320: 1.5m tropo 4.5m dish EME 2xMRF21120 HEMT preamp,04/07
+DL4MP,JN48NV,,,ex DL8SET,,50: 100W 5el,01/01
+DL4NAA,JO40OC,,,,,144: hm  750W  2x15el,09/07
+DL4SUN,JO63CT,,,,,,10/04
+DL4WO,JO61WC,EME,,,,144: 17el 150W,04/05
+DL4XX,JO43XK,,,,,,07/97
+DL4YAO,JN58,,,,,,05/02
+DL4YBM,JO42DC,,,,,,01/95
+DL5AG,JO63CT,,,,,350W   11el Yagi,06/07
+DL5BAC,JO43LG,,,,,,01/96
+DL5BBW,JO32NH,,,,,,01/01
+DL5CC,JO64AD,,,ex DL5KVD,,144: 17el 600W,12/06
+DL5DAV,JO31,,,,,,06/08
+DL5DTA,JO61SD,EME,,,,144: 4x11el  EME Pwr  GaasFet   DSP59,08/99
+DL5EBS,JO31LH,,,,,144/432MHz: TS790+13 el./20 el. Yagi. 50MHz:Icom+4 el. Yagi,05/09
+DL5FDP,JN49LP,,,,,,11/02
+DL5FN,JO40FB,EME,,,,432 8X28 QRO,04/09
+DL5GAC,JN47UT,EME,,,,144: 400W  11el Flexa CF300,04/08
+DL5IO,JN49NI,,,,,,01/97
+DL5LF,JO54,EME,,,,432: 1KW 4x9el 9BV 8.5lb - 1296: 20W 23el,08/00
+DL5MAE,JN58VF,EME,,,,144: 8x17el 700W,07/05
+DL5MAM,JN58UB,,,,,144: 100W 10el,07/04
+DL5MCG,JN58KH,EME,,,,144: 11el  500W,05/07
+DL5ME,JO52SD,,,ex DL6CIA,,144: 100W  18el,04/04
+DL5MEL,JN58,,,,,144:  600W 11el,03/00
+DL5NEN,JN59MO,,,ex DH5NBE,,144: 12el GS35b MGF1302 - 432: 28el GS35b - 1296: 35el 40W,12/97
+DL5OAU,JO52GW,,,,,,01/03
+DL5QQ,JO32KB,EME,,,,,04/96
+DL5RBW,JN58VF,,,,,,01/03
+DL5RDI,JN58XX,,,DG1RCJ,,,08/08
+DL5RDO,JN59VN,,,,,,01/92
+DL5ROB,JN68HG,,,ex DG5CH,,144: 300W 16el BF981,03/07
+DL5UJ,JN39UJ,,,EX DC8IL,,IC-271E  150watts  MGF1302 preamp   5el DK7ZB,05/07
+DL5WG,JO52VK,,,ex Y52WG- DL6CRS,,50: 20W 4el -  144: 300W  2x11el,05/04
+DL5XV,JO53AP,,,,,144: 2x15el 600W,06/06
+DL5YAS,JO31WS,,,,,,12/01
+DL5YET,JO41EV,,,,,144: 750W 13el - 432: 750W,04/02
+DL5ZA,JO51HK,,,,,144: IC706 100W  14el F9FT,08/07
+DL6BF,JO32QI,EME,,,,144: 400W 4x 8el  -  432: 150W 4x11el,03/09
+DL6KR,JO30NQ,,,,,,10/05
+DL6LAU,JO53CF,EME,,,,,07/03
+DL6LI,JO53BV,,,,,,06/07
+DL6MFK,JN67JX,EME,,,,,08/07
+DL6NAA,JO50VF,EME,,,,,10/00
+DL6NCI,JO50VI,,,,,,01/93
+DL6NDK,JO53BV,EME,,,,TS790 40W   350W   8El Yagi  12dBd,01/08
+DL6RDR,JN68BM,,,,,,10/95
+DL6UAL,JO61XU,,,,,144: 750W  2x BigWheel,12/00
+DL6WT,JN39VV,EME,,,,,04/96
+DL6WU,JN49HT,EME,,,,,02/04
+DL6YEH,JO32VA,EME,,ex DG3YFB,,144: IC730 LT2S 749W 2x2.2wl 9BV  -  432: IC730 LT70 200W 4x8.8wl 9BV,03/02
+DL6YFB,JO31KM,,,ex DH4YAT,,,01/96
+DL6ZAU,JO40JF,EME,,,,FT736+MHP145 144: 600W 1x 12el M2,05/07
+DL6ZBN,JO40ED,,,currently not active 01/04,,144: TS700S  80W  11el  MGF1302,05/02
+DL7AKA,JO62QO,EME,,,,144: TR7  Trvt  2x4CX250b  15el DJ9BV,01/01
+DL7APV,JO62JR,EME,,DC7PV,,432: 16x39el. EME  8x21el. Tropo,01/09
+DL7ARM,JO62RJ,,,,,,12/95
+DL7AUK,JO62,,,,,,01/03
+DL7DCU,JO41BC,,,ex DG7DCU,,144: FT767  100W  4x11el  MGF1302,03/99
+DL7FF,JO62TJ,EME,,ex DL7UTS,,HF 100W FD4 - 144:  4x11el  1KW,04/05
+DL7HR,JN58PF,EME,,,,IC 7400  - 144: 2x 8el  LY hor   800W,02/08
+DL7PP,JO30SE,,,,,FT920-6m  Transverter 144:  2x 11el F9FT  50: 6el  DK7ZB,08/05
+DL7QY,JN59BD,,,,,,10/08
+DL7TX,JN49IV,,,ex DC7AP,,144: 50W 6el - 432: 17el 100W,11/01
+DL7UAE,JO62PH,EME,,,,FT736R  50: PA Tonna20505 - 144: GS35 4x3wl (13el) 90degElev - 432: GS35 2x6wl(19el),10/06
+DL7UDA,JO62TK,EME,,,,144: IC275H 2xGI7B 17 el F9FT (GS35B 2x10el DK7ZB)  432: IC475H GS35B 21el F9FT (GS23B 4x21el DK7ZB),10/08
+DL7UGB,JO62,,,,,,05/97
+DL7ULE,JO62,,,,,,12/95
+DL7ULM,JO62SN,,,,,,05/01
+DL7UME,JO62SN,,,,,,01/03
+DL7YC,JO62PK,,,,,HF: 400W - 50: 10W - 144: 200W - 432: 750W - 1296: 110W - 2320: 125W - 10368: 33W,09/03
+DL7YW,JO62RK,EME,,ex DC7OL,,,01/02
+DL8AKI,JO51,,,,,,11/95
+DL8AKR,JO51AI,EME,,DM2CGI Y25VI,,144: FT847  150 Watt PA  5 EL-YAGI (10db) next more,02/08
+DL8BBL,JO42,,,,,,04/04
+DL8BDU,JO43AA,,,ex DC9BJ  DH5BAG,,144: 750W 15el  432: 250W 2x 20el,01/08
+DL8CMM,JO52VM,,,,,,05/04
+DL8DAT,JO31,EME,,,,,01/93
+DL8DBU,JO30NP,,,ex DG8FCB DH6DAH,,144: TS-2000X  single 2M12  600W  0.35dB,07/06
+DL8DUL,JO61,,,,,,08/04
+DL8EBW,JO31NF,EME,,EX DD0EF,,TS-2000 144: 2x 12el M2 full Elv 750W MOSFET LNA144MKII-SSB   RX: ONKYO T-4711  PCR1000 7el Crossyagi,01/09
+DL8FBD,JO40,,,,,,01/93
+DL8GAM,JN37,,,,,144: TS870  600W  11el,12/97
+DL8GP,JN39LH,EME,,,,144: SE400  FT847  4cx250b  GS35b  90mtr.coax  500watt in 8x 20el.crossyagis,04/05
+DL8HCZ,JO53AP,,,= CT1HZE,,,11/00
+DL8II,JN49,,,,,,07/08
+DL8LAQ,JO43XU,,,,,IC-7400   8874   M2 2M5WL,06/08
+DL8MEM,JN57XX,,,,,,12/06
+DL8NBN,JN58,,,,,,01/93
+DL8OBU,JO42XI,EME,,,,432MHz: 750W 4x33el - 1296MHz: 150W  67el,11/01
+DL8SCL,JN48RM,EME,,,,,03/01
+DL8SCQ,JN48RV,EME,,DG8SAV,,TS711E + 3CX800/GS35b + 2 * 10 DJ9BV( 1990 ) H,06/09
+DL8UCC,JO71EQ,EME,,,,144: 500W 2x11el or 2x17el,07/04
+DL8WKR,JO61CD,,,,,,09/06
+DL8YAU,JO41HS,EME,,,,144: Ant: 12 El 4WL  PA: 700W-MOSFET  VV: ATF54143,03/09
+DL8YE,JO31MH,,,EX DL8YET,,50: FT847  5el DK7ZB - 144: FT847  10el DK7ZB GS35 - 432: FT847  30w  23el DK7ZB - 10368: FT290  DB6NT Transv  5W  65cm dish,04/08
+DL8YHR,JO41GV,EME,,ex DH8YHR,,50: LT6S 2x9el M2 - 144: 24el M2  750W,11/05
+DL9AN,JO62RE,,,ex DL7UME,,50: 10W 5el - 144: FT736r  750W GS35b  2x12el,08/04
+DL9BDM,JO33RL,,,,,,01/93
+DL9DAK,JO43XO,,,DG5DT  DH4DAB,,IC7000,04/07
+DL9DBJ,JO31OK,EME,,DG8DU,,VHF FT897D GS23b 7El   UHF  FT897D TH308 2x 19El,07/08
+DL9EBF,JO31FH,,,,,,01/03
+DL9EBL,JO31,EME,,,,,01/94
+DL9GBH,JN48RW,,,,,,12/01
+DL9GRE,JO61FH,,,Y66XA,,HLV600 10Eel DK7ZB  DEMI Transverter,10/07
+DL9GS,JO31OM,EME,,,,,07/08
+DL9IM,JO31,,,,,,07/04
+DL9KR,JO40DE,EME,,,,,09/02
+DL9LBH,JO30MP,EME,,,,TS-2000  144: 2x 11el 500W - 432: 23el 50W,08/08
+DL9MCC,JN58UA,,,,,144: 4x 2-4wl 700W MGF1302 - 432: 2x 7wl 700W MGF1302,08/03
+DL9MS,JO54WC,EME,,EX DL9GJW,,144: 4x17el GS35b MGF1302,11/05
+DL9NBD,JO50LE,EME,,,,TS790 150w 2x11el,03/07
+DL9NDD,JN59KN,,,,,,01/03
+DL9NDW,JO50XG,,,,,IC7000  2m=400W/17el  70cm=100w 21el,06/09
+DL9OA,JO64EB,,,,,144: IC821  100W  9el/2.5wl  CF300,03/02
+DL9OBD,JO42QN,EME,,,,IC7400 144: 4x11el  750W  BF981 - 50:  5el 25W,05/08
+DL9RCI,JN68,,,,,,07/95
+DL9USA,JO71EN,,,,,144: 10el DL6WU  300W RXAmpl,09/03
+DL9YEY,JO41GV,,,,,,01/03
+DM1AC,JO30IV,EME,,DC9KZ,,TS2000 - 144 MHz 750W - 2 x 9 ele - 50 MHz 10W - 4 ele,09/08
+DM1CG,JO31IC,,,EX DG1ELE,,50:  TS 850   LT6  4el  -  144: TS 850 LT2S 600W 12el M2  HF:  FT 850,10/08
+DM1HD,JO31GD,,,ex DC1JP,,144:  TS850S LT2S HLV600 600Watt 17 EL M2,08/02
+DM2BHG,JO51MW,EME,,EX HZ1AB- Y22HG,,144: 4x 17el XPol  2xGS35b  MGF1302,01/08
+DM2DXG,JO51MV,,,,,,06/02
+DM2ECM,JO62GJ,,,Y25CD,,,05/08
+DM2GS,JO42HJ,,,,,,12/04
+DM2HB,JO41EQ,,,,,50: FT950  144: IC-706MK2G 50W 11el F9FT,06/09
+DM2LL,JO62VU,,,DG3BSD,,HF:500 W- Beam  10-15-20   Dipol  2x 31 50 m // 144 : 100 W  11 El,08/08
+DM2PG,JO51,,,,,,04/03
+DM2SR,JO53HR,,,DO4LSR,,144: IC-910 - HA8UG GS31 - 2M18XXX Yagi  50MHz: 4element  TenTec 1208 x-verter,05/08
+DM3FG,JN49LT,,,,,,04/03
+DM3FM,JO40MF,,,,,144: IC275H  8el 7ZH,06/02
+DM4KA,JO64II,,,,,,03/03
+DM7RM,JN48HD,,,EX DH3IAJ,,50: 10W 4el  144: 100W 10el   10GHz 5W 48cm  dish,04/09
+DM8MM,JO40AQ,,,ex DC9PX DL7AJA,,144: IC-706MKIIG  3CX1500A7  MGF1302  17el. Tonna,11/06
+DN1FC,JO41RF,,,,,IC820H 144: 250W  2x11el- 432: 130W 2x23el Preamp,07/01
+DN1MA,JN58VF,,,,,144: 8x17el 700W,12/00
+DN2MS,JO31OM,,,SpecialCall,,144: C5400  HG51  400W  9el  MGF1302,12/98
+DO1CTL,JO60LT,,,,,,08/01
+DO1EDK,JO31RL,,,,,Kenwood TR-751E,08/05
+DO1EL,JO31JL,,,,,,06/02
+DO1NF,JN69,,,,,,08/01
+DO1YDS,JO42HJ,,,,,,04/04
+DO2TC,JO73AO,,,,,,04/05
+DO3ESB,JN59VS,,,,,144: IC275H 17el,07/07
+DO3MT,JN67,,,,,FT817,01/03
+DO5AN,JO31,,,,,,04/02
+DO9ST,JN49VW,,,,,,03/01
+DP5G,JO31IC,,,SpecialCall,,,04/06
+DQ2006R,JO31NF,EME,,SpecialCall,,IC275H or TS2000 144: 2x 12el M2 full elev  750W  BIY-ATF-Preamp,06/06
+DR5O,JO31MG,EME,,= DF0AW JO31MG,,FT736 144: 750W 2x 11el  432: 200W 4x 23el  1296: 23el 10W,12/08
+DS1MFC,PM37LM,EME,,,,144: 4x 13el 100W,04/08
+DZ1JP,PK04NC,EME,,,,,03/06
+E51EME,BG08DR,EME,,ZK1EME,,IC-706Mk2g  4x 8el  500W,12/08
+E73DPR,JN92ER,,,YU4DPR,,FT-897  IC-7000,05/09
+E73DU,JN92ER,,,,,,05/09
+E75DX,JN84MX,,,T96C,,TS2000,06/08
+E77AR,JN94AS,,,YU4AR,,Icom IC275 + PA 250W,06/09
+E77GS,JN84OT,EME,,EX T98GTH,,FT897 150 watt  10 el DK7ZB,09/08
+EA1ABZ,IN71QO,EME,,,,144: 4x12el or 11el DL6WU 1500W (4CX250+GS35B) Ga-As FET - 432: 15el 35W,10/02
+EA1AIB,IN82TK,,,,,,08/95
+EA1BBE,IN62BH,EME,,,,,10/05
+EA1BFZ,IN81SS,,,,,,04/04
+EA1BLA,IN53UM,,,,,50: 100W 5el  -  144:  1kw 12el MGF1302 - 432(/p):  31el  600W  MGF1302 - 1296(/p): 2x55el 80W MGF1302,10/02
+EA1BLX,IN53VK,,,= EB1BXW,,,04/06
+EA1CJ,IN71SW,,,EB1ISN,,IC-7000 Acom 1000,06/09
+EA1CKL,IN82KF,,,,,,08/08
+EA1CRK,IN73DM,,,,,Kenwood ts-790e or Icom 706 MkII   50: 100W 7el - 144: 17el  200W -  432: 19el 130W - 1296: 35el 10W,01/04
+EA1CYE,IN83,,,,,,01/93
+EA1DDO,IN53UI,EME,,,,144:  17B2 100W pHEMT  432: 50W 31el  1296: 10W 55el,09/06
+EA1DDU,IN73EM,,,EX EB1ALC,,144: TS-2000E2+16JXX2+170W  432: TR851E+CC729B 29EL+120W  50:  IC706MKIIG+5EL ZX6-5. 1296: TS2000E2+55EL.F9FT+10w.,12/08
+EA1DOD,IN73AN,EME,,,,,01/93
+EA1EBJ,IN73FL,,,,,50: IC729  BV6-1wl - 144: IC275H  BV2-4wl - 432: IC475H  BVO-8.5wl,03/06
+EA1EW,IM79WS,,,,,,07/95
+EA1FBF,IN73WJ,EME,,,,,04/07
+EA1JK,IN72RA,,,,,,01/01
+EA1KV,IN52PF,,,,,,01/93
+EA1OD,IN73EM,,,,,,01/90
+EA1RX,IN52PF,,,ex EA1BSK,,IC706 MKIIG,06/03
+EA1SH,IN63GA,,,= EB1FIF,,144: 17B2 170W GaAs-Fet - 432: 31el 180W GaAs-Fet,05/04
+EA1YV,IN52OC,EME,,,,50: IC706 2x5el - 144: TS2000  GS35B 1KW  4x 17el M2 full elevation  MGF1302,08/06
+EA2AF,IN92,,,,,,01/90
+EA2AGZ,IN91DV,EME,,,,FT1000MP- FT736 144: 4CX1500b 4x17B2CC MGF1402,10/06
+EA2ARD,IN93,,,,,,08/02
+EA2ASB,IN83KF,EME,,EB2DMN  EC2BAW,,,11/08
+EA2AVY,IN92DS,,,,,,01/03
+EA2BVD,IN91OO,EME,,EB2ATY,,,11/07
+EA2KP,IN83MG,,,ex EA2AKP,,144: TR751E 2M18XXX 200W Preamp - 432: 100W 21el,04/04
+EA2LU,IN92ET,EME,,,,144: 8x9el  750 W  MGF1302,01/06
+EA2LY,IN93AH,,,ex EA4LY,,144: TS790 4CX1500 LNA144 2x18el,08/98
+EA2NN,IN83MG,EME,,ex EA2CHT,,144: 4wl 200W IC706MKIIG,10/06
+EA2RCF,IN82,,,,,,08/02
+EA2RL,IN83MG,,,ex EA2AJX,,50: 10W Dipol - 144: 100W 6el Quad,07/05
+EA3/DL3MGL,JN01ME,EME,,= EA3MS,,144: 1KW  1x17el,04/09
+EA3ADW,JN11CQ,EME,,,,,10/02
+EA3AEL,JN01,,,,,,01/93
+EA3AIR,JN11,,,,,,01/93
+EA3AQJ,JN11BJ,,,,,,01/87
+EA3AXV,JN01TJ,EME,,,,Elecraft K2  IC756II  Elecraft trvter.  GS35  17el-5WL,05/07
+EA3BB,JN01VS,EME,,EX EA3BBU,,144: 2x 17el 400W MGF1302,09/07
+EA3BEW,JN01SG,,,,,,12/95
+EA3BTZ,JN11BI,EME,,,,144: 100W 16el 0.8db preamp,09/02
+EA3CN,JN11BI,,,ex EA3GAW,,,03/96
+EA3DUY,JN12LD,,,,,144: 4x17el  800W - 50: 6 el 500W - 432: 21el 50W,08/02
+EA3DXU,JN11CM,EME,,SILENTKEY,,,10/07
+EA3ECE,JN01LT,,,,,,11/97
+EA3EDU,JN01WK,,,,,,03/08
+EA3EHQ,JN11HR,EME,,,,,03/96
+EA3ESE,JN01WR,,,,,144:  TM-255  VLA200  SHF MVV144-VOX  13 el Yagi,04/06
+EA3FLN,JN11KT,,,,,144: IC275H  450Watts  GaAsFET preamp 0.6dB  18ele 18xxxM2,04/04
+EA3FTT,JN01VR,,,,,RIG: IC 275H 120W 13ELE yagui,09/06
+EA3GAW,JN11BI,,,,,,01/03
+EA3GCJ,JN11EM,,,,,Yaesu FT-107M,04/04
+EA3GFB,JN11,,,,,,12/95
+EA3GIQ,JN01ND,,,,,,07/95
+EA3GKU,JN01NJ,,,,,,08/08
+EA3GLJ,JN01UI,,,EC5AKW,,Elecraft K3,03/08
+EA3IH,JN11BJ,,,,,,01/87
+EA3KU,JN00JV,EME,,,,144: IC275H  2x4CX250  16el- preamp,04/05
+EA3MD,JN11,,,,,,01/94
+EA3MM,JN01WH,EME,,,,,01/93
+EA3MS,JN01ME,EME,,DG3MGL,,144: 2x 17el  GS35b,10/08
+EA3PL,JN11PL,EME,,,,,01/94
+EA3TI,JN11JT,,,,,144: 17el 5lambda Yagi  400W  110masl,08/06
+EA3UM,JN01,EME,,,,,01/94
+EA3URC,JN11,,,SpecialCall,,YAESU FT-100  ICOM IC-706MKII - 144: 50W 14el,05/03
+EA3WH,JN01,,,,,,01/93
+EA3XU,JN11CK,EME,,,,,12/07
+EA4AMX,IM89AT,,,,,,07/01
+EA4BAS,IN80HL,EME,,,,FT847 144: 17el 180W MGF1302 - 432: 35el 100W MGF1302,09/02
+EA4DB,IN80EJ,,,EA4BPJ,,IC-756ProIII - IC-821H,09/07
+EA4ED,IM79FW,EME,,,,,01/94
+EA4EHI,IM68TV,,,,,144: IC275H 1500W  4x17B2,07/01
+EA4EKH,IN80ND,EME,,,,144: 50Watt 9el,08/05
+EA4LU,IM68TV,,,ex EB4FQP,,144:  FT726r 400W  17el (17B2),04/03
+EA4SV,IM68MU,,,ex EA4DQR,,,04/04
+EA5AAJ,IM99SL,,,,,144: IC-706MK2G 100W 9el,04/04
+EA5AEL,IM98RP,EME,,,,ICOM 746-100w ant 14 elemnts VHF-multi-band dipole HF-5 elemts to 6 meters-monoband to 10 meters and others,04/07
+EA5CJ,IM99TL,EME,,,,,07/05
+EA5DWS,IM98SR,,,,,Icom 706-MKII-G  YAESU FT-920,08/08
+EA5EF,IM99SM,,,EA5BVK - EC5BD,,144 MHz 70 W + 9 el yagi / 50 MHz 100 W + DK7ZB 5 el yagi,04/07
+EA5EMM,IM99,,,,,,01/93
+EA5GIY,IM98XD,EME,,,,,01/99
+EA5HM,IM99,,,,,,01/93
+EA5IC,IM98,,,,,,01/94
+EA5MT,IM88WV,,,,,,08/08
+EA5NO,IM98FV,,,,,,08/97
+EA5SE,IM98IL,EME,,,,144: 2x 17el 1.5K,04/06
+EA5SR,IM98GF,,,,,,08/08
+EA5ZF,IM99VT,EME,,EX EB5IFI,,144:  600W  2x 17el LNA145   432: 35W  2x 21el F9FT mw432s,05/07
+EA6ADW,JM19LU,EME,,,,50: 20dbd- 144: 40W- 10el- up: div. Spiegel,07/97
+EA6DD,JM19JK,,,,,144: IC706MKIIG 17elB2 100W,05/03
+EA6FB,JM08PV,EME,,,,,08/02
+EA6IB,JM09SB,,,,,144: IC251E 150W 15elYagi,04/02
+EA6NP,JM19MQ,,,,,,01/93
+EA6QB,JM08PV,,,,,144: 2x15el  4CX400,05/03
+EA6SA,JM19LO,EME,,,,TS-2000X: ...@50+9dBd's. 2x4X150@144+15dBd's. 2X4CX250@432+18dBd's. 10W@1296+25dBd's.,05/08
+EA6VQ,JM19HN,EME,,,,144:  2KW  MGF1302  8x17el M2    432: 21el 115w   1296:  55el 10w,04/05
+EA7AJ,IM87CS,,,,,144: 300W  2x 19el,08/04
+EA7DBH,IM76GD,,,,,,01/94
+EA7DFH,IM87DD,EME,,,,FT-857 TS2000  17el  200w,05/07
+EA7ERP,IM87EE,,,,,TS 790-E   13 ELE TONNA + PA 4CX350A,06/08
+EA7EYX,IM87CS,,,,,,12/04
+EA7HG,IM87CS,EME,,,,144: 4x 9el 100w mgf1302,12/05
+EA7OC,IM77OV,,,,,144: IC820 250W 17el,03/01
+EA7RM,IM87CS,,,ex EA7GTF,,144: TR9130  240W  17B2  OH5IY,07/02
+EA7TL,IM66VO,,,,,,05/05
+EA7TN,IM66VP,,,EX EA1AK/7,,TS2000 144: 100 W  2 x 2.5 wl -  50: 100 W  0.81wl,05/08
+EA8BEX,IL27GX,,,EB8QC,,IC910H,06/08
+EA8FF,IL28,EME,,,,,02/01
+EA9AI,IM75IV,,,,,144: 100W  9el,06/03
+EA9MH,IM85NG,,,,,,05/00
+EB1BKG,IN62BH,EME,,,,,11/01
+EB1BXW,IN53VK,,,= EA1BLX,,,04/06
+EB1DNK,IN62CL,EME,,,,144: IC706 4x17el 500 Watt  MGF1302  - 432: 70W 21el,04/06
+EB1EB,IN83BK,,,ex EB1IQC,,,08/05
+EB1EFC,IN52OF,,,,,,01/93
+EB1EHO,IN73DM,,,,,144: 17el 200W - 432: 21el 50W,07/04
+EB1EUW,IN82TK,,,,,,01/95
+EB1IHY,IN52PM,,,,,144: 17el 160W,07/04
+EB1IVY,IN53SJ,,,,,,07/02
+EB2AYV,IN83MG,,,,,144: 250W 2M18XXX,01/04
+EB2DTP,IN82NS,,,,,FT847 IC746 FT816 17el 1000W,08/03
+EB2DVT,IN91MP,,,,,,03/06
+EB2FJN,IN83QE,EME,,,,50: 1x3 cushcraft  100W  -  144: 2x 13b2 Ant  MGF1302  1KW - 432: 9el  X-Quad  BF980  150W,12/08
+EB3BAP,JN11CJ,,,,,144: FT736r  200W  17el,01/01
+EB3CNX,JN11DI,,,,,,01/93
+EB3EPR,JN01ND,,,,,,01/03
+EB3GHU,JN11CJ,,,,,,04/04
+EB3JT,JN01UI,EME,,EB3GEK,,IC910 + SP2 + 4x13B2 + GS35B,08/07
+EB3WH,JN01WN,,,,,,01/93
+EB4DF,IM79QQ,,,,,TS-790 FT-817 144:  500W 17el - 432: 500W  21el,06/04
+EB4EQZ,IN80EK,,,,,Yaesu ft-817 Yaesu FT-897,08/05
+EB4ERS,IN80BH,,,,,FT736  144: 140W 9el GaAs-Fet,01/00
+EB4EUB,IN80DJ,EME,,,,50: 6el 100W - 144: 17el 1KW MGF1302 - 432: 21el 50W MG1302 - 1296: 55el 10W,08/00
+EB4FXD,IM78BX,,,,,144: 150W 17el,02/04
+EB4GIA,IN80CG,,,,,144: IC821 IC706 TS790 240W 17el  - 432: 100W 31el SP70,02/98
+EB4TT,IN70XJ,,,ex EB4CXS,,,05/00
+EB5AZO,IM99RA,,,,,,11/04
+EB5EA,IM99TN,EME,,EB5AYG,,144: 4x 11el  500W,05/08
+EB5EEO,IM98PG,EME,,,,144: TS2000 6 x 18 2M18xxx /432 : 4 x 38 13 wl / 1296: 8 X 35 Elm Tonna,08/07
+EB5EHX,IM99,,,,,,01/93
+EB6AOK,JM09RB,,,,,HF 144  432  1296,06/09
+EB7BMV,IM67WI,EME,,,,,05/09
+EB7BQI,IM76SR,,,,,,06/03
+EB7COL,IM77AG,,,,,,05/04
+EB7DBX,IM67LG,,,,,144: 12 ele DK7ZB   350W   LNA SHF Electronik,07/07
+EB7EFA,IM67XI,,,,,,01/95
+EB8ANY,IL18,EME,,,,144: 500W 4x 7el,12/04
+EB8BTV,IL18QI,,,,,,05/03
+EC1DMY,IN82SL,,,,,,08/08
+EC3DR,JN01UJ,EME,,EA3GLJ,,,04/09
+ED1GSR,IM79WS,,,Expedition,,,01/94
+ED3DXU,JN01VQ,EME,,SPECIALCALL,,,02/08
+ED4RKF,IM79WS,,,Contestcall,,144: 240W  13el,03/97
+ED5TOR,IN90XP,,,Expedition,,,01/93
+ED6EIG,JM19IM,,,SpecialCall,,,08/99
+EG3TVC,JN11BI,,,SpecialCall,,144: 400W 17el M2,12/99
+EH1RX,IN52IN,,,ex EH1BSK,,IC706 MKIIG,03/02
+EH3AXV,JN01TJ,,,,,50: FT920+trsv  GS35b  6elYagi,07/02
+EH5RM,IM98,,,,,,07/02
+EH6SA,JM19LO,,,,,TS-2000X,08/07
+EH7RM,IM76QM,,,,,,01/03
+EH9LS,IM75IV,,,,,,01/03
+EI2CA,IO62,,,,,,01/88
+EI2IP,IO61CX,,,,,,04/07
+EI2VPX,IO53IQ,,,,,,01/91
+EI3GE,IO63XD,,,,,,08/00
+EI4DQ,IO51WU,EME,,,,144: ic910 gs35b MGF1302 4x10el or 10el,03/08
+EI4GHB,IO52QQ,,,,,Icom 910,09/08
+EI4VBE,IO42,,,Expedition,,,01/88
+EI4VBS,IO42,,,Expedition,,,01/90
+EI4VWY,IO54,,,Expedition,,,08/01
+EI4VWZ,IO55,,,Expedition,,,08/01
+EI4VXV,IO43XL,,,G0AFH,,144: 400W 17el Preamp,12/06
+EI5FK,IO51RT,EME,,,,144: FT847 150W 9el,03/05
+EI5HN,IO62,,,Expedition,,,05/06
+EI6CPB,IO63WE,,,,,50: IC706 - 144: IC821,09/06
+EI6GF,IO62RG,,,,,,02/98
+EI6IZ,IO53HU,EME,,,,IC756PRO2,06/07
+EI75RTS,IO51,EME,,SPECIALCALL,,,04/07
+EI7IX,IO53FT,EME,,,,,10/07
+EI7RCG,IO62,,,,,144: 27el,08/96
+EI7RSD,IO62WX,,,,,144: 27el 400Watts,07/96
+EI8JK,IO51DN,EME,,EI2FSB,,FT-726  FT-736  FT-102  FT-897,06/09
+EI9HW,IO63MP,,,,,,10/93
+EJ4VNX,IO43,,,SpecialCall,,,01/93
+EJ6O,IO43MM,,,SpecialCall,,,01/94
+EM1U,FC74US,,,,,,01/03
+EN80AL,KO61WP,,,= UT8AL,,,08/07
+ER1AN,KN46KX,,,ex ER5OIW UO5OIW,,144: FT857 200W 2x10el,12/04
+ER2RM,KN46KA,,,ex ER5OK,,,11/05
+ER5AA,KN45CW,,,ex UO5OB,,,06/00
+ER5AL,KN45CW,,,,,,07/02
+ES0Q,KO17AV,,,SpecialCall,,,06/04
+ES0X,KO18,EME,,Expedition,,,07/99
+ES1CW,KO29HK,,,,,,05/98
+ES1RF,KO29IJ,EME,,ex UR2RGM,,FT1000MP/FT847/FT736/TS2000+Trans.+Preamps  50: 5el 500W - 144: 4x9el 500W - 432: 4x19el 150W - 1296: 4x 35el,04/06
+ES2CM,KO29DJ,EME,,,,ICOM-706 MKIIG  144: 4x 14el  600W,04/06
+ES2NA,KO29JL,,,,,144: IC706MKII 300W 9el,04/02
+ES2QH,KO29LL,,,,,144 : FT847 700Watts 9ele Preamp - 432:  IC821 800W,08/01
+ES2WX,KO29JN,,,,,,05/03
+ES3BR,KO28JS,,,,,,05/04
+ES3GZ,KO28,,,,,,01/93
+ES3RF,KO29IF,EME,,EX UR2RGM ES1RF  ES1RF/3,,FT1000MP/FT847/FT736/TS2000  50: 5el 500W - 70: 5el 60W - 144: 4x18el 500W - 432: 8x19el 200W - 1296: 4x35el 30W,03/08
+ES4Q,KO39BD,,,Expedition,,,08/05
+ES5KJ,KO38IJ,,,,,,01/05
+ES5MC,KO38JJ,,,,,,12/95
+ES5MG,KO38IJ,,,,,,01/94
+ES5PC,KO38HJ,,,,,1296: remote operated setup: 4.5 m dish 300-350W,10/08
+ES5RE,KO38,,,,,,01/94
+ES5RN,KO38,,,,,,01/94
+ES5RY,KO38JI,,,,,,11/02
+ES5WE,KO38JJ,,,,,,01/94
+ES6DO,KO27WX,,,EX UR1RYY- UR2RDO,,IC756 + IC820H+Preamp ATF54143 + 100/350W 50MHz:  4el  - 144MHz:  2M5WL,05/08
+ES6LBN,KO37AW,,,,,144: 170W 11el,07/04
+ES6RQ,KO28WA,EME,,ex UR2RQT UR2RQ,,TS2000 FT736 FT847  144: 2KW 8x17el M2 + 1x 18el,07/05
+ES8AS,KO28FJ,,,,,,04/04
+ES8X,KO18XC,EME,,Expedition,,144: TS790E+PA 300W  2x9 el  or FT 847+ PA 300W  9 el Yagi and preamps,07/02
+ET3AA,KJ98JX,EME,,= ZL1RS,,,04/08
+EU1AB,KO33SU,,,EX UC2AAB,,,12/08
+EU6AF,KO35,,,,,,12/07
+EU6MS,KO45IN,,,ex RC2WBH,,144: 16el 700W MGF1302,09/01
+EV2AA,KO33PM,,,,,,01/03
+EV2AAB,KO33ST,,,,,,01/03
+EV2OEU,KO52IK,,,,,,01/03
+EV5M,KO53TP,EME,,Expedition,,144: 4x 9el  QRO,08/06
+EV5N,KO42RX,,,Expedition,,,01/94
+EW1CD,KO33SW,,,,,,06/07
+EW1RZ,KO33SV,,,,,,10/01
+EW2ABC,KO33VW,EME,,,,,11/08
+EW6AL,KO46KB,,,Expedition- QSL via EU6MS,,,08/06
+EW6DX,KO45JL,,,,,144: 100W 9el,08/97
+EW6FS,KO35LB,,,,,144: 20W 2x16el F9FT Preamp,01/03
+EW6GB,KO45CN,,,,,144: 200W 10el,08/02
+EW7IM,KO53,,,ex UC2SMM,,,01/92
+EW7IN,KO53,,,,,,01/94
+EW7IW,KO53DR,,,,,,01/03
+EW8DD,KO42QA,,,,,144: 4x16el F9FT- 50W,12/98
+EW8RR,KO41OV,,,,,,09/07
+EY8MM,MM48FI,EME,,,,144: IC706 200W 2x 10el,06/06
+F0DBD,JN08XW,,,,,FT726R 10W 10el Preamp,01/02
+F0DIX,IN93SV,,,,,-,06/07
+F0EJW,IN78VJ,,,,,ICOM 910H  Antenne 17 El�ments tonna Pwr:20watts,06/08
+F0FEQ,JN33LN,,,,,,11/06
+F1AFJ,JN06HT,EME,,,,144: 4x11el F9FT 1500 W  0.4dB,11/04
+F1AKK,JN39CC,,,,,,07/01
+F1AOE,IN93RS,,,,,,04/04
+F1CCM,IN93MP,,,,,,01/93
+F1CNE,JN28,EME,,,,,01/94
+F1CXX,JN18AT,,,EX J28EL,,ic910h+11 ele-ft847+dipole+gp 50mhz,05/09
+F1DLZ,JN19FH,,,,,,08/08
+F1DUZ,IN97NJ,EME,,,,144: FT897D  2x 4CX250R  600W  4x 11el  LNA 9BV,04/06
+F1DVP,JN12JN,,,,,,08/08
+F1EBK,JN18BW,EME,,,,144: TS790A  300W  4x10el DK7ZB,11/04
+F1EBN,JN18JR,,,,,,08/02
+F1ELL,JN18EX,EME,,,,,01/94
+F1ERG,JN27JJ,,,,,,08/08
+F1FEN,JN25JC,EME,,,,,01/94
+F1FHI,IN97GD,,,,,,01/03
+F1FIH,JN23GS,,,,,,04/03
+F1FLA,JN26KU,EME,,,,144: 4x25el Xpol 7.6lb 1KW MGF1302,10/05
+F1FVP,IN95XA,,,,,,01/03
+F1GHP,IN96LE,,,,,,01/03
+F1GTR,IN96JE,,,,,,01/03
+F1GTU,JN05IF,,,,,144: 160W 13el,05/06
+F1HAR,JN18DT,,,,,,01/93
+F1HQM,JN23LV,,,,,,10/07
+F1IHP,IN88,,,,,,07/02
+F1ISJ,IN97QM,,,,,IC746,10/08
+F1IXQ,JN15MQ,,,,,,12/01
+F1JG,JN23HQ,,,ex FC1JG,,,08/02
+F1JOE,JN05IF,,,,,,01/93
+F1JRD,JN13WO,,,ex FA1JRD,,144: TR751 GS35b  2x11el F9FT,12/04
+F1MBM,JN38CQ,,,,,FT225RD  144:  8877 4CX250 MGF1302 16el F9FT - 432: 100W 21el F9FT,12/02
+F1MOZ,IN93RS,,,,,,11/06
+F1NGP,JN39CC,,,,,,04/97
+F1NNI,IN88,,,,,,04/02
+F1NSR,JN33JK,EME,,,,144: IC275h 2*11EL  2*4CX250,03/07
+F1NWZ,JN17CT,EME,,,,144: FT736R Mutek Front End  4x 10el 7ZB  GS35B,03/07
+F1ODA,JN13FO,,,,,144: 400W,10/02
+F1PUX,JN16XL,,,,,TS690S 144: LT2S  200W  20el  - 50: 5el,01/99
+F1PYR,JN19DA,,,,,,04/02
+F1PYW,JN38UP,,,,,144: 120W 9el or 2x11el - 432: 17el or Helix,03/99
+F1RAD,JN25WF,,,ex FC1RAD,,50: 5W 1/4wl. - 144: TR751e 25/200W,05/02
+F1RHS,JN03PV,,,,,,11/01
+F1TE,IN94QS,EME,,,,144: 4x 12el 2KW,09/06
+F1VJQ,IN95OL,,,EXPEDITION,,,07/07
+F1VS,JN04FV,,,,,,05/08
+F2TU,JN38LG,EME,,,,,11/01
+F3VS,JN38LF,EME,,,,144: 24x20el (6wl) & 8x20el (6wl) DJ9BVs,03/99
+F4ALP,JO10OP,,,,,,12/01
+F4APX,JN23XL,EME,,,,144: 4*18EL - 432:  4*21EL  2*4CX250,01/04
+F4ARU,IN94VT,,,,,144:  4x3.6wl 1KW 8877,11/01
+F4AZF,JN39GG,EME,,,,144:  IC275h  500W  8874  4x 15el,04/06
+F4BKV,IN95PT,,,,,144: TS700 150W 9el - 432: TS440S TRV  70W 21el - 1296: TRV 1W 3x35el,04/02
+F4CIB,JN03,,,,,144: 250W  9el,05/02
+F4CYZ,JN38SF,EME,,,,144: FT897D 400W  2x 9el Yagi,05/05
+F4DDX,JN23QI,,,F0DDX,,FT897   FT817,03/08
+F4DSD,JN23JO,EME,,,,,01/05
+F4DXX,IN97LH,EME,,,,144. 17el 200W,01/06
+F4ERO,JN18JV,,,EX F0ERO,,,12/08
+F4JRC,JN23JW,EME,,,,144: 4x10el,01/01
+F4JVG,JN16UM,,,,,,07/02
+F5ANT,JN24RJ,,,,,,04/96
+F5AQC,JN05PU,,,,,,01/03
+F5BUU,JN03BO,,,,,,01/05
+F5DE,JN05DP,,,,,50: 50W 5el - 144: 100W 16el,08/07
+F5EAN,JN06CP,EME,,,,,01/94
+F5FEN,JN25JC,,,,,,01/03
+F5FHI,IN97GD,EME,,ex F1FHI,,,01/94
+F5FLN,IN94SR,,,,,144: 300W  17el,08/99
+F5FVP,IN95WB,,,,,144:  4x17el  1KW,07/00
+F5GHP,IN96LE,EME,,EX F1GHP  FC1GHP FD1GHP FE1GHP,,IC745+transverter  4x14elts DJ9BV 3.6Wl MGF1302B Power 400w,10/07
+F5HRY,JN18EQ,EME,,,,144: 1KW  4x11el,11/02
+F5IF,JN12IL,,,,,,08/08
+F5IVP,JN23QI,,,,,IC706MKIIG 50 W elts F9FT,05/07
+F5JKK,IN87PR,,,= FM5JC,,,08/07
+F5JNX,JN37PV,EME,,,,144: 4x 17el 600W,02/07
+F5JRX,JN25AW,,,,,,01/94
+F5KCR,JN26IX,,,,,,08/96
+F5KDK,JN23VF,,,,,,01/03
+F5KPO,JN24,,,,,,12/01
+F5LEN,JN38BO,,,,,144: IC275A 250W 17elB2,06/05
+F5LKW,JN23SJ,,,,,144: TS700 60W 13el,04/03
+F5LRL,JN26MV,,,,,144: 400W 4x10el,05/02
+F5LUW,JO10MP,EME,,ex F1LUW,,,11/95
+F5MGD,JN07AW,,,,,FT102 + tvtr,05/04
+F5MMX,JN18CN,,,FD1MMX  FE1MMX  F1MMX  SO9MMX  SO8MMX,,Home made,11/07
+F5MSL,JN26JS,EME,,ex FC1MSL,,144: 8877 4x11el (or 4x10el)  MGF1302,02/99
+F5MZN,IN87BU,EME,,,,,08/96
+F5NWK,IN97EJ,,,ex FD1NWK,,144: 9el 200W,05/04
+F5OIH,JN06,,,,,,08/03
+F5OWL,JN33CC,,,ex FC1OWL,,50w 2x9elts side by side with elevation,08/05
+F5PAU,IN88CB,,,,,144: 4x11el 150W,07/02
+F5RRS,JN36EB,,,,,144: 350W 10el Quad,10/06
+F5RSS,JN36EB,,,,,144: Kenwood TM-255 PA : TE SYSTEMS 1452G (350 Watts) ANT : 10 el. Qubical Quad,10/06
+F5SCL,JN29HP,EME,,,,FT225RD,07/08
+F5SDD,JN23RF,EME,,FD1SDD,,FT901  IC211,01/04
+F5SE,JN29BG,,,,,,06/03
+F5SIB,JN18EB,,,FD1SIB,,,03/09
+F5SJE,JN13,,,,,,12/95
+F5SJP,JN13VQ,,,,,144: TS790 180W 17B2,01/02
+F5VBW,JN03,,,,,,06/95
+F5VHX,JN04FT,EME,,ex F/G8MBI,,,06/03
+F6ANQ,IN94RT,,,,,,07/96
+F6AOI,JN33NQ,,,,,,08/02
+F6APE,IN97QI,EME,,,,144: 17el 200W,11/06
+F6BAZ,JN39EF,,,,,,06/02
+F6BEE,JN08FU,,,,,,01/03
+F6BEG,JN25JS,EME,,,,144: 3wl Antenna  300W,06/08
+F6BKI,IN94,EME,,,,,12/05
+F6CBH,JN19BH,,,,,,12/07
+F6CGJ,IN78RK,EME,,,,144: 4x11el  400W,04/00
+F6CIO,JN26JH,,,,,,09/98
+F6CJG,JN15,EME,,,,,01/93
+F6CKZ,JN09LH,,,,,,01/97
+F6CRP,IN96KE,,,,,50 MHz : 3 el - 100 W   144 MHz : 600 W- 9 el DK7ZB,09/07
+F6CTW,JN18,EME,,,,,01/93
+F6DHI,JN23RK,,,,,144: 200W 9el MGF1302,04/04
+F6DKQ,JN37BI,,,,,,11/08
+F6DKW,JN18CS,,,,,,02/01
+F6DRO,JN03TJ,,,,,2500Watt  18el  BF981,03/04
+F6DWG,JN19AJ,,,,,,04/05
+F6DWH,JN19,,,,,,01/95
+F6EAS,IN98,,,,,,08/01
+F6EGV,JN33AQ,,,,,,08/07
+F6EMT,IN98FG,EME,,,,,01/94
+F6EYM,IN99,EME,,,,,12/95
+F6FHP,IN94TR,EME,,ex F1CYO,,144: 1KW 4x6 wl   432: 27el 800W,08/06
+F6FLV,JN18AT,,,,,,02/96
+F6FTN,JN08XS,,,,,TS2000X 144: 4x9el 300W,01/04
+F6GPT,IN94SW,,,,,144: 11el 400W,03/07
+F6GRB,JN25KP,EME,,,,144: 4x 10el  600W,05/06
+F6GUU,JN05CU,,,,,FT857,04/06
+F6HLC,JN26HS,EME,,,,144: gs35b or th308 17elt yagi,09/07
+F6HRO,IN88JQ,,,,,IC910 144: 17el 100W,05/06
+F6HVK,JN27LH,EME,,EX F1AUQ,,144: 4x 17el H or single Yagi 400w  /  kw,01/08
+F6HYE,JN36DG,EME,,,,,01/94
+F6IFX,JN07CX,,,,,,10/07
+F6ITS,JN33MP,,,,,IC706MK2G  144:  50W  quad 8 el   432: 20W quad 2x11el,04/08
+F6IZZ,JN18GR,,,,,,01/03
+F6JXR,IN98HW,,,,,,09/98
+F6KHM,IN78RJ,EME,,,,,06/02
+F6KRK,JN18AS,,,,,144: 17el 120W,08/08
+F6KSX,JN18,,,,,,01/03
+F8BKD,JN38LG,EME,,,,144: TS-2000  4X11 el  1000W,01/03
+F8CS,JN27UR,,,,,,08/98
+F8DNX,IN93FJ,EME,,,,IC-7400. 100 watts. 10 elts (DK7ZB)home made quad(4x10 coming soon),05/08
+F8DO,JN26IF,EME,,,,50: TS680S 5el - 144: FT225 4CX1000 2x11el MGF1302,08/06
+F8DYR,JN07WL,,,F4DYR,,50 / 144 : homebrew,10/08
+F8ENY,JN03RO,,,,,,08/08
+F8IPS,JO00SQ,,,,,,07/00
+F8KFR,JN09RG,,,,,144: 2x9el 1-8KW - 432: 80W 26el doublequad,09/06
+F8OP,JN26MM,EME,,,,50: TS690 100W 6el - 144: FT225RD Mutek 2x4CX350 500W 17B2 Cushcraft,02/05
+F8PKC,JN38MG,EME,,,,144: TS-2000 4x17b2 qro,04/06
+F9HS,JN23AT,EME,,,,144: 4x BVO3WL 8877 MGF1302,10/07
+F9IE,IN86WW,,,,,,05/04
+FA1APX,JN23XL,EME,,,,144: IC970  4 x 22 el DJ9BV  2 x 4CX350F,04/00
+FC1DUZ,IN97NB,,,,,,01/03
+FF6KBF,JN18BW,,,,,,01/03
+FK8HA,RG37FR,,,,,,01/03
+FM5CS,FK94LI,EME,,,,144: 4x 17el B2 1.5KW 8877 LNA 0.5db,05/06
+FO4NK,BH52,EME,,,,,01/94
+FO5RK,BH52,,,,,,01/03
+FR5DN,LG78SS,EME,,,,,12/05
+FS5UQ,FK88LC,,,,,,01/03
+FT5XO,ME40VK,EME,,,,,03/05
+FY5DG,GJ35QD,EME,,,,,01/03
+G0AEI,JO01GO,,,,,,01/91
+G0AFH,JO01EI,,,,,144: 2x17el 400W,01/08
+G0BPU,JO02,EME,,,,,01/94
+G0CHE,IO90PS,,,,,50:  400W  70: 50W,05/07
+G0CUH,IO70LG,EME,,,,144: 500W 10el,04/05
+G0CUZ,IO82WM,,,,,FT726r   50: 50W  2el -  144: MGF1302 2x3CX400A7 5el or 11el - 432: 10W 5el,07/02
+G0DJA,IO93IF,,,EX G6VMQ,,TS2000X  SDR1000  FT817,09/08
+G0EVT,IO93GR,,,,,144: IC202S  250Watts  3wl DJ9BV,07/01
+G0FIG,IO90UU,,,,,50: IC575h 6el 400W - 144: IC275h 400W 10el MGF1302 - IC475h 300W 2x19el,05/00
+G0GMB,IO92NB,EME,,,,IC756 PRO II   TR144H   MGF1302 LNA   GS35 PA.   Ant: 17 ele F9FT for 2m -  5 ele for 6m - 3 ele for 4m,08/08
+G0GMS,IO82XT,,,,,50: IC746 & IC756pro GS35b pre-amp,04/06
+G0HVQ,IO81UX,,,,,Icom IC7400,04/07
+G0HYP,IO84FN,,,,,FT847 IC1271E  144: 1.5KW 2x17el - 432: 2x21el,09/06
+G0ISW,IO84OQ,,,EX G1MOG,,Kenwood TS-2000 & Create Log Periodic,04/07
+G0JDL,JO02UK,,,,,,01/96
+G0JUR,IO92WT,,,,,,08/99
+G0KAD,IO91VC,,,G1JUZ,,144: FT1000MkV   Elecraft XV Transverter  2x 12ele hoembrew  GS35,04/07
+G0KAS,IO91UI,,,,,144: IC275h  2x4CX250b  17el  Preamp,01/00
+G0KPW,JO02RF,,,,,144: 400W  2x17B2,07/06
+G0KSC,JO01,EME,,
+G0KUX,IO91WP,,,,,,11/01
+G0KZG,IO80,,,,,,03/07
+G0LBK,IO93JK,,,,,,01/93
+G0MGA,JO00DT,,,,,,01/93
+G0MJW,IO91JO,,,,,50: 100W 5el - 70: 160W 4el - 144: 2x4CX250b 13el,01/97
+G0NFA,IO91NE,,,,,144: IC271A,04/01
+G0PES,IO83LS,,,,,,11/99
+G0RRJ,IO91FE,,,ex G8OPR,,1296: 100W 55el,04/04
+G0RUZ,IO93FR,EME,,ex G6ZTU,,144: IC746  GS35b  6x 4.6wl. 32JXX X-Pole  MGF1801 - 432: 2003 - 1296: 5m Dish TH347,10/02
+G0SAS,IO84OQ,,,,,Kenwood TS-2000,10/07
+G0TPH,IO92IO,,,,,,12/01
+G0UWK,IO83UB,,,ex G1WEM,,FT1000mp  144:  TV144/28 GS31b 400W 5WL  432: 2x 6WL GS31b MGF1302,10/06
+G0WUU,IO92SR,,,,,,08/08
+G0XDI,IO91RP,,,,,,11/01
+G1EMJ,IO82WM,,,,,,01/93
+G1GEY,IO94FW,EME,,,,,01/94
+G1KAW,IO91TK,EME,,,,144: 9el 200W,08/06
+G1MOG,IO84OQ,,,,,Kenwood TS-2000,10/07
+G1OGY,JO01GR,,,,,,09/04
+G1SWH,IO83QO,,,,,,10/04
+G1WPF,IO91RP,,,,,144: IC275E  Tempo2002  3CX800  9el,08/99
+G1XRL,EN35,,,,,,01/03
+G1YJI,IO91WP,,,,,,11/01
+G1ZJP,IO92WV,,,= M1MHZ,,IC7400  IC1275e  IC475H  IC202s  IC402  TS830s & Tvtrs 4x 12el  400W,11/08
+G3BW,IO84,,,,,,01/93
+G3JHM,IO91LC,,,= F0AKD EI4AW,,50: 100W 5el - 144: 400W 2x13el,05/01
+G3LQR,JO02QF,EME,,,,,01/94
+G3LTF,IO91GG,EME,,,,eme: 6m dish,03/06
+G3NAQ,IO91HL,,,,,50: 400W 3el - 4: 100W 2el - 144: 400W 17el - 70: 250W 21el,08/05
+G3UTS,IO94CU,,,,,144: 400W  9el M2  BF981,02/04
+G3WCS,IO83RH,,,,,144: TS430S HB Transverter  HB Amp 2x4CX250B 20el DJ9BV  70: 100W 4el   50: 100W 4el,01/05
+G3WDG,IO92rg,EME,,
+G3WZT,IO90UX,EME,,,,IC756PRO  50: 7el 400W - TS2000 144: 2x12el 400W - 432: 1x19el 50W,03/07
+G3YNN,JO00EU,,,,,50:  2-5W 5el - 144: FT736 100W 14el - 432: FT736 25W 11el,05/04
+G3YYD,IO91TR,,,,,FT1000MP Transverter 4CX400 400w to 3wl yagi at 22m AGL,04/05
+G4AEP,IO91NJ,EME,,,,144: 400Watt  17el  ATF53045,01/05
+G4AFJ,IO92HO,,,,,144: 150W 10el,09/01
+G4ALY,IO70UL,,,,,,12/03
+G4AOA,IO83TD,,,,,,01/93
+G4APJ,IO83UP,,,G8APJ,,FT736  FT817,10/07
+G4ASR,IO81MX,EME,,,,144: FT221GTi  2x3CX400  17el (4x17el),02/04
+G4BRK,IO91HP,,,,,144: 80W 9el,05/08
+G4CBW,IO83UB,EME,,,,144: TS2000  IC756PROII 4x 9el  800W,01/07
+G4CCH,IO93,EME,,,,5.4m dish. 650W CW or 450W JT,05/07
+G4CJG,IO94CR,,,,,,01/93
+G4CLA,IO92JL,,,,,,09/03
+G4DBL,IO91JJ,,,,,144: IC746PRO  4CX350 300W 17el,11/04
+G4DDK,JO02PA,EME,,,,TS2000X   IC275   FT847   FT817   FT290,04/07
+G4DEZ,JO03AE,,,= G4ZDE G9Z,,IC910 and IC7400  various Linears,10/06
+G4DHF,IO92UU,EME,,,,144: K2 txvtr GS35B  8x Yagis 2.2 wl,10/06
+G4DOL,IO80SP,,,,,,04/99
+G4DZU,IO93ES,EME,,,,1296: 800W 3m. Dish,05/07
+G4ERP,IO81XW,,,,,,01/03
+G4FDX,EN60VL,,,,,,01/03
+G4FRE,JO01KK,EME,,,,,01/94
+G4FUF,JO01GN,EME,,,,,04/05
+G4HGI,IO83PL,,,,,144: TS780 GS35b 400W 17el,08/04
+G4HGT,IO83,,,,,,01/93
+G4IGO,IO80NW,EME,,,,50: IC706 300W 6el - 144: IC706 2x 17el 400W,04/05
+G4JCC,IO90MS,,,,,,01/03
+G4JZS,IO91SO,,,G8LZE,,,06/07
+G4KLA,IO92AK,EME,,,,2x11 400w SSB SP-2000 preamp TS790 LinearAMP,12/08
+G4KLX,IO93FB,,,,,,03/04
+G4KUX,IO94BP,EME,,,,,10/07
+G4KWQ,IO92AQ,,,,,144: FT847 400W Preamp 16el Tonna,04/03
+G4LOH,IO70JC,EME,,,,,05/07
+G4ODA,IO92WS,,,,,,01/05
+G4OIG,IO92OG,,,G8CXK,,TS130V - FT736R (50 - 1296) - FT817 - C528,09/07
+G4PBP,IO82WO,,,,,,07/01
+G4PCI,IO91AL,,,,,IC756PRO,01/03
+G4PCS,IO91WV,EME,,,,indoor antennas,10/07
+G4PIQ,JO01MU,EME,,,,144: 2x3CX800  ATF10136 4x15el CueDee,10/04
+G4RGK,IO91ON,,,,,144: 300Watt 17el MGF1302 - 432: 400Watt  8x27el MGF1302,03/01
+G4RKV,JO01OI,,,,,144: IC275E  EME Pwr  2x9el  MGF1302,01/01
+G4RNL,IO83,EME,,,,,01/94
+G4RRA,IO80BS,,,,,144: 4x10el 400W,08/03
+G4SHC,IO83VO,,,,,,01/93
+G4SSO,IO91TO,,,,,,08/94
+G4SWX,JO02PB,EME,,,,,06/09
+G4VIX,JO01PU,EME,,,,,01/94
+G4VPD,IO92BJ,,,,,,01/90
+G4VXE,IO91QL,,,,,,03/01
+G4WQE,JO01CJ,,,,,,01/03
+G4XBF,IO91QE,,,,,,04/99
+G4XUM,IO83,EME,,,,,10/02
+G4YTL,IO92MB,EME,,,,144: IC275  1KW  4x 5wl DJ9BV,05/05
+G4ZFJ,JO01HO,EME,,,,50: 4Q 400W   70: 4Q 25W   144: 4x 9el KW,01/09
+G4ZTR,JO01KW,EME,,,,144: FT1000MP  LT2S  2x4CX250B  MGF1302  CC17B2 or 2x9ele OZ5HF,08/05
+G5WQ,IO91DO,EME,,,,ic756pro3  jst-245    ic706mk2g  ft100d  4x 11el 500W,10/07
+G6AVK,JO01HO,EME,,,,,10/08
+G6DER,IO93GN,,,,,,01/97
+G6HIE,IO90ST,,,,,,01/09
+G6HKM,JO01FT,,,,,,01/94
+G6RAF,IO92QP,,,,,,10/95
+G6TEL,IO90AR,,,,,,05/04
+G6TUS,JO02AG,,,,,TS-2000 - 100w - 12ele ZL,02/09
+G6UT,JO01BS,,,= M0ITY OK2IT - ex OK2ITY,,,05/06
+G6XRK,IO90RN,,,,,144: IC820H  Henry2002  Mutek  15el M2,01/98
+G6XVV,IO93,,,,,,11/95
+G6YAY,IO80EL,,,,,,01/03
+G6YIN,IO93ET,,,,,,01/99
+G6ZTU,IO93HN,EME,,,,,01/93
+G7KQW,IO93,,,,,,01/03
+G7LIJ,JO01GG,,,,,,01/95
+G7NCF,IO81RE,,,,,FT847,05/05
+G7RAU,IO90IR,,,,,144: FT757  Mutek  12el  400W,05/08
+G8APZ,JO01DO,EME,,,,IC-275 or IC475 on every band 144MHz - 24GHz with transverters,10/07
+G8BCG,IO70RK,EME,,= H44PT,,50: IC756POOII 400W 7el,06/06
+G8BHH,IO82WO,,,,,,07/01
+G8CLZ,JO00EU,,,,,50:  2-5W 5el - 144: FT736 25W 9el - 432: FT736 25W 11el,09/01
+G8DKK,IO91VX,,,,,,05/07
+G8DSL,IO90FW,,,,,,01/03
+G8ECI,JO03AK,,,,,50: 5el  300W - 70: 5el  160W -  144: 10el  300W,01/01
+G8GTD,IO93,,,,,,11/01
+G8GXP,IO93FQ,,,,,TS2000X + PAs for 6m 4m 2m 70cms and 23cms (see QRZ.com for details),11/08
+G8IZY,IO91VC,,,,,144: TS700G BF981 4CX250b 250W 9el M2,01/01
+G8LZE,IO91SO,,,G4JZS,,,08/08
+G8LZG,IO93SR,,,,,FT847 or FT100,11/01
+G8MYK,IO92BJ,,,,,IC275H- 100W- 17el,07/02
+G8OPR,IO91FE,,,,,,01/03
+G8PYP,IO90AS,,,,,,01/93
+G8ROU,IO92,,,,,,01/93
+G8RWG,JO01BN,EME,,,,144: FT1000MP DEM144/28 2x8874 MGF1302 9el full elv,05/02
+G8T,IN79JX,,,,,,06/02
+G8TIC,IO82VF,,,,,50: JST245+8877+6el   144: IC7400+1KW+DJ9BV-10el,08/08
+G8TOK,JO01BI,,,,,,04/02
+G8UUR,IO92ET,,,,,144: 80Watts  3ele@10mtrs,07/00
+G8VHI,IO92FM,,,,,50: 100W 4el - 70: 10W 4el  - 144: 9el 200W -  432: 2x23el 100W - 1296: 67el 40W,07/04
+G8VR,JO01DJ,,,,,50: 3el 100W,05/03
+G8VYK,JO01FO,EME,,,,144:  IC251E  MGF1302  180Watts  15 ele Cue Dee 15m,07/05
+G8XVJ,IO83RJ,,,,,144. LT2S  8877  17el M2,08/99
+GB2LBN,IO85,EME,,,,144:  17el  100W,08/00
+GB2LD,IN79JX,,,Expedition,,,08/06
+GB2WQ,IO66,,,Expedition,,,01/92
+GB4IOM,IO74PB,EME,,,,,05/04
+GB4SPT,IO74PB,EME,,,,,05/04
+GB4VR,IO57,,,Expedition,,,01/90
+GB4XS,IO78HA,,,Expedition,,50: IC746 100W 4el - TR9130 - 70: 150W 6el - 144: 2x14el 400W,08/00
+GD0WKX,IO74SD,,,Expedition,,,10/95
+GD4IOM,IO74QD,EME,,,,50: 400W  4x7el - 144: 400W  8x9el - 432: 400W  4x20el,08/01
+GD4UFD,IO74,,,Expedition,,,01/88
+GD7HEJ,IO74SD,,,,,,10/95
+GI0OTC,IO65QE,,,,,,12/00
+GI1JUS,IO74,,,,,,01/93
+GI4KSO,IO64XK,,,,,70: 100W 3el - 144: 300W 8el,07/03
+GI4SNA,IO64XM,EME,,,,144: 4x 12el QRO,02/08
+GI6ATZ,IO74AJ,,,,,144: IC251E Mutek FE  300W  13el,12/06
+GI7UGV,IO74DO,,,= GM7UGV,,FT847  144:  200W 8el,04/06
+GI8YDZ,IO65,,,,,,01/88
+GJ0JSY,IN89XE,,,,,,12/01
+GJ0RUZ,IN89,EME,,Expedition,,,03/02
+GJ4ICD,IN89WE,,,,,,10/98
+GM0BQM,IO85CE,,,,,144: 200W 2x17el,03/02
+GM0EWX,IO67UL,,,,,144: 12el  8874,05/02
+GM0GMD,IO86AE,,,,,,07/00
+GM0HUO,IO86OI,,,,,FT736r    50: 100W 3el - 144: 180W 12el,08/99
+GM0JOL,IO78VM,,,,,,01/93
+GM0ONN,IO87,EME,,,,,03/06
+GM0WDD,IO85JV,,,BECOMING ACTIVE 07/07 -> 6M HOME  2M PORTABLE,,6m - IC756pro2  2m FT-847,05/07
+GM0WDF,IO75PW,,,,,144:TS940 Trsv IC271E 400W 17el,09/01
+GM3POI,IO88OW,,,,,,10/01
+GM3SBC,IO85IX,EME,,,,144: 100W 11el,11/05
+GM3SEK,IO74SR,,,,,,05/07
+GM3UCN,IO85RV,,,,,,04/04
+GM4AFF,IO86ST,,,,,144: 14el Tonna EME-Pwr MGF1302,08/03
+GM4CXM,IO75TW,EME,,,,144: FT736R  3cx800A7  2x9el @ 23m  432: 120w 2x23el Wimo @ 21m   23cm: 150w 4x44el @ 11m,01/09
+GM4ILS,IO87IP,,,,,,07/01
+GM4ISM,IO85AR,EME,,,,FT847,07/05
+GM4JJJ,IO86GB,EME,,,,144: 4x3wl XPOL  8877,05/01
+GM4OGM,IO85,,,,,,01/88
+GM4SIV,IO57RT,,,Expedition,,,07/06
+GM4VVX,IO78TA,,,,,50: TR751E 5W Dipol,04/06
+GM4WJA,IO87MN,EME,,,,,03/07
+GM4YXI,IO87WJ,,,,,,04/00
+GM5RP,IO66,,,QSL via G3SEK,,,08/01
+GM6HGF,IO75QP,,,MM0XPG,,,05/08
+GM6VIU,IO85,,,,,144: TR851E 25W 24el,11/99
+GM6VXB,IO97AQ,EME,,,,6M  400W-7EL  4M  100W-6EL  2M  250W-11EL  70CM  50W-2X19EL  23CM  50W-2X55EL  12CM  10W-80CM DISH  9CM  15W-80CM DISH  3CM  10W-80CM DISH,04/07
+GM7ASN,IO78TA,,,,,,06/95
+GM7LVJ,IO85,,,,,,01/94
+GM8OEG,IO86LL,,,,,,04/06
+GU7DHI,IN89RL,,,,,,12/01
+GU8FBO,IN89QK,,,,,144: 10el 50W,10/06
+GW0KZG,IO82,,,,,,12/98
+GW0PZT,IO72PT,,,,,,01/93
+GW0VWD,IO81EM,,,,,,07/96
+GW3HWR,IO71XN,,,,,FT847 IC910 + Amps - 144: 350W 9el Preamp,08/05
+GW3LEW,IO71PS,,,,,,04/03
+GW3XYW,IO71XR,EME,,,,144: 4x 10el 400W,01/06
+GW4DGU,IO71SV,EME,,,,144: 15.6dBi yagi 750W SSPA 0.4dB HEMT 432: 2x yagi (19.5dBi) 550W SSPA 0.4dB HEMT,05/08
+GW4HDF,IO81JO,,,,,,04/02
+GW4LXO,IO81,,,,,,08/98
+GW4UWR,IO81LP,,,,,,08/99
+GW4VEQ,IO73SG,,,,,,10/02
+GW4VVX,IO81JP,,,,,,06/95
+GW4ZQV,IO81LQ,,,,,,08/97
+GW6TEO,IO71LP,,,,,TS-2000. 50mhz-250W  70mhz-100W  144mhz-300W  432mhz-50W.,05/08
+GW6YAY,IO81LM,,,EX G6YAY,,144: IC821H  300Watts  17ele CC,08/03
+GW7SMV,IO81LN,EME,,,,IC910H  144: 12eleM2  432: 19ele tonna  50: ICOM 746 6ele 1wl yagi,06/08
+GW8ASA,IO81EM,,,,,FT847 IC706 Linears - 144:  220W 9el,02/04
+GW8ASD,IO83LB,,,,,Icom IC756 ProIII with Acom 1000 and 5ele for 6m.Icom IC756 ProII with transverter 100w 4ele 4m. Icom IC910X with linear for 23cm,06/07
+GW8IZR,IO73TI,EME,,EX G8IZR,,144:  2x 9el GS35  .23 dbrx -  432:  4x21Y 350W 1dbrx - 1296:  8W  2m dish,04/06
+GW8KCY,IO71VS,,,,,,04/08
+GW8OQV,IO81QR,,,,,144:  FT225-Mutek  2x4CX250b  4x10el DL6WU or 17el,07/98
+GX0SAS,IO84OQ,,,,,Kenwood TS-2000,10/07
+GX4NOK,IO93FR,,,,,,01/03
+GX4WWR,IO91LL,,,,,,01/03
+H40HP,RH29,EME,,EXPEDITION,,144: 18el 1500W Preamp,03/09
+H44HP,QI90,EME,,EXPEDITION,,144: 18el 1500W Preamp,03/09
+H44HP/RI00,RI00,EME,,EXPEDITION,,144: 18el 1500W Preamp,03/09
+H44HP/RI01,RI01,EME,,EXPEDITION,,144: 18el 1500W Preamp,03/09
+H44MS,QI90XN,EME,,= DL2GAC,,144: 18el M2 1 KW,03/08
+HA0DU,KN07VN,EME,,,,,09/07
+HA0HO,KN07SU,EME,,,,144: 6x 10el 3.5KW,12/06
+HA0MS,KN17,,,,,,08/08
+HA1BC,JN87PU,,,= DL1MAJ,,144: 3CX800A7  2x17el,12/00
+HA1FV,JN87JJ,,,HG1KYY,,FT-847 2m: 2x12el  300w 6m: 5el  100w,05/08
+HA1KVM,JN87AL,,,,,,01/03
+HA1KYA,JN87HF,,,,,144: 8x13el DL6WU  200W,11/98
+HA1VHF,JN87GF,EME,,ex HG1W,,,10/98
+HA1W,JN87GF,,,,,,01/03
+HA1YA,JN87GF,EME,,ex HG1YA,,144: 8x13el & 8x14el - 432: 16x32el - 23+13:1.5m dish 6+3: 90cm dish,06/05
+HA2A,JN87,,,,,,12/99
+HA2NP,JN97EO,,,,,,05/01
+HA2RD,JN87WB,,,,,,10/08
+HA2RG,JN86RT,EME,,,,144:  FT102  4x 17el DJ9BV  2KW MGF1302,10/06
+HA2RX,JN87,,,,,,12/98
+HA2SX,JN87VC,,,,,144: IC821H  600Watts  11ele,12/98
+HA2VH,JN87WG,,,,,,03/03
+HA3DXC,JN96JO,,,,,144: 5.5WL  2x8877,07/96
+HA3UU,JN96JO,,,,,144: TS711A  GS35B  5.5wl  4wl  2wl  MGF1100 - 432: FT736R  ELH730  3CX800A7 4x10wl MGF1100,09/04
+HA4A,JN96JO,,,ex HA4XT,,144: TS711A  GS35B  5.5wl  4wl  2wl  MGF1100 - 432: FT736R  ELH730  3CX800A7 4x10wl MGF1100,05/04
+HA4KYB,JN97DI,,,ex HG4KYB,,,01/94
+HA4WQ,JN97IF,,,,,,06/03
+HA4XG,JN86GS,EME,,,,144:  FT726R  60W  10el Yagi,12/08
+HA4XT,JN96JO,,,,,,01/05
+HA5BSW,JN97JD,,,ex HA3GK,,144: IC706MKII  KNW TR751  300w  2x 13ele yagi,07/05
+HA5CAR,JN97,,,,,,07/01
+HA5CBA,JN97OM,,,,,144: HF trsv+conv,04/04
+HA5CRQ,JN97,,,,,,08/02
+HA5CRX,JN97KP,EME,,,,144: IC-7000  GS31  SP2000  3wl DJ9BV-BVO2,12/07
+HA5CW,JN97PM,,,EX HG5CW,,144: FT225RD/Mutech B1016  GS35B  800W  10el  MGF1302,11/07
+HA5IW,JN97LN,,,,,,08/01
+HA5KDQ,JN97LN,EME,,,,,07/03
+HA5LV,JN97ML,,,,,144: FT-897 + 300W + 3wl DJ9BV,05/08
+HA5OO,JN97OM,,,,,144: 100w 3wl DJ9BV 50: 5W FD4 HF:100W FD4  HB9CV for 28 MHz,05/07
+HA5OV,JN97NJ,EME,,,,144: FT920+Trnv  GS35  1-5KW  4X10 ele. BVO2  MGF1302,06/07
+HA5PT,JN97MK,,,,,FT847,09/08
+HA5RL,JN97PL,,,,,,12/04
+HA5TS,JN97LL,,,,,144: IC-706MKII  8ele,07/04
+HA5UK,JN97OM,,,HA9TE HA5CTA,,144: 300W 10el 3wl,01/08
+HA6NA,JN98VC,,,,,144: 250W F9FT,08/01
+HA6NN,JN98VC,,,,,FT-847 6 ele YU7EF yagi for 2 m  7 ele YU7EF for 70 cm  3 ele DK7ZB for 6 m,01/08
+HA6NQ,JN98WA,,,,,144: 700Watts CF300 DJ9BV 3.2wl,01/05
+HA6NY,JN98WC,,,,,144: 1000W MHP145 17el full el - 432: 40W LNA435 18el full el - 1296: 10W 55el F9FT,12/06
+HA6OQ,JN98JC,,,ex HG6OQ,,,08/98
+HA6VV,JN97WS,,,,,,06/09
+HA6VV/P,JN97WV,,,,,,06/09
+HA6ZB,JN97,,,,,,01/05
+HA6ZV,JN97WH,,,,,,09/04
+HA7JJS,JN97OG,,,,,,10/95
+HA7KPL,JN97OG,,,ex HG7KPL,,,12/95
+HA7MB,KN07BM,,,,,IC-706  Ft200 IC910h Ant.2m-8el Quagi 6m-Moxon HF-Dipole,10/07
+HA7NK,KN07CM,,,,,144: 200W 4x15el 9BV Preamp,06/00
+HA7PL,JN97OG,,,ex HG7PL,,,11/06
+HA7RF,JN97NP,,,,,IC 735 +conv,04/03
+HA7UL,JN97KK,,,,,Yaesu FT847  W3DZZ,05/08
+HA8AR,KN06MQ,,,,,TS790A FT-897D + PA GI7B  3wl DK7ZB,12/07
+HA8CE,KN06EN,EME,,ex HG8CE,,144: GS35b 400W 16 el. DJ9BV  CF300,12/05
+HA8CS,KN06BD,,,,,,01/03
+HA8ET,KN06,EME,,ex HG8ET,,,01/93
+HA8KCP,KN08DQ,,,,,,01/03
+HA8V,KN06HT,EME,,,,10w 3el -- 900w 44el -- 75w 92el -- 25w 76el -- 50w 1.2 dish -- 200mw 1.2 dish,10/06
+HA8VF,JN96UW,,,ex HG8VF,,,10/97
+HA9KRL,KN07GT,,,,,,04/05
+HA9MCQ,KN08JC,,,,,144: 150W 14el CF300,06/98
+HA9MDP,KN08DF,,,EX HG9MDP,,FT-736  FT-897,04/07
+HA9OZD,KN08DF,,,ex HG9OZD,,144: TR9130 150W 14el CF300,04/06
+HA9RC,KN08NB,,,ex HG9RC,,,01/94
+HAM3DXC,JN96JO,,,SpecialCall,,144: 5.5WL  2x8877,07/96
+HAM3UU,JN96JO,,,SpecialCall,,144: 5.5WL  2x8877,07/96
+HAM7JJS,JN97OG,,,SpecialCall,,,07/96
+HAM7KPL,JN97OG,,,SpecialCall,,,07/96
+HAM7PL,JN97OG,,,SpecialCall,,,07/96
+HAM8CE,KN06EN,EME,,SpecialCall,,,11/96
+HB2FAP,JN47CE,,,,,144:   16el  1KW,12/00
+HB5OK,JN46LA,,,SpecialCall,,144: FT847  8877 17el  MGF 1302,12/98
+HB9ADJ,JN36LH,EME,,,,50: FT-897D + Acom 1000 ant. 3 el  144: FT-857D + PA 200W  ant. 4 x 11 Flexa AzEl,04/07
+HB9AOF,JN36LM,,,,,,01/97
+HB9BBD,JN47EE,,,,,,01/03
+HB9BIN,JN37XH,,,HB2BIN  HE7BIN,,IC-910/IC-7800,12/08
+HB9BQU,JN37VD,,,,,50: 10W - 144: 200W 17el,08/99
+HB9BZA,JN36BE,,,,,50: FT-847  V-2000 - 144: 3CX800  11Y - 432:  2*8874  19Y,01/04
+HB9CVD,JN36CD,EME,,,,,01/94
+HB9CYN,JN36RX,,,,,144: 30W  7el  10db Gaas,01/99
+HB9DBM,JN47BE,,,qrv at HB9Q,,,03/99
+HB9DDS,JN47IK,,,,,,05/02
+HB9DFG,JN37SM,EME,,,,144: FT100 - 500W - 7el - MGF1302,08/08
+HB9DKM,JN37SL,EME,,,,50: 3el vertical - 144: 150W  2x11el Flexa MGF1302 - 432: 9el X-Quad 100W CF300,03/02
+HB9DLU,JN45LU,,,,,,01/03
+HB9DSU,JN36CG,EME,,ex IK2BHX K2BHX,,,07/05
+HB9DUR,JN46ME,EME,,EX HB9SUL,,NOT QRV FROM HOME,09/07
+HB9EFK,JN46JE,EME,,ALSO CT2JTY AND EX HE9ZLE HB3YIT,,TS-2000X  12el DK7ZB + MGF 1302 / HM GS-31B PA,06/08
+HB9FAP,JN47PH,,,,,144: IC7400 2x18 el Yagi  1KW,07/08
+HB9FMN,JN47CI,,,,,TS-940s  TEN-TEC 2m & 6m X-verter  FT-897D  FT-817ND,08/08
+HB9HLI,JN37JB,EME,,,,,03/07
+HB9HLM,JN36KW,EME,,= CN2DX - EX HB9SAX,,,06/08
+HB9LU,JN46EW,,,,,,06/96
+HB9MM,JN36HP,,,,,,08/02
+HB9MS,JN47PH,EME,,,,144: 8877,12/99
+HB9OCW,JN46LA,EME,,,,50: 4el 10W - 144: 4x13B2 1KW - 432: 2x29el 1KW,10/99
+HB9PJT,JN47FG,,,,,,05/02
+HB9Q,JN47CG,EME,,HB9PMD  HB9CRQ,,50: 10W 11el - 144: 15mPb & 8x19el 1KW - 432: 15mPb 1KW - 1296: 15mPb 200W,04/07
+HB9QQ,JN47,EME,,,,50: 2x 5el  144: 17el QRO,10/05
+HB9RUZ,JN47JM,,,,,,12/96
+HB9SJV,JN36BK,,,,,50MHz: 6 el & 2x5/8 vert.  144MHz: 100W 11el,08/07
+HB9SLO,JN36LT,,,,,144: FT736r 1KW 18el LY,04/03
+HB9SNR,JN36MQ,,,,,144: FT736r  800W  12el M2,11/01
+HB9STI,JN47GJ,,,,,,01/93
+HB9STY,JN36IP,,,,,FT690R  50: 150W vert & 5el - 144: 300W 2x15el,07/98
+HB9SUL,JN46LA,,,,,,01/03
+HB9SV,JN45LV,EME,,,,,08/00
+HB9WAH,JN47FD,,,,,50: 10W  - 144: 2x 11El  1kW MGF1302  - 432:  2x 18El  1kW  MGF1302 - 1296: 4x  24El  10W MGF1302,04/04
+HB9ZGA,JN47CH,,,,,,10/07
+HC5K,FI07NB,,,,,,01/03
+HF75PZK,JO93AC,EME,,SpecialCall,,,01/05
+HG1DLZ,JN87HF,,,,,144: 8x13el  200W  MGF1402,12/98
+HG1ZR,JN86KU,,,HA1ZR (1965-1967),,FT 817,01/09
+HG2EAD,JN97,,,,,,01/93
+HG2KNP,JN97,,,,,,01/93
+HG2NP,JN97,,,,,,01/95
+HG3DXC,JN96JO,,,,,144: 5.5WL  2x8877,08/98
+HG3O,JN96JO,,,,,144: 5.5WL  2x8877,08/98
+HG4XG,JN96,,,,,,01/93
+HG5CYT,JN97,,,,,144:  FT290r 50W  5el - 432: 25W 11el,01/01
+HG5PT,JN97MT,,,,,,01/93
+HG6KNB,JN98,,,,,,01/93
+HG6KVB,KN07,,,,,,01/93
+HG6NQ,JN98WA,,,,,,01/95
+HG7AJ,JN97,,,,,,01/93
+HG7JAL,JN97KK,,,,,,07/02
+HG7JUV,KN07SP,,,,,,05/09
+HG7P,JN97KW,,,ex HG7B/p,,,04/97
+HG7WJ,JN97MP,,,,,,01/93
+HG9SM,KN08HF,,,,,,07/04
+HG9VHF,KN08EB,,,,,144: TR9130 150W 14el CF300,07/00
+HGM3DXC,JN96JO,,,SpecialCall,,144: 5.5WL  2x8877,07/96
+HGM3O,JN96JO,,,SpecialCall,,144: 5.5WL  2x8877,07/96
+HI3TEJ,FK49EL,EME,,QSL via ON4IQ,,144: 17el 500W,06/05
+HI8ROX,FK58AL,,,,,,01/03
+HK1DX,FJ29EM,EME,,,,144: 200W 17el - 432: 150W 8wl,11/06
+HL4GHT,PM35NU,EME,,,,144: 4x 13el 100W,03/08
+HL5XF,PM45OH,,,,,,01/03
+HP3XUG,EJ88SJ,EME,,EX KG6UH/DU1,,144: 4x 17el 1KW,01/00
+HQ8R,EK87,EME,,EXPEDITION,,,03/08
+HR9BFS,EK66UE,EME,,,,,12/07
+HS0ZIL,OK16bq,EME,,= DL2LAH,,144: QRP 2x10ele DK7ZB,02/09
+HS2CRU,OK03LE,,,,,,01/03
+HV0A,JN61FV,,,,,,01/05
+HV4NAC,JN61,,,Expedition,,,06/99
+I0EMV,JN62BK,,,,,,01/92
+I0FOV,JN62,EME,,,,,11/06
+I0NLK,JN62HB,,,,,FT736 200W 11el F9FT,03/06
+I0UGB,JN62BO,EME,,,,,11/06
+I0UZF,JN63,,,,,,06/00
+I1ANP,JN44VC,EME,,,,IC735+L4B - 144: TS700 4x4cx250b  MGF1302  4x16el DJ9BV - 432: IC402+lin 26db horn,03/01
+I1BSN,JN34,,,,,,01/93
+I1CPM,JN34VI,,,,,,01/03
+I1CPN,JN34VH,,,,,,02/04
+I1DMP,JN34XU,,,,,144: 20 el LYagi 17 dBi RX 430K  TX 56dbm,03/08
+I1JTQ,JN35UB,EME,,,,144: 2x18el  900W  MGF1801,08/01
+I1KTC,JN45HK,EME,,,,,11/96
+I1NDP,JN45AL,EME,,,,,10/08
+I1PIK,JN44TG,EME,,,,FT736R 50: 2x5el- 144: 14+14xpol-el Preamp - 432: 32el HL130 - 1296: 35el,05/07
+I1PSC,JN44MJ,,,,,FT-225rd + 200W-20eI  - IC475h-25el  - Trsv DB6NT 1296-55el,03/09
+I1TEX,JN35SA,EME,,,,144: 13el 300W,03/08
+I1TXD,JN45,,,,,,01/93
+I2FAK,JN45OB,EME,,,,144: 24x19el LLY  YL1056,12/04
+I2FHW,JN45,,,,,,01/93
+I2KBD,JN45PL,EME,,,,,04/07
+I2ODL,JN45KL,EME,,,,144: 4x17el 8877 - 432: 8x21el 3CX800A7 - 1296: 2m dish 2x7289,09/00
+I2OKW,JN45OO,,,,,,08/02
+I2PHD,JN45SL,EME,,,,,12/00
+I2RV,JN45PL,EME,,,,144: 4x 15el KLM,05/06
+I2SVA,JN45,,,,,,01/02
+I2UZV,JN45,,,,,,08/02
+I3DLI,JN65,EME,,,,6x19el 8877 CF379,11/00
+I3LDP,JN55LK,EME,,,,FT-736R + 144 Ampl with 2x4CX250B,04/08
+I3LDS,JN55SR,,,,,,01/90
+I3LGP,JN55WJ,,,,,144: IC746 100W  17el  BF960,01/04
+I3LLH,JN65BM,,,,,,04/00
+I3MEK,JN55SJ,EME,,,,,08/07
+I4LCK,JN54RK,,,,,432: FT736 3CX800 Preamp 4x25el LY @ 950m asl (portable: /4 JN54PD),02/08
+I4RHP,JN54QL,,,,,144: TS711+PA500W 17EL,07/04
+I4TTZ,JN54VJ,,,,,,01/03
+I4XCC,JN63GV,EME,,,,144: 4x17el F9FT  3CX800A7  preamp 1db,06/09
+I4YNO,JN54KP,,,,,144: FT-736R MuTek MGF1302 3CX800 20el Shark,08/03
+I5CTE,JN53XG,EME,,,,,02/01
+I5MPK,JN53,EME,,,,,01/94
+I5MXX,JN53JU,,,,,144:  4x4el & 4x9el,10/00
+I5MZY,JN53OT,EME,,,,144:  800W 4x10el BF998,10/04
+I5PPD,JN53PS,EME,,,,10368: 3m Dish 20W,10/00
+I5PPE,JN53NS,,,,,,01/03
+I5TWK,JN53FU,EME,,EX I8TWK,,,02/08
+I5WBE,JN53JR,EME,,,,144: FT736R 4x17el 8877 MGF1302   432: Yeasu FT 847 GS35b 4x26el   1296: LT23S 4x35 el 100W,03/08
+I5YDI,JN54BB,EME,,,,144: FT736  3cx800  2x17el or 4x15el,04/02
+I6BQI,JN72AK,EME,,,,144: 4x16jxx  TS2000  8877PA,03/06
+I6PNN,JN72GL,EME,,,,,01/94
+I6QGA,JN63,EME,,,,,01/94
+I6QON,JN63RL,,,,,,01/94
+I6WJB,JN72CK,EME,,,,144: 4x 16el  1 Kw  MGF1302,05/05
+I6YPK,JN72,,,,,,01/95
+I7CSB,JN71QQ,,,I2CSB,,TS790-FT847-IC756PROIII,05/08
+I7FNW,JN81GD,EME,,,,,01/94
+I7HCB,JN71VT,,,,,144: 150W 13el,12/01
+I7RNI,JN80,,,,,,01/93
+I8JIT,JN71HN,,,,,,08/08
+I8KPV,JN70KO,EME,,,,,12/06
+I8MPO,JN70FP,,,,,IC746PRO  Henry Radio 2002A  13el yagi  Landwehr 145MAS  186m asl,09/07
+I8REK,JN70,,,SilentKey,,,01/93
+I8TUS,JM89DE,,,,,,10/04
+I8UZA,JN70AU,,,,,144: FT847  150W  10el BVO3wl,09/02
+I8WES,JN70,,,,,,01/93
+IB0CW,JN60RS,,,EXPEDITION,,144:  250W  12 el Yagi,06/08
+IC8CQF,JN70CN,,,,,50: 100W  4el Yagi - 144:  300W  10el 3wl 9BV,08/05
+IC8EGJ,JN70CN,,,,,,01/89
+IC8FAX,JN70CN,,,ex IW8BZN,,144: FT736r  300W  20el,03/04
+IC8TEM,JN70CN,EME,,,,TS2000 - TS680 - HF VHF - 50mhz 2EL DK7ZB - 144mhz 20el shark - hf vertical gp,07/07
+IH9YMC,JM56XT,,,,,,08/04
+II0W,JN51,,,QSL via IW0BET,,,06/03
+IK0FEC,JN63,,,,,,01/93
+IK0FIY,JN61GW,EME,,,,FT736r 144: 6el 800W MGF1302 - 432: 33el 600W MGF1302,01/00
+IK0FTA,JN61GV,,,,,50: TS680 GaasFet 6el,05/02
+IK0IXI,JN52VB,,,,,Homemade xvtrs for 6m & 4m,06/08
+IK0IXO,JN52WA,EME,,,,,01/93
+IK0OKY,JN61ES,,,,,50: loop quad fractal 100W - 144: 50 w jpole,06/09
+IK0OZK,JN52VC,EME,,,,350W- 2x17el- Preamp,12/99
+IK0PCJ,JN63CL,,,,,,01/03
+IK0RNL,JN61GW,,,,,,01/03
+IK0SMG,JN61ER,EME,,,,,07/06
+IK0SOI,JN62HN,,,,,,06/02
+IK0VKL,JN61GV,,,IW0DRT,,,04/07
+IK0VMO,JN62LH,EME,,,,144: 4x 9el 500W,10/06
+IK0WGF,JN52VC,,,EX IW0DAL,,144: 2x11el 200W,04/07
+IK0XIH,JN61KM,EME,,IW0CQX,,Kenwood TS-2000,06/09
+IK1DPA,JN33VT,,,,,YAESU FT-897D - ant: for 6m 5el F9FT - HF: HyGain DX-88,09/08
+IK1EFM,JN44JK,,,,,,01/93
+IK1EGC,JN35UF,,,,,50: FT650 3-500z 6el 1wl- 144: IC275 16el 4.4wl 4cx250 MGF1302,07/02
+IK1FJI,JN44LL,EME,,,,144: 4x 12el M2   GU78b  LNA CA144T PHEMT preamp,08/08
+IK1GYZ,JN35TB,,,,,,11/95
+IK1HJQ,JN33,,,,,,01/90
+IK1HWG,JN44DS,EME,,,,,01/94
+IK1JXY,JN44WC,EME,,,,,08/04
+IK1LBW,JN44VC,,,,,,08/98
+IK1LGV,JN44JK,,,,,144: GS31  MGF1302  15el QD,08/00
+IK1LUT,JN34TW,,,,,,01/93
+IK1MTZ,JN35UB,EME,,,,,08/01
+IK1PAG,JN35SB,,,,,144: IC275h  1KW  2x17el F9FT  MGF1302,02/08
+IK1RQT,JN34VP,,,,,,12/01
+IK1SLI,JN35UI,,,,,,01/93
+IK1SPR,JN34TQ,,,,,144: Braun SE400  500W  MGF1302  2x 13el,08/05
+IK1UWL,JN33VT,EME,,,,144: 4x 14XPol 700W (1400W in circular pol.),01/08
+IK1YWB,JN34UX,,,,,,04/02
+IK2CDI,JN55GN,EME,,,,144:  IC275H 3CX800A7 MGF1302 4x18el,01/00
+IK2CFR,JN54,,,,,,03/01
+IK2DDR,JN55GN,EME,,,,144: IC275H  8877  MGF1302  4x19el LY,01/06
+IK2EAD,JN55EJ,EME,,,,,01/94
+IK2EAE,JN45LL,,,,,144: FT480r 100W  17el,11/01
+IK2FIL,JN45OM,,,,,144: IC275H  9 el. F9FT + SP2000  50W,11/04
+IK2GSO,JN45NP,EME,,ex K2GSO,,IC7400  FT857  50:  1KW 10el   144: 14el DJ9BV,03/05
+IK2JUB,JN45ON,,,,,,03/05
+IK2LHP,JN45SP,,,,,144: TS790 200W 15el - 432: 100W 31el,07/01
+IK2MMB,JN45,EME,,,,,02/05
+IK2OFO,JN45KL,EME,,,,144: 4x17el 8877 - 432: 8x21el 3CX800A7 - 1296: 2m dish 2x7289,09/00
+IK2RTI,JN55AD,,,,,,01/03
+IK2TPX,JN45LL,EME,,,,,01/93
+IK2XRL,JN45NR,,,,,144: FT736r  150W  17el  Preamp,01/01
+IK2YXK,JN45OP,,,,,144: IC275h 4CX250 12elM2 DSP59,05/02
+IK3MAC,JN55SH,EME,,,,144: 1100W   24 x 23el LLY + 24x 10el yagi Vert,09/05
+IK3TPP,JN65EP,,,,,,12/04
+IK3VZO,JN55XA,,,,,144: 16el  200W,02/98
+IK4DCO,JN64GB,EME,,,,,01/94
+IK4DCX,JN64GA,EME,,,,144: 4x20el  2.5KW,04/01
+IK4DRY,JN64BL,,,,,,04/01
+IK4FMT,JN54WG,,,,,144: TS790  2M5WL 4CX250 MGF1302 20dB,01/00
+IK4JOC,JN54WN,EME,,,,,01/94
+IK4NMF,JN54SM,EME,,,,,01/94
+IK4PLU,JN64FC,,,EX IW4ASW,,,10/07
+IK4PMB,JN54MM,EME,,IW4CET,,50: X-Verter 10W Dipole - 70: OZ X-VERTER 3el DK7ZB - 144: FT225RD MUTEK or TS850+X-Verter 8877  11el F9FT 14XP WiMo,10/07
+IK4WLV,JN54XK,EME,,,,,02/98
+IK5AMB,JN53FU,,,,,,11/98
+IK5JWQ,JN52NS,EME,,,,,08/98
+IK5OEA,JN53PG,,,,,,12/04
+IK5OIY,JN52NT,,,,,,03/96
+IK5QLO,JN53FU,,,,,,04/08
+IK5WJD,JN53PR,EME,,,,432:  4 x 26 elements Yagi hor Pol. - LNA 0.25 dB NF - 8877 1 KW PA  - 1296: Septum Feed Cavity LNA 0.35 dB NF 3 meters solid Dish,07/06
+IK5ZUI,JN53RD,,,,,144: TS700G  11el  250W  BF981,07/97
+IK6EIW,JN63RJ,EME,,,,,10/95
+IK6FHF,JN63,,,,,,01/93
+IK6IHM,JN72,,,,,,01/95
+IK6MLI,JN62UT,,,,,144: FT736  4x11el KLM  Booster 8930,07/99
+IK6MMJ,JN63RL,,,,,,10/95
+IK6WDY,JN62XK,,,,,kenwood ts 790e ant. 2el quad,05/08
+IK7EZN,JN90DG,EME,,,,144:  4x 16el JXX  1 KW,04/05
+IK7UXY,JN90DC,EME,,IW7BPW,,IC-756PRO2/Xverter h.m./16jxx/8877,06/09
+IK7XLW,JN80FT,EME,,,,144: 16JXX 250W,03/06
+IK8BIZ,JN70GR,,,,,,08/08
+IK8ETN,JM89CH,,,,,144: ic275e 4x150 17f9ft,01/04
+IK8IUQ,JN70MM,,,,,,01/03
+IK8MKK,JN71DC,,,,,,01/95
+IK8TOY,JM89CH,,,,,,08/04
+IK8XLD,JN70VP,EME,,,,144: 11el GaasFet,09/00
+IK8YOQ,JN70GR,,,,,,04/09
+IK0BZY,JN61GW,,,,,07/09
+IK0BZY/MM,JN50AX,,,,,07/09
+IK0BZY/P,JN62GA,,,,,07/09
+IN3AGI,JN56,,,,,,01/03
+IN3ATM,JN56NK,,,,,,01/02
+IN3DOV,JN65WS,,,,,,01/93
+IN3FFN,JN56,EME,,
+IN3KLQ,JN56RG,EME,,,,144: 180W  17el,04/00
+IQ2CJ,JN45ON,,,,,IC 275H - GS35 - 2 x 13 DJ9BV,03/05
+IQ3AZ,JN65QQ,EME,,,,144: 4x 8el 800W,10/08
+IQ4DF,JN45,EME,,,,,10/05
+IS0/DF2ZC,JN40TJ,EME,,EXPEDITION,,144: TS2000  2x 9 ele M2   2x GU74b by LZ2US,03/09
+IS0/DH7FB,JN40TJ,EME,,EXPEDITION,,144: TS2000  2x 9 ele M2   2x GU74b by LZ2US,03/09
+IS0AGY,JM49OF,,,,,144: IC211E 4CX350b 17el  Gaas,07/05
+IS0BDB,JN40GT,,,,,,05/04
+IS0CAK,JM49,,,,,,01/04
+IS0CBC,JM49NH,,,IW0ULG,,,04/07
+IS0EBO,JN40GR,EME,,ex IW0UEI,,144: Icom gs35 3wl ant,03/06
+IS0GQX,JM49OH,,,,,,05/05
+IS0SWW,JN40GR,,,,,,02/04
+IT9BLB,JM68QE,,,ex IW9AJZ,,144: 2x15el  3CX800  MGF1302,08/06
+IT9CHU,JM76IV,EME,,,,,01/09
+IT9CJC,JM76IW,EME,,,,IC706MKIIG 120W 10EL DK7ZB - EME SETUP 4X10 8877 MGF4919G,06/09
+IT9GSF,JM67SS,,,,,,01/94
+IT9GSV,JM77LH,,,,,,04/01
+IT9IPQ,JM78SG,EME,,,,ic756pro ic275 ic475 transv,04/02
+IT9LCY,JM77NO,,,,,,01/93
+IT9TYR,JM78QF,EME,,IW9CER,,IC 756 pro II - Knw TS790 E - IC 706 MKII,04/09
+IV3BBR,JN65TW,,,,,,04/07
+IV3CYT,JN65TW,,,,,,06/09
+IV3DXW,JN65QQ,,,,,144: 4CX250 - 16JXX2 4.5WL,08/03
+IV3GBO,JN66OA,EME,,,,,01/02
+IV3GTH,JN65RU,EME,,,,50: FT897 5/8 vertical - 144 MHz: FT897  160W  16 el F9FT,06/07
+IV3HWT,JN65ST,EME,,,,144: FT101zd Trvt 8877 4x18el 4x20el,08/04
+IV3KTY,JN65QQ,,,,,,04/07
+IV3MPI,JN65SV,,,EX IW3QMB,,IC746  IC271E  Mutek  FT736R  PHEMT144  PHEMT: 50: 2x 6el 9BV 500W - 144: 4x12el 6WU 500W - 432: 4x21el F9FT,03/06
+IV3NDC,JN65RV,,,,,144: 100W  BF981  2x15el 3.3wl,04/07
+IV3SIX,JN65RU,,,EX IW3QYG IW3RI,,50: 6el/HyGain  144: 4x17el  432: 4x21el,05/07
+IV3VFP,JN66HD,EME,,,,,01/93
+IV3ZCX,JN65QS,EME,,,,144: Icom 275 PA 600Watts MGF1302 4x24el,01/90
+IW0AKA,JN61FS,,,,,,01/90
+IW0AYO,JN61IU,,,,,144: 16el,07/96
+IW0BTS,JN61GU,,,,,,01/88
+IW0BZD,JN61FS,,,,,,10/07
+IW0CUT,JN61TP,EME,,,,,01/93
+IW0CVK,JN61GV,,,,,,01/05
+IW0DJB,JN61,,,,,,04/02
+IW0DVG,JN61KK,,,,,,01/93
+IW0FFK,JN61FS,,,,,,04/07
+IW0GDC,JN61HX,,,,,,10/98
+IW0HLE,JN61WK,,,,,,08/08
+IW0QNX,JN62,,,,,,01/97
+IW0QO,JN63EC,,,,,,01/93
+IW0RBS,JN63FD,,,,,,01/93
+IW0RLC,JN63FD,,,,,,06/00
+IW1ARB,JN44CV,EME,,,,144: 4x4.4Wl lt2s 3cx1500,03/01
+IW1AZJ,JN35UB,,,,,144: 200W  3.8wl DJ9BV,06/00
+IW1BCV,JN44FS,EME,,,,144: IC275H 2x18el  MGF1302 8877,08/08
+IW1CGB,JN35VG,EME,,,,50: 3el  PA -  144: 4x17el  2x4cx250b  MGF1302,06/97
+IW1CHX,JN35TH,,,,,144:  C58  13el  DJ9BV MGF1302  170W,04/02
+IW1DIM,JN35TC,,,,,,07/01
+IW1DJS,JN35SA,,,,,,08/01
+IW1FTY,JN35UA,,,,,,01/03
+IW1GLM,JN34PT,,,,,,08/08
+IW2BNA,JN45ON,,,,,144: IC275H  3CX800  4x11el  -  432: IC475H  8930  23ele - 1296: IC1275  2C39  4x23ele,01/04
+IW2BSQ,JN45UJ,,,,,144: IC746 !7el,04/03
+IW2BZY,JN45NN,,,,,144:  500Watts   2x12ele Flexa,08/01
+IW2DAL,JN45NN,,,,,144: TenTec OII - TR144H +40 -  4x19LLY  4CX1000a,06/08
+IW2DMN,JN45KL,,,,,144: 100W 15el,10/02
+IW2DUA,JN45LL,EME,,,,,01/93
+IW2FZR,JN45WE,EME,,,,144: 9el 500W,06/09
+IW2FZR/P,JN56AE,EME,,JN56BE FOR EME,,1296: 4 mt dish VE4MA th308  400 W at feed/  144 9el 500W,06/09
+IW2HAJ,JN45NO,,,,,50: IC706 6el - 144: IC 275H + GS35B 2X13 EL Preamp,09/08
+IW2HUS,JN45NO,,,,,,04/02
+IW2HWQ,JN55GK,,,,,144: FT736r  80W  21el,10/96
+IW2LLA,JN55AM,,,,,144: 2x17el  100W,08/96
+IW2MYV,JN45JN,,,,,144: TS711E  4CX250  GaAs  4x7el + elv.,01/02
+IW2NEF,JN46QD,,,,,144: FT847 12elXY,11/02
+IW2NOR,JN45ON,,,,,ICOM IC275H  KENWOOD TS 2000   144: 100W 2x17el F9FT,06/04
+IW3BKQ,JN56NH,,,,,,07/02
+IW3HRT,JN55TG,,,,,,08/08
+IW3QTG,JN65PT,,,,,144: IC746  2x 17FT,08/04
+IW3SGT,JN65VP,,,,,,05/07
+IW3SNU,JN65OT,,,,,,11/04
+IW4ADT,JN54,EME,,,,,01/94
+IW4AR,JN64FD,,,,,,01/03
+IW4ARD,JN64FD,EME,,,,144: IC756PRO3 TXV-DB6NT 3CPX1500A7 4x8XP pre PHEMT full elevation   432: TS-2000X GS23B 4x18el pre PHEMT full elevation,01/09
+IW4AZY,JN54ML,,,,,IC275  ft817  ic706  hm xverter 2 x 20 yagi   many other depending location,04/07
+IW4BET,JN54QL,,,,,,08/02
+IW4BLG,JN54VF,EME,,,,144: 4x10el k5gw 900w,01/04
+IW4BTJ,JN54QL,,,,,,01/03
+IW4CB,JN54XK,,,,,,02/01
+IW4DJE,JN64,,,,,,01/95
+IW4DLA,JN64CE,,,,,,01/94
+IW4DMH,JN64CJ,,,,,,11/98
+IW4DQY,JN64AG,,,,,,03/04
+IW4EHV,JN64AE,EME,,,,IC7400  144: 16el  432: 21el,11/07
+IW4EHZ,JN54ML,EME,,ex IW4BTE,,IC706MKIIG 20EL70CM 12EL2MT 6EL6MT,03/05
+IW4EJK,JN54ML,,,,,ICOM IC910 - 144: 2X CROSS YAGI 10EL - 432. 2X CROSS YAGI 19EL,04/08
+IW5ACZ,JN53HP,,,,,50: TS2000 HB9CV  144:  TR751E 4CX250 250 WATT 12el,10/04
+IW5BLG,JN54VF,,,,,,01/03
+IW5BML,JN52JW,EME,,,,,04/99
+IW5BPE,JN52NT,,,,,,01/93
+IW5DHN,JN53GI,EME,,,,TS2000 4x 7el,04/06
+IW5DNZ,JN53,,,,,,05/02
+IW5EJM,JN53HA,,,,,,08/08
+IW5EKJ,JN54AA,EME,,EX IW1CCH,,144: IC-756 PRO2 TRSV GS31 or 3CX800,09/07
+IW6AEG,JN63RO,,,,,,10/93
+IW6BLH,JN63RO,,,,,,12/00
+IW6BNO,JN63RL,,,,,,11/95
+IW7DEC,JN81GF,,,,,144: 12db yagi 100W Preamp,08/04
+IW8QOT,JM88BR,,,,,,01/03
+IW9ELR,JM68PD,,,,,,11/02
+IW9FRA,JM68GA,,,,,,01/05
+IY1GMN,JN33VT,EME,,SPECIALCALL,,,06/09
+IZ0ARL,JN61IU,,,,,144: 200W  16el,10/96
+IZ0AYB,JN52VC,EME,,,,IC-910H  144:  4x12JXX - 432: 2x19 Tonna,05/04
+IZ0CVK,JN61GV,,,ex IW0CVK,,YAESU FT767mod  YAESU FT221R mod  2x8el DJ9BV  4CX250  MGF1801,09/06
+IZ0FWE,JN62IQ,,,,,,08/08
+IZ0GYP,JN61GT,EME,,,,144: 9el 250W,11/06
+IZ1ANZ,JN45FH,,,,,,05/07
+IZ1BPN,JN34OT,EME,,ex IW1CGB,,144: 150W  9el dj9bv  MGF1801    50: TS680  3el,03/06
+IZ1DBY,JN45FW,,,IW1FRO,,Icom IC706mk2g   Yaesu FT847   FT817,06/07
+IZ1DXS,JN35UA,,,ex IW1FTY,,ICOM IC-7400 (746 PRO) -  50: 6el -  144: 14el,11/02
+IZ1EGT,JN44LK,,,ex IW1RDT,,IC910 100W  2.5 Wl ant,02/05
+IZ1ESM,JN45FB,,,ex IW1ESM,,KWD TS850 + LT2S MK2 + 4.4wl BV,09/02
+IZ1MKR,JN44FH,EME,,,,,01/09
+IZ2AAJ,JN45,,,,,,12/99
+IZ2DJP,JN55FO,,,,,,05/04
+IZ2EEQ,JN45,,,,,,07/02
+IZ2FOB,JN45MQ,,,ex IW2DVK,,50:5w dipole 144:150W 2x9ft MGF1302  432:4x21 ft-MGF1302-GS35b  1296:xverter50w-35ft,05/05
+IZ2GOL,JN45OL,,,ex IW2LC,,ICOM IC-761 IC-756 IC-275H  YAESU FT-897 FT-847 FT-817 KENWOOD TS-480HX TS-790E,03/05
+IZ3KGJ,JN65IN,EME,,,,144: 2x 19el  LLY,01/09
+IZ4AIK,JN63HV,,,ex IW4CYM,,50: 100W 5el - 144: TS790 3CX800A7  TS850 & Trvt MGF1302 17el,07/01
+IZ4BEH,JN54WL,,,,,144:  1KW  2x16el MGF2407 - 432: 2x21el 300W - 1296:  57el loop 60W - 2320: 53el loop 20W,10/02
+IZ4BEJ,JN64CE,,,ex IW4DCT,,144: 2x13el  gd Pwr,11/97
+IZ4GWE,JN64BL,,,EX IW4EOQ,,,12/07
+IZ5BXF,JN53GV,EME,,ex IW5DRA,,300W- 4x11el 2.2wl- 0.3dbNF,01/01
+IZ5EME,JN52NS,EME,,ex IW5AVM,,144: 4x20el 8877 - 432: 4x25el 3CX800 - 1296: TH338 4x55ft,04/01
+IZ5GNS,JN53CX,EME,,ex IW5CNS,,144: IC275H  4x10el 2.2wl  9BV   8877  MGF1302,08/05
+IZ5MAO,JN54AA,EME,,IW5EKJ,,Transverters-GS35-2x4cx250r-2x9dk7zb-4x25jxx70,09/07
+IZ8AZB,JN70EP,EME,,ex IW8CVV,,144: 4x11el   8930(400W),01/02
+IZ8DWL,JM88BR,,,ex IW8QOT,,144:  IC-746  PA 4CX250  16JXX LY  MGF1302,04/04
+IZ8IBB,JN70FP,,,,,,08/08
+IZ8IFV,JN70KO,,,,,,08/08
+J44XG,KM19KE,,,EXPEDITION,,,09/07
+J45M,KM46CF,EME,,Expedition,,144: FT100 FT847 IC706 DSP59/Datong audiofilters  3CX800  4x10ele X-pol  3wl  MGF1302  NF 0.3dB,06/01
+J48PL,KN20IN,,,Expedition,,,07/06
+J79MY,FK95,EME,,,,4x Yagi- 1.5KW,06/98
+JA0BBW,PM97LV,EME,,,,144: 4x 13el 150W,10/07
+JA0BLU,PM97OS,EME,,,,144: 1KW  4x19el 2x18el MGF1801,01/00
+JA0VI,PM95,EME,,,,,01/03
+JA1DXA,PM95VU,,,,,,01/03
+JA1RJU,QM06CB,EME,,,,50: 2x 14el 1KW - 144: 2x 14el 50W,12/06
+JA1VZV,PM95QL,,,,,,01/03
+JA2HMO,PM85IH,,,,,,01/03
+JA2JRJ,PM84MW,EME,,,,,01/00
+JA2KRW,PM85NE,EME,,,,,01/03
+JA2TY,PM84GS,EME,,,,,01/03
+JA3BXC,PM74SU,,,,,,01/03
+JA3IAF,PM74,EME,,,,,01/03
+JA3SGR,PM74TU,EME,,,,,01/03
+JA4BLC,PM65NM,EME,,,,2320: 6m dish 300W,04/06
+JA4CMZ,PM65MI,EME,,,,,01/03
+JA4KLX,PM95RI,,,,,,01/03
+JA5NNS,PM63,EME,,,,,01/03
+JA5OVU,PM74FC,EME,,,,,01/03
+JA5YJS,PM63,EME,,,,,01/03
+JA6AHB,PM53CP,EME,,,,432: 7m Dish 1KW,11/05
+JA6CZD,PM53FM,EME,,,,2320: 5m dish 150W,04/06
+JA6DZI,PM53GM,EME,,,,,01/03
+JA6XED,PM53,EME,,,,,01/03
+JA6ZHR,PM53,EME,,,,,01/03
+JA7BJP,QM07GN,,,,,,01/03
+JA7BMB,PM97WM,EME,,,,,01/03
+JA7JJN,PM95RQ,EME,,,,,04/09
+JA8ERE,QN02QX,EME,,,,2320: 6m dish 180W,04/06
+JA8IAD,QN03,EME,,,,2320: 5m dish 180W,04/06
+JA8PL,QN03,EME,,,,,01/03
+JA9BOH,PM86FA,EME,,,,144: 4  x 2.8 mt,04/04
+JD1BLY,QL17CC,EME,,EXPEDITION,,,01/08
+JD1BMP,QL17CC,EME,,EXPEDITION,,,01/08
+JE1KFX,QM06IR,EME,,,,144: 4x 18el 500W,05/05
+JE1TNL,PM95PH,EME,,,,2m IC910D+GU74B 4x13ele 70cm IC910D+3CX800A7 4x20ele,08/08
+JE2XBY,PM84MS,EME,,,,,03/05
+JE5FLM,PM74AH,EME,,,,144: 2x 13el Vert  50W,10/06
+JF3HUC,PM74UX,EME,,,,,01/03
+JF3IPR,PM74,,,,,,01/03
+JG2BRI,PM84LW,EME,,,,,04/05
+JH0ISW,PM97LO,,,,,,01/03
+JH0MHE,PM96HI,EME,,,,144: 4x 18el M2  500W,12/05
+JH0QBI,PM97FF,,,,,,01/03
+JH0WJF,PM86,EME,,,,,12/07
+JH0YSI,PM85VJ,EME,,,,,03/01
+JH1EFA,PM96UB,EME,,,,,01/03
+JH1KRC,QM06AW,EME,,,,PO 500 watts exc. 3cm 300 watts  4.4m dish,03/06
+JH1OFX,PM85SM,EME,,,,,01/03
+JH1OQW,PM95UX,,,,,,01/03
+JH1SWD,QM06HN,,,,,,01/03
+JH1XUJ,PM95UR,EME,,,,,01/03
+JH2COZ,PM49NW,EME,,,,144: IC821 4x14el 3.6wl ITT-4651 tube 3SK129 Preamp,09/06
+JH2OJS,PM85LD,,,,,,01/03
+JH3EAO,PM74KR,EME,,,,,01/03
+JH3VJV,PM74LP,,,,,,01/03
+JH4JLV,PM54LA,EME,,,,,01/03
+JH5FOQ,PM63JS,EME,,,,144: 4x 28 Xpol  1KW,08/06
+JH5LUZ,PM63FK,EME,,,,,01/03
+JH6RTO,PM53FA,,,,,,01/03
+JH7PAV,QM07DI,EME,,,,,01/03
+JH7SIA,QM09EN,,,,,,01/03
+JH8CMZ,QN12MN,EME,,,,144: 2x 13el 500W,11/08
+JH9TJT,PM86HK,EME,,,,144: 2x 11el V  50W,11/06
+JI1FLB,PM95WS,,,,,,01/03
+JI1MNT,PM95QH,,,,,TS-870S,03/09
+JI1NJC,QM06FL,,,,,,01/03
+JI3GER,PM75XA,EME,,,,,01/03
+JI4POR,PM65NK,,,,,,01/03
+JJ1NNJ,QM06GH,EME,,,,,01/03
+JJ1VOM,PM95,,,,,,01/03
+JJ3JHP,PM75XD,EME,,,,144: 2x 11el,11/06
+JK1HIX,PM95WH,EME,,,,4x17el 8877,03/99
+JK1KTY,QM05DK,EME,,,,144: 2x15 2.75wl 200W,01/06
+JK1LYP,PM95,,,,,,01/03
+JK1XDX,PM95,,,,,,01/03
+JK7IKU,QM09BR,,,,,,01/03
+JL1ZCG,PM59UM,EME,,,,TS790  4CX1500A 16x 2.5WL V-POL YAGIS,03/99
+JM1GSH,QM06IS,EME,,,,144: 4x 11el 500w,04/05
+JM1LQW,PM96QA,,,,,,01/03
+JM1MQE,PM95RP,,,,,,01/03
+JM1SZY,PM95SO,EME,,,,,08/05
+JM1WBB,QM05DX,EME,,,,144: IC-910D  2 x GU74B  4 x 2M32XP 432: IC-910D 50W 2X720,08/08
+JN1BMX,QM06FM,,,,,,01/03
+JN1CSO,PM95SW,EME,,,,144: 12x 15el H/V 2000W,01/03
+JN1JFC,QM06AD,EME,,,,,03/08
+JN4FNZ,PM54QD,EME,,,,144: 2x 13el 800W,01/90
+JO1LVZ,PM95RT,EME,,,,144: 4x 9el 50W,05/06
+JO3FUO,PM74RT,,,,,,06/07
+JO3JJN,PM85AC,EME,,,,,01/03
+JO3RNL,PM74TT,EME,,,,,01/03
+JR1EDE,PM95TG,EME,,,,10368: 1.8m Dish 40W,02/01
+JR1EUX,PM95TO,EME,,,,,01/03
+JR1RCH,PM96SI,EME,,,,,01/03
+JR2HCB,PM85NC,EME,,,,50: 2x 10el,04/05
+JR3REX,PM74LQ,,,,,,01/03
+JR4AEP,PM65RH,EME,,,,,01/03
+JR4BRS,PM65,EME,,,,,01/03
+JR5JXV,PM86XG,,,,,,01/03
+JR5UOY,PM64XF,,,,,,01/03
+JR6EXN,PM53FH,EME,,,,50: 4x 8el Yagi.full elev. Homebrew  1000W,01/09
+JR6LDE,PM53FS,,,,,144: 12el 50W,06/06
+JR7VXF,QM09AK,,,,,,01/03
+JR9NWC,PM85BW,EME,,,,,01/03
+JS3CTQ,PM74UN,EME,,,,144: 4x 11el  500W,05/06
+JS3SIM,PM74VW,EME,,,,,01/03
+JW5E,JQ78QF,EME,,,,144: 2 x 10Xpol  800w,02/08
+JX7DFA,IQ50OV,EME,,QSL via LA7DFA,,TS2000,08/00
+K0AWU,EN37ED,EME,,,,144: 800w 1x 4wl 13el Yagi,11/06
+K0AZ,EM37CD,,,,,144: 800Watts  17B2,09/01
+K0BLR,EN25UO,,,,,,01/03
+K0CB,EM27,,,,,,01/03
+K0CIO,EM07,,,,,,01/03
+K0CJ,EN34IS,,,,,,01/03
+K0CQ,EN32EC,,,,,,01/03
+K0CXJ,EN26,,,,,,01/03
+K0DAS,EN42,EME,,,,,01/03
+K0FF,EM49HO,,,,,50: 1-5KW 7el or 4x6el  - 144: 1-5KW 2x17el M2 or 4x17el,01/01
+K0FQA,EN35FE,,,,,,01/03
+K0FZG,EN36,,,,,,01/03
+K0GCJ,EN43,,,,,,01/03
+K0GEI,EM49,,,,,,01/03
+K0GRM,DN96OT,,,,,,01/03
+K0GU,DN70MQ,EME,,,,144:  FT1000DEM  8877  4x17elB2  SSB Preamp,01/01
+K0HH,EM48,,,,,,01/03
+K0HU,EN10,,,,,,09/99
+K0HWE,EN41BX,,,,,,01/03
+K0IDC,EN12TL,,,,,,01/04
+K0IDT,EN10PS,,,,,,01/03
+K0IK,EN34JR,,,,,,01/04
+K0ILC,EN36,,,,,,01/03
+K0IR,EN25,,,,,,01/03
+K0JO,EN34,,,,,,01/03
+K0KE,DM79,,,,,,01/03
+K0KFC,EN34,,,,,,01/03
+K0KJX,EM48,,,,,,01/03
+K0KP,EN36VW,EME,,,,50M:7 ele 100  144:  5WL 1.5 KW,10/07
+K0KQY,DM98,,,,,,08/00
+K0LGI,EN42,,,,,,01/03
+K0LLS,EM29,,,,,,01/03
+K0MQS,EN31UH,,,,,,01/03
+K0NG,EN10,,,,,,01/03
+K0NL,EM48MK,,,,,,01/03
+K0NY,EN44DB,,,,,,01/03
+K0OG,EM47CW,,,,,FT100D  50: 100W G5RV  144: 50W 3el beam,10/06
+K0PFX,EM48SR,,,,,,01/03
+K0PG,EN61AU,,,,,,01/03
+K0PJ,EN34,,,,,,01/03
+K0PS,DM59VG,,,,,,01/04
+K0PW,EN34CV,EME,,ex NJ0M,,144: 1.5KW 2x17el 5lb  MGF1302,09/01
+K0RDF,EM29,,,,,,01/03
+K0RI,DM78PX,EME,,,,144: 1x 17el KW,06/05
+K0RL,EM49HU,,,,,,01/03
+K0RP,DM88AD,,,,,50: 150W - 144: 150W - 222: 110W - 432: 110W - 1296: 10W,01/01
+K0RRY,EN36,,,,,,01/03
+K0RZ,DM79JX,,,,,,01/03
+K0SDH,EN34JS,,,,,,01/03
+K0SE,EN34,,,,,,01/03
+K0SHF,EN34JV,,,,,,01/03
+K0SM,EN10RT,,,,,144: 160W  Preamp  13B2,01/01
+K0SQ,EN35,,,,,,01/03
+K0TAR,EN34,,,,,,01/03
+K0VM,EN42,,,,,,01/03
+K0VSV,EN41LK,,,,,50: 8W 5el - 144: 170W 12el,01/98
+K0WLU,EN13XS,,,,,,01/03
+K0XP,FN31,,,ex KO0U/1,,144: 350W 3219  - 222:  450W KLM16,01/02
+K0XXX,EM46FF,,,KD5LUN,,IC-746 FT-736R,05/07
+K0YW,DM67ED,EME,,,,,03/06
+K0ZPO,EM15,,,,,,01/03
+K1ABC,FN42,EME,,
+K1DS,FN20JE,EME,,,,144: 10el 120W,07/06
+K1FO,FN31QJ,EME,,,,,01/03
+K1IM,FN31WX,,,,,,01/03
+K1JT,FN20QI,EME,,,,144: 4x 14XP 1KW,01/08
+K1MS,FN42,,,,,144:  1KW  2x M2 5wl,01/01
+K1OR,FN42IR,EME,,,,144:  4x 13el no elevation 1500W  -  432:  1500W,02/08
+K1OYB,FN43TP,,,,,,01/03
+K1POP,FN51,,,,,,01/03
+K1RC,FN42HQ,,,,,,01/03
+K1RO,FN31,,,,,,01/03
+K1RQG,FN54LM,EME,,,,,04/05
+K1RS,EN53wb,EME,,
+K1RZ,FM19JH,,,,,,01/03
+K1SG,FN42FE,EME,,WA1AYS,,50 MHz: IC756PRO  3-1000Z  Terrestrial: 2 x M2 6M2.5WLC  EME: 4 x 6M5X w/full elevation.,09/07
+K1TEO,FN31,,,ex WA2TEO,,144: 800W 4x12el - 222: 500W 2x23el,01/01
+K1TR,FN42IU,,,WA1OAM,,,05/07
+K1UHF,FN31FH,EME,,ex KD1DU,,144: 1-5KW 4x12el  -  222: 500W,01/01
+K1VOW,DM25VF,,,,,,01/03
+K1ZE,FN41,,,ex WA1HYN,,144: 300W 2x4218 - 222: 60W 220B - 432: 400W 2xK2RIW,01/98
+K2AAX,FN12CS,EME,,ex KA2RDO,,144: 4x 9el 400,11/05
+K2AH,FN20,EME,,,,,01/03
+K2AXX,FN12CS,EME,,,,144: TS-930S  Transverters 4x 9el 400W  -  432: TS-830S  Transverters,11/05
+K2BLA,EL99IA,EME,,,,144: 400W  8x 2.5WL,04/05
+K2DH,FN13FB,EME,,,,,01/08
+K2DRH,EN41VR,EME,,ex KA2DRH,,144: 2x 18el 1KW,03/07
+K2DRM,EN41VR,EME,,,,144: 2x 18el 1KW,06/06
+K2EVW,EM96SS,,,,,,01/03
+K2GAL,FM29PH,EME,,,,,01/98
+K2LME,FN31UI,EME,,,,,10/98
+K2OS,FN13CD,EME,,,,,12/00
+K2OVS,FN30,,,,,50: 250W 6el - 144: 200W single yagi - 432: 60W single yagi,01/01
+K2PGB,FN20,,,,,50: TS680S 10W 3el - 144: IC251A 80W 13B2,01/01
+K2STO,EL88PH,,,,,,01/03
+K2TXB,FM29PT,EME,,,,144: 2x KLM 16LBX 28,04/05
+K2UYH,FN20QG,EME,,,,432: 28 dish 1KW,09/05
+K2VEE,EM79WP,,,,,,01/03
+K2WKA,FN20RF,,,,,,01/03
+K2YAZ,EN74AV,,,,,,01/03
+K2ZD,FN21NR,EME,,,,50: 7el QRO,12/07
+K3ACE,FM29DR,,,,,,01/03
+K3AX,FN20,EME,,,,,01/00
+K3BFA,FN10XI,,,,,144: 1-5KW 4x15el,01/01
+K3CB,FM18VR,EME,,K6LEW,,Orion,02/09
+K3DJC,FM19LL,,,,,,01/03
+K3EAR,FM19HX,,,,,,01/03
+K3EOD,FM29LL,,,,,,09/06
+K3FOR,FM19SB,EME,,,,,01/03
+K3FU,FM18,,,,,,01/03
+K3GNC,FM29KX,,,,,,01/97
+K3HZO,FN20AG,,,,,50: 350W 5el - 144: 350W 17el - 432: 100W 24el,01/98
+K3IB,FM19UU,EME,,,,50: 200W 6M5XX - 144: 1-5KW FO12 - 222: 300W - 432: 300W 2xRIW,12/07
+K3JT,EM99XO,,,,,,01/03
+K3JYD,FM18,EME,,,,432: 4x 19el 400W  144 2 x K1FO-15 1500W,05/07
+K3LFO,FM19,EME,,,,,01/03
+K3LOW,EN91BK,,,,,,01/03
+K3MF,FM19XP,EME,,,,432: 8x 25 K1FO GS23b 1500w,01/08
+K3ROJ,FM19SH,,,,,,01/03
+K3SIW,EN52,,,,,,01/03
+K3TKJ,FM28EM,,,,,,01/03
+K3TUF,FN10WE,,,,,,01/04
+K3TV,FN20EP,,,,,,01/03
+K3UZY,FN20,,,,,,01/03
+K3VLQ,EM92,,,,,,01/03
+K4AL,EM66QF,EME,,,,144: 15el 400W,05/05
+K4AR,EM76,EME,,,,432: 8x28el (9lb) Yagis  1-5KW  0.25db,01/00
+K4BTY,EM66,,,,,TS-870  TS-850  FT-736R,05/09
+K4CSO,EM73,,,,,,01/03
+K4DD,EM60NP,,,,,,01/04
+K4DRF,EM74QA,,,,,,01/03
+K4DXA,EM95pe,,,
+K4EJQ,EM86,,,,,,01/03
+K4EME,FM08JF,EME,,,,432: 8x  33el  800W,09/05
+K4FJW,EM86,,,
+K4HJE,EM96,,,,,,01/01
+K4JAF,EM70EK,,,,,,01/03
+K4KAE,FM02AT,,,,,,01/03
+K4KO,EM66UD,EME,,,,144: 100W 15el,05/06
+K4MRW,EM64PW,,,ex WB4AXQ,,,01/01
+K4QF,EM64,,,,,,01/03
+K4QI,FM06,EME,,,,,08/05
+K4QXX,EL87RM,,,,,,01/03
+K4RF,EM84DJ,,,ex WS4F,,,01/01
+K4SDI,EM56TQ,,,,,,01/03
+K4SSO,EM48SR,,,,,144: 160W 16el,01/02
+K4SSP,EM47,,,,,,09/99
+K4TAX,EL96WF,,,,,,01/03
+K4VJ,EL96LX,,,,,,01/03
+K4WRI,EL98LM,,,,,,01/03
+K4WY,FM18IS,EME,,,,IC-7000xvcr to 2MPX20 xpol yagis(2) Commander II amp avg 500watts out preamp etc,11/08
+K4XR,EM64NL,EME,,,,144: 2x 18el  QRO,09/04
+K4YA,EM25,,,,,,01/03
+K4YNT,EM74KW,EME,,,,,02/05
+K4ZFY,EL18,,,,,,01/03
+K5AIH,EL09TK,EME,,,,,01/98
+K5AM,DM62NI,EME,,,,144: 1x 17el  1500W,11/06
+K5APM,EM10BL,,,,,,01/03
+K5AZU,EM40SN,EME,,,,,01/03
+K5BYS,EM13,,,,,,01/03
+K5CBL,EM15,,,,,,01/03
+K5CFM,EM15,,,,,,01/03
+K5CM,EM25,,,
+K5CPZ,EM15,,,,,,01/03
+K5CZD,EM32VN,EME,,,,144: 2x 13el 375W,05/06
+K5DNL,EM15LJ,EME,,,,50: 7el  144: 2x  17el 400W,04/07
+K5EGW,EM30,,,,,,01/03
+K5EWS,EM10,,,,,,01/03
+K5FA,EM44,,,,,,01/03
+K5GE,EL09,,,,,,01/03
+K5GMX,FN31NU,EME,,,,144: 4x 13el  600W,04/05
+K5GNA,EM20,,,,,,01/03
+K5GW,EM13PA,EME,,,,144: 48x10el,04/05
+K5IS,DM96,,,,,,01/03
+K5IUA,EL29CD,,,ex KB5IUA,,,01/01
+K5JL,EM15DQ,EME,,,,,01/05
+K5LLL,EM10KF,,,,,,03/07
+K5LZO,EM20,,,,,,01/03
+K5MAT,DM65,,,,,,01/03
+K5MQ,EM31WQ,EME,,,,144: 17B2 1500W,11/06
+K5OGE,EM20UX,,,,,,01/01
+K5PHD,EM12,,,,,,01/03
+K5PHF,DM61,,,,,,01/03
+K5PJR,EM37KA,EME,,,,1296: 4m dish 300W 0.2db lna,09/06
+K5QE,EM31,EME,,,,144: 8x 18el M2 QRO - 432: 19x 9wl,11/06
+K5QQ,DM65SB,,,,,,01/03
+K5QXJ,EM30XA,,,,,,01/03
+K5RFI,EM16,,,,,,01/03
+K5RHR,DM65UV,,,,,,01/03
+K5RUS,EM32VM,,,,,,01/03
+K5SO,DM66XW,EME,,,,1296:  250W   8.6m dish   0.2db LNA,04/06
+K5SXK,EM12,,,,,,01/03
+K5TN,EM15,,,,,,01/03
+K5TNP,EM32,,,,,,01/03
+K5TTT,EM26CH,,,ex KB5ZUD,,,01/02
+K5UHF,EM10DJ,,,,,,01/03
+K5UJC,EM20VB,,,,,,01/04
+K5VH,EM00XE,,,,,,01/03
+K5WO,EM12,,,,,,01/03
+K5WPN,EM14AL,,,,,144: 100Watt 11el  cushcraft   50: omni   432: 50watts 11el M2,05/07
+K5WXN,DM61,EME,,,,,01/03
+K5YPV,EM54MR,,,,,,01/03
+K5YY,EM26,,,,,144: 1KW 13el,01/03
+K5ZMJ,EM12,,,,,,01/03
+K5ZMS,EL09,,,,,,01/03
+K5ZSJ,EM12,,,,,,01/03
+K5ZXE,EM14KL,,,,,,01/03
+K6AAW,CN80TE,EME,,,,144: 4x15el 3wl  1.2KW  MGF1302,06/06
+K6ALF,CM97BH,,,,,,01/03
+K6CYS,DM12KT,,,,,,01/03
+K6DV,DM13NI,EME,,,,,01/03
+K6FQ,DM12NL,EME,,,,144: 4x7ele crossed  1.3KW,03/05
+K6HLH,DM14CP,EME,,,,,05/07
+K6IAH,DM12,,,,,,01/03
+K6IBY,DM13,EME,,SILENTKEY,,,10/08
+K6JEY,DM03WT,EME,,,,432: 4x25el K1FOs  500W  0.4db,10/06
+K6KL,CM97,,,,,,01/03
+K6LEW,FM18LT,EME,,,,,11/00
+K6MBY,CN88KD,,,,,Icom 746  144: M2 17 el  3000K ERP,09/07
+K6MXI,CM88QL,,,,,,01/03
+K6MYC,DM07DB,EME,,,,144: 4x 32XP M2  1KW,04/07
+K6PF,DM13AR,,,,,144:  FT726r  175W  4xM 2MXP20,01/01
+K6QXY,CM88QL,EME,,,,,10/05
+K6SUE,CM98AK,,,,,144: 650W 2x17el- 222: 120W 7wl- 432: 175W 2x9el,11/99
+K6UCY,FN42HM,EME,,,,4x 25el 1KW,03/07
+K6UIY,DM14,,,,,144: FT726r  1KW  2Yagis,01/97
+K6UM,CM88,,,,,,01/03
+K6ZX,CN82GM,,,,,144: 160W  2x2M9,01/97
+K7AD,DN06ID,EME,,,,144: 4x 14el  1kW,10/05
+K7BV,FN31VI,EME,,,,50: 1000w 4x7el,03/05
+K7CA,DM37,EME,,,,144: 8x 16el 1500W,09/08
+K7CAI,DN27KF,,,,,,01/03
+K7CW,CN87LJ,EME,,,,6m kW 8elem - 2m kW 16elem,04/07
+K7FB,DN17HN,EME,,,,400W 11db ant,05/07
+K7IEY,CN88,,,,,,03/98
+K7JA,DM03XS,,,,,144: 190W  19el,01/98
+K7KX,DN55,,,,,,01/03
+K7LNP,DN30,EME,,,,,09/99
+K7MAC,DN13SN,EME,,,,50: 7el 1000W   144: 4x 15el 1500W,09/05
+K7MDL,CN87XT,EME,,,,144: 2x 3wl 300W,04/05
+K7MI,CN73TC,EME,,,,144: 4x 17el 500W,12/07
+K7ND,CN87QF,,,,,144:  1KW  2x5wl M2,01/01
+K7NEP,DN53NF,,,ex N2NEP,,FT1000MP  144: HM 1KW PA 13el,01/98
+K7OO,DM04,,,,,,01/03
+K7PVT,CN88SA,,,,,,01/03
+K7TRM,DM33VP,,,,,,01/03
+K7UOP,DM33XN,,,,,,01/01
+K7UV,DN31XM,,,,,,01/03
+K7WIA,CN87TR,EME,,,,,03/05
+K7WUP,DM49IG,EME,,,,,01/03
+K7XC,DM09NM,EME,,EX NC7K KD7DH A35WZ,,50: IC746 100W  6el  144: IC746 350W 18xxx  222: xvtr 400W  27el  432: IC706IIG 300W 33el,05/07
+K7XD,CN85,EME,,,,144: 400W 2x23el,01/97
+K7XQ,CM97QI,EME,,ex KO6RD,,50: 2x 7el 1KW - 144: 4x 2MPX18 Xpol 3lb 1.5KW  MGF1302 - 432: 4x 9wl  1KW,10/06
+K7XW,CN96XI,EME,,,,50: 1-5KW 5el  - 144: 600W 2x3.5wL - 222: 50W 5wl -  432: 200W 4x5.3wl,01/01
+K7YVZ,DN13TL,,,ex KC7YVZ,,144: 1-5KW 4x18XXX  2x13el Quagi Preamp - 432: 350W 4x38el,01/01
+K7ZL,CN84JC,,,,,144: 150W  36foot yagi,01/98
+K8BHZ,EN75DB,,,,,144: 1-5KW  4x17B2,01/98
+K8DGY,EN63WW,,,,,,01/03
+K8EB,EN73CB,EME,,,,144: 1500W 2x 18el,12/05
+K8EME,EN72EH,EME,,ex NP4C,,144: FT847- 4x11el 2.2lb- 8877 (1-5KW),03/00
+K8GUN,FM09WH,EME,,WB8VAZ,,ICOM,04/07
+K8IE,EN52,,,,,,01/03
+K8ISK,FM18DV,EME,,,,,01/03
+K8MD,EN82,,,
+K8MM,EN83IB,,,,,,01/04
+K8RAY,EN72XK,EME,,,,144: 4x 9el 400W,10/07
+K8ROX,EN80LO,,,,,,01/03
+K8SD,EN12,,,,,,01/03
+K8TL,EM89CV,EME,,,,144: 360W  2MXP28,12/07
+K8UC,EM99EG,EME,,,,,01/03
+K8UK,EN82LK,EME,,,,,01/03
+K8VEB,EN72NN,,,,,,01/03
+K8VP,EN91,EME,,ex KB8ZW,,,07/01
+K8XK,EN42,,,,,,01/03
+K9AKS,EN41,,,,,,01/03
+K9AM,EN52,,,,,,01/03
+K9BCT,EL96UE,EME,,,,,01/03
+K9BMB,EM69OG,,,,,,01/03
+K9CA,EN61ML,,,,,,01/03
+K9CFA,EN52,,,,,,01/03
+K9CT,EN50BQ,EME,,,,IC7800  IC756 ProII  Demi xvtr  LunarLink  4x18 XXX  Demi LNA,09/07
+K9DMW,EN52UI,,,NT9E,,756PROII(6m)  910H(144/432),09/07
+K9DQ,EN62AS,,,,,,08/06
+K9DRO,EN54fn,,,
+K9DTB,EM89,,,,,,01/90
+K9DX,EN52XC,EME,,,,144: 8x 19el  Amp. 8877,09/06
+K9EA,EN94CB,,,,,,09/01
+K9EK,EM79BF,,,,,,01/03
+K9FYV,EN41,,,,,,01/03
+K9HJZ,EN50ES,,,,,,01/03
+K9HMB,EN52VI,EME,,,,,12/00
+K9HSK,EN51,,,,,,01/03
+K9IJ,EN52,,,,,,01/03
+K9ILT,EN61AU,,,,,,01/03
+K9IMM,EN52,,,,,,01/03
+K9IMX,EM38,,,,,,01/03
+K9IZV,EN53,,,,,,01/03
+K9JK,EN52XC,,,,,,01/03
+K9KFR,EN71GG,EME,,,,,01/03
+K9KHW,EN63AD,,,,,,01/03
+K9KL,EN64,,,,,,04/06
+K9KNW,EL96EC,EME,,,,,03/05
+K9MB,EM57,,,,,,01/03
+K9MRI,EN70IU,EME,,,,144: 8x m2 yagis and 1.2kw,04/05
+K9MU,EN44HW,EME,,ex KB9UZV,,,01/06
+K9NS,EN52RL,,,,,144: 2M18XXX,05/06
+K9OQN,EN52,,,,,,01/03
+K9PO,EN52VF,,,,,,01/03
+K9PW,EN52,,,,,,01/03
+K9SLQ,EN70KK,EME,,,,432: 16x FO22 1.5 KW,07/07
+K9SM,EM59EE,EME,,,,144: 4x 9el 500W,11/05
+K9SQL,EM69RF,,,,,,01/04
+K9TI,EN51,EME,,,,144: 4x K1FO 12 el   PA 8877,02/01
+K9VHF,EN53,EME,,,,144: 17el 400W,05/05
+K9VNM,EN63,,,,,,01/03
+K9VS,EN52,,,,,,01/03
+K9XI,EN61,,,,,,01/03
+K9YR,EN52,,,,,,01/03
+K9ZZH,EN61,EME,,,,,01/03
+KA0EWM,EN30,,,,,,01/03
+KA0KCI,EM17,,,,,,01/03
+KA0KUY,EM07XD,,,,,,01/03
+KA0MOW,EM17,,,,,,01/03
+KA0MR,EM18GE,,,,,,01/03
+KA0MWA,DM79LL,,,,,,01/03
+KA0NNO,EM24TL,,,,,,01/97
+KA0OGU,EM29,,,,,,01/03
+KA0PQW,EN33,,,,,,11/01
+KA0RYT,EN34DW,EME,,,,,01/02
+KA0UZZ,EN34,,,,,,01/03
+KA0Y,EN41,EME,,,,,08/00
+KA0YSQ,EN42,,,,,,01/03
+KA0ZOZ,EN23,,,,,,01/03
+KA1JBG,FN42,,,,,,01/03
+KA1OTP,FN41,EME,,,,,01/03
+KA1R,FN42NE,EME,,,,,05/09
+KA1VHF,EM89LL,EME,,,,144 2x 17el 1KW,10/06
+KA2DRH,EM64KT,,,,,,01/03
+KA2HZO,FM29US,,,,,,01/03
+KA2KQM,EM74QA,,,,,,01/03
+KA3DQD,FM29DO,,,ex N3ZWW,,Ten-Tec 526  ICOM 735,03/06
+KA3HED,FM27,,,,,,01/03
+KA3WSZ,FM29GK,EME,,,,,01/03
+KA4WJA,EL89WE,,,,,,01/03
+KA5AAE,EM06,,,,,,01/03
+KA5AIH,EL29NW,EME,,,,,10/96
+KA5DWI,EM12JU,,,,,Yaesu FT-290R  FT-726R and FT 747GX,01/09
+KA5PVB,EM13,,,,,,01/03
+KA5TQY,EM43,,,,,,01/03
+KA5UEL,EM12,,,,,,01/03
+KA5UEV,DM93,,,,,,01/03
+KA5ULI,EM30,,,,,,01/03
+KA5WMJ,DM96,,,,,,01/03
+KA5WRG,EM15,,,,,,01/03
+KA5YJJ,EM44NN,,,,,,01/03
+KA6NBC,CM98,,,,,,01/03
+KA7V,DN14MA,,,,,144: 13B2 1500W,11/03
+KA8EDE,EM79,,,,,,01/03
+KA8HOK,EM89LL,EME,,,,144:   2x 19el  600W,10/06
+KA8HQL,EM89VU,,,,,,01/03
+KA8SFP,EM12,,,,,,01/01
+KA8SSB,EM79,,,,,,01/03
+KA8TER,DN43AL,,,,,,01/03
+KA9CFD,EN40OM,,,,,,08/05
+KA9LDS,EN51,,,,,,01/03
+KA9LLF,EM71,,,,,,01/03
+KA9LNP,DN30,,,,,144: 800W  KLM13LBA,01/01
+KA9MGR,EN41,,,,,,01/03
+KA9OIL,EN62,,,,,,01/03
+KA9UVY,EM58NG,,,,,,01/03
+KA9YCB,EM57QQ,,,,,,01/03
+KB0BFI,EM29LL,,,,,,01/03
+KB0BVR,EN26AH,,,,,,01/03
+KB0CY,DM79,,,,,,01/03
+KB0EMR,EN31,,,,,,01/03
+KB0FHP,FN20GE,,,,,,01/03
+KB0FRX,EN10,,,,,,01/03
+KB0G,DM79PA,EME,,,,,09/06
+KB0GL,EN35,,,,,,01/03
+KB0GR,EM29,,,,,,01/03
+KB0GU,EM28TW,,,,,,01/04
+KB0HH,EM07QD,EME,,,,,01/04
+KB0IKP,EN25UQ,,,,,,01/03
+KB0LRI,DM79,,,,,,01/03
+KB0LXX,DN96,,,,,,01/03
+KB0MNK,EN34IW,,,,,,01/03
+KB0NR,EN35OG,,,,,,01/03
+KB0OBT,EN35KB,,,,,,01/03
+KB0OZN,EN34,,,,,,01/03
+KB0PYO,EN24GP,,,,,,01/97
+KB0THN,EN44DB,,,,,,01/03
+KB0TZA,EN35ID,,,,,,01/03
+KB0USF,DM79LR,,,,,,01/03
+KB0VUK,EN34PK,,,,,,09/01
+KB1CJ,FN42JG,,,,,IC746   50: 100W  2el -  144: 100W 13el,09/03
+KB1DFE,FN42ES,,,,,,01/03
+KB1HGB,FN53EU,,,,,,01/03
+KB1LKB,FN31RS,EME,,,,144: 2x 12el 300W,09/06
+KB2AH,FN20,,,,,,01/03
+KB2M,FM29PE,,,,,,01/03
+KB3EDF,FM18RH,,,,,,04/07
+KB3HWO,FN10UB,,,,,,01/03
+KB3PD,FM29,EME,,,,,01/03
+KB3PMR,FN10,EME,,
+KB4FQ,FM04GR,,,,,,01/03
+KB4RSM,EM66OG,,,,,,01/03
+KB4WM,EM63,EME,,,,,01/03
+KB4ZGO,FM06BQ,EME,,,,144: 160W 13B2,08/05
+KB5DAK,DM96,,,,,,01/03
+KB5EK,EM15,,,,,,01/03
+KB5MR,EM26,,,,,,01/03
+KB5MY,DM13NC,,,,,,01/03
+KB5UBE,EM12LQ,,,,,,01/03
+KB5ULP,EM15,,,,,,01/03
+KB5VL,DM73RK,,,,,,01/03
+KB5VQQ,EM15,,,,,,01/03
+KB5WII,EM15,,,,,,01/03
+KB5WMY,EM32,,,,,,01/98
+KB5YAJ,EM14,,,,,,01/03
+KB5YUA,EM44,,,,,,01/03
+KB5ZMY,EM12,,,,,,01/03
+KB5ZUD,EM26,,,,,,01/03
+KB6IGC,DM15DO,,,,,,01/03
+KB7FUV,DN44,,,,,,01/93
+KB7XO,DN41AB,,,,,,01/03
+KB8GC,EN74HD,,,,,,01/03
+KB8JVH,EN80,,,,,,01/03
+KB8O,EN82JJ,,,,,,03/00
+KB8RQ,EM79SV,EME,,,,144: 8x 19el M2,03/05
+KB8U,EN71SW,EME,,,,,01/06
+KB8VAO,CM87XW,EME,,,,,02/09
+KB8ZUZ,EN83JL,,,,,,01/03
+KB8ZW,EN91IJ,,,,,,01/03
+KB9GPW,EN61,,,,,,01/03
+KB9II,EN52WA,,,,,,01/03
+KB9KCJ,EN52,,,,,,01/03
+KB9MLA,EN61CX,EME,,,,18el- 160W,10/98
+KB9NKM,EN70NS,EME,,,,144: 4x 13el 1KW,11/06
+KB9NLM,EN53UO,,,,,,01/03
+KB9PCL,EN41,,,,,,01/03
+KB9PJL,EN44DV,EME,,,,144: 400W 18el,11/06
+KB9Q,EN52VV,,,,,,01/03
+KB9RQZ,EM59,EME,,,,144: 13el 100W,07/06
+KB9TLV,EN45MW,,,,,,01/03
+KB9UMT,EN50DP,,,,,,01/03
+KB9VQC,EN53,,,,,,01/03
+KB9VUG,EN52,,,,,,01/03
+KB9YXF,EN61,,,,,,01/03
+KB9ZK,EN62,,,,,,01/03
+KC0AKJ,EN42,,,,,,01/03
+KC0AMG,DM98GK,,,,,,01/03
+KC0BMF,EN31BE,EME,,,,50: 5ele 100W 144: 13el 100W,12/08
+KC0CHW,EN41IN,,,,,,01/03
+KC0CRE,DM28,,,,,,01/03
+KC0FTQ,DM79OB,,,,,,01/03
+KC0FXY,EN34,,,,,,01/03
+KC0HLN,EN32tl,,,
+KC0HTB,EN34JT,,,,,,01/03
+KC0LBT,EN35IB,,,,,,01/05
+KC0LMS,EN34IW,,,,,,01/03
+KC0MLS,EM19QU,,,,,,01/03
+KC0OG,EN10,,,,,,01/03
+KC0P,EN34SB,,,,,,01/03
+KC0QR,EN10,,,,,,01/03
+KC0UWS,DN70KE,EME,,,,50: 3el,08/05
+KC0Y,DM79,,,,,,01/03
+KC2TN,FM29NS,,,,,,01/03
+KC3AK,FM19UU,,,,,,01/04
+KC3RE,FM18DP,EME,,ex TF3XUU TA3/KC3RE,,144: 280W 0.5dB 15el can elevate manually to  10 eme from car - 432: 110W 0.5dB 19 el can elevate manually to 30,04/06
+KC4PX,EL98QG,EME,,,,,06/05
+KC4VI,EL88SD,EME,,,,144: 4x 3.5wl 1000W,05/05
+KC5BQS,EL29,,,,,,01/03
+KC5BRO,EM15,,,,,,01/03
+KC5LOW,EM22,,,,,,01/03
+KC5NOA,EL08,,,,,50: 150W 5el - 144: 100W 10el - 432: 20W 19el,01/01
+KC5NOB,EL07,,,,,50: 10W 5el - 144: 170W  8el - 432: 10W 19el,01/01
+KC5UOO,EM26,,,,,,01/03
+KC5WX,EM13LB,,,,,,01/03
+KC5YKX,EL17HS,,,,,Icom 746 w/ DEM 22 and 432 xverters  50: 5el - 144: 13el - 222: 15el - 432: 25el,05/02
+KC5ZXE,EM45AM,,,,,,01/03
+KC6A,DM03,EME,,,,,01/03
+KC6TEU,CM98MQ,,,,,,01/03
+KC6WFS,DM04RK,,,,,50: 100W 5el - 144: 100W 2x12el - 432: 50W 2x18el,08/01
+KC6ZWT,CM98NO,EME,,,,144: 300W 17el M2  -  222: 250W 15el -  432: 150W 19el,10/08
+KC7MRP,CN88,,,,,,01/97
+KC7OTV,CN84KA,,,,,,01/03
+KC7V,DM43AS,EME,,,,Rig Kenwood TS2000 Amp Antenna Works 8877 Ant 4 x 2M5WL,10/06
+KC8CCD,EM79VM,,,,,,01/03
+KC8DLL,EN66,,,,,50: 150W M25 - 144: 200W 2x13B2 - 432: 100W KLM,01/98
+KC8GYW,EM79,,,,,,01/03
+KC8NST,EN91QB,,,,,,01/03
+KC8OIT,EN83,,,,,,07/01
+KC8QVO,EM79VP,,,,,,11/05
+KC9AAX,EN52,,,,,,01/03
+KC9AER,EN52,,,,,,01/03
+KC9AYO,EN52,,,,,,01/03
+KC9BTW,EN52,,,,,,01/03
+KC9CMT,EN63LA,,,,,,01/04
+KC9ELU,EM79hj,,,
+KD0BT,EN41,,,,,,01/03
+KD0DW,DN70LF,,,,,,01/03
+KD0HE,EN00,,,,,,01/03
+KD0KUK,EN35dw,,,
+KD0LO,EM48,,,,,,01/03
+KD0PY,EN41UX,,,,,144: IC275A 2516g 150W 13el - 432: IC471H 70W 15el,01/01
+KD0SU,DM78,,,,,,01/03
+KD1DU,FN31FH,EME,,,,,01/03
+KD3UY,FM19LG,EME,,,,144: 2x 4WL antenna 1KW,05/05
+KD4ESV,EL87RH,,,,,,01/01
+KD4FNB,FM17TD,,,,,,01/03
+KD4LT,EM81CG,EME,,,,,01/03
+KD4MZM,EL87RG,EME,,,,50: FT107m - 144: FT726r 170W 19el,07/01
+KD4NOQ,EM55BE,,,,,,01/03
+KD4NUD,EM91HB,,,,,,01/03
+KD4TJN,EM55CE,,,,,,01/03
+KD5FFW,EM12,,,,,,01/03
+KD5FZX,EM12MP,EME,,,,,01/03
+KD5HIO,DM65UV,EME,,,,,01/03
+KD5KJD,EL29IR,,,,,,01/04
+KD5LDQ,EM26IH,,,,,,01/03
+KD5LWU,DM66AU,,,,,,01/03
+KD5OMJ,EM04UO,,,,,,01/03
+KD5OUG,EM12,,,,,,01/03
+KD5QQU,EM12QX,,,,,,01/03
+KD5QWO,EM15AJ,,,,,Yaesu ft-847,01/04
+KD5XB,DM84,,,,,,12/06
+KD7ETC,DM54AH,,,,,,01/04
+KD7YZ,EM88,,,
+KD9KX,EN42,,,,,,01/03
+KE0MO,EN41,,,,,,01/03
+KE0UQ,EM29,,,,,,01/03
+KE2N,FM18EW,EME,,G0VSN,,432: 16x 28el 1000W,08/07
+KE3PL,FN20PM,,,,,,01/03
+KE4ENX,EM84GM,,,,,,01/03
+KE4IKM,EM73,,,,,,01/03
+KE4KDB,EM55,,,,,,01/03
+KE4MKW,EM84DJ,,,,,,01/03
+KE4VUN,EM67MS,,,,,,01/03
+KE4WBO,FL96VW,EME,,,,222: 4x 16el 120W,10/06
+KE4YH,EL88OA,,,,,,01/01
+KE4YYD,EL97RV,,,,,,09/06
+KE5CO,EL29,,,,,,01/03
+KE5ML,EM15,,,,,,01/03
+KE6NDG,CN90QJ,,,,,,01/03
+KE6PT,CM88UE,,,,,,01/03
+KE7CX,CN85LJ,,,,,,01/03
+KE7NR,DM33WM,EME,,,,144: 4x 13el  KW  432: 2x 28el 1KW 50MHZ 5 ele L/B & KW,05/07
+KE7NS,DN41AF,,,,,,01/02
+KE7OI,DN13SU,EME,,,,,01/01
+KE7V,CN88JB,,,,,,01/04
+KF0AU,EN31HI,,,,,,01/03
+KF0CK,EM38JC,,,,,,01/03
+KF0DS,DM41,,,,,,01/03
+KF0FE,EN41,,,,,,01/03
+KF0M,EM17HO,EME,,,,,01/01
+KF0OA,DM79,,,,,,01/03
+KF0Q,EN44EA,,,,,,01/03
+KF4HOU,EM86VE,,,,,,01/03
+KF4JU,EL87,,,,,,01/03
+KF5AL,EM13,,,,,,01/03
+KF5IU,EM31WR,,,,,,01/03
+KF5PE,EM12,,,,,,01/03
+KF6BXH,CM87VQ,,,,,,01/03
+KF6HQC,DM14ED,,,,,,01/03
+KF7CN,DN16LV,,,,,,01/01
+KF7IS,DN41AC,,,,,,01/04
+KF7VY,DN17IQ,,,,,,01/03
+KF8QL,EN72FU,,,N8MXK,,IC-746-Flexradio 1000-DEMI transverters,01/09
+KF9CY,EM59,,,,,,01/03
+KF9YR,EN54,,,,,144: 170W  13B2,01/97
+KG0MW,EN13,,,,,,02/01
+KG0SV,DM79,,,,,,01/03
+KG4BMH,EM76JK,,,,,144: 1000 Watts  sp144vdg GasFet  40 Element Collinear Array 7/8Heliax,05/02
+KG4CHX,EM95LL,,,,,,01/03
+KG4FET,EM90FH,,,,,,07/01
+KG4KAK,EL96VG,,,,,,01/05
+KG4MLA,EL88OA,,,,,,01/03
+KG5RK,EM12,,,,,,01/03
+KG5SF,EM44,,,,,,01/03
+KG5UN,EM02,,,,,,01/03
+KG6DX,QK23KL,EME,,,,144: 4x 13el CushCraft 900W,06/05
+KG6ENA,DM04DK,,,,,,01/03
+KG7CN,DN23BF,,,,,50: 5el 1KW,11/06
+KG7FU,CN83KA,,,,,144: 2x11el 1KW,01/01
+KH7K,AL08UJ,,,,,,01/03
+KH7X,BL11CG,EME,,EXPEDITION,,,04/07
+KH7Y,BL11,EME,,W6YM,,,08/07
+KI0LE,EN36US,EME,,KB0PDO,,Kenwood TS-790A   Yaesu FT-847,09/07
+KI4BYV,FM15CX,,,,,,01/04
+KI4M,EM95AQ,,,,,144: 800W   M2 18XXX,01/01
+KI4TZ,EM95LD,EME,,,,144: 2x 13el 400W,05/08
+KI6FF,DM13AR,,,,,,01/03
+KI7JA,CN85RL,,,,,,01/04
+KI7WB,DN62,,,,,144: 200W 10el,01/01
+KJ5EY,DM65XA,,,,,,01/03
+KJ5Q,EM15,,,,,,01/03
+KJ6HZ,DM13HX,EME,,,,50: 3el 100W - 144: 2x 17el 500W - 222: 10W - 432: 4x 19el 500W - 1296: 10W dish - 10G: 2W dish,09/06
+KJ7A,DM03,EME,,,,432: FT-817  8 x 25 ele,11/00
+KJ7F,DN13VO,EME,,,,,01/04
+KJ7OG,DM42MH,EME,,,,,01/03
+KJ9I,EN53QB,EME,,,,50: 1 Yagi,11/08
+KK4NO,EM92,,,,,,01/03
+KK5WA,EM45,,,,,,01/03
+KK7B,EN57RB,,,,,,01/03
+KK7LK,CN88SS,,,,,,01/03
+KK8O,EN80OR,,,,,,01/04
+KL6M,BP51DC,EME,,ex AL7OB,,9.2m dish,10/06
+KL7FB,BP51HO,EME,,,,,01/03
+KL7FH,BP41BB,EME,,,,432: 16X12 ele polarity rotation FT-847 100 W preamp K0RYT .18db NF,09/05
+KL7HFQ,BP51,EME,,,,,01/03
+KL7IZW,EM13SE,EME,,,,,12/04
+KL7UW,BP40IQ,EME,,ex AL7EB,,FT847 144: 4 Xpol-20el M2 170W MGF1801  432: 16.5dbd Antenne 50W,09/05
+KL7X,BP51AE,EME,,,,,02/01
+KM0A,EM84UT,EME,,,,144: single Yagi,10/06
+KM0T,EN13VB,,,,,,07/01
+KM1H,FN42,,,,,144: 1-5KW  2x4218XL,01/01
+KM4ID,EM93WA,,,,,,01/03
+KM5OL,EM13RB,,,,,,01/03
+KM5PO,EM12KO,EME,,ex KD5BUR,,144: 13KW ERP,04/05
+KM6WC,CM97OP,,,,,FT100,09/02
+KN4SM,FM16QT,,,,,144 : 1.5KW  5wl M2  - 432: 1.5KW 13wl M2 - 222:  300w K1FO  22el,12/07
+KN6DD,DM03,EME,,,,,01/03
+KO0Z,EM48,,,,,,01/03
+KO2R,EN52,,,,,,01/03
+KO4FR,FM16UV,,,,,,01/05
+KO4QR,FM26,,,,,,01/98
+KO7N,CN84IA,EME,,,,,08/01
+KQ0Z,EM37,,,,,,01/03
+KQ4I,FM06JB,EME,,,,144: DISH,01/90
+KQ6JI,CM87UJ,,,,,,01/03
+KQ6MU,DN16WF,EME,,,,144: 17el 100W,07/05
+KQ6UH,DM14BC,,,,,,01/03
+KR5E,EL29JN,,,,,,01/03
+KR5V,EM13,EME,,,,,01/02
+KR5Vex,EM13SD,,,,,,01/03
+KR7O,DM07BA,EME,,ex N7STU,,HTX100  144: Trvt 1KW  2M5wl  - 222: Trvt 450W 7wl yagi,10/06
+KR8L,DN43AL,,,,,,01/03
+KS0F,EM48SL,,,,,,01/97
+KT4HA,FM15BH,,,,,,01/03
+KT4KB,EM93,,,
+KT8O,EN71KI,,,,,,04/08
+KT8U,EN80OR,,,,,,01/03
+KU0KU,EM28QV,,,,,,01/03
+KU2A,FN42DW,EME,,,,144: 12el 1500W,12/07
+KU3T,FN20,EME,,,,,04/98
+KU4F,EL99AF,EME,,,,,01/03
+KU4R,EM86SK,EME,,,,144: 2x18XXX  200W,01/01
+KU7Z,DN41AF,EME,,,,144: 2x 12el 600W,10/06
+KV4EB,EM66FL,,,,,144: 7el 14el,11/01
+KV6J,BK29AQ,,,,,,01/03
+KW0A,EM48RI,,,,,144: 1KW 24el,08/01
+KW0T,EM19WF,,,,,,01/03
+KW1AM,FN41CT,EME,,,,,05/07
+KX7V,DM42,,,,,,01/03
+KX8XX,EN74HD,,,KB8GC WB8CKZ WN8CKZ,,,01/08
+KX9X,EN60AC,,,ex KF9PL,,IC706MKII - 50: 100W 3el - 144: 100W 11el,09/01
+KY7B,DM43,,,,,,01/03
+KZ2S,FN20XD,,,,,,01/03
+LA0BY,JO59FW,,,EX DF9PY,,144: 180W 9el -  /p JO59ix: 144: 180W  2x9el  MGF1302 - 432:  120W 2x13el Preamp - 1296: 20W 43el Preamp,01/08
+LA0FX,JP40LM,,,ex SP9CSO,,,11/95
+LA0GE,JO59NJ,EME,,,,Icom IC-7000,03/07
+LA1BEA,JO29XB,,,Expedition,,,01/91
+LA1K,JP53EK,EME,,,,144:  2x4CX250b  MGF1402 preamp  4x17el,01/95
+LA1KHA,JO49SE,,,,,,01/93
+LA1TV,JO49TQ,,,,,,01/04
+LA2AB,JO59FV,EME,,,,,07/02
+LA2MOA,JP50HW,,,,,,12/08
+LA2PHA,JO38IB,,,,,144:  100W  10el,07/02
+LA2RZ,JP30AI,,,,,144: 160W 17el,05/02
+LA2YMA,JP32LK,,,,,144: 40W 9el,02/04
+LA2Z,JO59EJ,EME,,,,1296: 4.2m dish  300w  f-d=0.5  VE4MA feed  NF 0.3dB,10/06
+LA3BO,JO59CD,,,,,,04/04
+LA3EU,JP32BG,,,,,,01/93
+LA3HPA,JP50QM,,,,,Icom IC-746pro  Icom IC-706MkIIG,09/08
+LA3WU,JP20QH,EME,,,,,01/93
+LA4DL,JP32EL,,,,,,03/04
+LA4XGA,JP33VC,,,LB7ZC,,144: 10 5m ant 800w,10/07
+LA4YGA,JO48BE,EME,,SP8DXL  SP2DXL,,IC910 / IC706  144: 300W 15el - 432:  17el 100W,04/07
+LA5IH,JP20NK,,,,,,01/93
+LA5KJA,JP50IV,,,,,,01/98
+LA5KO,JO38HC,,,,,144: 300W  17el  MGF1302,06/06
+LA5NNA,JO38MA,,,,,144: 100W 19el,12/06
+LA5PH,JO49XA,,,,,,01/92
+LA5SAA,JO29SE,,,,,,01/93
+LA5TFA,JP99LQ,,,,,IC751-IC706-FT736r-FT225rd -  50: 2x5el HL166V - 144: 3CX800A7 15el,05/07
+LA6CU,JP20QL,,,,,144: TS790e 150W 16el MGF1302,09/99
+LA6HL,JO28TW,EME,,,,,01/02
+LA6I,JP41,,,Expedition,,,01/93
+LA6K,JP33VC,,,,,,05/03
+LA6LU,JO28,,,,,,07/96
+LA6MV,JO59FJ,,,,,,08/02
+LA6QBA,JP61BJ,,,,,50: 100W 2x5el - 144: 600W 4x11el,07/04
+LA6TPA,JP54RL,,,,,FT-2000 IC-7000,03/08
+LA6VBA,JO48,EME,,,,,01/93
+LA7KK,JP50,EME,,,,,01/93
+LA7SP,JP99MQ,,,,,,07/05
+LA8AE,JO59CC,EME,,,,,01/94
+LA8AJA,JP50HP,,,,,,07/06
+LA8AV,JO59DS,EME,,,,FT-1000MP + transverter,05/07
+LA8G,JP53EJ,,,,,,01/05
+LA8GKA,JO59FS,,,ex LC1PAT,,IC706,08/05
+LA8KV,JP52QQ,EME,,,,144: IC746 - 1Kw (or 1.8Kw) 4x15 el. Fullelv.,06/06
+LA8LF,JO59BS,EME,,,,1500W  4.6M NEC solid Dish  Autotracking,05/07
+LA8NK,JO48KM,,,,,Ft-736 Ft-897 5 el yagi on 6   9 el yagi on 144,04/07
+LA8OW,JP50NC,,,,,,05/02
+LA8SMA,JP42GE,,,,,,05/07
+LA9BM,JP40CM,,,,,,03/98
+LA9DFA,JP60AE,,,,,144: IC-706MKIIG + SLA200 250w + 2M5WL 17el / 50: IC-756 PROII 100w 5el,06/09
+LA9DL,JO59KE,EME,,,,,04/04
+LA9FY,JP40,,,,,144: 160W 16el,02/09
+LA9IY,JP53,,,,,,01/03
+LA9NEA,JO59DX,EME,,OP LA2AB,,144:  4x 19el K1FO  1-5KW,02/05
+LA9Z,JO38HC,,,,,50: 100W  5 ele Tonna  144: 150w  15 ele CueDee,07/06
+LB7FA,JO38LM,,,,,144: IC821 9el 180W,03/05
+LM9K75Y,JO48AD,,,SPECIALCALL,,144: 3wl Preamp GS35B,01/09
+LU1C,GF05OM,EME,,,,4 x 3WL and 600 Watts,10/08
+LU1CGB,GF05OM,EME,,,,144: 4x 14 ele 600 W Pre RX - 432: low Pwr,02/09
+LU4HO,FF78RA,,,,,,01/03
+LU5BOJ,FG75HF,EME,,,,FT757GXII 144: 2x 12el 600W,03/07
+LU6DW,GF05SF,EME,,,,,01/03
+LU7DZ,FF78RA,EME,,,,144: 4X16 el 1 KW Pre RX  432:  4X22 el 1KW Pre RX,02/09
+LU7FA,FF96,EME,,,,144: 2x 12el 140W  Preamp (maybe 4x 12),02/09
+LU7FIA,FF97PA,EME,,,,144: 2x 12el 300W  Preamp - 432: 1x 19el 100W,02/09
+LU8EDR,GF05TF,EME,,,,1296 EME under construction,02/09
+LU9AWH,GF05SJ,,,,,,03/07
+LU9MBK,FF57NR,EME,,,,144: 4el Quad 100W,10/06
+LX1DB,JN39CO,,,,,,10/06
+LX1FX,JN29WT,,,,,,07/08
+LX1GR,JN39,,,,,,01/93
+LX2DX,JN29WO,,,,,,10/02
+LX2SM,JN39,,,,,,07/04
+LX8M,JN29XX,,,EXPEDITION,,,08/08
+LX8X,JN29XX,,,EXPEDITION,,,08/08
+LY2AAM,KO23,,,Expedition QSL via DL3BQA,,,06/06
+LY2BAW,KO25KA,,,,,FT-736R+home made PA - 144: 24el 2M8WL M2 - 432:-30el KLM - 1296: 44 el KLM,05/03
+LY2BIL,KO24PQ,,,ex UP1BWR - not qrv MS nw! (01/01),,144: FT736r  30el  1KW,08/02
+LY2BUU,KO15XH,,,,,IC-706MKII,10/07
+LY2BW,KO24,,,,,,01/95
+LY2CI,KO14WV,,,,,TS-790A- 144: 150W  11el - 432: 25el yagi - 1296: 36el,08/03
+LY2FE,KO05NQ,,,not qrv MS nw! (01/01),,144: FT736r  300W  13el,10/02
+LY2FR,KO15VR,,,,,,07/04
+LY2GC,KO25KA,EME,,,,,10/04
+LY2MW,KO24PS,,,,,IC746 + PAs   50: 100W 6el -  144: 100Watt  13el DJ9BV  SP2  - 432: 200w 23el DJ9BV SP70,08/04
+LY2R,KO15VR,EME,,LY2FR,,FT857D  144: 4x 10el  800 W,09/07
+LY2SA,KO14LL,EME,,,,144: IC821H  300W  17el 5wl  MGF1502  - 432: 175W 30el,06/07
+LY2WR,KO24FO,EME,,UP1BWR,,144: FT736r 11el  1KW+  -  432: 50W  24el - 1296: 10W  loopyagi,03/09
+LY3BF,KO24OR,,,,,,01/96
+LY3GM,KO14LL,,,,,,12/97
+LY3W,KO14XW,EME,,LY3BW,,ICOM 706 mk-2g  FT1000mp mark-V,10/07
+LY4U/P,KO24FO,EME,,LY2BIL,,,03/09
+LY8O,KO24OP,,,LY2MW,,IC-275H  IC-475H  IC-910H,05/08
+LY8X,KO24PQ,,,SpecialCall,,,08/99
+LZ1AG,KN22ID,EME,,,,144: 14el 100W,12/99
+LZ1BB,KN12PQ,EME,,,,,07/09
+LZ1DP,KN22TR,EME,,,,144: 4x5 WL DJ9BV cross+MGF1302 FT-736R  PA 1-8 KW  2xGU74B,01/05
+LZ1DX,KN22,,,,,,01/93
+LZ1FG,KN12,,,,,,08/08
+LZ1JH,KN32FR,,,,,,06/99
+LZ1KDP,KN12SP,EME,,,,,01/98
+LZ1KDZ,KN32,EME,,,,,01/93
+LZ1KG,KN31CS,,,,,50: 4el  transv. 10W - 144: 2x16 F9FT IC275e - 432: 15el FT790r,09/03
+LZ1KJ,KN31CS,,,,,50: FT987 4el 15W - 144:  FT987 250W  2x8el GaAs Fet,09/03
+LZ1KQ,KN22TK,,,,,,12/96
+LZ1KRB,KN32,,,,,,01/93
+LZ1KSN,KN32SL,,,,,,01/93
+LZ1KSW,KN31CS,,,,,,12/95
+LZ1KU,KN32,,,,,,01/93
+LZ1KWT,KN22TK,,,QSL via LZ1DP or LZ1JH,,144: FT736  1KW  2x16el F9FT  GaAsFet 3SK129,11/03
+LZ1NO,KN12,,,,,,12/01
+LZ1OA,KN22TK,EME,,,,,06/06
+LZ1QI,KN12,,,,,,11/01
+LZ1QM,KN12,,,,,,01/93
+LZ1R,KN42AA,,,Expedition,,,01/93
+LZ1UB,KN22TK,,,,,,01/94
+LZ1UK,KN22ID,,,,,144: 60W  8el Quagi,06/06
+LZ1V,KN12QQ,,,,,,01/90
+LZ1VPV,KN32AS,,,,,,08/05
+LZ1ZP,KN22ID,,,,,144: 150W 14el DJ9BV,05/03
+LZ1ZX,KN32IO,,,,,,12/99
+LZ2FO,KN13KX,EME,,,,144: 500W 15el 9BV,10/07
+LZ2HM,KN12QP,EME,,,,144: FT847 17el yagi,07/03
+LZ2HV,KN23UB,,,,,144:  600W  12el Quad,12/98
+LZ2JF,KN23,,,,,,01/93
+LZ2KRU,KN33FL,,,,,144: 500W   17el,08/97
+LZ2PP,KN33,,,,,,01/93
+LZ2US,KN13RJ,EME,,,,144: 4x KLM17LBX   2x 4CX800A  2KW   FSC11LF,08/00
+LZ2UU,KN12QP,,,,,,08/96
+LZ2ZY,KN13OT,,,,,,05/08
+LZ3BD,KN12QQ,,,,,432: 250W  32el GaasFet,12/99
+LZ3CQ,KN12PQ,,,,,,01/03
+LZ3GM,KN32RL,,,,,144: IC735  20W 3wl 10ele BVO2 MGF1302,05/08
+LZ3YH,KN22,,,,,,12/95
+LZ4KK,KN23XU,,,,,TS-2000   Mirage B2516G 160W   4el DK7ZB,05/08
+LZ5GM,KN32QL,,,,,144: IC-720 50W 13eleFT MGF1302,04/03
+LZ5N,KN21JX,,,,,,01/95
+LZ5UV,KN12PR,,,,,144: FT847  IC271  4cx250 PA 17el DJ9BV,11/02
+LZ5Z,KN12PR,,,,,144: 2x15el 1KW,12/99
+LZ6T,KN22IS,,,,,,12/99
+LZ7A,KN43HL,,,Expedition,,,01/94
+LZ7P,KN22,,,,,,12/96
+LZ7Y,KN41AX,,,,,,08/99
+LZ9M,KN32RL,,,,,,12/03
+LZ9W,KN12MO,,,,,IC-746  FT-847,01/05
+LZ9X,KN32AS,,,= LZ1KWT,,144: 2x 15el  1KW,08/08
+M0AFJ,IO92OB,,,G8GGP,,200W,04/07
+M0BCG,IO91DO,EME,,,,144: ic706mk2g  2x4cx250b  4x9el elvation  mgf1302 - 50:  jst245 p50vdg 2x3-500z 2x6el,04/05
+M0BPQ,IO91WP,,,EX G7ACQ G5YC,,50: 400W 5el  144: 7el 400W  432: 13el 120W  1296 19el 50w,05/09
+M0CQZ,IN69UW,,,Expedition,,,09/00
+M0CTP,IO93,,,,,,03/02
+M0EME,IO93GF,EME,,,,432:  FT847  4x 19el  100W,09/05
+M0IKB,IO94SG,,,,,,11/06
+M0ITY,JO01BS,,,OK2ITY OK2IT G6UT,,2m - 15+2x13+4x4el QRO  / 70cm - 200w - 23el / 6m - QRO + 5el,11/07
+M0MIG,IO90WX,,,,,,10/06
+M0VHF,IO82VF,,,,,FT847  JST245  3CX800  8877 - 50: 5el - 144: 10el,10/02
+M1DRK,IO93US,,,,,50: TS60  5el  90W,01/02
+M1GSM,IO94BU,,,,,144: 150W 8el,08/03
+M5FUN,JO00DX,,,ex 2E0ATF+2E1GOM,,144: TR751E 100W 12el,03/04
+M5MUF,IO92JP,,,ex GU6AJE,,IC202  IC706  various transverters,09/03
+MI/DL1YMK,IO74DU,EME,,EXPEDITION,,,06/09
+MI0AYR,IO64VQ,,,,,144: TR9130 150W 19el,04/05
+MI0JST,IO65SE,,,,,144: IC910  100W  10el,06/05
+MI0KAM,IO65PE,,,,,,06/05
+MM0BQI,IO85KX,,,,,50: 100W 5el - 144: 13el,03/00
+MM0CCC,IO85MW,,,,,144: FT1000MP  TVVF144A  17el  100W,05/04
+MM0CEZ,IO75XU,,,,,IC910  IC775DSP  Transverter,03/04
+MM0DQP,IO88KI,,,,,100W,05/04
+MM0KOS,IO85CR,EME,,EX MM3KOS,,ICOM 290D MK2,07/07
+MM0MMK,IO85EV,,,,,,06/05
+MM1BXF,IO76PA,,,,,,01/03
+MM3ENW,IO85BS,,,,,,03/05
+MM5AJW,IO88KI,,,,,144: 100W 11el Vargaarda,01/08
+MM5DWW,IO89ID,,,ex MM1MVJ,,KENWOOD TR751/TS690 100W 11el,04/04
+MS0FNR,IO88KK,,,,,,12/04
+MW0HMV,IO71XT,,,2W0CDJ,,FT2000 & EXPERT 1K 6M -  IC910X  2M 70CM 23CM - TS2000 with TRC410sl & te 0650g,06/09
+N0AB,EM28,,,,,,01/03
+N0AE,EN51,,,,,,01/03
+N0AJU,EN11,,,,,,01/03
+N0AKC,EN44GU,EME,,,,144:  4x 18el 1KW   222: 350W 16el,10/05
+N0ATV,EN34JX,,,,,,01/03
+N0BTN,EN21,,,,,,01/03
+N0CIH,EN42,,,,,,01/03
+N0CKK,EN34,,,,,,01/03
+N0DAG,EM29QF,,,,,,01/03
+N0DQS,EN22GD,,,,,,07/01
+N0DY,EN42FA,,,,,,01/03
+N0EC,DN70LF,,,,,50: 1KW - 144: 1-5KW - 222: 120W - 432: 1KW - 902: 200W - 1296: 100W - 2304: 15W - 3456: 1W - 10G: 1W,01/01
+N0ECI,EM37,,,,,,01/03
+N0EOQ,EM24,,,,,,01/03
+N0FFO,EM17,,,,,,01/03
+N0FQW,EM39,,,,,,01/03
+N0GPH,EM48,,,,,,01/03
+N0GXA,EN13QH,,,,,144: 1KW preamp 18el,01/98
+N0GXN,EM48,,,,,,01/03
+N0HJZ,EN34FV,,,,,144: TS700S  200W  preamp  12el,01/01
+N0HKT,EM17,,,,,,01/03
+N0HZ,EN34,,,,,,01/03
+N0ICV,EN52XA,,,,,,01/04
+N0IDT,EN10,,,,,,01/03
+N0IS,EM48,,,,,,01/03
+N0IT,EM48RN,,,,,144: 170W,01/01
+N0JCF,EN35,,,,,,01/03
+N0JEQ,EM27,,,,,,01/03
+N0JK,EM17,,,,,,01/03
+N0KE,DM69,,,,,,01/03
+N0KEV,EM17,,,,,,01/03
+N0KIS,EN10QT,,,,,,01/03
+N0KM,DM67VR,,,,,,01/97
+N0KN,EM28,,,,,,01/03
+N0KQY,DM98GK,EME,,,,144: 15/19dbd antenna 1KW,02/01
+N0LIK,EM48,,,,,,01/03
+N0LL,EM09,,,,,,01/01
+N0LNO,EN42,,,,,,01/03
+N0LRJ,DM78,,,,,,01/03
+N0NAS,EN35,,,,,,01/03
+N0NEG,EM29,,,,,,01/03
+N0NHS,DN70LF,,,,,,01/03
+N0OIB,EN35,,,,,,01/03
+N0OYQ,EN25,,,,,,01/03
+N0PB,EM39WO,,,,,,11/01
+N0PJU,EN41,,,,,,01/03
+N0POH,DM79OP,,,,,,01/01
+N0QBF,EM48SR,,,,,,01/03
+N0REN,EN34,,,,,,01/03
+N0RHL,EN10RT,,,,,,01/03
+N0RQ,EM13RG,,,,,144: Icom IC-746PRO,06/06
+N0SBU,EN35,,,,,,01/03
+N0SHR,EN26,,,,,,01/03
+N0SRQ,EN18,,,,,,01/03
+N0SWV,DM79,,,,,144: 170W 2x16el - 432: 35W 2x18el - 1296: 60W Rhombic Array,05/98
+N0TOU,EM29,,,,,,01/03
+N0TVJ,FM03UW,EME,,,,,10/05
+N0UGY,DM79,,,,,,01/03
+N0UK,EN34JV,,,,,50: 10W KLM661 - 144: TS930/DEM Tvtr 300W K1FO-12 - 222: TS820/HB Tvtr Amp,07/01
+N0US,EN10,,,,,,01/03
+N0UU,EM18,,,,,,01/03
+N0VSB,DM79RJ,,,,,50: 1KW 7el - 144: 1.5KW 18el MGF- 222: 200W 23el MGF- 432: 200W 38el MGF- 902: 25W 4x33el - 1296:50W 2x55el,01/02
+N0WJY,EN10QT,,,,,,01/03
+N0WVU,DM79HV,,,,,,01/03
+N0WX,EN34,,,,,,01/03
+N0XKS,EM29,,,,,,01/03
+N0XPI,EM29,,,,,,01/03
+N0YGM,DM78OV,,,,,,01/03
+N0YK,DM98MG,EME,,,,144: 18xxx with 350W,05/06
+N0YNP,DN81CW,,,,,,01/03
+N0ZEB,DM79,,,,,,01/03
+N0ZKK,EM29,,,,,,01/03
+N1BUG,FN55MF,EME,,,,50: 400W 5el  144: 1500W 20el Yagi  222: 500W 24el   432: 550W 22el,11/04
+N1CPE,FN42QH,,,,,,01/03
+N1EKV,FN42JK,,,,,,01/03
+N1GMV,FM05TU,,,,,,01/04
+N1GOD,FN41VQ,,,,,,01/03
+N1HOQ,FN41TP,EME,,,,144: 12el 400W,11/06
+N1IW,EN75ve,,,
+N1JEZ,FN34IM,,,,,FT736 FT847 FT920 FT290 DSP10 ACOM1006,05/07
+N1KI,EM75WX,EME,,WB4KMH,,144: 4x 12el 1500W  -  432: 2x 9wl 1000W,04/07
+N1KTM,FN41SR,,,,,144: 1kw- 2x2M9,01/97
+N1LDY,FN41JR,,,,,IC-746  IC-910  DEMI-222  DEMI-903,01/04
+N1LF,EM63NF,,,,,IC-910H  736R  Icom 746 Pro,04/08
+N1MIW,FN41EQ,,,,,FT847 FT736,05/08
+N1NCO,FN42GL,,,,,,01/03
+N1OFZ,FN31HL,,,,,FT-847  SDR-1000  FT-726R,03/07
+N1RWY,FN54NO,,,,,50: 100W 3el CC - 144: 800W 18el - 222: 350W FO16 - 432: 350W 2xFO22,01/01
+N1RZ,FN44EI,,,,,,07/01
+N1SZ,FM19NE,,,,,IC 756Pro,10/07
+N1VQR,FN42JJ,,,,,,01/03
+N2CEI,FN20,,,,,,01/03
+N2FKF,FN30BR,,,,,,01/04
+N2HLT,FN12LN,EME,,,,,01/03
+N2IQ,FN13TD,EME,,,,,01/03
+N2IQU,FN13,,,,,,01/03
+N2JDQ,FN20VG,,,KB2GWI,,IC820H,09/07
+N2JMH,FN13AF,,,,,,01/03
+N2JQR,FN13,,,,,50:  500W  5el,01/01
+N2JR,FM18CP,,,,,50: 100W 5el,09/01
+N2KW,FN03XE,,,,,,01/03
+N2MB,FN30CO,,,,,,01/03
+N2MCY,FN30AR,,,,,,01/03
+N2MKT,FN13LK,,,,,,01/03
+N2MSS,FN31AA,,,,,,01/03
+N2NEP,FN13EB,,,,,,01/03
+N2NZI,FN32,,,,,,01/03
+N2OLA,FN12MM,,,,,,01/03
+N2OTO,FN30CR,,,,,144: TS850 LT2SMKII 200W 4el,01/01
+N2PC,DM78QX,,,,,,01/03
+N2UO,FM06BG,EME,,,,All homebrew,09/07
+N2VR,FN12SK,EME,,ex KC2EAL,,144: 4x13B2,08/01
+N2WK,FN03XE,EME,,,,144: 1-5kw  4x2.2 wl full elv.   MGF1302,10/00
+N2WLS,FN02RQ,,,,,,01/03
+N2XK,FN20RF,,,K2WKA,,FT1000MP MKV with FTV-1000 6M Icom IC706MKIIG 2M/70CM,11/08
+N3AHF,FN20SF,,,,,,01/03
+N3AJX,EN71KC,,,,,,01/03
+N3FA,FN21,EME,,ex WB3FAA,,144: LT2S 8877 700W 4x12el M2 - 432: FT736 SP7000 3CX800 700W 4x19el,10/99
+N3JNP,EN91,,,,,,01/03
+N3KKM,EM28,,,,,,01/03
+N3LL,EL86,EME,,
+N3NDY,DM09CJ,,,,,Kenwood TS-60,03/08
+N3OPM,FM19PH,,,,,,01/01
+N3RN,FN11WH,,,,,144: 500W  16el KLM,07/01
+N3TAD,FM28FH,,,,,TS-480HX   FT-847,09/07
+N3WT,FM19EJ,,,,,,01/04
+N3WXW,FN20CE,,,,,,01/03
+N3XI,EN90XJ,,,,,,01/03
+N3YGA,FN20BI,,,,,50: 160W 4el - 144: 170W 14el,01/98
+N4BH,EM95OC,EME,,,,144: 400W 17el,10/08
+N4CAG,EM86PI,,,,,,01/03
+N4EQT,EM77,,,,,,01/03
+N4FRE,EL06LL,,,,,,01/03
+N4GJV,EM95PS,EME,,,,,05/98
+N4GKO,EM65LO,,,,,144: FT736r 350W 2M18XXX,01/01
+N4HN,EM95OE,,,,,TS-2000X,05/09
+N4HY,FN20RG,,,,,,01/04
+N4IP,EM73WV,,,,,,01/03
+N4IPB,EM66,,,,,,01/03
+N4IS,EL96UB,,,ex AB6WC- PY2DP....,,FT1000MP+Trsv  144: 350W 18el M2,06/01
+N4KWX,FM08WF,,,,,,01/97
+N4KZ,EM77GT,,,,,,09/01
+N4LXB,EM83VL,,,,,,01/03
+N4MW,FM17KN,EME,,,,,01/03
+N4OYS,EM65,,,,,,01/03
+N4PZ,EN52,EME,,,,,04/97
+N4SC,EN72,,,,,,11/04
+N4TWX,EL89TW,,,,,50: 5el 75W  -  144: 15el  150W Preamp,01/01
+N4UK,EM84XP,EME,,,,144: 1KW 13/13el - 222: 750W 23elM2 - 432: 750W 4x19el,01/97
+N4WI,FM14IL,,,,,,01/04
+N4XD,FM05,,,,,144: TS700SP 160W,01/01
+N4ZKR,EM65,,,,,,01/03
+N4ZRW,EM17KN,,,,,,01/03
+N5AC,EM13QC,,,WD5EMG,,Many,01/08
+N5AF,EM20,,,,,,01/03
+N5AHD,EL17,,,,,,01/03
+N5AMA,EL29,,,,,,01/03
+N5ARS,EM26,,,,,,01/03
+N5AXJ,EM86,,,,,,01/03
+N5BA,EL29FX,,,,,144: 150W 18el,07/05
+N5BHO,EM31,,,,,,01/03
+N5BHX,EL09,,,,,,01/03
+N5BHZ,EM22,,,,,,01/03
+N5BLK,EL29,EME,,,,,02/05
+N5BLZ,EM20AB,EME,,temp. QRT now 10/05,,144: IC746 to homebrew 8877 PA  1 5/8 Andrews  4x 28 Xpol  preamp 0.3db,09/06
+N5BO,EM60UR,EME,,,,6M5X/100  2x2m9/400w  70cm 13wl/200w,04/07
+N5DL,EM36,,,,,,01/03
+N5EIL,EM12UR,EME,,,,144: 15el 50W,05/05
+N5EM,EL29,,,,,,01/03
+N5FV,EM03,,,,,,01/03
+N5HHS,EL29,,,,,,01/03
+N5IRM,EM13RC,EME,,,,144: 2x 12el 300W,01/06
+N5IS,DM96,,,,,,01/03
+N5ITO,EM12MR,EME,,ex KA9JLU,,144: 17el 750W - 432: 4x 18el 250W,11/05
+N5JM,EL49,,,,,,01/03
+N5KDA,EM41HM,EME,,,,144: 4 x 17el 1.5 KW,09/07
+N5KWB,EM32QB,,,,,,01/03
+N5MP,EM12,,,,,,01/03
+N5MWS,EM13,,,,,,01/03
+N5MYH,EM32,,,,,,01/03
+N5NDV,EM15,,,,,,01/03
+N5NSH,EM14,,,,,,01/03
+N5OCP,EM15,,,,,,01/03
+N5OSK,EM25FI,EME,,,,144: 26B2 350W,06/05
+N5QGH,EM13QC,,,,,,01/03
+N5QS,EM45,,,,,,01/03
+N5QT,EM45,,,,,,01/03
+N5RZ,DM81XW,,,,,,01/03
+N5SAL,EM28,,,,,,01/03
+N5SIX,EM42XI,EME,,,,144: 500W 9el,06/05
+N5TML,EM14,,,,,,01/03
+N5TQB,EM31PJ,,,,,,01/03
+N5TX,EL09,,,,,,01/03
+N5WS,EL09RU,,,,,,01/01
+N5XCX,EL09,,,,,,01/03
+N5XU,EM10DG,,,,,,01/01
+N5YLS,EM54,,,,,,01/03
+N5YSM,EM15,,,,,,01/03
+N5ZLU,DM95,,,,,,01/03
+N5ZWO,EM32,,,,,,01/03
+N6CL,EM26,,,,,,01/03
+N6CV,DM04UF,,,,,,01/03
+N6CW,DM12JT,EME,,,,50: 7el 1KW    144:  4x 9el  1KW,12/07
+N6DHN,CM98,,,,,50: 150W  4el - 144: 150W  22el - 432: 100W  40el,01/98
+N6ENU,DM04,,,,,144: 270W  13el Yagi  -  50: 100W 7el,01/01
+N6HV,DM04,,,,,,01/03
+N6KBX,CM98,,,,,50: 400W  2x5el - 144: 350W  4x17el - 432: 175W  2x33el,01/97
+N6KK,DM03TV,EME,,,,144: 2x 5wl Ant  1500W,10/06
+N6KMR,CM97MO,,,,,,01/03
+N6NB,DM05,,,,,,01/03
+N6OVP,CM87,EME,,,,,01/03
+N6PYI,DM05KJ,,,,,,01/03
+N6RA,CM87SR,,,,,,01/03
+N6RJM,DM14CP,,,,,50: 1KW  9el - 144: 1-5KW 4x18el - 222: 350W 2x7wl - 432: 1KW 2x13wl,01/01
+N6RMJ,DM14CP,EME,,,,IC-910H / IC-756Pro,05/07
+N6RPM,DM04UA,,,,,,01/03
+N6RZ,CM87WB,,,,,144: 1KW  17B2,01/01
+N6SPP,CM97AX,EME,,,,10ele 2m IC746  FT857D  Elk,10/07
+N6TQS,CM87UU,,,,,,01/03
+N6TX,FN11LH,EME,,,,,01/03
+N6VHF,DM13,,,,,,01/01
+N6VMO,CM94SP,EME,,,,144: 2x 17el 350W,08/06
+N6YM,CM88XF,,,,,,01/01
+N6ZE,DM04NE,EME,,ex K1FJM,,IC756 PRO II  50: 100W 5el - 144: 8930Amp 2M5wl Preamp -  222: 75W 10el -  432: 75W 21el - 1296: 20W 33el,08/03
+N7AM,CN87QN,EME,,,,,08/03
+N7AMA,DM33,,,,,,01/03
+N7ART,CN87,EME,,,,,01/03
+N7AVK,CN84,,,,,,01/03
+N7BSN,CN87QQ,,,,,,01/03
+N7CZ,DN47HM,,,ex KQ7K,,FT736 IC706,01/02
+N7DMA,DM42NL,,,,,,01/03
+N7EMD,DM26JE,,,,,,01/03
+N7EY,CN96QO,,,,,,01/03
+N7IJ,DN44GB,,,,,,01/03
+N7LQ,DN01FA,EME,,ex WB7TDI,,432: 1.5KW  4 x FO-25's,06/00
+N7MWV,CN87VQ,,,,,144: 250W  CC3219,01/01
+N7QJP,DM33VM,,,,,,01/98
+N7SKT,DM33SN,,,,,,01/01
+N7WNX,CN83OW,EME,,,,,12/04
+N7WS,DM42JH,,,,,144: 8877  17el  GaAs,01/01
+N7YAG,CN85,,,,,144: FT736r  300W  11el KLM,01/98
+N7YAP,DN07HJ,,,,,,08/01
+N8AIA,EN82KL,,,,,,01/03
+N8ASB,EM89,,,,,,01/03
+N8AXA,EM79UP,EME,,,,,01/03
+N8BSG,EN82,,,,,,01/03
+N8BXP,EN81,,,,,,01/03
+N8CGY,EN74OH,,,,,,01/01
+N8CJG,EN84FG,EME,,,,,03/05
+N8CJK,EN84FG,EME,,,,,11/05
+N8CQ,FM05OT,EME,,,,,01/04
+N8DJB,EN81FJ,EME,,,,,01/03
+N8ITP,EN81XF,,,,,,01/03
+N8JMK,EN90,,,,,,01/03
+N8KWX,EN62AD,,,,,,01/03
+N8LCU,EN72,,,,,,01/03
+N8NPX,EM79XR,,,,,,01/03
+N8OC,EN83AO,EME,,,,50: 100Watts 7el hb - 144: 1500Watts 17ele M2 5wl,08/05
+N8PUM,EN66DL,,,,,144: 200W 2x17B2,01/98
+N8PVT,EN64,,,,,,01/03
+N8QOD,EN79,,,,,,01/03
+N8TDL,EN90BN,,,,,,01/03
+N8VES,EM79VT,,,,,,01/03
+N8ZAT,EM79,EME,,,,,01/00
+N8ZAW,EM79,,,,,,01/03
+N8ZM,EM79,,,,,,01/03
+N9AB,EN52XG,EME,,,,432: 16x 22el 1KW,09/05
+N9AQ,EN51,,,,,,01/03
+N9AU,EN62BX,,,,,,01/03
+N9AZC,EM68,,,,,,01/03
+N9AZZ,EM57MV,,,,,,01/03
+N9BD,EM28,,,,,,01/03
+N9BJG,EM57,,,,,,01/03
+N9BMH,EN62,,,,,,01/03
+N9BX,EN52VL,EME,,,,144: 2x 18el  1KW,01/07
+N9CIQ,EN44,,,,,,01/01
+N9DCA,EN71GG,,,,,,01/03
+N9DG,EN53BJ,,,,,,01/03
+N9EGT,EN70,EME,,,,,02/05
+N9EMC,EN52UI,,,,,,01/03
+N9ESH,EN52XB,,,,,,01/03
+N9FH,EN63,,,,,,01/03
+N9FTC,EL79IX,,,,,IC 756 PRO  IC746,10/07
+N9GVF,EN62,,,,,,01/03
+N9HF,EN52,,,,,,01/03
+N9IJ,EN52XI,,,,,,01/03
+N9IW,EN65KF,EME,,,,50: 3 yagi,02/09
+N9JIM,CM87XI,,,ex WB9AJZ,,50: 9el 150W - 144: 16el 700W - 432: 21el 50W - 1296: 55el 30W - 10G: 1M 8W,11/03
+N9KC,EN52,EME,,,,,01/03
+N9LAG,EM57,,,,,,01/03
+N9LHD,EN62BA,,,,,,01/03
+N9LR,EN50DU,EME,,,,144: 4x 8el 1500W,08/05
+N9MEH,EN44,,,,,,01/03
+N9MSG,EN50ES,,,,,,01/03
+N9MYK,EN-53W,,,,,,01/03
+N9NHC,EN61DU,,,,,,01/03
+N9NJY,EM58AM,,,,,,01/03
+N9NOQ,EN51,,,,,,01/03
+N9OO,EN62,,,,,,01/03
+N9PXI,EN61CU,,,,,,01/03
+N9RLA,EM78CQ,,,,,,01/03
+N9SBV,EN61UQ,,,,,,01/03
+N9SS,EN50DP,EME,,,,TS-2000,08/07
+N9SU,EN62BI,EME,,,,2x 3wl  400W,02/09
+N9TZL,EN52SH,,,,,,01/03
+N9UDO,EN53DL,,,,,,01/03
+N9UM,EN52wg,,,
+N9UUR,EN63,,,,,,01/03
+N9VSV,EN63,,,,,,01/03
+N9WWR,EN62CS,,,,,,01/03
+N9XG,EN60VL,EME,,W9/G4FDX  LX2GB,,144: 4x 18el 1.5KW,03/09
+N9XIX,EN53,,,,,,01/03
+N9YKE,EN62,,,,,,01/03
+NA0IA,EN42FB,,,,,,01/03
+NA2NY,FN23DV,,,NA1VT,,FT-1000 MP MK5  FTV-1000   IC-910,09/07
+NA3T,FM05LW,EME,,,,,10/97
+NA4AL,EM63OF,,,,,IC746 FT817,08/01
+NA4M,EM10DP,,,,,,01/03
+NA4N,FM18,EME,,,,,01/03
+NA6E,CN82,EME,,,,,01/03
+NA6MF,CM87,EME,,,,,04/08
+NA7D,DM43AS,,,,,,01/03
+NB2V,FN30,,,,,,01/03
+NC1I,FN32OB,EME,,,,,01/05
+NC1T,FN32,,,,,,01/03
+ND2X,EL09,,,,,,01/03
+NE0P,EM04,,,,,,09/01
+NE1H,EM84AC,,,,,,01/03
+NE7O,FN53HX,,,,,,01/05
+NE8I,EN82JM,,,,,,06/04
+NF0Q,EM48,,,,,,01/03
+NF2V,FN33KT,EME,,,,144: 4x 17el 350W,09/07
+NF5B,EL29,,,,,,01/03
+NF7P,DM09GH,EME,,,,,01/03
+NG9R,EN40LA,,,KC9OA,,,07/08
+NG9Y,EM78JT,EME,,,,144: 4x 13el 400W,10/08
+NH2CM,QK23KL,EME,,,,144: 4x 13el CushCraft 900W,12/05
+NI4Z,EL98HJ,,,,,,01/03
+NI6G,DM06,,,,,,01/03
+NJ0C,DM78,,,,,,01/03
+NJ0U,EN71IB,EME,,,,144: 2x 18el 500W,05/05
+NJ0X,EM29,,,,,,01/03
+NJ2L,FN13,,,,,,01/03
+NJ7A,DN30XP,,,,,144: 170W 16LBX Preamp  - 222: 120W  5wL,01/01
+NK5F,DM65,,,,,,01/03
+NK7J,DM33,,,,,,01/01
+NK8Q,FN20KL,,,,,144: 170W  13el  -  50: 7W  5el,01/01
+NL7F,BP64DV,EME,,,,,01/03
+NL7Z,BP51EN,EME,,,,FT920,03/05
+NL997,JO22XU,EME,,,,FT726 + Mutek   TH F7E   8el 2wl @2m  10 el @70cm,05/09
+NM1A,EL96UG,,,,,IC-746,02/08
+NM5BB,DM65UV,,,,,,01/03
+NM5X,EM26,,,,,,01/03
+NM9H,EM59CD,,,,,,01/03
+NN5DX,DM80NV,,,,,,01/03
+NN6RF,CM87UW,,,,,,01/03
+NN7J,CN85,,,ex WA7BJU,,,01/05
+NN7K,DM09CN,,,EX K7ZFG,,50    FT847 MK6 7el M2,05/08
+NN9K,EN41,,,,,,01/98
+NO3I,EN90,EME,,KD3CC,,FT-1000 MP FT-920  FT-736R,05/07
+NP4B,FK67,EME,,,,,01/03
+NQ2O,FN13,EME,,EX DL1SM,,,05/01
+NQ7R,DM42DT,EME,,,,144: 120W 2.5wl Ant,10/06
+NR0X,EN42JH,,,ex DL4AT,,144: 12el,07/05
+NR5A,DN84LC,,,,,,01/03
+NR6E,CM88,,,,,,01/03
+NS4W,EM76VC,,,,,500: 1KW - 144: 1kw 2.5wl - 222: 400W - 432: 150W,01/01
+NS7K,DN31XC,,,,,,01/04
+NS7N,CN87,,,,,,01/03
+NT0V,EN08OC,,,,,,01/03
+NT0Z,FN31,,,,,,01/03
+NT4P,EM95KF,,,,,,01/04
+NT9E,EN52VI,,,K9DMW  WB9SES,,756ProII (HF+6)-Elecraft XV Series Xvrtrs for 144-220-432,02/09
+NU3E,FN20PB,,,WB3GNB,,TS-2000,09/07
+NU5O,EM55,,,,,,01/03
+NU7Z,CN87RT,,,,,,01/93
+NU8I,DM43AN,,,,,144: IC706  1KW,01/99
+NV3Z,FM15,,,,,,01/03
+NW0X,EM40,,,,,,01/03
+NW7O,DM26,,,,,,01/03
+NX2Q,FN20WV,,,,,,01/03
+NX7U,DM43DI,,,,,,01/03
+NX8M,EM79PE,,,,,,01/01
+NZ1I,FN41AI,,,KA1KOJ,,Yaesu FT-897   Yaesu FT-736R,04/07
+NZ5N,EL96UC,EME,,,,144: 9el 500W,12/07
+NZ5P,DM95,,,,,,01/03
+OA4CVT,FH17KW,EME,,,,144: 15el 160W,04/06
+OA4O,FH17FV,EME,,,,432: 8m dish 400W,07/05
+OD5NJ,KM73TW,,,,,,01/03
+OD5RAK,KM74WH,,,Expedition - QSL via F6FLV,,50: 6el  - 144: 17el+ PA,05/98
+OE1ILW/3,JN77XX,EME,,,,,04/09
+OE1MCU/P,JN88HE,,,,,144: 700W 13el,01/09
+OE1MSB,JN88DF,,,,,,10/03
+OE1SMC,JN88DD,,,,,IC7000,03/08
+OE1SOW,JN88FF,EME,,,,6m: 100W 5el - 2m: IC-756 Pro II + DB6NT-Transverter  400W 4x13el SP-2000 or IC-821  130W   13-El. Yagi  SP-2000,05/08
+OE1XVC,JN88ED,,,,,144: 2x11el- 432: 2x21el gd Pwr,03/98
+OE3A,JN77XX,EME,,,,,04/09
+OE3CEW,JN88,,,,,,01/88
+OE3FVU,JN78VE,EME,,= PE0WGA,,144:  4x10el XPol  1500W MGF1302 -  No 432 MHz - 50: 100W / 6 ele,07/08
+OE3HHB,JN87AQ,,,,,FT847 50: 100W 5el - 144: 50W 17el GaAs - 432: 50W 19el,07/99
+OE3JPC,JN88EW,EME,,2ND QTH,,,06/08
+OE3JTB,JN78QN,,,,,144: 17B2 160W,08/05
+OE3MWS,JN88DC,,,,,50: 100W 7el - 144: TR751 1-2KW  2x17el  MGF1302 - 432: TS811 400W,01/05
+OE3NFC,JN88,,,,,,01/93
+OE3OBC,JN88,EME,,,,,01/94
+OE3OKS,JN87AR,,,,,,12/98
+OE3R,JN88FD,,,Contest Call,,,01/96
+OE3SJA,JN88GH,EME,,= OE1SJA SAME OPERATOR,,144: 1x19 250W   432: 4x19 250W LNA   1296: 2mDish H-feed 80W LNA,01/09
+OE3UP,JN87CT,EME,,,,,01/93
+OE3XAC,JN88FD,,,,,,11/96
+OE3XMU,JN78XD,,,,,144: 150W  15el,06/02
+OE4KLU,JN87KS,,,,,,01/96
+OE4WHG,JN87BB,,,ex OE6WHG,,50: F850 100W 6el,05/06
+OE5EFM,JN78,EME,,,,,01/94
+OE5EYM,JN68SK,EME,,,,,08/98
+OE5FD,JN68SC,,,,,,01/03
+OE5FDM,JN68SC,,,,,50: FT-847 5el-Yagi 100W - 144: FT-847 9el 100W,08/02
+OE5JFL,JN68RL,EME,,,,,01/94
+OE5KE,JN78,,,,,,05/02
+OE5MPL,JN78CJ,EME,,,,FT847 -  50:  GS35 100W  5el Y   144:  2x 4CX250R 800W  4x 13elY MGF1302   432:  600W 4x 21 el  MGF1302,05/07
+OE5VHL,JN68SI,EME,,,,,01/94
+OE5VRL,JN78DK,,,,,,01/97
+OE5WHN,JN67TR,,,,,IC756  IC970   100W,05/09
+OE6AHD,JN76RS,,,,,,12/95
+OE6BMG,JN77JE,,,,,,07/00
+OE6IWG,JN77PK,EME,,,,144: GS35b  4x10el (2-2wl)  MGF1302,06/07
+OE6JGD,JN77QC,,,,,,12/95
+OE6KDG,JN77JF,,,,,,07/03
+OE6NLD,JN76SS,,,,,,01/93
+OE6RKE,JN76OT,EME,,,,,03/06
+OE6XHF,JN76RS,EME,,,,,01/94
+OE75SOW,JN88FF,EME,,SpecialCall,,50: IC736 100W 5el - 144: IC821H 300W 2x13el or 2xBW - 432: 120W 2x19el - 1296: 10W 2x26el,03/01
+OE8CIQ,JN76FU,,,,,,08/02
+OE8HBQ,JN76KP,,,,,,05/04
+OE8HWQ,JN76,,,,,,03/00
+OE8OLK,JN76DM,,,,,144: FT817 30W 6el,07/04
+OE9ERC,JN47VL,EME,,,,,02/05
+OE9HHV,JN47,EME,,,,,01/94
+OE9XXI,JN47UL,,,,,,01/03
+OF8UV,KP34VJ,EME,,SpecialCall,,144: Ft225RD  130W  2x14el  BF981,11/97
+OG6MAZ,KP21IG,,,SpecialCall,,144: FT767GX  4CX350  200W  15el,01/00
+OG8HDL,KP34VJ,,,SpecialCall,,144: 130W  2x14el  BF981,01/00
+OG8UV,KP34VJ,EME,,SpecialCall,,144: FT225RD  130W  2x14el  BF981,01/00
+OH0BT,KO09KW,,,Expedition,,,01/92
+OH0JFB,JP90XI,,,,,144: 2x17el 800W,04/04
+OH0JN,KP00BB,,,,,IC706MKIIG,02/09
+OH0LIZ,KO09KW,,,Expedition,,144: 180W   2x23el,05/98
+OH0N,KP00,,,EXPEDITION,,,07/01
+OH0V,KP00,,,Expedition,,,07/01
+OH10TA,KP10DH,,,EXPEDITION,,,04/07
+OH1AK,KP01TE,,,,,,12/03
+OH1AYQ,KP12JB,,,,,,08/98
+OH1BAP,KP12AA,,,Expedition,,,01/91
+OH1CF,KP00TC,,,,,,01/94
+OH1FA,KP10PL,EME,,,,,10/02
+OH1HSC,KP10CM,,,,,144:  TR9130  60W  MGF1302  17el,01/01
+OH1JCS,KP10AE,EME,,,,144: 2x 10el 20W,03/05
+OH1JJC,KP10DK,,,,,,01/04
+OH1JV,KP10DK,,,,,144: IC7800 TR144J  4x 6el HL500V Preamp 0.35db,02/07
+OH1LEU,KP01UE,,,,,50: 150W 8el,09/03
+OH1LSQ,KP03SD,,,,,144: 100W ant-3WL,01/02
+OH1MDR,KP01VJ,EME,,= OH1TM,,,07/07
+OH1ND,KP00XL,EME,,,,,01/07
+OH1NOR,KP00XL,EME,,,,144: 2x 3.9wl antennas,04/05
+OH1QC,KP10MU,,,,,,01/89
+OH1TM,KP01VJ,EME,,= OH1MDR,,,07/07
+OH1XT,KP01UK,,,,,FT736r   50: 8el 150W - 144: 300W  2x15el  MGF1302,11/01
+OH1XTK,KP01UK,,,,,,01/03
+OH1ZAA,KP01,,,,,,01/95
+OH2AUK,KO19TX,,,,,,01/94
+OH2AV,KP20JD,,,ex OH9NLO,,,01/94
+OH2AXH,KP20OK,EME,,,,,08/00
+OH2BAP,KP20PP,EME,,,,,01/93
+OH2BC,KP20,EME,,,,,03/05
+OH2BNH,KP20LG,EME,,,,,05/00
+OH2BYJ,KP10QO,EME,,,,144: ft-897 120 wtts ant  6wl yagi,04/08
+OH2DG,KP30CK,EME,,,,DISH 8m,03/07
+OH2HEJ,KP20ME,,,,,144: 4el 100W,08/05
+OH2JRR,KP20HE,,,,,,10/05
+OH2KKP,KP20MH,,,,,,11/95
+OH2LAK,KP10XL,,,,,50: FT847 FT817,11/01
+OH2LHE,KP11MK,EME,,OH1IT,,IC-910 4x 9el 500W,02/08
+OH2MFE,KP20JE,,,,,IC-575H    IC-275E 170W   FT-817 100W   FT-736,04/02
+OH2MOH,KP30CR,,,,,,05/04
+OH2MPH,KP20KD,,,,,,01/04
+OH2NHP,KP20IF,,,,,144: IC970E  3CX800  MGF1302 preamp  2x15el,01/01
+OH2NY,KP20CM,,,,,144: IC202  RE035XB  320W  Preamp  4x9el,04/03
+OH2PO,KP10XH,EME,,,,,11/97
+OH2TI,KP20KE,EME,,,,,01/01
+OH2Z,KP30CR,,,,,,08/04
+OH3AWW,KP11VJ,EME,,2nd QTH,,144: 150W 9el,09/04
+OH3BHL,KP10RR,,,,,IC746+ACOM1000  144: 100W  4x5el -  50: 200W 6el,08/03
+OH3BZY,KP10XP,,,,,,01/92
+OH3EX,KP20JR,,,,,,01/94
+OH3HOV,KP20MQ,EME,,= OH3JP,,144:  ft847  sr-200  17b2 Ant,01/07
+OH3JP,KP20MQ,EME,,= OH3HOV,,144:  ft847  sr-200  17b2 Ant,01/07
+OH3KLJ,KP21PH,EME,,,,144: 300W  4x 10el,08/08
+OH3KRH,KP21EB,,,,,,12/05
+OH3LPW,KP11WK,EME,,,,,01/94
+OH3NWQ,KP11WL,,,,,50: FT847 + GU74b,10/07
+OH3QN,KP20TX,,,,,FT-897,02/08
+OH3UW,KP21FA,EME,,,,144: 2x 17el 250W,04/06
+OH3VJ,KP21,,,SilentKey,,,01/94
+OH3XR,KP11TH,,,= OH9XX,,IC746,08/04
+OH4EA,KP32MG,EME,,,,144: FT2000D + XV-144 + LNA 0.4 dB ANT 4 x 18 el 5WL,04/08
+OH4GGW,KP31PQ,,,,,,12/04
+OH4HXK,KP21UM,,,,,,05/02
+OH4LA,KP20LG,EME,,,,144:  4x 17el  600W,07/06
+OH4MS,KP31WL,EME,,OH8LRB,,IC-910H   144: 15el X 100W   432: 24el X 75W   1296:  4x32el 10W,12/07
+OH5A,KP53NE,,,,,,09/99
+OH5AG,KP31,,,,,,02/98
+OH5HCJ,KP41EC,EME,,,,144: 4x 11el  600W,10/06
+OH5HMV,KP41EC,EME,,,,,04/05
+OH5IY,KP30HV,EME,,,,144: 1KW 4x15el - 432: 750W 8x21el,12/03
+OH5KJQ,KP41JC,,,,,FT847 144: 19el yagi 160W -  50: 4el 100W,10/98
+OH5KNG,KP30GU,EME,,,,144:  4x 9el yagis  1.2kw,03/06
+OH5LID,KP41KL,EME,,,,,07/09
+OH5LIZ,KP30HW,,,EXPEDITION,,144: 180W- 2x23el,08/01
+OH5LK,KP30ON,EME,,,,144: 1KW 4x15el,04/04
+OH5YW,KP30FU,,,,,,05/98
+OH6AA,KP03SD,,,,,144: 2x12el,12/05
+OH6AAO,KP14,,,Expedition,,,01/93
+OH6AI,KP13MW,,,,,,11/00
+OH6AW,KP03,,,,,,06/02
+OH6DD,KP22,EME,,qrv only at OH2TI,,,01/94
+OH6GDX,KP02QU,,,,,144: 60W  2x12el CueDee,08/03
+OH6HFX,KP14RA,EME,,,,FT847 400W 2x12el,06/07
+OH6JKW,KP02RN,,,,,FT847,12/06
+OH6JW,KP12AJ,EME,,ex OH6MPC,,FT847 IC7400 600W,09/03
+OH6JYW,KP22OR,EME,,,,Yaesu FT-817,01/08
+OH6KTL,KP02OJ,EME,,,,50: 6el 150W - 144: FT847+GI46B  4x15el 100W,05/06
+OH6LRL,KP13,,,,,,11/00
+OH6M,KP12KR,,,,,,06/04
+OH6MAZ,KP21IG,EME,,ex OH2MAZ,,144: FT847 4CX350 250W 2x15el MGF1302,12/04
+OH6MPC,KP12AJ,,,= OH6JW,,FT847 50: 200W - 144: 2KW - 432: 250W,01/02
+OH6MRD,KP12EP,,,,,,12/02
+OH6MSZ,KP21XU,,,,,,08/99
+OH6MW,KP20IM,,,,,144: 200W 11el,08/05
+OH6NDD,KP23VH,,,Expedition,,,01/94
+OH6NVQ,KP13IP,EME,,,,,02/05
+OH6PA,KP02PL,,,,,,08/04
+OH6QU,KP03SD,,,,,FT-1000MP + Kuhne TR 144 H + GU-78B  16 el (4.5 WL) at 44 m agl/50 m,09/05
+OH6UW,KP22WH,EME,,,,,07/07
+OH6ZZ,KP12BO,EME,,,,TS790E 2x 32XPol,02/04
+OH7AXB,KP32WH,,,,,,10/05
+OH7EU,KP33MQ,,,,,,01/95
+OH7HXH,KP53HG,EME,,,,144: 8x 3wl Antenna,08/07
+OH7LIX,KP43JQ,,,,,,09/95
+OH7MA,KP52EL,,,,,144: 4 x 10el,11/99
+OH7PI,KP32XG,EME,,,,,01/05
+OH7RJ,KP32TV,,,,,,08/02
+OH7TE,KP20IE,,,EX OH9NLO,,JUMA TRX2A  50: 200W - 144: 4el 300W - 1296: 10W - 5600: 3W,04/09
+OH7TX,KP32UV,,,,,144: FT847  50W  20el,07/05
+OH7UV,KP33MQ,,,,,50:Yaesu FT950  100W  Dipole or 4 el (HB9CV 4),05/09
+OH7X,KP20IE,,,OH7PS,,IC-7700,06/08
+OH8GEJ,KP25QC,,,,,,05/02
+OH8HDL,KP34VJ,,,,,144: 130W  2x14el BF981,08/99
+OH8HTG,KP34DI,,,,,144: 9el 80W  432: 19el 80w,04/07
+OH8LRB,KP24HQ,EME,,OH4MS,,icom ic-910H,10/07
+OH8MFH,KP34UG,,,NO MS Skeds!,,144: TR751A  15el 6WU,01/00
+OH8MGK,KP23PQ,,,,,,03/08
+OH8N,KP34VJ,,,Expedition - QSL via OH8UV,,,12/98
+OH8NW,KP24SX,,,,,,01/85
+OH8NXE,KP25SB,,,,,144:  TM255E Preamp 160W 2x14el,01/02
+OH8R,KP24HQ,,,ex OH8LBR,,144: 200W 8el,04/05
+OH8SW,KP22UP,,,,,,11/04
+OH8UV,KP34VJ,,,,,50: Yaesu FT950  100 W  6el (JP6m6) 144: FT225RD  350W  4CX250R   2x14el (QDee)   BF981,05/09
+OH8VJ,KP22UN,,,,,,11/04
+OH9AB,KP26,,,not qrv now,,,10/05
+OH9AEM,KN08AJ,,,Expedition,,,01/93
+OH9GDT,KP26VL,,,,,144: 4 Yagis,04/06
+OH9MNO,KP46BI,,,Expedition,,,01/91
+OH9MTY,KP46BI,,,Expedition,,FT847 - 144: 700W 6x9el,06/04
+OH9NDD,KP26UM,,,,,FT847  144: 150W  4x15el  preamp,08/03
+OH9NMS,KP36GA,EME,,,,,08/06
+OH9O,KP12BO,EME,,QSL VIA OH8MSM,,IC7400 gd power  15el  16el  37el loop,12/05
+OH9SCL,KP46BI,EME,,Expedition,,TR751/FT847  144: 6x9el LY 700W,06/01
+OI7UV,KP33MQ,,,SpecialCall,,,12/95
+OI8UV,KP34VJ,EME,,SpecialCall,,144: Ft225RD  130W  2x14el  BF981,01/97
+OJ0LA,JP90NH,EME,,Expedition,,144: 9el 150W,09/06
+OK1AXH,JO70UR,,,,,,01/97
+OK1CA,JO70GM,EME,,,,,03/08
+OK1CDJ,JO70VA,,,,,144: 250W 17el MGF1302,08/06
+OK1COM,JN79GX,,,,,,01/03
+OK1CT,JN69TR,,,ex OK1URY,,144: 250W  2x16el  CF300  - 50: 20W 5el,05/00
+OK1CU,JO80CF,EME,,,,144: 4x 17el 700W,09/06
+OK1DCF,JO80BJ,,,,,,04/02
+OK1DFC,JN79GW,EME,,,,144: 750W 18elM2 10m dish - 432: 750W  38elM2 10m dish -  1296: 100W 10m dish and up,08/06
+OK1DIG,JO60XJ,EME,,,,144: 4x17el M2  GS35  1.5KW   MGF1302,04/02
+OK1DKZ,JN69XP,,,,,144: IC275H  100W  MGF1302  11el,11/01
+OK1DO,JO60JD,,,ex OK1DDO,,IC7400 144: 150W 7el  50: 100W 5el,03/06
+OK1DQA,JO60TC,,,,,,08/99
+OK1DRY,JN79OW,,,,,,07/02
+OK1DST,JN79EX,EME,,,,,04/07
+OK1DTC,JO60TO,,,,,,08/03
+OK1DUO,JO80CA,,,,,HF: TS120S 500W 3el - 144: IC746 PA0MS ant,08/01
+OK1FAV,JO60CK,,,,,,01/97
+OK1FD,JO60CF,EME,,ex OK1FFD,,50: IC706 5el QUAD -  144: 300W 4CX250 10el 7ZB,08/06
+OK1FF,JN78GR,EME,,,,,01/95
+OK1FM,JN69QQ,,,not qrv MS now! (01/01),,144: 250W 17el MGF1302,11/02
+OK1FXX,JO70WL,,,,,144: TS790E 2xGI7B 3KW 4x17el F9FT 0-4db NF - 432: TS790E GI7B 1-5KW 4x21el 0-9db NF DSP,01/90
+OK1FZA,JO70FC,,,,,,01/92
+OK1HAG,JN79,,,,,,01/97
+OK1IBL,JO60CG,,,,,,01/91
+OK1IN,JO60XA,EME,,ex OK1UND,,TS515  FT221  144: 16el  100W Preamp,02/06
+OK1KEI,JO60JL,,,,,,01/97
+OK1KF,JN79IW,,,OK1DFM,,,01/09
+OK1KHI,JO70ED,,,,,,05/02
+OK1KIR,JN79,EME,,,,,01/94
+OK1KJB,JN79IO,,,,,,08/99
+OK1KKH,JN79,,,,,,01/93
+OK1KRQ,JN69QR,EME,,,,144: 400W  17el M2  CF300,10/99
+OK1KRY,JN69TR,,,,,50: 20W 5el - 144: 250W  2x16el  CF300,04/05
+OK1KT,JO70WE,,,,,FT 847 - 50: 20W 5 el - 144:  600 W  15 el CueDee - 432:  50W  21 el F9FT,05/07
+OK1MAC,JN79PQ,,,,,,08/08
+OK1MDK,JN79TO,,,,,,06/08
+OK1MS,JO70SL,EME,,,,,10/08
+OK1MZM,JN69PR,,,,,144: 300W  9el  360m asl,06/04
+OK1NH,JN69UH,,,,,144: 10el 20W,05/04
+OK1RK,JO70KD,EME,,,,144:  FT847  250W  10el DK7ZB,08/05
+OK1TEH,JO70FD,EME,,,,144: FT847 1KW 10el - 432: 500W 23el K1FO,12/06
+OK1UGA,JO80DD,,,,,144: Icom 821 + 200W + 5WL,01/07
+OK1UWA,JN69QT,EME,,,,1296: par 2.4m 180W 0-45db NF,08/00
+OK1VAO,JO70EB,EME,,OL1VAO,,,02/09
+OK1VBN,JN78,,,,,,01/97
+OK1VHF,JO70EB,,,,,144: 10ml M2 1200W - 432: 6m Tonna 600W - 1296: 5m Tonna 10W,01/05
+OK1VHH,JO70CK,,,,,144: 20W,04/02
+OK1VKC,JN79OW,,,,,,05/02
+OK1VSC,JN79OW,,,,,144: 100W 7el Quad,03/02
+OK1VT,JN79IX,,,,,,07/01
+OK1VVT,JO60TP,,,OL4VTD,,TS-790,04/07
+OK1WCF,JO80BJ,,,,,144:   R2CW  PA 100W  2x 16el F9FT,04/04
+OK1WN,JN69LK,,,,,144: 100W 16el CF300,10/01
+OK1XXT,JO70GA,,,,,,04/02
+OK1YA,JO70GC,EME,,,,144: 4x 11el 1500W,03/06
+OK1YK,JN78GX,EME,,ex OK1AYK,,FT 847  144: 750W  4x 17el  MGF1302 - 432: 1kW  5m dish  MGF 1801,10/06
+OK2AB,JN89TI,,,,,,12/03
+OK2BDS,JN79WF,,,,,144: BMT226 100W 10el.7ZB - 432:IC706MKIIG 100W  2x 23el.7ZB - 1296: FT817+transv. 50W  32el.9BV,04/06
+OK2BMU,JN99BU,,,EX OL7AVX,,TM255E/TM455E + PA  150W   144: 13 el   432: 21el,04/07
+OK2BON,JO70,,,,,,07/02
+OK2BRD,JN99ET,,,,,IC706MKIIG,08/03
+OK2BXE,JN89SJ,,,,,144: FT847 100W 16el MGF1302 - 10368: 1.5W Dish,07/01
+OK2DL,JN89AO,EME,,,,,06/02
+OK2GM,JN99GM,,,ex OK2BZQ,,FT897D+LNA,03/07
+OK2ILA,JN89WW,,,,,,12/08
+OK2IT,JN99BO,,,= M0ITY G6UT - ex OK2ITY,,TRX210 Snezka   750W   2x4el Yagi,07/06
+OK2KET,JN89JN,,,,,,03/01
+OK2KUB,JN89,,,,,,01/93
+OK2KZR,JN89BO,EME,,,,,01/93
+OK2MWR,JN99HQ,,,,,144: IC706  100W  14el PBM,08/00
+OK2PM,JN99AO,,,ex OK2BGQ,,IC706 FT736,08/03
+OK2PMA,JN89HF,,,,,FT-897,10/07
+OK2PMG,JN89SJ,,,,,144: FT847 100W 16el MGF1302 - 10368: 1.5W Dish,07/01
+OK2PMS,JN89WW,,,,,FT847 300W DK7ZB,04/08
+OK2PMX,JN88IW,,,,,IC706,04/04
+OK2POI,JN99AJ,EME,,,,,07/08
+OK2PTC,JN89MM,,,,,,08/04
+OK2PWY,JN89IW,,,,,,05/06
+OK2PZW,JN89HI,,,,,,01/03
+OK2QI,JO80OC,,,,,,01/95
+OK2SBL,JN99HQ,,,,,,08/00
+OK2SGY,JN89SS,,,,,,08/96
+OK2SLC,JN89ED,,,,,,04/05
+OK2TUH,JN89RB,EME,,,,144: 7el 200W,03/06
+OK2UGG,JN89EN,,,,,,12/01
+OK2UZL,JN79UG,EME,,,,144: 4x 9el 50W,12/05
+OK2VMD,JN89HI,,,,,,01/94
+OK2VSO,JN99AJ,EME,,,,,03/06
+OK2WO,JN89IH,,,,,,04/04
+OK2XPJ,JN89,,,,,,04/02
+OK2YT,JN88IW,,,ex OK2PMN,,144: 100W 15el,08/06
+OK2ZAW,JN79XN,EME,,,,144: IC-706  12el ZZ212  300W GI7bt,02/05
+OK2ZC,JN89HI,,,OK2BEE,,ICOM 746-PRO 100W 7EL DK7ZB YAGI,05/08
+OK2ZI,JN89AD,,,EX OK2XTE,,,06/08
+OK2ZW,JN89HI,,,ex OK2PZW,,,08/02
+OK2ZZ,JN89DF,,,,,,08/96
+OK3RM,JN69MS,,,,,,12/07
+OK5ACR,JO60NX,,,,,,05/00
+OK5TK,JO70MB,EME,,OK1UAK,,100W 10el 2.2wl Yagi,05/07
+OK6TW,JN89,,,,,,08/08
+OK8BXF,JO70VA,,,,,,06/04
+OL2O,JN79IO,,,,,,12/01
+OL5MS,JN69MJ,,,,,,08/99
+OM2TW,JN88UG,,,,,144: IC746 17el LY,07/01
+OM3AU,KN08OR,,,SilentKey,,,01/93
+OM3BC,JN98VG,EME,,EX OM3WBC,,144: 1KW 4x 12el  432: 1kW 4x 23el,06/08
+OM3KDX,KN19DB,,,Expedition,,144: IC-746  GS35b  4x6 el.  18el. M2 - 10368: 5W  60cm dish,06/04
+OM3KKF,JN88MD,,,,,144: 700W 13el,07/05
+OM3KMY,JN88MK,,,ex OK3KMY,,,01/94
+OM3LQ,JN88MK,,,ex OK3LQ,,,08/01
+OM3TZZ,JN88TI,,,,,FT847+PA 400W+7el. QUAD,12/08
+OM4EX,JN98HS,,,,,,07/04
+OM5CM,JN98DF,EME,,EX OK3YCM OM3YCM OM7YCM,,IC910H 144 MHz: 100W 9el    432 MHz: 75W 18el   1296 MHz: 10W 55el,10/07
+OM5KM,JN98AH,,,,,,01/02
+OM5UM,JN98EO,,,,,,04/02
+OM7AC,JN98NN,,,EX OM3YIH OK3YIH,,FT225RD  FT780  FT897D/2x10el DK7ZB/2m+17el DK7ZB/70cm+crossyagi for satellite,07/08
+OM7AQ,JN98UI,EME,,OL9CQN  OK3TEM  OM3TEM,,144: FT897D  600W  16el F9FT  MGF1302 -  432: 400W  4x18el or 4x21el  MGF1302 - 1296/2320: 10W 1m dish,03/07
+OM7CM,JN98NR,EME,,OK3CKJ,,144: FT - 847 50W  F9FT - 9el,04/07
+OM7JG,JN98TI,,,,,,01/02
+OM9AAW,JN98EP,,,Expedition,,,07/95
+OM9M,KN18AM,,,,,,08/99
+ON1AEN,JO10UV,,,,,,01/03
+ON1AFN,JO20SW,,,,,144: FT290r  150W,09/98
+ON1ALJ,JO10SS,,,,,144: TS790E  3CX800  MGF1302  10el 9BV - 432: TS790E 400W 2x18el 9BV MGF1302,11/01
+ON1DDC,JO21UD,,,,,144: 16el  800W,08/97
+ON1RR,JO11XA,,,ex ON1AXO,,FT100,09/01
+ON2MRT,JO21MB,,,,,,07/03
+ON3VHF,JO20EM,,,ex ON2VHF,,144: ft290r microset RV45,08/05
+ON4ADC,JO21FA,,,,,,09/03
+ON4AMX,JO20KV,,,= OQ4U,,144: IC910 2x8wl GS35b,05/08
+ON4ARF,JO10MV,,,,,,05/02
+ON4ASL,JO21,,,,,,01/94
+ON4AVJ,JO11UB,,,,,144: IC275HE  3CX800A7  17el  MGF1302,10/04
+ON4BBD,JO21NA,,,ex ON1CBT,,FT736 TS440S,01/04
+ON4BG,JO10WM,,,,,,12/01
+ON4CHP,JO21JD,,,,,144:  150W  B5016G  11el FX224  SP2000,10/07
+ON4CJU,JO20,,,,,,11/01
+ON4DPX,JO10NT,EME,,ex ON1DPX,,FT736  FT847  144: 4x 3wl  1KW - 432: 2x 26el 9BV - 1296: 4x 44el 6WU,09/06
+ON4FI,JO20IV,,,,,144: 3CX800 600W 13el MGF1302,12/99
+ON4GG,JO20AR,EME,,,,50: 9el MGF1302,04/05
+ON4IMM,JO11UB,,,EX ON1IM,,144: TS440S + LT2S MK2 Preamp PA3BIY design  4x7el  3CX800A7  600W,02/08
+ON4IQ,JO20AR,EME,,ex ON4ANT,,50: 4x 6M9KHW FT1000mpMkV FTV1000  -  144: 8x 2M18XXX  TS2000X  GS35,05/05
+ON4KEP,JO10WI,,,,,,08/08
+ON4KHG,JO10XO,EME,,EX ON1KHN,,144 : 300W 4 WL MGF1302,10/08
+ON4KNG,JO20DU,EME,,,,,01/04
+ON4KST,JO20HI,,,,,,05/04
+ON4LDP,JO10UM,,,,,50: HM tsvter 2m/6m 30W GP - 144: 150W 13el MGF1302 432: 35W 21el - 1296: tsvter DB6NT 20W FHX35,06/02
+ON4LN,JO20IV,EME,,EX ON4CGP,,144: IC-746/IC-7000  GS35b  17ele M�  MGF1302,05/07
+ON4LUC,JO20TM,EME,,,,144: ft1000mp  transverter  800w hf max amplifier 13 el Flexa (soon 4x 13el),01/04
+ON4MU,JO20SS,EME,,ex ON1KPW,,Ft847 150W 0.5dB 3wl,08/03
+ON4PS,JO20KQ,,,,,Yaesu Ft 847 + 8874,03/07
+ON4QQ,JO20FS,,,,,,07/95
+ON5AEN,JO10VW,,,EX ON1AEN,,FT225RD  TS770e FT690RII,04/08
+ON5GS,JO20SS,,,EX ON1DLL,,144: IC821 600W  15el,08/08
+ON5LGS,JO10OS,,,ex ON1LGS 3X1SG,,,09/03
+ON5UE,JO11LF,,,EX ON1BCD,,TS2000DX,05/07
+ON6AB,JO21EC,,,,,TS930S,03/04
+ON6JY,JO20WP,EME,,,,HF + Transverters,10/05
+ON6NL,JO21UE,,,,,144: IC756PRO 125W  13el DL6WU,04/08
+ON6OD,JO20HW,,,,,,01/93
+ON7EH,JO20FV,EME,,,,,08/04
+ON7KGK,JO20BL,,,ON1KGK,,k3,02/08
+ON7RB,JO11VA,EME,,,,144: 8x13el hor. & 8x12e vert. Full Az/El  1KW,11/03
+ON7UC,JO11ND,EME,,,,144: 3CX800A7  4x16el  4.2wl,05/07
+ON7YK,JO20XL,,,,,TS2000,04/07
+OQ1AEN,JO10VW,,,,,FT225RD TS770E,11/01
+OQ4U,JO20KV,,,= ON4AMX,,144: IC910 2x8wl GS35b,05/08
+OT4G,JO10XO,,,= ON4KHG,,144 : 300W 4 WL MGF1302 - 1296 : 10W 35 el,04/06
+OU9S,JO54TU,EME,,= 5P9S  OZ9S  OV9S  5Q9S,,See www.oz9s.dk (click rig) for actual and updated info,05/07
+OV9S,JO54TU,EME,,= 5P9S  OU9S  OZ9S  5Q9S,,See www.oz9s.dk (click rig) for actual and updated info,05/07
+OX2K,GP47TA,EME,,,,144: 4x5wl - 432: 4x28el - 1296: 32m dish,05/00
+OY3JE,IP62OA,EME,,,,,03/08
+OY4TN,IP62NB,,,,,144:  300W  8el,03/08
+OY9JD,IP62OA,,,,,,01/04
+OZ0JX,JO54VU,,,,,IC761 IC756  50: 5el F9FT,01/03
+OZ1ALS,JO45VA,,,,,144: 2x9el  500W,04/07
+OZ1CDE,JO65CO,,,,,50: FT847 6el 850W,02/02
+OZ1CLL,JO65GQ,,,,,,06/05
+OZ1CTZ,JO46OE,,,,,,01/02
+OZ1DJJ,JO65HP,EME,,,,FT847  IC756pro2  transverters,04/07
+OZ1DPR,JO45IG,,,,,50: Yaesu FT-920  GS35b  1000W  5el,08/03
+OZ1FDH,JO65CS,,,,,,07/99
+OZ1FF,JO45BO,,,OZ9KY,,1296: 145W LNA 1 5m dish    2320: 125W LNA 1 5m dish - 5760: 7W 1 5m dish - 10368: 65cm dish 2W- 24048: 65 cm dish 2W,09/07
+OZ1FTU,JO55WW,,,,,,01/93
+OZ1GEH,JO65AL,EME,,,,,01/93
+OZ1HNE,JO57,EME,,,,144: 4x18el crossyagi  8877,12/05
+OZ1HTB,JO75,,,,,,11/96
+OZ1IEP,JO55XU,EME,,,,50: 100W 6el - 144: FT736 1KW  2x11el - 432: 600W 2x23el,03/05
+OZ1IPU,JO57JH,,,,,,01/93
+OZ1JFK,JO47WL,,,,,,10/08
+OZ1JVX,JO46DS,,,,,,01/96
+OZ1LPR,JO44UW,EME,,,,144:  IC756PROII  LT2SMK2  Transv.   2x M2XP20 Xpol full elevation  1KW YL1050 PA or TH347 PA,04/06
+OZ1MAX,JO57GI,,,,,Kenwood TS-2000,03/05
+OZ1MFP,JO55SK,EME,,,,kenwood ts 790e ts 2000e,08/08
+OZ1PIF,JO65AN,EME,,= 5Q2M,,FT847 50: 100W 4el - 144: 350W  17el  Preamp,02/09
+OZ2BZQ,JN99GM,,,,,,05/06
+OZ2EEZ,JO45,,,,,,01/03
+OZ2ELA,JO65,,,,,,01/97
+OZ2M,JO65FR,EME,,,,,07/09
+OZ2TF,JO46PE,EME,,,,144: IC271h 750W 4x9el Preamp,10/02
+OZ3K,JO45TL,,,EX OZ1ELF,,IC746PRO,04/07
+OZ3TT,JO66CB,EME,,ex OZ1IUK,,144: ICOM 275H  Amp. CS31  M2 18 el   MGF130,12/04
+OZ4MM,JO55GH,EME,,,,10m dish,10/02
+OZ4VV,JO46QU,EME,,,,50:1000w 9el - 144:1000 Watt 15el MGF1302,02/05
+OZ50MHZ,JO55EJ,,,OZ1IZB  G0DJJ & OZ7M,,,03/08
+OZ5AGJ,JO47IA,,,,,144: ICOM 706MK2G 160W 9Elem 2.2wl,05/07
+OZ5IQ,JO65AO,EME,,OZ1EME  AS WELL  STILL OK,,,06/07
+OZ5QF,JO45VB,,,,,,10/95
+OZ6ABA,JO57DJ,EME,,,,144: FT736r  Mutek  Preamp  1KW  15el DJ9BV,08/08
+OZ6EI,JO45TT,,,,,,08/01
+OZ6OL,JO65DJ,EME,,,,,09/06
+OZ6OM,JO55EJ,,,OZ1IZB  G0DJJ & OZ7M,,,03/08
+OZ7LE,JO45,,,= DJ3LE,,144: 9el 400W,03/01
+OZ7U,JO45RL,,,ex OZ1BVW,,TS940S FT847,09/06
+OZ7Z,JO44VW,EME,,OZ1DSK,,144: FT736  500W  WX20 Yagi,03/07
+OZ8FR,JO55SK,EME,,,,,03/05
+OZ8ZS,JO55RT,EME,,,,144: IC706  GI7b 400W 17 elm,02/08
+OZ9AAR,JO45TS,EME,,qrt EME,,8x15el Crossyagis- 1KW,12/99
+OZ9FW,JO65CO,,,,,Homebrew 1kW(2m 70cm),04/07
+OZ9S,JO54TU,EME,,= 5P9S  OU9S  OV9S  5Q9S,,See www.oz9s.dk (click rig) for actual and updated info,05/07
+PA0AVS,JO22,EME,,,,,01/94
+PA0BAT,JO31FX,EME,,,,,01/03
+PA0BWL,JO21SS,,,,,,08/08
+PA0C,JO22FD,EME,,ex PA0CIS,,Ft 847  QBL 5/3500   0.4 dB NF  2x 17 el,02/06
+PA0HIP,JO21JO,,,,,,01/93
+PA0JMV,JO21PM,EME,,,,144: 1x12 and 4x10 el  2x 3CX800A7  0.18dB NF,01/08
+PA0LPE,JO20WW,,,,,50: FT847 7el  - 144: IC202 400W 2x11el,01/01
+PA0O,JO33HG,,,ex PA0OOS,,,08/03
+PA0PVW,JO22VA,,,,,144: 18el M2 3CX800,07/02
+PA0RDY,JO22KJ,,,,,144: 500W 15el MGF1302,10/99
+PA0RLS,JO22,,,,,,01/93
+PA0TBR,JO22PI,,,ZS4BU,,,05/07
+PA0V,JO33II,EME,,ex PA0OOM,,144: 6 x DJ9BV 4 WL Xpol  8 BLF278 Mos fet PA  MGF 1801 preamp,04/05
+PA0WWM,JO22FE,,,,,144: 160W 9el MGF1302,04/01
+PA0ZH,JO33AB,EME,,,,,01/07
+PA1AW,JO21GU,EME,,EX PA3DMH  PC1A  PE1JUP  PD0LGF,,144: IC7400 + 11el F9FT. 50: IC756Pro+ACOM10000+5 el.,05/09
+PA1BVM,JO21RI,,,ex PE1BVM,,50: IC202 Transv. dipol -  144: FT-225 IC 746 MGF1302  2x17ele,05/03
+PA1GYS,JO22WW,EME,,EX PA3BXH PE1DWI PD0HKC,,144: TS850  TR144H  2 x 2MXP20 700W,03/08
+PA1LA,JO32LS,EME,,EX PE1RWS,,144: FT857d - LNA atf54143 - 9 ele. vargarda - GS35b QRO.,12/08
+PA1T,JO33JF,EME,,EX PA9KT PA3FBN,,144: FT1000MP MV TR144H  8877 4x17el M2- 50: 1y. 70cm: 1y. 23: 1.2dish,08/07
+PA1VW,JO22IN,,,EX PE1OLD AND PA3GNF,,FT-897  100 Watt PA  16JXX2 4.4 wave13 m ASL,12/08
+PA25FMF,JO22XW,EME,,SpecialCall,,144: 4x 12el DK7ZB  600W  no preamp,10/06
+PA2CHR,JO32DB,EME,,,,144: 2x 16el XPol,01/08
+PA2DW,JO22GD,EME,,ex PA2DWH- PE0DWH- GM5CJF,,144: TenTec  Trvt  400W(2x4CX250b)  10el,09/04
+PA2GER,JO21EW,EME,,,,,09/99
+PA2KW,JO22SB,,,ex PE1FYJ PA3BZL,,144: 1x16el KLM  1.2KW  MGF1302,10/04
+PA2M,JO21IP,,,ex PA3DYS,,FT847  144:  2x blf278  9el   432: 16 el,11/04
+PA2MRT,JO32HI,EME,,PD0HP,,144:  4x  7el DK7ZB  ME1500V with GS35B 1200 W   Icom 910H  icom 7400  YAESU FT1000d,08/07
+PA2V,JO22IM,EME,,ex PA2VST,,Homebrew + IC756pro2 & IC706mk2g,03/07
+PA2XHF,JO32HN,,,PA2B,,,04/09
+PA3BGM,JO33CE,,,,,,08/99
+PA3BIY,JO22EB,,,,,144: 400W  2x9el,03/02
+PA3BZO,JO21RS,EME,,,,,08/03
+PA3CEE,JO33JI,EME,,PE1FMG  PD0GIK,,144: 600W  2x 5wl  M� MGF1302,08/07
+PA3CMC,JO21WI,EME,,ex PA9LB,,144: LT2s mod. MGF1801  PA8877  4x 16el X-pole I0JXX or FT736 Mutek  or TS2000  MGF1302  PA 500W  13 el. DJ9BV,04/06
+PA3COB,JO32MF,EME,,,,144Mhz only: FT756proIII - Kuhne TR144H +40  -  4X7el -  1Kw,02/08
+PA3CPI,JO22JW,,,,,FT847,08/08
+PA3CSG,JO21WD,EME,,,,,01/07
+PA3CWI,JO11TK,EME,,,,144: FT736  6x12 el M2  MGF1302  8877-Ampl,10/06
+PA3CWN,JO33AH,EME,,,,144: 600 W 4x 9el 7ZB,03/07
+PA3DOL,JO22MT,EME,,,,144: 17el 3cx800 amplifier abt 700w  EME 4x9el DK7ZB abt 700w,09/08
+PA3DRL,JO21PS,,,,,K2 + XV144 Elecraft 4x 7el dk7zb  GI7-b  preamp 20 dB nf 0.8,05/07
+PA3DUU,JO21IU,,,,,,01/93
+PA3DZL,JO21HM,EME,,,,144:  4x17el 3.6ld MGF1302 EME Pwr - 432: 2x21el EME Pwr - 1296: 2.5m Dish 150W,03/07
+PA3EAQ,JO31CI,,,,,FT767    50MHz: 100 watt 3 el     144MHz: 100 watt  7 el,08/08
+PA3ECU,JO32CF,EME,,PD0NEN  PE1JSB,,144: Ft847  8877  2x8Xpol DK7ZB  LNA .19Db,12/08
+PA3EON,JO21,,,,,,01/93
+PA3EPX,JO22RC,,,,,,01/93
+PA3EQS,JO22TI,,,,,,01/93
+PA3FOC,JO21FW,EME,,,,144: TenTec Paragon  LT2S  17el (2x17el)  PA  MGF1302,07/05
+PA3FPQ,JO22XE,EME,,PE1GXU  PD0JNN,,144:  TS850 + TR144H 2x10 elem. DJ9BV H + V pol. 1KW,01/08
+PA3FSA,JO23RF,EME,,,,,10/05
+PA3FVE,JO21WG,,,,,,01/93
+PA3FXB,JO33KC,EME,,PE1CIO,,12 el DK7ZB 350 W,06/08
+PA3FXW,JO22QD,,,,,,01/93
+PA3FYF,JO22DB,,,,,,01/93
+PA3FYG,JO22SI,,,PE1GTE,,TS870,01/08
+PA3GBR,JO32LH,,,,,,01/93
+PA3GCV,JO32LU,EME,,,,50: FT897   7el  9.40 m Boom  21m asl  1kw,02/09
+PA3GVC,JO22MU,,,,,,12/04
+PA3HJG,JO32BG,,,,,TS2000  50: Dipol - 144: 13el,08/03
+PA4EME,JO20WX,EME,,PE1FEY - ON8YA - ON4AUD - PA3GIJ,,144: 0.22 dB  2.5 kW  3.2 wl DJ9BV,12/07
+PA4PS,JO33GH,EME,,PD2PS PE2PS,,144: 4x10 from YU7EF,01/09
+PA4VHF,JO32JE,,,EX PA3FJY,,50: 100W 7elM2 - 144: TS850 LT2S 400W  17B2,12/08
+PA5DD,JO22IC,,,ex PA3HDD OZ1DOQ,,144: GS35b 15ele CUE DEE,01/05
+PA5KM,JO11WL,EME,,,,144:  IC 910 H +8877   2x12 EME    1x9 TR MS AU ES,09/07
+PA5M,JO21BS,,,ex PA5MD PA3GST,,,08/03
+PA5MS,JO21RQ,EME,,EX PE1OGF,,144: 11el GS35b 400W MGF1302,05/07
+PA60SHB,JO21OS,,,SpecialCall,,,12/04
+PA6BN,JO13OF,,,Expedition - QSL via PA3BIY,,,07/98
+PA6MS,JO32QF,,,SpecialCall,,,10/96
+PA6T,JO32GF,,,SpecialCall,,,12/98
+PA7AL,JO23VG,,,,,,12/04
+PA7C,JO32GF,,,ex PA2TAB,,50: 100W 6el - 144: R2CW GS31b 400W 14el MGF1302,09/03
+PA7FA,JO21PT,EME,,EX PE1OUC,,IC756-III,04/07
+PA7FE,JO22OC,,,ex PA3BFM,,50: 6el  leg pwr,03/99
+PA7FM,JO21,,,ex PE1PZS,,,08/00
+PA7N,JO23WB,EME,,PE1LZX,,IC-910H TS-480HX,01/09
+PA7PYR,JO21UQ,,,ex PD0PYR,,TS450SAT  HF: FB33 - 144: 25W 2x17el Tonna - 432: 25W 23el,09/03
+PA7RP,JO22EC,EME,,ex PA3BBA,,144: 400 Watt (GS35b) 17 el F9FT,01/06
+PA7WM,JO23TA,,,ex PA3DWD,,,03/99
+PA9RX,JO32MT,EME,,,,144: FT847 4x17el 200W,04/07
+PA9T,JO22KA,,,PD0TKS,,,06/09
+PB0AHX,JO22,EME,,,,icom 910H for 2-70-23 and icom7400 for 50mhz,04/08
+PB0ALS,JO21RV,,,,,,01/93
+PB1TT,JO22FF,,,ex PA3EFC,,144: 100W  10el CueDee,09/01
+PC7M,JO32GF,EME,,ex PA2TAB PE0TAB,,50 MHz : FT847/120W/6el - 144 MHz : FT847/400W/14el,04/06
+PD0ANQ,JO31EW,,,,,,11/01
+PD0CIF,JO32KT,,,,,FT-847 and FT-817,07/07
+PD0HCV,JO31FW,,,,,IC821  144: 15el QD 50W  432: 18el M2,08/05
+PD0ORT,JO23RE,,,,,,03/06
+PD1AIQ,JO22RM,,,,,144: 25W 4x9el,04/03
+PD1ALD,JO32FI,,,,,Yaesu FT897- Kenwood TR9130- Yaesu FT817,06/03
+PD2GCM,JO21ET,,,,,FT847,11/04
+PD2TW,JO33FI,,,,,,04/09
+PD2VDV,JO23RF,,,,,,08/04
+PD3AHW,JO32LF,,,,,,05/05
+PE1AHX,JO21OS,,,,,,02/05
+PE1BTX,JO22XW,EME,,,,144: 4x 12el DK7ZB  600W  no preamp,10/06
+PE1DAB,JO23RD,,,,,144: 2x 8el JXX  100Wh,12/08
+PE1DCD,JO21FU,,,,,,05/03
+PE1GNP,JO31IX,,,,,,05/03
+PE1GUR,JO22TH,,,,,144: 16el 350W,07/05
+PE1HWO,JO21GV,,,,,144: FT101ZD + TRV  FT225RD PA 17el MGF1302,04/07
+PE1IKX,JO11TM,,,,,144: 400W 15el Quedee,06/05
+PE1ITR,JO21QK,EME,,,,144: 2x10el 200W 3SK183   432: 2x16el  GS35b 0 35db - 70: rx 5el - 222: rx 10el  3SK183 - 1296: 10W 26el,09/07
+PE1L,JO23WF,EME,,EX PE1LCH,,2 x 14 dk7zb,04/07
+PE1LWT,JO22VA,EME,,,,144: 300W  2x3wl-Xpol,07/05
+PE1M,JO23XE,,,ex PE1MCD,,,08/03
+PE1MVJ,JO21FV,,,,,,11/96
+PE1OID,JO33KI,EME,,,,144: TR 751e 160W  10el,10/05
+PE1OPK,JO23UE,,,PD0NXG,,IC821/IC202,12/08
+PE1PQX,JO32LS,,,ex PD0RJH,,,06/06
+PE1RBG,JO21,,,,,,11/01
+PE1RDP,JO21QK,EME,,,,FT847  144: 2x 10el DK7ZB GS35 MGF1801,09/07
+PE1RLF,JO32CG,,,,,144: TS850 LT2S 4CX250F 10el,05/07
+PE1RMN,JO11WR,EME,,,,FT857  FT847,08/07
+PE1RWS,JO32BM,,,,,,01/05
+PE2PE,JO21LU,,,ex PE1BNK,,144: 400W 15el Cue Dee - 50: 20W 6 El Cue Dee - HF: 10W,03/07
+PE2RMI,JO23MH,,,,,,01/02
+PE2S,JO31AU,EME,,EX PE2SVN,,FT1000 LT2s BLF278/3CX800,03/08
+PE9DX,JO33MD,EME,,,,144: TS711  600W  10 elm dk7zb VV atf 54143,10/07
+PE9GG,JO33NA,,,ex PE1PJG,,,04/05
+PE9HNE,JO22FB,EME,,ex PD1ABZ,,TS711,09/03
+PI4NYV,JO32EH,,,,,144: 400W  9el or 17el  (/p JO32FI),12/96
+PI9CAM,JO32ET,EME,,,,,01/09
+PJ4CX,FK52UD,EME,,EXPEDITION,,,05/07
+PJ4EME,FK52UD,EME,,EXPEDITION,,,05/07
+PJ4LS,FK52UD,EME,,EXPEDITION,,,05/07
+PP2KR,GH53IG,EME,,,,TR9130,02/05
+PP5XX,GG53QW,EME,,,,144: 150W single yagi,05/08
+PR8ZX,GI64GL,EME,,EX CT1DYX,,144:  13 el dl6wu  150w  mgf1312,05/07
+PT7ZAP,HI06RG,EME,,,,TS-2000,05/08
+PT7ZAP,HI06RG,EME,,,,TS-2000,05/08
+PT9FH,GH11EA,EME,,,,144: 4x12el 2x4CX250,04/00
+PT9PA,GG49DF,,,,,,04/08
+PY0FF,HI36TD,EME,,,,144: 4x 12el 100W,05/08
+PY1EPU,GG87KD,EME,,,,144: 6 x 16el 160W FT 1000 Mark V Field + Transvert,02/08
+PY1IAM,GG87,EME,,,,,04/04
+PY1RO,GG87LB,EME,,,,IC706MKIIg   1000W   8 over 8 el,09/06
+PY2ALR,GG66UB,EME,,,,,08/08
+PY2ANE,GG66SH,EME,,,,,05/05
+PY2BL,GG67LE,EME,,ex ZZ2RED,,144: TS2000 IC910 2x 15el 1KW,05706
+PY2BS,GG66PJ,,,,,,09/08
+PY2BVF,GG66TB,EME,,,,144: 4x 10el 1KW - 432: 2x 28el 800W,08/05
+PY2CLL,GG66RF,EME,,,,144: Kachina 505DSP Trvt   4x18el M2 LNA 300W,01/00
+PY2NI,GG66RK,EME,,,,,07/01
+PY2OC,GG66OT,EME,,,,50: 8el 100W  -  144: 12el 160W,08/05
+PY2PD,GG66RF,EME,,,,MP1000- LT2S- 4xM2XP28- 3CX800 0-4db,03/99
+PY2PLL,GG66RF,EME,,,,144: 750W 16el or 2x15el - TS790A  xverters  for 432 and 902 and 1.2,03/01
+PY2SRB,GG48BC,EME,,,,144:  160W  4x 10el,06/06
+PY3CRX,GG66RF,,,,,144: 750W 16el or 2x15el,08/00
+PY3FF,GF49IU,EME,,,,,05/05
+PY4EPU,GG88PO,EME,,,,YAGI FULL SIZE FOR 14  21  28  50  144  220  440 MHZ,04/06
+PY4OG,GG78QQ,EME,,PY4LOG,,4x 12el 1KW,09/07
+PY5EW,GG46IP,EME,,,,144: 15el 100W,05/08
+PY5ZBU,GG54,EME,,,,,01/00
+PY8ELO,GI25AR,,,,,,01/08
+PZ5CY,GJ25JT,EME,,,,50: 1x 6el,03/06
+R1MVA,KP40GP,EME,,Expedition,,144: 150W,07/99
+R1MVW,KP40GP,EME,,EXPEDITION,,144: 2x 9el or 18el  500W - 432: 40el 500W,11/05
+R1MVZ,KP40GP,EME,,,,144: 4x14el 1.2KW,10/99
+R3VHF,LO16XG,,,SpecialCall,,,01/96
+RA0ACM,NO76EB,EME,,,,144: 4x 9el 300W,08/06
+RA0CGT,PN78NL,EME,,,,,10/08
+RA0FCA,QN16IW,EME,,,,144: 4x 15el Xpol 1KW,11/06
+RA0FU,QN16IW,EME,,,,144: 4x 15el Xpol 1KW,04/06
+RA0FW,QN16IW,EME,,,,144: 4x 15el Xpol 1KW,11/05
+RA1ASA,KP50FB,,,,,,01/76
+RA1AY,KP50EA,,,EX UA9KG,,144: 15 el  TS2000  GI7B  300 W,04/07
+RA1QA,KO99WF,,,,,144: 300W 2 x10el 9BV,12/06
+RA1QAX,LO09CC,,,,,144: IC706 10el PA,10/04
+RA1QIB,KO99WG,,,,,,11/05
+RA1TBH,KO58PN,EME,,,,TS-2000X  100 W  10 el DK7ZB  Pre Amp,03/09
+RA1TC,KO58ON,,,,,,01/92
+RA1TL,KO67,,,,,,05/04
+RA1TM,KO67PX,,,,,IC746,11/04
+RA1WL,KO47EV,,,,,Kenwood-2000X,03/08
+RA1WU,KO47ET,,,,,,05/08
+RA1WZ,KO47EV,,,,,,06/09
+RA1ZC,KP59JK,EME,,ex UA1ZCG,,IC706MK2  144: 2x10el DJ9BV 1KW,11/01
+RA1ZK,KP68MV,,,,,,11/04
+RA3AGS,KO85UU,,,,,,01/90
+RA3AQ,KO85JE,EME,,,,144: 6x 6.3 wl cross yagi  1500W,05/07
+RA3DHK,KO95JH,EME,,,,144: FT-736R Toshiba NB 500W 2x2M12,10/06
+RA3DQ,KO85US,,,,,144:  IC746  100W  16el,09/01
+RA3DQT,KO95JH,,,,,144: FT-736R Toshiba NB 170W 1x2M12,07/06
+RA3DRC,KO95AP,,,,,144: FT-847  50Wtts  17el DJ9BV 9.2 m long,03/04
+RA3EC,KO82PT,EME,,,,1296: 3m Dish  RA3AQ septum feed  200 W output,10/08
+RA3EL,KO82AX,,,ex UA3EAT,,144: 50W 16el,03/04
+RA3FO,KO86SI,,,,,,01/95
+RA3GES,KO92SO,EME,,,,144: 4x 7el 200W,11/05
+RA3IM,KO56UM,,,,,,06/04
+RA3IS,KO76WU,EME,,EX UA3IFI,,2m: 1 hp  1x19el SM2CEW 5wl crossyagi  70cm: 21F9FT 23cm 2m dish,09/07
+RA3LBK,KO65QA,,,,,144: 200W  17el,01/00
+RA3LE,KO64AR,EME,,ex UA3LBO,,144: 2x LY Xpols 400W,12/06
+RA3LW,KO54MQ,,,UA3LAW,,IC-7000 144:2x7el  432:24el 1296:22el G3JVL and PA,11/08
+RA3MR,KO98JC,,,ex UA3MEP,,IC910,08/05
+RA3QTT,LO01GQ,,,,,144: GS35 0.5KW  4 x 3.3wl 9BV  0.35db,11/03
+RA3TES,LO15WJ,,,,,,11/95
+RA3WDK,KO81BR,,,,,144: 60W 11el,04/04
+RA3XAL,KO84DM,,,,,,08/05
+RA3YCR,KO73DH,EME,,SilentKey,,,01/94
+RA4HCN,LO43SL,EME,,,,144: 1KW 4x13el,09/07
+RA4HGN,LO53BE,,,,,,08/07
+RA4NAK,LO58GH,,,,,,08/08
+RA6AAB,KN94UR,EME,,SilentKey,,,01/92
+RA6AX,KN95,EME,,,,,04/07
+RA6DA,KN96SA,EME,,,,144: 8x 12el  600W,05/06
+RA6HHT,LN04WX,EME,,,,144: 16el 1.2KW,06/07
+RA6HTT,LN05,,,,,,08/08
+RA9CAE,LO97,,,,,,08/08
+RA9FMT,LO87BW,EME,,,,,01/06
+RA9SO,LO71NS,,,,,,08/96
+RA9YDL,MO93HA,EME,,,,,10/08
+RA9YMI,NO13VI,EME,,,,144: 16el 250W,01/90
+RD3BD,KO85UQ,EME,,,,144: 4x 18el 1500W,04/06
+RD3DA,KO85PT,EME,,,,1296: 2m dish 35W,08/06
+RD3WAL,KO71IM,,,,,144: 100w 14el yagi(DK7ZB) Kenwood TS-790a,04/09
+RK1NA,KP71ET,EME,,ex UN1CD  - QSL via DK3WG,,144: FT847 100W 14el circular,04/04
+RK1QWA,LO09AC,,,EXPEDITION,,,08/07
+RK2FWA,KO04FT,EME,,ex UZ2FWA,,,04/04
+RK3AF,KO75WO,,,EX UZ3AF- UA3AJK,,144: IC746 2xGI7B 450W ANT - DK7ZB 5WL,09/07
+RK3FG,KO86HP,EME,,,,144: 4x 14el 1200W,03/05
+RK3MWI,KO98JB,,,Expedition,,144: 100W 10el,01/07
+RK3PWJ,KO83XC,,,QSL via UA3PNO,,,05/04
+RK3WKB,KO81BR,,,,,,05/06
+RK3WWF,KO72QI,EME,,,,144: 4x 13el 1KW  432: 4x 26el 300W,09/06
+RK6GC,LN05AU,EME,,,,144: 50W 2x 12el,02/08
+RK6LXN,KN97LE,,,,,,06/06
+RK6MC,KN97LE,EME,,ex UA9XEA,,144: 4x 12el 1KW - 432: 8x23 el  GS35B/1.1kW  PA   MGF1302 preamp,08/06
+RK9CC,MO06RT,EME,,QSL via DK3WG,,6x4lb 9BV GS35b,03/04
+RK9DK,MO09CS,EME,,,,,10/07
+RL1P,KO49VW,,,SpecialCall,,144: TR-751 300w 16el DJ9BV,05/03
+RL1X,KO59EW,,,SpecialCall,,,05/03
+RL3DO,KO85WV,EME,,,,,08/08
+RM3T,LO16XG,,,SpecialCall,,,08/97
+RN3QKG,KO91OM,,,,,,08/08
+RN3QLU,KO91OO,EME,,,,,06/05
+RN3QO,KO91OO,,,,,,07/05
+RN3QQ,LO00BK,,,,,144: 15el DJ9BV 100W,06/99
+RN4AT,LN29LA,EME,,ex RA4AOR,,144: 4x 14elX-Yagi 1.5KW,10/06
+RN4HFE,LO42XX,,,,,,09/07
+RN4NF,LO58GH,,,,,,08/08
+RN6BL,KN95,EME,,,,144: 80W 16el,01/08
+RN6BN,KN95LC,EME,,,,144: FT736 16x17el 1KW,04/05
+RN6DJ,KN96VC,EME,,RV6AHY,,TS-780 11 EL. 3 WL. 100 W.,01/09
+RN6HW,LN05XB,,,,,144: 1KW 13el Yagi,08/07
+RN6MT,KN97LN,EME,,EX RA6LDY,,144:  2.3KW  4xYagis,05/07
+RP3POT,KO93CD,,,,,,05/05
+RP6A,KN95LC,EME,,SpecialCall,,144: FT736 32x15el vertical & 32x15el horizontal  1KW,05/06
+RP9JTT,NO01,EME,,= RV9JD,,,05/06
+RU1A,KP40HK,EME,,QSL via DK3WG,,144: 6x16el  1KW,01/05
+RU1AA,KP40XD,EME,,QSL via DK3WG,,144: >2KW GU93b 4x15el Crossyagi,07/04
+RU1AC,KP50EJ,,,,,,07/04
+RU1AS,KO59,,,,,,05/03
+RU1R,KO82BW,,,Expedition,,,01/93
+RU1U,KO72XW,,,Expedition,,,01/93
+RU2FM,KO04GQ,,,UB5KCW  RA1ACW  RV1AB  RV1AB/MM  R750M  UE3QRP/2,,home made transverter+ h.m. HF rig  TS790,09/08
+RU3ACE,KO85SM,EME,,,,144: 2x 18el Xpole 300W,09/06
+RU3EC,KO82TK,,,EX UA3EEN,,144: IC746 15el 9BV,09/07
+RU3GX,KO92SO,EME,,QSL VIA DIRECT,,144: more than 1KW Gs35b 4x17el Crossyagi  GAS-2020,11/07
+RU3ZD,KO81VG,,,ex UW3ZD,,144: 16el  200W,01/96
+RU4HU,LO43OM,,,,,144: FT290R  2x10el 50W,04/04
+RV1AO,KP50,,,,,,08/04
+RV3AO,KO85RR,,,ex RA3AIS,,144: 4x12el 1500W,07/03
+RV3APM,KO85RU,,,,,IC910H,03/04
+RV3IG,KO87OT,EME,,QSL via DK3WG,,144:  500W  4x15el,11/05
+RV3QX,LO00BK,,,,,,08/08
+RV3YM,KO63QQ,,,ex UA3YOZ,,FT 897 144: 5.5wl  gs15  bf998  432: 11wl  gs15  bf998,05/05
+RV3ZR,KO80CL,,,,,144: 500W YU0B KT939A,11/03
+RV4AQ,LN28GM,EME,,not active,,432: 4x4.2ld BV 2xGI7B 500W,10/99
+RV6YY,LN04AO,,,,,,05/08
+RV9AX,LO93LK,,,,,144: 600W 17el  preamp - 50: 100W- 6el,10/96
+RV9JD,MP80GW,EME,,,,144: 4x 16el  1500W,06/05
+RV9PP,NO15LB,,,,,144: ft-847 4x 12el klm 350watts 432: 4x 22el,03/06
+RV9UV,NO34GA,EME,,,,FT857 4x 12el 50W,10/06
+RW1AW,KP50DA,EME,,QSL VIA DK3WG,,144: FT736r  2.4KW 2x19el MGF1302 - 432: 12x15el 1.5KW,11/07
+RW1AY,KO59CU,EME,,,,144: 15el 4wl 1500W,04/06
+RW1Q,KO99WJ,,,Expedition,,,12/95
+RW1ZC,KP69NA,,,,,,08/06
+RW2F,KO04PT,,,Expedition,,,12/97
+RW3AC,KO86SH,EME,,,,144: IC910H  18el 3AQ  LNA-RW3AZ and GS35-RZ3BA,05/07
+RW3AZ,KO85TT,,,,,,08/03
+RW3DMQ,KO86RI,,,,,,05/05
+RW3FH,KO86VK,,,,,,08/07
+RW3PF,KO93CD,,,QSL via DK3WG,,144: 1500W  4x10el BVO 3wl Preamp - 432: 700W 4x24el Preamp,08/05
+RW3PX,KO83RJ,EME,,,,144: 8x 16el GS35B,11/05
+RW3TJ,LO16XG,,,ex UW3TJ,,,11/03
+RW3TU,LO25BR,,,UA3TFO  UW3TU,,144:100Watts 12el 4wl. MGF1302 - 432: 400Watt 2x23 ele MGF1302,06/09
+RW3WR,KO71IM,,,ex UA3XJ,,,07/04
+RW3XR,KO73FU,,,UA3XFA,,,10/07
+RW4AK,LO20RC,,,ex UW4AK,,,01/96
+RW4HM,LO43RM,EME,,,,ICOM-910H,05/05
+RW4NQ,LO58,,,,,144: 4x 9el GI7B,08/05
+RW4WE,LO66PU,,,,,,04/05
+RW9FT,LO89TD,,,ex UW9FU,,,11/04
+RW9MD,MO64RX,EME,,,,,06/01
+RW9USA,NO33NS,EME,,,,TM255A  IC 821H PA  1500W  ant 8/6 yagi,05/05
+RX0AZ,NO86OD,EME,,,,700W  3wl Antenna,10/07
+RX1AS,KO59FX,EME,,QSL via DK3WG,,144: 4x21el LY   GS35b linear,03/06
+RX1AX,KO59EW,,,,,,12/04
+RX3AGD,KO85UR,,,UV3AGD,,FT897d 50 watt 12 ele 3WL dk7zb,09/07
+RX3DUR,KO85XM,,,ex UV3DUR,,ICOM 706MK2G + PA GI7B,08/05
+RX3PX,KO84SD,EME,,,,144: 2x11el  210W MGF1302 - 432: 2x23el 180W MGF1302,06/99
+RX3QFM,KO91FM,EME,,QSL via DK3WG,,144: 2xBVO4wl yagi 0.4 dB LNA PWR 1.5 KW (2xGS35B),07/05
+RX6AKO,KN84PV,,,ex UV6AKO,,,06/96
+RX9AT,LO93LJ,EME,,,,ts-2000x,07/07
+RX9CHW,MO09CS,EME,,,,144: 4x 8el 100W,03/06
+RX9JP,MP22RD,EME,,,,144: 4x 18el 45W,10/08
+RX9SA,LO71NS,,,,,IC910H,08/04
+RY3E,KN75,,,Expedition,,,01/93
+RY5I,KP51BM,,,Expedition,,,01/92
+RZ1AP,KO49VW,,,,,144: TR-751 300w 16el DJ9BV,05/04
+RZ1AWR,KO59DX,,,,,144: 16el DJ9BV  50Watt,08/98
+RZ1AWT,KP40XD,,,QSL via DK3WG,,144: 20W  9el,06/98
+RZ1QZZ,LO09BC,,,,,,07/04
+RZ1ZZZ,KP76EQ,,,,,,08/04
+RZ2FWA,KO04FT,,,,,,01/03
+RZ3AED,KO86RD,EME,,UW1ZA,,TS2000 144:  4x 3WL F9FT 500W  432: 4x 21el F9FT,09/07
+RZ3AF,KO85CO,,,ex UA3AFA,,144: MGF 1302  2x14 el  GI-7B,12/02
+RZ3DNT,KO86LE,,,,,,08/08
+RZ3QD,KO91OO,,,,,144: 4wl 1KW LNA,08/05
+RZ3QS,KO91SS,,,,,144: 2wl 100W LNA,08/02
+RZ3ZZ,KO80GP,,,,,144: IC-910H 100W  4x 10el  A144S10  - 432:  1 A430S15,04/06
+RZ4HF,LO43TJ,EME,,,,144: TS-2000 IC-970  4x15el H/V  1500W,11/07
+RZ6BU,KN84PV,,,UV6AKO  RX6AKO,,FT847 144: 400W 10el DK7ZB Preamp BF998  432: 50W 14el DK7ZB,12/07
+RZ6BY,KN84PV,,,ex UV6AIL,,,06/97
+RZ6DD,LN04MX,,,RW1ZC,,IC-746,02/09
+S50C,JN76JG,,,,,50: 5el 100W - 144: IC275h 2x15el 700W,08/01
+S50L,JN75ES,,,,,,08/08
+S50TA,JN76HD,,,,,,08/08
+S51AT,JN75GW,,,ex YU3FM,,144: 1KW  16el LY,08/05
+S51BA,JN75IX,,,,,,01/03
+S51DI,JN76VL,,,,,,09/03
+S51DX,JN75CC,,,ex YU3HR,,144: IC275H 100W 2x17el F9FT,11/01
+S51S,JN75GV,,,,,,08/96
+S51SLO,JN76GB,,,,,,03/01
+S51TE,JN76BI,,,,,,11/99
+S51WV,JN76SN,,,,,,01/03
+S51WX,JN75OS,,,,,144: 2x8el dk7zb 1kW,09/08
+S51ZO,JN86DR,EME,,,,144: 1.5KW  4x14el 9BV -  432: 800W  8x33el 9BV,04/06
+S52CW,JN76CI,EME,,,,,01/01
+S52EZ,JN86DT,,,,,,08/01
+S52LM,JN65TX,EME,,EX YU3ULM YT3LM,,144:  4X17M2 5WL- FT 1000MP- JAVORNIK 144/14 dual RX - MGF1801-1500W (GS35B homemade ),05/07
+S53AC,JN76GB,,,,,IC-746  M2-8wl 600W  IC-746 17el,08/03
+S53CAB,JN76JG,,,,,,08/97
+S53J,JN75EV,EME,,,,144: FT847  4x5wl  GS35 MGF1801 - 432: IC820H  ATF43143  GS23B  4X9WL - 1296: FT736R  SP23  55el F9FT  80W,03/05
+S53RM,JN76JCB,EME,,ex YT3RM,,432:  8 x 8.5wl BV OPT X  yagi  YL1055 Ampl.,04/05
+S53T,JN75GV,,,,,,06/01
+S53X,JN65WS,,,,,,11/99
+S54AA,JN76EG,,,NOT ACTIVE VHF,,144: IC275H   2x4CX250b (650W)   18el DJ9BV  MGF1302,01/01
+S54M,JN86CL,,,ex 9A4ZM- N1MZ,,FT847 PA,05/02
+S54O,JN75NT,EME,,EX S51MQ,,50: 50W 6el   144: TH328  KW  2x17el MGF1302    432: th328 500W 2x24el,09/07
+S54T,JN75EW,EME,,,,144: 4x 17el M2 GS35B 1KW  - 432: FT847  4x 28el M2  GS23B,05/05
+S55AW,JN75DS,,,EX YT3RY,,144: FT1000MP  Javornik 14/144  XVRT  GS35b  2x15el,05/07
+S55M,JN65VM,,,,,,10/07
+S55OO,JN76HD,,,,,50: IC706mkIIg 100W 5el - 144: IC706mkIIg  140W  15QD,08/07
+S55Z,JN76HB,,,S57TDA,,TS9130,08/08
+S560L,JN75ES,,,SPECIALCALL,,,08/07
+S57A,JN65TW,,,,,,11/99
+S57C,JN76HD,,,,,144: 700W 17el - 432: 400W 8x21,07/96
+S57EA,JN76HE,EME,,YT3QW,,144: FT-897D  50W  4x6 loop (full ele)  MGF1302,08/07
+S57JA,JN76GB,,,,,,11/99
+S57LM,JN76HD,,,,,,04/03
+S57M,JN76PO,EME,,EX S51WV,,,04/07
+S57QM,JN76,EME,,,,,01/94
+S57RA,JN75FO,EME,,,,432: 4x 8.5wl dj9bv- 0.3db preamp atf35176- gs35b  800W,08/00
+S57S,JN76JB,,,,,144:  TS850SAT  h.m. transv  MGF1302 preamp 300W 17B2,11/00
+S57SU,JN76EF,,,EX S57MSU,,144: TM255E 30W  2x13el (2.1L) 5�El   15db,02/08
+S57TW,JN75EX,EME,,,,144: IC275H  1500W  MGF1302  4x2M28XP,08/07
+S57UUU,JN76EC,,,,,,01/03
+S58J,JN76EG,,,,,50: IC756  5el,11/99
+S58M,JN76ID,,,,,,01/09
+S58P,JN76ID,,,,,,04/09
+S59A,JN76XP,,,ex YU3ZV,,,11/95
+S59AX,JN65UU,,,,,,01/93
+S59DCD,JN76NL,,,,,,01/03
+S59EA,JN75,,,,,,01/95
+S59F,JN65TX,,,ex YU3HNI-YT3ET-S59AM,,50: 350w 6el -   70:  50w 5el -  144:   500w 12el - 432:  50w 23 el,04/03
+S59MA,JN76FD,EME,,,,,02/05
+S59UN,JN76XP,,,,,,01/03
+S79HP,LI75,EME,,Expedition,,,01/06
+S9TX,JJ30,,,,,,01/03
+SA3AJG,JP93IG,EME,,,,144: 15el 100W,01/08
+SA7U,JO65ML,,,,,FT897 144: 50w  2 x 8JXX2 432: 20w 25JXX70,06/07
+SC300VL,JO68SD,,,SPECIALCALL,,,04/07
+SD5D,JO89JT,,,,,TS-790E + LA-22+15el+mastpreamp,05/08
+SF6X,JO67AJ,,,= SM6CEN,,,08/06
+SF7WT,JO65QQ,,,SpecialCall,,144: IC-7400 PA 500 W 15 EL,08/06
+SG6T,JO68SE,,,ALSO 8S6T & SM6WET,,FT650 847 920,11/08
+SK0AR,JO99BT,,,,,,01/93
+SK0CC,JO99BD,,,,,,07/02
+SK0UX,JO99BM,EME,,,,,01/05
+SK2AT,KP03BU,EME,,= 7S2AT,,TS-790E,05/07
+SK3AH,JP82XO,,,,,,10/02
+SK3JR,JP62WK,,,Expedition,,,01/92
+SK3LH,JP93IH,,,,,,01/94
+SK3MF,JP92FW,,,,,144: 6x15el 1KW,07/02
+SK3SN,JP80IO,,,,,,01/94
+SK4BZ,JP61QM,,,,,,01/94
+SK4EA,JO79CO,,,,,,01/93
+SK6HD,JO68SD,,,,,144: 150W 2x15el,05/07
+SK6YH,JO58,,,,,,08/96
+SK7AX,JO77DS,,,,,,07/01
+SK7CY,JO65RJ,,,,,144:TS850  transverter 130  1000W MGF1302,06/06
+SK7JC,JO76KF,,,,,,08/99
+SL4BP,JP70TO,EME,,SPECIALCALL  FOR MILITARY,,144: 800W 4x9el MGF1601 432: 100W 2x19el MGF1302,05/08
+SL4ZYX,JP70TO,EME,,SPECIALCALL  FOR MILITARY VOLUNTARAY,,144: 800W 4x9el MGF1601 432: 100W 2x19el MGF1302,05/08
+SM0EJY,JO89SC,,,,,144: 500W 10 over 10el  Preamp,06/06
+SM0EPO,JO89XM,,,,,144: 50W  2x6el,12/03
+SM0EPX,JO89SJ,,,,,144:1000 Watt 4CX1500 15el X-Y MGF1802,04/04
+SM0FFS,JO99AG,,,,,,01/94
+SM0FZH,JO89TG,,,,,,01/97
+SM0GWX,JO89XG,,,,,FT-920 + FT-847,01/09
+SM0HAX,JO99,EME,,,,144: IC820  6x 12el I0JXX 2x GU74b P-hemt,08/05
+SM0IKR,JO99CC,,,,,FT847,02/05
+SM0KAK,JO89XK,,,,,50: 100W 6el - 144: 180W 17el,08/03
+SM0LQB,JO89XK,,,,,144: 15el 130W - 432: 4W 21el,04/04
+SM0MXR,JO89WE,,,,,,01/03
+SM0NKZ,JO99IQ,,,,,,03/02
+SM0OUG,JO89VG,,,,,,10/96
+SM0PYP,JO89XG,EME,,,,,01/94
+SM0TSC,JO99CF,,,,,IC-7400   IC-703,10/07
+SM1BSA,JO97DP,,,NO SKEDS !!,,144: FT736r 300W  15el,06/06
+SM1HPV,JO97HO,,,,,144:  200Watts  2x15ele,01/02
+SM1SBI,JO97FK,EME,,,,144: 2x17el 800W,09/06
+SM200PAX,KP03BU,,,SPECIAL CALL,,,06/09
+SM2A,KP04NP,EME,,SM2ILF (BOTH CALLS ARE VALID),,IC910H 144:  6x16 el I0JXX 1kw  432: 4x32 el HB 1kw,03/08
+SM2AZG,KP03,,,,,,03/02
+SM2BLY,KP05RJ,,,,,,01/93
+SM2BYA,KP07DU,EME,,,,144: FT1000  4x3.2wl CueDee  3CX1000A7 MGF1100,08/00
+SM2CEW,KP15CR,EME,,,,144: 6x19el  1KW,04/05
+SM2CKR,KP03DQ,EME,,,,1kw 8x15el,10/07
+SM2ECL,KP05RH,,,,,144: 200W 4x15el 60m asl,07/03
+SM2EKM,KP05UW,EME,,,,,04/03
+SM2GCR,JP93TK,,,,,,07/00
+SM2GGF,KP05DV,,,SilentKey,,,01/84
+SM2ILF,KP04NP,EME,,SM2A (BOTH CALLS ARE VALID),,IC910H 144:  6x16 el I0JXX 1kw  432: 4x32 el HB 1kw,03/08
+SM2IUE,JP85,,,,,,01/93
+SM2IZV,JP84,,,,,,01/93
+SM2LKW,KP15BO,,,,,,01/94
+SM2LTA,JP94CW,,,,,,04/98
+SM2ODB,KP03EU,,,not qrv MS nw! (01/01),,144: 100W 15el,03/02
+SM2VBK,KP15BO,,,,,,08/02
+SM3AKW,JP92AO,EME,,,,144: 2x17LB 1KW - 432: 16x21el 1KW - 1296 4x23elLoops/5m dish 1KW- 2320: 6m/5m dish 100W- 10G:0.65/10W,07/07
+SM3AZV,JP83,,,SilentKey,,,01/93
+SM3BEI,JP81NG,,,EX SM5BEI,,144: 500W  432: 500W   1296: 130W   2320: 120W   5G: 15W   10G: 12W,10/07
+SM3BIU,JP73ST,,,,,,01/97
+SM3BYA,JP81NX,EME,,2nd QTH SM2BYA,,432: 450W 8x21el Tonna  750W  MGF1412,05/05
+SM3COL,JP82,,,,,,11/96
+SM3GHB,JP72,,,,,,01/93
+SM3GHD,JP62,,,,,,01/93
+SM3IEK,JP73IT,,,,,144: 100Watt 15el,03/06
+SM3JBO,JP93IH,,,,,144: 2x 10el 200W,08/05
+SM3JGG,JP71WJ,,,,,,07/02
+SM3JGG,JP71TJ,,,,,FT-847 250watt 15el,07/07
+SM3JLA,JP93LH,,,,,144: 250W   15el,06/99
+SM3JQU,JP82QM,EME,,,,432: 4x 32el 750W  0.4db,09/05
+SM3KJO,JP92DX,,,,,,08/97
+SM3KYH,JP82NL,,,,,,04/04
+SM3LBN,JP80IO,,,,,,08/03
+SM3LGO,JP83VB,,,,,144: 1KW  80el Colinear,01/99
+SM3MXR,JP80GR,EME,,,,144: 4x17el M2 emepwr,08/01
+SM3PWM,JP81GF,EME,,,,,12/99
+SM3PXO,JP73GI,,,,,144: 400W 17el 5wl - 50: 50W 9el 2wl,04/03
+SM3RLJ,JP93OI,,,,,144: 100W 15el,07/97
+SM3RPQ,JP74BT,,,,,,08/08
+SM3RWZ,JP82MI,,,,,ICOM IC-275H  200W  9 ele,10/04
+SM3TFR,JP93IG,EME,,,,,01/94
+SM3VAC,JP83VA,,,,,144: 2x17el 1KW,08/01
+SM3VEE,JP81VI,,,,,,03/98
+SM3XGV,JP81OF,,,,,TS2000,08/04
+SM3YTF,JP81FI,,,,,,12/06
+SM4ANQ,JP70OC,,,,,,02/02
+SM4DHN,JP60VQ,EME,,,,,01/01
+SM4FXR,JO79OF,,,,,,01/05
+SM4GRP,JO69HF,,,,,IC-756PROIII DB6NT TR144H transverter + 15el @ 10m  45m ASL.,10/07
+SM4IVE,JO79SD,EME,,,,,08/00
+SM4KYN,JO79,,,,,,01/93
+SM4RPQ,JO79HH,,,,,TS2000,08/05
+SM4SJY,JP70OC,EME,,,,IC706MK2G  144:  9el  600W,09/05
+SM4VQP,JO79NB,EME,,,,144: 4x17el  eme-pwr,01/02
+SM5BSZ,JO89IJ,EME,,NO SKEDS !!,,,07/99
+SM5CBN,JO78NH,,,,,,08/06
+SM5CFS,JO99IQ,EME,,,,144: 4x19el QBL5/3500 1.5KW   1296: 5.6 mtr solid 100w,09/07
+SM5CUI,JO89WW,EME,,,,144: 8x 10el 800W,07/05
+SM5DCX,JO89OI,,,,,,01/01
+SM5DIC,JO89JT,EME,,,,TS-790E+LA-22+4x15el+Mast preamp MGF1302,11/08
+SM5DRV,JO77MV,,,= SM0DRV,,144: IC-275H 100W 13el yagi,07/04
+SM5FRH,JO88BW,EME,,,,144: 32x19el horz. or 32x10el vert.,10/00
+SM5GEP,JO77IP,,,,,,01/03
+SM5HUA,JP80WA,EME,,SM3HUA,,Icom IC-910H,04/09
+SM5IOT,JO99BX,EME,,,,50: 2x 6el I0JXX - 144: 8x 8el I0JXX  2xGU74B  P-hemts - 432: 8x 26 el DJ9BV opt2 GS23B P-hemts,03/06
+SM5LE,JO99BD,EME,,,,,04/06
+SM5TSP,JP90BD,EME,,,,144: 4x18el 750W,08/08
+SM6AEK,JO66,,,,,,01/93
+SM6AFH,JO66LQ,,,,,,01/94
+SM6CEN,JO67AJ,,,= SF6X,,,08/06
+SM6CKU,JO67,EME,,,,,04/05
+SM6CMU,JO57XK,,,,,IC7400 100-400W  50:  6el - 144:  9el,08/05
+SM6CWM,JO67,EME,,,,,01/94
+SM6EAN,JO57WQ,,,,,144:  600W  10el,01/01
+SM6EUP,JO57XQ,EME,,,,,01/94
+SM6FKF,JO68SA,,,,,,05/07
+SM6FUD,JO68JV,,,,,,12/04
+SM6KJX,JO67CK,,,,,FT736,07/04
+SM6MVE,JO67KW,,,,,50: 10W 3el  144: 25W 4x9el SP2  432: 75W 4x13el SP70,03/06
+SM6NET,JO68SD,,,,,144: 300Watt 2x 17el - 432: 50Watt 21el,05/09
+SM6SKH,JO66IT,,,SM7SKH,,,06/09
+SM6TZX,JO67EE,,,,,,05/02
+SM6U,JO67AT,,,SpecialCall,,144: FT290  9el  25W,05/00
+SM6UMO,JO68DH,,,,,144: TR751  170W  2x13el  SP2000,01/94
+SM6USS,JO67AT,,,,,144: FT290  9el  25W,07/97
+SM6WET,JO68SE,,,ALSO 8S6T & SG6T,,FT650 847 920,11/08
+SM7AED,JO65NI,,,,,144: 50W  5el,06/07
+SM7DTT,JO65LJ,EME,,,,,05/07
+SM7EAN,JO86,,,,,,07/99
+SM7EOI,JO86FP,,,,,IC7400,01/04
+SM7FJE,JO65ML,EME,,,,4x9 el,07/08
+SM7FMX,JO65KN,,,,,,08/04
+SM7FWZ,JO78,,,,,,03/03
+SM7GVF,JO77GA,EME,,SM4GVF,,144: 8x8 el 1KW MGF1302,11/08
+SM7IWG,JO77IP,,,,,,04/04
+SM7JUQ,JO65WX,,,,,50: 100W 5el - 144: 750W 9el - 432: 50W 19el,08/04
+SM7KNK,JO75,,,,,,01/93
+SM7MRL,JO65NP,,,,,144: TS850 transverter 130 1000W MGF1302,03/03
+SM7MXO,JO77,,,,,,07/04
+SM7OYP,JO66JA,,,,,50: 100W 5el,09/01
+SM7SJR,JO87FB,,,,,,10/08
+SM7THS,JO76WR,,,,,144: 15el 170W MGF1302,11/99
+SM7TJC,JO67SH,EME,,,,144: FT-225RD 2xGi7b (800W) - 432: FT-757GX  Trvt 60W,05/02
+SM7TUG,JO65OT,,,,,144: 2x4CX250b  17el  MGF1302,08/98
+SM7WSJ,JO67WI,EME,,,,144: 2X16 optimized for EME 1KW -  432mhz 2X19el   2.4ghz RX on satellite,10/05
+SM7WT,JO65QQ,,,,,144: IC-7400 PA 500 W 15 EL,08/06
+SO3Z,JO82KL,,,CONTEST CALLSIGN,,2m: IC-275A - PA 150W - 2x 10el DK7ZB  ||  70cm: IC-275A + trv MMT432   PWR 10W 16el and 8x10el DK7ZB only contest.,06/09
+SO4DFC,KO13AX,,,Expedition,,,01/92
+SO4TEC,KO13CW,EME,,Expedition QSL via DL3BQA,,,06/02
+SO5AS,KO02JD,EME,,QSL via G4ASL or LOTW,,50: GS31b 5el    144: 150Watts 14el  (no ant. elevation),04/06
+SO9AN,JO84NG,,,Expedition,,,05/00
+SO9FB,JO84NG,,,Expedition,,,05/00
+SP1JVG,JO84LL,,,= KG2IS,,,02/01
+SP1NQE,JO84LL,,,,,TS746 TS811E,04/04
+SP2CHY,JO94GO,,,ex SP4CHY,,,02/05
+SP2FAX,JO83VA,,,,,144: 2KW  6x17el,08/03
+SP2HAX,JO83,,,,,,12/5
+SP2HNF,JO94FK,,,,,,10/05
+SP2IQW,JO94GM,,,,,50: IC-746 5el  - 144: IC7-46 100W 2M5WL,09/08
+SP2JAN,JO94,,,,,,09/94
+SP2JYR,JO92GP,,,,,144: 2x 14el 1KW,01/08
+SP2MKI,JO93AC,,,,,,03/02
+SP2MKO,JO93CB,,,,,icom706mkIIg tm255a,08/05
+SP2MSL,JO92NM,,,,,,01/97
+SP2NJI,JO92OS,EME,,,,50: IC736 100W 5el - 144: IC271 500 W 4x8 el - 432: IC471 150W 4x25el - 1296: HM 15W 44el - 2320: HM 1W 25el,10/08
+SP2OFW,JO93AC,EME,,,,144: 2xGS35b  2x15el,05/05
+SP2QBQ,JO94FL,,,,,,06/08
+SP2SGZ,JO82UU,,,,,,01/96
+SP3EPX,JO83ID,,,,,,11/01
+SP3FSM,JO81GU,,,,,,08/02
+SP3IYM,JO82KL,,,,,2m: IC-275A - PA 150W - 2x 10el DK7ZB Yagi - LNA ||  70cm: IC-275A + trv MMT432   PWR 10W  16el and 8x10el DK7ZB only contest.,06/09
+SP3MFI,JO91,,,,,,01/93
+SP3RNW,JO81GQ,,,,,50: 100W -144: 200W 11el MGF1302 - 432: 100W MGF1302 21el,08/03
+SP3RNZ,JO92DF,EME,,,,IC746 7el TAGI,09/03
+SP3SUX,JO72OR,,,,,144: 80W  14el  BF981,12/96
+SP3TYF,JO82FH,,,,,FT857D TR9000,10/08
+SP3VSC,JO92DF,,,,,144:  IC746 2X13B2 PA GS35B,01/04
+SP4BY,KO13OD,,,,,,07/04
+SP4DGN,KO13OD,,,,,,01/88
+SP4JCQ,KO13NC,,,,,FT920  IC910H  144: 100W 17el,09/06
+SP4MPB,KO03HT,EME,,,,144: TS2000  GS35b  ATF54143  4 x 13el  50MHz: 2 x 7el  1296MHz 100W + 200cm dish,06/09
+SP5CCC,KO02NF,,,,,,01/09
+SP5CJT,KO02OD,EME,,,,,01/94
+SP5EFO,KO02,EME,,SilentKey,,,04/97
+SP5HEJ,KO02,,,,,,01/97
+SP5KVW,KO03SB,,,Expedition,,,01/89
+SP5LJX,KO03,,,,,,08/02
+SP5QWB,KO02NF,,,,,50: 400W 7el - 144:  1KW 17el - 432: 50W 26el,05/04
+SP5XMU,KO02LG,,,,,50: 100W 6el   144: 170W 13el  432: 50W 21el,05/09
+SP6A,JO81NG,EME,,ex SP6AZT,,,11/03
+SP6ARE,JO81IL,,,,,IC202 + 4cx250 to 7 ele quad,10/07
+SP6ASD,JO81LC,,,,,,05/02
+SP6AZT,JO81NG,,,,,,01/03
+SP6CPH,JO81,,,,,,09/01
+SP6GVU,JO81LC,,,,,144: 17el F9FT 200W MGF1302,02/01
+SP6GWB,JO80HK,EME,,,,50: FT847  1 kW   9 el (2 lambda) - 144:  FT847  4x16 el DJ9BV  1KW  CF300,03/05
+SP6GZZ,JO80FX,,,,,,10/04
+SP6HED,JO80IK,EME,,,,144: 13el 100W,07/05
+SP6IWQ,JO80HK,,,,,TR751e  FT757gxII  Trnsv  100W Pas,11/04
+SP6JLW,JO80JK,EME,,,,70cm 8x32el 2xGS35   23cm 6.5m dish 16xBLV958,10/08
+SP6NVN,JO81CJ,,,,,IC-910 H,12/08
+SP6OJE,JO90CI,EME,,,,TS-711a    IC-735  4x 5el,10/06
+SP6VGJ,JO81HU,EME,,,,144: 4wl Antenna 1KW,10/06
+SP7BUZ,KO00HU,,,ex SQ7IKT,,,04/04
+SP7DCS,JO91RT,EME,,,,144: FT736r DSP GS35vb 16x 8el antennas,10/06
+SP7EBM,JO91QR,,,,,,01/02
+SP7HKK,JO91QI,,,,,IC-746,12/07
+SP7JSG,KO01BW,,,,,,03/02
+SP7OGP,KO01AM,,,,,IC706MKIIG 12el 7ZB  50W,05/08
+SP7SZG,JO91RQ,,,,,144: TS700 + PA   50: TS700+Trsv 10W,12/08
+SP7VC,JO91SS,,,,,,10/04
+SP8AOV,KO11GG,,,,,144: FT480r  100W  2x10el,03/00
+SP8NCJ,KO12NA,,,,,,11/95
+SP8RHP,KO10FF,,,,,144:  200W  10el DJ9BV,02/05
+SP8SN,KO11GG,,,ex SQ8GKQ,,,07/04
+SP8UFT,KO11JI,,,,,,01/02
+SP8WJW,KN09SR,,,,,144: 50W 9el,03/06
+SP9COO,JO90GA,,,,,144: IC251 + PA  100Watt  44el YU0B  MGF1302,04/04
+SP9EWO,JN99HW,,,,,,08/06
+SP9HWY,JO90NH,,,,,50: 80W 7el,10/06
+SP9KUR,KO00MA,,,Expedition,,,01/93
+SP9LCV,JO90KF,,,,,IC-756pro   IC735  TRC   PA GI7 home made,03/06
+SP9PRO,JN99,,,,,,03/97
+SP9PZU,JO90,,,,,,07/96
+SP9QMP,JO90FB,,,,,,08/02
+SP9TCE,JO90,,,,,,08/98
+SP9TTG,JO90NU,EME,,,,144: 4x 5el ZB 1kW,03/08
+SP9UX,KO00XA,,,,,,07/04
+SQ5GVY,KO02MQ,,,,,FT817  IC290  IC490  PA,08/08
+SQ7DQX,JO91RR,,,,,144: 13el 50W,11/04
+SQ8GUP,KN09VQ,,,,,,04/01
+SQ9PM,JN99MT,EME,,EX SQ9HYM,,FT847  50: 6el  -  144:  14el   -  432: 29el,05/07
+SQ9PV,JO90KF,,,,,,01/03
+SQ9QU,JO90KH,,,ex SP9MRT,,144: TM 255A 40W  15 el yagi  LCF 78-50 coax line,07/05
+SQ9W,JO90NH,EME,,ex SP9EWU,,,08/06
+ST2NH,KK65GP,EME,,,,144: IC910  LNA  160W  6el,12/08
+ST2RS,KK65GN,EME,,= ZL1RS,,50: 6el 1KW   144: 4x 8el 140W,01/05
+SV0EC,KN10CJ,EME,,,,144: TS770  700W  20el Gruppe,02/99
+SV1AAF,KM17VX,EME,,,,,01/92
+SV1AWE,KM17VU,EME,,,,432: 4x 21el 1500W,09/05
+SV1BJY,KM18UA,,,,,ft897/ft290r w 4x6el.yagi,06/08
+SV1BTR,KM18NO,EME,,,,144: FT847 16x 6el X-Pol  1.5KW  -  432: 8x 26el 1.5KW,04/06
+SV1EEX,KM18UA,,,,,FT897D-FT857D-FT817-IC7400,11/08
+SV1OE,KM17VX,,,,,,08/08
+SV1WE,KM18VA,,,,,144: 500W 17el,07/98
+SV2BFN,KN10LN,EME,,,,ICOM IC-910,09/08
+SV2DCD,KN00LI,,,,,,06/06
+SV2EVS,KN10KP,,,,,,04/02
+SV2JL,KN10LO,,,,,,06/04
+SV2KBS,KN20WU,EME,,SW2KBS,,ICOM IC-7000,04/08
+SV3AAF,KM17KO,EME,,,,144: 4x 8el. and 8877,05/07
+SV3KH,KM07PQ,EME,,,,144: 4x 28el Xpol KW,07/05
+SV5BY,KM46CG,,,,,,01/03
+SV5BYR,KM46CG,EME,,,,144: FT847  2x 13el  600W  MGF1302,01/06
+SV6DBL,KM09KO,EME,,,,144: 4x17 el. full elevation 1300W,04/05
+SV6KRW,KM09,EME,,
+SV8CS,KM07JS,EME,,= KC2INN,,50:  2x 7el  1KW  - 144: IC821 TS2000 4x 16el  MGF1302  1KW,04/05
+SV8KOM,KM07KS,EME,,ex SW8KOM,,144: 4x 9el 1KW,05/06
+SV9CVY,KM25KA,EME,,,,144: 4x 8el. H pol. and 2x 12el. V pol and 3cx800,05/07
+SW6IED,KM09KQ,EME,,,,Icom 910H,12/08
+SX1FRE,KM18OE,,,SPECIALCALL,,,04/08
+SX5AS,KM35JV,,,EXPEDITION,,,08/07
+T33C,RI49XC,,,,,,01/03
+T49C,EL72,,,CONTESTCALL,,50: 4el 100W - 144: 9el 120W - 432: 17el 100W,06/07
+T61AA,MM21OE,EME,,= VK1UN,,50: 600W 8el   144: 9el 1KW,04/08
+T77NM,JN63FW,,,,,,04/07
+T77WI,JN63FW,,,Expedition - QSL via DJ2QV,,144: 350W  9el  11el,06/98
+T90M,JN82TW,,,Expedition,,,08/96
+T90N,JN82TW,,,Expedition,,,08/96
+T94KU,JN94JF,,,,,144: FT480r  6el  50W,01/00
+T94ZQ,JN94FP,,,,,,07/99
+T98CHR,JN84AX,EME,,Expedition,,,04/99
+T98LWT,JN84AX,EME,,Expedition,,,04/99
+T9SO,JN94IM,,,SpecialCall,,144: FT480r  8el  150W,08/98
+TA1D,KN41LB,,,,,144: 150W 2x 9el,10/05
+TA2ZAF,KM69KV,,,ex TA2/OK1MU,,144: 700W 11el,09/06
+TF3EJ,HP84,,,,,,10/95
+TF8ITT,HP94CD,,,,,144: 1KW ERP,08/02
+TG9AKH,EK44RP,,,,,TX YAESU FT-857   RX ICOM 756PROII,10/06
+TI9K,EJ65LM,EME,,EXPEDITION,,50: 100W vertical  144: 10el 350W  432: 27el 120W,01/08
+TK1DX,JN42RM,,,,,144: 8el 200W,01/99
+TK5EP,JN41IW,,,,,144: 400W  9el or 16el  900m.asl.,11/01
+TK5JJ,JN41IW,EME,,EX FC6ABP,,144:  700W    3cx 800 a7  2x 12el  M2   LNA PA3BIY,05/07
+TM0EME,IN88QM,EME,,Expedition QSL via ON4DPX,,144: 2x 10el 200W,08/05
+TM1E,JN32CX,,,EXPEDITION,,,12/07
+TM6OLW,JN37,,,SpecialCall,,,01/05
+TN5SN,JI75PR,EME,,QSL VIA IZ1BZV,,,10/08
+TO4E,LG07EQ,,,,,,01/03
+TS7N,JM54NQ,,,Expedition,,144:  IC275  HLV600  2x7el FX213,11/00
+TV6YGS,IN86,,,Expedition,,,01/87
+TZ5A,IK62,EME,,Expedition,,,09/06
+UA0COO,PN78MK,EME,,,,144: 4x 9el QRO,11/08
+UA0FMU,QN16IW,EME,,,,144: 4x 15el Xpol 1KW,04/06
+UA0SNV,OO17IW,EME,,,,432: 21el 50W,10/05
+UA1AFA,KO59EV,,,,,,08/02
+UA1ALD,KO49KO,,,,,144: 11el 100W,07/06
+UA1ARX,KO48VR,,,Expedition,,,08/04
+UA1C,KO58BR,,,Expedition,,,01/93
+UA1CEA,KO69,,,,,,04/99
+UA1CFM,KO69AK,,,,,,10/07
+UA1MC,KO59DW,,,,,,08/04
+UA1NAN,KP71ES,,,,,IC260,01/03
+UA1OLJ,LP03DC,EME,,,,144: 150W  9el,12/99
+UA1QV,LO08IW,,,,,144: 300W,06/99
+UA1TDZ,KO58UN,EME,,,,144:  Kenwood ts2000 100w 10el / ic706mkIIg diamond x510n,08/07
+UA1UM,KO68WJ,,,,,,01/88
+UA1WER,KO47EU,,,,,144:  50W  4x17el    QSL via DL9USA,01/02
+UA1ZCG,KP59JK,,,,,,01/03
+UA1ZCL,KP78TX,EME,,not qrv MS nw,,,01/92
+UA2FF,KO04,,,,,,12/04
+UA2FL,KO04FQ,,,,,,06/97
+UA3AGU,KO86OB,,,,,4el Quad,10/07
+UA3AKJ,KO95AO,EME,,,,,08/06
+UA3AOG,KO85SQ,,,,,144: IC706  100W  11el,07/00
+UA3ARC,KO85SO,,,,,144 :IC-275H GS-35B MGF1302 2M18XXX,07/04
+UA3DHC,KO96CB,,,,,,04/04
+UA3DJG,KO95CN,,,,,144: 11el  800W,07/03
+UA3GA,KO92GO,,,,,,11/04
+UA3IAG,KO77FN,,,,,,07/05
+UA3IDQ,KO66JF,,,,,,06/00
+UA3MAS,KO97ST,,,,,,01/94
+UA3MBJ,KO88SA,EME,,QSL via DK3WG,,,12/06
+UA3ME,KO97TS,,,ex UA3MEE,,,07/05
+UA3MHJ,KO87SR,,,,,,01/03
+UA3OG,LO07KS,,,,,,01/92
+UA3PBR,KO93BD,,,,,,01/86
+UA3PBT,KO84UF,,,,,,01/82
+UA3PC,KO84TF,,,,,144: 13el 1KW,08/05
+UA3PI,KO94DA,,,,,,08/08
+UA3PTW,KO93BS,EME,,,,144: 16el DJ9BV 1KW - 432: 8 yagis 200W,04/01
+UA3QHS,KO91QR,,,,,,01/81
+UA3QPA,KO91OO,,,,,,08/06
+UA3QR,KO92KA,,,,,,01/92
+UA3RAW,LO02RR,EME,,,,FT-857D,06/09
+UA3RBO,LO03NG,,,,,,11/03
+UA3RFS,LO02SW,,,,,,01/80
+UA3T,LO16GM,,,,,,07/03
+UA3TCF,LO26IU,EME,,QSL via DK3WG,,144: 300W,03/06
+UA3TDB,LO16,,,,,,01/79
+UA3TIE,LO16,,,,,,01/97
+UA3UBD,LO06GU,,,,,,01/80
+UA3UES,LO07MF,,,,,,01/92
+UA3WM,KO72QI,,,,,,07/04
+UA3WU,KO81BQ,,,,,,11705
+UA3XEH,KO73FU,,,,,,08/98
+UA3XFA,KO73DU,,,,,,01/96
+UA3YCC,KO73EG,,,,,,09/07
+UA3YCV,KO62CS,,,,,50W X-Yagi,08/08
+UA3ZAT,KO80,,,,,,01/91
+UA4AAV,LO21FC,EME,,QSL via DK3WG,,,04/99
+UA4ALU,LN29LA,EME,,,,,01/92
+UA4API,LO20QC,EME,,QSL via DK3WG,,,12/99
+UA4AQL,LO20QB,EME,,QSL via DK3WG,,144:  4x13el DJ9BV  Preamp 0.8db  1.2kW(EME)  700W(MS),04/05
+UA4CC,LO21XN,EME,,,,,05/05
+UA4CDT,LO41AX,,,,,,01/83
+UA4FRL,LO23AE,,,,,,10/06
+UA4HAK,LO43NM,EME,,,,144: 4x 8el 800W,11/05
+UA4LCF,LO44EH,EME,,,,144-2x4wl 200w  432-2x11wl 200w IC-706mkiig  lna,03/08
+UA4NM,LO48UP,,,,,,03/04
+UA4NX,LO48SO,EME,,UA4NDV,,144: 300Watt 14el DJ9BV IC-910H,01/08
+UA4PCY,LO45NU,EME,,,,144: 4wl Antenna 700W,11/06
+UA4SF,LO36WP,,,,,,01/86
+UA4UK,LO14MA,,,,,,11/03
+UA6LGH,KN97LF,EME,,,,,07/96
+UA9CGP,MO06RT,,,,,,01/03
+UA9CS,MO06GU,EME,,,,,10/06
+UA9FAD,LO88DA,EME,,QSL VIA DK3WG,,144: 1KW 4x16el - 432: 1KW 8x15el,10/07
+UA9FD,LO87DX,,,,,,05/05
+UA9FU,LO87DX,,,,,,08/06
+UA9HK,MO99DF,EME,,,,144: 4x 9el 600W,06/05
+UA9SL,LO71NS,EME,,,,144: 4x 17el  800W,09/06
+UA9UIZ,NO46EC,EME,,,,144: 13el 100W,10/07
+UA9XQ,LP63UM,,,,,,01/97
+UA9YLU,MO92HX,EME,,QSL VIA DK3WG,,,02/08
+UB0QF,KN77NU,,,,,,01/88
+UB2GA,KN77AB,,,,,,01/90
+UE1NLO,KP51IQ,,,Expedition,,,07/06
+UE1TWO,KO67PW,,,Expedition,,,07/04
+UE3RST,LO03,,,SPECIALCALL,,,08/08
+UN6PD,MN69JM,EME,,,,14el 1KW,12/07
+UN7LU,MO13TD,,,,,,01/03
+UN7PV,MN69MV,,,,,144: 80W 10db  Antenna,12/06
+UN7TQ,MN52VV,EME,,,,,09/98
+UN8AG,LN53PH,,,ex UL7AAX,,,07/96
+UN8BA,MO51RD,EME,,,,,01/92
+UN9L,MO13tf,EME,,
+UP7QP,MN83FD,,,,,,10/08
+UR3CTB,KN59RS,,,,,IC-820H  40W dk7zb 10 el LNA Gafest,09/07
+UR3EE,KN88DC,EME,,,,,11/02
+UR3EP,KN78WR,,,ex RB4EE,,,01/96
+UR3UW,KO50LI,,,,,,08/08
+UR4EWF,KN67OW,,,,,,07/03
+UR4LL,KO70XG,,,,,,10/00
+UR5BAE,KN29SM,,,ex UB5BAE,,,07/01
+UR5LLW,KN89EQ,,,,,,06/03
+UR5LX,KO70WK,EME,,QSL via DK3WG,,144: 4x12el ve7bqh 800W  13el  BF981,12/06
+UR5M,KN99FD,,,Expedition,,,01/94
+UR5MID,KN98OO,EME,,,,144: 4x 12el,09/06
+UR5NOY,KN48KV,,,,,,07/05
+UR5RCP,KO51OM,,,,,,01/92
+UR5WET,KN19RG,,,,,144: FT817nd -100W -9el,06/08
+UR5ZPV,KN56SN,,,,,10ele 500W,08/08
+UR7GN,KN66HP,,,,,,06/96
+UR8IDX,KN87TC,,,,,,07/04
+US0WA,KN29XT,,,,,,07/95
+US1VQ,KN58XA,,,,,,08/95
+US5CCO,KN59XG,,,ex RB5CCO,,,05/02
+US5II,KN88WA,,,,,FT847,07/05
+US5LKW,KN89KL,,,,,,08/08
+US5WU,KO20DI,,,,,,06/02
+US8ICM,KN87UB,,,,,,08/08
+US8IGT,KN87SC,EME,,,,144: 4x 7el 400W,08/06
+US8IPB,KN87SD,EME,,,,,08/08
+UT1E,KN57XX,EME,,,,,08/03
+UT1EA,KN68RA,EME,,ex UT1E UB4EWA,,,08/03
+UT1EWA,KN68RA,,,,,,01/03
+UT1PA,KO21FC,EME,,,,,06/98
+UT1Q,KN77,,,Expedition,,,08/95
+UT2CO,KN58CR,,,,,,01/92
+UT2HN,KN79OI,,,ex UR5HAX,,144: 100W 16el,11/03
+UT2UB,KO40UO,,,,,,08/08
+UT2XQ,KO40IG,EME,,,,IC910H   4x 12EL  1.5KW,10/07
+UT3BW,KN29UA,,,ex UB5BDC,,,05/99
+UT3LL,KO80AC,EME,,,,432: 6x 27el 500W,09/05
+UT4EQ,KN78MK,EME,,,,,06/98
+UT4NJ,KN48KQ,,,,,FT-897D,02/09
+UT4NZ,KN49FF,,,,,,01/09
+UT5AO,KO61XQ,EME,,,,,01/94
+UT5BN,KO40,,,,,,01/81
+UT5CO,KN58CQ,,,,,,01/95
+UT5DL,KN18EP,EME,,,,,07/02
+UT5EC,KN78MN,EME,,,,,11/99
+UT5EG,KN78GJ,EME,,,,,01/94
+UT5ER,KN78ER,EME,,UR5EF UB5EFS,,144: 4x4.4L DJ9BV 1KW  MGF1302,09/07
+UT5GU,KN68,,,,,,01/94
+UT5JAX,KN64RQ,,,,,,01/94
+UT5JCW,KN64SN,EME,,,,TS-2000X 17b2   M2-9WL   3.7m Dish,04/08
+UT5ST,KN28IW,,,ex UR5SKB,,FT847,05/05
+UT5UBB,KO50,,,,,,01/04
+UT5UCP,KO50DG,,,,,,07/01
+UT5VD,KN68MT,,,ex UB5VEP,,,10/04
+UT6UG,KO50EI,,,,,Icom 910h  144: 4x7el DK7ZB  432:  4x13el DK7ZB,11/05
+UT7GA,KN66HP,,,ex RB5GU,,144: 1KW 16el F9FT,09/99
+UT7VF,KN68MQ,EME,,SilentKey,,,06/96
+UT8AL,KO61WP,EME,,ex RB5AL - QSL via DJ9YE,,,08/99
+UU1AA,KN74BV,,,,,,08/04
+UU1DX,KN74BW,,,,,144: 500W,07/05
+UU5JJ,KN74AV,,,,,,01/03
+UW9AH,LO93KK,,,,,,01/92
+UX0FF,KN45NI,,,,,,07/04
+UX1AS,KO59FX,,,,,,01/03
+UX3LV,KO80EA,EME,,,,,08/05
+UX5UL,KO50FL,EME,,,,144: IC910H 900W 432: IC910 75W,11/07
+UY0LL,KN89CX,EME,,UB5LMJ,,IC-910H GS35,08/07
+UY0UP,KO50FJ,,,,,,10/06
+UY5HF,KN66HP,,,= UT7GA,,,06/96
+UY5OE,KO80AB,,,,,,01/94
+UZ1OVW,KP94VN,,,,,,01/92
+UZ2HZ,KN69RA,,,,,,08/08
+UZ3DD,KO86JH,EME,,SilentKey,,,01/93
+V47YC,FK87,EME,,Expedition,,,07/96
+V5/KT6Q,JG73NI,EME,,EXPEDITION,,,01/09
+VA2CST,FN35BP,,,,,,01/03
+VA2MGL,FN74UQ,,,,,50: 25W 3el,11/01
+VA2PRC,FN46,,,,,50: deltaloop  144: IC706  13el,01/98
+VA3LK,FN14TO,,,,,,01/03
+VA3NFA,FN25BH,,,,,,12/06
+VA3TO,FN03BI,EME,,,,144: 2x 12el  300W,04/06
+VA3VFO,FN04FC,EME,,,,,09/07
+VA5VHF,DO70FJ,,,,,,01/03
+VA6DX,DO33IM,,,ex VE6MK,,144: 1KW  4x 2M9,01/01
+VA6SZ,DO33AP,EME,,EX VE6AQE,,IC910 IC756proII,10/07
+VA7MM,CN89OG,EME,,,,1296:  3m dish  400W 0.4db Rxampl,09/06
+VE1ALQ,FN65VH,EME,,,,,10/02
+VE1GRT,FN84IQ,,,,,,01/03
+VE1JF,FN74cq,EME,,
+VE1KG,FN84CM,EME,,ex VE4XP FP4RS F8PZ,,144: 4x17el M2  50W,10/06
+VE1MQ,FN65,,,,,,01/03
+VE1RG,FN65PT,EME,,,,144: 170W longyagi,04/05
+VE1SKY,FN74,,,,,50: FT620B 3el,01/01
+VE1TAY,FN66,,,,,,01/01
+VE1XYL,FN65VH,,,,,,01/03
+VE1ZJ,FN96UC,EME,,,,144: 1.8KW 6x18el,12/01
+VE2BKL,FN48DJ,,,,,50: 1000W 6el - 144: 150W 19el,04/02
+VE2CST,FN35BP,,,,,,01/03
+VE2DIV,FN35BP,,,,,,01/03
+VE2DSB,FN35hs,EME,,
+VE2JWH,FN35LM,EME,,,,144:  4 x 18el  K1FO  1.5kw,09/07
+VE2PEP,FN46HC,,,,,KENWOOD,09/07
+VE2PIJ,FN36KA,EME,,,,50: 6el  200W    144:  4 x 18el. K1FO  1.5kw     432: 24el  25W,06/09
+VE2PIJ/P,FN35QI,EME,,,,50: 6el  200W    144:  4 x 18el. K1FO  1.5kw     432: 24el  25W,06/09
+VE2UG,FN35,,,,,,01/03
+VE2WHZ,FN08WN,,,,,,01/03
+VE2YAG,FN19ES,,,,,,01/03
+VE2ZAK,FN25BK,EME,,,,4 x 13 el. and 100W,10/08
+VE3AX,FN02CW,,,ex VE3VD,,1.5KW 50-432 multiple Yagi arays,01/02
+VE3BDR,EN98,,,,,,01/03
+VE3BFM,FN04AE,,,,,,01/03
+VE3CF,FN03,,,,,,01/03
+VE3CVG,FN25HM,,,,,,01/03
+VE3DBP,EN94EE,,,,,,01/03
+VE3DEW,FN04,EME,,,,,01/03
+VE3DIR,FN03,,,,,,01/03
+VE3DSS,FN03FQ,EME,,= VE3KU,,,07/06
+VE3DXP,EN92JW,EME,,,,144:  100W  2x 10el,04/06
+VE3FAC,FN03IS,EME,,,,,01/03
+VE3FAL,EN58DF,EME,,,,,03/05
+VE3FGU,FN04GG,EME,,,,50: 1000KW - 144: 600W 19el,10/06
+VE3FOD,EN76,,,,,,01/03
+VE3JJX,EN29SS,,,,,,01/03
+VE3KH,FN03AJ,EME,,EX VE3KDH,,FLEX-5000A & M2 6M5X,06/09
+VE3KRP,EN58IJ,EME,,,,,04/07
+VE3KU,FN03FQ,EME,,= VE3DSS,,,07/06
+VE3NE,FN03FQ,,,,,,01/03
+VE3OQC,FN03,,,,,,01/03
+VE3SCP,EN93WV,,,,,,01/03
+VE3SPW,FN04GG,EME,,,,144: 100W 17el,04/05
+VE3STZ,EN82,,,,,,01/03
+VE3WMD,EN92JN,,,,,,01/03
+VE4AAZ,EN19,,,,,,01/03
+VE4ACX,EN19,,,,,,01/03
+VE4AJB,EO00,,,,,,01/03
+VE4AP,EN19,,,,,,01/03
+VE4AQ,EN19OR,,,,,144: 1KW 4218XL,01/01
+VE4CCW,EN19,,,,,,01/03
+VE4CT,EN19OW,,,,,,01/03
+VE4DK,EN19,,,,,,01/03
+VE4FV,EN19,,,,,,01/03
+VE4GHR,EN19,,,,,,01/03
+VE4GLS,EN19,,,,,,01/03
+VE4HAY,EN19,,,,,,01/03
+VE4JX,EO00,,,,,,01/03
+VE4KQ,EN19,,,,,,01/03
+VE4KU,EN19,,,,,,01/03
+VE4LAR,EN19,,,,,,01/03
+VE4MA,EN19LU,EME,,,,,01/03
+VE4MBQ,EN19,,,,,,01/03
+VE4MHZ,EN19,,,,,,01/03
+VE4MX,EN19,,,,,,01/03
+VE4OV,EN19,,,,,,01/03
+VE4PQ,EN19,,,,,,01/03
+VE4RCJ,EN19,,,,,,01/03
+VE4RE,EN19,,,,,,01/03
+VE4TOM,EN-19,,,,,,01/03
+VE4TV,EN19CX,,,,,,01/03
+VE4UD,EN19,,,,,,01/03
+VE4ZI,EN19,,,,,,01/03
+VE4ZK,EN19,,,,,,01/03
+VE4ZV,EO10IH,,,,,,01/03
+VE5UF,DO61OV,EME,,,,50: 600W 5EL  yagi  144: 325W 4 x 2M12,10/08
+VE6AFO,DO21,EME,,,,,01/03
+VE6AT,DO33GS,EME,,,,432: 5.5m dish GS23b,03/06
+VE6BPR,DO32BG,,,,,50: 150W 5el - 144: 250W 16el crossyagi,01/01
+VE6CPP,DN39ER,EME,,,,144: 2x 13el 170W,02/08
+VE6EGN,DO23QE,EME,,,,144: 22el Xpol 150W,06/05
+VE6LR,DO21,,,,,,01/03
+VE6NA,DO20,EME,,,,,01/03
+VE6NTT,DO31,,,,,144: 170W 17el,01/98
+VE6PY,DO20WW,,,,,,01/03
+VE6TA,DO33GS,EME,,,,432: 5m dish 800W,02/05
+VE6XT,DO,,,,,,01/03
+VE7BBG,CN88DT,EME,,,,,04/05
+VE7BEE,DN09HG,,,,,,01/03
+VE7BQH,CN89KI,EME,,,,384el Collininar,10/05
+VE7CFT,CN79ST,,,,,,01/03
+VE7CLD,CN89LD,EME,,,,,01/03
+VE7DUB,CO88RT,EME,,,,,09/06
+VE7DXG,CN88DT,EME,,ex VE3GBA/7,,50: 150W 5el - 144: 150W 15el,02/05
+VE7FYC,CN89,,,,,,01/03
+VE7IRA,CN89MF,EME,,,,144:  13el 200W,10/08
+VE7KPB,DN29CM,,,,,144: 1KW  5wl M2,06/01
+VE7LGF,CO90TQ,EME,,VE5AGJ,,FT100D  144: 17B2  500W,11/06
+VE7MDL,CN89,,,,,,01/98
+VE7RJ,DN09LL,,,,,,01/03
+VE7SKA,CN88GT,,,,,,01/01
+VE7TIL,CN89LG,,,,,144 : 4x 7el  500W,11/06
+VE7US,CN88IG,,,,,,01/03
+VE7VVW,DO00IF,,,,,144: 160W KLM2m22c - 432: 100W MBM88,01/02
+VE7ZD,CN89LG,,,,,,01/03
+VE9AA,FN66NA,,,,,,06/06
+VE9DX,FN75aj,,,
+VE9PA,FN65SU,,,,,,01/03
+VK0MT,QD95KM,EME,,,,,03/05
+VK1VP,QF44NR,EME,,,,,03/05
+VK1WJ,QF44MS,,,EX DK3SA,,TS 50S  IC 706 MK2  IC 490A  80W 2m PAm 50W 70cm PA,05/07
+VK2ALU,QF55KN,EME,,,,,01/03
+VK2AWD,QF56NG,EME,,,,144:  2x 13el 2.2ld  300W,10/06
+VK2CZ,QF56NH,,,,,,01/03
+VK2DJG,QF59VK,,,,,,01/04
+VK2FLR,QF56OD,,,,,,01/03
+VK2IT,QF56OH,EME,,,,144: FT-847  350W  1x 8el  12el coming soon,04/06
+VK2JKK,QF69LO,,,,,,01/03
+VK2KRR,QF34MR,EME,,,,144: 400W 4x 17el,07/06
+VK2KU,QF55AI,EME,,,,144: 600W 4x 12el horz,10/08
+VK2SN,QF56OC,EME,,,,432: 4x 28el legal pwr,12/05
+VK2XCI,QF27WD,,,,,,01/03
+VK2XDE,QF56MG,EME,,,,,04/05
+VK2ZT,QF57WF,EME,,,,,12/07
+VK2ZZF,QF43JP,EME,,,,144: 8 over 8  100W,10/06
+VK3AMZ,QF22IC,EME,,,,,01/93
+VK3AXH,QF12WI,EME,,,,144: 4x 18el 400W,08/06
+VK3CY,QF13,EME,,,,,04/00
+VK3DDU,QF22LG,EME,,,,144: 2x 10el 200W,02/09
+VK3HY,QF22PD,,,,,,01/03
+VK3HZ,QF22ME,EME,,,,,09/05
+VK3II,QF21RN,EME,,,,144: 14el 300W,12/06
+VK3OT,QF12AG,EME,,,,,01/94
+VK3VHF,QF32SE,EME,,,,IC910 GPS Locked 3WL Horz Antenna,07/08
+VK3ZYC,QF31NT,EME,,,,144: 2x 10el 4wl Yagis 300W,03/05
+VK4/DL2NUD/QG47,QG47WE,EME,,EXPEDITION,,144: 18el 1500W Preamp,02/09
+VK4/DL2NUD/QG49,QG49JR,EME,,EXPEDITION,,144: 18el 1500W Preamp,02/09
+VK4/DL2NUD/QG53,QG53WL,EME,,EXPEDITION,,144: 18el 1500W Preamp,02/09
+VK4/DL2NUD/QG55,QG55WU,EME,,EXPEDITION,,144: 18el 1500W Preamp,02/09
+VK4/DL2NUD/QG56,QG56IV,EME,,EXPEDITION,,144: 18el 1500W Preamp,02/09
+VK4/DL2NUD/QG64,QG64NC,EME,,EXPEDITION,,144: 18el 1500W Preamp,02/09
+VK4/DL2NUD/QG65,QG65FE,EME,,EXPEDITION,,144: 18el 1500W Preamp,02/09
+VK4ABW,QH30GT,EME,,,,144: 4x 17el  300W,10/06
+VK4ADC,QG62MJ,,,,,50 and 144: Icom  IC-7400 100w PEP,01/08
+VK4AFL,QG62OG,EME,,,,432: 16x 15el 100W,10/06
+VK4APG,QG62LP,EME,,,,,01/94
+VK4CDI,QG52XH,EME,,,,144:  300W  4 x 12El Yagi - 432: 450W 4 x 22El Yagi,02/08
+VK4EME,QG63KQ,EME,,VK4KAZ,,TS2000,09/07
+VK4JMC,QG62FI,EME,,,,4x 14el  200W,08/08
+VK4JSR,QG62NM,,,,,50: 100W 8el - 144: 400W 12el - 432: 100W 28el,10/00
+VK4KAZ,QG63KQ,EME,,,,,01/03
+VK4KDD,QG62LP,EME,,,,,10/06
+VK4KZR,QG62LO,EME,,,,,08/00
+VK4WS,QG62OK,EME,,,,144: 12el QRP,12/06
+VK5DK,QF02JE,,,,,,01/03
+VK5MC,QF02EJ,EME,,,,,01/03
+VK5OA,QF02JE,,,,,,01/03
+VK5ZLX,PF95MK,EME,,,,,04/07
+VK5ZLX,PF95MK,EME,,,,,04/07
+VK6KDD,OG99HP,EME,,ex VK4KDD PE1OZH,,LT2S  LT6S  TS850,03/06
+VK6KXW,OF87JR,,,VK6ZDY,,,05/07
+VK7JG,QE38NN,EME,,,,144: 2x 12el 500W,07/06
+VK7MO,QE37PC,EME,,,,144: 4x 10el,03/05
+VK8MS,PH57PK,EME,,EXPEDITION,,,10/08
+VK9CD,NH87JU,,,,,,01/03
+VK9CMO,NH87KT,EME,,Expedititon,,144: 230W  1Yagi 6wl,08/05
+VK9XMO,OH29UN,EME,,Expedititon,,144: 230W  1Yagi 6wl,09/05
+VK9XW,OH29TI,,,,,,01/03
+VP2EC,FK88LD,,,,,,01/03
+VP2EDS,FK88,EME,,= KJ9I,,,05/07
+VP2MIS,FK86UV,EME,,,,,11/00
+VP2MR,FK86VS,,,,,,01/03
+VP5JM,FL31VS,,,,,,01/03
+VP8NO,GD18BH,EME,,EX G3VUI,,50:  5el  Acom 1000 Ampl.,03/08
+VQ9LA,MI62,EME,,,,,09/02
+VR2KW,OL72LL,EME,,,,,06/07
+VS6BI,OL72CG,,,,,,01/03
+VT3AT,RJ38UR,,,,,,01/03
+VU2BMS,MK80EA,EME,,,,FT 857,02/08
+VU2KGB,MK80EA,EME,,,,144: 2x 5el 160W,02/09
+VU7RG,MK61JG,EME,,Expedition,,144: 1KW 28XPol Preamp,01/07
+W0AH,EM85WB,EME,,ex W2CRS,,144: 18el 700W,08/06
+W0AUS,EN35KA,,,,,,01/03
+W0BJ,DN91OD,,,,,,01/03
+W0DB,EN11VD,,,,,144: 50W 2x 8el,09/01
+W0DEN,EN41,,,,,,01/03
+W0DFK,EM47LX,,,,,,01/03
+W0DJM,EN25XK,,,,,,01/03
+W0DQY,EM48RS,,,,,144: 350W 4x8el - 432: 175W 2x88el - 1296: 10W 45el,01/01
+W0EKZ,EM17,,,,,,01/03
+W0ETT,DM79,,,,,,01/03
+W0FMS,EN42EB,,,,,,01/03
+W0FY,EM48,,,,,,01/03
+W0GAJ,EN11,,,,,,01/03
+W0GC,EN14SQ,,,,,,01/03
+W0GHZ,EN34LX,EME,,WA0BWE,,FT-736r  TS-440 TS-930  TS-700SP  144:  17B2 1KW    Xverters on  902Mhz - 10Ghz,12/07
+W0GN,EN42,,,,,,01/03
+W0GR,EM38AX,,,,,,01/03
+W0HHE,DM79,EME,,,,,01/03
+W0HL,EM27,,,,,,01/03
+W0HP,EN34IT,EME,,,,,11/06
+W0HRG,EM39,,,,,,01/03
+W0IC,DM79MR,,,,,,01/03
+W0IOH,DM78OU,,,not qrv MS nw! (02/01),,,01/01
+W0IPL,DN62UU,EME,,,,,01/04
+W0ITB,DM79,,,,,,01/03
+W0IZ,EN41,,,,,,01/03
+W0JRP,EM27RB,,,,,,01/03
+W0KFG,DN96OT,,,,,,09/01
+W0KJY,DN71,EME,,,,,09/01
+W0KRX,EN34LM,,,,,,01/03
+W0KT,EN21,,,
+W0LD,DM78,,,,,144: 1KW 2x16el,04/01
+W0LER,EN35IE,,,,,,01/01
+W0LGQ,EN21DJ,,,EX N0EKT,,,05/07
+W0LMD,DM79,,,,,,01/03
+W0MD,EN36,,,,,,01/03
+W0NKN,EN42,,,,,,01/03
+W0OF,EM12,,,,,,01/03
+W0OHP,EN10,,,,,,01/03
+W0OHU,EN34OA,,,,,,01/03
+W0OZI,EN35,,,,,,01/03
+W0OZL,DN60FM,,,,,,01/03
+W0PEC,EN34,,,,,,01/03
+W0PHD,EN18OE,,,,,144: 190W 16lbx,09/01
+W0PPF,EN41,,,,,,01/03
+W0PT,EM28OD,EME,,,,144: 4X 19XXX and 1.2kw,03/06
+W0PW,EM26TW,,,,,,01/03
+W0QIN,EN34,,,,,,01/03
+W0RAP,EN42EB,,,,,,01/03
+W0RGU,EN35,,,,,,01/03
+W0RKP,EN31,,,,,,01/03
+W0RRY,EM26BX,EME,,,,144: 700W 9elM2 0.6db Preamp,01/01
+W0RSJ,FN20JQ,,,,,,01/03
+W0RTZ,DM79,,,,,,01/03
+W0RWH,EM39SX,EME,,,,144: 16x19el,10/98
+W0SD,EN13GQ,EME,,,,,10/98
+W0SII,DN71,,,,,,01/03
+W0TJ,EN10,,,,,,01/03
+W0TUP,DN98IF,,,,,144: 13B2,03/06
+W0UC,EN35,,,,,,01/03
+W0UHF,EN32,,,,,,01/03
+W0UN,EL07FV,,,,,,01/03
+W0UT,EM17,,,,,,01/03
+W0VB,EN34QB,EME,,,,144: 21el  1KW,10/06
+W0VD,EM27UD,EME,,,,144: TS790A  8877 (1-5KW) 18elM2,01/01
+W0VX,EM12,,,,,,01/03
+W0WGZ,EN42,,,,,,01/03
+W0WOI,EN22TA,,,,,,01/08
+W0WTG,EM48,,,,,,01/03
+W0XG,EN34GX,EME,,,,144: 2x 14el 1KW,11/05
+W0YPT,EN43,,,,,,01/03
+W0ZJY,EM28,,,,,,01/03
+W0ZQ,EN34IU,,,,,,01/03
+W0ZZQ,EM26,,,,,,01/03
+W1CDO,CN87XF,,,,,,01/04
+W1COT,FN31ST,,,,,,01/04
+W1CQD,FN34MR,,,,,,01/04
+W1FIG,FN41GV,EME,,ex PE1FIG,,50: 1KW 2x7el  - 144: 9el M2  1KW 0.8db  - 222: 450W 10el - 432: 450W 18el,01/01
+W1FKF,FN42JK,EME,,WB1FKF,,Kenwood TS 2000  4x6 el  800 watts EME 2 Meter,05/07
+W1FM,FN42,,,,,,01/03
+W1GHZ,FN42,EME,,ex N1BWT,,,11/06
+W1HY,FN41HV,,,,,,01/03
+W1IPL,FN54FC,EME,,,,144: 4x 12el  200W,01/09
+W1JJ,FN41FO,EME,,,,50: 4x 9el 1500W,05/05
+W1JR,FN42HN,EME,,,,,12/00
+W1LP,FN41SR,,,,,144: 1KW 2x2M9,01/01
+W1PWW,FN53DT,EME,,,,144: 2x 18el 1500W,08/05
+W1QA,FN32,EME,,PA3GCQ ZL2GCQ WF1R,,Orion - TS2000,05/07
+W1QC,FN42HU,EME,,,,,01/03
+W1REZ,FN55,,,,,,10/00
+W1RZF,FN42FC,,,,,,01/04
+W1TE,FN42EN,,,,,50: 1KW 7el  -  144: 1KW 22el - 432:  44el,08/01
+W1TMZ,FN41GO,EME,,,,144: 4x 12el 1KW,12/08
+W1UHE,FN41,,,,,,01/03
+W1VT,FN33KE,,,,,,01/03
+W1XE,DM79GW,,,,,,01/03
+W1XR,FN42HW,,,,,,01/03
+W1ZC,FN42DR,,,,,144: 1KW  - 432: 36el,01/02
+W1ZX,FM18LG,,,,,,01/03
+W2AXU,FN20OG,,,,,,01/03
+W2BZY,EL98HR,,,,,50: 700W 7el - 144: 400W 2X17el - 222: 300W 23el - 432: 500W 2X38el MGF - 903: 60W 47el - 1296: 50W 55el - 2304 15W 76el - 3456 45W 116el - 10368 1W 2'Dish,04/07
+W2CNS,FN13GA,EME,,,,144: 4x 20XP 1KW,07/06
+W2CRS,DM78,,,,,,01/03
+W2DBL,FN20TK,EME,,,,144: 4x 13el 700W,10/08
+W2DRZ,FN02LA,EME,,,,,01/01
+W2ETI,FN21,EME,,,,,01/03
+W2HBA,FN31TC,,,,,,01/03
+W2MPK,FN23BA,EME,,,,,10/99
+W2PU,FN20QI,EME,,,,432: 4x15XP 750W
+W2SZ,FN22,,,,,,01/03
+W2TSL,FN41AA,EME,,,,144: 4x 9el 600W,12/07
+W2UHI,EN73AH,EME,,,,,01/03
+W2VU,FN20,,,,,,01/03
+W2WD,FN20TP,EME,,,,432: 9wl 600W,09/05
+W3ARS,FK88LC,,,,,,01/03
+W3BDP,FM29,,,,,,01/03
+W3BW,FN30AS,,,,,,01/03
+W3EME,CN85BE,EME,,ex K3VGX,,144:  Icom 746  MGF2430A  MGF1302  4x14el X-Pole  8877,01/05
+W3HQT,FN54,,,,,,01/03
+W3IKE,FM18SW,,,,,,01/03
+W3IOA,EM00,,,,,,01/03
+W3IWI,FM19ME,,,,,,10/05
+W3KJ,FN20HG,,,,,,01/03
+W3MRG,FN10UB,,,,,,01/03
+W3RY,FN10LL,,,,,,01/03
+W3SDZ,FN11,,,,,,01/03
+W3SE,DM03WW,,,,,50: 50W 5el - 144: 150W 12el,04/02
+W3SZ,FN20AH,EME,,ex WA3JYM,,144: 1500W 2x 2MXO32 - 432: 100W 9wl. - 1296: 10W 4x22el - 2304: 10W 2x2ft dish,10/06
+W3TMZ,EL88SU,,,,,,01/03
+W3TWO,FM28CA,,,,,144: 400W M2,07/01
+W3TWX,FN33UR,EME,,,,IC275H+8877+LNA145+4x18elM2,02/08
+W3TWX,FN33UR,EME,,,,IC275H+8877+LNA145+4x18elM2,02/08
+W3UR,FM19LG,,,ex WR3E WB3JRU,,FT1000MP  FT847  C3I 7el 22ft  1KW,04/05
+W3UUM,EL29PW,EME,,ex WA3UUM,,144: 24el 1000W,08/06
+W3VH,FN32HG,EME,,,,,01/03
+W3WJR,FN20LL,,,,,,01/03
+W3XO,EM00KD,,,,,,01/03
+W3XS,FN10,EME,,,,,01/00
+W3ZZ,FM19JD,,,,,50: 1-5kw 8el 144: 1-5kw 17 el - 432: 1Kw 33el,07/01
+W4ABC,EL87PT,,,,,50: 100W  7el qubical quad,01/01
+W4AD,FM18IP,EME,,ex K4HWG,,,07/01
+W4AME,EM75FG,,,,,,01/03
+W4AS,EL95to,,,
+W4CHA,EL88QA,,,ex WA4CHA,,50: 150W 9el M2 - 144: 1-5KW 2M18xxx - 432: 500W 424B - 1296: 110W 45el - 2304: 5W 45el - 10G: 2W 10ft,01/01
+W4CN,EM17JP,,,,,,09/01
+W4DNR,EM64rr,,,
+W4ET,EM56TP,,,,,,01/04
+W4FJ,FM17,,,,,,01/03
+W4GHW,EM81EQ,,,,,,01/04
+W4HTB,EM66,,,,,,01/03
+W4KXY,EM84,,,ex WA4KXY,,,01/01
+W4LNG,EM73VK,,,,,,01/03
+W4LSC,DM25XF,,,,,ICOM 910 w/23 cm,04/08
+W4MOP,EM78,,,,,,01/03
+W4OZK,EM73,,,,,,01/03
+W4PJV,EM65SU,,,,,,01/03
+W4PZA,EM66NC,,,,,,01/03
+W4RBO,EL99KF,,,,,,01/03
+W4RDI,EL96BQ,EME,,,,,01/03
+W4REB,EM78,,,,,,01/03
+W4RFR,EM65,,,,,,01/03
+W4SM,FM08QA,EME,,,,,01/04
+W4SW,FM18IW,EME,,,,144: 4x 10el X-Pol  1.5KW    Yaesu 767 and 736 to linears through 1296   Yaesu 817 with trvt on 2304 and above,10/05
+W4TJ,FM08,EME,,,,,06/00
+W4TNV,FM05XD,,,,,,01/03
+W4UDH,EM52AG,,,,,,10/07
+W4UDQ,EM55DB,,,,,,01/03
+W4UE,EM90GC,,,,,,12/97
+W4VHF,EM95,,,,,,01/03
+W4WD,DN40AM,,,,,,01/03
+W4WDH,EM83,,,,,,01/03
+W4WHN,EL94HP,,,,,,09/01
+W4WSR,EM85CB,EME,,,,144: 4x 8el  700W,12/05
+W4WTA,EM83XJ,,,,,144: 160W 18el,11/01
+W4XP,FM18EW,EME,,,,FT-2000 FT-847 DEMI 222 DB6NT 1.2  - 10 GHz,09/07
+W4ZPG,EM73WU,,,,,,01/03
+W4ZRZ,EM63SS,,,,,,01/03
+W5AK,EL29,,,,,,01/03
+W5AL,DM95XB,,,,,50: 150W - 144: 1KW 18el M2 - 222: 130W - 432: 100W,01/01
+W5CTV,EL49WU,,,,,,01/03
+W5DBY,EM12,,,,,,01/03
+W5DID,EL29,,,,,,01/03
+W5DKE,EM12LL,,,,,,01/03
+W5DS,EM15,,,,,,01/03
+W5ETG,EM12LS,,,,,,01/03
+W5FR,EM12KX,,,,,,01/03
+W5FYZ,EM32,,,,,,01/03
+W5GDL,EM15GM,,,,,,01/03
+W5GEL,EL17,,,,,,01/03
+W5GG,EM12,,,,,,01/03
+W5GKO,EM35,,,,,,01/03
+W5GNB,DM73VB,,,,,,01/03
+W5GVE,EM01,,,,,,01/03
+W5HES,EM12HQ,,,,,,01/03
+W5HPT,EM12,,,,,,01/03
+W5HTZ,EM16,,,,,,01/03
+W5HUQ,EM35BC,,,,,,07/01
+W5ITI,EM32,,,,,,01/03
+W5IU,EM12HP,,,,,,01/03
+W5IXR,DM76,,,,,,01/03
+W5JBP,EM12,,,,,,01/03
+W5KDA,EM41HM,EME,,,,144: TS790A 4x 17el 500W,08/06
+W5KI,EM36cl,,,,,756ProII  Acom 1000,08/05
+W5KLF,EM31PJ,,,,,,01/03
+W5KQJ,EM12BS,,,,,,01/03
+W5LBT,EM40KV,EME,,= WB5LBT,,,08/05
+W5LUA,EM13QC,EME,,,,,01/03
+W5LUU,EL09QO,EME,,,,144: FT736r 1.5KW 4x5wl - 432: 1.5KW 1x5wl,08/01
+W5MRF,EM12,,,,,,01/03
+W5NFC,EM10,,,,,,01/03
+W5PIC,EM16LJ,,,,,,01/03
+W5PLN,EM12,,,,,,01/03
+W5RCI,EM44UF,EME,,,,,01/97
+W5SNX,EM73WT,,,,,50: 150Watts  6M7JHV @65ft -  144MHz : 500Watts  8wl @65ft,01/02
+W5SXD,EM02XS,EME,,,,ic-756 ts2000x commander 1500 w on six,06/09
+W5TCD,EM12,,,,,,01/03
+W5TVG,EM26,,,,,,01/03
+W5UC,EM21PI,EME,,,,144:,11/05
+W5UN,EM23MG,EME,,,,144: 32x 2M5WL,04/07
+W5UPR,EL29,,,,,,01/03
+W5UWB,EL17AX,EME,,,,50: 6el 1000W  144:  21el (8wl)  1500W NO elevation   432: 23el  150W,03/07
+W5VUY,EM40,,,,,,01/03
+W5WJP,EM12HO,,,,,,01/03
+W5YUO,EM12,,,,,,01/03
+W5ZN,EM45DH,EME,,,,,12/00
+W6CAP,DM14,,,,,144: FT726r  1KW  2yagis,01/01
+W6CPL,DM04,,,,,,01/03
+W6FC,DM03,,,,,,01/03
+W6HD,CM98PF,EME,,,,,01/03
+W6IHG,FM09TB,EME,,,,144: 11el 300W,01/06
+W6IZU,CM98NO,,,,,,01/03
+W6KH,CM97,,,,,,01/03
+W6MT,CM87XH,,,,,,01/03
+W6NQ,DM13,,,,,,01/03
+W6OMF,CM98AK,,,ex WB5OMF,,144: 650W 2x17el  -  222: 120W 7wl -  432: 175W 2x9el,01/01
+W6OUU,DN22SN,EME,,,,144: 700W 18el MXXX,10/08
+W6OYJ,DM12,,,,,,01/03
+W6QT,CM87,,,,,,01/03
+W6SZ,DM14ED,EME,,,,TS-850  TS-700,02/08
+W6TE,DM06CT,EME,,,,,01/03
+W6US,DM13JA,,,,,,01/03
+W6WE,CM95RD,EME,,,,,11/03
+W6YLZ,DM04RF,,,,,50: 80W 4el - 144: 150W 14el,01/01
+W6YX,CM87WJ,EME,,,,,01/04
+W7ALW,DN36AU,EME,,,,50: 8877 9el - 144: 1KW 2x 18xxx - 432: 1500W 4x13wl,06/06
+W7AMI,DN13VO,EME,,ex KJ7F,,432: 4x 28el 750W,09/05
+W7ANF,DM43AS,,,,,144: 15W Vertical,07/01
+W7AV,CN88MB,EME,,,,144: 4x 20XP 600W,07/06
+W7BBM,DM42MB,EME,,,,,01/03
+W7CE,CN87OA,EME,,,,50: IC-756 PRO III 1500W 1x7MJHV - 144: FT-736R 500W 1x18MXXX Yagi,05/08
+W7CI,DM41UN,EME,,,,,01/03
+W7CNK,EM15FI,EME,,,,144: 2x 9el  400W,10/06
+W7CQ,CN83JX,,,,,,01/03
+W7CS,DM42OO,EME,,ex WA6MGZ,,50: 1.5KW 7el - 144: 500W 4x13el - 432: 500W 2x22el - 1296: 15W,08/01
+W7DHH,DM48LL,,,,,,01/03
+W7DWW,CN87,,,,,,01/03
+W7EME,CN85BE,EME,,,,50: 2x 9el  8877 - 144: FT736r  Mutek  DSP  Preamp  GS23B  6x 7wl - 432: 8x 42el Xpol 8877,10/08
+W7EME/CN72,CN72,EME,,EXPEDITION,,,02/09
+W7EME/CN76,CN76,EME,,EXPEDITION,,,02/09
+W7EME/CN86,CN86,EME,,EXPEDITION,,,02/09
+W7EME/DN11,DN11,EME,,EXPEDITION,,,02/09
+W7EME/DN42,DN42WQ,EME,,EXPEDITION,,,03/09
+W7EME/DN53,DN53WV,EME,,EXPEDITION,,,03/09
+W7EME/EN17,EN17,EME,,EXPEDITION,,,03/09
+W7EW,CN84LV,,,ex W7AT N7AVK,,FT1000MP  144: 1-5KW,08/03
+W7FN,CN88SA,EME,,,,,11/03
+W7GJ,DN27UB,EME,,ex WA1JXN,,50: 4x 9el 1.5KW    144: 16x 17el 1.5KW  MGF1402,08/05
+W7GTM,CN87VU,,,,,,01/03
+W7GZ,DM42NF,,,,,,01/03
+W7ID,DN13UN,EME,,,,,01/02
+W7IUV,DN07DG,EME,,,,144: 4x 8el  500W  432: 33el  50W,04/06
+W7IXL,DM03US,,,,,,01/03
+W7JF,DN55RS,,,,,,01/03
+W7JW,EN82HJ,,,,,,01/03
+W7KK,DM18,EME,,Expedition,,144: 2 x 18XXX at 40'/50'  KW Output  FT847,04/01
+W7LD,DM78OV,,,,,,01/03
+W7MEM,DN17NT,EME,,ex N7EIJ,,50: 600W 9el - 144: FT726r  2002A 800W 4x5wl - 432: 800W 4x30lbx,09/01
+W7NS,DM33WP,,,,,,01/03
+W7NTF,CN87TB,,,,,50: 160W 6el - 144: 160W 13el,01/01
+W7OJT,DM26KB,EME,,,,,10/06
+W7PW,DM09JI,,,,,,01/03
+W7QX,DM44AR,EME,,,,1296: 10 1/2Dish 75Watt,03/04
+W7SZ,CN85UO,EME,,,,432: 4x32el X-pol 1.5KW - 1296: 3m dish  500W,01/00
+W7TVF,DM26,EME,,,,,01/03
+W7UPF,DM42MF,EME,,,,,08/05
+W7VQQ,DM19,EME,,,,,01/03
+W7VX,DM03TV,,,,,,01/03
+W7XU,EN13LM,,,,,144: 1-5KW,08/03
+W7ZRC,DN13,EME,,,,,01/03
+W8ATH,EN80,EME,,,,,01/03
+W8BYA,EN70JT,EME,,,,144: 2x 17elB2 650W Preamp,02/05
+W8CM,EM13,,,,,50: IC575H 800W 7el - 144: IC275H 800W 4x9el - 432: IC475H 500W 4x18el,01/02
+W8CRZ,EN80TB,,,,,,01/04
+W8DQ,EM79NC,,,,,,01/04
+W8HOM,EN71LA,,,,,,01/03
+W8IDU,EN83,EME,,,,,01/03
+W8ISS,EN82JG,,,KD4DLA,,,10/08
+W8KSE,EM80,,,,,,01/03
+W8LON,EN73JB,EME,,,,144:  2x 17el  400W,08/05
+W8MGJ,EM79,,,,,,01/03
+W8MM,EM79SD,,,,,,01/03
+W8MQW,EN72UR,EME,,,,,01/03
+W8OUD,EM79RJ,,,,,,01/03
+W8PAT,EN81VG,EME,,,,144: 350 watts 2x12 V or H,04/05
+W8SCA,EM79UN,,,,,,01/04
+W8TAH,EN91CD,,,,,,01/03
+W8TL,FM09BM,,,,,50: FT767 1KW 11el - 144: FT736 1KW 17B2,01/01
+W8TN,EM98AL,,,,,,10/07
+W8VHF,EN64,,,,,,01/03
+W8WN,EM77BQ,EME,,,,50: 600W 4el - 144: 1.2KW 4x16el KLM - 432: 10W,04/05
+W9BLI,EN64DP,EME,,,,144: 14db up 40  200 W   432:  17db  up 15  100 W,05/06
+W9BN,EM34TT,,,,,,01/03
+W9CGI,EN60WC,,,,,,01/03
+W9DWP,EN52,,,,,,01/03
+W9EQI,EM49,,,,,,01/03
+W9FF,EN40,,,
+W9FX,EM57MX,,,,,144: 1KW  17el,07/01
+W9FY,EN52,,,,,,01/03
+W9FZ,EN43,,,,,,01/03
+W9GIR,EN44OG,,,,,,01/03
+W9GKA,EM58CP,,,WB9GKA,,K1FO's at 65 feet   100W on all 4 bands,05/07
+W9GM,EN43JU,,,,,50: 100W 6el - 144: 100W 13el,05/02
+W9HLY,EN70NT,,,,,,01/03
+W9IIX,EN61DR,,,,,,01/03
+W9IP,FN24KO,,,,,,01/03
+W9JMS,EM69,,,,,,01/03
+W9JN,EN54DN,EME,,,,50: 1KW 9el m29khw- 144: 1KW M218XXX,12/07
+W9KFB,EN60,,,,,,01/03
+W9KHH,EN63AH,,,,,,01/03
+W9LT,EN52XG,,,,,,01/04
+W9NHE,EN53XB,EME,,,,144: 17el M2 400W,06/06
+W9NLP,EN52WN,,,,,,01/03
+W9NTP,EM79,,,,,,01/03
+W9NWR,EN55FW,,,,,,01/04
+W9RM,EN52RB,EME,,,,,10/07
+W9RPM,EN43JT,,,,,,05/07
+W9RVG,EM57RN,EME,,,,IC746  IC910H  FT736,06/07
+W9SE,EN90LM,,,,,,03/06
+W9VA,EN62,,,,,,01/03
+W9VNE,EM79,,,,,,01/03
+W9XA,EN51UT,EME,,,,144: 8x 13el 600W,10/06
+W9XT,EN53,,,,,,01/98
+W9ZIH,EN51NV,,,,,,01/03
+WA0AUQ,EN41,,,,,,01/03
+WA0BWE,EN34LX,,,,,,01/98
+WA0CQG,EN34,,,,,,01/03
+WA0DXZ,EN41,,,,,,01/97
+WA0ETH,EM38PH,,,,,,01/03
+WA0JDU,EN34,,,,,,01/03
+WA0JMP,EN34,,,,,,01/03
+WA0JYF,EN42,,,,,,01/03
+WA0KBZ,EM48HB,EME,,,,FT857D  144: 400W 17elB2,03/07
+WA0MWW,EN30VX,,,,,,01/04
+WA0NOK,EM28,,,,,,01/03
+WA0QII,CM97,,,,,,01/03
+WA0RDX,EM17,,,,,,01/03
+WA0RJT,EN41,,,,,,01/03
+WA0SJR,EM56,,,,,,01/03
+WA0TAQ,EN61QU,,,,,,01/04
+WA0VSL,DM79OB,,,,,50W,08/04
+WA0WPJ,EM29,,,,,,01/03
+WA0WQI,EM55AA,,,,,,01/03
+WA0WRI,EN10,,,,,,01/03
+WA1FVJ,FN31QS,,,,,144: 13B2 40W,08/04
+WA1HOG,FN42AS,,,,,144: 100W,01/01
+WA1JOF,FN44XV,EME,,,,,01/03
+WA1JXN,DN27UB,,,,,,01/03
+WA1MBA,FN32SL,,,,,,01/03
+WA1MEK,FN42,,,,,,01/03
+WA1MKE,EN70GH,,,,,,01/03
+WA1OFR,FN42MA,,,,,,01/01
+WA1T,FN43LK,EME,,,,144: 15el 500W,06/06
+WA1TMQ,FN31OJ,,,,,,01/03
+WA2ALV,FN33,,,,,,01/03
+WA2FGK,FN21BF,EME,,,,144: 4x 12el  1KW,12/08
+WA2FUZ,FN22XJ,,,,,,01/03
+WA2GFP,FN20,,,,,,01/03
+WA2JGY,DM79,,,,,,01/03
+WA2LSE,FN20,,,,,,01/03
+WA2LTM,FN20,,,,,,01/03
+WA2ODO,EM94NX,EME,,,,144: 4x 12el 300W,11/07
+WA2VOI,EN35JA,,,,,,01/03
+WA2YJF,FN30FR,,,,,,01/03
+WA3BZT,FM29EP,EME,,,,144: Flex-5000A GU78b 1.5KW  4x2MXP20,03/08
+WA3FFC,FN01,EME,,,,,01/03
+WA3KQA,EM98LL,,,,,,01/03
+WA3LTB,EN92TA,EME,,,,144: 100W 17el,04/07
+WA3RQD,FM19QK,,,,,,01/03
+WA3SIX,FN10UB,,,,,,01/03
+WA3TTS,EN90,,,
+WA3USG,FN10LL,,,,,,01/03
+WA4ALJ,EM63,,,,,,01/03
+WA4CHA,EL88QA,,,,,,01/03
+WA4CQG,EM72fo,,,
+WA4DFS,EM96,,,,,,01/03
+WA4EWA,EM63LL,,,,,,01/03
+WA4EWV,EM70CE,EME,,,,TS2000 144: 2x 17 element Yagi - QRO,10/08
+WA4HEI,EN65UX,,,,,,01/03
+WA4HFN,EM55AB,EME,,,,,08/05
+WA4JQS,EM77TA,,,,,144: 2x33el 2.5WL,08/01
+WA4LBT,EM95,EME,,,,,01/03
+WA4NJP,EM84DG,EME,,,,,03/05
+WA4PCS,EM78,,,,,,01/03
+WA4PGJ,EM55,,,,,,01/03
+WA4PGM,FM07TI,,,,,144. 170W 17el,01/98
+WA4VWR,EM55,,,,,,01/03
+WA4YRK,EM75WV,,,,,IC910 IC756,05/02
+WA4ZTK,EM85,EME,,,,,01/03
+WA5CJG,EM15,,,,,,01/03
+WA5DJJ,DM62PH,,,,,,01/03
+WA5ETV,EM15,EME,,,,,01/03
+WA5ICW,EM26,EME,,,,,01/03
+WA5IYX,EL09,,,,,,01/03
+WA5JAT,EM12ET,,,,,,01/03
+WA5JCI,EM21,,,,,,01/01
+WA5KBH,EM30HL,,,,,,01/03
+WA5NFC,EM45,,,,,,01/03
+WA5TKU,EM13II,,,,,,01/03
+WA5TNY,EM12,,,,,,01/03
+WA5UAJ,EM32,,,,,,01/03
+WA5UFH,EL19,,,,,,09/01
+WA5VKS,EM13PA,,,,,,01/03
+WA5WCP,EM12,,,,,,01/03
+WA5YOU,EM53EE,,,,,,01/03
+WA5YWC,EM13OB,,,,,,01/03
+WA5ZIB,EL29,,,,,,01/03
+WA6BJE,DM13,EME,,,,,01/03
+WA6BYA,CM86,,,,,,01/03
+WA6EIW,EM15DI,,,,,,01/03
+WA6ERB,DM79,,,,,,01/03
+WA6FXL,CM89OB,,,,,144: 9el 100W,09/06
+WA6GXF,DM06DX,,,,,,01/03
+WA6IJZ,DM44KM,,,,,,01/03
+WA6KBL,CM97AG,EME,,,,,01/03
+WA6KOU,DN17,,,,,,01/03
+WA6LHD,CM88XF,,,,,,01/97
+WA6OWM,DM03TU,,,,,50: 100W Loop - 144: 100W 15el,09/01
+WA6PXO,DM13DO,EME,,,,144: 2x 9el 200W,10/06
+WA6PY,DM13LA,EME,,,,144: 2x20el VE7BQH 700W,11/06
+WA6TTY,DM78,,,,,,01/03
+WA6UCT,DM34,,,,,,01/03
+WA6YGB,DM04WA,,,,,,01/03
+WA6ZKY,CM98,EME,,,,,01/03
+WA7ADK,DN31WD,EME,,,,,01/05
+WA7BJU,CN85,,,,,,01/05
+WA7CJO,DM33XL,EME,,,,,01/03
+WA7EPU,DM62,,,,,,01/03
+WA7GSK,DN13SO,EME,,,,144: 1KW 4x16el K1FO,11/06
+WA7HQD,DN31XA,,,,,,01/98
+WA7KHO,DN47,,,,,,01/03
+WA7SKT,CN86CX,EME,,,,,11/05
+WA7TZY,CN87,EME,,,,,12/00
+WA8CLT,EN80LA,EME,,,,144:  1500W  4x9M2,03/05
+WA8CXI,EM99WK,EME,,PSE QSL direct,,FT847 - 144: 2x 18el CC with max 68deg elevation  8877ampl with 1500W,04/06
+WA8EUU,EN82,,,,,,01/03
+WA8MIL,EN63,,,,,,01/03
+WA8NLC,EM73,,,,,,01/03
+WA8OGS,EM79,,,,,,01/03
+WA8RJF,EN91IQ,EME,,,,144: 17el 250W,03/05
+WA8VPD,EN82,EME,,,,,01/03
+WA8WZG,EN81OM,EME,,,,,01/01
+WA8YTB,EN72JH,,,,,,01/03
+WA9BTT,EN40,,,,,,01/03
+WA9BVS,EM69WV,,,,,,01/03
+WA9ENA,EN42,,,,,,01/03
+WA9FWD,EN53,EME,,,,,01/03
+WA9HCZ,EN43JV,,,,,,01/03
+WA9HIR,EN61CU,,,,,,01/03
+WA9HUV,EN51,,,,,,01/03
+WA9JML,EN51PW,,,,,,01/01
+WA9NBU,DM14JG,,,,,FT736R - Mirage 160W,05/07
+WA9NRB,EM48,,,,,,01/03
+WA9O,EN62BX,,,,,,01/03
+WA9OUU,EM89,EME,,,,,01/03
+WA9PAM,EN44,,,,,,01/03
+WA9PSI,EN51,,,,,,01/03
+WA9PZL,EM32DN,,,,,,01/03
+WB0CLL,EM28,,,,,,01/03
+WB0CQO,EN31,,,,,,01/03
+WB0DBS,EM17,,,,,,01/03
+WB0DGF,EN10PT,,,,,,01/03
+WB0DRL,EM18CT,EME,,,,,01/03
+WB0GAZ,DM79,,,,,,01/03
+WB0GGM,EN34,EME,,,,,01/03
+WB0HXY,EN10,,,,,,01/03
+WB0ITA,EM29,,,,,,01/03
+WB0IUT,EN10,,,,,,01/03
+WB0LJC,EN34JV,,,,,,01/03
+WB0MLL,EN35,,,,,,01/03
+WB0NCR,EN42,,,,,,01/03
+WB0OOL,EM48,,,,,,01/03
+WB0QGH,EM84,,,,,,01/03
+WB0QIY,EN10,,,,,,01/03
+WB0QQS,EN10,,,,,,01/03
+WB0SIP,EN10,,,,,,01/03
+WB0TEM,EN12RT,EME,,,,,10/05
+WB0VGI,EN34LL,,,,,,01/03
+WB0YFL,EN42,,,,,,01/03
+WB0YRQ,EN12,,,,,,01/03
+WB0ZJP,EM48,,,,,,01/03
+WB1FLD,FN42IW,,,,,,01/02
+WB1GQR,FN33KL,,,,,,01/04
+WB2BYP,FN13FF,EME,,,,144: 4x 9el 8877,07/05
+WB2LSP,FM29DP,,,,,,01/03
+WB2OYC,FM29NN,,,,,,01/03
+WB2QLP,EL96DE,,,,,50: 400W- 144: 400W- 432: 170W,01/01
+WB2RVX,FM29MT,EME,,,,144: 4XP20 700w    432: 28el  kW,10/08
+WB2SEB,FN31DD,,,,,144: 175W 13el - 222: 100W 10el,03/02
+WB2SIH,FN31DD,EME,,,,144: 13B2  800W  FT736R  SSB-preamp,09/06
+WB2SZR,FN20LL,,,,,144: 100W 16el,01/07
+WB2VVV,FN21,EME,,,,,01/00
+WB4AXQ,EM64,,,,,,01/03
+WB4BKC,EL96,EME,,,,,01/03
+WB4ECR,EM66QF,,,,,,01/04
+WB4EFZ,EM94,,,,,,01/03
+WB4GTB,EM73VW,,,,,,01/03
+WB4JEM,EL89QU,,,,,50: 6elQuad 500W - 144: 16x10el preamp 1-5KW - 222: 17el 160W - 432: 24el 500W,01/01
+WB4KMH,EM75RV,,,,,,01/01
+WB4LHD,EM55DB,EME,,,,,02/05
+WB4NFS,FM18HP,,,,,144: 400W,01/97
+WB5AFY,EM04ID,EME,,,,,02/05
+WB5APD,EM84AK,,,,,144: 1.5kw  17 el,01/01
+WB5DSH,EM15,,,,,,01/03
+WB5IPM,EM12,,,,,,01/03
+WB5KDC,EM15,,,,,,01/03
+WB5KYK,EM51JQ,,,,,,01/03
+WB5LBT,EM40LK,EME,,= W5LBT,,,01/01
+WB5NIF,EM42AM,,,,,,01/03
+WB5R,DM93PB,,,,,,01/09
+WB5ROR,EM23,,,,,,01/03
+WB5TBL,EM12,,,,,,01/03
+WB5TCO,EN64,,,,,,01/03
+WB5VPC,EM12,,,,,,01/03
+WB6WLR,DM13AT,,,,,144: 8877  2x17B2  - 432: 8938 2xFO33,01/01
+WB7OSE,CN87XT,,,,,,01/03
+WB7UNU,CN85OJ,EME,,,,144:  170W  17el,11/05
+WB8AGV,EN34,,,,,,01/03
+WB8IFM,EM79WS,,,,,,01/03
+WB8NUT,EM79UB,,,,,,01/03
+WB8SKP,EN66UC,,,,,,01/04
+WB8TFV,FM19AL,,,,,,01/03
+WB8TGY,EN72PP,EME,,,,144:  13B2 antenna,03/05
+WB8WTB,EN72,,,,,,01/03
+WB8XX,EM79,,,,,,12/00
+WB9BWP,EN52,,,,,,01/03
+WB9F,EM57QQ,,,,,ICOM 756 PRP III,10/05
+WB9HLM,EN52IW,,,,,,01/03
+WB9IHS,EM69,,,,,,01/03
+WB9IIV,EM69ST,EME,,,,144: 11el 150W,02/06
+WB9OGM,EN61,,,,,,01/03
+WB9OQB,EN44WP,,,,,FT 817,05/08
+WB9OWN,EN52,,,,,,01/03
+WB9PNU,EM48TN,EME,,,,144: Antenna: 4x M2 2M9   Icom 756Pro DEMI Transverter  Lunar Link LA22,09/07
+WB9SNR,EN62AC,,,,,,01/03
+WB9SPT,EN71AS,,,,,,01/03
+WB9USX,EM79,,,,,,01/03
+WB9UWA,EN50KK,EME,,,,144: 4x UWA12's 18.5 dbd low temperature  MC2K 2x GU74B's  MGF1302,10/00
+WB9ZAI,EN61GM,,,,,,01/03
+WC4N,EM86,,,
+WC9C,EM69HH,,,,,,01/03
+WD0AAD,DM79,,,,,,01/03
+WD0ALN,EM32,,,,,,01/03
+WD0APF,EN10,,,,,,01/03
+WD0BQM,DN81CW,,,,,,01/03
+WD0CJM,EN25FH,,,,,,01/03
+WD0EDO,EN10TL,,,,,,01/03
+WD0FCH,EM48,,,,,,01/03
+WD0GML,EM48,,,,,,01/03
+WD0HOJ,EN41,,,,,,01/03
+WD0L,EM17IH,,,,,,01/03
+WD0M,DM67KG,,,,,,01/04
+WD4ECK,CN82,,,,,,01/03
+WD4FAB,EL98HP,,,,,,01/03
+WD4KPD,FM15MM,,,,,,05/02
+WD4MUO,DM79GX,,,,,,01/03
+WD4OZN,EM55LK,,,,,,01/03
+WD5AGO,EM26BD,EME,,,,,03/00
+WD5CAN,EM36,,,,,,01/03
+WD5CAP,EM36,,,,,,01/03
+WD5DJT,EM12OO,,,,,,01/03
+WD5EAE,EM22KQ,EME,,,,FT-847,11/07
+WD5EWD,EM22,,,,,,01/03
+WD5G,EM05,,,,,,01/03
+WD6BXE,DM22,,,,,,01/03
+WD6DBM,CM97AI,EME,,,,144: 2x 17el 500W,10/06
+WD8BYA,FM18IP,,,,,,01/03
+WD8SDL,EM79,,,,,,01/03
+WD9BGA,EN53BA,,,,,,01/03
+WD9EGE,EN64,,,,,,01/03
+WD9EXD,EN61,,,,,,01/03
+WD9FBL,EN61BV,,,,,,01/03
+WD9IIX,EN61,,,,,,01/03
+WE2Y,FN02SR,EME,,,,,01/03
+WE4K,EM77BQ,,,,,,01/03
+WE7L,DM41,,,,,,01/03
+WE7P,DN13RP,EME,,,,,01/03
+WE9D,EN52,,,,,,01/03
+WE9V,EN52XN,,,,,,07/08
+WE9Y,EN82EW,EME,,,,IC910H  LA22  AM6155  144: 2x 18el 1500W,04/07
+WF1F,FN42,,,,,,01/03
+WF1R,FN32,,,,,,01/03
+WF4R,FM16TS,,,,,,01/03
+WF9M,EM79,,,,,,01/03
+WH6LR,EM04LL,,,,,,01/03
+WI7P,DN40ER,EME,,,,144: 2x 11el  1000W,11/06
+WJ6T,DM05HL,EME,,,,144: 4x 9el  500W and new 7/8,04/07
+WK9E,EN53,,,,,,01/03
+WL7M,BO49IR,,,,,,01/03
+WL7U,BP51,EME,,,,50: 150W 5el - 144: 300W 2x10el - 432: 900W- 6x20el,01/98
+WM2Z,FN31SA,,,,,IC-746PRO TS-850SAT,10/07
+WM5Y,EN31,,,,,,01/03
+WN3CDW,FN11XB,EME,,,,50 MHZ: 1200 Watts 5 Element M2 6M5X Yagi,08/08
+WN4BML,EL89LL,,,,,,01/03
+WN4KKN,EM10,,,,,,01/03
+WN4M,EM66,,,,,100W,01/04
+WO9S,EN61ET,EME,,,,144: 13el 140W,10/06
+WP4G,FK68VG,EME,,,,144: 1KW 2x2MX28P,08/05
+WP4O,FK68,,,,,144: FT736r 400W 18ft langyagi preamp,01/01
+WQ0P,EM19VF,,,,,,09/01
+WQ5S,EM13RC,EME,,EX KA5UIQ KF5FQ,,144:  FT847  4x2M12el 1500 432: 1x31 50W,04/07
+WQ5W,EM12FW,EME,,,,TS2000,09/06
+WR0F,EM29TC,,,,,,01/03
+WR0I,EM17,,,,,,01/03
+WR6S,DM14CP,,,,,,01/03
+WR9W,EM68FA,,,,,,01/03
+WS5R,DM95,,,,,,01/03
+WT0W,EN34,,,,,,01/03
+WU8Y,EN82JW,,,KC8DQH,,,07/07
+WV0K,EN13,,,,,,01/03
+WV1K,FN41WR,,,,,,01/05
+WV2C,FN30,,,,,144: IC706 180W 15el,01/98
+WW2R,EM13QD,EME,,,,,04/06
+WW4T,EM83,,,,,,01/03
+WW8M,EN72XF,EME,,,,144: 4x 18 M2XXX  1KW,03/07
+WX9M,EN54FL,,,,,,01/03
+WY0C,EM17IT,,,,,,01/03
+WY0V,EN12,,,,,,01/98
+WY3G,EM55,,,,,,01/03
+WY5R,DM95BE,,,,,TS2000,06/08
+WZ1V,FN31MP,,,,,50: 600W 5el - 144: 1kw 17el - 222: 500W 15el - 432: 500W 24el,05/07
+WZ8D,EM89BI,,,ex WB8IGY,,50: 1.5KW 6el - 144: 1.5KW 2x 17el,03/06
+WZ9D,EN51,,,,,,01/03
+XE1AVM,DK79UA,,,,,,01/03
+XE1GE,EK08,,,,,,01/03
+XE1GRR,DL80IP,EME,,,,50:  4x 6 el  -  144: FT736 2x 17el H+V  250W  - 432: 4x 33el H+V,09/06
+XE1XA,EK09,EME,,,,,01/03
+XE2AT,DL81UU,EME,,ex XE2YVW,,144: IC820 400W 4x 9el,01/07
+XE2NS,EL05AG,EME,,,,144: 2x 17el 160W,11/08
+XE2OR,DL98OK,,,,,144: 13B2 160W,08/05
+XF4DL,DK48MS,EME,,SpecialCall,,144: 2x 11el 350W,10/06
+YB0US,OI33JU,,,,,,01/03
+YL1A,KO07UN,,,Expedition,,,05/03
+YL27HF,KO27VC,,,SPECIALCALL,,,09/07
+YL2AO,KO16DK,,,,,,08/07
+YL2GJW,KO06MM,,,AS WELL KO06RM,,TS2000x  TE-1452g(400W)  2xEF208 (vert stack)  9el Yagi for additional rx,12/08
+YL2GUI,KO06MM,,,,,144: TS-570+FTV-250 9el 30W,03/04
+YL2HA,KO26BV,EME,,,,144: 4x 16el 400W,08/08
+YL2IV,KO06MM,,,UQ2IV,,FT-817D  144: 7el QYAGI  432: 11el QYAGI,04/08
+YL2KA,KO26AX,,,,,,03/02
+YL2LW,KO26CW,,,,,,07/05
+YL2OK,KO37AS,,,,,,11/04
+YL2OW,KO26WL,,,ex UQ2OW,,FT736R  IC706MKIIG,01/05
+YL3DW,KO26CW,,,,,,11/02
+YL3GCT,KO26BW,EME,,,,432: 8x9el DK7ZB  180W,11/05
+YL3GDF,KO26XM,EME,,,,144: 8x 13el 1KW,03/07
+YL3GDJ,KO26AX,,,,,,01/05
+YL3GDR,KO26HT,EME,,,,,03/07
+YL3HA,KO26DW,,,,,,12/07
+YL90HA,KO26BV,EME,,SPECIALCALL,,,10/08
+YM3XC,KN30FC,,,Expedition,,,11/02
+YO0IS,KN05PS,,,SpecialCall,,,01/93
+YO2AMU,KN06OC,EME,,,,144: 4x16el MGF1302 1KW  432: 4x 21el 1KW,08/05
+YO2BBT,KN05WG,,,,,144:  FT897 300W 10el,12/08
+YO2IS,KN05PS,EME,,,,144: 4CX250B 10el BF981 -  432: 4X150D 17el 3SK97,01/06
+YO2KQT,KN05PS,,,,,FT-847  50W  1xF9FT 3WL,09/07
+YO2LEA,KN06WK,,,,,144: IC-211  lin.Mirage B 215G  -  6m and 70 cm transverters,03/01
+YO2NAA,KN05OS,,,YO5QCF,,FT-847 8EL Yagi,05/08
+YO3DMU,KN34BJ,EME,,,,144:  TS870 +Trsv 1KW MGF1302 16el,03/07
+YO3FFF,KN34CJ,EME,,,,144: TS450 Trvtr 100W B-310G GaAs Preamp 16el Tonna,04/05
+YO3IZI,KN34BK,EME,,,,TS2000,01/04
+YO3JW,KN34CK,,,,,144: 400W  16el F9FT  3P602A-2,04/00
+YO3KWJ,KN24,,,Expedition,,,01/93
+YO4AUL,KN44HE,EME,,,,144: FT897 200W  1x16el 10m boom,04/07
+YO4BZC,KN45AK,,,,,IC 706  5 el  delta loop  HM PA 70W,07/05
+YO4FEI,KN45NB,,,,,144: 50W 9el,11/06
+YO4FNG,KN44HD,EME,,,,144:FT847/MGF1302/12 el. DK7ZB/GS35   432:16 el. DL6WU/50W   1296: DB6NT/20W  15 el. DL6WU,05/08
+YO4FYQ,KN44HE,EME,,,,FT-847  50: 100W 5el 7ZB - 70: 25W 5el 7ZB - 144: 10el 7ZB 700W - 432: 50W 13el,05/06
+YO4GJH,KN35XG,,,,,FT 847  MIRAGE B2518G  2xGI7b  DK7ZB  14 el.,10/07
+YO4KRB,KN44HE,EME,,,,144: 400 W  10 el 7ZB  FT 847  MGF 1302,01/06
+YO4RFV,KN45AK,,,,,,08/02
+YO4RXX,KN45AK,,,,,,07/03
+YO5AVN,KN34,,,,,,01/93
+YO5BIM,KN07XB,,,,,,05/04
+YO5BIN,KN17WW,EME,,,,HM Transverter + TS 140  800W  4x 9el F9FT  MGF1302,05/07
+YO5BWD,KN27GD,,,,,,08/00
+YO5CFI,KN16WJ,,,,,FT857D  HF PSK: 40W  50 MHz: 100W dipole  144 MHz: 150W 2x9el TONNA,06/09
+YO5CXI,KN16WJ,,,,,144: 50W  2x 9el,10/06
+YO5DJM,KN17,EME,,,,,01/93
+YO5KAI,KN16TE,EME,,,,,06/99
+YO5KAV,KN16TS,EME,,,,,06/99
+YO5KUW,KN17UL,,,Expedition,,,08/06
+YO5OCZ,KN17UL,,,,,TS 2000 X   TS 700 S  TS 820 + TV 502  QRO GI7B,03/09
+YO5OHY,KN17SP,,,,,,12/06
+YO5TE,KN16TS,EME,,,,144: 1KW 4x10el MGF1302,01/02
+YO5TP,KN16SS,,,,,144: 40W  16el,05/06
+YO7CGS,KN15OA,,,,,,08/97
+YO7CKQ,KN15OA,,,,,,05/01
+YO7HLI,KN25EC,,,,,,08/08
+YO7IV,KN24MT,,,,,144: TS850 + Tcvr  2x4CX250b  800W  15el 9BV,05/03
+YO7NE,KN25EC,EME,,,,FT857 144: 100W 2x17el F9FT,01/08
+YO7VS,KN14VH,,,,,50: 2XQB3/300 2xBF981 5el LY J-Pol crossdipole - 144: 2x4CX250b CF300 Swan/Swan,10/98
+YO7VT,KN25EC,EME,,,,,12/08
+YO8BCF,KN36KN,EME,,,,TS2000X 4x 10el 1KW,04/07
+YO8BSE,KN36EW,,,,,,10/95
+YO8CLN,KN27QG,,,,,,08/08
+YO8CYN,KN36LW,,,,,,08/01
+YO8RHI,KN37TE,,,,,,07/05
+YO8RTS,KN27SM,,,,,144:FT847  11 el  f9ft  150 W RF Concepts,01/07
+YO8TNA,KN37EW,,,,,,05/08
+YO8TNB,KN37EW,,,,,,06/09
+YO9FRJ,KN34AW,EME,,EX YO4FRJ,,144: 2 x3CPX800 + 4x17B2 + MGF1801 - 432: 50W 18el. Yagi CPol - SAT - 1296: 4 x 67el + FT736,03/08
+YO9HP,KN35BA,EME,,,,,09/07
+YP0A,KN27GD,,,Expedition,,,01/92
+YP2U,KN05OS,,,,,,05/08
+YR0A,KN16TS,EME,,Expedition,,,06/99
+YR5A,KN16TS,EME,,Expedition,,,06/99
+YR99E,KN34,,,Expedition,,,08/99
+YT1VP,JN94XC,,,,,TS440  FT225,08/08
+YT1VV,JN94US,,,ex YU1VG,,,07/00
+YT1W,JN91,,,Expedition,,,01/90
+YT2ACA,KN03WE,,,,,FT-221r,05/08
+YT3I,KN05HP,EME,,EX YU7EW,,144:  500Watt 4x 9el  MGF1302,01/09
+YT4D,JN94CP,,,,,144: 250W 11el,08/00
+YT6A,JN92,,,,,,08/06
+YT7AC,JN95,,,,,,03/97
+YT7C,KN05FJ,,,YU7AAA  4O9T,,144: GS35B  4x10+2x10 el BVO 3WL,11/08
+YT7G,JN94XC,,,= YU7GOL,,144:  MGF1302  GS35B  4x10el + 2x10el BVO-3wl,07/06
+YT7W,KN05QD,,,,,,08/08
+YT7WA,KN05EJ,,,SpecialCall,,144: 1KW  4x4el Loop  11el WU  MGF1302,12/01
+YU0TESLA,KN03QM,EME,,SpecialCall,,144: 16 x 7el Yagi (by Dual) full elevation  25dBi  1.5Kw  MGF1302,04/06
+YU150CF,KN03QM,EME,,SpecialCall,,144: 16 x 7el Yagi (by Dual) full elevation  25dBi  1.5Kw  MGF1302,04/06
+YU150FU,KN05DK,,,SPECIALCALL,,,07/06
+YU1ADN,KN03KN,,,,,,06/96
+YU1AFS,KN04FT,,,,,,01/92
+YU1AGP,KN03WE,,,,,FT-221R,07/07
+YU1AZK,KN04,,,,,144: 25W 2x11el,10/98
+YU1BT,KN03KN,,,,,,07/06
+YU1BW,KN04GT,,,,,,04/02
+YU1CF,KN03QM,EME,,ex YU1OYA,,IC746PRO  50: 4x 6el Yagi  1KW  preamp  144: 1500W  16x 7el Yagi MGF1302,11/06
+YU1EU,KN04DW,,,,,,08/98
+YU1EV,KN04CN,,,,,,04/06
+YU1EXY,KN04FT,,,,,144: FT225rd  350W  16el F9FT  MGF1302,01/02
+YU1HFG,KN02XX,,,,,,12/95
+YU1IO,KN04IQ,,,,,144: 600W  4x17el,11/97
+YU1JB,KN04GT,EME,,EX YU1PTB,,144: 4x 10el  500W,12/07
+YU1L,KN02XX,,,,,,12/95
+YU1LA,KN04FR,,,,,144: IC910  17B2 LY,10/05
+YU1MS,KN04ET,,,,,,11/07
+YU1OO,KN02XX,,,,,,01/93
+YU1OS,KN04FS,,,,,144: FT225rd 100W 2x9el MGF1302,11/99
+YU1S,JN94US,,,,,144: 17el  400W,11/97
+YU1WP,JN94OM,,,,,,07/96
+YU1ZF,KN03IR,,,,,,01/91
+YU3LT,KN05HP,EME,,YZ7RLT  YT7RLT,,YAESU FT225RD,01/08
+YU4AR,JN94AS,,,= 4O4AR,,144: TR9130 250W 10el PA0MS-ant Preamp,11/02
+YU6AO,JN92,,,,,,08/06
+YU7AA,JN95NS,EME,,ex YU1NOK,,TS850 - 144: 4x 10el 7ZB 500W - 432: 2x 2x 22el,04/06
+YU7AAA,KN05FJ,,,YT7C  4O9T,,144: GS35B  4x10+2x10 el BVO 3WL,11/08
+YU7ACO,KN05QC,,,,,144: FT221r  PA 200W  2x 10el. DJ9BV,08/00
+YU7AJH,JN95WF,,,,,,01/90
+YU7AR,KN05BW,,,ex YU7PXB,,IC745- FT225RD- 144: 4x5wl MGF1412 YL1056,12/01
+YU7AS,KN05DJ,,,,,144: 150W 8x 6el Loop,08/05
+YU7AU,KN04HV,,,,,144: 250W 2x11el,12/01
+YU7AZX,KN04AX,,,,,,08/03
+YU7BCL,KN05FW,,,,,,12/97
+YU7BCX,KN05HP,,,,,,08/96
+YU7CV,JN95WK,,,,,,01/95
+YU7EF,KN04HV,EME,,EX YU7PFR,,FT847,01/09
+YU7FF,KN05EP,,,,,,01/94
+YU7FU,KN04,,,EX YU7MJA,,,05/07
+YU7GOL,JN94XC,,,= YT7G,,144:  MGF1302  GS35B  4x10el + 2x10el BVO-3wl,03/06
+YU7KB,JN94XX,,,,,144: IC202  2x11el  800W Preamp (MGF1302),02/04
+YU7MS,KN05EF,,,,,144: 400/1KW  2x11el WU  MGF1302,11/08
+YU7ON,KN04AX,,,,,144. TR751 4x11el  25W,08/00
+YU7PAA,KN04AX,,,ex YZ7MON,,MGF1302  GS35B  11el Yagi,12/07
+YU7PS,KN05FJ,,,,,144: 400/1KW  2x11el WU  MGF1302,11/08
+YU7VA,KN05EJ,,,,,144: 100Watt  11el  BFT 66,05/00
+YU7XL,JN95NT,EME,,YU2JL  YU2RTU,,FT897  50: 100W 8el yagi   144: 1000Watt 16x8 yagi my design  MGF1802,10/08
+YV5KXE,FK60NM,EME,,,,144: 11el Yagi 150W,06/06
+YV5LIX,FK60NM,EME,,,,IC-275H  FT-100D  TS-600  200W 18db Antenna,04/05
+YV5ZZ,FK60SM,EME,,,,,01/05
+YZ1DO,KN04ER,,,,,,08/99
+YZ1KU,KN04EU,,,,,144: 10W  9el F9FT,05/03
+YZ7UN,KN05EI,,,,,144: 4x6el Loop  100W,01/01
+Z30B,KN01PA,EME,,,,144: 1-5KW  4xYU0B (17-5db) MGF1302,08/00
+Z31DX,KN11GD,,,ex YT5G,,,06/99
+Z35Z,KN11CR,EME,,EXZ32UC YU5UC  - QSLS VIA DL8EBW,,144: IC202 500W  4x4el Loop  MGF1302  432: 15W   1296: 10W,11/07
+Z37CEF,KN01QA,,,ex YU5CEF,,,11/99
+Z38C,KN01QX,,,EX HA1CA,,FT847,10/07
+Z38R,KN12AG,,,,,FT847,10/07
+ZA0DXC,KN01,,,Expedition,,,01/91
+ZB0W,IM76HE,,,Expedition,,,01/93
+ZD8B,II22TB,EME,,= W1MRQ,,144: 4x 5el 180W,11/08
+ZK1EME,BG08CT,EME,,EXPEDITION,,144: 2x 3.2wl X-Pol yagis 8877 1.5KW,01/08
+ZL1BT,RF73LC,EME,,,,144: 12el 400W,03/06
+ZL1IU,RF64VR,EME,,,,144: 4x12el 1.2KW,10/05
+ZL1PE,RF74DG,,,,,,01/03
+ZL1RS,RF64VS,EME,,,,,09/08
+ZL1WN,RF73HG,EME,,,,144: 4x 18el 400W,06/06
+ZL2DX,RE78RR,EME,,ZL4OY ZL4OY/A ZL4OY/C ZL7OY ZM8OY ZL8OY,,144: 4x 10el 500W full elevation  - 432: 18el 100W,04/07
+ZL3AAD,RE66GR,EME,,,,,01/03
+ZL3AAU,RE66EL,EME,,,,,06/07
+ZL3CU,RE66GL,EME,,,,144: 250W 2 by 12 element,03/07
+ZL3NW,RE66HO,EME,,,,,03/05
+ZL3TY,RE57OM,EME,,,,,05/05
+ZP4KFX,GG15LV,,,,,,03/01
+ZR1ADI,JF95KU,,,,,,01/02
+ZR1AEE,JF96IA,,,,,,01/02
+ZR1EV,JF96IC,,,,,50: FT690r  200W  4el,11/96
+ZR1L,JF96HD,,,,,,10/02
+ZR1TRD,JF96HC,,,,,,01/02
+ZR1WZ,KF05QP,,,,,,01/04
+ZR2DX,KF26,,,,,,02/02
+ZR5ADQ,KG50IA,,,,,,01/02
+ZR6ABU,KG33XV,,,,,,01/03
+ZR6CRW,KG33,,,ex ZR6ABU,,,10/02
+ZR6DXB,KG33XX,,,,,,10/02
+ZR6GE,KG43AR,,,,,,10/02
+ZR6KHJ,KG43CU,,,,,,02/02
+ZS1EK,JF95FU,,,,,,01/02
+ZS1LS,JF96FD,EME,,,,IC-910H,05/09
+ZS2ACP,KF26SA,EME,,,,144: 2x 8el 150W,12/07
+ZS2BWB,KF26TD,,,,,,02/02
+ZS2GK,KF47KT,EME,,S83X,,Icom IC-746Pro  Yaesu FT-847,03/09
+ZS4JJ,KG30FV,EME,,,,Kenwood TR900 144: 16el 60W,10/08
+ZS4KB,KG32,,,,,,10/02
+ZS4NS,KG32IA,,,,,50: IC551D 6el  80W -  QSL via N7RO,02/01
+ZS4TX,KG30BW,,,,,,01/02
+ZS5AV,KF69GX,,,,,,01/03
+ZS5DJ,KG59AA,,,,,,01/02
+ZS5LEE,KG50JF,EME,,,,IC821  706MKIIG  144: 4x 2m18XXX  QRO  432: 2x 27el 100W,04/05
+ZS5Y,KF59JR,EME,,,,1296: 3.7m dish  50W,08/05
+ZS6AVP,KG44OD,,,,,,05/02
+ZS6AXT,KG33VV,EME,,,,,03/05
+ZS6BTE,KG33XV,EME,,,,144: 2x 4wl Yagis 100W,08/05
+ZS6BUN,KG43CU,EME,,,,144: 12el 300W,06/06
+ZS6DTS,KG43AR,,,,,,10/02
+ZS6EGB,KG43BQ,,,,,,10/02
+ZS6GER,KG33,,,,,,02/02
+ZS6GPM,KG33XU,,,,,,10/02
+ZS6HS,KG33XR,,,,,,01/02
+ZS6JDE,KG44DG,EME,,,,144: 2x 9el  400W,08/06
+ZS6JON,KG33VV,,,,,,10/02
+ZS6JR,KG44,EME,,,,,07/05
+ZS6MRK,KG34XH,EME,,,,144: 400W 2M7,03/06
+ZS6NK,KG46RC,EME,,ex ZS6PJS,,144: 2x 13wl  120W,09/05
+ZS6OB,KG44DE,EME,,,,144: 4x 16el 300W,01/07
+ZS6RAD,KG44CA,,,,,,10/02
+ZS6UT,KG44EF,,,,,,01/02
+ZS6WAB,KG46RC,EME,,,,144: 8x 17el 350W,09/06
+ZS6WB,KG44DH,EME,,,,144: 2x9 el 350W,11/06
+ZS6WI,KG46RC,,,,,,01/03
+ZS6Y,KG33WU,,,,,,02/02
+ZZZZZZ,End-Of-Call3-Database 2009-07-01 01:15:53 UTC VHF-DATABASE Export � 2009 by DG2KBC & DL8EBW
+
+
+
+
+
+
+
+
+
diff --git a/q65w/resources/README.qthid.txt b/q65w/resources/README.qthid.txt
new file mode 100644
index 000000000..4210d0625
--- /dev/null
+++ b/q65w/resources/README.qthid.txt
@@ -0,0 +1,22 @@
+QTHID INFORMATION
+
+Qthid is simple cross platform controller application for the Funcube Dongle
+Pro and Pro+ software defined radio receivers.
+
+Author........: OZ9AEC
+License.......: GNU General Public License
+Site..........: http://www.oz9aec.net/index.php/funcube-dongle/qthid-fcd-controller
+Source........: http://sourceforge.net/projects/qthid/files
+Yahoo Group ..: https://uk.groups.yahoo.com/neo/groups/FCDevelopment/info
+
+The qthid folder contains two binaries:
+
+* qthid-4.0.exe
+* qthid-4.1.exe
+
+QTHID 4.0 is the current stable providing full support for the Funcube Dongle
+API available with firmware 18f or later.
+
+QTHID 4.1 is an updated version that supports the new Funcube Dongle Pro+
+devices. This does not work with the original Funcube Dongle Pro!
+
diff --git a/q65w/resources/qt.conf b/q65w/resources/qt.conf
new file mode 100644
index 000000000..e69f24eba
--- /dev/null
+++ b/q65w/resources/qt.conf
@@ -0,0 +1,2 @@
+[Paths]
+Plugins = .
diff --git a/q65w/resources/qthid/AUTHORS.qthid.4.1.txt b/q65w/resources/qthid/AUTHORS.qthid.4.1.txt
new file mode 100644
index 000000000..e3f10328c
--- /dev/null
+++ b/q65w/resources/qthid/AUTHORS.qthid.4.1.txt
@@ -0,0 +1,16 @@
+Original work by Howard Long, G6LVB.
+Current maintainer: Alexandru Csete, OZ9AEC.
+
+Contributors:
+- Mike Willis G0MJW and David Barber
+- Mario Lorenz DL5MLO
+- Andrew Elwell
+- Mike K0ZAP (OSX Lion fix)
+
+The frequency controller was taken from Cutesdr by Moe Wheatley.
+
+Application icon by ~DarKobra at Deviantart.
+Source: http://commons.wikimedia.org/wiki/File:Radio.svg
+
+Other icons were taken from the GNOME desktop theme and the Tango theme.
+
diff --git a/q65w/resources/qthid/AUTHORS.qthid4.0.txt b/q65w/resources/qthid/AUTHORS.qthid4.0.txt
new file mode 100644
index 000000000..e3f10328c
--- /dev/null
+++ b/q65w/resources/qthid/AUTHORS.qthid4.0.txt
@@ -0,0 +1,16 @@
+Original work by Howard Long, G6LVB.
+Current maintainer: Alexandru Csete, OZ9AEC.
+
+Contributors:
+- Mike Willis G0MJW and David Barber
+- Mario Lorenz DL5MLO
+- Andrew Elwell
+- Mike K0ZAP (OSX Lion fix)
+
+The frequency controller was taken from Cutesdr by Moe Wheatley.
+
+Application icon by ~DarKobra at Deviantart.
+Source: http://commons.wikimedia.org/wiki/File:Radio.svg
+
+Other icons were taken from the GNOME desktop theme and the Tango theme.
+
diff --git a/q65w/resources/qthid/LICENSE.txt b/q65w/resources/qthid/LICENSE.txt
new file mode 100644
index 000000000..94a9ed024
--- /dev/null
+++ b/q65w/resources/qthid/LICENSE.txt
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/q65w/resources/qthid/NEWS.qhid-4.0.txt b/q65w/resources/qthid/NEWS.qhid-4.0.txt
new file mode 100644
index 000000000..a4637e8e3
--- /dev/null
+++ b/q65w/resources/qthid/NEWS.qhid-4.0.txt
@@ -0,0 +1,64 @@
+Changes in version 4.0:
+
+- New layout with IF, IQ and firmware controls hidden by default.
+- New frequency controller widget.
+- Support for up- and downconverters
+
+
+Changes in version 3.2:
+
+- Switch to using hidraw driver on Linux 2.6.38 or later (fixes crashes
+  experienced on recent Linux with libusb-1.0.9).
+- Update HID API.
+- Reduce widow width.
+
+
+Changes in version 3.1:
+
+- Support for Mac OS X 10.7 Lion
+- Support for Bias-T with firmware 18h and later.
+- Allow user to force band selection to be different from the one chosen
+  by the FCD (temporary workaround for a FW 18f bug occurring at 861 MHz).
+- Change default value of IQ gain correction from 0.0 to 1.0.
+- Use correct FCD command for setting IQ phase correction (GH-5).
+- Various fixes for windows build using latest SDK (7.0).
+- Removed RSSI indicator since it is unlikely that it will ever work.
+
+
+Changes in version 3.0:
+
+- Implement full API in firmware 18f (thanks Mario Lorenz, DL5MLO).
+- Requires firmware 18f or later (earlier firmwares are not detected).
+- Added auto-repeat to tuning buttons (click and hold the button to scan).
+- Added new RF chain diagram.
+- Show firmware version in status message.
+
+
+Changes in version 2.3:
+
+- No code changes, just a Mac OS X build.
+
+
+Changes in version 2.2:
+
+- Use native toolbar and status bar on Mac OS X
+- New application icon based on SVG drawing
+- Correctly set application and bundle icon on Mac OS X and Windows
+- Minor UI tweaks.
+- Fix qthid.pro to allow correct build on Ubuntu 9.04 (thanks EA4FVS).
+- Correct application name in file headers (thanks Andrew Elwell)
+
+
+Changes in version 2.1:
+
+- Various fixes and workarounds to prevent crash and freeze when switching
+  between application and bootloader mode. The application can now run with or
+  without FCD (hotplug). Upgrade and verify firmware have been tested on Linux
+  (32 and 64 bit) and OSX 10.6.
+- Updated HID API to hidapi/master from 2011-02-17
+- Retrieve libusb configuration on Linux using pkg-config
+- Remove local Qt Creator configuration from distribution
+- Improvements to the UI layout and widgets
+- Added application icon
+- Applied GPL V3 license
+
diff --git a/q65w/resources/qthid/NEWS.qthid-4.1.txt b/q65w/resources/qthid/NEWS.qthid-4.1.txt
new file mode 100644
index 000000000..426dff77b
--- /dev/null
+++ b/q65w/resources/qthid/NEWS.qthid-4.1.txt
@@ -0,0 +1,64 @@
+Changes in version 4.1:
+
+- Special release with Funcube Dongle Pro+ support.
+
+
+Changes in version 4.0:
+
+- New layout with IF, IQ and firmware controls hidden by default.
+- New frequency controller widget.
+- Support for up- and downconverters.
+
+
+Changes in version 3.2:
+
+- Switch to using hidraw driver on Linux 2.6.38 or later (fixes crashes
+  experienced on recent Linux with libusb-1.0.9).
+- Update HID API.
+- Reduce widow width.
+
+
+Changes in version 3.1:
+
+- Support for Mac OS X 10.7 Lion.
+- Support for Bias-T with firmware 18h and later.
+- Allow user to force band selection to be different from the one chosen by
+  the FCD (temporary workaround for a FW 18f bug occurring at 861 MHz).
+- Change default value of IQ gain correction from 0.0 to 1.0.
+- Use correct FCD command for setting IQ phase correction (GH-5).
+- Various fixes for windows build using latest SDK (7.0).
+- Removed RSSI indicator since it is unlikely that it will ever work.
+
+
+Changes in version 3.0:
+
+- Implement full API in firmware 18f (thanks Mario Lorenz, DL5MLO).
+- Requires firmware 18f or later (earlier firmwares are not detected).
+- Added auto-repeat to tuning buttons (click and hold the button to scan).
+- Added new RF chain diagram.
+- Show firmware version in status message.
+
+
+Changes in version 2.2:
+
+- Use native toolbar and status bar on Mac OS X
+- New application icon based on SVG drawing
+- Correctly set application and bundle icon on Mac OS X and Windows
+- Minor UI tweaks.
+- Fix qthid.pro to allow correct build on Ubuntu 9.04 (thanks EA4FVS).
+- Correct application name in file headers (thanks Andrew Elwell)
+
+
+Changes in version 2.1:
+
+- Various fixes and workarounds to prevent crash and freeze when switching
+  between application and bootloader mode. The application can now run with or
+  without FCD (hotplug). Upgrade and verify firmware have been tested on Linux
+  (32 and 64 bit) and OSX 10.6.
+- Updated HID API to hidapi/master from 2011-02-17
+- Retrieve libusb configuration on Linux using pkg-config
+- Remove local Qt Creator configuration from distribution
+- Improvements to the UI layout and widgets
+- Added application icon
+- Applied GPL V3 license
+
diff --git a/q65w/resources/qthid/README-qthid-4.1.txt b/q65w/resources/qthid/README-qthid-4.1.txt
new file mode 100644
index 000000000..a4eb91747
--- /dev/null
+++ b/q65w/resources/qthid/README-qthid-4.1.txt
@@ -0,0 +1,72 @@
+1. INTRODUCTION
+
+Qthid is a small control application for the Funcube Dongle devices. It is an evolution of the qthid002 package by Howard Long G6LVB.
+
+This version 4.1 is a special version that adds support for the Funcube Dongle Pro+ (see http://www.funcubedongle.com/?page_id=1073). The original Funcube Dongle Pro is not supported by this version.
+
+Qthid uses the HIDAPI cross platform library by Signal 11 Software (http://www.signal11.us/oss/hidapi/). All the required files are bundled with qthid and no installation of the library is required.
+
+
+2. INSTALLATION AND USAGE
+
+2.1 Linux
+
+Precompiled binaries (32 or 64 bit) are avaialble for download but users are required to install the Qt runtime libraries on their own. All common Linux distrib utions have the Qt libraries packaged and they can be installed using the package manager for the platform. Qt 4.7 and 4.8 has been tested.
+
+In order to use the Funcube Dongle Pro+ as regular user and udev rule is required. An example funcube-dongle.rules file is included with the package and you can simply copy that file to the /etc/udev/rules.d/ directory (hint: open a terminal and type: "sudo cp funcube-dongle.rules /etc/udev/rules.d/" without the quotes)
+
+Qthid should now detect your Funcube Dongle Pro+ when you plug it in. No reboot or udev restart is necessary.
+
+
+2.2 Mac OS X (10.6+)
+
+The Mac OS X bundle contains all the necessary Qt libraries and no additional installation or configuration is required. Unlike Linux, the Funcube Dongle will just work.
+
+
+2.3 Windows
+
+The windows package is self containing and does not require and Qt libs to be installed separately. This release has been tested on Windows 7.
+
+
+2.4 Building from source
+
+- Install Qt Creator 2.0.1 or newer and Qt SDK 4.7. On recent linux it is normally sufficient to select Qt Creator and the required Qt libraries will be installed as dependencies. On Mac and Windows you need to download the full Qt SDK. On Windows you also need the MS Windows SDK.
+- On linux you also need to install the libudev-dev package using the package manager (the name may be different depending on distribution but it should have libudev and dev int he name).
+- Open the qthid.pro file in Qt Creator. It will say something about setting up a target; say OK or Finish or Done (depends on version and OS).
+- You can now build and execute the project.
+
+It is also possible to build in a terminal:
+
+$ tar xvfz qthid-X.Y.tar.gz
+$ cd qthid-X.Y
+$ mkdir build
+$ cd build
+$ qmake ../qthid.pro
+$ make
+
+You should now have a qthid binary.
+
+
+3. License
+
+Qthid is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+The frequency controller widget was taken from Cutesdr by Moe Wheatley, released under the following "Simplified BSD License":
+
+Copyright 2010 Moe Wheatley. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Moe Wheatley "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Moe Wheatley OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Moe Wheatley.
+
diff --git a/q65w/resources/qthid/README.qthid-4.0.txt b/q65w/resources/qthid/README.qthid-4.0.txt
new file mode 100644
index 000000000..a5f3761ec
--- /dev/null
+++ b/q65w/resources/qthid/README.qthid-4.0.txt
@@ -0,0 +1,85 @@
+1. INTRODUCTION
+
+Qthid is a Funcube Dongle control application with Qt user interface. It is an evolution of the qthid002 package by Howard Long G6LVB.
+
+The Funcube Dongle (http://www.funcubedongle.com/) is a small software defined radio receiver for 64 MHz - 1.7 GHz. It fits into a computer's USB port and uses USB audio to transfer complex I/Q data to SDR applications. The control API for setting frequency, gain, filter, etc. uses the USB HID standard, thus the Funcube Dongle does not require any specific hardware drivers as long as the host operating system supports USB audio and HID.
+
+Qthid uses the HIDAPI cross platform library by Signal 11 Software (http://www.signal11.us/oss/hidapi/). All the required files are bundled with qthid and no installation of the library is required.
+
+The current version 4.0 implements the full API available with the 18f firmware. It should cover all the functionality provided by the "fully functional windows frontend". Note that the majority of this full API is only available since firmware 18f and qthid 4 will not work with earlier firmware. The application will simply fail to detect the FCD with earlier firmwares.
+
+You can use qthid 2.x to upgrade your firmware to 18f or later.
+
+
+2. INSTALLATION AND USAGE
+
+2.1 Linux
+
+If you are using Debian testing or Ubuntu, you can install the qthid-fcd-controller package. This should set everything up and you can skip the rest of this section.
+
+Otherwise you can use the precompiled binaries (32 or 64 bit) but you need the Qt runtime libraries installed. On Ubuntu these are called libqtcore4 and libqtgui4 and their dependencies. You can simply install everything Qt version 4 (not version 3!). Qt 4.8 has been tested, Qt 4.7 will probably also work.
+
+In order to use the Funcube Dongle as regular user, you need to create an udev rule. An example funcube-dongle.rules file is included with the package and you can simply copy that into the /lib/udev/rules.d/ directory.
+  
+(hint: open a terminal and type: sudo cp funcube-dongle.rules /lib/udev/rules.d/funcube-dongle.rules)
+
+Qthid should now detect your FCD when you plug it in. No need to restart udev.
+
+
+2.2 Mac OS X (10.6+)
+
+The Mac OS X bundle contains all the necessary Qt libraries and no additional installation or configuration is required. Unlike Linux, the Funcube Dongle will just work.
+
+
+2.3 Windows
+
+The windows package is self containing and does not require and Qt libs to be installed separately. It is known to work on Windows XP and Windows 7.
+
+
+2.4 Building from source
+
+- Install Qt Creator 2.0.1 or newer and Qt SDK 4.7. On recent linux it is normally sufficient to select Qt Creator and the required Qt libraries will be installed as dependencies. On Mac and Windows you need to download the full Qt SDK. On Windows you also need the MS Windows SDK.
+- On linux you also need to install the libudev-dev package using the package manager (the name may be different depending on distribution but it should have libudev and dev int he name).
+- Open the qthid.pro file in Qt Creator. It will say something about setting up a target; say OK or Finish or Done (depends on version and OS).
+- You can now build and execute the project.
+
+If you want to try the latest experimental code you can check it out from Github: https://github.com/csete/qthid
+
+
+3. License
+
+Qthid is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+The frequency controller widget was taken from Cutesdr by Moe Wheatley, released under the following "Simplified BSD License":
+
+Copyright 2010 Moe Wheatley. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are
+permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright notice, this list of
+    conditions and the following disclaimer.
+
+   2. Redistributions in binary form must reproduce the above copyright notice, this list
+    of conditions and the following disclaimer in the documentation and/or other materials
+    provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Moe Wheatley ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Moe Wheatley OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those of the
+authors and should not be interpreted as representing official policies, either expressed
+or implied, of Moe Wheatley.
+
diff --git a/q65w/resources/wisdom1.bat b/q65w/resources/wisdom1.bat
new file mode 100644
index 000000000..2d5e3519f
--- /dev/null
+++ b/q65w/resources/wisdom1.bat
@@ -0,0 +1,7 @@
+fftwf-wisdom -o fftwf_wisdom.dat -t 1 -m cif256 rif512 rib512 cif1024 cib1024 cib32768 
+
+fftwf-wisdom -w fftwf_wisdom.dat -o fftwf_wisdom.dat -t 1 -m cif77175 cib77175 cib5376000 cif74088 cib74088 cib5120000 
+
+fftwf-wisdom -w fftwf_wisdom.dat -o fftwf_wisdom.dat -t 1 -m cif37632 cib37632 cib2621440 cif37044 cib37044 cib2560000
+
+fftwf-wisdom -w fftwf_wisdom.dat -o fftwf_wisdom.dat -t 1 -m cif24192 cif3456 cif336000
diff --git a/q65w/resources/wisdom2.bat b/q65w/resources/wisdom2.bat
new file mode 100644
index 000000000..6ced98548
--- /dev/null
+++ b/q65w/resources/wisdom2.bat
@@ -0,0 +1,7 @@
+fftwf-wisdom -o fftwf_wisdom.dat -t 1 cif256 rif512 rib512 cif1024 cib1024 cib32768 
+
+fftwf-wisdom -w fftwf_wisdom.dat -o fftwf_wisdom.dat -t 1 cif77175 cib77175 cib5376000 cif74088 cib74088 cib5120000 
+
+fftwf-wisdom -w fftwf_wisdom.dat -o fftwf_wisdom.dat -t 1 cif37632 cib37632 cib2621440 cif37044 cib37044 cib2560000
+
+fftwf-wisdom -w fftwf_wisdom.dat -o fftwf_wisdom.dat -t 1 cif24192 cif3456 cif336000
diff --git a/q65w/set570.cpp b/q65w/set570.cpp
new file mode 100644
index 000000000..a56832292
--- /dev/null
+++ b/q65w/set570.cpp
@@ -0,0 +1,272 @@
+
+/*   Linux / Windows program to control the frequency of a si570 synthesizer
+     ON5GN  6 jan 2012
+     Under Linux:
+       -use the linux version of function void si570_sleep(int us)
+       -compile with
+        gcc -Wall -o set_si570_freq set_si570_freq.c -lusb -lm
+       -run with sudo ./set_si570_freq
+     Under Windows:
+       -use the windows version of function void si570_sleep(int us)
+       -compile with mingw
+        C:\mingw\bin\mingw32-gcc -Wall -o set_si570_freq set_si570_freq.c -lusb -lm
+       -run with  set_si570_freq.exe
+*/
+
+#include <stdio.h>   /* Standard input/output definitions */
+#include <string.h>  /* String function definitions */
+#include <unistd.h>  /* UNIX standard function definitions */
+#include <sys/time.h>
+
+#ifdef WIN32
+#include <windows.h>
+#endif
+
+#include <libusb.h>
+#include <QDebug>
+
+#define USB_SUCCESS	            0
+#define USB_ERROR_NOTFOUND      1
+#define USB_ERROR_ACCESS        2
+#define USB_ERROR_IO            3
+#define VENDOR_NAME	            "www.obdev.at"
+#define PRODUCT_NAME            "DG8SAQ-I2C"
+#define USBDEV_SHARED_VENDOR    0x16C0  // VOTI  VID
+#define USBDEV_SHARED_PRODUCT   0x05DC  // OBDEV PID
+                                     // Use obdev's generic shared VID/PID pair
+                                     // following the rules outlined in
+                                     // firmware/usbdrv/USBID-License.txt.
+#define REQUEST_SET_FREQ_BY_VALUE 0x32
+#define MAX_USB_ERR_CNT         6
+
+double freq_parm;
+double delay_average;
+int  from_freq;
+int  to_freq;
+int  increment_freq;
+int  display_freq = -1;
+int  delay;
+static libusb_device_handle * global_si570usb_handle;
+
+void si570_sleep(int us)
+{
+#if defined (Q_OS_WIN)
+  ::Sleep (us / 1000);
+#else
+  ::usleep (us);
+#endif
+}
+
+double round(double x)
+{
+  int i=x+0.5;
+  return (double)i;
+}
+
+double current_time(void) //for delay measurements
+{
+  struct timeval t;
+  gettimeofday(&t,NULL);
+  return 0.000001*t.tv_usec+t.tv_sec;
+}
+
+unsigned char Si570usbOpenDevice(libusb_device_handle **device, char *usbSerialID);
+void setLongWord( int value, char * bytes);
+int setFreqByValue(libusb_device_handle * handle, double frequency);
+void sweepa_freq(void);
+void sweepm_freq(void);
+
+int set570(double freq_MHz)
+{
+//###
+//  qDebug() << "A" << freq_MHz;
+//  if(freq_MHz != 999.0) return 0;
+//###
+
+  char * my_usbSerialID = nullptr;
+
+// MAIN MENU DIALOG
+  if (Si570usbOpenDevice(&global_si570usb_handle, my_usbSerialID) != USB_SUCCESS)
+    {
+      return -1;
+    }
+
+//SET FREQUENCY
+  if((freq_MHz < 3.45)|(freq_MHz > 866.0)) return -2;
+  setFreqByValue(global_si570usb_handle,freq_MHz);
+  return 0;
+}
+
+unsigned char Si570usbOpenDevice (libusb_device_handle * * udh, char * usbSerialID)
+{
+  if (*udh) return USB_SUCCESS; // only scan USB devices 1st time
+
+  int  vendor        = USBDEV_SHARED_VENDOR;
+  char *vendorName   = (char *)VENDOR_NAME;
+  int  product       = USBDEV_SHARED_PRODUCT;
+  char *productName  = (char *)PRODUCT_NAME;
+
+  libusb_device_handle * handle = nullptr;
+  unsigned char errorCode = USB_ERROR_NOTFOUND;
+  char buffer[256];
+  int rc;
+  if ((rc = libusb_init (nullptr)) < 0) // init default context (safe to repeat)
+    {
+      printf ("usb initialization error message %s\n", libusb_error_name (rc));
+      return errorCode = USB_ERROR_ACCESS;
+    }
+
+  libusb_device * * device_list;
+  int device_count = libusb_get_device_list (nullptr, &device_list);
+  if (device_count < 0)
+    {
+      puts ("no usb devices");
+      errorCode = USB_ERROR_NOTFOUND;
+    }
+  else
+    {
+      for (int i = 0; i < device_count; ++i)
+        {
+          libusb_device * device = device_list[i];
+          libusb_device_descriptor descriptor;
+          if ((rc = libusb_get_device_descriptor (device, &descriptor)) < 0)
+            {
+              printf ("usb get device descriptor error message %s\n", libusb_error_name (rc));
+              errorCode = USB_ERROR_ACCESS;
+              continue;
+            }
+          if (vendor == descriptor.idVendor && product == descriptor.idProduct)
+            {
+              // now we must open the device to query strings
+              if ((rc = libusb_open (device, &handle)) < 0)
+                {
+                  printf ("usb open device error message %s\n", libusb_error_name (rc));
+                  errorCode = USB_ERROR_ACCESS;
+                  continue;
+                }
+              if (!vendorName && !productName)
+                {
+                  break;            // good to go
+                }
+              if (libusb_get_string_descriptor_ascii (handle, descriptor.iManufacturer
+                                                      , reinterpret_cast<unsigned char *> (buffer), sizeof buffer) < 0)
+                {
+                  printf ("usb get vendor name error message %s\n", libusb_error_name (rc));
+                  errorCode = USB_ERROR_IO;
+                }
+              else
+                {
+                  if (!vendorName || !strcmp (buffer, vendorName))
+                    {
+                      if (libusb_get_string_descriptor_ascii (handle, descriptor.iProduct
+                                                              , reinterpret_cast<unsigned char *> (buffer), sizeof buffer) < 0)
+                        {
+                          printf ("usb get product name error message %s\n", libusb_error_name (rc));
+                          errorCode = USB_ERROR_IO;
+                        }
+                      else
+                        {
+                          if (!productName || !strcmp (buffer, productName))
+                            {
+                              if (libusb_get_string_descriptor_ascii (handle, descriptor.iSerialNumber
+                                                                      , reinterpret_cast<unsigned char *> (buffer), sizeof buffer) < 0)
+                                {
+                                  printf ("usb get serial number error message %s\n", libusb_error_name (rc));
+                                  errorCode = USB_ERROR_IO;
+                                }
+                              else
+                                {
+                                  if (!usbSerialID || !strcmp (buffer, usbSerialID))
+                                    {
+                                      break; // good to go
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+              libusb_close (handle);
+              handle = nullptr;
+            }
+        }
+      libusb_free_device_list (device_list, 1);
+    }
+  if (handle)
+    {
+      errorCode = USB_SUCCESS;
+      *udh = handle;
+    }
+  return errorCode;
+}
+
+void setLongWord( int value, char * bytes)
+{
+  bytes[0] = value & 0xff;
+  bytes[1] = ((value & 0xff00) >> 8) & 0xff;
+  bytes[2] = ((value & 0xff0000) >> 16) & 0xff;
+  bytes[3] = ((value & 0xff000000) >> 24) & 0xff;
+}
+
+int setFreqByValue(libusb_device_handle * handle, double frequency)
+{
+// Windows Doc from PE0FKO:
+//
+// Command 0x32:
+// -------------
+// Set the oscillator frequency by value. The frequency is formatted in MHz
+// as 11.21 bits value.
+// The "automatic band pass filter selection", "smooth tune",
+// "one side calibration" and the "frequency subtract multiply" are all
+// done in this function. (if enabled in the firmware)
+//
+// Default:    None
+//
+// Parameters:
+//     requesttype:    LIBUSB_ENDPOINT_OUT
+//     request:         0x32
+//     value:           0
+//     index:           0
+//     bytes:           pointer 32 bits integer
+//     size:            4
+//
+// Code sample:
+//     uint32_t iFreq;
+//     double   dFreq;
+//
+//     dFreq = 30.123456; // MHz
+//     iFreq = (uint32_t)( dFreq * (1UL << 21) )
+//     r = usbCtrlMsgOUT(0x32, 0, 0, (char *)&iFreq, sizeof(iFreq));
+//     if (r < 0) Error
+//
+
+  char   buffer[4];
+  int  i2cAddress = 0x55;
+  int    request = REQUEST_SET_FREQ_BY_VALUE;
+  int    value = 0x700 + i2cAddress;
+  int    my_index = 0;
+  int    retval;
+  int    err_cnt;
+
+  err_cnt =0;
+ set_again:;
+  setLongWord(round(frequency * 2097152.0), buffer);  //   2097152=2^21
+  retval = libusb_control_transfer (
+                                    handle, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
+                                    request,
+                                    value,
+                                    my_index,
+                                    reinterpret_cast<unsigned char *> (buffer),
+                                    sizeof(buffer),
+                                    5000);
+  if (retval != 4) {
+    err_cnt ++;
+    if(err_cnt < MAX_USB_ERR_CNT) {
+      si570_sleep(1000);          // delay 1000 microsec
+      goto set_again;
+    } else {
+      printf("Error when setting frequency, returncode=%i\n",retval);
+      printf("usb error message: %s\n", libusb_error_name (retval));
+    }
+  }
+  return retval;
+}
diff --git a/q65w/signalmeter.cpp b/q65w/signalmeter.cpp
new file mode 100644
index 000000000..c6c27618b
--- /dev/null
+++ b/q65w/signalmeter.cpp
@@ -0,0 +1,53 @@
+// Simple bargraph dB meter
+// Implemented by Edson Pereira PY2SDR
+//
+// Limits and geometry are hardcded for now.
+
+#include "signalmeter.h"
+
+SignalMeter::SignalMeter(QWidget *parent) :
+    QWidget(parent)
+{
+    resize(parent->size());
+
+    m_meter = new MeterWidget(this);
+    m_meter->setGeometry(10, 10, 10, 120);
+
+    m_label = new QLabel(this);
+    m_label->setGeometry(10, 135, 20, 20);
+
+    QLabel *dbLabel = new QLabel(this);
+    dbLabel->setText("dB");
+    dbLabel->setGeometry(30, 135, 20, 20);
+}
+
+SignalMeter::~SignalMeter()
+{
+
+}
+
+void SignalMeter::paintEvent( QPaintEvent * )
+{
+  QPainter p {this};
+
+    p.drawLine(22, 10, 22, 130);
+
+    for ( int i = 0; i <= 60; i += 10 ) {
+        p.drawLine(22, i*2 + 10, 25, i*2 + 10);
+    }
+
+    for ( int i = 10; i < 60; i += 10 ) {
+        p.drawText(30, i*2 + 15, QString::number(60 - i));
+    }
+}
+
+void SignalMeter::setValue(int value)
+{
+    m_meter->setValue(value);
+    m_label->setText(QString::number(value));
+}
+
+void SignalMeter::resizeEvent(QResizeEvent *s)
+{
+    resize(s->size());
+}
diff --git a/q65w/signalmeter.h b/q65w/signalmeter.h
new file mode 100644
index 000000000..ea1aa6295
--- /dev/null
+++ b/q65w/signalmeter.h
@@ -0,0 +1,32 @@
+#ifndef SIGNALMETER_H
+#define SIGNALMETER_H
+
+#include <QtGui>
+#include <QLabel>
+#include <meterwidget.h>
+
+class SignalMeter : public QWidget
+{
+    Q_OBJECT
+    
+public:
+    explicit SignalMeter(QWidget *parent = 0);
+    ~SignalMeter();
+
+public slots:
+    void setValue(int value);
+
+private:
+    MeterWidget *m_meter;
+
+    QLabel *m_label;
+
+    int m_signal;
+    int m_sigPeak;
+
+protected:
+    void paintEvent( QPaintEvent * );
+    void resizeEvent(QResizeEvent *s);
+};
+
+#endif // SIGNALMETER_H
diff --git a/q65w/sleep.h b/q65w/sleep.h
new file mode 100644
index 000000000..c11188c2a
--- /dev/null
+++ b/q65w/sleep.h
@@ -0,0 +1,16 @@
+#ifndef SLEEP_H
+#define SLEEP_H
+#include <qthread.h>
+
+class Sleep : public QThread
+{
+public:
+  static void msleep(int ms) {
+    QThread::msleep(ms);
+  }
+  static int idealThreadCount() {
+    return QThread::idealThreadCount();
+  }
+};
+
+#endif // SLEEP_H
diff --git a/q65w/soundin.cpp b/q65w/soundin.cpp
new file mode 100644
index 000000000..46433d4ea
--- /dev/null
+++ b/q65w/soundin.cpp
@@ -0,0 +1,451 @@
+#include "soundin.h"
+#include <math.h>
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#else
+#include <sys/socket.h>
+#endif
+
+#define NFFT 32768
+#define FRAMES_PER_BUFFER 1024
+
+#include <portaudio.h>
+extern "C"
+{
+  struct
+  {
+    double d8[2*60*96000];   //This is "common/datcom/..." in fortran
+    float ss[4*322*NFFT];
+    float savg[4*NFFT];
+    double fcenter;
+    int nutc;
+    int idphi;                        //Phase correction for Y pol'n, degrees
+    int mousedf;                      //User-selected DF
+    int mousefqso;                    //User-selected QSO freq (kHz)
+    int nagain;                       //1 ==> decode only at fQSO +/- Tol
+    int ndepth;                       //How much hinted decoding to do?
+    int ndiskdat;                     //1 ==> data read from *.tf2 or *.iq file
+    int neme;                         //Hinted decoding tries only for EME calls
+    int newdat;                       //1 ==> new data, must do long FFT
+    int nfa;                          //Low decode limit (kHz)
+    int nfb;                          //High decode limit (kHz)
+    int nfcal;                        //Frequency correction, for calibration (Hz)
+    int nfshift;                      //Shift of displayed center freq (kHz)
+    int mcall3;                       //1 ==> CALL3.TXT has been modified
+    int ntimeout;                     //Max for timeouts in Messages and BandMap
+    int ntol;                         //+/- decoding range around fQSO (Hz)
+    int nxant;                        //1 ==> add 45 deg to measured pol angle
+    int map65RxLog;                   //Flags to control log files
+    int nfsample;                     //Input sample rate
+    int nxpol;                        //1 if using xpol antennas, 0 otherwise
+    int mode65;                       //JT65 sub-mode: A=1, B=2, C=4
+    int nfast;                        //1No longer used
+    int nsave;                        //Number of s3(64,63) spectra saved
+    char mycall[12];
+    char mygrid[6];
+    char hiscall[12];
+    char hisgrid[6];
+    char datetime[20];
+  } datcom_;
+}
+
+typedef struct
+{
+  int kin;          //Parameters sent to/from the portaudio callback function
+  int nrx;
+  int dB;
+  bool bzero;
+  bool iqswap;
+} paUserData;
+
+//--------------------------------------------------------------- a2dCallback
+extern "C" int a2dCallback( const void *inputBuffer, void *outputBuffer,
+                         unsigned long framesToProcess,
+                         const PaStreamCallbackTimeInfo* timeInfo,
+                         PaStreamCallbackFlags statusFlags,
+                         void *userData )
+
+// This routine called by the PortAudio engine when samples are available.
+// It may be called at interrupt level, so don't do anything
+// that could mess up the system like calling malloc() or free().
+
+{
+  paUserData *udata=(paUserData*)userData;
+  (void) outputBuffer;          //Prevent unused variable warnings.
+  (void) timeInfo;
+  (void) userData;
+  int nbytes,i,j;
+  float d4[4*FRAMES_PER_BUFFER];
+  float d4a[4*FRAMES_PER_BUFFER];
+  float tmp;
+  float fac;
+
+  if( (statusFlags&paInputOverflow) != 0) {
+    qDebug() << "Input Overflow";
+  }
+  if(udata->bzero) {           //Start of a new minute
+    udata->kin=0;              //Reset buffer pointer
+    udata->bzero=false;
+  }
+
+  nbytes=udata->nrx*8*framesToProcess;        //Bytes per frame
+  memcpy(d4,inputBuffer,nbytes);              //Copy all samples to d4
+
+  fac=32767.0 * pow(10.0,0.05*udata->dB);
+
+  if(udata->nrx==2) {
+    for(i=0; i<4*int(framesToProcess); i++) {     //Negate odd-numbered frames
+      d4[i]=fac*d4[i];
+      j=i/4;
+      if((j%2)==1) d4[i]=-d4[i];
+    }
+    if(!udata->iqswap) {
+      for(i=0; i<int(framesToProcess); i++) {
+        j=4*i;
+        tmp=d4[j];
+        d4[j]=d4[j+1];
+        d4[j+1]=tmp;
+        tmp=d4[j+2];
+        d4[j+2]=d4[j+3];
+        d4[j+3]=tmp;
+      }
+    }
+    memcpy(&datcom_.d8[2*udata->kin],d4,nbytes); //Copy from d4 to dd()
+  } else {
+    int k=0;
+    for(i=0; i<2*int(framesToProcess); i+=2) {    //Negate odd-numbered frames
+      j=i/2;
+      if(j%2==0) {
+        d4a[k++]=fac*d4[i];
+        d4a[k++]=fac*d4[i+1];
+      } else {
+        d4a[k++]=-fac*d4[i];
+        d4a[k++]=-fac*d4[i+1];
+      }
+      d4a[k++]=0.0;
+      d4a[k++]=0.0;
+    }
+    if(!udata->iqswap) {
+      for(i=0; i<int(framesToProcess); i++) {
+        j=4*i;
+        tmp=d4a[j];
+        d4a[j]=d4a[j+1];
+        d4a[j+1]=tmp;
+      }
+    }
+    memcpy(&datcom_.d8[2*udata->kin],d4a,2*nbytes); //Copy from d4a to dd()
+  }
+  udata->kin += framesToProcess;
+  return paContinue;
+}
+
+namespace
+{
+  struct COMWrapper
+  {
+    explicit COMWrapper ()
+    {
+#ifdef Q_OS_WIN32
+      // required because Qt only does this for GUI thread
+      CoInitializeEx (nullptr, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
+#endif
+    }
+    ~COMWrapper ()
+    {
+#ifdef Q_OS_WIN32
+      CoUninitialize ();
+#endif
+    }
+  };
+}
+
+void SoundInThread::run()                           //SoundInThread::run()
+{
+  quitExecution = false;
+
+  if (m_net) {
+//    qDebug() << "Start inputUDP()";
+    inputUDP();
+//    qDebug() << "Finished inputUDP()";
+    return;
+  }
+
+  COMWrapper c;
+
+  //---------------------------------------------------- Soundcard Setup
+  //  qDebug() << "Start souncard input";
+
+  PaError paerr;
+  PaStreamParameters inParam;
+  PaStream *inStream;
+  paUserData udata;
+
+  udata.kin=0;                              //Buffer pointer
+  udata.bzero=false;                        //Flag to request reset of kin
+  udata.nrx=m_nrx;                          //Number of polarizations
+  udata.iqswap=m_IQswap;
+  udata.dB=m_dB;
+
+  auto device_info = Pa_GetDeviceInfo (m_nDevIn);
+
+  inParam.device=m_nDevIn;                  //### Input Device Number ###
+  inParam.channelCount=2*m_nrx;             //Number of analog channels
+  inParam.sampleFormat=paFloat32;           //Get floats from Portaudio
+  inParam.suggestedLatency=device_info->defaultHighInputLatency;
+  inParam.hostApiSpecificStreamInfo=NULL;
+
+  paerr=Pa_IsFormatSupported(&inParam,NULL,96000.0);
+  if(paerr<0) {
+    QString error_message;
+    if (paUnanticipatedHostError == paerr)
+      {
+        auto const * last_host_error = Pa_GetLastHostErrorInfo ();
+        error_message = QString {"PortAudio Host API error: %1"}.arg (last_host_error->errorText);
+      }
+    else
+      {
+        error_message = "PortAudio says requested soundcard format not supported.";
+      }
+    emit error(error_message);
+//    return;
+  }
+  paerr=Pa_OpenStream(&inStream,            //Input stream
+        &inParam,                           //Input parameters
+        NULL,                               //No output parameters
+        96000.0,                            //Sample rate
+        FRAMES_PER_BUFFER,                  //Frames per buffer
+//        paClipOff+paDitherOff,              //No clipping or dithering
+        paClipOff,                          //No clipping
+        a2dCallback,                        //Input callbeck routine
+        &udata);                            //userdata
+
+  paerr=Pa_StartStream(inStream);
+  if(paerr<0) {
+    emit error("Failed to start audio input stream.");
+    return;
+  }
+//  const PaStreamInfo* p=Pa_GetStreamInfo(inStream);
+
+  bool qe = quitExecution;
+  int ntr0=99;
+  int k=0;
+  int nsec;
+  int ntr;
+  int nBusy=0;
+  int nhsym0=0;
+
+//---------------------------------------------- Soundcard input loop
+  while (!qe) {
+    qe = quitExecution;
+    if (qe) break;
+    qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+    nsec = ms/1000;             // Time according to this computer
+    ntr = nsec % m_TRperiod;
+
+// Reset buffer pointer and symbol number at start of minute
+    if(ntr < ntr0 or !m_monitoring or m_TRperiod!=m_TRperiod0) {
+      nhsym0=0;
+      udata.bzero=true;
+      m_TRperiod0=m_TRperiod;
+    }
+    k=udata.kin;
+    udata.iqswap=m_IQswap;
+    udata.dB=m_dB;
+    if(m_monitoring) {
+      if(m_bForceCenterFreq) {
+        datcom_.fcenter=m_dForceCenterFreq;
+      } else {
+        datcom_.fcenter=144.125;
+      }
+      m_hsym=(k-2048)*11025.0/(2048.0*m_rate);
+      if(m_hsym != nhsym0) {
+        if(m_dataSinkBusy) {
+          nBusy++;
+        } else {
+          m_dataSinkBusy=true;
+          emit readyForFFT(k);         //Signal to compute new FFTs
+        }
+        nhsym0=m_hsym;
+      }
+    }
+    msleep(100);
+    ntr0=ntr;
+  }
+  Pa_StopStream(inStream);
+  Pa_CloseStream(inStream);
+}
+
+void SoundInThread::setSwapIQ(bool b)
+{
+  m_IQswap=b;
+}
+
+void SoundInThread::setScale(qint32 n)
+{
+  m_dB=n;
+}
+void SoundInThread::setPort(int n)                              //setPort()
+{
+  if (isRunning()) return;
+  this->m_udpPort=n;
+}
+
+void SoundInThread::setInputDevice(int n)                  //setInputDevice()
+{
+  if (isRunning()) return;
+  this->m_nDevIn=n;
+}
+
+void SoundInThread::setRate(double rate)                         //setRate()
+{
+  if (isRunning()) return;
+  this->m_rate = rate;
+}
+
+void SoundInThread::setBufSize(unsigned n)                      //setBufSize()
+{
+  if (isRunning()) return;
+  this->bufSize = n;
+}
+
+void SoundInThread::setFadd(double x)
+{
+  m_fAdd=x;
+}
+
+
+void SoundInThread::quit()                                       //quit()
+{
+  quitExecution = true;
+}
+
+void SoundInThread::setNetwork(bool b)                          //setNetwork()
+{
+  m_net = b;
+}
+
+void SoundInThread::setMonitoring(bool b)                    //setMonitoring()
+{
+  m_monitoring = b;
+}
+
+void SoundInThread::setForceCenterFreqBool(bool b)
+{
+  m_bForceCenterFreq=b;
+
+}
+
+void SoundInThread::setForceCenterFreqMHz(double d)
+{
+  m_dForceCenterFreq=d;
+}
+
+void SoundInThread::setNrx(int n)                              //setNrx()
+{
+  m_nrx = n;
+}
+
+int SoundInThread::nrx()
+{
+  return m_nrx;
+}
+
+int SoundInThread::mhsym()
+{
+  return m_hsym;
+}
+
+void SoundInThread::setPeriod(int n)
+{
+  m_TRperiod=n;
+}
+
+//--------------------------------------------------------------- inputUDP()
+void SoundInThread::inputUDP()
+{
+  udpSocket = new QUdpSocket();
+  if(!udpSocket->bind(m_udpPort,QUdpSocket::ShareAddress) )
+  {
+    emit error(tr("UDP Socket bind failed."));
+    return;
+  }
+
+  // Set this socket's total buffer space for received UDP packets
+  udpSocket->setSocketOption (QUdpSocket::ReceiveBufferSizeSocketOption, 141600);
+
+  bool qe = quitExecution;
+  struct linradBuffer {
+    double cfreq;
+    int msec;
+    float userfreq;
+    int iptr;
+    quint16 iblk;
+    qint8 nrx;
+    char iusb;
+    double d8[174];
+  } b;
+
+  int ntr0=99;
+  int k=0;
+  int nsec;
+  int ntr;
+  int nhsym0=0;
+  int iz=174;
+  int nBusy=0;
+
+  // Main loop for input of UDP packets over the network:
+  while (!qe) {
+    qe = quitExecution;
+    if (qe) break;
+    if (!udpSocket->hasPendingDatagrams()) {
+      msleep(2);                  // Sleep if no packet available
+    } else {
+      int nBytesRead = udpSocket->readDatagram((char *)&b,1416);
+      if (nBytesRead != 1416) qDebug() << "UDP Read Error:" << nBytesRead;
+
+      qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+      nsec = ms/1000;             // Time according to this computer
+      ntr = nsec % m_TRperiod;
+
+// Reset buffer pointer and symbol number at start of minute
+      if(ntr < ntr0 or !m_monitoring or m_TRperiod!=m_TRperiod0) {
+        k=0;
+        nhsym0=0;
+        m_TRperiod0=m_TRperiod;
+      }
+      ntr0=ntr;
+
+      if(m_monitoring) {
+        m_nrx=b.nrx;
+        if(m_nrx == +1) iz=348;                 //One RF channel, i*2 data
+        if(m_nrx == -1 or m_nrx == +2) iz=174;  //One Rf channel, r*4 data
+                                                // or 2 RF channels, i*2 data
+        if(m_nrx == -2) iz=87;                  // Two RF channels, r*4 data
+
+        // If buffer will not overflow, move data into datcom_
+        if ((k+iz) <= 60*96000) {
+          int nsam=-1;
+          recvpkt_(&nsam, &b.iblk, &b.nrx, &k, b.d8, b.d8, b.d8);
+          if(m_bForceCenterFreq) {
+            datcom_.fcenter=m_dForceCenterFreq;
+          } else {
+            datcom_.fcenter=b.cfreq + m_fAdd;
+          }
+        }
+
+        m_hsym=(k-2048)*11025.0/(2048.0*m_rate);
+        if(m_hsym != nhsym0) {
+          if(m_dataSinkBusy) {
+            nBusy++;
+          } else {
+            m_dataSinkBusy=true;
+            emit readyForFFT(k);         //Signal to compute new FFTs
+          }
+          nhsym0=m_hsym;
+        }
+      }
+    }
+  }
+  delete udpSocket;
+}
diff --git a/q65w/soundin.h b/q65w/soundin.h
new file mode 100644
index 000000000..78947338f
--- /dev/null
+++ b/q65w/soundin.h
@@ -0,0 +1,82 @@
+#ifndef SOUNDIN_H
+#define SOUNDIN_H
+
+#include <QtCore>
+#include <QtNetwork/QUdpSocket>
+#include <QDebug>
+#include <valarray>
+
+// Thread gets audio data from soundcard and signals when a buffer of
+// specified size is available.
+class SoundInThread : public QThread
+{
+  Q_OBJECT
+  bool quitExecution;           // if true, thread exits gracefully
+  double m_rate;                // sample rate
+  unsigned bufSize;             // user's buffer size
+
+protected:
+  virtual void run();
+
+public:
+  bool m_dataSinkBusy;
+
+  SoundInThread():
+    quitExecution(false),
+    m_rate(0),
+    bufSize(0),
+    m_dataSinkBusy(false)
+  {
+  }
+
+  void setSwapIQ(bool b);
+  void setScale(qint32 n);
+  void setPort(qint32 n);
+  void setInputDevice(qint32 n);
+  void setRate(double rate);
+  void setBufSize(unsigned bufSize);
+  void setNetwork(bool b);
+  void setMonitoring(bool b);
+  void setFadd(double x);
+  void setNrx(int n);
+  void setForceCenterFreqBool(bool b);
+  void setForceCenterFreqMHz(double d);
+  void setPeriod(int n);
+  int  nrx();
+  int  mhsym();
+
+signals:
+  void bufferAvailable(std::valarray<qint16> samples, double rate);
+  void readyForFFT(int k);
+  void error(const QString& message);
+  void status(const QString& message);
+
+public slots:
+  void quit();
+
+private:
+  void inputUDP();
+
+  double m_fAdd;
+  bool   m_net;
+  bool   m_monitoring;
+  bool   m_bForceCenterFreq;
+  bool   m_IQswap;
+  double m_dForceCenterFreq;
+  qint32 m_nrx;
+  qint32 m_hsym;
+  qint32 m_nDevIn;
+  qint32 m_udpPort;
+  qint32 m_TRperiod;
+  qint32 m_TRperiod0;
+  qint32 m_dB;
+
+  QUdpSocket *udpSocket;
+};
+
+extern "C" {
+  void recvpkt_(int* nsam, quint16* iblk, qint8* nrx, int* k, double s1[],
+                double s2[], double s3[]);
+}
+
+#endif // SOUNDIN_H
diff --git a/q65w/soundout.cpp b/q65w/soundout.cpp
new file mode 100644
index 000000000..e74d0549d
--- /dev/null
+++ b/q65w/soundout.cpp
@@ -0,0 +1,207 @@
+#include "soundout.h"
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+#define FRAMES_PER_BUFFER 256
+
+#include <portaudio.h>
+
+extern float gran();                  //Noise generator (for tests only)
+
+extern short int iwave[2*60*11025];   //Wave file for Tx audio
+extern int nwave;
+extern bool btxok;
+extern bool bTune;
+extern bool bIQxt;
+extern int iqAmp;
+extern int iqPhase;
+extern int txPower;
+extern double outputLatency;
+
+typedef struct   //Parameters sent to or received from callback function
+{
+  int nTRperiod;
+} paUserData;
+
+//--------------------------------------------------------------- d2aCallback
+extern "C" int d2aCallback(const void * /*inputBuffer*/, void *outputBuffer,
+                           unsigned long framesToProcess,
+                           const PaStreamCallbackTimeInfo* /*timeInfo*/,
+                           PaStreamCallbackFlags /*statusFlags*/,
+                           void *userData )
+{
+  paUserData *udata=(paUserData*)userData;
+  short *wptr = (short*)outputBuffer;
+  unsigned int i;
+  static int n;
+  static int ic=0;
+  static bool btxok0=false;
+  static bool bTune0=false;
+  static int nStart=0;
+  static double phi=0.;
+  double tsec,tstart,dphi;
+  int nsec;
+  int nTRperiod=udata->nTRperiod;
+
+  // Get System time
+  qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+  tsec = 0.001*ms;
+  nsec = ms/1000;
+  qreal dPhase=iqPhase/5729.57795131;
+  qreal amp=1.0 + 0.0001*iqAmp;
+  qreal xAmp=txPower*295.00*qSqrt(2.0 - amp*amp);
+  qreal yAmp=txPower*295.00*amp;
+  static int nsec0=0;
+
+  if(bTune) {
+    ic=0;
+    dphi=6.28318530718*1270.46/11025.0;
+  }
+  if(bTune0 and !bTune) btxok=false;
+  bTune0=bTune;
+
+  if(nsec!=nsec0) {
+//    qDebug() << txPower << iqAmp << iqPhase << amp << xAmp << yAmp << dPhase << bTune;
+//    qDebug() << "A" << nsec%60 << bTune << btxok;
+//    ic=0;
+    nsec0=nsec;
+  }
+
+  if(btxok and !btxok0) {       //Start (or re-start) a transmission
+    n=nsec/nTRperiod;
+    tstart=tsec - n*nTRperiod - 1.0;
+
+    if(tstart<1.0) {
+      ic=0;                      //Start of Tx cycle, set starting index to 0
+      nStart=n;
+    } else {
+      if(n != nStart) { //Late start in new Tx cycle: compute starting index
+        ic=(int)(tstart*11025.0);
+        ic=2*ic;
+        nStart=n;
+      }
+    }
+  }
+  btxok0=btxok;
+
+  if(btxok) {
+    for(i=0 ; i<framesToProcess; i++ )  {
+        short int i2a=iwave[ic++];
+        short int i2b=iwave[ic++];
+      if(ic > nwave) {i2a=0; i2b=0;}
+//      i2 = 500.0*(i2/32767.0 + 5.0*gran());      //Add noise (tests only!)
+//    if(bIQxt) {
+      if(1) {
+        if(bTune) {
+          phi += dphi;
+        } else {
+          phi=qAtan2(qreal(i2b),qreal(i2a));
+        }
+        i2a=xAmp*qCos(phi);
+        i2b=yAmp*qSin(phi + dPhase);
+//        qDebug() << xAmp << yAmp << phi << i2a << i2b;
+      }
+//      i2a=0.01*txPower*i2a;
+//      i2b=0.01*txPower*i2b;
+      *wptr++ = i2b;                     //left
+      *wptr++ = i2a;                     //right
+    }
+  } else {
+    for(i=0 ; i<framesToProcess; i++ )  {
+      *wptr++ = 0;
+      *wptr++ = 0;
+      ic++; ic++;
+    }
+  }
+  if(ic > nwave) {
+    btxok=0;
+    ic=0;
+  }
+  return 0;
+}
+
+namespace
+{
+  struct COMWrapper
+  {
+    explicit COMWrapper ()
+    {
+#ifdef Q_OS_WIN32
+      // required because Qt only does this for GUI thread
+      CoInitializeEx (nullptr, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
+#endif
+    }
+    ~COMWrapper ()
+    {
+#ifdef Q_OS_WIN32
+      CoUninitialize ();
+#endif
+    }
+  };
+}
+
+void SoundOutThread::run()
+{
+  COMWrapper c;
+
+  PaError paerr;
+  PaStreamParameters outParam;
+  PaStream *outStream;
+  paUserData udata;
+  quitExecution = false;
+
+  auto device_info = Pa_GetDeviceInfo (m_nDevOut);
+
+  outParam.device=m_nDevOut;                 //Output device number
+  outParam.channelCount=2;                   //Number of analog channels
+  outParam.sampleFormat=paInt16;             //Send short ints to PortAudio
+  outParam.suggestedLatency=device_info->defaultLowOutputLatency;
+  outParam.hostApiSpecificStreamInfo=NULL;
+
+  udata.nTRperiod=m_TRperiod;
+  paerr=Pa_IsFormatSupported(NULL,&outParam,11025.0);
+  if(paerr<0) {
+    qDebug() << "PortAudio says requested output format not supported.";
+    qDebug() << paerr;
+    return;
+  }
+  paerr=Pa_OpenStream(&outStream,           //Output stream
+        NULL,                               //No input parameters
+        &outParam,                          //Output parameters
+        11025.0,                            //Sample rate
+        FRAMES_PER_BUFFER,                  //Frames per buffer
+        paClipOff,                          //No clipping
+        d2aCallback,                        //output callbeck routine
+        &udata);                            //userdata
+
+  paerr=Pa_StartStream(outStream);
+  if(paerr<0) {
+    qDebug() << "Failed to start audio output stream.";
+    return;
+  }
+  const PaStreamInfo* p=Pa_GetStreamInfo(outStream);
+  outputLatency = p->outputLatency;
+  bool qe = quitExecution;
+
+//---------------------------------------------- Soundcard output loop
+  while (!qe) {
+    qe = quitExecution;
+    if (qe) break;
+    msleep(100);
+  }
+  Pa_StopStream(outStream);
+  Pa_CloseStream(outStream);
+}
+
+void SoundOutThread::setOutputDevice(int n)      //setOutputDevice()
+{
+  if (isRunning()) return;
+  this->m_nDevOut=n;
+}
+
+void SoundOutThread::setPeriod(int n)
+{
+  m_TRperiod=n;
+}
diff --git a/q65w/soundout.h b/q65w/soundout.h
new file mode 100644
index 000000000..294c6fa5f
--- /dev/null
+++ b/q65w/soundout.h
@@ -0,0 +1,44 @@
+#ifndef SOUNDOUT_H
+#define SOUNDOUT_H
+#include <QtCore>
+#include <QDebug>
+
+// An instance of this thread sends audio data to a specified soundcard.
+// Output can be muted while underway, preserving waveform timing when
+// transmission is resumed.
+
+class SoundOutThread : public QThread
+{
+  Q_OBJECT
+
+protected:
+  virtual void run();
+
+public:
+// Constructs (but does not start) a SoundOutThread
+  SoundOutThread()
+    :   quitExecution(false)           // Initialize some private members
+    ,   m_rate(0)
+    ,   m_nwave(48*11025)
+    ,   m_txOK(false)
+    ,   m_txMute(false)
+  {
+  }
+
+public:
+  void setOutputDevice(qint32 n);
+  void setPeriod(int n);
+  bool quitExecution;           //If true, thread exits gracefully
+
+
+// Private members
+private:
+  double  m_rate;               //Sample rate
+  qint32  m_nDevOut;            //Output device number
+  qint32  m_nwave;              //Length of wave file
+  qint32  m_TRperiod;           //T/R period (30 or 60 s)
+  bool    m_txOK;               //Enable Tx audio
+  bool    m_txMute;             //Mute temporarily
+};
+
+#endif
diff --git a/q65w/ss.bat b/q65w/ss.bat
new file mode 100644
index 000000000..3ea6cc6dc
--- /dev/null
+++ b/q65w/ss.bat
@@ -0,0 +1 @@
+svn status | grep -v "?"
diff --git a/q65w/sss.bat b/q65w/sss.bat
new file mode 100644
index 000000000..63b4044f2
--- /dev/null
+++ b/q65w/sss.bat
@@ -0,0 +1 @@
+svn status
diff --git a/q65w/txtune.cpp b/q65w/txtune.cpp
new file mode 100644
index 000000000..b1d7fb71d
--- /dev/null
+++ b/q65w/txtune.cpp
@@ -0,0 +1,116 @@
+#include "txtune.h"
+#include "ui_txtune.h"
+#include <QDebug>
+
+extern int txPower;
+extern int iqAmp;
+extern int iqPhase;
+extern bool bTune;
+
+TxTune::TxTune(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::TxTune)
+{
+    ui->setupUi(this);
+}
+
+TxTune::~TxTune()
+{
+    delete ui;
+}
+
+void TxTune::accept()
+{
+  if(bTune) on_pbTune_clicked();
+  QDialog::accept();
+}
+
+void TxTune::reject()
+{
+  if(bTune) on_pbTune_clicked();
+  set_iqAmp(m_saveAmp);
+  set_iqPhase(m_savePha);
+  set_txPower(m_saveTxPower);
+  QDialog::reject();
+}
+
+void TxTune::on_pwrSlider_valueChanged(int n)
+{
+  txPower=n;
+  ui->labPower->setText (QString {"%1 %"}.arg (n));
+}
+
+void TxTune::on_ampSlider_valueChanged(int n)
+{
+  m_iqAmp1=n;
+  iqAmp=10*m_iqAmp1 + m_iqAmp2;
+  ui->labAmpReal->setText (QString::number (1.0 + 0.0001 * iqAmp, 'f', 4));
+}
+
+void TxTune::on_fineAmpSlider_valueChanged(int n)
+{
+  m_iqAmp2=n;
+  iqAmp=10*m_iqAmp1 + m_iqAmp2;
+  ui->labAmpReal->setText (QString::number (1.0 + 0.0001*iqAmp, 'f', 4));
+}
+
+void TxTune::on_phaSlider_valueChanged(int n)
+{
+  m_iqPha1=n;
+  iqPhase=10*m_iqPha1 + m_iqPha2;
+  ui->labPhaReal->setText (QString::number (0.01*iqPhase, 'f', 2));
+}
+
+void TxTune::on_finePhaSlider_valueChanged(int n)
+{
+  m_iqPha2=n;
+  iqPhase=10*m_iqPha1 + m_iqPha2;
+  ui->labPhaReal->setText (QString::number (0.01*iqPhase, 'f', 2));
+}
+
+void TxTune::set_iqAmp(int n)
+{
+  m_saveAmp=n;
+  m_iqAmp1=n/10;
+  m_iqAmp2=n%10;
+  ui->ampSlider->setValue(m_iqAmp1);
+  ui->fineAmpSlider->setValue(m_iqAmp2);
+}
+
+void TxTune::set_iqPhase(int n)
+{
+  m_savePha=n;
+  m_iqPha1=n/10;
+  m_iqPha2=n%10;
+  ui->phaSlider->setValue(m_iqPha1);
+  ui->finePhaSlider->setValue(m_iqPha2);
+}
+
+void TxTune::set_txPower(int n)
+{
+  m_saveTxPower=n;
+  ui->pwrSlider->setValue(n);
+}
+
+void TxTune::on_cbTxImage_toggled(bool b)
+{
+  ui->ampSlider->setEnabled(b);
+  ui->fineAmpSlider->setEnabled(b);
+  ui->labAmp->setEnabled(b);
+  ui->labFineAmp->setEnabled(b);
+  ui->phaSlider->setEnabled(b);
+  ui->finePhaSlider->setEnabled(b);
+  ui->labPha->setEnabled(b);
+  ui->labFinePha->setEnabled(b);
+}
+
+void TxTune::on_pbTune_clicked()
+{
+  bTune = !bTune;
+  if(bTune) {
+    QString style="QPushButton{background-color: red;}";
+    ui->pbTune->setStyleSheet(style);
+  } else {
+    ui->pbTune->setStyleSheet("");
+  }
+}
diff --git a/q65w/txtune.h b/q65w/txtune.h
new file mode 100644
index 000000000..e60015726
--- /dev/null
+++ b/q65w/txtune.h
@@ -0,0 +1,48 @@
+#ifndef TXTUNE_H
+#define TXTUNE_H
+
+#include <QDialog>
+
+namespace Ui {
+class TxTune;
+}
+
+class TxTune : public QDialog
+{
+    Q_OBJECT
+    
+public:
+    explicit TxTune(QWidget *parent = 0);
+    ~TxTune();
+    
+public slots:
+  void accept();
+  void reject();
+
+private slots:
+  void on_pwrSlider_valueChanged(int n);
+  void on_ampSlider_valueChanged(int n);
+  void on_phaSlider_valueChanged(int n);
+  void on_cbTxImage_toggled(bool b);
+  void on_pbTune_clicked();
+  void on_fineAmpSlider_valueChanged(int n);
+  void on_finePhaSlider_valueChanged(int n);
+
+public:
+  void set_iqAmp(int n);
+  void set_iqPhase(int n);
+  void set_txPower(int n);
+
+private:
+  qint32  m_iqAmp1;
+  qint32  m_iqAmp2;
+  qint32  m_iqPha1;
+  qint32  m_iqPha2;
+  qint32  m_saveAmp;
+  qint32  m_savePha;
+  qint32  m_saveTxPower;
+
+  Ui::TxTune *ui;
+};
+
+#endif // TXTUNE_H
diff --git a/q65w/txtune.ui b/q65w/txtune.ui
new file mode 100644
index 000000000..af78cd418
--- /dev/null
+++ b/q65w/txtune.ui
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>TxTune</class>
+ <widget class="QDialog" name="TxTune">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Tx Tune</string>
+  </property>
+  <widget class="QDialogButtonBox" name="buttonBox">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>240</y>
+     <width>341</width>
+     <height>32</height>
+    </rect>
+   </property>
+   <property name="orientation">
+    <enum>Qt::Horizontal</enum>
+   </property>
+   <property name="standardButtons">
+    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+   </property>
+   <property name="centerButtons">
+    <bool>false</bool>
+   </property>
+  </widget>
+  <widget class="QWidget" name="">
+   <property name="geometry">
+    <rect>
+     <x>13</x>
+     <y>38</y>
+     <width>351</width>
+     <height>191</height>
+    </rect>
+   </property>
+   <layout class="QGridLayout" name="gridLayout">
+    <item row="0" column="0">
+     <widget class="QLabel" name="label">
+      <property name="minimumSize">
+       <size>
+        <width>70</width>
+        <height>0</height>
+       </size>
+      </property>
+      <property name="text">
+       <string>Tx Power:</string>
+      </property>
+     </widget>
+    </item>
+    <item row="0" column="1">
+     <widget class="QSlider" name="pwrSlider">
+      <property name="maximum">
+       <number>100</number>
+      </property>
+      <property name="value">
+       <number>100</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="tickPosition">
+       <enum>QSlider::TicksBelow</enum>
+      </property>
+      <property name="tickInterval">
+       <number>10</number>
+      </property>
+     </widget>
+    </item>
+    <item row="1" column="0" colspan="2">
+     <widget class="QCheckBox" name="cbTxImage">
+      <property name="text">
+       <string>Enable Tx I/Q Adjustment</string>
+      </property>
+     </widget>
+    </item>
+    <item row="2" column="0">
+     <widget class="QLabel" name="labAmp">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="minimumSize">
+       <size>
+        <width>70</width>
+        <height>0</height>
+       </size>
+      </property>
+      <property name="text">
+       <string>I/Q Amplitude:</string>
+      </property>
+     </widget>
+    </item>
+    <item row="2" column="1">
+     <widget class="QSlider" name="ampSlider">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="minimum">
+       <number>-100</number>
+      </property>
+      <property name="maximum">
+       <number>100</number>
+      </property>
+      <property name="value">
+       <number>0</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="tickPosition">
+       <enum>QSlider::TicksBelow</enum>
+      </property>
+     </widget>
+    </item>
+    <item row="3" column="0">
+     <widget class="QLabel" name="labFineAmp">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="text">
+       <string>Fine:</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+      </property>
+     </widget>
+    </item>
+    <item row="3" column="1">
+     <widget class="QSlider" name="fineAmpSlider">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="minimum">
+       <number>-100</number>
+      </property>
+      <property name="maximum">
+       <number>100</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="tickPosition">
+       <enum>QSlider::TicksBelow</enum>
+      </property>
+     </widget>
+    </item>
+    <item row="4" column="0">
+     <widget class="QLabel" name="labPha">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="minimumSize">
+       <size>
+        <width>70</width>
+        <height>0</height>
+       </size>
+      </property>
+      <property name="text">
+       <string>I/Q Phase:</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+      </property>
+     </widget>
+    </item>
+    <item row="4" column="1">
+     <widget class="QSlider" name="phaSlider">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="minimum">
+       <number>-100</number>
+      </property>
+      <property name="maximum">
+       <number>100</number>
+      </property>
+      <property name="value">
+       <number>0</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="tickPosition">
+       <enum>QSlider::TicksBelow</enum>
+      </property>
+     </widget>
+    </item>
+    <item row="5" column="0">
+     <widget class="QLabel" name="labFinePha">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="text">
+       <string>Fine:</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+      </property>
+     </widget>
+    </item>
+    <item row="5" column="1">
+     <widget class="QSlider" name="finePhaSlider">
+      <property name="enabled">
+       <bool>false</bool>
+      </property>
+      <property name="minimum">
+       <number>-100</number>
+      </property>
+      <property name="maximum">
+       <number>100</number>
+      </property>
+      <property name="orientation">
+       <enum>Qt::Horizontal</enum>
+      </property>
+      <property name="tickPosition">
+       <enum>QSlider::TicksBelow</enum>
+      </property>
+     </widget>
+    </item>
+    <item row="2" column="2">
+     <widget class="QLabel" name="labAmpReal">
+      <property name="text">
+       <string>1.0000</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
+      </property>
+     </widget>
+    </item>
+    <item row="4" column="2">
+     <widget class="QLabel" name="labPhaReal">
+      <property name="text">
+       <string>0.000</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
+      </property>
+     </widget>
+    </item>
+    <item row="1" column="2">
+     <widget class="QPushButton" name="pbTune">
+      <property name="text">
+       <string>Tune</string>
+      </property>
+     </widget>
+    </item>
+    <item row="0" column="2">
+     <widget class="QLabel" name="labPower">
+      <property name="text">
+       <string>100 %</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignCenter</set>
+      </property>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>TxTune</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>TxTune</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/q65w/widegraph.cpp b/q65w/widegraph.cpp
new file mode 100644
index 000000000..265b00fa3
--- /dev/null
+++ b/q65w/widegraph.cpp
@@ -0,0 +1,388 @@
+#include "widegraph.h"
+#include <QSettings>
+#include <QMessageBox>
+#include "SettingsGroup.hpp"
+#include "ui_widegraph.h"
+
+#define NFFT 32768
+
+WideGraph::WideGraph (QString const& settings_filename, QWidget * parent)
+  : QDialog {parent},
+    ui {new Ui::WideGraph},
+    m_settings_filename {settings_filename}
+{
+  ui->setupUi(this);
+  setWindowTitle("Wide Graph");
+  setWindowFlags(Qt::WindowCloseButtonHint | Qt::WindowMinimizeButtonHint);
+  installEventFilter(parent); //Installing the filter
+  ui->widePlot->setCursor(Qt::CrossCursor);
+  setMaximumWidth(2048);
+  setMaximumHeight(880);
+  ui->widePlot->setMaximumHeight(800);
+  m_bIQxt=false;
+  connect(ui->widePlot, SIGNAL(freezeDecode1(int)),this,
+          SLOT(wideFreezeDecode(int)));
+
+  //Restore user's settings
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  {
+    SettingsGroup g {&settings, "MainWindow"}; // historical reasons
+    setGeometry (settings.value ("WideGraphGeom", QRect {45,30,1023,340}).toRect ());
+  }
+  SettingsGroup g {&settings, "WideGraph"};
+  ui->widePlot->setPlotZero(settings.value("PlotZero", 20).toInt());
+  ui->widePlot->setPlotGain(settings.value("PlotGain", 0).toInt());
+  ui->zeroSpinBox->setValue(ui->widePlot->getPlotZero());
+  ui->gainSpinBox->setValue(ui->widePlot->getPlotGain());
+  int n = settings.value("FreqSpan",60).toInt();
+  int w = settings.value("PlotWidth",1000).toInt();
+  ui->freqSpanSpinBox->setValue(n);
+  ui->widePlot->setNSpan(n);
+  int nbpp = n * 32768.0/(w*96.0) + 0.5;
+  ui->widePlot->setBinsPerPixel(nbpp);
+  m_waterfallAvg = settings.value("WaterfallAvg",10).toInt();
+  ui->waterfallAvgSpinBox->setValue(m_waterfallAvg);
+  ui->freqOffsetSpinBox->setValue(settings.value("FreqOffset",0).toInt());
+  m_bForceCenterFreq=settings.value("ForceCenterFreqBool",false).toBool();
+  m_dForceCenterFreq=settings.value("ForceCenterFreqMHz",144.125).toDouble();
+  ui->cbFcenter->setChecked(m_bForceCenterFreq);
+  ui->cbLockTxRx->setChecked(m_bLockTxRx);
+  ui->fCenterLineEdit->setText(QString::number(m_dForceCenterFreq));
+  m_bLockTxRx=settings.value("LockTxRx",false).toBool();
+  ui->cbLockTxRx->setChecked(m_bLockTxRx);
+}
+
+WideGraph::~WideGraph()
+{
+  saveSettings();
+  delete ui;
+}
+
+void WideGraph::resizeEvent(QResizeEvent* )                    //resizeEvent()
+{
+  if(!size().isValid()) return;
+  int w = size().width();
+  int h = size().height();
+  ui->labFreq->setGeometry(QRect(w-256,h-100,227,41));
+}
+
+void WideGraph::saveSettings()
+{
+  //Save user's settings
+  QSettings settings {m_settings_filename, QSettings::IniFormat};
+  {
+    SettingsGroup g {&settings, "MainWindow"}; // for historical reasons
+    settings.setValue ("WideGraphGeom", geometry());
+  }
+  SettingsGroup g {&settings, "WideGraph"};
+  settings.setValue("PlotZero",ui->widePlot->m_plotZero);
+  settings.setValue("PlotGain",ui->widePlot->m_plotGain);
+  settings.setValue("PlotWidth",ui->widePlot->plotWidth());
+  settings.setValue("FreqSpan",ui->freqSpanSpinBox->value());
+  settings.setValue("WaterfallAvg",ui->waterfallAvgSpinBox->value());
+  settings.setValue("FreqOffset",ui->widePlot->freqOffset());
+  settings.setValue("ForceCenterFreqBool",m_bForceCenterFreq);
+  settings.setValue("ForceCenterFreqMHz",m_dForceCenterFreq);
+  settings.setValue("LockTxRx",m_bLockTxRx);
+}
+
+void WideGraph::dataSink2(float s[], int nkhz, int ihsym, int ndiskdata,
+                          uchar lstrong[])
+{
+  static float splot[NFFT];
+  float swide[2048];
+  float smax;
+  double df;
+  int nbpp = ui->widePlot->binsPerPixel();
+  static int n=0;
+  static int nkhz0=-999;
+  static int ntrz=0;
+
+  df = m_fSample/32768.0;
+  if(nkhz != nkhz0) {
+    ui->widePlot->setNkhz(nkhz);                   //Why do we need both?
+    ui->widePlot->SetCenterFreq(nkhz);             //Why do we need both?
+    ui->widePlot->setFQSO(nkhz,true);
+    nkhz0 = nkhz;
+  }
+
+  //Average spectra over specified number, m_waterfallAvg
+  if (n==0) {
+    for (int i=0; i<NFFT; i++)
+      splot[i]=s[i];
+  } else {
+    for (int i=0; i<NFFT; i++)
+      splot[i] += s[i];
+  }
+  n++;
+
+  if (n>=m_waterfallAvg) {
+    for (int i=0; i<NFFT; i++)
+        splot[i] /= n;                       //Normalize the average
+    n=0;
+
+    int w=ui->widePlot->plotWidth();
+    qint64 sf = nkhz + ui->widePlot->freqOffset() - 0.5*w*nbpp*df/1000.0;
+    if(sf != ui->widePlot->startFreq()) ui->widePlot->SetStartFreq(sf);
+    int i0=16384.0+(ui->widePlot->startFreq()-nkhz+1.27046+0.001*m_fCal) *
+        1000.0/df + 0.5;
+    int i=i0;
+    for (int j=0; j<2048; j++) {
+        smax=0;
+        for (int k=0; k<nbpp; k++) {
+            i++;
+            if(splot[i]>smax) smax=splot[i];
+        }
+        swide[j]=smax;
+        if(lstrong[1 + i/32]!=0) swide[j]=-smax;   //Tag strong signals
+    }
+
+// Time according to this computer
+    qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000;
+    int ntr = (ms/1000) % m_TRperiod;
+
+    if((ndiskdata && ihsym <= m_waterfallAvg) || (!ndiskdata && ntr<ntrz)) {
+      for (int i=0; i<2048; i++) {
+        swide[i] = 1.e30;
+      }
+      for (int i=0; i<32768; i++) {
+        splot[i] = 1.e30;
+      }
+    }
+    ntrz=ntr;
+    ui->widePlot->draw(swide,i0,splot);
+  }
+}
+
+void WideGraph::on_freqOffsetSpinBox_valueChanged(int f)
+{
+  ui->widePlot->SetFreqOffset(f);
+}
+
+void WideGraph::on_freqSpanSpinBox_valueChanged(int n)
+{
+  ui->widePlot->setNSpan(n);
+  int w = ui->widePlot->plotWidth();
+  int nbpp = n * 32768.0/(w*96.0) + 0.5;
+  if(nbpp < 1) nbpp=1;
+  if(w > 0) {
+    ui->widePlot->setBinsPerPixel(nbpp);
+  }
+}
+
+void WideGraph::on_waterfallAvgSpinBox_valueChanged(int n)
+{
+  m_waterfallAvg = n;
+}
+
+void WideGraph::on_zeroSpinBox_valueChanged(int value)
+{
+  ui->widePlot->setPlotZero(value);
+}
+
+void WideGraph::on_gainSpinBox_valueChanged(int value)
+{
+  ui->widePlot->setPlotGain(value);
+}
+
+void WideGraph::keyPressEvent(QKeyEvent *e)
+{  
+  switch(e->key())
+  {
+  case Qt::Key_F11:
+    emit f11f12(11);
+    break;
+  case Qt::Key_F12:
+    emit f11f12(12);
+    break;
+  default:
+    e->ignore();
+  }
+}
+
+int WideGraph::QSOfreq()
+{
+  return ui->widePlot->fQSO();
+}
+
+int WideGraph::nSpan()
+{
+  return ui->widePlot->m_nSpan;
+}
+
+float WideGraph::fSpan()
+{
+  return ui->widePlot->m_fSpan;
+}
+
+int WideGraph::nStartFreq()
+{
+  return ui->widePlot->startFreq();
+}
+
+void WideGraph::wideFreezeDecode(int n)
+{
+  emit freezeDecode2(n);
+}
+
+void WideGraph::setTol(int n)
+{
+  ui->widePlot->m_tol=n;
+  ui->widePlot->DrawOverlay();
+  ui->widePlot->update();
+}
+
+int WideGraph::Tol()
+{
+  return ui->widePlot->m_tol;
+}
+
+void WideGraph::setDF(int n)
+{
+  ui->widePlot->m_DF=n;
+  ui->widePlot->DrawOverlay();
+  ui->widePlot->update();
+}
+
+void WideGraph::setFcal(int n)
+{
+  m_fCal=n;
+  ui->widePlot->setFcal(n);
+}
+
+void WideGraph::setDecodeFinished()
+{
+  ui->widePlot->DecodeFinished();
+}
+
+int WideGraph::DF()
+{
+  return ui->widePlot->m_DF;
+}
+
+void WideGraph::on_autoZeroPushButton_clicked()
+{
+   int nzero=ui->widePlot->autoZero();
+   ui->zeroSpinBox->setValue(nzero);
+}
+
+void WideGraph::setPalette(QString palette)
+{
+  ui->widePlot->setPalette(palette);
+}
+void WideGraph::setFsample(int n)
+{
+  m_fSample=n;
+  ui->widePlot->setFsample(n);
+}
+
+void WideGraph::setMode65(int n)
+{
+  m_mode65=n;
+  ui->widePlot->setMode65(n);
+}
+
+void WideGraph::on_cbFcenter_stateChanged(int n)
+{
+  m_bForceCenterFreq = (n!=0);
+  if(m_bForceCenterFreq) {
+    ui->fCenterLineEdit->setEnabled(true);
+    ui->pbSetRxHardware->setEnabled(true);
+  } else {
+    ui->fCenterLineEdit->setDisabled(true);
+    ui->pbSetRxHardware->setDisabled(true);
+  }
+}
+
+void WideGraph::on_fCenterLineEdit_editingFinished()
+{
+  m_dForceCenterFreq=ui->fCenterLineEdit->text().toDouble();
+}
+
+void WideGraph::on_pbSetRxHardware_clicked()
+{
+  int iret=set570(m_mult570*(1.0+0.000001*m_cal570)*m_dForceCenterFreq);
+  if(iret != 0) {
+    QMessageBox mb;
+    if(iret==-1) mb.setText("Failed to open Si570.");
+    if(iret==-2) mb.setText("Frequency out of permitted range.");
+    mb.exec();
+  }
+}
+
+void WideGraph::initIQplus()
+{
+  int iret=set570(288.0);
+  if(iret != 0) {
+    QMessageBox mb;
+    if(iret==-1) mb.setText("Failed to open Si570.");
+    if(iret==-2) mb.setText("Frequency out of permitted range.");
+    mb.exec();
+  } else {
+    on_pbSetRxHardware_clicked();
+  }
+}
+
+void WideGraph::on_cbSpec2d_toggled(bool b)
+{
+  ui->widePlot->set2Dspec(b);
+}
+
+double WideGraph::fGreen()
+{
+  return ui->widePlot->fGreen();
+}
+
+void WideGraph::setPeriod(int n)
+{
+  m_TRperiod=n;
+}
+
+void WideGraph::on_cbLockTxRx_stateChanged(int n)
+{
+  m_bLockTxRx = (n!=0);
+  ui->widePlot->setLockTxRx(m_bLockTxRx);
+}
+
+void WideGraph::rx570()
+{
+  double f=m_mult570*(1.0+0.000001*m_cal570)*m_dForceCenterFreq;
+  int iret=set570(f);
+  if(iret != 0) {
+    QMessageBox mb;
+    if(iret==-1) mb.setText("Failed to open Si570.");
+    if(iret==-2) mb.setText("Frequency out of permitted range.");
+    mb.exec();
+  }
+}
+
+void WideGraph::tx570()
+{
+  if(m_bForceCenterFreq) datcom_.fcenter=m_dForceCenterFreq;
+  m_bIQxt=true;
+  double f=ui->widePlot->txFreq();
+//  double f1=m_mult570Tx*(1.0+0.000001*m_cal570) * f;
+  double f1=m_mult570Tx*(1.0+0.000001*m_cal570) * (f - m_TxOffset);
+
+  int iret=set570(f1);
+  if(iret != 0) {
+    QMessageBox mb;
+    if(iret==-1) mb.setText("Failed to open Si570.");
+    if(iret==-2) mb.setText("Frequency out of permitted range.");
+    mb.exec();
+  }
+}
+
+void WideGraph::updateFreqLabel()
+{
+  auto rxFreq = QString {"%1"}.arg (ui->widePlot->rxFreq (), 10, 'f', 6);
+  auto txFreq = QString {"%1"}.arg (ui->widePlot->txFreq (), 10, 'f', 6);
+  rxFreq.insert (rxFreq.size () - 3, '.');
+  txFreq.insert (txFreq.size () - 3, '.');
+  ui->labFreq->setText (QString {"Rx:  %1\nTx:  %2"}.arg (rxFreq, txFreq));
+}
+
+void WideGraph::enableSetRxHardware(bool b)
+{
+  ui->pbSetRxHardware->setEnabled(b);
+}
diff --git a/q65w/widegraph.h b/q65w/widegraph.h
new file mode 100644
index 000000000..1e330cfde
--- /dev/null
+++ b/q65w/widegraph.h
@@ -0,0 +1,92 @@
+#ifndef WIDEGRAPH_H
+#define WIDEGRAPH_H
+
+#include <QDialog>
+
+namespace Ui {
+  class WideGraph;
+}
+
+class WideGraph : public QDialog
+{
+  Q_OBJECT
+
+public:
+  explicit WideGraph (QString const& settings_filename, QWidget * parent = nullptr);
+  ~WideGraph();
+
+  void   dataSink2(float s[], int nkhz, int ihsym, int ndiskdata,
+                   uchar lstrong[]);
+  int    QSOfreq();
+  int    nSpan();
+  int    nStartFreq();
+  float  fSpan();
+  void   saveSettings();
+  void   setDF(int n);
+  int    DF();
+  int    Tol();
+  void   setTol(int n);
+  void   setFcal(int n);
+  void   setPalette(QString palette);
+  void   setFsample(int n);
+  void   setMode65(int n);
+  void   setPeriod(int n);
+  void   setDecodeFinished();
+  double fGreen();
+  void   rx570();
+  void   tx570();
+  void   updateFreqLabel();
+  void   enableSetRxHardware(bool b);
+
+  qint32 m_qsoFreq;
+
+signals:
+  void freezeDecode2(int n);
+  void f11f12(int n);
+
+public slots:
+  void wideFreezeDecode(int n);
+  void initIQplus();
+
+protected:
+  virtual void keyPressEvent( QKeyEvent *e );
+  void resizeEvent(QResizeEvent* event);
+
+private slots:
+  void on_waterfallAvgSpinBox_valueChanged(int arg1);
+  void on_freqSpanSpinBox_valueChanged(int arg1);
+  void on_freqOffsetSpinBox_valueChanged(int arg1);
+  void on_zeroSpinBox_valueChanged(int arg1);
+  void on_gainSpinBox_valueChanged(int arg1);
+  void on_autoZeroPushButton_clicked();
+  void on_cbFcenter_stateChanged(int arg1);
+  void on_fCenterLineEdit_editingFinished();
+  void on_pbSetRxHardware_clicked();
+  void on_cbSpec2d_toggled(bool checked);
+  void on_cbLockTxRx_stateChanged(int arg1);
+
+private:
+  Ui::WideGraph * ui;
+  QString m_settings_filename;
+public:
+  bool   m_bForceCenterFreq;
+private:
+  bool   m_bLockTxRx;
+public:
+  qint32 m_mult570;
+  qint32 m_mult570Tx;
+  double m_dForceCenterFreq;
+  double m_cal570;
+  double m_TxOffset;
+private:
+  bool   m_bIQxt;
+  qint32 m_waterfallAvg;
+  qint32 m_fCal;
+  qint32 m_fSample;
+  qint32 m_mode65;
+  qint32 m_TRperiod=60;
+};
+
+extern int set570(double freq_MHz);
+
+#endif // WIDEGRAPH_H
diff --git a/q65w/widegraph.ui b/q65w/widegraph.ui
new file mode 100644
index 000000000..38f90d47d
--- /dev/null
+++ b/q65w/widegraph.ui
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WideGraph</class>
+ <widget class="QDialog" name="WideGraph">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1178</width>
+    <height>326</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="CPlotter" name="widePlot">
+     <property name="enabled">
+      <bool>true</bool>
+     </property>
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>400</width>
+       <height>200</height>
+      </size>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Sunken</enum>
+     </property>
+     <property name="lineWidth">
+      <number>1</number>
+     </property>
+     <widget class="QLabel" name="labFreq">
+      <property name="geometry">
+       <rect>
+        <x>940</x>
+        <y>230</y>
+        <width>211</width>
+        <height>41</height>
+       </rect>
+      </property>
+      <property name="font">
+       <font>
+        <pointsize>12</pointsize>
+       </font>
+      </property>
+      <property name="styleSheet">
+       <string notr="true">QLabel {
+	background-color: rgba(0, 0, 0, 0);
+	color: yellow;
+}</string>
+      </property>
+      <property name="text">
+       <string>Rx:  144.118.200
+Tx:  144.127.317</string>
+      </property>
+      <property name="alignment">
+       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+      </property>
+     </widget>
+    </widget>
+   </item>
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="freqOffsetSpinBox">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>60</width>
+           <height>0</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="suffix">
+          <string> kHz</string>
+         </property>
+         <property name="prefix">
+          <string>Offset </string>
+         </property>
+         <property name="minimum">
+          <number>-24</number>
+         </property>
+         <property name="maximum">
+          <number>24</number>
+         </property>
+         <property name="singleStep">
+          <number>1</number>
+         </property>
+         <property name="value">
+          <number>0</number>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="freqSpanSpinBox">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>60</width>
+           <height>0</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="suffix">
+          <string> kHz</string>
+         </property>
+         <property name="prefix">
+          <string>Span </string>
+         </property>
+         <property name="minimum">
+          <number>5</number>
+         </property>
+         <property name="maximum">
+          <number>90</number>
+         </property>
+         <property name="singleStep">
+          <number>5</number>
+         </property>
+         <property name="value">
+          <number>60</number>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="waterfallAvgSpinBox">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>0</width>
+           <height>0</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="prefix">
+          <string>N Avg </string>
+         </property>
+         <property name="minimum">
+          <number>1</number>
+         </property>
+         <property name="maximum">
+          <number>20</number>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="gainSpinBox">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="prefix">
+          <string>Gain </string>
+         </property>
+         <property name="minimum">
+          <number>-20</number>
+         </property>
+         <property name="maximum">
+          <number>20</number>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QSpinBox" name="zeroSpinBox">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>16777215</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="prefix">
+          <string>Zero </string>
+         </property>
+         <property name="minimum">
+          <number>-100</number>
+         </property>
+         <property name="maximum">
+          <number>100</number>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="autoZeroPushButton">
+         <property name="text">
+          <string>Auto Zero</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="cbSpec2d">
+         <property name="text">
+          <string>2D Spectrum</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="cbLockTxRx">
+         <property name="text">
+          <string>Lock Tx=Rx Freq</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="cbFcenter">
+         <property name="text">
+          <string>Force Center Freq (MHz)</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="fCenterLineEdit">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>65</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string>1296.065</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QPushButton" name="pbSetRxHardware">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="text">
+          <string>Set Rx Freq</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>CPlotter</class>
+   <extends>QFrame</extends>
+   <header>plotter.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/q65w/wsjt.ico b/q65w/wsjt.ico
new file mode 100644
index 0000000000000000000000000000000000000000..8a55550f526add05720ee104c9e26cda6b73f1f0
GIT binary patch
literal 1078
zcmd6mK~4iP3`O07gfxm!Z@{cjkHOJ$lvzhPMAnfH!IC4e8{T(jT2vLp61R!{{cUHG
zIA#Ys+B~03@^LhKMW0RspATlw4`ye4GvkeMut#RIOzeHhkT5w9#f)jKHMEE|{<f~N
z82seYbXOd?5=pSvws``2slGYHy6{LzLg3;fV24{k`i`kEaFImC3oT5=Uog~`?xnLF
z(o!g;hTP&M$vt9a1-?Xk7w&<p=rS-?7w&=i(q5wk*l>ciTk(9aFe2=?xU=6L^jJgt
zzhad$8?<<pGn;VKs)9jB0Ctb+Tfo4J5Hcybcnc7d<G7;#WU0^9`7>kh^M-w2GCdAM
zPlsa0j2>67|E<rHcZDX-w_-R)Rin?ii0CKj2CY*>ca(H-j(myhQlAi2(T0W@*QWdC
i@T)H@Fx6NGOY-?*_Ws11<ZWl(xW-Si^NLlDa=!o()_=tS

literal 0
HcmV?d00001