An Intelligent Plotter Emulator for HP-GL/2-Compatible Instruments

7470.EXE is a Win32-based emulator for the HP 7470A plotter. It will acquire an HP-GL/2 plot and render it in a window. The plot can then be printed, viewed as an overlay with other plots, or saved in several different graphics file formats as well as its original HP-GL/2 format.

With the help of 7470.EXE, you can capture screenshots from GPIB-based test equipment such as digital oscilloscopes, spectrum analyzers, logic analyzers, and more. 7470.EXE can even recognize certain instrument models and and request plots from them without user access to their front-panel controls.

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

Running 7470

Depending on the options you selected during installation, you can run 7470.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 7470.EXE from a DOS-box command line or Windows Start->Run... command, optionally specifying a GPIB address from which to acquire host-requested plots (see below), or the names of one or more existing HP-GL/2 data files. Use quotes around filenames that contain spaces - for example,

      7470 "IMD test.plt"            ... Display "IMD test.plt" by itself
      7470 before.plt after.plt      ... Overlay before.plt and after.plt
      7470 (no command-line options) ... Display all plots in the current directory

You can acquire your own HP-GL/2 .PLT files via the options on the Acquire menu, if your PC has a National Instruments-compatible GPIB interface or a Prologix GPIB-USB/GPIB-ETHERNET adapter. It's important to understand that there are two ways to do this in 7470.EXE. Unlike other plotter emulators, 7470.EXE supports both host-requested and device-initiated plotting operations.

Host-Requested Plots

A few instruments, currently limited to the following models, support "host-requested" plotting in 7470.EXE.

If your instrument appears in this list, then you can use the Acquire menu to ask it to send an HP-GL/2 plot to 7470.EXE without the need for any interaction with the instrument's front-panel controls. Given a sufficiently-long GPIB cable, you don't even need to be in the same room as the instrument. This mode of operation is also handy for another reason: as 7470.EXE communicates with the instrument to request the plot, it can also turn on graticule illumination, enable the desired display elements, select appropriate pen colors, and execute other plotter-setup tasks that the user would otherwise need to perform manually.

Normally, you'll issue host-initiated plot requests by selecting one of the "Request plot from supported device at address n" options on the Acquire menu. Instrument shortcut entries (see below) can also be selected. Note that earlier Prologix adapters, and those with their DIP switches set to Device mode, can't support host-requested plots at all.

Most instruments that support host-requested plots may be addressed directly on the 7470.EXE command line, just like a .PLT filename:

	7470 3
The above example is suitable for inclusion in a Windows desktop shortcut. When clicked, the shortcut will launch 7470.EXE, which will then immediately request a plot from the supported instrument at GPIB address 3. This feature allows you to capture screenshots with a single mouse click on the host PC.

Host-Requested Plots via Instrument Menu Shortcuts

Beginning with the 1.80 release of 7470.EXE, you can also add strings of the form

	instrument_0         Tektronix 2430A at GPIB address 4\tF2
to the 7470.INI file in the 7470.EXE program directory. The file contains several entries that illustrate how this is done. (See below for more information on 7470.INI.) If any of these entries are present (and not commented out with a leading semicolon), the Acquire menu will include a list of the instrument name/address specification strings and allow you to select one with the mouse, or, alternatively, by pressing a function key.

Important notes for users of HP 8566A-8568A, HP 3585A/B, and SCPI-compatible spectrum analyzers and HP 8510- and 87xx-series VNAs

Some instruments can't be automatically identified and addressed by 7470.EXE, and many also don't support HP-GL/2 plotting at all. Fortunately, 7470.EXE can still work with certain instrument models that are incompatible with other plotters and emulators.

HP 8566A, HP 8567A, and HP 8568A spectrum analyzers

In order to tell 7470.EXE to access one of these instruments, at least one instrument menu shortcut must contain the string "8566A", "8567A", or "8568A". When a shortcut key corresponding to an HP 8566A-8568A spectrum analyzer is pressed, 7470.EXE will request raw annotation, state, and trace data from the analyzer and generate its own HP-GL/2 .PLT file image based on it. This HP-GL/2 image may then be saved, rendered, and printed just like any other .PLT file. A typical menu shortcut for an HP 8566A-8568A spectrum analyzer looks like this:

	instrument_0         HP 8566A / 8567A / 8568A (via HP-GL/2 emulation) at GPIB address 18\tF8

The HP-GL/2 synthesis process for the HP 8566A-8568A analyzers takes place in less than a second, including the data acquisition itself. It's actually a great way to access the later HP 8566B-8568B models as well; not only are 7470.EXE's synthesized HP-GL/2 plots much faster to acquire, but certain features such as markers look much better than they do in the B-series analyzers' own plots. Note, however, that a few display features such as the 'C' trace and hardware diagnostic/error messages will not appear in a synthesized plot.

HP 3585A/B spectrum analyzers

In order to tell 7470.EXE to access one of these instruments, at least one instrument menu shortcut must contain the string "3585". When a shortcut key corresponding to an HP 3585A/B spectrum analyzer is pressed, an HP-GL/2 plot will be synthesized from raw instrument data, as with the HP 8566A-8568A support process described above. A typical menu shortcut for an HP 3585A/B spectrum analyzer looks like this:

	instrument_0         HP 3585A/B (via HP-GL/2 emulation) at GPIB address 11\tF3

HP 87xx- and 8510-series vector network analyzers

In order to tell 7470.EXE to access one of these instruments, at least one instrument menu shortcut must contain the string "8510", "8753", or "8702". When a shortcut key corresponding to one of these VNAs is pressed, a conventional HP-GL/2 plot will be fetched and rendered. A typical menu shortcut looks like this:

instrument_6         HP 8510 or 8753 series at GPIB address 16\tF9

SCPI-compatible spectrum analyzers

Some SCPI-compatible models supported by SSM.EXE and SATRACE.EXE can be addressed by 7470.EXE by placing the string "SCPI" in an instrument menu shortcut. The default 7470.INI file contains an instrument shortcut associating the F11 key with a SCPI instrument at address 20:

instrument_7         Supported SCPI-compatible spectrum analyzer at GPIB address 20\tF11 
In principle most of the SCPI instruments supported by SSM should work with this option, but currently only the Rohde & Schwarz FSP has been tested.

Again, the normal host- or device-initiated plot menu options will not work with these instruments.

Beginning in version 1.92, a few instrument-menu shortcuts are included by default in 7470.INI. If your 8566A-8568A analyzer's GPIB address is 18, you don't have to modify 7470.INI at all -- just hit F8! Likewise, F9 will acquire a plot from an 8510-series network analyzer by default.

Device-Initiated Plots

If your instrument doesn't appear in the list above, that means it isn't directly supported by 7470.EXE, and won't work with the Acquire->Request functions, instrument menu shortcuts, or the command-line GPIB address feature. However, chances are good that you can still obtain plots from it by activating its front-panel "Plot" button while 7470.EXE is in the "Wait for device-initiated plot" mode. This mode may be selected from the Acquire menu, or by pressing the lower-case 'w' key.

GPIB Instrument and Interface Configuration Notes

Host-requested plotting requires 7470.EXE to carry on a two-way GPIB conversation with the instrument, so you'll need to configure your instrument for Talk/Listen mode (as opposed to Talk-Only or System Controller mode) for use with this feature. This typically involves changing a system-level menu option or DIP switch. All National Instruments GPIB adapters support host-requested plotting, but only versions 3.1 and later of the Prologix GPIB-USB adapter can provide the necessary GPIB controller functionality. All Prologix GPIB-ETHERNET adapter versions are compatible. (For more information on the Prologix adapters, you can contact Prologix here.)

Device-initiated plotting usually requires the instrument to be configured for Talk-Only mode. When their front-panel PLOT buttons are pressed, some instruments, such as the HP analyzers, expect the plotter to be addressable at a specific GPIB address, usually 5. The emulated plotter address is normally controlled by 7470.EXE's GPIB menu, unless an older Prologix adapter with DIP switches is in use. Certain instruments expect to be the only addressable device on the bus when their PLOT buttons are pressed, requiring selection of the "Listen only" option in 7470.EXE's GPIB menu.

As you can imagine, experimentation is sometimes needed to find the right combination of device and host settings that will allow 7470.EXE to work with a particular instrument. Some notes on specific instruments appear below.

Keep in mind that some instruments need to be set to Talk-Only mode to support device-initiated plots. However, some of those instruments, when set to Talk-Only mode, may prevent other instruments on the GPIB bus from communicating with 7470.EXE (or anything else). Users of multiple GPIB instruments may need to experiment to find a configuration that allows all of the instruments to work properly with each other.

Also, if you have more than two or three powered-down instruments on the GPIB bus, keep in mind that they'll load the bus, possibly preventing successful communication with the instrument(s) that are turned on. When attempting to use 7470.EXE with a new instrument for the first time, it's best to use a simple direct connection between the instrument and the host PC's GPIB adapter.

I'm always interested in hearing from users of other instruments so they may be added to the list above. Please feel free to contact me at with any bug reports or success stories.

Menu Commands and Keyboard Shortcuts

     Key               Menu Command                                 Remarks
l File->Load HP-GL/2 data Retrieves a saved HP-GL/2 file (.PLT, .HPG, .PGL, .HGL) for viewing s File->Save image or HP-GL/2 data Saves the currently-browsed plot as an HP-GL/2 file. Also can be used to save the current window contents (which may consist of several overlaid HP-GL/2 files) as a .GIF, .BMP, .TGA, or .PCX image file p File->Print image Sends the current window contents to the default Windows printer Home File->Close all visible plots Stop displaying/browing any currently-loaded plots. This command does not delete any files; it simply removes them from 7470.EXE's current display list. Delete File->Close current plot Stop displaying/browsing the currently-visible plot. This command does not delete the file; it simply removes it from 7470.EXE's current display list. Ctrl-Delete File->Delete current plot file Same as File->Close current plot, except that it deletes the HP-GL/2 file being viewed Esc File->Quit Space or F5 View->Refresh current display Reloads the currently-visible HP-GL/2 file. If the file was acquired as a host-requested plot in the current 7470.EXE session, it will be re-acquired. b View->Browse sources one at a time Allows you to use the +/- keys to move through the list of viewable plots, displaying them one at a time o View->Overlay all sources Renders the graphical (i.e., non-text) portions of all loaded or acquired HP-GL/2 plots atop each other. In Overlay mode, the +/- keys are used to determine which plot contributes text labels to the display. The three traces in the example image at the top of this page were displayed with the View->Overlay command prior to being saved as a .GIF file. (Use caution when closing or deleting a file in Overlay mode. The visible text labels are the only way to tell which file will be closed or deleted!) + View->Next source Navigates the list of visible HP-GL/2 plots. Specific behavior is - View->Previous source determined by the choice of Browse/Overlay mode (above). 5 Display->512 x 384 Adjusts the size of 7470.EXE's window. Some crowded plots look much Display->640 x 400 better at higher resolutions, but 7470.EXE will render an undersampled 6 Display->640 x 480 image if you you select a window size that's too large for the current 8 Display->800 x 600 Windows desktop. You can change the default window size in the 7470.INI 9 Display->1280 x 960 file (below.) 0 Display->1024 x 768 a Display->Antialiasing Enables basic antialiasing of text and graphics in plots drawn with white backgrounds. i Display->Alternate colors Useful for certain instruments such as the HP 8566/8568 analyzers whose graticule and trace colors appear inverted in 7470.EXE. (This option was added prior to the pen_colors array in 7470.INI, which can be a better place to address color-rendering problems.) k Display->Background Toggles the background color between white and the pen specified by INI_background_color in 7470.INI. r Display->Rotate Rotates the image in 90-degree increments. c Caption->Edit caption text Allows you to enter text which can subsequently be placed at any desired location by left-clicking on the currently-viewed plot. Supported only in Browse mode. e Caption->Erase most-recently-added caption ... Removes the most-recently-added user caption from the plot. Supported only in Browse mode. w Acquire->Wait for device-initiated plot Enters a mode in which 7470.EXE waits for, and renders, HP-GL/2 data that arrives after pressing the front-panel PLOT button on an instrument. You can press any key to exit this mode and restore normal 7470.EXE operation. W Acquire->Wait for device-initiated plot, Same as above, except that each incoming plot is sent to the then print default Windows printer. If you set the auto_print_mode field in 7470.INI to '1', 7470.EXE will enter this mode on startup, acting as an unattended HP-GL/2 print server. Acquire->Beep when plot received If this option is selected, 7470.EXE will attempts to play the .wav file specified by the beep_wav_filename field in 7470.INI as soon as each incoming device-initiated plot has been received The default setting is based on the beep_when_plot_received field. Acquire->Request plot from supported When one of these options is selected, 7470.EXE will attempt to device at GPIB address N(1-30) identify the instrument at the specified address and initiate a host-requested plotting operation. This may entail sending commands to the instrument to turn on its graticule display, select HP-GL printing, and perform other setup tasks. Undefined results may occur if the instrument does not appear in the list under "Host-Requested Plots" above. GPIB->No assigned plotter address During device-initiated plots, some instruments may need to (listen-only) communicate with the (emulated) plotter, expecting to find it at a specific GPIB address. Others may expect the plotter to be GPIB->Plotter addressable at N(0-30) entirely transparent to the GPIB bus. This menu allows you to specify the plotter's address, or to assign it no address at all. When an older Prologix GPIB-USB adapter is in use, this functionality is provided by its DIP switch, and the GPIB menu will have no effect.

Mouse Controls

Left-click anywhere within a displayed plot in Browse mode to add the current caption text (Caption->Edit caption text...) to the plot at that location.

The modified HP-GL/2 file will be saved automatically after any user captions are added or removed.


The directory containing 7470.EXE should also contain a file called 7470.INI, which provides some configuration defaults that you can change if desired.

Most users won't need to edit this file. To configure the GPIB Toolkit for use with Prologix GPIB adapters, you'll need to edit CONNECT.INI instead, or run the GPIB Configurator utility (see below).

Here is an example of a 7470.INI file with comments explaining each line:

;Initial X/Y resolution.  If you specify a window that's 
;too big for your desktop, 7470.EXE may behave strangely 

res_x                800
res_y                600

;Initial X/Y window placement.  Uncomment these lines to
;specify the location of the upper-left corner of the 7470.exe
;window on your desktop.  By default, the window is always
;centered on the primary monitor.

;pos_x                100
;pos_y                100

;If your plots appear clipped improperly, you can change the default
;renderer margins here

x_margin             24
y_margin             24

;Set to '1' to display graphs in an alternate color set. 
;Useful for the HP 8566B analyzer, possibly others 
;'0' causes 7470 to use the default pen colors specified below

color_scheme         0

;Background color: set to 0 for white background, 1 for black, etc

background           0

;Antialiasing: set to 0 to default anti-aliasing to OFF,  1 for ON
;  Antialiasing attemps to smooth out jagged angled lines.  It may reduce
;  contrast and cause some lines to look "ropey."  It is currently enabled only 
;  if background is 0 (white)

antialias            1

;Image rotation: 0:   0 degrees
;                1:  90 degrees
;                2: 180 degrees
;                4: 270 degrees

rotate               0

;Specify a higher value (in milliseconds) if 7470.EXE times  
;out during device-initiated plotting                        

async_timeout        3500

;Options below are used to determine how the plotter responds to various  
;output queries.  No effect unless a valid GPIB board address is specified.
;Lines in this group may be commented out if necessary to suppress replies 
;to a given query

OE_reply             0
OH_reply             250,279,10250,7479
OI_reply             7470A
OP_reply             250,279,10250,7479
OO_reply             0,1,0,0,0,0,0,0
OF_reply             40,40
OA_reply             250,279,0
OC_reply             250,279,0

;Set to '0' to suppress replies to OS (Output Status) command

process_OS           1

;Set to '1' to autodetect pen-storage commands in device-initiated plots, 
;avoiding the need to wait for the async_timeout interval to expire at the
;end of each plot.  Set to '0' if plots appear to be terminated prematurely

SP0_detect           1

;Sets the default plotter address in the GPIB menu.  Use -1 for
;listen-only mode

default_board_addr   5

;For diagnostic/optimization purposes

async_xfer_size       100
async_GPIB_timeout_ms 1000
serial_read_dropout   500
release_sys_control   0
ignore_write_aborts   1
min_plot_bytes        128

;Caption text applied when left-clicking on plot
;(leading spaces ignored)
;If this field is blank, the user will be prompted to enter the
;caption text


;Set to '1' to execute a 'W' (Acquire->Wait for device-initiated plot, then print)
;function automatically when 7470.EXE starts.  Helpful if you want to make an 
;unattended PC act as a dedicated HP-GL/2 print server.  (Suggest setting 
;use_default_printer to 1 if you use this feature.)

auto_print_mode      0

;Set to '1' to force 7470 to use the default Windows printer, or '0' to show the
;standard printer-selection dialog each time a print command is issued

use_default_printer  1

;Uncomment this line (remove the leading semicolon) to force
;7470.EXE to exit immediately after acquiring a plot and saving it.
;Normally, this line should be left commented out to run 7470 in its
;'interactive' mode.  Note that if any command-line parameters are 
;supplied when launching 7470, the auto_save_filename option is ignored

;auto_save_filename   c:\my documents\automatic capture.gif

;Set beep_when_plot_received to '1' to play a sound after each new 
;device-initiated plot has been received
;Sound may optionally be specified as a .wav filename.  If beep_wav_filename
;is commented out, a default system alert sound will be played

beep_when_plot_received    0
beep_wav_filename          c:\program files\ke5fx\gpib\beep.wav

;Enable to write incoming/outgoing GPIB traffic to a file during
;reception of device-initiated plots

;traffic_diag_filename      c:\traffic.txt

;Enable to preface all received plots with a specified string
;(Try "IN; SC0,4095,0,4388;" if your HP 8702B/8753C plots are rendered improperly)

;HPGL_preface                IN; SC -92,628,-16,287;

;Optional list of instrument/address pairs for the Acquire menu
;Entries should have the form 'instrument_n    xxxx at GPIB address ',
;where n is an arbitrary value or name and xxxx is the name of the
;instrument at the specified address.  Optionally, the entry value may end
;in a '\tFn' substring to assign a keyboard shortcut to the instrument.
;(Don't use F1, F5, or F10 -- they are reserved for other functions.)
;If any entries are present, then they will be added to the Acquire menu.
;This feature is valid ONLY for those instruments for which 7470 
;supports host-requested plots!

instrument_0         Tektronix 2430A / 2432A / 2440A at GPIB address 4\tF2
instrument_1         HP 3561A at GPIB address 11\tF7
instrument_2         HP 3585A/B (via HP-GL/2 emulation) at GPIB address 11\tF3
instrument_3         Tektronix 49x at GPIB address 3\tF4
instrument_4         HP 8566B / 8567B / 8568B at GPIB address 18\tF6
instrument_5         HP 8566A / 8567A / 8568A (via HP-GL/2 emulation) at GPIB address 18\tF8
instrument_6         HP 8510 or 8753 series at GPIB address 16\tF9
instrument_8         HP 54201A at GPIB address 5\tF12

;Pen RGB color array (custom color set that may look better with some instruments)

pen_0                255,255,255 `White
pen_1                0,0,0       `Black
pen_2                0,0,255     `Blue
pen_3                0,192,0     `Green
pen_4                128,128,0   `Dark yellow
pen_5                255,0,0     `Red
pen_6                255,0,255   `Magenta
pen_7                0,255,255   `Cyan

;Standard HP-GL pen colors, uncomment if preferred

;pen_0                255,255,255 `White
;pen_1                0,0,0       `Black
;pen_2                255,0,0     `Red
;pen_3                0,192,0     `Green
;pen_4                0,0,255     `Blue
;pen_5                0,255,255   `Cyan
;pen_6                255,0,255   `Magenta
;pen_7                128,128,0   `Dark yellow

;  Plotter units range.  Small format plotters like the 7470 have the origin
;  of the plotter units in the lower left corner.  Newer/larger ones have it 
;  in the center of the plot area.  This 'pu' setting lets you set the plotter 
;  units range to match the plotter that you want to emulate.  Note that some
;  plotters have the X and Y axes swapped... this can really mess things up.
;  try the keyboard 'r' command to attempt to rotate these plots to a usable
;  orientation.
;  pu xmin,ymin,xmax,ymax

pu 0,0,10660,7995 'good for 7470 emulation with instrument plots (ratio 1.333:1)


Your PC's local user data directory should 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 7470 and the other GPIB Toolkit applications to use it, or you can simply select your adapter in the GPIB 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 may 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.

Release Notes

Release 0.91 of 31-Oct-01

Release 0.92 of 22-Jan-02 Release 0.93 of 28-Jan-02 Release 0.94 of 03-Feb-03 Release 1.00 of 15-Apr-03 Release 1.50 of 19-Jul-04 Release 1.60 of 9-Oct-04 Release 1.70 of 22-Mar-05 Release 1.80 of 13-Dec-05 Release 1.81 of 28-Dec-05 Release 1.82 of 3-Jan-06 Release 1.83 of 10-Mar-06 Release 1.84 of 25-Mar-06 Release 1.85 of 18-Apr-06 Release 1.86 of 19-May-06 Release 1.87 of 26-May-06 Release 1.88 of 25-Jun-06 Release 1.89 of 6-Jul-06 Release 1.90 of 1-Oct-06 Release 1.91 of 9-Nov-06 Release 1.92 of 15-Jan-07 Release 1.93 of 22-Jan-07 Release 1.94 of 5-Feb-07 Release 1.95 of 6-Feb-07 Release 1.96 of 8-Feb-07 Release 1.97 of 4-Mar-07 Release 1.98 of 20-Mar-07 Release 1.990 of 28-May-07 Release 1.991 of 04-Nov-07 Release 1.992 of 06-Nov-07 Release 1.993 of 07-Nov-07 Release 1.994 of 16-Jan-08 Release 1.995 of 05-Apr-08 Release 1.996 of 7-May-08 Release 1.997 of 14-Jul-08 Release 1.998 of 25-Jul-08 Release 1.9981 of 5-Nov-08 Release 1.9982 of 23-Dec-08 Release 1.9983 of 8-Apr-09 Release 1.9984 of 5-Oct-10 Release 1.9985 of 9-Jun-11 Release 1.9986 of 28-May-12 Release 2.00 of 8-Dec-13 Release 2.002 of 13-Jan-15 Release 2.003 of 18-Nov-15 Release 2.01 of 30-Dec-15 Release 2.02 of 22-Dec-16

Acknowledgements and Additional Notes

Thanks to Harrison Hooker, W8YMO for supplying information on the obsolete HP7470A command set, and to Mark S. Sims for his contribution of the new HP-GL/2 renderer in the 2.00 release.

Thanks to Vladan Temer of Sonoma Instrument Co. for supplying additional 7470A documentation and providing extensive assistance with support for various HP instruments in the 1.60 release.

Thanks to Dr. Alfredo Rosati, I5UXJ for his contribution of the Tektronix 2782/2784 and HP 8510 support code, and to Ron Kittel, K8AQC, and Grant Hodgman, G8UBN for their extensive help with development and testing on the HP 3585A.

HP 54200-series DSO support provided by Abdul Nizar of Prologix.

If you find that 7470.EXE doesn't meet your needs, an excellent commercial alternative is PrintCapture. See the PrintCapture site for more information. Two more-expensive commercial packages from Aphena, which I haven't personally evaluated, are Plottergeist and SoftPlot. Two good third-party renderers for HPGL files obtained from 7470.EXE are ViewCompanion and CERN's HPGLVIEW. Also see David MacDermot's work on CodeProject.

Released into the public domain 24-Jan-01 by John Miles, KE5FX.
Please contact 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!