Program:  ISF Tool v2.757
Released: 04 October 2002
Author:   Benjamin Despres
License:  GPL 2.0



Purpose:

  This program performs a number of necessary, or at least
  frequently requested, tasks on an Istvan Standard Format
  file (aka ISF file).  For more details on the ISF format,
  please see the description with my older text-only ISF
  checker program.



Features:

  ISF file data verification by the MOD-9 checksum.

  ISF file integrity verification using an optional CRC-16.

  Generic file integrity checking (length, well-formed, etc).

  Graphical display of an ISF file's data.

  Frequency analysis of an ISF file's data.

  Ability to save the display as a Windows bitmap (.bmp) file.

  Calculation of several interesting statistics about the data.



Use:

  The main screen has six buttons, two scroll bars, one text
  box (not counting the horizontal scroll bar indicator), and
  one drawing area.

  The program's output goes to one of two places, either the
  text box, or the drawing area, as appropriate.

  The default graphical output consists of a grid of pixels
  that shows data in the loaded ISF file, one pixel per
  digit.  Black represents a zero, white represents a nine,
  and all the numbers in between use a smooth greyscale.
  The horizontal slider, the current value of which appears
  as the number to its right, determines the width of the
  grid of pixels.  The vertical slider sets the starting row
  of the grid, effectively acting like "normal" vertical
  sliders.  Move it up, the grid scrolls down.  Move it
  down, the grid scrolls up.

  Buttons:

    "Load ISF" - This button allows the user to select a new
    file into the program.  It uses a standard Windows file
    selection dialog, nothing complicated.

    "Save BMP" - This captures the drawing portion of the
    window and saves it to a Windows bitmap file.  This too
    invokes a normal file selection dialog.  Saving the
    bitmap will take a few seconds, so don't go expect the
    program to respond until the text box confirms that the
    file saved okay.

    "DFT" - This calculates a partial Discrete Fourier
    Transform of the file's data.  "Partial", because it
    doesn't compute *every* frequency bin, just one bin
    per line in the graph this will produce.  Even so, it
    goes PAINFULLY slow.  A green line will creep across
    the bottom of the window to indicate progress.  To get
    an idea of how slow, try opening a medium-sized file
    (250k or so) before opening a "real" file.  Incidentally,
    for those who will doubtlessly using an FFT to speed this
    up, an FFT does not allow the calculation of arbitrary
    frequencies, and would in fact end up taking quite a lot
    longer overall.

    "Stats" - This calculates the first 4 statistical moments
    in the data, plus the standard deviation.  It also builds
    a single-digit and pairwise frequency distribution from
    the data, which it displays in two pleasant pastel-colored
    bar-graphs.  For the pair-wise graph, due to screen space
    constraits, the labels only show the first digit in the
    pair.  The second digit increases going right, and always
    goes from zero to nine.  Not all that hard to figure out.

    "Update" - Redisplays the drawing area (using the default
    grid of pixels).  Use this after moving or resizing the
    window, or if something else hid part of the window.

    "AutoWidth" - Presumeably, the user may want to look for
    patterns in the grid of pixels.  Trying all possibly grid
    widths, however, would take a very long time.  This button
    will find the width that yields the lowest between-row
    mean squared error (using the standard autocorrelation
    function.  Although not nearly so bad on large data sets
    as the DFT calculation, this too will take a while to
    calculate, and shows a creeping green line to indicate
    progress.  It will only search widths up to the current
    screen width, so to get a reasonable approximation to
    the global MSE, maximize the window before using the
    AutoWidth function.

  On startup, the program will display the "Open File" dialog
  (the same one presented from clicking "Load ISF").  Although
  the user can cancel this dialog, the program will exit as
  a result.  Not a critical problem, but not a bug either.
