The History of the Canal Route Planner
- Version 1 - Microsoft Basic, RML 380Z, 16k 2MHz Z80, 5.25" floppy disks
-
The very first version of the canal route planner was written in 1981 by
Steve Atty for his 'O' Level Computer Studies project. Every place on the
route had to be entered (the data consisted of around 100 places - mainly
junctions - and only the main routes through Birmingham were possible) and a
total distance and locks figure was produced.
- Version 2 - Sinclair Basic, ZX81, 16k 3.5MHz Z80A, audio tape storage
- For the next version, in around 1982, I ported this to a Sinclair ZX81 with
16k rampack. This had a much easier to use entry routine: there was a helpful
way to get the starting place (on typing a leter
it listed all places starting with that letter, then a second letter reduced
the list further etc), and then a list of where you could go from there was
produced, and a place could be selected by a single key. For speed this used a
machine code search routine
embedded in a REM statement (you did things like that then!). This also
estimated the total time for the journey using a 3 miles-per-hour, 10
mins-per-lock rule.
- Version 3 - Sinclair Basic, Spectrum, 48k, 3.5MHz Z80A, audio tape, later dual 100k single sided single density 5.25" floppy disks
- I then developed a version for the Sinclair Spectrum. The big enhancement
here was maps: each place had a pair of coordinates and wire maps could be
plotted showing the route in solid on a dotted diagram of the whole system.
- Version 4 - Sinclair Superbasic, QL, 128k (later expanded to 784k, dual 1.4Mb 3.5" floppies).
- In the mid 1980s I wrote the most sophisticated version yet for the Sinclair
QL. This had a nice front end with separate windows for menus, results etc.
It added the table of overnight stops for the first time as well as a short-
cut to data entry where as well as listing the nearest places from the current
place, it also listed the next junction in each direction (if that was
different). An attempt to make a route generator was built in, but this was
far too slow to be practical.
- Version 5 - Memotech MTX80
- At around the same time, Steve wrote a version for the Memotech MTX80.
This was specifically created to help judge awards at the 1988 IWA National
Rally in Castlefields, Manchester.
- Version 6 - GFA Basic Atari ST
- This version of Steve's had a very nice input routine where it displayed a map of the system and by clicking on it you could drill down to an individual place.
- Version 7 - Generic C based program.
- When the time came in the mid 90s to move on from the QL, I was starting to
get a bit fed
up with continually rewriting the program. I therefore started to develop the
next version in C (first on the QL, then on an Atari ST) and to separate the
processing engine from the dislay and entry routines. Faster processing
also made it possible to store the data in a more human-readable form for the
first time (in the past there were lists of places, and then lists of routes between places, using numeric codes for the places).
Originally, the idea was to have a set of generic processing routines and a set
of OS specific I/O routines. Then I realised that using a web based front end
would not only solve all my porting problems for years to come, but would also
allow the program to be put on a web site and made available to the world. I'd often thought about releasing a PD version of an earlier program, but had never finished them enough. This would allow the work in progress to be shown and comments for improvements received. Early in 1999 I aquired a secondhand PC and a month or so later installed Linux. Lots more programming led to what you see today.
- Version 8 - Re-write of the above
- This version takes the engines from the above code, and uses them to create a general-purpose scripting language for writing web applications. It is written in almost entirely ISO C (with a few, documented, extensions). I intend to put up a lot more information about both the C code at some stage to encourage others to extend the application.