diff --git a/README.md b/README.md
index 455ab63..d41433d 100644
--- a/README.md
+++ b/README.md
@@ -198,8 +198,11 @@ name and the comment — and round again; shift and tab go the other way. N1MM
does not touch the tab key at all, so tab there walks its boxes in the order
they are laid out, which is what this does.
-Two lights sit beside the run switch: the left one is green while a radio is
-answering, the right one red while something is going out on the air.
+Run and S&P are two buttons beside the lights; the one you are in is marked.
+Ctrl+? switches between them, and F1 puts you into run mode, as in N1MM.
+
+Two lights sit beside them: the left one is green while a radio is answering,
+the right one red while something is going out on the air.
### The buttons and the title bar
@@ -226,14 +229,18 @@ when this is the frequency you last called CQ on. While searching, space with an
empty callsign box takes the station out of the frame and into the box, so a
spotted station is worked without typing its call. While running it does not,
because a running station is answering callers rather than chasing the one it is
-sitting on. How close the radio has to be to a spot is `TuningToleranceHertz` in
-`settings.json`, 300 Hz out of the box, which is N1MM's default.
+sitting on. How close the radio has to be to a spot is one number per mode in
+`settings.json` — `CwTuningToleranceHertz`, `PhoneTuningToleranceHertz` and
+`DigitalTuningToleranceHertz` — 300 Hz each out of the box, which is how N1MM
+keeps them and what it defaults them to.
### Where the other station is
Under the entry window is the line N1MM writes there: the beam heading, the
heading the long way round, the distance in kilometres, and the sunrise and
-sunset times at the other station.
+sunset times at the other station, in kilometres and miles as N1MM shows them.
+When it cannot be worked out the line says which end could not be placed, rather
+than going blank.
The position comes from the grid square when the contest exchanges one and it
has been copied, or from the call history file, and from the country file
diff --git a/src/Nonemm.App/Configuration/Settings.cs b/src/Nonemm.App/Configuration/Settings.cs
index 40b4271..43c5f35 100644
--- a/src/Nonemm.App/Configuration/Settings.cs
+++ b/src/Nonemm.App/Configuration/Settings.cs
@@ -67,9 +67,19 @@ public sealed record Settings
public bool EsmSendsCorrectedCall { get; init; } = true;
/// How close to a spot the radio has to be for the entry window to say the
- /// station is there. N1MM asks for the same number, one per mode; this is
- /// one number for all of them.
- public int TuningToleranceHertz { get; init; } = 300;
+ /// station is there. N1MM keeps one per mode and defaults each to 300 Hz.
+ public int CwTuningToleranceHertz { get; init; } = 300;
+
+ public int PhoneTuningToleranceHertz { get; init; } = 300;
+
+ public int DigitalTuningToleranceHertz { get; init; } = 300;
+
+ public int TuningToleranceFor(ModeCategory mode) => mode switch
+ {
+ ModeCategory.Phone => PhoneTuningToleranceHertz,
+ ModeCategory.Digital => DigitalTuningToleranceHertz,
+ _ => CwTuningToleranceHertz,
+ };
/// How far `{FREQUP}` and `{FREQDN}` move the radio. N1MM asks for the same
/// number in its Configurer.
diff --git a/src/Nonemm.App/Windows/EntryWindow.CallFrame.cs b/src/Nonemm.App/Windows/EntryWindow.CallFrame.cs
index 5e10ee9..203e58b 100644
--- a/src/Nonemm.App/Windows/EntryWindow.CallFrame.cs
+++ b/src/Nonemm.App/Windows/EntryWindow.CallFrame.cs
@@ -20,8 +20,12 @@ public sealed partial class EntryWindow
/// one, and neither is nothing.
private string framedCall = "";
+ /// How close counts as sitting on a spot, which is a different number for
+ /// each mode: a phone signal is wide and a CW one is not.
private Frequency TuningTolerance =>
- Frequency.FromHertz(Math.Max(0, session.Settings.TuningToleranceHertz));
+ Frequency.FromHertz(Math.Max(
+ 0,
+ session.Settings.TuningToleranceFor(Logging?.Mode.Category ?? ModeCategory.Cw)));
private void ShowCallFrame()
{
diff --git a/src/Nonemm.App/Windows/EntryWindow.axaml b/src/Nonemm.App/Windows/EntryWindow.axaml
index e05cbf9..6d7f550 100644
--- a/src/Nonemm.App/Windows/EntryWindow.axaml
+++ b/src/Nonemm.App/Windows/EntryWindow.axaml
@@ -17,6 +17,21 @@
+
+
+
+
+