A SPANISH PARSER
43 verbs across 184 vocabulary words and 130 nouns. You type in Castilian; there are no menus and no icons between you and the story.
A Spanish-language text adventure for the Commodore 64 and for the C128 in native mode. Thirty-two rooms painted in PETSCII walk the entire Cantar de Mio Cid, from exile in Vivar to the taking of Valencia. You type what you want to do. The machine understands you with 43 verbs.
Rodrigo Díaz de Vivar, exiled. Thirty-two rooms, thirty objects, seventy-six rules and a Spanish parser that understands COGE ESPADA, MONTA BABIECA, RETA INFANTES and DOMA LEON. Seven optional deeds of honour decide which of the three endings you get. And seven ways to die on the way there.
El CID is not a remake and not emulation with nostalgia bolted on. It is a new text adventure, in Spanish, for the Commodore 64 — and for the C128 in native mode, with a bitmap cover and bitmap ending cards. Thirty-two rooms cover the whole Cantar de Mio Cid: the exile, Burgos and the nine-year-old girl, the chests of sand, Alcocer, the oath, the outrage at Corpes and the court at Toledo.
You play it by typing. A Castilian parser with 43 verbs and 184 vocabulary words understands what you ask; seventy-six rules decide what happens next. No health bars, no reflexes: an eight-hundred-year-old story and an honour counter that rises when you do what Rodrigo would have done. Seven optional deeds, three endings, seven ways to die.
The unusual part is underneath. The entire world specification lives in a single 281-line Python file, from which both BASIC builds are generated; a reference model proves the game is winnable, an independent reimplementation of the interpreter is compared against it and reports zero divergences, a linter guarantees the C64 build uses no keyword the C64 does not have, and a script drives VICE for real, types 107 keystrokes and confirms the legendary ending arrives.
Zero divergences between the model and the game. On a machine from 1982.
43 verbs across 184 vocabulary words and 130 nouns. You type in Castilian; there are no menus and no icons between you and the story.
32 rooms, Vivar to Valencia: the oath at Santa Gadea, the chests of sand, Corpes, the lion in the alcázar. 62 examinable scenery items on top of the 30 you can carry.
Seven optional deeds, an on-screen "honra n/7" counter and three endings — Victory, Legend, Defeat. The legendary one demands six of the seven.
A Python reference model walks the entire critical path and finishes on the legendary ending. Not a promise: a test that runs.
A strict BASIC v2.0 build for the C64 — checked by a linter that rejects any C128-only keyword — and a native C128 build with a bitmap cover and multicolour ending cards.
GRABA and RECUPERA really write to the 1541 (device 8), error channel and all. Your exile survives the power switch.
One source of truth in Python, two BASIC engines generated from it, and four separate verifiers that refuse to let a broken build through. This is what is inside the floppy.
The 32 rooms, 30 objects, 43 verbs and 76 rules live in a single Python file. Both BASIC builds — C64 and C128 — are generated from it with one command. Changing a rule is changing one line, not editing two interpreters.
A Python reference model walks the critical path. An independent reimplementation of the BASIC interpreter walks the same path. A comparator runs them against each other: zero behavioural mismatches. If the BASIC and the model ever drift apart, the test says so.
Measured in real C128 jiffies, not estimated: a turn went from 889 jiffies (~15 s) to 119 (~2 s). Text caching, variable-table ordering, per-room rule indexing and FAST/SLOW where it counts. On the C64 disk build, from ~400 jiffies plus two seconds of loading to 134 with no disk access at all.
The engine is BASIC and we do not hide it. The only assembly is the pair of scene blitters — around 100 bytes each, poked in from DATA at boot — which dump a whole room: 400 screen codes and 200 colour bytes, 600 bytes per room, 19.2 KB for all thirty-two.
The tokenised program: 569 lines of BASIC v2.0 holding the parser, the 76 rules, the honour HUD, the sound and the save code, plus the 32 packed scenes at 600 bytes a room. No banking and no cartridge: this is ordinary BASIC RAM. On native C128 it starts at $1C01.
Vivar to Valencia with nothing cut from the poem: 32 hand-authored PETSCII scenes, 600 bytes each, on a stock C64 with no expansion.
Release 1.0 in the repository CHANGELOG: playable end to end, two builds, a press kit and a free .d64 download. The studio's own roadmap calls it "complete and playable today".
A script drives the VICE emulator through its remote monitor, injects the 107 keystrokes of the critical path, reads screen and colour RAM byte by byte and confirms the legendary ending with no OUT OF MEMORY.
A turn drops from 889 jiffies to 119 on the C128, measured with the machine's own clock. Text caching, variable-table reordering and per-room rule indexing.
A second build in native C128 mode: a Koala multicolour cover loaded with BLOAD and three bitmap ending cards with their own embedded letterform font, independent of the character ROM.
Yes, on a stock C64/C64C with no expansions, and on a C128 in native mode. The C64 build is strict BASIC v2.0 and there is a linter in the repository that fails the build if a single C128-only keyword slips in. Load it with LOAD"ELCID",8 and RUN, from a floppy or from any flashcart that mounts .d64 images.
Devlogs, patches and internal leaks. Zero spam, zero analytics. Just what matters, when it matters.