  ________________________________________________
 / IN PURSUIT by Martin Bazley  /  Version 3.20  /
/ //
\ \                            VERSION HISTORY /
 
StrongED$Wrapwidth = 77
StrongED$FoldParm1 = ( "=== ",, StartOfLine )

(Non-StrongED users can ignore the above lines.  Otherwise, press
control+keypad-minus to fold the text.)

For interactive contents, do a 'List of Found' search for '==='.

=== Introduction ==

For those people (like me) who like to see how a program develops.  If you
are not, this file will probably be of no interest to you.

I still think it's fascinating how this program evolved from a single
statement in the !Run file (reading "Filer_OpenDir <Obey$Dir>.Progs") and
sprites which didn't work properly (remedied in v. 2.10), into one of my most
complex pieces of BASIC ever.  That probably speaks volumes about my dismal
knowledge of any sort of programming language, but there you go.

For those of you who care (are there any?), versions 1.00, 1.10, 2.00 and
2.01 never knew themselves as such - the 'version' system was not adopted
until version 2.10 (or what would have been Release 5).  By the way, if I'd
kept with the old numbering, this version would be Release 34!

Prior to version 3.10, there are, for the most part, no dates specified.  I decided early on in the history of the program that it wasn't worth recording the dates when those of versions 1.00 and 1.10 had already been lost in the mists of time.  Eventually I realised I was losing a valuable historical archive, and changed matters!

=== Overview ==
 ________________________________________________________
| Version | Total | Internal | UI | Help | Bugfix | File |
|---------+-------+----------+----+------+--------+------|
| 1.10    | 2     | 1        |    |      |        | 1    |
| 2.00    | 3     |          | 1  | 1    |        | 1    |
| 2.01    | 2     | 1        | 1  |      |        |      |
| 2.10    | 4     |          | 1  | 1    | 2      |      |
| 2.11    | 4     | 1        |    | 2    |        | 1    |
| 2.12    | 2     | 1        |    |      | 1      |      |
| 2.20    | 3     | 1        | 1  |      |        | 1    |
| 2.21    | 10    | 2        | 2  | 2    | 3      | 1    |
| 2.22    | 5     | 4        |    |      | 1      |      |
| 2.23    | 8     | 2        | 3  | 2    |        | 1    |
| 2.24    | 6     | 3        |    | 2    |        | 1    |
| 2.30    | 6     | 1        | 2  | 3    |        | 1    |
| 2.31    | 13    | 5        | 2  | 4    | 1      | 1    |
| 2.32    | 8     | 3        |    | 4    |        | 1    |
| 2.33    | 5     | 1        |    | 3    | 1      |      |
| 2.33a   | 6     | 3        |    | 3    |        |      |
| 2.34    | 4     | 1        | 2  | 1    |        |      |
| 2.35    | 5     | 1        | 3  |      | 1      |      |
| 2.36    | 7     |          | 1  | 5    | 1      |      |
| 3.00    | 20    | 5        | 9  | 2    | 1      | 3    |
| 3.01    | 5     | 1        | 3  | 1    |        |      |
| 3.01a   | 3     |          | 2  | 1    |        |      |
| 3.02    | 6    | 5        | 1  |      |        |      |
| 3.03    | 7     | 1        | 2  | 4    |        |      |
| 3.04    | 10    | 6        | 3  | 1    |        |      |
| 3.05    | 6     | 1        | 3  | 2    |        |      |
| 3.06    | 8     | 7        | 1  |      |        |      |
| 3.10    | 12    | 3        | 6  | 1    |        | 2    |
| 3.11    | 6     | 2        | 1  | 1    | 2      |      |
| 3.12    | 8     | 4        | 1  | 2    | 1      |      |
| 3.13    | 8     | 5        | 1  | 2    |        |      |
| 3.13a   | 8     | 2        | 1  | 5    |        |      |
| 3.20    | 22    | 16       | 2  | 3    | 1      |      |
|---------O-------O----------O----O------O--------O------|
| TOTAL   | 232   | 89       | 55 | 58   | 16     | 15   |
|_________|_______|__________|____|______|________|______|

=== Version 1.00 ==

   First version - really just a directory with a picture on the front.

=== Version 1.10 ==

   Nearly halved the size of some of the programs by incooperating loops.
   Compacted some names.

=== Version 2.00 == 28th May 2005 ==

   Wrote an all-new index,  breaking away from the worrying likeness to a
    directory at last.
   Wrote a help file, too.
   Compacted the rest of the names.

=== Version 2.01 == 28th May 2005 (evening) ==

   Removed an essentially redundant line from the index program.
   Added a neat little inversion over the release number.

=== Version 2.10 == 29th May 2005 ==

   Added some of Harriet's wisdom to the Index file, so you no longer have
    to press a number twice.
   Adopted a new version system - 'Release 1','Release 2' etc. can go on for
    ages (and looks set to do so) and the numbers can get astronomical.
   Made a new application sprite to more accurately represent what "In
    Pursuit" is, as well as a new small version.
   Solved the mysterious matter of the Missing Sprite at last - a missing !
    in the !Boot file.

=== Version 2.11 ==

   Updated a good number of the programs to be more efficient and more
    compact.
   Shortened all the names down to abbreviations.  Also removed the
    meaningless '2's on the end of some of them - left over from version
    1.10.
   Added notes on the programs in the help file.
   Revised the version list yet again - everything is now in clearer bullet-
    points.

=== Version 2.12 ==

   Fixed a bug (introduced in v2.11) in the coloured 2-sided All Possible
    Lines - it was coming out in monochrome!
   Shortened the GET handling in the index.

=== Version 2.20 ==

   Rewrote a hefty portion of the index, to categorise everything.
   Added an error handler to the index...five versions on!
   Behind the scenes: renamed IPAS and IPASC IP4S and IP4SC respectively,
    for the sake of consistency no-one'll see anyway.

=== Version 2.21 ==

   There is now a two-sided coloured Normal In Pursuit, and a four-sided
    monochrome All Possible Lines (categorised better).
   Updated the program notes in the help file and the index accordingly.
   A pre-2.10 bug is back, and bigger than ever!  This time you should no
    longer have to press numbers THREE times!
   Got rid of useless variable STA$ (used for displaying choices so far in
    the right-hand side of the screen - ordinary PRINT TABs are simpler).
   Added an OFF statement to the index to get rid of the annoying flashing
    cursor - don't know why I didn't think of it earlier.
   Harriet has informed me that I can't spell 'Pursuit'.  Rooted out every
    occurrence of 'Persuit' and changed them.  This also meant renaming the
    application.
   Fixed stupid, stupid bug where the screen wasn't being cleared when
    Delete was pressed.
   Filenames are now calculated from scratch.  I knew changing those
    filenames would pay off someday...
   Two-sided monochrome Normal In Pursuit now has a delay between lines.
   Probably more(!) things I can't remember.
   Added 'to do' list.

=== Version 2.22 ==

   Removed bug in IF...THEN loop.
   Removed pointless IF...THEN loop while I was at it. :->
   Removed two unused variables from version 2.20.
   Removed unnecessary END statement.
   Removed surplus PRINT TABs - all status-displaying is now carried out in
    new procedure PROCstat.

=== Version 2.23 ==

   All programs now wait for a key to be pressed before ending.
   4-sided coloured All Possible Lines now behaves properly.
   Removed relevant entry from notes and 'to do' list.
   Rearranged the Gs and GETs in the index a bit.
   Got rid of some inconsistent and unnecessary PRINT TABs in the second
    menu.
   Added OFF statements to all programs.  Flashing cursors in the index is
    one thing, but actually in the programs is another matter!
   Got rid of all the 'colour' programs that were nearly identical to their
    monochrome siblings.  Implemented loops and a change in PROCrun instead,
    meaning colour will only be used if a certain variable is TRUE.
   Removed the last trace of the 'Program x' system, in v. 2.12's entry in
    the history.

=== Version 2.24 ==

   Rearranged the start of the index, to allow for the removal of a PRINT
    TAB.
   Mass crackdown on spaces and variables after NEXTs.
   New entry in the program notes (on line delays).
   New parameter and instruction in PROCstat, to allow removal of more PRINT
    TABs.
   Deleted a sprite from a never-got-implemented feature of version 2.23.
   New entry in 'to do' list.

=== Version 2.30 ==

   Most of my lovely optimisation work goes to waste as three-quarters of
    the index ends up in the trash.  Replaced it with a spanking-new, DATA-
    centred version.
   As a direct result, no more 'Now's before the second two menus.
   Added some angles to the frankly rather boring title box to liven things
    up a bit.
   Split the help file into two sections and added a new technical one.
   Removed two 'to do' entries, but added another.
   Formatted all help files for a 77-column display so they'll work right
    in Zap, a la my big brother Chris.

=== Version 2.31 ==

   Erm...an awful lot.
   Replaced 4 LINE statements with one RECTANGLE in the 4-sided programs.
   Thus the All Possible Lines programs no longer draw their grids from
    (1,1) (don't know why they did in the first place anyway).
   Finally decided that it's far easier to centre text if it *isn't
    centred*.  Created new help-file titles to make use of this amazing new
    revolution.
   Did you know that this version was originally titled '2.30a'?  I had to
    alter the title boxes so it fitted, and I decided to leave them that way
    just in case.
   Changed the history (again) to the format used by the 'Tech' file (i.e.
    interactive contents).
   Actually included the 'Technical Specifications' file this time - sorry!
   Removed some blank lines.
   Added the overview to the history file.
   Slight change to the bottom of all help files.
   I'm slipping - corrected another 'Persuit' in the index.
   Minor change to 4-sided Normal In Pursuit for better consistency.
   Removed completely redundant '=TRUE's after IF statements.
   Deleted unneeded REPEATs in both All Possible Lines programs.

=== Version 2.32 ==

   Got rid of the '4-sided' programs in favour of another Resident Integer.
   Updated 'Tech' file accordingly.
   Numerous other small alterations to the same. 
   Removed two completely unnecessary loops from the All Possible Lines
    program.
   Interactive contents now include introductions.
   Main help file now supports the former feature.
   Removed three absolutely pointless statements from the index.
   Both programs now have error handlers.

=== Version 2.33 ==

   Whoops - reinstated the 'three absolutely pointless statements' when I
    realised their removal lay at the bottom of some*extremely* weird
    descriptions!
   'Tech' file now includes a 'Preliminary' section for the index.
   The existing preliminaries now contain notes about the error handlers.
   Altered version 2.00's entry in the history to a format already
    documented in the overview.  (I'm surprised it's survived this long.)
   Very minor alteration to the DATA statements.

=== Version 2.33a ==

   Removed more blank lines.
   Altered the 'History' and 'Main' help file titles to accommodate the
    version number - I wonder why the 'Tech' one was already done?
   Put in some indents.
   Minor correction to section 2.3 of the 'Tech' file.
   Saved one (yes, one!) character by changing the no. of sides display
    slightly in the index.
   Removed the historical and now-useless 'History' section in the main
    helpfile.

=== Version 2.34 ==

   Added some lines, another inversion and an angle around the status.
    Raised status up a bit to prevent it interfering.
   Tidied up the ridiculous and obscure coordinates around the version box
    (left from v. 2.31).
   Corrected a grammatical error in the 'Tech' file (v. 2.33a).
   Replaced LINEs with MOVEs and DRAWs where possible.

=== Version 2.35 ==

   Moved all resetty bits into new procedure PROCreset.
   Programs no longer wait for a possible screenshot on a blank screen(!)
   Widened the status box (monochrome APLs were going over the edge).
   Programs now refuse to run if they haven't been given any parameters.
   The index error handler now calls PROCreset to safeguard against bogus
    settings.

=== Version 2.36 ==

   The parameter error message is now given in a Wimp error window, to
    avoid unnecessary mode changes.
   Fixed bug which meant the programs did not detect the lack of parameters
    if you had already run one through the index and exited correctly.
   General spelling clean-up.
   New entry in 'To do' list.
   Rewrote the ancient, outdated intro to the main helpfile.
   And added two more sections.
   Not to mention two more entries in the notes.

=== Version 3.00 ==

   Isuppose someone's got to do it. <sigh> Here goes then... <deep breath>
   Moved the OFF statement within the loop, so it could be called on return
    to the index.
   Added comments throughout.
   Completely changed the design of the status box - it is now unashamedly
    a list, and there is another, bigger angle in it.
   A completely !NEW! type of pursuit - the 'Graduated Diagonals' - is now
    officially in operation!
   The status-displaying code is now in a loop, which makes it a lot
    smaller.
   Ditto for the 'three absolutely pointless statements' - sorry - namely
    the configuration resetting thingamabobs.
   The 'run' message has been moved down a bit.
   Now supports 256 colour modes - but you only get to see 64 of them.
   Can now draw pursuits on 3 sides.
   Added a new menu - the 'colouring methods'.  Finally, you can draw lines
    in individual colours.
   Removed all resident integer variables.  I really should have spotted the
    ones in the All Possible Lines program earlier, particularly when I was
    referring to them in the 'Tech' file!
   Speaking of which, the 'Tech' file has been scrapped.  Sorry, but it was
    enormous, ridiculous, unnecessary and too difficult to keep up to date.
   Everything is now contained within a single program.  This has been
    imaginatively dubbed '!RunImage' and is located in the application root
    directory.
   So no more parameter error messages.
   Reformatted the notes section, took out some entries and put in some
    more.
   You can now exit a program (during and after running) and return to the
    index.
   Removed three 'to do' entries and added two more.
   The grid is no longer redrawn in a new colour every time round a colour
    loop.
   Fixed extremely longstanding bug that caused the All Possible Lines code
    to draw over the grid.  This bug has probably been around since heaven
    knows when (personally I suspect version 2.11), but only showed itself
    because of the above change.
   <puff, puff> This version really puts v. 2.00 into perspective, doesn't
    it?  Just one more thing left to say: Got rid of the 'Docs' directory
    and moved its contents into the root.  At last, a helpfile that opens
    when you tell it to.

=== Version 3.01 ==

   Replaced the annoying two-second delay with a GET.  This means you can
    skip it easily.
   Will now wait for a screenshot in 'By lines' mode.
   Removed parameters in the delay procedure - they really weren't needed.
   Justified return message to use the space on the right of the screen.
   Removed the 'to do' entry for it.

=== Version 3.01a ==

   No more brackets around the 'Press SPACE' message in the index.
   Tweaked All Possible Lines line delays slightly.
   Correction to history overview.

=== Version 3.02 ==

   Changed the title boxes again, so the version number doesn't interfere
    with the status so much.
   Added some more comments.
   Combined delay and line colouring procedures into one.
   Shortened the delay handling.
   Added more indents.
   The return message is now run by DATA statements.

=== Version 3.03 == 10th December 2005 ==

   When a program is finished, there is now (finally!) a built-in option to
    take a screenshot.
   Updated 'Notes' section accordingly.
   Minor change to main helpfile introduction.
   Some alterations to the history introduction and overview, the most
    significant being the removal of lots of dashes in the overview.
   The program no longer waits for a key to be pressed before allowing you
    to go back.  The screenshot implementation (which was indirectly the
    cause of this in the first place) automatically blanks out the text for
    the screenshot.
   Two new entries in the 'to do' list.
   The !Boot file is now a little less redundant, with the new task of
    setting the screenshot directory.

=== Version 3.04 == 11th December 2005 ==

   12 hours later, In Pursuit now sets a graphics viewport for the purposes
    of screenshot-taking.
   Combined the two grid-drawing loops.
   Shifted the REPEAT loop, so the grid redraws itself (in white) every
    time round the Repeated Solid loop.
   Removed a 'to do' entry.
   Removed a mysterious disconnected ENDIF - I've no idea how long it's
    been lurking there, since BASIC was always good enough not to complain.
   Got rid of the hideous loop that was in the screenshot code.  It is now
    only executed once.
   As a handy side-effect, you can no longer take multiple screenshots.
   As another handy side-effect, only one loop is now needed for printing
    the message (used to be two).
   Rearranged the colour choosing stuff to be a bit more linear.
   Doesn't use floating point variables in the index GETs any more.

=== Version 3.05 ==

   At last, there is an option to quit from the index.  This miracle can be
    achieved by pressing Delete in the first menu.
   This is getting boring - more alterations to the title boxes to include
    the words 'Main Index'.
   As well as being shown in the status box, your choices are now
    highlighted on the menu.
   Two new 'to do' entries, and altered the format of the list a bit.
   Moved the pursuit-drawing stuff into new procedure PROCpursuit.
   Changed v. 2.30's entry in the history and overview.  Three separate
    items for the same thing is ridiculous...

=== Version 3.06 ==

   Altered the 'By lines' code, so the cycle now restarts in white rather
    than the next colour down - more consistent, given that the first line
    is white.
   New variable for the maximum colour, meaning some IFs can be removed.
   Moved the menu DATAs out of PROCpursuit - oops!
   Changed the mis-spelt name of the All Possible Lines procedure.
   Moved PROCreset and PROCdelay to more logical positions.
   Minor change to the Solid colour choosing.
   Shifted the menu counter and its values around a bit.
   Changed format of PROCreset, and added comments.

=== Version 3.10 == 30th December 2005 ==

   Happy New Year to all!  Here's my present...
   No more status.  The options you chose are displayed above the menus.
   Yep, you guessed it... This means MORE alterations to the title boxes!
    Well, you have to admit that the old ones were starting to look messy.
   Yet more comments.
   Slight tweak to the menu-printer.
   Only one menu is now displayed on the screen at any one time.
   Moved the 'Press SPACE' message (of course!).
   The graphs are now drawn in VGA modes.  No, that was *not* a joke!  I
    can't believe how long it's taken me to implement that.  And it looks so
    much better too...
   Moved the return message down (a by-product of the mode change).  Also
    made it wider (ditto).
   Rewrote the Normal In Pursuit code almost from scratch.  Okay, so it's
    the Graduated Diagonals code with a few things reversed, but it's a lot
    neater and smaller.
   Finally got around to designing some low-resolution application
    sprites.  Yes, they're crap, but it's not easy to draw lines of even
    thickness in rectangular pixels!
   Also improved the small hi-res ones.
   Three 'to do' entries and the note about low-res modes bite the dust.

=== Version 3.11 == 31st December 2005 ==

   Fixed the 3-sided Normal In Pursuits, a physical manifestation of the
    fact that the algorithm was badly corrupted!
   Discovered that pressing arrows in the index would cause the cursor to
    reappear.  Added another OFF statement to combat it.  It's not ideal
    (only takes place when you press the right key) but it will have to do.
   The title boxes look 'better' now.  Yawn.
   Shortened the title-drawing a bit.
   Two new entries in the 'to do' list.
   Removed yet more blank lines, this time in the !Run file.  I have *no*
    idea where they are coming from!

=== Version 3.12 == 3rd January 2006 ==

   The following should come as *no* surprise - moved the title boxes down
    a bit.
   Moved the *rest* of the grid-drawing code inside the REPEAT loop!
   Solid colouring will no longer pick white.
   Completely revamped all three Pursuit procedures.  There are no longer
    four seperate loops for each side - instead there is one (two for All
    Possible Lines) local loop, a new CASE...OF structure and the side-
    counter has been moved back into the main body of the program.
   Finally gave the Normal In Pursuit variables new names, instead of
    keeping them the same as the Graduated Diagonals ones.
   Ineffectual change to the Graduated Diagonals loop to make it slightly
    clearer.
   New entry in the notes.
   Removed two 'to do' entries - the same ones that came in last version.

=== Version 3.13 == 6th April 2006 ==

   A whole three months without a release...Never mind, I'm alive again now.
   Swooped through the whole program, replacing ambiguous, ugly 2/3-letter
    capital variable names with whole lower-case words.  As well as being
    clearer, this has the additional advantage of eliminating the risk that
    a variable name clashes with a keyword (I've had that problem at least
    once).
   Nearly all small FOR loop variables (such as the 'three absolutely
    pointless statements') have just been designated 'n%'.
   Moved the DATA statements to the beginning of the program.  This is a
    workaround for an extremely annoying misfeature in BASIC concerning
    RESTORE commands.
   If you pick monochrome colouring, you no longer have to go through the
    'colour configuration' menu.  It wasn't as if it did anything anyway.
   Updated main help file accordingly.
   New entry in 'to do' list.
   The blanker now uses SPC.
   Replaced the first CASE...OF loop in PROCpursuit with an ON condition.

=== Version 3.13a == 9th April 2006 ==

   Hard-wrapped both help files to a fixed width of 77 columns.
   Added folding.  The garbage at the beginning of the help files is
    interpreted by StrongED as 'set wrapwidth to 77 columns, fold everything
    beginning with three equals signs'.
   Added 'Credits' and 'Contact' sections to the main help file.
   Added 'End' tags to the bottom of both help files.
   Some spelling corrections.
   Got rid of PROCreset, and moved its contents back into the main program.
   The error handler no longer calls PROCreset.  The reason it did (make
    sure the programs didn't receive half-finished settings when you ran
    them manually) has been obsolete since total integration in v3.00.
   And what better way to round things off in a boring and predictable
    fashion than to clean up the title box coordinates?

=== Version 3.20 == 23rd August 2007 ==

   Major code cleanup.  And I mean major.  What version 2.11 started, this
    one finishes.
   Redid most of the comments.
   Fully indented and spaced out the code, to increase readability.
   Shortened the names of a couple of variables, because in some cases they
    were filling up half the line.
   Combined PROCpursuit, PROCmain and the introduction into one.
   Simplified the internal workings of the title boxes a bit.
   Changed much of the code structure to tackle the frequent occurrence of
    the unthinkable practice of having more than one end to loops and
    procedures.
   Status is now a slightly rounder 25 columns across, instead of 26.
   Shoved around some parts of the former to increase efficiency.
   Rearranged most of the beginning and end of the main program to tackle
    problems including multiple mode changes, surplus OFF statements and a
    conditional END inside the loop.
   Moved anti-arrow OFF within the GET.  Still not very effective, though.
   Changed 'Press SPACE' message to avoid plotting over the bottom line of
    the text above it.
   Now defines a text viewport across the right-hand side of the screen.
    This means that the 'Press SPACE or click mouse to continue' message no
    longer gets printed over the graph.
   This also means that the return message can be printed in the ordinary
    way without any of that silly fuss over line counters and DATA.
   Ineffectual change to the structure of setting line delays.
   Replaced silly use of TINT 256 with TINT 0.
   Substituted a clever little bit of maths for a messy workaround in the
    side-counter.
   Replaced FORs in pursuit procedures with REPEATs - longer, but cleaner to
    abort in the event of a Delete-press.
   Replaced really dirty programming in the Repeated Solid colouring which
    involved a REPEAT loop without an end.
   Revamped screenshot code again.  This time it follows the loops through
    sensibly without ending prematurely.
   Actually added dates (where possible) in the history file!
   Altered introduction to reflect this.
   Moved End tag to bottom of help files.

___________________________________________________________________________
Martin Bazley
23rd August 2007

=== End