mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	Merge branch 'release-2.1.0' of bitbucket.org:k1jt/wsjtx into release-2.1.0
This commit is contained in:
		
						commit
						4d1c5b9b70
					
				@ -52,6 +52,7 @@ set (UG_SRCS
 | 
				
			|||||||
  tutorial-example1.adoc
 | 
					  tutorial-example1.adoc
 | 
				
			||||||
  tutorial-example2.adoc
 | 
					  tutorial-example2.adoc
 | 
				
			||||||
  tutorial-example3.adoc
 | 
					  tutorial-example3.adoc
 | 
				
			||||||
 | 
					  tutorial-example4.adoc
 | 
				
			||||||
  tutorial-main-window.adoc
 | 
					  tutorial-main-window.adoc
 | 
				
			||||||
  tutorial-wide-graph-settings.adoc
 | 
					  tutorial-wide-graph-settings.adoc
 | 
				
			||||||
  utilities.adoc
 | 
					  utilities.adoc
 | 
				
			||||||
@ -77,6 +78,8 @@ set (UG_IMGS
 | 
				
			|||||||
  images/FreqCal_Graph.png
 | 
					  images/FreqCal_Graph.png
 | 
				
			||||||
  images/FreqCal_Results.png
 | 
					  images/FreqCal_Results.png
 | 
				
			||||||
  images/freemsg.png
 | 
					  images/freemsg.png
 | 
				
			||||||
 | 
					  images/ft4_decodes.png
 | 
				
			||||||
 | 
					  images/ft4_waterfall.png
 | 
				
			||||||
  images/ft8_decodes.png
 | 
					  images/ft8_decodes.png
 | 
				
			||||||
  images/FT8_waterfall.png
 | 
					  images/FT8_waterfall.png
 | 
				
			||||||
  images/help-menu.png
 | 
					  images/help-menu.png
 | 
				
			||||||
 | 
				
			|||||||
@ -116,6 +116,7 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes.
 | 
				
			|||||||
:QRA64_EME: http://physics.princeton.edu/pulsar/K1JT/QRA64_EME.pdf[QRA64 for microwave EME]
 | 
					:QRA64_EME: http://physics.princeton.edu/pulsar/K1JT/QRA64_EME.pdf[QRA64 for microwave EME]
 | 
				
			||||||
:svn: http://subversion.apache.org/packages.html#windows[Subversion]
 | 
					:svn: http://subversion.apache.org/packages.html#windows[Subversion]
 | 
				
			||||||
:win32: http://physics.princeton.edu/pulsar/K1JT/wsjtx-{VERSION}-win32.exe[wsjtx-{VERSION}-win32.exe]
 | 
					:win32: http://physics.princeton.edu/pulsar/K1JT/wsjtx-{VERSION}-win32.exe[wsjtx-{VERSION}-win32.exe]
 | 
				
			||||||
 | 
					:win64: http://physics.princeton.edu/pulsar/K1JT/wsjtx-{VERSION}-win64.exe[wsjtx-{VERSION}-win64.exe]
 | 
				
			||||||
:wsjt-devel: https://lists.sourceforge.net/lists/listinfo/wsjt-devel[here]
 | 
					:wsjt-devel: https://lists.sourceforge.net/lists/listinfo/wsjt-devel[here]
 | 
				
			||||||
:wsjt_repo: https://sourceforge.net/p/wsjt/wsjt_orig/ci/master/tree/[WSJT Source Repository]
 | 
					:wsjt_repo: https://sourceforge.net/p/wsjt/wsjt_orig/ci/master/tree/[WSJT Source Repository]
 | 
				
			||||||
:wspr_code: http://physics.princeton.edu/pulsar/K1JT/WSPRcode.exe[WSPRcode.exe]
 | 
					:wspr_code: http://physics.princeton.edu/pulsar/K1JT/WSPRcode.exe[WSPRcode.exe]
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								doc/user_guide/en/images/ft4_decodes.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doc/user_guide/en/images/ft4_decodes.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 23 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								doc/user_guide/en/images/ft4_waterfall.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doc/user_guide/en/images/ft4_waterfall.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 35 KiB  | 
@ -1,11 +1,12 @@
 | 
				
			|||||||
// Status=review
 | 
					// Status=review
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Download and execute the package file {win32}, following these
 | 
					Download and execute the package file {win32} (WinXP, Vista, Win 7,
 | 
				
			||||||
instructions:
 | 
					Win 8, Win10, 32-bit) or {win64} (Vista, Win 7, Win 8, Win10, 64-bit)
 | 
				
			||||||
 | 
					following these instructions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Install _WSJT-X_ into its own directory, for example `C:\WSJTX` or `
 | 
					* Install _WSJT-X_ into its own directory, for example `C:\WSJTX` or `
 | 
				
			||||||
  C:\WSJT\WSJTX`, rather than the conventional location `C:\Program
 | 
					  C:\WSJT\WSJTX`, rather than the conventional location `C:\Program
 | 
				
			||||||
  Files (x86)\WSJTX`.
 | 
					  Files ...\WSJTX`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* All program files relating to _WSJT-X_ will be stored in the chosen
 | 
					* All program files relating to _WSJT-X_ will be stored in the chosen
 | 
				
			||||||
  installation directory and its subdirectories.
 | 
					  installation directory and its subdirectories.
 | 
				
			||||||
 | 
				
			|||||||
@ -7,10 +7,10 @@ K1**JT**,`" while the suffix "`-X`" indicates that _WSJT-X_ started as
 | 
				
			|||||||
an extended and experimental branch of the program
 | 
					an extended and experimental branch of the program
 | 
				
			||||||
_WSJT_.
 | 
					_WSJT_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_WSJT-X_ Version {VERSION_MAJOR}.{VERSION_MINOR} offers nine different
 | 
					_WSJT-X_ Version {VERSION_MAJOR}.{VERSION_MINOR} offers ten different
 | 
				
			||||||
protocols or modes: *FT8*, *JT4*, *JT9*, *JT65*, *QRA64*, *ISCAT*,
 | 
					protocols or modes: *FT4*, *FT8*, *JT4*, *JT9*, *JT65*, *QRA64*,
 | 
				
			||||||
*MSK144*, *WSPR*, and *Echo*.  The first five are designed for making
 | 
					*ISCAT*, *MSK144*, *WSPR*, and *Echo*.  The first six are designed for
 | 
				
			||||||
reliable QSOs under extreme weak-signal conditions. They use nearly
 | 
					making reliable QSOs under weak-signal conditions. They use nearly
 | 
				
			||||||
identical message structure and source encoding.  JT65 and QRA64 were
 | 
					identical message structure and source encoding.  JT65 and QRA64 were
 | 
				
			||||||
designed for EME ("`moonbounce`") on the VHF/UHF bands and have also
 | 
					designed for EME ("`moonbounce`") on the VHF/UHF bands and have also
 | 
				
			||||||
proven very effective for worldwide QRP communication on the HF bands.
 | 
					proven very effective for worldwide QRP communication on the HF bands.
 | 
				
			||||||
@ -25,12 +25,17 @@ one-minute timed sequences of alternating transmission and reception,
 | 
				
			|||||||
so a minimal QSO takes four to six minutes — two or three
 | 
					so a minimal QSO takes four to six minutes — two or three
 | 
				
			||||||
transmissions by each station, one sending in odd UTC minutes and the
 | 
					transmissions by each station, one sending in odd UTC minutes and the
 | 
				
			||||||
other even.  FT8 is operationally similar but four times faster
 | 
					other even.  FT8 is operationally similar but four times faster
 | 
				
			||||||
(15-second T/R sequences) and less sensitive by a few dB.  On the HF
 | 
					(15-second T/R sequences) and less sensitive by a few dB.  FT4 is
 | 
				
			||||||
bands, world-wide QSOs are possible with any of these modes using
 | 
					faster still (7.5 s T/R sequences) and especially well suited for
 | 
				
			||||||
power levels of a few watts (or even milliwatts) and compromise
 | 
					radio contesting.  On the HF bands, world-wide QSOs are possible with
 | 
				
			||||||
antennas.  On VHF bands and higher, QSOs are possible (by EME and
 | 
					any of these modes using power levels of a few watts (or even
 | 
				
			||||||
other propagation types) at signal levels 10 to 15 dB below those
 | 
					milliwatts) and compromise antennas.  On VHF bands and higher, QSOs
 | 
				
			||||||
required for CW.
 | 
					are possible (by EME and other propagation types) at signal levels 10
 | 
				
			||||||
 | 
					to 15 dB below those required for CW.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note that even though their T/R sequences are short, FT4 and FT8 are
 | 
				
			||||||
 | 
					classified as slow modes because their message frames are sent
 | 
				
			||||||
 | 
					only once per transmission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*ISCAT*, *MSK144*, and optionally submodes *JT9E-H* are "`fast`"
 | 
					*ISCAT*, *MSK144*, and optionally submodes *JT9E-H* are "`fast`"
 | 
				
			||||||
protocols designed to take advantage of brief signal enhancements from
 | 
					protocols designed to take advantage of brief signal enhancements from
 | 
				
			||||||
@ -65,10 +70,10 @@ are available for all three platforms.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*Version Numbers:* _WSJT-X_ release numbers have major, minor, and
 | 
					*Version Numbers:* _WSJT-X_ release numbers have major, minor, and
 | 
				
			||||||
patch numbers separated by periods: for example, _WSJT-X_ Version
 | 
					patch numbers separated by periods: for example, _WSJT-X_ Version
 | 
				
			||||||
1.9.0.  Temporary "`beta`" release candidates are sometimes made in
 | 
					2.1.0.  Temporary _beta release_ candidates are sometimes made in
 | 
				
			||||||
advance of a new general-availability release, in order to obtain user
 | 
					advance of a new general-availability release, in order to obtain user
 | 
				
			||||||
feedback.  For example, version 1.9.0-rc1, 1.9.0-rc2, etc., would
 | 
					feedback.  For example, version 2.1.0-rc1, 2.1.0-rc2, etc., would
 | 
				
			||||||
be beta releases leading up to the final release of v1.9.0.
 | 
					be beta releases leading up to the final release of v2.1.0.
 | 
				
			||||||
Release candidates should be used _only_ during a short testing
 | 
					Release candidates should be used _only_ during a short testing
 | 
				
			||||||
period. They carry an implied obligation to provide feedback to the
 | 
					period. They carry an implied obligation to provide feedback to the
 | 
				
			||||||
program development group.  Candidate releases should not be used on
 | 
					program development group.  Candidate releases should not be used on
 | 
				
			||||||
 | 
				
			|||||||
@ -1,40 +1,17 @@
 | 
				
			|||||||
=== New in Version {VERSION}
 | 
					=== New in Version {VERSION}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For quick reference, here's a short list of features and capabilities
 | 
					For quick reference, here's a short list of features and capabilities
 | 
				
			||||||
added to _WSJT-X_ since Version 1.9.1:
 | 
					added to _WSJT-X_ since Version 2.0.1:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- New FT8 and MSK144 protocols with 77-bit payloads permit these enhancements:
 | 
					- New FT4 protocol, designed especially for radio contesting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Optimized contest messages for NA VHF, EU VHF, Field Day, RTTY Roundup
 | 
					* T/R sequence length 7.5 s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Full support for "/R" and "/P" calls in relevant contests
 | 
					* Bandwidth 80 Hz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* New logging features for contesting
 | 
					* Threshold sensitivity -17.5 dB
 | 
				
			||||||
 | 
					 | 
				
			||||||
* Integration with {n1mm_logger} and {writelog} for contesting
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* Improved support for compound and nonstandard callsigns
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* Nearly equal (or better) sensitivity compared to old protocols
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* Lower false decode rates
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- Improved color highlighting of received messages
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- Improved WSPR sensitivity
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- Expanded and improved UDP messages sent to companion programs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- Bug fixes and other minor tweaks to user interface
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPORTANT: Note that for FT8 and MSK144 there is no backward
 | 
					 | 
				
			||||||
compatibility with WSJT-X 1.9.1 and earlier.  Everyone using these
 | 
					 | 
				
			||||||
modes should upgrade to WSJT-X 2.0 by January 1, 2019.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
IMPORTANT: _WSJT-X_ Version 2.0 drops support for Apple Mac OS X 10.9
 | 
					 | 
				
			||||||
(Mavericks). It is possible to build from source for this operating
 | 
					 | 
				
			||||||
system version but the DMG installer package requires 10.10 or later.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Improvements to accessibility
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=== Documentation Conventions
 | 
					=== Documentation Conventions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -12,10 +12,10 @@ Special cases allow other information such as add-on callsign prefixes
 | 
				
			|||||||
aim is to compress the most common messages used for minimally valid
 | 
					aim is to compress the most common messages used for minimally valid
 | 
				
			||||||
QSOs into a fixed 72-bit length.
 | 
					QSOs into a fixed 72-bit length.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The information payload for FT8 and MSK144 contains 77 bits.  The 5
 | 
					The information payload for FT4, FT8, and MSK144 contains 77 bits.
 | 
				
			||||||
additional bits are used to flag special message types used for FT8
 | 
					The 5 additional bits are used to flag special message types used for
 | 
				
			||||||
DXpedition Mode, contesting, nonstandard callsigns, and a few other
 | 
					FT8 DXpedition Mode, contesting, nonstandard callsigns, and a few
 | 
				
			||||||
special types.
 | 
					other special types.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
A standard amateur callsign consists of a one- or two-character
 | 
					A standard amateur callsign consists of a one- or two-character
 | 
				
			||||||
prefix, at least one of which must be a letter, followed by a digit
 | 
					prefix, at least one of which must be a letter, followed by a digit
 | 
				
			||||||
@ -67,18 +67,29 @@ _WSJT-X_ modes have continuous phase and constant envelope.
 | 
				
			|||||||
[[SLOW_MODES]]
 | 
					[[SLOW_MODES]]
 | 
				
			||||||
=== Slow Modes
 | 
					=== Slow Modes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[FT4PRO]]
 | 
				
			||||||
 | 
					==== FT4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Forward error correction (FEC) in FT4 uses a low-density parity check
 | 
				
			||||||
 | 
					(LDPC) code with 77 information bits, a 14-bit cyclic redundancy check
 | 
				
			||||||
 | 
					(CRC), and 83 parity bits making a 174-bit codeword.  It is thus
 | 
				
			||||||
 | 
					called an LDPC (174,91) code.  Synchronization uses four 4×4 Costas
 | 
				
			||||||
 | 
					arrays, and ramp-up and ramp-down symbols are inserted at the start
 | 
				
			||||||
 | 
					and end of each transmission.  Modulation is 4-tone frequency-shift
 | 
				
			||||||
 | 
					keying with Gaussian smoothing of frequency transitions (4-GFSK).  The
 | 
				
			||||||
 | 
					keying rate is 12000/576 = 20.8333 baud.  Each transmitted symbol
 | 
				
			||||||
 | 
					conveys two bits, so the total number of channel symbols is 174/2 + 16
 | 
				
			||||||
 | 
					+ 2 = 105.  The total bandwidth is 4 × 20.8333 = 83.3 Hz.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[FT8PRO]]
 | 
					[[FT8PRO]]
 | 
				
			||||||
==== FT8
 | 
					==== FT8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Forward error correction (FEC) in FT8 uses a low-density parity check
 | 
					FT8 uses the same LDPC (174,91) code as FT4.  Modulation is 8-tone
 | 
				
			||||||
(LDPC) code with 77 information bits, a 14-bit cyclic redundancy check
 | 
					frequency-shift keying (8-GFSK) at 12000/1920 = 6.25 baud.
 | 
				
			||||||
(CRC), and 83 parity bits making a 174-bit codeword.  It is thus
 | 
					Synchronization uses 7×7 Costas arrays at the beginning, middle, and
 | 
				
			||||||
called an LDPC (174,91) code.  Synchronization uses 7×7 Costas arrays
 | 
					end of each transmission.  Transmitted symbols carry three bits, so
 | 
				
			||||||
at the beginning, middle, and end of each transmission.  Modulation is
 | 
					the total number of channel symbols is 174/3 + 21 = 79.  The total
 | 
				
			||||||
8-tone frequency-shift keying (8-FSK) at 12000/1920 = 6.25 baud.  Each
 | 
					occupied bandwidth is 8 × 6.25 = 50 Hz.
 | 
				
			||||||
transmitted symbol carries three bits, so the total number of channel
 | 
					 | 
				
			||||||
symbols is 174/3 + 21 = 79.  The total occupied bandwidth is 8 × 6.25
 | 
					 | 
				
			||||||
= 50 Hz.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[JT4PRO]]
 | 
					[[JT4PRO]]
 | 
				
			||||||
==== JT4
 | 
					==== JT4
 | 
				
			||||||
@ -227,7 +238,8 @@ which the probability of decoding is 50% or higher.
 | 
				
			|||||||
|===============================================================================
 | 
					|===============================================================================
 | 
				
			||||||
|Mode |FEC Type |(n,k) | Q|Modulation type|Keying rate (Baud)|Bandwidth (Hz)
 | 
					|Mode |FEC Type |(n,k) | Q|Modulation type|Keying rate (Baud)|Bandwidth (Hz)
 | 
				
			||||||
|Sync Energy|Tx Duration (s)|S/N Threshold (dB)
 | 
					|Sync Energy|Tx Duration (s)|S/N Threshold (dB)
 | 
				
			||||||
|FT8  |LDPC, r=1/2|(174,91)| 8| 8-FSK| 6.25 | 50.0 | 0.27| 12.6 | -21
 | 
					|FT4  |LDPC, r=1/2|(174,91)| 4| 4-GFSK| 20.8333 | 83.3 | 0.15| 5.04 | -17.5
 | 
				
			||||||
 | 
					|FT8  |LDPC, r=1/2|(174,91)| 8| 8-GFSK| 6.25 | 50.0 | 0.27| 12.6 | -21
 | 
				
			||||||
|JT4A |K=32, r=1/2|(206,72)| 2| 4-FSK| 4.375| 17.5 | 0.50| 47.1 | -23
 | 
					|JT4A |K=32, r=1/2|(206,72)| 2| 4-FSK| 4.375| 17.5 | 0.50| 47.1 | -23
 | 
				
			||||||
|JT9A |K=32, r=1/2|(206,72)| 8| 9-FSK| 1.736| 15.6 | 0.19| 49.0 | -27
 | 
					|JT9A |K=32, r=1/2|(206,72)| 8| 9-FSK| 1.736| 15.6 | 0.19| 49.0 | -27
 | 
				
			||||||
|JT65A |Reed Solomon|(63,12) |64|65-FSK| 2.692| 177.6 | 0.50| 46.8 | -25
 | 
					|JT65A |Reed Solomon|(63,12) |64|65-FSK| 2.692| 177.6 | 0.50| 46.8 | -25
 | 
				
			||||||
@ -246,6 +258,7 @@ comparable to tone spacing.
 | 
				
			|||||||
[width="50%",cols="h,3*^",frame=topbot,options="header"]
 | 
					[width="50%",cols="h,3*^",frame=topbot,options="header"]
 | 
				
			||||||
|=====================================
 | 
					|=====================================
 | 
				
			||||||
|Mode  |Tone Spacing  |BW (Hz)|S/N (dB)
 | 
					|Mode  |Tone Spacing  |BW (Hz)|S/N (dB)
 | 
				
			||||||
 | 
					|FT4   |20.8333 | 83.3  |-17.5
 | 
				
			||||||
|FT8   |6.25 |  50.0  |-21
 | 
					|FT8   |6.25 |  50.0  |-21
 | 
				
			||||||
|JT4A  |4.375|  17.5  |-23
 | 
					|JT4A  |4.375|  17.5  |-23
 | 
				
			||||||
|JT4B  |8.75 |  30.6  |-22
 | 
					|JT4B  |8.75 |  30.6  |-22
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										51
									
								
								doc/user_guide/en/tutorial-example4.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								doc/user_guide/en/tutorial-example4.adoc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					// Status=review
 | 
				
			||||||
 | 
					.Main Window:
 | 
				
			||||||
 | 
					- Select *FT4* on the *Mode* menu.
 | 
				
			||||||
 | 
					- Double-click on *Erase* to clear both text windows.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.Wide Graph Settings:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- *Bins/Pixel* = 7, *Start* = 100 Hz, *N Avg* = 1
 | 
				
			||||||
 | 
					- Adjust the width of the Wide Graph window so that the upper
 | 
				
			||||||
 | 
					frequency limit is approximately 4000 Hz.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.Open a Wave File:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Select *File | Open* and navigate to
 | 
				
			||||||
 | 
					+...\save\samples\FT4\000000_000002.wav+.  The waterfall and Band
 | 
				
			||||||
 | 
					Activity window should look something like the following screen shots.
 | 
				
			||||||
 | 
					Most of the decoded messages use the *RTTY Roundup* message formats.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[X15]]
 | 
				
			||||||
 | 
					image::ft4_waterfall.png[align="left",alt="Wide Graph Decode FT4"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					image::ft4_decodes.png[align="left"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Click with the mouse anywhere on the waterfall display. The green Rx
 | 
				
			||||||
 | 
					frequency marker will jump to your selected frequency, and the Rx
 | 
				
			||||||
 | 
					frequency control on the main window will be updated accordingly.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Do the same thing with the *Shift* key held down.  Now the red Tx
 | 
				
			||||||
 | 
					frequency marker and its associated control on the main window will
 | 
				
			||||||
 | 
					follow your frequency selections.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Do the same thing with the *Ctrl* key held down.  Now the both colored 
 | 
				
			||||||
 | 
					markers and both spinner controls will follow your selections.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Now double-click on any of the the lines of decoded text in the Band
 | 
				
			||||||
 | 
					Activity window.  Any line will show similar behavior, setting
 | 
				
			||||||
 | 
					Rx frequency to that of the selected message and leaving Tx frequency
 | 
				
			||||||
 | 
					unchanged.  To change both Rx and Tx frequencies, hold *Ctrl* down
 | 
				
			||||||
 | 
					when double-clicking.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TIP: To avoid QRM from competing callers, it is frequently desirable
 | 
				
			||||||
 | 
					to answer a CQ on a different frequency from that of the CQing
 | 
				
			||||||
 | 
					station.  The same is true when you tail-end another QSO.  Choose a Tx
 | 
				
			||||||
 | 
					frequency that appears to be not in use.  You might want to check the
 | 
				
			||||||
 | 
					box *Hold Tx Freq*.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TIP: Keyboard shortcuts *Shift+F11* and *Shift+F12* provide an easy
 | 
				
			||||||
 | 
					way to move your FT4 Tx frequency down or up in 90 Hz steps.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IMPORTANT: When finished with this Tutorial, don't forget to re-enter
 | 
				
			||||||
 | 
					your own callsign as *My Call* on the *Settings | General* tab.
 | 
				
			||||||
@ -140,6 +140,10 @@ include::tutorial-example2.adoc[]
 | 
				
			|||||||
=== FT8
 | 
					=== FT8
 | 
				
			||||||
include::tutorial-example3.adoc[]
 | 
					include::tutorial-example3.adoc[]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[TUT_EX4]]
 | 
				
			||||||
 | 
					=== FT4
 | 
				
			||||||
 | 
					include::tutorial-example4.adoc[]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[MAKE_QSOS]]
 | 
					[[MAKE_QSOS]]
 | 
				
			||||||
== Making QSOs
 | 
					== Making QSOs
 | 
				
			||||||
include::make-qso.adoc[]
 | 
					include::make-qso.adoc[]
 | 
				
			||||||
 | 
				
			|||||||
@ -22,15 +22,10 @@ i3.n3 Example message                    Bits           Total  Purpose
 | 
				
			|||||||
2     PA3XYZ/P GM4ABC/P R JO22           28 1 28 1 1 15   74   EU VHF contest
 | 
					2     PA3XYZ/P GM4ABC/P R JO22           28 1 28 1 1 15   74   EU VHF contest
 | 
				
			||||||
3     TU; W9XYZ K1ABC R 579 MA           1 28 28 1 3 13   74   ARRL RTTY Roundup
 | 
					3     TU; W9XYZ K1ABC R 579 MA           1 28 28 1 3 13   74   ARRL RTTY Roundup
 | 
				
			||||||
4     <WA9XYZ> PJ4/KA1ABC RR73           12 58 1 2 1      74   Nonstandard calls
 | 
					4     <WA9XYZ> PJ4/KA1ABC RR73           12 58 1 2 1      74   Nonstandard calls
 | 
				
			||||||
5     ... tbd
 | 
					5     TU; W9XYZ K1ABC R-07 FN            1 28 28 1 7 9    74   WWROF contest ?
 | 
				
			||||||
6     ... tbd
 | 
					6     ... tbd
 | 
				
			||||||
7     ... tbd
 | 
					7     ... tbd
 | 
				
			||||||
----------------------------------------------------------------------------------
 | 
					----------------------------------------------------------------------------------
 | 
				
			||||||
In case we need them, later:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
5     TU; W9XYZ K1ABC R 579 8 MA         1 28 28 1 3 6 7  74   CQ WW RTTY
 | 
					 | 
				
			||||||
6     TU; W9XYZ K1ABC R 579 MA           1 28 28 1 3 13   74   CQ WPX RTTY
 | 
					 | 
				
			||||||
----------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
NB: three 74-bit message types and two 71-bit message subtypes are still TBD.
 | 
					NB: three 74-bit message types and two 71-bit message subtypes are still TBD.
 | 
				
			||||||
----------------------------------------------------------------------------------
 | 
					----------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -72,7 +72,18 @@ CQ W9XYZ EN37
 | 
				
			|||||||
                                   W9XYZ <YW18FIFA> R-09
 | 
					                                   W9XYZ <YW18FIFA> R-09
 | 
				
			||||||
YW18FIFA <W9XYZ> RRR
 | 
					YW18FIFA <W9XYZ> RRR
 | 
				
			||||||
                                   <W9XYZ> YW18FIFA 73
 | 
					                                   <W9XYZ> YW18FIFA 73
 | 
				
			||||||
10. Other stuff
 | 
					
 | 
				
			||||||
 | 
					10. WWROF FT8/FT4 contest
 | 
				
			||||||
 | 
					-----------------------------------------------------------
 | 
				
			||||||
 | 
					CQ TEST K1ABC FN42
 | 
				
			||||||
 | 
					                                   K1ABC W9XYZ -16 EN
 | 
				
			||||||
 | 
					W9XYZ K1ABC R-07 FN
 | 
				
			||||||
 | 
					                                   K1ABC W9XYZ RR73
 | 
				
			||||||
 | 
					                                   K1ABC G3AAA -11 IO
 | 
				
			||||||
 | 
					TU; G3AAA K1ABC R-09 FN
 | 
				
			||||||
 | 
					                                   K1ABC G3AAA RR73
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					11. Other stuff
 | 
				
			||||||
-----------------------------------------------------------
 | 
					-----------------------------------------------------------
 | 
				
			||||||
TNX BOB 73 GL
 | 
					TNX BOB 73 GL
 | 
				
			||||||
CQ YW18FIFA
 | 
					CQ YW18FIFA
 | 
				
			||||||
 | 
				
			|||||||
@ -172,6 +172,10 @@ subroutine pack77(msg0,i3,n3,c77)
 | 
				
			|||||||
  call pack77_4(nwords,w,i3,n3,c77)
 | 
					  call pack77_4(nwords,w,i3,n3,c77)
 | 
				
			||||||
  if(i3.ge.0) go to 900
 | 
					  if(i3.ge.0) go to 900
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					! Check Type 5 (WWROF contest exchange)
 | 
				
			||||||
 | 
					  call pack77_5(nwords,w,i3,n3,c77)
 | 
				
			||||||
 | 
					  if(i3.ge.0) go to 900
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! It defaults to free text
 | 
					! It defaults to free text
 | 
				
			||||||
800 i3=0
 | 
					800 i3=0
 | 
				
			||||||
  n3=0
 | 
					  n3=0
 | 
				
			||||||
@ -204,6 +208,7 @@ subroutine unpack77(c77,nrx,msg,unpk77_success)
 | 
				
			|||||||
  character*6 cexch,grid6
 | 
					  character*6 cexch,grid6
 | 
				
			||||||
  character*4 grid4,cserial
 | 
					  character*4 grid4,cserial
 | 
				
			||||||
  character*3 csec(NSEC)
 | 
					  character*3 csec(NSEC)
 | 
				
			||||||
 | 
					  character*2 cfield
 | 
				
			||||||
  character*38 c
 | 
					  character*38 c
 | 
				
			||||||
  integer hashmy10,hashmy12,hashmy22,hashdx10,hashdx12,hashdx22
 | 
					  integer hashmy10,hashmy12,hashmy22,hashdx10,hashdx12,hashdx22
 | 
				
			||||||
  logical unpk28_success,unpk77_success
 | 
					  logical unpk28_success,unpk77_success
 | 
				
			||||||
@ -491,8 +496,31 @@ subroutine unpack77(c77,nrx,msg,unpk77_success)
 | 
				
			|||||||
     else
 | 
					     else
 | 
				
			||||||
        msg='CQ '//trim(call_2)
 | 
					        msg='CQ '//trim(call_2)
 | 
				
			||||||
     endif
 | 
					     endif
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					  else if(i3.eq.5) then
 | 
				
			||||||
 | 
					! 5    TU; W9XYZ K1ABC R-09 FN             1 28 28 1 7 9       74   WWROF contest
 | 
				
			||||||
 | 
					     read(c77,1041) itu,n28a,n28b,ir,irpt,nexch,i3
 | 
				
			||||||
 | 
					1041 format(b1,2b28.28,b1,b7.7,b9.9,b3.3)
 | 
				
			||||||
 | 
					     call unpack28(n28a,call_1,unpk28_success)
 | 
				
			||||||
 | 
					     if(.not.unpk28_success) unpk77_success=.false.
 | 
				
			||||||
 | 
					     call unpack28(n28b,call_2,unpk28_success)
 | 
				
			||||||
 | 
					     if(.not.unpk28_success) unpk77_success=.false.
 | 
				
			||||||
 | 
					     write(crpt,'(i3.2)') irpt-35
 | 
				
			||||||
 | 
					     if(crpt(1:1).eq.' ') crpt(1:1)='+'
 | 
				
			||||||
 | 
					     n1=nexch/18
 | 
				
			||||||
 | 
					     n2=nexch - 18*n1
 | 
				
			||||||
 | 
					     cfield(1:1)=char(ichar('A')+n1)
 | 
				
			||||||
 | 
					     cfield(2:2)=char(ichar('A')+n2)
 | 
				
			||||||
 | 
					     if(itu.eq.0 .and. ir.eq.0) msg=trim(call_1)//' '//trim(call_2)//             &
 | 
				
			||||||
 | 
					          ' '//crpt//' '//cfield
 | 
				
			||||||
 | 
					     if(itu.eq.1 .and. ir.eq.0) msg='TU; '//trim(call_1)//' '//trim(call_2)//     &
 | 
				
			||||||
 | 
					          ' '//crpt//' '//cfield
 | 
				
			||||||
 | 
					     if(itu.eq.0 .and. ir.eq.1) msg=trim(call_1)//' '//trim(call_2)//             &
 | 
				
			||||||
 | 
					          ' R'//crpt//' '//cfield
 | 
				
			||||||
 | 
					     if(itu.eq.1 .and. ir.eq.1) msg='TU; '//trim(call_1)//' '//trim(call_2)//     &
 | 
				
			||||||
 | 
					          ' R'//crpt//' '//cfield
 | 
				
			||||||
  endif
 | 
					  endif
 | 
				
			||||||
  if(msg(1:4).eq.'CQ <') unpk77_success=.false.
 | 
					!  if(msg(1:4).eq.'CQ <') unpk77_success=.false.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return
 | 
					  return
 | 
				
			||||||
end subroutine unpack77
 | 
					end subroutine unpack77
 | 
				
			||||||
@ -1040,12 +1068,11 @@ subroutine pack77_3(nwords,w,i3,n3,c77)
 | 
				
			|||||||
     call chkcall(w(i1+1),bcall_2,ok2)
 | 
					     call chkcall(w(i1+1),bcall_2,ok2)
 | 
				
			||||||
     if(.not.ok1 .or. .not.ok2) go to 900
 | 
					     if(.not.ok1 .or. .not.ok2) go to 900
 | 
				
			||||||
     crpt=w(nwords-1)(1:3)
 | 
					     crpt=w(nwords-1)(1:3)
 | 
				
			||||||
 | 
					     if(index(crpt,'-').ge.1 .or. index(crpt,'+').ge.1) go to 900
 | 
				
			||||||
     if(crpt(1:1).eq.'5' .and. crpt(2:2).ge.'2' .and. crpt(2:2).le.'9' .and.    &
 | 
					     if(crpt(1:1).eq.'5' .and. crpt(2:2).ge.'2' .and. crpt(2:2).le.'9' .and.    &
 | 
				
			||||||
          crpt(3:3).eq.'9') then
 | 
					          crpt(3:3).eq.'9') then
 | 
				
			||||||
        nserial=0
 | 
					        nserial=0
 | 
				
			||||||
        read(w(nwords),*,err=1) nserial
 | 
					        read(w(nwords),*,err=1) nserial
 | 
				
			||||||
!1       i3=3
 | 
					 | 
				
			||||||
!        n3=0
 | 
					 | 
				
			||||||
     endif
 | 
					     endif
 | 
				
			||||||
1    mult='   '
 | 
					1    mult='   '
 | 
				
			||||||
     imult=-1
 | 
					     imult=-1
 | 
				
			||||||
@ -1150,6 +1177,60 @@ subroutine pack77_4(nwords,w,i3,n3,c77)
 | 
				
			|||||||
900 return
 | 
					900 return
 | 
				
			||||||
end subroutine pack77_4
 | 
					end subroutine pack77_4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					subroutine pack77_5(nwords,w,i3,n3,c77)
 | 
				
			||||||
 | 
					! Check Type 5 (WWROF contest exchange)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  character*13 w(19)
 | 
				
			||||||
 | 
					  character*77 c77
 | 
				
			||||||
 | 
					  character*6 bcall_1,bcall_2
 | 
				
			||||||
 | 
					  character*3 mult
 | 
				
			||||||
 | 
					  character crpt*4
 | 
				
			||||||
 | 
					  character c1*1,c2*2
 | 
				
			||||||
 | 
					  logical ok1,ok2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(nwords.eq.4 .or. nwords.eq.5 .or. nwords.eq.6) then
 | 
				
			||||||
 | 
					     i1=1
 | 
				
			||||||
 | 
					     if(trim(w(1)).eq.'TU;') i1=2
 | 
				
			||||||
 | 
					     call chkcall(w(i1),bcall_1,ok1)
 | 
				
			||||||
 | 
					     call chkcall(w(i1+1),bcall_2,ok2)
 | 
				
			||||||
 | 
					     if(.not.ok1 .or. .not.ok2) go to 900
 | 
				
			||||||
 | 
					     crpt=w(nwords-1)(1:4)
 | 
				
			||||||
 | 
					     if(index(crpt,'-').lt.1 .and. index(crpt,'+').lt.1) go to 900
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     c1=crpt(1:1)
 | 
				
			||||||
 | 
					     c2=crpt(1:2)
 | 
				
			||||||
 | 
					     irpt=-1
 | 
				
			||||||
 | 
					     if(c1.eq.'+' .or. c1.eq.'-') then
 | 
				
			||||||
 | 
					        ir=0
 | 
				
			||||||
 | 
					        read(w(nwords-1),*,err=900) irpt
 | 
				
			||||||
 | 
					        irpt=irpt+35
 | 
				
			||||||
 | 
					     else if(c2.eq.'R+' .or. c2.eq.'R-') then
 | 
				
			||||||
 | 
					        ir=1
 | 
				
			||||||
 | 
					        read(w(nwords-1)(2:),*) irpt
 | 
				
			||||||
 | 
					        irpt=irpt+35
 | 
				
			||||||
 | 
					     endif
 | 
				
			||||||
 | 
					     if(irpt.eq.-1 .or. len(trim(w(nwords))).ne.2) go to 900
 | 
				
			||||||
 | 
					     c2=w(nwords)(1:2)
 | 
				
			||||||
 | 
					     n1=ichar(c2(1:1)) - ichar('A')
 | 
				
			||||||
 | 
					     n2=ichar(c2(2:2)) - ichar('A')
 | 
				
			||||||
 | 
					     if(n1.lt.0 .or. n1.gt.17) go to 900
 | 
				
			||||||
 | 
					     if(n2.lt.0 .or. n2.gt.17) go to 900
 | 
				
			||||||
 | 
					     nexch=18*n1 + n2
 | 
				
			||||||
 | 
					     i3=5
 | 
				
			||||||
 | 
					     n3=0
 | 
				
			||||||
 | 
					     itu=0
 | 
				
			||||||
 | 
					     if(trim(w(1)).eq.'TU;') itu=1
 | 
				
			||||||
 | 
					     call pack28(w(1+itu),n28a)
 | 
				
			||||||
 | 
					     call pack28(w(2+itu),n28b)
 | 
				
			||||||
 | 
					! 5    TU; W9XYZ K1ABC R-09 FN             1 28 28 1 7 9       74   WWROF contest
 | 
				
			||||||
 | 
					     write(c77,1010) itu,n28a,n28b,ir,irpt,nexch,i3
 | 
				
			||||||
 | 
					1010 format(b1,2b28.28,b1,b7.7,b9.9,b3.3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  end if
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					900 return
 | 
				
			||||||
 | 
					end subroutine pack77_5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subroutine packtext77(c13,c71)
 | 
					subroutine packtext77(c13,c71)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  character*13 c13,w
 | 
					  character*13 c13,w
 | 
				
			||||||
 | 
				
			|||||||
@ -13,11 +13,11 @@
 | 
				
			|||||||
  <tr><td><b>F7       </b></td><td>Display Message Averaging window</td></tr>
 | 
					  <tr><td><b>F7       </b></td><td>Display Message Averaging window</td></tr>
 | 
				
			||||||
  <tr><td><b>F11      </b></td><td>Move Rx frequency down 1 Hz</td></tr>
 | 
					  <tr><td><b>F11      </b></td><td>Move Rx frequency down 1 Hz</td></tr>
 | 
				
			||||||
  <tr><td><b>Ctrl+F11 </b></td><td>Move identical Rx and Tx frequencies down 1 Hz</td></tr>
 | 
					  <tr><td><b>Ctrl+F11 </b></td><td>Move identical Rx and Tx frequencies down 1 Hz</td></tr>
 | 
				
			||||||
  <tr><td><b>Shift+F11 </b></td><td>Move Tx frequency down 60 Hz</td></tr>
 | 
					  <tr><td><b>Shift+F11 </b></td><td>Move Tx frequency down 60 Hz (FT8) or 90 Hz (FT4)</td></tr>
 | 
				
			||||||
  <tr><td><b>Ctrl+Shift+F11 </b></td><td>Move dial frequency down 2000 Hz</td></tr>
 | 
					  <tr><td><b>Ctrl+Shift+F11 </b></td><td>Move dial frequency down 2000 Hz</td></tr>
 | 
				
			||||||
  <tr><td><b>F12      </b></td><td>Move Rx frequency up 1 Hz</td></tr>
 | 
					  <tr><td><b>F12      </b></td><td>Move Rx frequency up 1 Hz</td></tr>
 | 
				
			||||||
  <tr><td><b>Ctrl+F12 </b></td><td>Move identical Rx and Tx frequencies up 1 Hz</td></tr>
 | 
					  <tr><td><b>Ctrl+F12 </b></td><td>Move identical Rx and Tx frequencies up 1 Hz</td></tr>
 | 
				
			||||||
  <tr><td><b>Shift+F12 </b></td><td>Move Tx frequency up 60 Hz</td></tr>
 | 
					  <tr><td><b>Shift+F12 </b></td><td>Move Tx frequency up 60 Hz (FT8) or 90 Hz (FT4)</td></tr>
 | 
				
			||||||
  <tr><td><b>Ctrl+Shift+F12 </b></td><td>Move dial frequency up 2000 Hz</td></tr>
 | 
					  <tr><td><b>Ctrl+Shift+F12 </b></td><td>Move dial frequency up 2000 Hz</td></tr>
 | 
				
			||||||
  <tr><td><b>Alt+1-6  </b></td><td>Set now transmission to this number on Tab 1</td></tr>
 | 
					  <tr><td><b>Alt+1-6  </b></td><td>Set now transmission to this number on Tab 1</td></tr>
 | 
				
			||||||
  <tr><td><b>Ctl+1-6  </b></td><td>Set next transmission to this number on Tab 1</td></tr>
 | 
					  <tr><td><b>Ctl+1-6  </b></td><td>Set next transmission to this number on Tab 1</td></tr>
 | 
				
			||||||
 | 
				
			|||||||
@ -1991,7 +1991,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
 | 
				
			|||||||
        if(e->modifiers() & Qt::ControlModifier) n+=100;
 | 
					        if(e->modifiers() & Qt::ControlModifier) n+=100;
 | 
				
			||||||
        if(e->modifiers() & Qt::ShiftModifier) {
 | 
					        if(e->modifiers() & Qt::ShiftModifier) {
 | 
				
			||||||
          int offset=60;
 | 
					          int offset=60;
 | 
				
			||||||
          if(m_mode=="FT4") offset=100;
 | 
					          if(m_mode=="FT4") offset=90;
 | 
				
			||||||
          ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()-offset);
 | 
					          ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()-offset);
 | 
				
			||||||
        } else{
 | 
					        } else{
 | 
				
			||||||
          bumpFqso(n);
 | 
					          bumpFqso(n);
 | 
				
			||||||
@ -2007,7 +2007,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
 | 
				
			|||||||
        if(e->modifiers() & Qt::ControlModifier) n+=100;
 | 
					        if(e->modifiers() & Qt::ControlModifier) n+=100;
 | 
				
			||||||
        if(e->modifiers() & Qt::ShiftModifier) {
 | 
					        if(e->modifiers() & Qt::ShiftModifier) {
 | 
				
			||||||
          int offset=60;
 | 
					          int offset=60;
 | 
				
			||||||
          if(m_mode=="FT4") offset=100;
 | 
					          if(m_mode=="FT4") offset=90;
 | 
				
			||||||
          ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()+offset);
 | 
					          ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()+offset);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          bumpFqso(n);
 | 
					          bumpFqso(n);
 | 
				
			||||||
@ -5559,6 +5559,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if(m_config.clear_DX () and SpecOp::HOUND != m_config.special_op_id()) clearDX ();
 | 
					  if(m_config.clear_DX () and SpecOp::HOUND != m_config.special_op_id()) clearDX ();
 | 
				
			||||||
 | 
					  auto_tx_mode (false);
 | 
				
			||||||
  m_dateTimeQSOOn = QDateTime {};
 | 
					  m_dateTimeQSOOn = QDateTime {};
 | 
				
			||||||
  auto special_op = m_config.special_op_id ();
 | 
					  auto special_op = m_config.special_op_id ();
 | 
				
			||||||
  if (SpecOp::NONE < special_op && special_op < SpecOp::FOX &&
 | 
					  if (SpecOp::NONE < special_op && special_op < SpecOp::FOX &&
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user