Bring the documents forward thirty years - #65
Open
gitosaurus wants to merge 1 commit into
Open
Conversation
The four documents that shipped with Archetype 1.01 never made the crossing to the C++ implementation. Here they are in Markdown, checked line by line against the interpreter that exists rather than the one they were written for. What changed is the facts, not the voices. HOW-TO still addresses a reader who has never met a programming language, because that reader was the design target; the manual still hands that same person a BNF grammar, because it was also a journeyman piece. The two documents disagree about their audience on purpose and the revision keeps them that way. Errors found by running every example rather than reading it: three places assign with "=" where ":=" was meant, which compiles to a comparison, evaluated and discarded, so the vase never shatters and the license never falls out of the wallet. The wallet is missing a brace and tests inequality with "<>", which was never Archetype syntax. The necklace sits in a room the tutorial never defines. The manual teaches the IsA<type> convention with the one example that does not follow it, prepositions arrive in main.prep rather than verb.prep, and integers were never in the range -2^32 to 2^32-1. New since the originals, filed where each belongs rather than in an appendix of novelties: lists and "@", "head", "tail", "<-", write_centered, display, keyword, class, ">>" as a statement that gathers paragraphs, 'BANNER', and a chapter on messages with arguments. Gone: 'ABBR', 'DEBUG MEMORY', 'FREE MEMORY', the 256-character string, the 24-line screen, and the rule that a save file could only be read by the binary that wrote it. BUGS.TXT keeps all eighteen entries, scored. Nine are resolved, two largely so, and the seven that remain are stated as what they are. The list is also a reminder of how the ground moved: it worries at length about memory and disk on a 10 MHz machine, and never once about running anywhere but DOS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P458PFzYW18hjwnzjmTAJj
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The four documents that shipped with Archetype 1.01 never made the crossing to
the C++ implementation. This is all of them, in Markdown, checked line by line
against the interpreter that exists rather than the one they were written for.
What changed is the facts, not the voices
How to Quickly Write an Adventure Game still addresses a reader who has never
met a programming language, because that reader was the design target. The
manual still hands that same person a BNF grammar, because it was also a
journeyman piece. The two documents disagree about their audience on purpose,
and the revision keeps them that way.
Gone:
CREATE.EXEandPERFORM.EXE,C:\>prompts,.ACH, advice aboutsaving from WordPerfect with Text Out, the 256-character string, the 24-line
screen, and the rule that a state file could only be read by the exact
.acxthat wrote it. Where a limit was lifted the text says so, rather than
pretending it was never there.
Errors found by running every example instead of reading it
=where:=was meant, in HOW-TO's vase andwallet and the manual's
forloop. That compiles to a comparison, evaluatedand discarded, so the vase never shatters and the license never falls out of
the wallet.
<>, which was neverArchetype syntax, and is missing a closing brace.
start_room, a room the tutorial neverdefines; it is
first_room.IsA<type-name>convention withany_object.IsAshouter— andshouteris the one type in its own examplethat never declares such an attribute.
main.prep, notverb.prep.2^31−1 and wrap.
whileexample compares with==, which does not exist.What was added
New material files where it belongs rather than in an appendix of novelties:
lists and
@,head,tailwith the string operators;<-with the othersend operators;
write_centered,display,keyword, andclasswith thestatements;
>>moved from the operator chapter to the statements chapter,where it now is one, with a note that consecutive lines gather into a
paragraph;
'BANNER'with the other system messages. Only messages witharguments gets a chapter of its own, under Advanced Topics, since it changes
how objects are designed rather than adding a spelling.
The tutorial gains
main.voice, which is the most visible knob in the modernlibrary and was entirely undocumented: one assignment turns the whole library
from "I'm in the bleak, bare cell" to "You're in the bleak, bare cell".
Four passages from Derek's book chapter on Archetype's origins are quoted where
they answer a question the documents cannot answer themselves — most usefully
in
known-issues.md, where "semantically forgiving and computationally cheap"reframes the thirty-year-old verb-in-noun-phrase bug as a constraint that was
priced before the parser was written.
BUGS.TXT
All eighteen entries are kept and scored: nine resolved, two largely resolved,
one moot, and seven that remain, each stated as what it is. The list is also a
measure of how the ground moved — it worries at length about memory and disk on
a 10 MHz machine, and never once about running anywhere but DOS.
Bugs found while checking the documents
Three, all filed rather than fixed here:
displayof a destroyed object dereferences null and crashesTesting
Every code example in every document was compiled and run against this
interpreter, including the full tutorial game end to end, the
message --> objectsuperglue pattern, the inheritance chain, the list-walking idiom, andthe
second_personvoice switch. Interpreter behaviour is unchanged by thisbranch: 18/18 suites and both golden checks pass, and no file outside
docs/is touched.
🤖 Generated with Claude Code
https://claude.ai/code/session_01P458PFzYW18hjwnzjmTAJj