From: 15A (Steven Flintham)
Subject: Software Archaeology
I really enjoyed this; I only hope I
can bear the advice in mind when I
find myself lumbered with a bit of
maintenance work, sorry, excavation.
ReplyTo: E3Y (3 Spaceman)
From: K8G (Jonathan Harston)
Subject: Missing IDs
A good idea, but WARNING - it crashes
and/or doesn't work on MANY computers!
I've looked though the program and
fixed those bits that cause problems,
EDITOR......... The fixed version is on
8BS 60 and 8BS 62, sorry, no room on
this issue.
A summary of the changes are as
follows:
*LOAD !Boot 2000
This overwrites variables, and on some
machines, the program as well. On my
BBC with PAGE at &1900, TOP is at
&1E9D, dangerously close. You're
only changing three bytes, much easier
to do by OPENing.
... read length from screen ...
This in effect does a *INFO and then
reads from the screen the characters
that display the length. What if the
lengths aren't there? This works with
DFS, but as an example, with ADFS, I
ended up resaving a file of &FFFF
bytes long and it crashed when it got
to the I/O area. Use the provided
calls, even if it's just EXT#chn%.
*SAVE !Boot .... FF802B FF0E00
??? Why not FFFF802B etc? Just
because DFS only stores 18 bits of the
address doesn't mean that you should
only provide 18 bits. Provide the
full address and let the filing system
deal with it.
All in all this program could have
been a very good example of something
tailored to only work on DFS and crash
on anything else. ( Very Microsoft! )
If you want to do something that you
know only works on DFS, or anything
else, you should check that it is
there. You should only restrict
features for known facilities, not
restrict features for unknown
facilities. For example:
IF adfs THEN *DIR subdirectory
***BAD***
IF NOT dfs THEN *DIR subdirectory
***GOOD***
The first bit of code would only let
you use a subdirectory if ADFS is
selected. But what about NFS, HADFS,
VFS, HostFS, CDFS, CoProFS....? In
fact, any filing system other than
DFS? You should never hard-wire into a
program 'because MY machine doesn't
let me do XXXXX, I'll stop everyone
doing it'.