Shark’s Treasure is a text adventure game set in the shark-infested waters of the Indian Ocean, where the player must explore a sunken pirate ship called the Xandau to recover the Punjab Diamond. The parser uses a machine code word-lookup routine embedded in the REM statement at line 1, which is called via USR 16530; it searches a dictionary encoded in REM line 2 to convert typed words into two-character numeric codes stored in a string array. Room descriptions and action messages are dispatched through computed GOSUB calls (e.g., GOSUB 8000+ROOM*10 and GOSUB 7000+N*10), giving a compact and extensible architecture. The game state is tracked using numeric arrays for object locations O(), status flags S(), and countdown timers C(), while a separate condition/action table drives the parser’s response logic. A SAVE routine at line 9600 allows the player to preserve progress to tape.
Program Analysis
Program Structure
The program is organized into well-defined functional blocks separated by line number ranges:
| Line Range | Purpose |
|---|---|
| 1–2 | REM statements: machine code routine (line 1) and word dictionary (line 2) |
| 10–23 | Title screen, instructions, and key-press wait loops |
| 25–95 | Game initialization, saved-game branch, array dimensioning |
| 100–160 | Main game loop: visibility checks, room description dispatch |
| 200–500 | Room description and object listing |
| 1000–1900 | Command input, word parsing, movement resolution |
| 2000–2975 | Condition/action engine — condition checking |
| 3000–3240 | Action execution dispatcher |
| 4000–5600 | Action subroutines (inventory, pick up, drop, flags, movement, quit, etc.) |
| 6000–6640 | Word extraction and machine code lookup routines |
| 7000–7999 | Action message library (indexed by computed GOSUB) |
| 8000–8999 | Room description library (indexed by computed GOSUB) |
| 9000–9999 | Array dimensioning stubs, SAVE/LOAD routines, restart |
Machine Code Word Parser
The most technically significant feature is the machine code routine embedded inside the REM at line 1. It is invoked at line 6122 with LET Q=USR 16530. Before the call, four bytes of the typed word are POKEd into memory locations 16520–16523, and the result (a two-character code) is returned in memory locations 16526–16527, which are then read back with PEEK and assembled into P$(W).
The dictionary itself is stored as a plain-text REM at line 2. Each entry is a two-digit numeric code followed by up to four characters of the word stem (e.g., 08GET, 09DROP, 14SCRA). Only the first four characters of a word need to match, so SCRAPE, SCRATCH, and BRUSH all resolve to code 14. This approach keeps the dictionary human-readable while the machine code handles the search efficiently.
After lookup, line 6133 checks whether the returned code is in the range 28–37 (the character codes for digits ‘0’–’9′); if not, P$(W) is set to "00" (unrecognized word) at line 6136.
Two-Word Parser Architecture
The parser at lines 6000–6640 extracts up to two words from the input string Y$. Words are accumulated character by character into a four-character buffer W$(4), then looked up via machine code. Results are stored in P$(1) (verb code) and P$(2) (noun code). The helper subroutines at 6500 and 6600 advance the input cursor Y, skipping spaces between words and detecting end-of-input via the boolean END.
Computed GOSUB Dispatch
Room descriptions and action messages are both dispatched using computed GOSUB arithmetic:
GOSUB 8000+ROOM*10— jumps to the description subroutine for the current room (e.g., room 3 → line 8030)GOSUB 7000+N*10— jumps to action message N (e.g., message 10 → line 7100)
Each subroutine occupies exactly ten lines and ends with RETURN, making the numbering scheme strict but elegant. This avoids large IF/THEN chains and keeps each room or message self-contained.
Condition/Action Engine
The game logic is driven by a table-based condition/action interpreter spanning lines 2000–3240. Conditions and actions are encoded as compact strings in the arrays C$() and A$(). Each entry consists of a verb/noun pair followed by a sequence of condition codes and action codes, all packed as short substrings.
Condition types (lines 2900–2975) are selected by TYPE = CODE(E$(E)) - 38, dispatching to a GOSUB at 2900 + TYPE*10:
- Type 0 (code 38 = ‘&’):
OK = (N = ROOM)— player in specific room - Type 1: object N present in room or carried
- Type 2: object N absent
- Type 3: object N is carried (
O(N) < 0) - Type 4: status flag S(N) is set
- Type 5: status flag S(N) is clear
- Type 6: counter C(N) equals 1
- Type 7: random probability (N% chance)
Action types (lines 4000–5600) are dispatched similarly at 4000 + TYPE*100, covering inventory display, pick up, drop, print message, set/clear flags, set counter, swap objects, place object, destroy object, move to room, print OKAY, re-enter input loop, re-enter main loop, and quit/save.
State Variables
| Variable | Purpose |
|---|---|
ROOM | Current room number (1–16) |
O(X) | Location of object X: positive = room number, negative = carried, 0 = destroyed |
S(N) | Boolean status flags (e.g., lamp on, door open) |
C(N) | Countdown timers (e.g., shark attack delay) |
P$(W) | Parsed word codes: P$(1) = verb, P$(2) = noun |
T | Flag: 1 = scanning global conditions, 0 = scanning action table |
MATCH | Flag: 1 = a matching condition/action entry was found |
Carry Limit
Lines 4100–4130 enforce a carry limit of five objects: S(1) tracks the current carry count and is tested against 5. Attempting to pick up a sixth item prints “YOU CANT CARRY ANY MORE” and sets BREAK=100 to abort the action chain.
Save/Restore System
The SAVE routine at lines 9600–9670 prompts the player for an adventure name, pauses for tape preparation, then executes SAVE N$, which saves the entire program including the current variable state. On reload, the saved-game branch at line 33 checks for a “Y” response and jumps to line 90, skipping array initialization so all saved state is preserved.
Visibility and Timer Mechanics
Lines 100–150 implement a visibility/light system using S(2) (light active), S(3) (sufficient visibility), C(2), and C(3) as countdowns. If the light is on but visibility is low, a warning message is printed and C(3) is decremented each turn, creating time pressure for the player to use the lamp.
Notable Anomalies
- Line 50 uses
DIM O(O)— the variableO(number of objects) is not initialized in the visible listing; it must be supplied by data loaded from tape or set by the condition/action table engine. The same applies toR,C, andAused in the DIM statements at lines 9330–9530. - Line 200 is referenced by
GOTO 200at lines 100 and 120, but the actual room description code begins at line 210. Line 200 is absent from the listing, so execution falls through naturally to line 210 — an intentional use of non-existent line targeting. - The
P$(2,2)declaration at line 40 creates a 2×2 string array, used asP$(1)andP$(2)for verb and noun codes respectively. - Line 7040 spells “EMINENT” where “IMMINENT” was likely intended — a minor spelling error in the game text.
- Line 7150 spells “THEMSLVES” instead of “THEMSELVES” — another typo in an action message.
Content
Source Code
1 REM 924026262626263131 0262680802626ED438240 0 0 0 021F840 13232 0 0 0 0 03D3C 6 1153EEFBECAEA403D3A88402310FDEDA1 6 5C2A940 53A8940EDA1C2A940 53A8A40EDA1C2A940 53A8B40EDA1C2A940 6 62B10FD7E328E40237E328F404B8240C9262626262626
2 REM 02E 02EAST04W 04WEST05U 05UP 06D 06DOWN07THRU07THRO43DESC08TAKE08GET 09PUT 09DROP11LEAV11EXIT12HIT 12BEAT23TURN14SCRA14BRUS14CLEA15LOOK16BARN17CLOS18LIFT19OPEN20HATC21KNIF22LAMP23LIGH24SPEA24GUN 26DIVE27SHAR28REPE29USE 29WITH30LOCK31KEY 32PIT 33INVE34REST35CHAI36SPIT37DAGG38DIAM39SHOO40CHES41QUIT42CROW43DESC44CUT 45EELS45EEL 46READ47SIGN LOAD 11111111111111111111
3 SLOW
10 PRINT ,,,," WELCOME TO SHARKS TREASURE",,," (C) TY-SOFT 1982",,,"THE SHARK INFESTED WATERS OF","THE INDIAN OCEAN HAVE CLAIMED","SUNKEN RICHES BEYOND BELIEF.","THE WRECK OF THE PIRATE SHIP","XANDAU LIES BELOW FILLED WITH","FABULOUS PLUNDER TAKEN FROM AN","INDIAN PRINCESS OVER A 100 ","YEARS BEFORE. MANY HAVE TRIED","TO EXPLORE THE WRECK,NONE HAVE","RETURNED. ","CAN YOU FIND THE TREASURE","AND ESCAPE UNSCATHED FROM THE","%J%A%W%S OF %D%E%A%T%H? ",,,"DEPRESS ANY KEY TO CONTINUE"
12 LET U$=INKEY$
14 IF U$="" THEN GOTO 12
16 CLS
18 PRINT ,,,,"PLEASE INSTRUCT THE COMPUTER","WITH SHORT SENTENCES.","SOME USEFUL WORDS ARE: GET","TAKE,THROUGH,DROP,SCRAPE,USE,","OPEN,WITH AND LOTS MORE. ",,," IF YOU GET INTO %T%R%O%U%B%L%E TRY:",,,"DESCRIPTION - WILL GIVE YOUR","LOCATION ",,,"INVENTORY - WILL TELL YOU","WHAT OBJECTS YOU ARE CARRYING",,,"QUIT - WILL END THE GAME,","GIVING YOU THE OPTION TO","RESTART OR TO SAVE THE GAME"," ---GOOD LUCK--- ",,," DEPRESS ANY KEY TO START."
20 LET U$=INKEY$
22 IF U$="" THEN GOTO 20
23 CLS
25 PRINT ,,,," IS THIS A PREVIOUSLY SAVED","GAME?(Y/N) ";
27 INPUT L$
29 PRINT L$
30 CLS
31 FAST
33 IF CHR$ CODE L$="Y" THEN GOTO 90
36 CLS
37 LET ROOM=1
38 DIM S(10)
39 DIM C(5)
40 DIM P$(2,2)
50 DIM O(O)
60 FOR X=1 TO O
70 LET O(X)=Q(X)
80 NEXT X
90 CLS
95 FAST
100 IF NOT S(2) THEN GOTO 200
110 IF C(2) THEN LET C(2)=C(2)-1
120 IF S(3) THEN GOTO 200
130 PRINT "--VISIBILTY IS LIMITED--","--LIGHT MAY BECOME USEFUL--"
140 IF C(3) THEN LET C(3)=C(3)-1
150 GOTO 1000
160 REM DESCRIBE ROOM
210 PRINT
220 GOSUB 8000+ROOM*10
300 LET F=0
310 FOR X=1 TO O
320 IF O(X)<>ROOM THEN GOTO 500
330 IF F THEN GOTO 400
340 PRINT ,,"THERE IS ALSO:"
350 LET F=1
400 PRINT " ";O$(X)
500 NEXT X
1000 REM ACCEPT COMMAND
1010 LET T=1
1020 GOTO 2000
1100 IF C(1) THEN LET C(1)=C(1)-1
1110 IF C(4) THEN LET C(4)=C(4)-1
1120 PRINT ,,"%*"
1130 INPUT Y$
1140 CLS
1150 LET Y=0
1160 PRINT ,,"%*"
1170 LET P$(2)="00"
1200 FOR W=1 TO 2
1210 GOSUB 6000
1220 IF Y>=LEN Y$ THEN GOTO 1300
1230 IF P$(W)="00" THEN GOTO 1210
1240 NEXT W
1300 IF P$(1)<>"00" THEN GOTO 1600
1310 PRINT " EXCUSE ME ?"
1320 GOTO 100
1600 REM CHECK FOR MOVEMENT
1610 LET Z=1
1620 LET T$=M$(ROOM)(Z TO Z+1)
1630 IF T$="00" THEN GOTO 1900
1640 IF T$<>P$(1) THEN GOTO 1700
1650 LET ROOM=VAL (M$(ROOM)(Z+2 TO Z+3))
1660 GOTO 100
1700 LET Z=Z+4
1710 GOTO 1620
1900 LET T=0
1910 LET MATCH=0
2000 REM CHECK FOR CONDITIONALS
2010 LET CP=0
2100 LET CP=CP+1
2110 IF NOT T THEN GOTO 2300
2120 LET E$=C$(CP)
2130 GOTO 2600
2300 IF CP<=A THEN GOTO 2400
2310 IF MATCH THEN GOTO 1000
2320 PRINT "YOU CANT";
2330 IF VAL (P$(1))<7 THEN PRINT " GO THAT WAY";
2340 PRINT "."
2350 GOTO 100
2400 IF A$(CP)(1 TO 2)<>P$(1) THEN GOTO 2100
2410 LET Y$=A$(CP)(3 TO 4)
2420 IF Y$<>"00" AND Y$<>P$(2) THEN GOTO 2100
2430 LET E$=A$(CP)(5 TO )
2600 REM CONDITIONS
2610 LET E=1
2700 IF E$(E)="." THEN GOTO 3000
2710 LET TYPE=CODE (E$(E))-38
2720 LET N=VAL (E$(E+1 TO E+2))
2800 GOSUB 2900+TYPE*10
2810 IF NOT OK THEN GOTO 2100
2820 LET E=E+3
2830 GOTO 2700
2900 LET OK=(N=ROOM)
2905 RETURN
2910 LET OK=(O(N)=ROOM OR O(N)<0)
2915 RETURN
2920 LET OK=(O(N)<>ROOM AND O(N)>=0)
2925 RETURN
2930 LET OK=(O(N)<0)
2935 RETURN
2940 LET OK=S(N)
2945 RETURN
2950 LET OK=(NOT S(N))
2955 RETURN
2960 LET OK=(C(N)=1)
2965 RETURN
2970 LET OK=((INT (RND*100)+1)<=N)
2975 RETURN
3000 REM ACTIONS
3010 LET MATCH=1
3020 LET E=E+1
3100 IF E$(E)="." THEN GOTO 2100
3110 LET TYPE=CODE (E$(E))-38
3120 IF E$(E+1)<>"." THEN LET N=VAL (E$(E+1 TO E+2))
3200 LET BREAK=0
3210 GOSUB 4000+TYPE*100
3220 IF BREAK THEN GOTO BREAK
3230 LET E=E+3
3240 GOTO 3100
4000 PRINT
4010 PRINT "YOU ARE CARRYING:"
4020 LET F=1
4030 FOR X=1 TO O
4040 IF O(X)>=0 THEN GOTO 4070
4045 PRINT " ";O$(X)
4050 LET F=0
4070 NEXT X
4080 IF F THEN PRINT " NOTHING"
4090 LET BREAK=100
4095 RETURN
4100 IF S(1)<5 THEN GOTO 4140
4110 PRINT "YOU CANT CARRY ANY MORE"
4120 LET BREAK=100
4130 RETURN
4140 IF O(N)=-1 THEN GOTO 4180
4150 LET O(N)=-1
4160 LET S(1)=S(1)+1
4170 RETURN
4180 PRINT "YOU HAVE IT ALREADY"
4190 GOTO 4120
4200 IF O(N)=-1 THEN GOTO 4240
4210 PRINT "YOU DONT HAVE";O$(N)
4220 LET BREAK=100
4230 RETURN
4240 LET O(N)=ROOM
4250 LET S(1)=S(1)-1
4260 RETURN
4300 PRINT
4310 GOSUB 7000+N*10
4320 RETURN
4400 LET S(N)=1
4410 RETURN
4500 LET S(N)=0
4510 RETURN
4600 LET C(N)=VAL (E$(E+3 TO E+4))
4610 LET E=E+2
4620 RETURN
4700 LET X=O(N)
4710 LET O(N)=O(N+1)
4720 LET O(N+1)=X
4730 RETURN
4800 LET O(N)=ROOM
4810 RETURN
4900 IF O(N)<0 THEN LET S(1)=S(1)-1
4910 LET O(N)=0
4920 RETURN
5000 LET ROOM=N
5010 RETURN
5100 PRINT " OKAY"
5200 LET BREAK=1000
5210 RETURN
5300 LET BREAK=1100
5310 RETURN
5400 LET BREAK=100
5410 RETURN
5500 PRINT " ARE YOU SURE?(Y/N)";
5510 INPUT W$
5520 PRINT W$
5525 LET BREAK=1100
5530 IF CHR$ CODE W$<>"Y" THEN GOTO 5400
5540 GOTO 9600
5600 GOTO 9700
6000 REM REMOVE WORD
6010 DIM W$(4)
6015 LET P$(W)="00"
6020 GOSUB 6600
6025 IF END THEN RETURN
6030 FOR Q=1 TO 4
6040 LET W$(Q)=Y$(Y)
6050 GOSUB 6500
6060 IF END THEN GOTO 6100
6070 NEXT Q
6080 GOSUB 6500
6090 IF NOT END THEN GOTO 6080
6100 IF W$=" " THEN RETURN
6110 POKE 16526,128
6112 POKE 16527,128
6114 POKE 16520,CODE W$(1)
6116 POKE 16521,CODE W$(2)
6118 POKE 16522,CODE W$(3)
6120 POKE 16523,CODE W$(4)
6122 LET Q=USR 16530
6130 LET P$(W)(1 TO 1)=CHR$ PEEK 16526
6132 LET P$(W)(2 TO 2)=CHR$ PEEK 16527
6133 IF CODE P$(W)< 28 OR CODE P$(W)> 37 THEN GOTO 6136
6135 GOTO 6210
6136 LET P$(W)="00"
6138 GOTO 6210
6210 RETURN
6500 LET Y=Y+1
6510 LET END=(Y>LEN Y$)
6520 IF END THEN RETURN
6530 LET END=(Y$(Y)=" ")
6540 RETURN
6600 LET Y=Y+1
6610 LET END=(Y>LEN Y$)
6620 IF END THEN RETURN
6630 IF Y$(Y)=" " THEN GOTO 6600
6640 RETURN
7000 REM ACTION MESSAGES
7001 REM MESSAGE NO.1 CAUSES
7002 REM GOSUB TO LINE 7010
7010 PRINT "YOUR SPEARGUN IS JAMMED."," ----TIME FOR INGENUITY."
7015 RETURN
7020 PRINT "YOU SHOULD HAVE TURNED ON THE","LIGHT BECAUSE YOU HAVE JUST","SWAM INTO THE JAWS OF A","HAMMERHEAD SHARK. YOU ARE THE","SHARKS DINNER. BETTER LUCK","NEXT TIME."
7025 RETURN
7030 PRINT "LAMP IS ALREADY LIT."
7035 RETURN
7040 PRINT "AN APPROACHING TIGER SHARK HAS","YOU IN RANGE. ATTACK IS EMINENT"
7045 RETURN
7050 PRINT "IT IS A BRASS SPITOON FROM THE","WRECK."
7055 RETURN
7060 PRINT "YOUR FRIEND THE TIGER SHARK IS","BACK ONLY MORE ANGRY. PREPARE","TO DEFEND YOURSELF. YOUR VISIT","TO HIS DOMAIN HAS BEEN","TERMINATED. "
7065 RETURN
7070 PRINT "YOU CANNOT DO THAT YET."
7075 RETURN
7080 PRINT "WITH SOME FORCE YOU HAVE","MANAGED TO OPEN THE LOCKER. IT","CONTAINS A WELL PRESERVED KEY."
7085 RETURN
7090 PRINT "YOU HAVE DISTURBED A GREAT","WHITE SHARK. IT HAS BITTEN","YOUR LEG OFF AS AN APPETIZER","AND IS READY FOR THE MAIN","COURSE. BETTER LUCK NEXT TIME."
7095 RETURN
7100 PRINT " --GOOD SHOW-- "," DIRECT HIT YOU HAVE "," --%K%I%L%L%E%D THE %S%H%A%R%K-- "
7105 RETURN
7110 PRINT "WHERE THERE ARE PILOT FISH","THERE ARE SHARKS. BETTER","MOVE ON."
7115 RETURN
7120 PRINT "IF YOU WOULD LIKE TO BEGIN","AGAIN? ENTER RESTART."
7125 RETURN
7130 PRINT "A BLUE SHARK HAS BITTEN YOU","IN HALF. HUNGRY SHARKS GATHER","IN THE DISTANCE. YOU ARE DEAD.","BETTER LUCK NEXT TIME."
7135 RETURN
7140 PRINT "OOPS YOU CARELESSLY LEAN ON","SOME SHARP CORAL. YOUR AIR HOSE HAS BEEN PUNCTURED. YOU","ARE SUFFOCATING."
7145 RETURN
7150 PRINT "KILLER EELS HAVE ENCIRCLED YOU.","AS THEY WRAP THEMSLVES TIGHTLY","AROUND YOU, YOU REALIZE YOU","ARE ABOUT TO SUFFOCATE."
7155 RETURN
7160 CLS
7162 PRINT ,,,,"CONGRATULATIONS, YOU ARE THE","ONLY ADVENTURER TO ESCAPE FROM","THE GRIPS OF THESE DEADLY","SHARKS, WHO HAVE BEEN THE SOLE","GUARDIANS OF THE PUNJAB DIAMOND","FOR OVER 100 YEARS."
7165 RETURN
7170 PRINT "IN THE CHEST YOU BEHOLD THE","150 CT. PUNJAB DIAMOND STOLEN","FROM AN INDIAN MAHARAJA OVER","100 YEARS AGO."
7175 RETURN
7180 PRINT "YOU ENTERED THE WATER","PREMATURELY, YOU ARE ENGULFED","BY THE POISONOUS TENACLES","OF A MAN-EATING SQUID.",,,"--BETTER LUCK NEXT TIME--"
7185 RETURN
7190 PRINT " WITH WHAT ? "
7195 RETURN
7200 PRINT "YOU HAVE BEEN RIPPED TO SHREDS","NEXT STOP ""DAVEY JONES"" LOCKER",,,"--BETTER LUCK NEXT TIME--"
7205 RETURN
7210 PRINT "OKAY "
7999 RETURN
8000 REM ROOM DESCRIPTIONS
8001 REM ROOM 1 CAUSES A
8002 REM GOSUB TO LINE 8010
8010 PRINT "YOU ARE SUITED UP AND","ON THE DECK OF YOUR DIVING ","VESSEL PREPARING TO DIVE"
8015 RETURN
8020 PRINT "AS YOU APPROACH THE TOPSIDE OF","THE WRECK IT IS ALIVE WITH SEA","LIFE. YOU SENSE AN EERIE","FEELING OF DOOM. A TIGER SHARK","COMES INTO VIEW. ONLY TWO","HOLES IN THE WRECK ARE BIG","ENOUGH TO ENTER. THEY LIE","TO THE EAST AND THE WEST."
8025 RETURN
8030 PRINT "THIS IS THE CAPTIANS CABIN.","A CUTLASS STILL HANGS ON THE","WALL. THE ONLY REMNANT OF A","ONCE ELABORATE SETTING.","EXITS LEAD EAST,WEST AND DOWN."
8035 RETURN
8040 PRINT "HERE IS THE AFT HOLD. HUGE KEGS","COVERED WITH SEA MOSS PLAY","HOST TO GIANT MUSSELS. EXITS","ARE EAST,WEST AND DOWN."
8045 RETURN
8050 PRINT "YOU ARE FOLLOWING A LONG","CORRIDOR LEADING EAST AND WEST","SUDDENLY THE WATER IS DENSE","WITH A SCHOOL OF MACKEREL."
8055 RETURN
8060 PRINT "YOU HAVE COME THROUGH","A GAPPING HOLE IN THE STERN","THAT LEADS OUT OF THE SHIP","EXITS ARE EAST,WEST AND DOWN"
8065 RETURN
8070 PRINT "HERE IS A COLD MURKY CAVE.","YOU NOTICE AN OCTOPUS LURKING","UNDER THE ROCK. SOMETHING","SHIMMERS ON THE FAR SIDE."," EXIT IS EAST."
8075 RETURN
8080 PRINT "YOU HAVE ENTERED A LARGE","CAVERN FILLED WITH LIGHT. YOU","NOTICE LOTS OF FISH","ESPECIALLY PILOT FISH. EXITS","ARE EAST AND UP. "
8085 RETURN
8090 PRINT "YOU HAVE FOUND THE RUM STORAGE","HOLD. TOO BAD THE JUGS ARE","ALL BROKEN. ","---- EVEN I COULD "," USE A DRINK ---- ","EXITS ARE EAST,WEST AND DOWN"
8095 RETURN
8100 PRINT "YOU HAVE ENTERED THE CREWS","QUARTERS. PASSAGE IS ","BLOCKED BY A FALLEN MAST","THE ONLY EXITS OUT ","ARE WEST AND UP."
8105 RETURN
8110 PRINT "THIS IS A HIDDEN ROOM FILLED","WITH GIANT SPONGES. EXITS ARE","EAST AND UP. "
8115 RETURN
8120 PRINT "YOU HAVE COME UPON THE BRIG.","THE WALLS ARE LINED WITH","SKELETONS, SKULLS FLOAT AROUND","YOU. EXITS ARE EAST AND WEST."
8125 RETURN
8130 PRINT "THIS IS THE SHIPS GALLEY","RUSTY KETTLES AND SMASHED","CROCKERY CAN BE SPOTTED AMONG","THE DEBRIS. EXITS ARE","OMNIDIRECTIONAL "
8135 RETURN
8140 PRINT "YOU HAVE ENTERED THE FORE HOLD","SEA ANEMONES AND URCHINS LINE","THE PORT SIDE. ","EXITS ARE WEST AND DOWN."
8145 RETURN
8150 PRINT "YOU HAVE FOUND THE ARMS HOLD.","KEGS OF AMMUNITION STILL LIE","AMONG RUSTY MUSKETS. EXITS ARE","WEST AND UP."
8155 RETURN
8160 PRINT "A LARGE HOLE IN THE SHIP LEADS","YOU OUT TO VIBRANT","MULTI-COLORED CORAL REEF THAT","DAZZLES YOUR SENSES.","EXIT IS UP"
8165 RETURN
9000 STOP
9040 DIM Q(O)
9050 DIM O$(O,16)
9330 DIM M$(R,32)
9430 DIM C$(C,21)
9530 DIM A$(A,31)
9600 CLS
9610 PRINT "ENTER ADVENTURE NAME"
9611 INPUT N$
9612 PAUSE 60
9613 PRINT ,,,,,"---%H%U%R%R%Y----"
9614 PAUSE 150
9630 PRINT ,,"START THE TAPE..."
9640 PAUSE 150
9645 POKE 16437,255
9650 CLS
9660 SAVE N$
9670 GOTO 2
9700 PRINT ,,"WOULD YOU LIKE TO START AGAIN?","--DEPRESS ANY KEY TO RESTART--"
9705 SLOW
9710 LET U$=INKEY$
9715 IF U$="" THEN GOTO 9710
9735 CLS
9740 GOTO 1
9999 STOP
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


