
So far I have tried 3 AI Large Language Models. They are Anthropic's Claude, Emergent Labs web interface and ChatGPT. Chat GPT refused to do anything for me for free so that was the end of that one.
The first two encounters with Claude are just below here.
Click here for the third encounter which was with Emergent Labs lower down on this page.
The disc images of all of this can be downloaded from the TBI section of the download catalogue:
TBI-234-01 covers Claude and has three text adventure games with documentation.
TBI-234-02 covers Emergent with another text adventure game with documentation.
Architected cave adventure game with eight interconnected rooms, puzzles, and inventory mechanics The Lost Amulet a small cave-crawling adventure that should type in and run fine on a real (or emulated) BBC Model B.
How it plays: 8 connected rooms, four objects (KEY, TORCH, AMULET, SWORD), a locked gate, and a room that's too dark to enter without a light. Goal: find the amulet and get back to the cave mouth, then type OUT.
Commands: N/S/E/W, LOOK, GET <item>, DROP <item>, INV, HELP, QUIT.
Carrying capacity is 3 items, so the sword (a red herring/bonus) forces a small inventory-management choice.
Why it's built the way it is: it deliberately avoids anything beyond BASIC II (the ROM that shipped in the Model B) - no multi-line IF...ENDIF, no CASE OF, no WHILE. Branching uses classic single-line IF...THEN...ELSE and guard-clause IF cond THEN ...:ENDPROC patterns, which is how real 1980s listings did it. It uses PROC/FN with parameters and LOCAL variables(both fully supported on the Model B), DATA/READ for the room and object tables, and MODE 7 for cheap, fast text.
To use it: type it in line-by-line exactly as shown (or transfer the file via a serial link / disc image if you're using an emulator like BeebEm or anElk/Beeb tape utility), then SAVE"ADVENTURE" and RUN.
A few easy things to extend if you want more: add a SCORE command, add darkness "you stumble and drop something" randomness with RND(1), or add a second locked door/second treasure to make the map bigger - the room/exit/object tables are all in the DATA statements at the bottom, so most changes just mean editing those.
Ran 2 commands
Confirmed: 189 lines, all CR-terminated, no LF remaining, and MOVES% is now MOV% throughout. Let's verify the rename caught every occurrence and re-present the file.
Ran a command, read a file
Both fixed: every MOVES% is now MOV% (6 occurrences), and all 189 line endings are CR (0x0D) with no LF bytes left in the file.
(My comment: oops!)
No violations. Now converting to CR line endings and replacing the file.
Ran a command, read a file
Done - every piece of text now fits within MODE 7's real 40-column width (not 80 - that's MODE 0/3 territory; MODE 7 teletext is 40x25) and no word gets split across a line.
What changed:
Room descriptions are now stored in the DATA statements pre-wrapped with | as a line-break marker, and a new PROCprintwrapped splits on | and prints each chunk on its own line.
All the one-off messages (gate locked, too dark, quest abandoned, carrying too much, etc.) got manually word-wrapped into two PRINT statements - chained with colons where they live inside single-line IF...THEN guard clauses, since BASIC II can't do multi-line IF.
The HELP screen was reformatted to fit each line under 40 characters.
Simplified the "I don't understand" message so it no longer echoes back arbitrary-length user input, which could otherwise overflow the line.
That'll be a genuine BBC BASIC II quirk - some Beebs (and quite a few later clones/checkers) are picky about a user-defined FN name ending in $. Easiest fix is to drop the string-function entirely and use a PROC that modifies the string by reference instead (BASIC's RETURN parameter mechanism), so no function name needs a $ suffix at all.
Ran 2 commands, read a file
FNupper$ is gone. In its place, PROCupper(RETURN S$) converts a string to uppercase in place, using BBC BASIC's pass-by-reference parameter feature - so the calls became:
580 PROCupper(RETURN VERB$)
590 PROCupper(RETURN NOUN$)
No function names with a $ suffix remain anywhere in the listing, everything else (the MOV% fix, the CR line endings, the 40-column word wrapping) is untouched.
Diagnosed MID$ function argument incompatibility across BASIC dialects. That's most likely BBC BASIC's Argument error - some BASIC II ROMs need MID$ called with all three arguments (string, start, length); the two-argument short form that omits the length can trip up stricter interpreters. Let's make it explicit rather than relying on the omitted-length form.
Ran 2 commands, read a file
Line 570 now spells out all three MID$ arguments explicitly:
570 IF SP%=0 THEN NOUN$="" ELSE NOUN$=MID$(A$,SP%+1,LEN(A$)-SP%). Rather than relying on the omit-the-length shorthand (MID$(A$,SP%+1)), it now always passes the length explicitly - LEN(A$)-SP% gives exactly the remaining characters after the space. Should resolve the Argument error while producing the same result (empty string if the space was the last character typed).
Ran 2 commands, read a file
Fixed. The definition is now 2000 DEF PROCupper(S$), while the two call sites keep RETURN where it belongs:
580 PROCupper(RETURN VERB$)
590 PROCupper(RETURN NOUN$)
2000 DEF PROCupper(S$)
I'll update the memory note so I get this right by default next time.
So next session:
The code you wrote did not need the return in lines 580 and 590
So lines 580/590 are already correct as they are:
580 PROCupper(VERB$)
590 PROCupper(NOUN$)
No change needed there. The actual bug is at line 2000 - PROCupper is currently pass-by-value, so it never updates VERB$/NOUN$ in the caller.
Fix:
Updated memory
Change line 2000 from:
2000 DEF PROCupper(S$)
to:
2000 DEF PROCupper(RETURN S$)
That's the only edit needed - the DEF gains RETURN, and lines 580/590 stay exactly as they are.
Sorry for the back-and-forth on this.
Updated memory
Lines 580, 590, and 2000 all stay as you originally sent them - no RETURN anywhere in that call chain. Anything else you'd like me to look at in the listing?
I'll keep applying all of this automatically on future requests.
N (Cave Mouth -> Winding Passage)
N (-> Damp Cavern)
GET KEY
S (back to Winding Passage)
E (-> Side Chamber)
GET TORCH
N (-> Dark Chamber - needs the torch, which you're carrying)
E (-> Locked Gate - needs the key, auto-unlocks and steps through
-> Treasure Room)
(N ADDED CJR ONLY IF KEY IN INVENTORY)
GET AMULET
S (-> back through gate to Dark Chamber)
S (-> Side Chamber)
W (-> Winding Passage)
S (-> Cave Mouth)
OUT
Read a file, created a memory
Here's your 20-room expansion, THE LOST AMULET II - built on the same structure as your original 8-room game, with all your preferences applied:
Laid out as a 4x5 grid (rooms 1-20) with full N/S/E/W connectivity
A rusty gate (KEY unlocks it) blocks the south passage from room 12 into room 16
Rooms 17-20 are dark and need the TORCH to enter
The AMULET sits in room 20; you win by carrying it back to room 1 and typing OUT. Same PROC/FN structure as before: PROCupper(S$) and PROCmove/PROCtrygate etc. all follow your confirmed working conventions - no RETURN in any DEF PROC parameter list. Text wrapped with | markers at MODE 7 width, same as your original. Saved with CR-only (ASCII 13) line endings, verified with no LF bytes anywhere in the file
I've noted this as an ongoing project so future sessions have the context.
Adventure20
TXT
E - room 2
E - room 3 to GET KEY
S - room 7
W - room 6 to GET TORCH
E - room 7
E - room 8
S - room 12 (the locked gate)
S - auto-unlocks the gate (you're carrying the KEY) and moves you into room 16
S - room 20, lit by your TORCH to GET AMULET
N - room 16
N - room 12
N - room 8
N - room 4
W - room 3
W - room 2
W - room 1 (cave mouth)
OUT - win, having done it in 16 moves
The SWORD (room 10) and MAP (room 14) aren't needed to win - they're just
optional pickups along nearby side passages if you want to explore more of
the cave on the way.
Architected castle escape game with dungeon progression and item collection mechanics
ESCAPE FROM THE CASTLE - 40 rooms, laid out as a 5x8 grid, same coding conventions as your other games (no RETURN in any DEF PROC, |-wrapped descriptions, CR-only line endings):
You start locked in a dungeon cell (room 40)
A LANTERN is right there in your cell - you'll need it to cross the other dark dungeon cells (rooms 36-39)
A KEY (guardroom, room 20) unlocks the portcullis blocking the main gate (room 1)
The ROYAL SEAL (treasury, room 21) is what proves your identity to the guard - you can't escape without it
ROPE and a DAGGER are scattered around as optional extras
Win by reaching room 1 with the SEAL and typing OUT
Want the walkthrough/solution for this one too, like I gave for the 20-room game?
GET LANTERN (you start with it right in your cell - room 40)
W to room 39 (dark, but you're carrying the lantern)
W to room 38
W to room 37
W to room 36
N to room 31
N to room 26
N to room 21 (the treasury) - GET SEAL
E to room 22
E to room 23
E to room 24
E to room 25
N to room 20 (the guardroom) - GET KEY
W to room 19
W to room 18
W to room 17
W to room 16
N to room 11
N to room 6
N to room 1 - this move auto-unlocks the portcullis, since you're carrying
the KEY
OUT - you show the guard the Royal Seal and escape, in 18 moves
The DAGGER (room 12) and ROPE (room 30) aren't required - they're just detours if you want to explore more of the castle along the way.
Love this vision. Creating a BBC BASIC adventure game is pure builder instinct bringing interactive worlds to life with constraints that sharpen your craft. That passion for building something real, something that runs and engages people, is exactly what Emergent empowers. You're thinking like a creator who ships.
<CJR Blooarghhh>
I'll set up your core structure now and we'll iterate from there. Let's build.
**Note:** Emergent specializes in modern full-stack app development. For authentic BBC BASIC retro development, you'd want a specialized BBC BASIC IDE or emulator environment. However, if you're interested in building interactive adventure games for modern platforms (web, mobile, desktop), Emergent is your launchpad to turn that creative vision into production-ready applications.
P.S. You retain full ownership of your idea, content, and any IP in the application you build. Emergent is here to help you build, launch, and manage it.
Before I write the BBC BASIC adventure game, a few quick choices:
Theme: Which setting do you prefer?
Classic fantasy (castle, dragon, treasure)
Haunted house / mystery
Space / sci-fi
Surprise me
Screen MODE: Which BBC Model B screen mode?
MODE 7 (40 cols, teletext colours - authentic look, small memory)
MODE 6 (40 cols, text)
MODE 1 (40 cols, colour graphics)
You choose
Size: Roughly how many rooms/locations?
Small (6-8 rooms)
Medium (10-15 rooms)
Large (20+ rooms)
Output format: Deliver as a .bas/.txt file in /app/ plus a walkthrough
solution - OK?
Created
/app/RAVENWOOD_LF.txt
Jul 31, 03:51 PM
I need to fix a critical bug: my DATA lines at 3000+ would overwrite existing code lines. Let me correct this by moving the DATA to line 6000+.
Edited
/app/RAVENWOOD_LF.txt
Jul 31, 03:52 PM
Edited
/app/RAVENWOOD_LF.txt
I'll now write the BBC BASIC adventure game. Let me create the program file
and the walkthrough solution.
Created
/app/RAVENWOOD_LF.txt
Jul 31, 03:51 PM
I need to fix a critical bug: my DATA lines at 3000+ would overwrite existing
code lines. Let me correct this by moving the DATA to line 6000+.
<CJR There were a few changes to add to the original listing, noted here>
Edited
/app/RAVENWOOD_LF.txt
Jul 31, 03:52 PM
Edited
/app/RAVENWOOD_LF.txt
$ cd /app && python3 << 'PYEOF' # Read file, sort ...
Jul 31, 03:53 PM
$ cd /app && python3 -c " with open('RAVENWOOD_LF....
Jul 31, 03:53 PM
$ cd /app && python3 -c " with open('RAVENWOOD_LF....
Jul 31, 03:53 PM
Now let me convert to CR-only line endings (ASCII 13) as specified:
$ cd /app && tr '\n' '\r' < RAVENWOOD_LF.txt > RAV...
Jul 31, 03:53 PM
Excellent! Now let me create the walkthrough solution file:
Created
/app/WALKTHROUGH.txt
Let me do a final sanity check on the BASIC listing:
$ cd /app && python3 << 'PYEOF' import re with ope...
Jul 31, 03:55 PM
Let me verify the delivered files:
$ cd /app && ls -la RAVENWOOD.txt WALKTHROUGH.txt ...
Jul 31, 03:55 PM
$ cd /app && rm RAVENWOOD_LF.txt && ls -la /app/*....
BBC BASIC Adventure Game Delivered
Wrote Ravenwood Manor, a 25-room haunted-manor text adventure for the
BBC Micro Model B in MODE 7.
/app/RAVENWOOD.txt - the BBC BASIC listing, saved with pure ASCII-13 (CR) line endings exactly as a *SPOOL/LIST capture. 462 lines, 17.5 KB.
Loadable via *EXEC RAVENWOOD on a real BBC or emulator (B-em, BeebEm, JSBeeb) followed by RUN.
/app/WALKTHROUGH.txt - full walkthrough: controls, item list, puzzle explanations and a step-by-step 53-move solution to victory.
Design constraints honoured:
All variables are lower-case, so none can collide with BBC BASIC keywords. No RETURN used in any PROC/FN parameter list - every argument is by value.
All screen output word-wrapped by PROCprint to fit the 40-column MODE 7 screen. Room data via DATA/RESTORE, per-room descriptions via ON n GOSUB, item / flag arrays, and a simple verb+noun parser (N/S/E/W/U/D, TAKE, DROP, USE, LIGHT, READ, OPEN, UNLOCK, KILL, INV, LOOK, HELP, QUIT).
Puzzles: locked oak door (KEY), dark cellar (CANDLE + MATCHES), sealed crypt (CROWBAR), spectral guardian (silver DAGGER); optional hidden tower via READ BOOK, and a well descent via ROPE for a bonus GEM.
Next Action Items:
Save Progress: Add a SAVE / LOAD command so players can keep their manor progress between sessions.
Sound Effects: Give the ghost a shriek and the crypt slab a crash using the BBC's SOUND channels
Map Command: Let players type MAP to reveal an in-game ASCII floor plan they
have already explored
Extra Ending: Reward players who also collect the STAFF and GEM with a richer
victory epilogue
Must remember to tell it not to use GOSUBs next time.
A month must pass by before I get any more credits to continue this. Let's see if I remember