of Peje Nilsson in restructuring some particularly grotty gotos is
gratefully acknowledged. Petr Voropaev contributed fuzz testing and
code cleanups. Aaron Traas did a lot of painstaking work to improve
-test coverage.
+test coverage, and factored out the last handful of gotos.
== Nomenclature ==
incorrect most places it appeared and has been replaced by "A crystal
bridge spans the fissure." (timeless present).
+* Under odd circumstances (dropping rug or vase outdoors) the game could
+ say "floor" when it should say "ground" (or "dirt", or something).
+
By default, advent issues "> " as a command prompt. This feature
became common in many variants after the original 350-point version,
but was never backported into Crowther & Woods's main line before now.
checksumming have been discarded - it's pointless to try
tamper-proofing saves when everyone has the source code.
-A -r command-line been added. When it is given (with a file path
-argument) it is functionally equivalent to a RESTORE command.
+A -r command-line option has been added. When it is given (with a file
+path argument) it is functionally equivalent to a RESTORE command.
== Translation ==
Jason Ninneman and I have moved it to what is almost, but not quite,
idiomatic modern C. We refactored the right way, checking correctness
against a comprehensive test suite that we built first and verified
-with coverage tools (we have over 95% coverage, with the remaining
-confined to exception cases that are very difficult to reach). This is
+with coverage tools (there is effectively 100% code coverage). This is
what you are running when you do "make check".
The move to modern C entailed some structural changes. The most
and the choice to refrain will make forward translation into future
languages easier.
-* There are a few gotos left that resist restructuring; all are in the
- principal command interpreter function implementing its state
- machine.
-
* Linked lists (for objects at a location) are implemented using an array
of link indices. This is a surviving FORTRANism that is quite unlike
normal practice in C or any more modern language. We have not tried
old code's per-object state-description messages, we now have a per-object
message series for state *changes*. This makes it possible to pull a fair
amount of text out of the arbitrary-messages list and associate those
-mesages with the objects that conceptually own them.
+messages with the objects that conceptually own them.
// end