Designating the four locator characters as [Loc 1] to [Loc 4], the first two can each take on the 18 values ‘A’ to ‘R’ only so are allocated numbers from 0 – 17. The second pair can take only the values 0 – 9.
Another integer M is formed from:
M1 = (179 - 10 * [Loc 1] - [Loc 3] ) * 180 + 10 * [Loc 2] + [Loc 4]
Which gives a range of values from ‘AA00’ = 32220 to ‘RR99’ = 179, which comfortably fit into a 15 bit representation (2^15 = 32768), leaving spare codes for further enhancements.
The useful bit here was the information that AA00 = 32220 and RR99 = 179. The algorithm above is not quite correct however. The corrected form should be:
This appears to give me the correct results for these end cases, so assuming that useful bit is accurate, I should be good to go. I will be testing against the WSPR application and posting the final code bits for those interested very soon.