## A Real-Time Spectrum Surveillance Utility for HP, Tektronix, and Advantest Spectrum Analyzers

SSM.EXE is a graphical Win32 program that lets you acquire a succession of spectrum-analyzer display traces over time, with the option to save and replay the acquired data.

Applications include long-term stability testing, RF interference and link-quality surveys, weak-signal communications, and signal intelligence/TSCM work.

You can download a sample .SSM recording file here (10 MB). The image at right was created by scrolling through this recording with the Display->Accumulate maximum and Display->802.11 WLAN channel boundaries options enabled.

The current version of SSM supports the following spectrum analyzer models:

- Tektronix 490P/2750P series
- Tektronix 2782/2784
- Tektronix 2710 series
- HP 8566/8567/8568 series (both -A and -B models)
- HP 8560/8590 series portables
- HP 70000 series
- HP 8569B/8570A
- HP 3585A/B
- HP 3588A/3589A
- Advantest R3264, R3267, and R3273
- Advantest R3463, R3465, R3263, and R3272
- Advantest R3131, R3132, R3162, R3172, and R3182
- Advantest R3261, R3361, R3265, and R3271
- Agilent E4400 ESA and PSA series
- Agilent E4406A VSA
- Agilent N991x and N993x (FieldFox) series
- Keysight N9010B
- Rohde & Schwarz FSEA/B/M/K, FSIQ, FSP, and FSU
- Anritsu MS8604A
- Anritsu MS2650/MS2660 series
- Signal Hound USB-SA44/B or USB-SA124A

National Instruments GPIB adapters and Prologix GPIB-ETHERNET adapters are supported, as well as Prologix GPIB-USB adapters (version 3.1 or later).

SSM.EXE is part of the KE5FX GPIB Toolkit. The latest version of the Toolkit is downloadable here.

Running SSM

Depending on the options you selected during installation, you can run SSM.EXE from the Start menu, by clicking on its desktop shortcut, or by using its Quick Launch icon on the taskbar.

You can also run SSM.EXE from a DOS-box command line or Windows Start->Run... command, optionally specifying a GPIB address from which to acquire data, or the name of an existing .SSM file. Use quotes around filenames that contain spaces. Here are a few command-line examples that assume the analyzer's GPIB address is 18:

    	SSM "synth test.ssm"          ... Load synth test.ssm for playback
    	SSM 18                        ... Begin acquiring data from analyzer at GPIB address 18
    	SSM 18 -856xa                 ... Special option required for use with HP8566A-HP8568A models
    	SSM 18 -8569b                 ... Special option required for use with HP8569B/8570A
    	SSM 18 -358xa                 ... Special option required for use with HP3588A/3589A
    	SSM 18 -3585                  ... Special option required for use with HP3585A/B
    	SSM 18 -r3261                 ... Special option required for use with Advantest R3261/R3361/R3265/R3271 analyzers
    	SSM 18 -advantest             ... Special option required for use with other supported Advantest R3100/R3200/R3400-series analyzers
    	SSM 18 -scpi                  ... Special option required for use with Agilent E4400-series, R&S FSE/FSIQ/FSP/FSU, and other SCPI-compatible analyzers
    	SSM 18 -nmea:com2             ... Log GPS coordinates from NMEA receiver at COM2
    	SSM 18 -pal:"xxx"             ... Specify palette filename (default = COLORS.BIN)
    	SSM 18 -interval_ms:1000      ... Specify desired interval between traces recorded to output file, 0=default (record all traces as they arrive)
    	SSM 18 -f                     ... Favor speed over resolution or other factors (if supported)
    	SSM 18 -F                     ... Run in fullscreen mode
    	SSM 18 -m                     ... Enable max-hold in X/Y display
    	SSM 18 -trace:"TB"            ... Acquire from specified trace memory (HP 8566B/8568B only, default="TA")
    	SSM 18 -M                     ... Enable max-accumulation trace in X/Y display
    	SSM 18 -V                     ... Enable average-accumulation trace in X/Y display
    	SSM 18 -n:320                 ... Record 320 spectral bins per sweep (instead of 640-bin default)
    	SSM 18 -ao:-7                 ... Add -7 dBm to all recorded amplitude values
    	SSM 18 -fo:1500000000         ... Add 1.5 GHz to all recorded frequency values
    	SSM 18 -cs                    ... Disable color-smoothing in waterfall display
    	SSM 18 -t                     ... Disable GPIB timeout checking during long sweeps
    	SSM 18 -w                     ... Display WiFi channel boundaries in sweeps containing 2.4 GHz spectrum
    	SSM 18 -g                     ... Display GPS L1 channel boundaries in sweeps containing 1575 MHz spectrum
    	SSM 18 -i                     ... Display standard Iridium simplex band boundaries in sweeps containing 1626 MHz spectrum
    	SSM 18 -I                     ... Display standard Iridium simplex channel markers in sweeps containing 1626 MHz spectrum
    	SSM 18 -x -y                  ... Turn off graticule display (-x = X grid, -y = Y grid)
    	SSM 18 -spline                ... Resample trace using cubic-spline reconstruction
    	SSM 18 -point                 ... Resample trace using point-sampled values
    	SSM 18 -max                   ... Resample trace using maximum bin values
    	SSM 18 -min                   ... Resample trace using minimum bin values
    	SSM 18 -avg                   ... Resample trace using average bin values
    	SSM 18 -startup:"xxx"         ... Specify GPIB command string to be issued when connecting for the first time
    	SSM 18 -shutdown:"xxx"        ... Specify GPIB command string to be issued when exiting SSM
    	SSM 18 -connect:"xxx"         ... Specify GPIB command string to be issued when connecting to instrument
    	SSM 18 -disconnect:"xxx"      ... Specify GPIB command string to be issued when disconnecting from instrument
    	SSM 18 -856xa -f              ... Example using multiple options

    	SSM -sa44                     ... Special option required for use with Signal Hound USB-SA44/B or USB-SA124A.  No GPIB address is needed for this instrument.
    	SSM (no filename or address)  ... Open the application in offline mode

For more details on trace resampling, see the FAQ ("How do the trace-resampling options in SATRACE and SSM work?").

Controlling the Spectrum Analyzer

In most cases, SSM does not attempt to control or configure the spectrum analyzer. Traces are acquired based on the current front-panel settings such as center frequency, reference level, resolution bandwidth, and so forth. However, SSM does provide limited control options for certain analyzer models. These options are shown below.

    	-RL:-40                       ... Specify reference level in dBm (Signal Hound only, default = -30)
    	-CF:90.3E6                    ... Specify center frequency in Hz (Signal Hound and E4406A only, default = 98 MHz; requires -span: option to be specified)
    	-span:10E6                    ... Specify span in Hz (Signal Hound and E4406A only, mandatory if -CF option is used)
    	-start:88E6                   ... Specify sweep start frequency (Signal Hound and E4406A only, default = 88 MHz)
    	-stop:108E6                   ... Specify sweep stop frequency (Signal Hound and E4406A only, default = 108 MHz)
    	-bins:64                      ... Specify FFT kernel size (Signal Hound only, default = 128, must be power of 2 between 16 and 256 inclusive)
    	-sens:2                       ... Specify sensitivity factor (Signal Hound only, default = 2, range 0-2)
    	-RFATT:10                     ... Specify RF attenuation in dB (Signal Hound only, default = 0, range 0-15 dB in steps of 5 dB)
    	-logdiv:10                    ... Specify dB/division (Signal Hound only, default = 10)
    	-divs:10                      ... Specify # of divisions (Signal Hound only, default = 10)

The -CF and -span options take precedence over -start and -stop.

Menu Commands and Keyboard Shortcuts

         Key               Menu Command                                 Remarks

         s                 File->Save current acquisition to file       Saves all recorded data since the beginning of the
                                                                        acquisition session to an .SSM file

         l                 File->Play recorded data from file           Loads an .SSM file and enables the navigation controls
                                                                        (During playback of a saved .SSM file, you can
                                                                        also use the up/down arrows, Page Up/Page Down keys,
                                                                        and Home/End keys to scroll the display.)

                           File->Export X/Y trace to .CSV file...       Saves the trace currently visible in the X/Y graph as a
                                                                        list of frequency/amplitude pairs in a comma-separated
                                                                        value (.CSV) file, readable by Excel and other applications.
                                                                        Values are written as floating-point Hz,dBm pairs.
                                                                        (Note that you can click on the waterfall display during
                                                                        playback to recall any recorded trace to the X/Y display for
                                                                        viewing or exporting.)

         e                 File->Export individual X/Y points to .CSV file...
                                                                        Same as above, except that each Hz,dBm pair is written to its
                                                                        own line

         S                 File->Save .BMP, .GIF, .TGA, or .PCX screen shot...
                                                                        Saves only the current display as a bitmap image.
                                                                        (Unlike .SSM files, the bitmap file will contain no
                                                                        historical data other than whatever's displayed on the screen.)

         p                 File->Print screen image                     Sends the current display to the default Windows printer

                           File->Load default palette                   Reloads the default color palette, abandoning any changes made
                           File->Save default palette                   Saves the current palette as the default color palette

         Esc               File->Quit

                           Points->4                                    These options adjust the number of visible trace "bins"
                           Points->16                                   acquired from the spectrum analyzer.  In reality,
                           Points->64                                   the analyzer's trace width is device-dependent, and
                           Points->128                                  will rarely match any of these options.  SSM will resample
                           Points->320                                  the physical trace points to the specified number of
                           Points->640                                  output bins using the selected resampling algorithm below.

                           Points->Select minimum                       When the number of data points available from the analyzer
                           Points->Select maximum                       trace is not the same as the number of bins selected above,
                           Points->Select average                       these options determine how multiple adjacent trace points
                           Points->Point-sample                         contribute to each visible bin.  The Min/max/avg options are
                           Points->Cubic spline                         meaningful only when the trace width is greater than the
                                                                        selected number of points.  See the FAQ for more information
                                                                        on trace resampling.

                           Style->Connected lines                       These options control the appearance of the X-Y graph
                           Style->Dots                                  at the bottom of the display.
                           Style->Bars

                           Display->Accumulate minimum                  These options enable and disable various accumulation traces
         M                 Display->Accumulate maximum                  that can be rendered on the X-Y graph.  They have no effect
                           Display->Accumulate average                  on the data sent to the rising-raster display.

         m                 Display->X/Y max hold                        Toggles the max-hold feature on the X-Y graph, clearing any
                                                                        accumulated data.  Has no effect on data sent to the
                                                                        rising-raster display.

                           Display->Smooth waterfall colors             Enables or disables color interpolation on the rising-raster
                                                                        graph for amplitude values that fall between palette levels.
                                                                        When acquiring or playing back sweeps with wide dynamic range,
                                                                        small changes in signal levels may be more easily spotted
                                                                        with this option enabled.

         x                 Display->Graticule X                         Toggles graticule lines on the X-Y graph
         y                 Display->Graticule Y

         w                 Display->802.11 WLAN channel boundaries      Toggles vertical frequency masks at channels 1, 6, and 11
                                                                        in the 2.4-GHz WiFi band

         g                 Display->GPS channel boundaries              Toggles vertical frequency mask for major lobes in L1 GPS
                                                                        allocation (1575.42 MHz +/- 1 MHz)

         i                 Display->Iridium simplex band limits         Toggles vertical frequency mask for standard Iridium simplex band
                                                                        (1626.0 - 1626.5 MHz)

         I                 Display->Iridium simplex channels            Toggles frequency markers for standard Iridium simplex channels

                           Display->Show frame rate                     Toggles frames-per-second display

                           Measure->Apply cursor thresholds             Causes SSM to clip data from the X/Y graph against the
                                                                        Y-threshold cursors before sending it to the rising-raster
                                                                        display.  When this option is turned off, the cursors serve
                                                                        only as markers.

         o                 Measure->Edit frequency and amplitude offsets...
                                                                        Allows you to specify correction factors to be added to all frequency
                                                                        and amplitude values recorded by SSM.  Typical uses include compensating
                                                                        for external preamplifiers and downconverters.

         r                 Measure->Edit composite sweep range...
                                                                        Allows sweeps to be generated by combining multiple spans acquired
                                                                        from certain instruments (currently limited to the Agilent E4406A.)
                                                                        Without this feature, the E4406A is limited to 10 MHz spans.

         F5                Display->Recompose display                   In playback mode, forces SSM to reload the current file and
                                                                        scroll it onto the waterfall display.  This can be helpful
                                                                        after changing the accumulation or threshold-cursor options,
                                                                        since they are not automatically applied to existing data
                                                                        in the display.

         Alt-Enter         Display->Toggle fullscreen mode              Switches between fullscreen and window mode.  Fullscreen mode
                                                                        may be faster on some PCs, but the menu bar at top will not
                                                                        be visible unless the mouse cursor is moved to the top of the
                                                                        screen.  Fullscreen mode is not recommended if you use a software
                                                                        mouse cursor.

         Space             Acquire->Stop/restart acquisition            This command causes SSM to toggle its GPIB connection to the
                                                                        spectrum analyzer, allowing you to control the analyzer from
                                                                        its front panel.  Upon (re)starting, any existing data in the
                                                                        session.ssm temporary file will be overwritten with
                                                                        incoming trace data.  If no GPIB connection has been established by
                                                                        use of the Acquire options below, an internally-simulated
                                                                        test signal will be rendered.

         Scroll Lock       Acquire->Pause/resume acquisition            This command can be used to stop recording new traces while
                                                                        remaining connected to the spectrum analyzer.  Upon resuming,
                                                                        SSM will continue adding traces to the session.ssm recording in progress.
                                                                        The spectrum analyzer will continue to sweep under program control
                                                                        while the measurement is paused, with its front-panel controls locked out.

                           Acquire->Acquire data from supported device  These commands cause SSM to look for a supported spectrum analyzer
                                                                        at the specified GPIB address and begin acquiring data from it.
                                                                        Current supported models are listed in the table at the beginning of
                                                                        this file.

                           Acquire->Acquire data from Signal Hound      This command causes SSM to attempt to connect to a USB-SA44/B or
                                                                        USB-SA124A Signal Hound spectrum analyzer.

                           Acquire->HP 8566A/8567A/8568A mode           This option MUST be selected prior to your first attempt to
                                                                        connect to an HP 8566A, 8567A, or 8568A spectrum analyzer.
                                                                        (Alternatively, the -856xa option may be used on the SSM.EXE command line.)
                                                                        This is necessary because these analyzers cannot be identified
                                                                        automatically by SSM.EXE, and because their GPIB implementations
                                                                        are significantly different from the later B-series models.

                           Acquire->HP 3585A/B mode                     This option MUST be selected prior to your first attempt to
                                                                        connect to an HP 3585A or HP 3585B spectrum analyzer.
                                                                        (Alternatively, the -3585 option may be used on the SSM.EXE command line.)

                           Acquire->HP 3588A/3589A mode                 This option MUST be selected prior to your first attempt to
                                                                        connect to an HP 3588A or 3589A spectrum analyzer.
                                                                        (Alternatively, the -358xa option may be used on the SSM.EXE command line.)

                           Acquire->HP 8569B/8570A mode                 This option MUST be selected prior to your first attempt to
                                                                        connect to an HP 8569B or HP 8570A spectrum analyzer.
                                                                        (Alternatively, the -8569b option may be used on the SSM.EXE command line.)

                           Acquire->Advantest R3261/R3361/R3265/R3271 mode
                                                                        This option MUST be selected prior to your first attempt to
                                                                        connect to an Advantest R3261/R3361-series spectrum analyzer,
                                                                        including the R3265 and R3271 models.
                                                                        (Alternatively, the -r3261 option may be used on the SSM.EXE command line.)

                           Acquire->Advantest R3100/R3200/R3400 mode    This option MUST be selected prior to your first attempt to
                                                                        connect to all other supported Advantest spectrum analyzers.
                                                                        (Alternatively, the -advantest option may be used on the SSM.EXE
                                                                        command line.)  See the instrument list at the top of this page for the
                                                                        supported Advantest models.

                           Acquire->SCPI-compatible analyzer mode       This option MUST be selected prior to your first attempt to
                                                                        connect to an Agilent E4400-series, FieldFox, N9010B, R&S FSEx/FSIQ/FSP/FSU, or other
                                                                        SCPI-compatible spectrum analyzer that's not supported by a more specific menu option.
                                                                        (Alternatively, the -scpi option may be used on the SSM.EXE command line.)

                           Acquire->Acquire at maximum available speed
                                                                        This option can be selected to improve acquisition speed on some instruments
                                                                        by acquiring fewer data points per sweep, reducing the resolution of the
                                                                        collected data, disabling the front-panel display, or other actions.  It's disabled
                                                                        by default unless you use the -f (fast acquisition) option on the SSM.EXE command line.

Keyboard-Only Controls

         A/Z               Adjusts the border between X/Y and rising-raster display.  Usable only when not acquiring data.

         G/H               Save your CRT! During acquisition from the HP 8566/8567/8568 analyzers, you can turn the
                           analyzer's CRT power supply off and on at any time by pressing the uppercase G and H keys,
                           respectively.  These keys correspond to the Shift-G and Shift-H commands available via the
                           85662A display's front panel.

                           HP analyzer CRTs tend to age by cathode poisoning.  Turning down the Intensity control during
                           unattended operation will prevent phosphor burn-in, but it will not necessarily extend the useful
                           life of your CRT!  The G/H commands will.

                           On Tektronix 490, 2750, and 2710-series analyzers, these commands will blank and unblank the CRT text readout.
                           If you plan to use SSM on Tek 490/2750-series instruments, consider applying this modification to allow
                           the READOUT button to blank the entire CRT.

         Up/down arrows    Scroll the rising-raster display up or down one row at a time when playing back a recording.
         PgUp / PgDn       Scroll the rising-raster display up or down several rows at a time.
         Home / End        Scroll to the beginning or end of the recorded data.

Threshold Cursor Controls

Two purple horizontal-line cursors in the X/Y display serve as handy amplitude-measurement markers.

Optionally, when the Measure->Apply cursor thresholds option is selected, the cursors can be used to exclude data within a given amplitude range from the rising-raster display. In this mode, when the solid cursor is above the broken cursor, values that are below the solid line and above the broken line will be displayed. Otherwise, if the solid cursor is below the broken cursor, values that fall between the two cursors will be excluded. This feature can be helpful when you need to identify amplitude values that fall either outside, or within, certain limits. (All incoming data is still recorded; the cursor thresholds affect only the appearance of each row as it scrolls onto the rising-raster display.)

It's easier to adjust the cursors if you pause data acquisition (Space bar or Acquire->Stop/restart) first.

Editing the Color Palette

When you left-click any of the color palette blocks next to the rising-raster display, a color-selection dialog box will appear. Any changes you make to the selected color will be copied to the palette block entry.

Normally, you'll use this feature to assign colors to the maximum and minimum amplitudes in a particular range of interest, then create a "gradient" in the palette by left-clicking the entry at one end of the desired range and dragging the mouse cursor to the other before releasing the left button. When you do this, SSM will automatically fill the intervening palette entries with linearly-interpolated color values. You can spread out all of the colors in the palette this way, or create separate gradients between as many color pairs as you like.

Changes to the palette will be saved with any current or future recording made in the session. You can also select File->Save default palette to write your changes to the default SSM palette file, or use File->Load default palette to roll back any changes you've made.

As with other mouse-oriented controls, it's much easier to edit palette colors and gradients if you pause the data-acquisition process first.

CONNECT.INI

Your PC should also contain a file called CONNECT.INI, which tells the GPIB Toolkit how to take advantage of various GPIB connectivity options. These include direct RS-232 or TCP/IP links, as well as the Prologix GPIB-USB and GPIB-ETHERNET adapters.

If you have a Prologix adapter, you can review the comments in CONNECT.INI to learn how to configure SSM and the other GPIB Toolkit applications to use it, or you can simply select your adapter in the Prologix configurator application (PROLOGIX.EXE) and press "Update CONNECT.INI" to automate the configuration process.

If the COM port specification in CONNECT.INI is commented out with a leading semicolon -- or if CONNECT.INI is missing entirely -- all GPIB Toolkit applications will attempt to communicate with the GPIB0 device via the National Instruments NI488.2 programming interface instead. This is the default behavior.

Note that some versions of Windows hide .INI file suffixes by default. In Windows 2000 and XP, for instance, CONNECT.INI may appear simply as "CONNECT," with the type "Configuration Settings." To turn off this behavior, go to the Tools->Folder Options->View tab in any Explorer window and deselect the "Hide file extensions for known file types" option. The exact location of CONNECT.INI will vary from one Windows installation to the next. It's often easier to select the "Edit CONNECT.INI" button in the GPIB configurator application than to try to locate the file yourself.

Instrument Configuration Notes

The default GPIB address for many of the HP analyzers supported by SSM.EXE is 18.

Note that if you are using a Tektronix 490P/2750P analyzer, you must set the rear-panel LF-or-EOI switch to '1' for use with the GPIB Toolkit applications. You may also need to disable the Acquire->Acquire at maximum available resolution feature (or use the -f command-line option) for compatibility with older Tektronix 492P/496P models.

If your analyzer is an HP 8566A, 8567A, or 8568A, you must select the Acquire->HP 8566A/8567A/8568A mode menu option before trying to connect to the instrument. Similarly, the Acquire->HP 8569B/8570A mode menu option enables support for the HP 8569B/8570A, while Acquire->HP 3588A/3589A mode enables support for the HP 3588A and HP 3589A analyzers. Acquire->HP 3585A/B mode should be selected prior to connecting to an HP 3585A or HP 3585B.

Advantest R3261, R3361, R3265, and R3271 users must select Acquire->Advantest R3261/R3361/R3265/R3271 mode prior to connection. If you are using any other member of the Advantest R3100/R3200/R3400 families, you'll need to select Acquire->Advantest R3100/R3200/R3400 mode instead.

If you are using a newer SCPI-compliant analyzer model such as the Agilent E4400 series or Rohde & Schwarz FSEA/B/M/K, FSIQ, FSP, or FSU, you'll need to select Acquire->SCPI-compatible analyzer mode. This is also true for certain IEEE 488.2-compliant instruments that aren't compatible with the Agilent E4400 SCPI implementation, such as the Anritsu MS8604A and MS2650/MS2660 series.

Note that many newer analyzers have multiple modes and trace options that may need to be disabled. SSM expects the instrument to be configured in spectrum analyzer mode with the factory-default trace width/point count. If the instrument is set up as a network analyzer or cellular service monitor, compatibility issues can be expected.

Finally, if you want to place the GPIB address on the command line when using an analyzer model with its own Acquire menu entry, you'll need to use the equivalent -856xa, -8569b, -3585, -358xa, -r3261, -advantest, or -scpi command-line option (e.g., c:\>ssm 18 -8569b.)

Release Notes

Release 1.00 of 13-Dec-05

- Initial release

Release 1.01 of 28-Dec-05

- Windows desktop no longer used as the working directory when running from a desktop icon

Release 1.02 of 3-Jan-06

- Added support for HP 8566A / 8567A / 8568A spectrum analyzers
- FPS display turned on by default

Release 1.03 of 8-Jan-06

- Added keyboard shortcut for S)ave command

Release 1.04 of 14-Jan-06

- HP 8590E-series analyzers now supported. Tested with HP 8596E; other 8590-series analyzers may or may not work

Release 1.05 of 18-Apr-06

- Added -f command-line option (fast low-resolution acquisition)
- Added -856xa command-line option (HP 8566A/8567A/8568A mode)
- Lowered amplitude readout precision on vertical X/Y cursors
- Don't pause acquisition when left-clicking in other application windows
- Added support for software-based GPIB address-selection feature in new Prologix adapter firmware
  - Moved controller_mode, device_addressable, and host_addressable fields from 7470.INI to CONNECT.INI. These options now apply to all applications in the GPIB Toolkit, not just 7470.EXE.
  - Added reset_to_local field to CONNECT.INI. This affects Prologix adapters only; see CONNECT.INI for more information
  - HP 8568A rev-B spectrum analyzer successfully tested with new software-addressable Prologix adapter

Release 1.06 of 3-May-06

- Added option to display boundaries of 802.11 channels 1, 6, and 11
- Added -m and -w command-line options
- All frequency/span values are now stored and processed at double precision. .RRT files saved with previous versions are no longer compatible.

Release 1.07 of 28-May-06

- UI improvements
  - Home/End keys scroll to the first and last records in the recorded data
  - Added -n and -F command-line options
  - Added "m" shortcut key for X/Y max-hold toggle
  - Automatically switch to playback mode after stop-acquisition command
  - Show graph scale amplitude, not signal amplitude, when mouse pointer is in X/Y display area
- Assorted bug fixes and minor changes
  - Handle quoted filenames properly
  - Avoid treating filenames beginning with digits as GPIB addresses
  - Default recording-session file is now named SESSION.RRT, and is no longer deleted by File->Save command
  - Recorded files limited to 2 GB in size (approximately 750,000 640-bin acquisitions)
  - Fixed error message when saving multiple copies of currently-loaded .RRT file
  - Fixed a couple of minor arithmetic-precision errors in X/Y graph scale

Release 1.10 of 3-Jun-06

- UI improvements
  - Analyzer display settings other than 10 dB/division are now supported
    - Palette legend automatically conforms to the analyzer's dynamic display range
    - Top and bottom palette entries are always 10 dB above and below the analyzer's display, for headroom
  - The standard recording file suffix has changed to .SSM, but .RRT files can still be loaded
  - .SSM files now include the color palette
  - Max-hold and accumulation traces are now brought up to date automatically when a file is loaded
  - Added a percent-complete display for lengthy scrolling/refresh operations
  - Added File->Load default palette option
  - Better management of amplitude cursor positions

Release 1.11 of 18-Jun-06

- Vertical X/Y scale is now annotated at each major division, not just its top and bottom
- Added "M" shortcut key for X/Y accumulation toggle (which works like max-hold, but has its own outline-style trace)
- Added -M command-line option to enable X/Y accumulation
- Improved compatibility with ICS USB-488 GPIB interface

Release 1.12 of 6-Jul-06

- Always reset devices to local control at shutdown time when using NI-compatible GPIB interfaces

Release 1.13 of 10-Jul-06

- Added HP 8569B/8570A support via Acquire->HP 8569B/8570A mode and -8569b command-line options

Release 1.14 of 24-Aug-06

- Added HP 70000-series support
- Added -t command-line option to disable timeout error-checking. This option is useful when acquiring data at very slow analyzer sweep rates.
- Fixed a bug that could cause the decimal portion of frequency-scale labels to be displayed improperly

Release 1.15 of 10-Sep-06

- Added File->Save .BMP, .GIF, .TGA, or .PCX screen shot command
- Added File->Print screen image command
- "G" and "H" keys now control the CRT readout when running on a Tektronix 490/2750-series analyzer

Release 1.16 of 1-Oct-06

- Serial ports beyond COM9 are now supported. Thanks to Bill Tracey, KD5TFD, for this patch!
- Made some improvements to color interpolation in the waterfall display

Release 1.17 of 6-Oct-06

- Added -s command-line option to disable color interpolation in the waterfall display

Release 1.18 of 31-Dec-06

- Assorted minor bug fixes
- Added the ability to click on a row in the waterfall display to view it in the X/Y graph (even during acquisition!)
- Improved threshold-cursor response and numeric accuracy.
- Threshold-cursor exclusion is now off by default, and may be enabled with Measure->Apply threshold cursors
- Improved appearance of X/Y display graticule, which is now enabled by default
- Added -x and -y command-line options and "x"/"y" keyboard shortcuts for graticule control
- Added -startup, -shutdown, -connect, and -disconnect command-line options for user-specified GPIB command strings. See wifi_tek490.bat for an example
- Mouse-wheel scrolling supported in playback mode
- Added Display->Recompose display and keyboard shortcut (F5)

Release 1.19 of 4-Jan-07

- Assorted minor bug fixes
- Tektronix 2710-series analyzers supported

Release 1.20 of 22-Jan-07

- Fixed a bug that prevented palette and cursor changes from being saved to .SSM files when the filename didn't change
- Improved color fidelity in saved .GIF and .PCX files

Release 1.21 of 28-Jan-07

- Fixed a bug that caused incorrect amplitude-scale calculations on HP 8590-series analyzers

Release 1.22 of 20-Mar-07

- Assorted minor bug fixes
- Tektronix 2782/2784 analyzers supported
- The -a and -b command-line options have been deprecated. Use -856xa and -8569b to support the HP 8566A-8568A and HP 8569B/8570A analyzers, respectively

Release 1.23 of 10-Apr-07

- Added support for HP 3588A / HP 3589A spectrum analyzers
- Added support for Agilent E4400-series and other SCPI-compatible spectrum analyzers (tested on Agilent E4402B)

Release 1.24 of 4-Nov-07

- Added support for HP 3585A/B spectrum analyzers
- New code to center file dialogs within the main window
- Prompt before overwriting existing files with the Save command
- Avoid spurious errors when attempting to save .SSM file before any data is loaded or acquired

Release 1.25 of 23-Nov-07

- Added Measure->Edit frequency and amplitude offsets feature, as well as -fo: and -ao: command-line options
- Fixed bug that allowed WiFi band-boundary markers to be rendered outside the X/Y graph area
- -n: command-line option now requires a colon, for consistency with other CLI options that specify numeric values

Release 1.26 of 25-Jan-08

- Added support for the Advantest R3267 family of spectrum analyzers (R3264, R3267, and R3273)

Release 1.27 of 05-Apr-08

- All Prologix adapters are now assumed to support software-controlled addressing. Other serial controllers (including earlier Prologix boards) must be configured manually, with the is_Prologix field in CONNECT.INI set to 0

Release 1.28 of 13-Apr-08

- HP 8560/8590-series portables now support logarithmic display-scale factors other than 10 dB/division

Release 1.29 of 11-May-08

- Added support for the Advantest R3465 family of spectrum analyzers, including the R3463, R3465, R3263, and R3272 models
  - Removed the -r3267 command-line option and its corresponding Acquire->Advantest R3264, R3267, or R3273 mode menu entry. You'll need to use the new -advantest option or the Acquire->Advantest R3200/R3400 mode menu selection to enable support for spectrum analyzers in these families
  - All Advantest queries that follow commands flush the COM port buffer for better reliability with Prologix adapters
- Removed the deprecated -a and -b command-line options
  - Any batch files or shortcuts incorporating these options should use -856xa and -8569b instead

Release 1.30 of 14-Jul-08

- Added File->Export X/Y trace to .CSV file feature
- Fixed a bug that caused failures when using the -t command-line option with Prologix adapters
- Acquired .SSM files are no longer saved in the Program Files subtree
- Renamed SERIAL.INI to CONNECT.INI, and added TCP/IP support

Release 1.31 of 20-Jul-08

- Added -min, -max, -avg, -spline, and -point command-line equivalents for Points menu options

Release 1.32 of 25-Jul-08

- Tektronix 49x/275x analyzers now use low-resolution mode by default to avoid occasional checksum errors observed with Prologix adapters

Release 1.33 of 8-Sep-08

- Added support for MAX SPAN traces from Tektronix 49x/275x and 271x analyzers

Release 1.34 of 20-Oct-08

- Added support for the Advantest R3132 family of spectrum analyzers, including the R3132, R3162, R3172, and R3182 models
- Fixed bug that could cause assertion failures on Agilent E4400-series instruments

Release 1.35 of 8-Apr-09

- Added support for the Advantest R3261/R3361/R3265/R3271 family of spectrum analyzers

Release 1.36 of 28-Jul-10

- Added support for Rohde & Schwarz FSIQ and FSEA/FSEB/FSEM/FSEK models (tested on FSIQ, FSEA, and FSEB)
- Fixed bug introduced in 1.35 that could cause amplitude-scale compression when loading existing .SSM files

Release 1.37 of 10-Sep-10

- Added support for Anritsu MS8604A

Release 1.38 of 29-May-11

- Added support for Agilent E4406A VSA in basic spectrum-analyzer mode. Use Acquire->SCPI-compatible analyzer mode or the -scpi command line option to enable E4406A support.
- Renamed Acquire->Acquire at maximum available resolution to Acquire->Acquire at maximum available speed, to reflect the fact that some analyzers can offer increased acquisition speed by means other than reduced resolution. In particular, this option (or -f) can be used to disable local screen updates on the E4406A for very high GPIB throughput (up to 30 FPS or more!), with no change in resolution.
- Changed the waterfall display's underrange color from white to black. This was necessary for E4406A support, as its dynamic range can exceed the display range by a substantial margin.

Release 1.39 of 13-Nov-11

- Instruments at GPIB address 0 supported

Release 1.40 of 2-Jul-12

- Added support for Anritsu MS2650/MS2660 series

Release 1.41 of 31-Jul-12

- Added Display->GPS L1 boundaries option
- Added support for USB-SA44/B and USB-SA124A Signal Hound
- Added -RL, -CF, -span, -start, -stop, -bins, -RFATT, and -sens options to control the Signal Hound

Release 1.42 of 18-Aug-12

- Added FTD2XX.DLL to fix missing-DLL error messages on systems without Prologix drivers
- Added -logdiv and -divs options for the Signal Hound

Release 1.43 of 26-Sep-12

- Added -nmea command-line option to associate GPS coordinates with each sweep. Tested with u-blox LEA-6H module
- Added -pal command-line option to specify desired palette filename
- Added File->Launch Google Maps at cursor location option
- Added File->Export GPS path to KML file option

Release 1.44 of 7-Dec-12

- Added support for Rohde & Schwarz FSU (using SCPI option)

Release 1.45 of 28-Aug-13

- Added SCPI support for Agilent N9910-series FieldFox RF analyzers in spectrum analyzer mode (N9914 tested via direct Ethernet connection). For more information on direct connectivity to Ethernet devices, search the FAQ for FieldFox.

Release 1.46 of 10-Jul-15

- Local display is no longer blanked when acquiring data from Rohde & Schwarz analyzers
- Added support for Rohde & Schwarz FSP (using SCPI option)

Release 1.47 of 28-Jul-15

- Fixed a byte-order issue that could cause invalid data to be acquired from a FieldFox N991x- or N993x-series analyzer

Release 1.48 of 4-Aug-16

- Added support for Advantest R3131 (requires -advantest CLI option or Advantest R3100 menu selection)

Release 1.49 of 26-Aug-16

- Fixed a bug that could cause a crash when connecting to a SCPI-compatible analyzer after acquiring data in unconnected (test) mode
- Added experimental support for arbitrary span widths up to 4 GHz on the Agilent E4406A. Some hints:
  - Use the 'r' key (Measure->Edit composite sweep range) to specify a span, then connect to the E4406A as usual after selecting Acquire->SCPI-compatible analyzer mode or using the -scpi command-line flag
  - Optionally, use the -start and -stop command-line options described above (or -CF and -span) to specify an extended span on the command line
  - Recommend using the -f option (Acquire->Acquire at maximum available speed) with this feature
  - Using a direct Ethernet connection to the E4406A rather than a GPIB adapter will also yield significantly better performance. A typical CONNECT.INI configuration for direct E4406A access can be found here. (Don't forget to set is_Prologix to 0!)
  - When using a direct Ethernet connection, you can select any GPIB address on the Acquire menu to initiate acquisition, but Acquire->SCPI-compatible analyzer mode must still be selected first.

Release 1.50 of 17-Feb-17

- Added Acquire->Pause/resume acquisition option
- Fixed bug introduced in V1.49 that could cause an incorrect frequency scale to be displayed after loading an existing .SSM file

Release 1.51 of 28-Sep-17

- Added File->Export individual X/Y points to .CSV file option, which inserts linefeeds between each frequency/amplitude pair

Release 1.52 of 10-Jun-20

- Added standard Iridium simplex (ring alert and messaging) frequencies to the Display menu

Release 1.53 of 15-Oct-20

- Fixed bug introduced in 1.52 that could cause failures to connect to certain instrument types
- Added Display->Reset running values (R shortcut key) to clear max-hold and related trace states
- Added shortcut key (Q) for Acquire->Acquire at maximum available speed command

Release 1.54 of 29-Jul-21

- Added -trace: command-line option for HP 8566B/8568B spectrum analyers

Release 1.55 of 24-Nov-22

- Fixed bug that caused incompatibility with R&S FSU in SCPI mode

Release 1.56 of 22-Mar-24

- Added -interval_ms option to specify desired minimum interval in milliseconds between recorded traces. Default=0 to record all incoming traces without skipping any
- Added -V option to accumulate average trace data in X/Y graph

Acknowledgements and Additional Notes

The assistance (and patience) of Dave Robinson, WW2R is gratefully acknowledged.

Thanks to Geoff Bunza, AD7JP for the Tektronix 2710-series patch.

Thanks to Dr. Alfredo Rosati, I5UXJ for his contribution of the Tektronix 2782/2784 support code, to Ron Kittel, K8AQC, and Grant Hodgman, G8UBN for their extensive help with development and testing on the HP 3585A. Matt Ettus of Ettus Research provided access to the Advantest R3267, and Jack Smith, K8ZOA of Clifton Laboratories provided access to the Advantest R3463. Darren Storer, G7LWT provided access to the Advantest R3361A, while Dimitry Borzenko, 4Z5CP, provided access to the Anritsu MS8604A.

The assistance of Had Allhands, K7MLR with the HP 3588A, and of Abdul Nizar of Synapse Product Development with the Agilent E4402B, is greatly appreciated.

Released into the public domain 13-Dec-05 by John Miles, KE5FX.
Please contact john@miles.io with feedback and enhancements!

Source code compilable with the free Microsoft Visual Studio Express package
No warranties, expressed or implied, are offered with this program.
Use at your own risk!