Velnor’s Lair

Products: Velnor's Lair
Developer(s): Derek Brewster
Date: 1983
Type: Program
Platform(s): TS 2068

Velnor’s Lair is a text adventure set in the Goblin Labyrinth beneath Mount Elk. You begin by choosing a class (warrior, wizard or priest), arrive at the cave entrance with a torch, a tinderbox and a club, and work your way through the tunnels by typing commands. Along the way you fight or cast spells against demons, trolls, Medusa and finally the wizard Velnor, with your hit points and spell strength tracked as you go. A game in progress can be saved to tape and reloaded.

The title screen reads “VELNOR’S LAIR / Written by DEREK BREWSTER / © 1983 QUICKSILVA”. The short BASIC loader is the “VLOADER” routine whose REM lines credit S. S. Dosanj of Bitterne Software (25 November 1983), the same loader used by Quicksilva’s Aquaplane. The copy here came from one of Bob Swoger’s Larken disks, which held two versions of the game; the later one, used here, corrects a line of room text.

Program Analysis

Structure

The tape holds three parts: the loader VELNOR.B1, a loading screen (velnor.C$) and the game itself (velnor.B2), a BASIC program of about 38K. The loader shows the screen with LOAD "velnor.C$"SCREEN$ and then loads and runs the game. Room descriptions are handled by a long run of subroutines from line 9000 up, many of them sharing exit messages through GO SUB Q: PRINT U$;....

Notable Techniques

  • Numeric constants are written as VAL "..." (for example GO SUB VAL "6E3") to save memory.
  • The game state is saved as two CODE blocks: SAVE "1"CODE VAL "61E2",VAL "44500" and a 180-byte block from 23552, reloaded with two LOAD ""CODE statements.
  • Directions out of a room are printed by shared subroutines, so many room lines are a single GO SUB and PRINT.

Potential Issues

  • The loader’s lines 9000–9020 are a leftover helper that scans and patches the program in memory; they are not reached when the tape runs normally.

This copy came from a Larken disk and was converted to load from tape: the disk prefixes in the loader were removed, along with the disk save lines and the LOGICALL menu call, and the corrected game file was given the name the loader expects. It was tested in ZEsarUX: the class selection, the opening room and movement into the dark passage all work.

Related Products

Lose yourself in the Goblin Labyrinth amongst demons, trolls, the undead, and the evil Wizard Velnor.

Image Gallery

Source Code

; VELNOR.B1
   10 REM program VLOADER
   20 REM created 25TH NOVEMBER 1983
   30 REM version 1.0
   40 REM author  S. S. DOSANJ (BITTERNE SOFTWARE)
   50 REM 
   53 CLEAR 65535: REM 
   55 BORDER 0: INK 0: PAPER 0: CLS : REM 
   57 PRINT #0;AT 0,12; INK 7; FLASH 1;"LOADING"; FLASH 0; INK 0: REM 
   60 LOAD "velnor.C$"SCREEN$ : REM 
  100 PRINT AT 19,0;: REM 
  130 LOAD "velnor.B2": REM 
  140 STOP 
 9000 FOR F=(PEEK 23635+256*PEEK 23636) TO 9999999 STEP 2: BORDER 0: BORDER 2: REM 
 9005 IF PEEK F=88 AND PEEK (F-1)=88 THEN POKE F-1,16: BEEP .1,1: REM 
 9010 IF (PEEK F=88 AND PEEK (F+1)=88) THEN POKE F,16: BEEP .1,0: REM 
 9015 IF PEEK F=96 AND PEEK (F+1)=96 THEN STOP : REM 
 9017 IF PEEK F=88 AND PEEK (F-1)=88 THEN POKE F-1,16: BEEP .1,1: REM 
 9020 NEXT F: REM 
 9992 REM  removed (LKDOS-only)
 9998 REM  removed (LKDOS-only)
 9999 REM ````````

; velnor.B2
    5 GO SUB VAL "6E3"
   10 LET Z=VAL "7030": LET Z1=Z
   20 GO SUB VAL "3E3"
   80 IF HP<=O THEN GO TO VAL "103"
   81 IF X=TT AND M(TT)=NM AND NM=O THEN GO TO VAL "6080"
   85 INK O: PRINT : GO SUB Z
   90 PRINT : GO SUB VAL "555"
   95 LET Z1=Z
  100 IF O(FT)>O THEN GO SUB VAL "4800"
  101 LET HP=HP-B
  103 IF K AND A+HP/IHP*SE<=K THEN LET K=K-A: BEEP A,K: BORDER K: IF K THEN GO TO VAL "103"
  105 IF K=O THEN GO TO VAL "6100"
  106 INK O: IF O(F)=A THEN GO SUB VAL "4500": LET Z1=Z: GO SUB Z: GO SUB VAL "555"
  107 IF Z>VAL "9E3" AND M(TW) THEN GO SUB VAL "5400"
  108 GO SUB VAL "6300"
  112 IF SCREEN$ (A,O)=" " AND C THEN PRINT INK INT PI;AT A,INT PI;"SPELL STRENGTH ";M
  113 INPUT "WHAT WILL YOU DO NOW ? "' LINE I$: CLS : POKE V,O
  114 PRINT I$: PRINT AT TU,O
  115 FOR N=A TO LEN I$
  120 IF I$(N)=" " THEN GO TO VAL "140"
  125 LET N$=""
  130 NEXT N: LET V$=I$: GO TO VAL "155"
  140 LET V$=I$( TO N-A)
  150 LET N$=I$(N+A TO )
  155 GO SUB VAL "180"
  160 IF NM AND NOT CH THEN GO SUB VAL "5700"
  165 IF MOVE THEN GO TO CODE "d"
  170 GO TO CODE "P"
  182 IF I$="RUN" THEN PRINT AT TU,O;"IN WHICH DIRECTION ?": INPUT "DIRECTION ? "; LINE V$
  183 IF V$="RUN" THEN LET V$=N$: LET N$=""
  185 LET MOVE=O: IF N$<>"" THEN GO SUB VAL "1E3": LET CH=O: RETURN 
  190 GO SUB CODE ">=": IF Z<>Z1 THEN GO SUB VAL "500": RETURN 
  195 LET CH=O: GO SUB VAL "250": RETURN 
  210 IF V$="N" OR V$="NORTH" THEN LET z=z1+CODE "_"
  220 IF V$="S" OR V$="SOUTH" THEN LET z=z1-CODE "_"
  230 IF V$="E" OR V$="EAST" THEN LET Z=Z1+FV
  240 IF V$="W" OR V$="WEST" THEN LET Z=Z1-FV
  243 IF V$="U" OR V$="UP" THEN GO SUB VAL "400"
  245 IF V$="D" OR V$="DOWN" THEN GO SUB VAL "420"
  249 RETURN 
  254 IF V$="SAVE" THEN SAVE "1"CODE VAL "61E2",VAL "44500": SAVE "2"CODE VAL "23552",VAL "180": RETURN 
  255 IF V$="LEAVE" THEN GO TO VAL "1750"
  256 IF V$="LOAD" THEN PRINT #O;TAB 5;"PLEASE START THE TAPE": LOAD ""CODE : LOAD ""CODE : RETURN 
  260 IF V$="F" OR V$="FIGHT" OR V$="KILL" THEN GO TO VAL "5500"
  270 IF V$="HELP" THEN PRINT "SORRY, I CAN'T HELP YOU."': RETURN 
  280 IF LEN V$>TU THEN IF V$( TO INT PI)="INV" THEN GO TO VAL "440"
  300 IF V$="TIAMAT" THEN GO TO VAL "460"
  305 IF V$=X$ THEN GO TO VAL "380"
  310 IF V$="EXTENDERE" THEN GO TO VAL "480"
  312 LET V$=V$+"     "
  315 FOR N=A TO SI: IF V$( TO FV)=P$(N) THEN LET N$=V$: GO TO VAL "2250"+N*CODE "2"
  318 NEXT N
  340 PRINT "PARDON ?": RETURN 
  380 IF Z=VAL "7715" THEN LET Z=VAL "7725": RETURN 
  390 IF Z=VAL "7725" THEN LET Z=VAL "7715": RETURN 
  395 PRINT "NOTHING HAPPENS": RETURN 
  401 IF Z=VAL "8780" THEN LET Z=VAL "8770": RETURN 
  403 IF Z=VAL "9315" AND NOT Z(VAL "10") THEN LET Z=VAL "8575": RETURN 
  410 LET Z=VAL "8E3": RETURN 
  420 IF Z=VAL "8770" THEN LET Z=VAL "8780": RETURN 
  425 IF O(VAL "20") AND Z=VAL "8575" THEN LET Z=VAL "9315": RETURN 
  430 GO TO VAL "410"
  445 LET NO=A: PRINT "YOU ARE CARRYING :"'
  450 FOR N=A TO PO: IF NOT Z(N) THEN PRINT T$(N): LET NO=O
  455 NEXT N: IF NO THEN PRINT "NOTHING"
  458 RETURN 
  460 IF Z(J) OR (Z<>VAL "8270" AND Z<>VAL "8280") THEN PRINT "NOTHING HAPPENS.": RETURN 
  462 IF O(TE) THEN PRINT "THE BRIDGE ACROSS THE CHASM HAS VANISHED.": LET O(TE)=O: RETURN 
  465 PRINT "A BRIDGE NOW SPANS THE CHASM.": LET O(TE)=A: RETURN 
  480 IF Z(EL) THEN PRINT "NOTHING HAPPENS": RETURN 
  482 IF T(EL)=EI THEN LET T(EL)=VAL "22": LET T$(EL)=A$(INT PI): PRINT "THE PLANK HAS SHRUNK TO ";A$(INT PI): RETURN 
  485 LET T(EL)=EI: LET T$(EL)=A$(F): PRINT "THE";A$(INT PI,TU TO );" HAS EXPANDED TO ";A$(F): RETURN 
  510 IF NM THEN GO SUB VAL "5150": PRINT AT F,O: IF MON THEN RETURN 
  530 LET MOVE=A: GO SUB Z
  535 IF CHR$ CODE V$="U" AND Z1=VAL "9315" AND Z=VAL "8E3" THEN PRINT "YOU CAN'T CLIMB UP.": LET Z=Z1: GO SUB Z
  540 IF SCREEN$ (INT PI,O)=" " THEN PRINT "THERE IS NO WAY TO GO IN THAT   DIRECTION."': LET Z=Z1: GO SUB Z
  545 LET Z1=Z
  558 INK F: LET NO=A
  560 FOR N=A TO PO
  570 IF Z=Z(N) THEN GO TO VAL "600"
  580 NEXT N
  590 PRINT : INK O: RETURN 
  600 IF NO THEN PRINT '"THERE IS ALSO :"'
  605 LET NO=O: IF N>A THEN IF T$(N)=T$(N-A) AND Z(N)=Z(N-A) THEN PRINT "ANOTHER";T$(N,TU TO ): GO TO VAL "580"
  610 PRINT " ";T$(N)
  615 IF O(VAL "23")=N AND Z(FT)=-A THEN PRINT "THE ";T$(FT)'"IS LOOSE."
  620 GO TO VAL "580"
 1000 IF V$="SAY" THEN LET V$=N$: GO TO VAL "300"
 1001 IF V$="SHAKE" THEN GO TO VAL "1950"
 1002 IF V$="CLEAN" THEN PRINT "HOW ?": RETURN 
 1003 IF V$="F" OR V$="FIGHT" OR V$="KILL" THEN GO TO VAL "5500"
 1004 IF V$="GET" THEN GO TO 1100
 1005 LET v$=v$+"   "
 1010 FOR n=A TO VAL "17"
 1020 IF V$( TO INT PI)=E$(n) THEN GO TO VAL "1050"+VAL "50"*n
 1030 NEXT n
 1040 IF V$( TO INT PI)="USE" THEN GO TO VAL "2E3"
 1090 PRINT "PARDON ?": RETURN 
 1101 LET QQ=O: FOR N=A TO PO: IF Z(N)=O THEN LET QQ=QQ+A
 1102 NEXT N
 1103 IF QQ>=TE THEN PRINT "YOU CAN'T CARRY ANY MORE. YOU'LLHAVE TO DROP SOMETHING.": RETURN 
 1105 IF N$="STAKE" AND Z(F)=-SGN PI AND (Z=VAL "7850" OR Z=VAL "7755") THEN LET Z(F)=SIN PI: PRINT "O.K. THE DOOR HAS SLAMMED SHUT.": LET O(INT PI)=A: RETURN 
 1106 IF O(VAL "23") THEN IF (N$="SKIN" OR N$="ZALROG SKIN") AND Z=Z(O(VAL "23")) AND Z(FT)=-SGN PI THEN LET Z(FT)=O: PRINT "O.K. BUT, WHAT WILL YOU DO WITH IT ?": RETURN 
 1108 LET N$=N$+"    "
 1109 IF N$( TO F)="DRAG" THEN LET N$="STAT"
 1110 FOR N=A TO PO
 1114 IF Z=Z(N) AND N$( TO F)=T$(N,T(N) TO T(N)+INT PI) THEN GO TO VAL "1120"
 1115 NEXT N
 1118 PRINT G$: RETURN 
 1120 LET Z(N)=O: PRINT AT TU,TU;"O.K.": RETURN 
 1152 LET N$=N$+"    "
 1155 FOR N=A TO PO
 1160 IF N$( TO F)=T$(N,T(N) TO T(N)+INT PI) THEN GO TO VAL "1180"
 1165 NEXT N
 1170 PRINT "DROP WHAT ?": RETURN 
 1180 IF Z(N)=O THEN PRINT AT TU,TU;"O.K.": LET Z(N)=Z: RETURN 
 1185 IF N<VAL "30" THEN PRINT "YOU HAVE NO ";N$: RETURN 
 1190 GO TO VAL "1165"
 1205 IF N$<>"TORCH" THEN PRINT "LIGHT WHAT ?": RETURN 
 1210 IF Z(TU) THEN PRINT "YOU HAVE NO TORCH.": RETURN 
 1215 IF Z(TU)=SE THEN PRINT "THE TORCH IS ALREADY LIT.": RETURN 
 1220 IF Z(VAL "28") THEN PRINT "YOU HAVE NOTHING TO LIGHT IT    WITH.": RETURN 
 1225 LET T$(TU)=A$(TU): LET T(TU)=SE: PRINT "THE TORCH IS NOW LIT.": RETURN 
 1255 IF N$<>"BRIDGE" THEN GO TO VAL "1275"
 1260 IF Z=VAL "7205" OR Z=VAL "7215" THEN PRINT "THE BRIDGE IS AN ILLUSION, YOU  HAVE FALLEN 1000 FT TO YOUR     DEATH.": LET HP=-SGN PI: RETURN 
 1262 IF NOT O(TE) THEN GO TO VAL "1275"
 1265 IF Z=VAL "8270" THEN LET Z=VAL "8280": LET Z1=Z: RETURN 
 1270 IF Z=VAL "8280" THEN LET Z=VAL "8270": LET Z1=Z: RETURN 
 1275 IF N$<>"PLANK" THEN GO TO VAL "1292"
 1278 IF T(EL)<>EI THEN PRINT "I SEE NO PLANK": RETURN 
 1285 IF Z=VAL "7205" THEN LET Z=VAL "7215": LET Z1=Z: RETURN 
 1290 IF Z=VAL "7215" THEN LET Z=VAL "7205": LET Z1=Z: RETURN 
 1292 IF N$="RIVER" OR N$="SWAMP" OR N$="CHASM" THEN PRINT '"HOW ?": RETURN 
 1295 PRINT G$: RETURN 
 1305 IF N$<>"TORCH" THEN PRINT V$;" WHAT ?": RETURN 
 1310 IF Z(TU) THEN PRINT "YOU HAVE NO TORCH.": RETURN 
 1320 LET T$(TU)=A$(A): LET T(TU)=INT PI: PRINT "THE TORCH IS NOW OUT."'"YOU CAN SEE BY THE LIGHT OF THE GLOWING SWORD." AND NOT Z(VAL "16")'
 1330 RETURN 
 1351 LET I$=N$+"   ": LET I$=I$( TO INT PI)
 1355 IF I$="CAV" AND Z=VAL "7030" THEN LET Z=VAL "7125": RETURN 
 1357 IF I$="BAT" THEN GO TO VAL "2070"
 1359 IF I$="RIV" THEN PRINT "WITH THE CROCODILES, NO WAY !": RETURN 
 1360 IF I$<>"POO" AND I$<>"WAT" THEN PRINT G$: RETURN 
 1362 IF Z<>VAL "7630" THEN GO TO VAL "1380"
 1364 PRINT "IT'S VERY REFRESHING."
 1366 IF HP<IHP THEN LET B=O: LET HP=IHP: PRINT "ALL OF YOUR WOUNDS HAVE BEEN    HEALED. MAGIC !": LET K=SE: LET B=O: FOR N=A TO FV: BEEP N/TE,N/INT PI: NEXT N: BORDER K
 1368 RETURN 
 1380 IF NOT O(Y) AND Z=VAL "8735" THEN PRINT "NO WAY, I'VE NO INTENTION OF    BECOMING FISH FOOD !": RETURN 
 1382 IF Z=VAL "8735" THEN PRINT "O.K.": LET Z=VAL "8920": RETURN 
 1385 IF Z=VAL "8745" THEN PRINT "O.K.": LET Z=VAL "8925": RETURN 
 1390 PRINT "I SEE NO ";N$;" !": RETURN 
 1400 LET N$=N$+"   ": IF N$( TO F)<>"ROCK" OR Z<>VAL "7945" THEN GO TO VAL "1410"
 1401 IF O(FV) THEN PRINT "THE PASSAGE IS ALREADY CLEAR.": RETURN 
 1403 IF K<SI THEN PRINT "YOU DON'T HAVE THE STRENGTH TO  MOVE THEM.": RETURN 
 1405 PRINT "YOU HAVE CLEARED THE PASSAGE.": LET O(FV)=A: RETURN 
 1420 IF N$( TO F)="TAPE" AND Z=VAL "7575" THEN LET O(NI)=INT PI: PRINT "YOU HAVE DISCOVERED A SECRET    PASSAGE EAST": RETURN 
 1449 PRINT G$: RETURN 
 1455 IF T(TU)=INT PI THEN PRINT "YOUR TORCH ISN'T LIT.": RETURN 
 1460 IF Z(TU) THEN PRINT "WHAT WITH ?": RETURN 
 1465 IF N$<>"WEB" AND N$<>"SPIDER" AND N$<>"WEBS" THEN GO TO VAL "1480"
 1470 IF (Z=VAL "7220" OR Z=VAL "7030") AND M(A)=A THEN PRINT "THE WEB BURNS IN SHEETS OF"'"FLAMES, A SMOULDERING,DEAD,GIANTSPIDER FALLS FROM THE ROOF.": LET X=A: LET M$="GIANT SPIDER": GO SUB MO: GO SUB VAL "4100": RETURN 
 1475 IF Z=VAL "7125" THEN PRINT "DON'T BE SILLY YOU'LL BE BURNED TO A CRISP !": RETURN 
 1480 IF N$="MUM" THEN GO TO VAL "2020"
 1485 IF NM AND X=TE THEN LET NM=O: PRINT "THE INFLAMMABLE MUMMIES HAVE"'"BEEN BURNED TO SMOULDERING ASHES": RETURN 
 1499 PRINT G$: RETURN 
 1501 IF N$<>"DOOR" THEN PRINT "YOU CAN'T.": RETURN 
 1505 IF Z<>VAL "7645" AND Z<>VAL "7650" THEN GO TO VAL "1520"
 1507 IF O(SI)=TU THEN PRINT "THE DOOR IS ALREADY OPEN."
 1510 IF O(SI)=A THEN PRINT "O.K.": LET O(SI)=TU
 1515 IF NOT O(SI) THEN PRINT "YOU CAN'T, THE DOOR IS LOCKED."
 1518 RETURN 
 1520 IF Z<>VAL "7755" AND Z<>VAL "7850" THEN GO TO VAL "1530"
 1523 IF O(INT PI) THEN PRINT "THE DOOR HAS LOCKED ITSELF AND  THERE IS NO WAY OF OPENING IT.  I'M AFRAID YOU ARE LOCKED ";: IF Z=VAL "7755" THEN PRINT "OUT.": RETURN 
 1525 PRINT "IN": RETURN 
 1549 PRINT "I SEE NO DOOR !": RETURN 
 1552 LET N$=N$+"   "
 1555 IF N$( TO INT PI)<>T$(TS,T(TS) TO T(TS)+TU) THEN GO TO VAL "1570"
 1560 IF Z(TS)=O THEN PRINT "THEY WERE DELICIOUS.": LET Z(TS)=SGN PI: RETURN 
 1565 PRINT "YOU HAVE NO APPLES !": RETURN 
 1570 IF N$( TO INT PI)<>T$(INT PI,T(INT PI) TO T(INT PI)+TU) THEN PRINT "DON'T BE SILLY !": RETURN 
 1575 IF Z(INT PI)=O THEN PRINT "O.K. BUT DON'T COME NEAR ME !": LET Z(INT PI)=A: RETURN 
 1580 PRINT "YOU HAVE NO GARLIC": RETURN 
 1602 LET I$=N$+"    ": LET I$=I$( TO F)
 1605 IF I$="STAT" AND (Z=VAL "8330" OR Z=VAL "8235") THEN PRINT "THEY ARE SO REALISTIC THEY COULDALMOST BE HUMAN !": RETURN 
 1607 IF I$="STAT" AND (NOT Z(J) OR Z(J)=Z) THEN PRINT "INSCRIBED ON IT IS THE VERSE :": PRINT : PRINT "  I STAND HERE IN SOLID STATE,": PRINT "  MY PRESENCE HERE DECIDES YOUR    FATE,": PRINT "  I SPAN FROM A TO B,": PRINT "  BUT, FIRST YOU MUST FIND THE     KEY.": RETURN 
 1610 IF ((I$="WARR" OR I$="BODY") AND Z=VAL "8225") OR ((I$="WIZA" OR I$="BODY") AND Z=VAL "7840") THEN PRINT "YES, HE IS QUITE DEAD !": RETURN 
 1615 IF I$="TAPE" AND Z=VAL "7575" THEN PRINT "THE TAPESTRY IS OLD AND"'"WORTHLESS,BUT,IT WAS HIDING A   SECRET PASSAGE TO THE EAST.": LET O(NI)=SGN PI: RETURN  
 1620 IF (I$="WOOD" OR I$="PLAK") AND (Z=Z(EL) OR NOT Z(EL)) THEN PRINT "BURNED INTO IT IS THE WORD      'EXTENDERE'": RETURN 
 1630 IF I$="DRAW" AND Z=VAL "7505" THEN PRINT "THE DRAWINGS DEPICT ORCS"'"FIGHTING WITH AND BURNING"'"ANIMATED MUMMIES.": RETURN 
 1635 IF I$="ROCK" AND Z=VAL "7945" AND NOT O(FV) THEN PRINT "THE ROCKS COULD POSSIBLY BE"'"MOVED.": RETURN 
 1649 GO TO VAL "2900"
 1655 IF (N$<>"BODY" AND N$<>"WARRIOR") OR Z<>VAL "8225" THEN GO TO VAL "1665"
 1657 IF Z(INT PI)=-A THEN PRINT "YOU HAVE FOUND SOME GARLIC.": LET Z(INT PI)=Z: RETURN 
 1660 PRINT "YOU FIND NOTHING OF INTEREST.": RETURN 
 1665 IF Z<>VAL "7840" OR (N$<>"BODY" AND N$<>"WIZARD") THEN GO TO VAL "1675"
 1667 IF Z(TT)=-A THEN LET Z(TT)=Z: PRINT "YOU HAVE FOUND ";T$(TT): RETURN 
 1670 GO TO VAL "1660"
 1699 GO TO VAL "2900"
 1702 LET V$=N$+"   "
 1705 IF V$( TO INT PI)<>"CRO" THEN GO TO VAL "1720"
 1707 IF Z<>VAL "8075" AND Z<>VAL "8165" THEN PRINT "I SEE NO ";V$: RETURN 
 1710 GO SUB VAL "2850"
 1712 IF N>PO THEN RETURN 
 1714 IF N<VAL "31" THEN PRINT "THE ";I$;" SINKS TO THE BOTTOM": PRINT "OF THE RIVER AND IS IGNORED BY  THE CROCODILES.": LET Z(N)=SGN PI: RETURN 
 1718 PRINT "THE CROCODILES EAGERLY DEVOUR   THE ";T$(N,INT PI TO ): LET Z(N)=A: LET O(SE)=A: RETURN 
 1720 IF N$( TO INT PI)<>"SHA" THEN GO TO VAL "1730"
 1722 IF Z<>VAL "8735" THEN PRINT "I SEE NO SHARKS !": RETURN 
 1724 GO SUB VAL "2850"
 1726 IF N>PO THEN RETURN 
 1727 PRINT "THE SHARKS IGNORE THE ";I$;"."'"THEY PREFER LIVE FOOD !" AND N>VAL "31"
 1729 RETURN 
 1730 IF V$( TO INT PI)<>"RAT" THEN PRINT G$: RETURN 
 1732 IF (Z<>VAL "7190" AND Z<>VAL "7195") OR O(EI)=TU THEN PRINT "I SEE NO RATS": RETURN 
 1733 GO SUB VAL "2850"
 1734 IF N=TS THEN PRINT "THE RATS EAGERLY DEVOUR THE"'"APPLES.": LET O(EI)=A: LET Z(TS)=A: RETURN 
 1735 IF N>PO THEN RETURN 
 1736 PRINT "THE RATS IGNORE THE ";I$;".": RETURN 
 1752 LET I$=N$+"   ": LET I$=I$( TO INT PI)
 1754 IF I$<>"WAT" AND I$<>"POO" THEN PRINT "I DON'T UNDERSTAND !": RETURN 
 1756 IF Z=VAL "8920" THEN LET Z=VAL "8735": PRINT "O.K": RETURN 
 1758 IF Z=VAL "8925" THEN LET Z=VAL "8745": PRINT "O.K.": RETURN 
 1760 IF Z=VAL "7630" THEN PRINT "O.K.": RETURN 
 1762 PRINT "YOU'RE NOT IN ANY ";N$: RETURN 
 1800 GO TO VAL "2E3"
 1865 IF Z=VAL "7715" THEN GO TO VAL "2985"
 1870 PRINT G$: RETURN 
 1910 IF Z(FT) OR (N$<>"ZALROG SKIN" AND N$<>"SKIN") THEN PRINT G$: RETURN 
 1920 IF Z<>VAL "8745" AND Z<>VAL "8735" AND Z<>VAL "8920" AND Z<>VAL "8925" AND Z<>VAL "8165" AND (Z>VAL "8090" OR Z<VAL "8100") AND Z<>VAL "7630" THEN PRINT "THERE IS NO WATER AVAILABLE.": RETURN 
 1930 PRINT "THE ZALROG SKIN IS NOW INVISIBLE.": LET T$(FT)=A$(SI): LET T(FT)=VAL "18": LET Z(NI)=-TU: RETURN 
 1950 IF N$<>"SKIN" AND N$<>"ZALROG SKIN" THEN PRINT G$: RETURN 
 1955 IF Z(FT) THEN PRINT "YOU HAVE NO ";N$: RETURN 
 1960 GO TO VAL "1930"
 2001 LET N$=N$+"    "
 2002 FOR N=A TO SI: IF N$( TO FV)=P$(N) THEN GO TO VAL "2250"+N*VAL "50"
 2003 NEXT N
 2004 FOR N=A TO VAL "29": IF N$( TO F)=T$(N,T(N) TO T(N)+INT PI) THEN GO TO VAL "2007"
 2005 NEXT N
 2006 PRINT G$: RETURN 
 2007 IF Z(N)<>O THEN PRINT "YOU HAVE NO ";N$: RETURN 
 2008 GO TO N*TE+VAL "2E3"
 2010 PRINT "O.K.": IF Z>VAL "7219" AND Z<VAL "7345" THEN LET O(TT)=A
 2015 RETURN 
 2020 IF T(TU)=INT PI THEN PRINT "IT'S NOT LIT.": RETURN 
 2023 IF Z=VAL "8785" THEN LET NM=O: PRINT "THE INFLAMMABLE MUMMIES HAVE"'"BEENREDUCED TO SMOULDERING"'"ASHES.": RETURN 
 2025 PRINT "I THOUGHT YOU WERE !": RETURN 
 2030 IF Z=VAL "8790" THEN PRINT "THE VAMPIRE LAUGHS - YOU FOOL   THAT'S ONLY AN OLD WIVES TALE.": RETURN 
 2035 GO TO VAL "2006"
 2040 IF Z=VAL "8790" AND O(VAL "18")=TU THEN PRINT "YOU CAN'T, IT'S TOO LATE.": RETURN 
 2042 IF Z=VAL "8790" THEN LET Z(F)=F: PRINT "YOU SLAY THE VAMPIRE AS HE STIRSIN HIS COFFIN.": GO TO VAL "4100"
 2045 GO TO VAL "2006"
 2050 IF Z=VAL "7715" THEN PRINT "THROUGH THE CRACK YOU CAN NOW   MAKE OUT THE LETTERS '";X$;"'    PAINTED ON THE OPPOSITE WALL": RETURN 
 2055 PRINT "O.K. BUT,IT'S NOT MUCH USE HERE.": RETURN 
 2060 PRINT "HOW VAIN !": RETURN 
 2070 IF O(FT)=TU OR NM THEN PRINT "YOU DON'T HAVE TIME.": RETURN 
 2071 IF Z(VAL "27") AND (Z=VAL "8075" OR Z=VAL "8165" OR Z=VAL "8440" OR Z=VAL "8725") THEN PRINT "YOU CAN'T, YOU DON'T HAVE ANY   OARS.": RETURN 
 2072 IF Z=VAL "8075" AND NOT O(SE) THEN PRINT "IT'S FAR TOO DANGEROUS, YOU'LL  BE EATEN BY THE HUNGRY"'"CROCODILES !": RETURN 
 2073 IF Z=VAL "8075" THEN PRINT "O.K.": LET Z=VAL "8165": RETURN 
 2074 IF Z=VAL "8165" THEN PRINT "O.K.": LET Z=VAL "8075": RETURN 
 2075 IF Z=VAL "8440" THEN PRINT "O.K.": LET Z=VAL "8725": RETURN 
 2077 IF Z=VAL "8725" THEN LET Z=VAL "8440": RETURN 
 2079 PRINT "-AND ABOUT TIME TOO !": RETURN 
 2080 IF Z<>VAL "7645" AND Z<>VAL "7650" THEN GO TO VAL "2006"
 2083 IF O(SI) THEN PRINT "THE DOOR ISN'T LOCKED.": RETURN 
 2085 PRINT "THE DOOR IS NOW UNLOCKED.": LET O(SI)=A: RETURN 
 2091 IF NM=A AND X=TW THEN LET T$(FT)="FLOUR COVERED ZALROG SKIN": LET T(FT)=VAL "22": LET MAC=SI: LET Z(NI)=-SGN PI: PRINT "THE ZALROG IS NOW COVERED IN"'"FLOUR AND IS EASILY VISIBLE.": LET M$="FLOUR COVERED ZALROG": LET A(FT)=SI: RETURN 
 2093 PRINT G$: RETURN 
 2100 IF Z=VAL "9315" THEN LET Z=VAL "8575": PRINT "O.K.": RETURN 
 2102 IF Z=VAL "8575" THEN LET Z=VAL "9315": PRINT "O.K.": RETURN 
 2107 GO TO VAL "2093"
 2110 IF T(N)=VAL "23" OR (Z<>VAL "8270" AND Z<>VAL "7205" AND Z<>VAL "7215") THEN GO TO VAL "2006"
 2112 IF Z=VAL "8270" THEN PRINT "YOU CAN'T,THE CHASM IS TOO WIDE.": RETURN 
 2115 PRINT "A LARGE PLANK NOW SPANS THE"'"CREVASSE.": LET O(EL)=A: LET Z(EL)=-SGN PI: RETURN 
 2120 IF Z<>VAL "8735" OR O(TW) THEN PRINT G$: RETURN 
 2125 PRINT "THE SHARKS ARE NOW AS CALM AS   DOLPHINS.": LET O(N)=A: RETURN 
 2130 LET WA=WA-A: PRINT "A GREY BEAM DARTS FORTH FROM THEWAND."
 2131 GO SUB G
 2132 IF NOT NM THEN PRINT "IT STRIKES THE WALL WITH NO"'"EFFECT.": GO TO VAL "2138"
 2133 LET Z$="THE ": IF NM>A THEN LET Z$="A "
 2134 IF X=TT THEN LET Z$=" "
 2135 IF X=EL OR X=Y OR X=TT AND RND>A/TU THEN PRINT "IT STRIKES ";Z$;M$;" WITH NO"'"EFFECT.": GO TO VAL "2138"
 2136 LET NM=NM-A: PRINT "IN A BLUE FLASH ";Z$;M$'"IS TURNED TO DUST."
 2138 IF NOT WA THEN LET Z(TT)=TU: PRINT '"THE WAND DISINTEGRATES LEAVING  ONLY FINE WHITE DUST.": RETURN 
 2139 RETURN 
 2140 IF Z(NI)=-A THEN PRINT "YOU ARE NOW WEARING A FLOUR"'"COVERED ZALROG SKIN.": RETURN 
 2141 PRINT "O.K. YOU ARE NOW INVISIBLE.": LET O(VAL "16")=A: RETURN 
 2150 PRINT "HOW ?": RETURN 
 2169 GO TO VAL "2190"
 2170 PRINT "YOU ALREADY ARE.": RETURN 
 2190 PRINT "O.K.": RETURN 
 2289 PRINT "TO DO WHAT ?": RETURN 
 2305 IF C<>A THEN PRINT "YOU ARE A ";C$;" NOT A WIZARD,","YOU CAN'T USE THE ";N$,"SPELL": RETURN 
 2310 IF M<FV THEN PRINT "THE SPELL FAILS, YOU MAGIC      STRENGTH IS TOO LOW.": RETURN 
 2312 IF NM THEN PRINT "YOU CAN'T CAST A FIREBALL DURINGCOMBAT.": RETURN 
 2315 LET M=M-FV: PRINT "IN WHAT DIRECTION ARE YOU": PRINT "CASTING THE SPELL (N,S,E OR W) ?"
 2320 LET I$=INKEY$
 2325 LET FI=Z+FV*(I$="E")-FV*(I$="W")+VAL "95"*(I$="N")-VAL "95"*(I$="S")
 2330 IF Z=FI THEN GO TO VAL "2320"
 2331 IF (Z=VAL "7190" OR Z=VAL "7195") AND O(EI)<>F THEN PAPER TU: CLS : PAUSE F*F: PAPER SE: CLS : PRINT "YOU HAVE KILLED THE RATS.": LET O(EI)=F: RETURN 
 2332 INK TU: PAPER TU: CLS : GO SUB FI: INK O: PAPER SE
 2335 IF SCREEN$ (O,O)=" " THEN CLS : PRINT "YOUR FIREBALL STRIKES THE WALL  RIGHT NEXT TO YOU, IN A BLINDINGFLASH YOU ARE INSTANTLY KILLED.": LET HP=O: RETURN 
 2338 CLS : PRINT AT TU,O
 2340 IF NOT NM THEN PRINT "YOUR FIREBALL HAS HAD NO EFFECT.": RETURN 
 2341 IF X=TT AND RND>VAL ".3" THEN PRINT "VELNOR STEPS OUT FROM THE MIDST OF THE FLAMES, APPARENTLY"'"UNHARMED.": RETURN 
 2342 IF X=TT THEN LET NM=O: PRINT "YOUR FIREBALL HAS KILLED VELNOR.": RETURN 
 2343 LET I$="THE": LET S$="": IF NM>A THEN LET I$=STR$ (NM): LET S$="S"
 2344 IF X>=TU AND X<=F THEN LET O(4)=TU
 2345 PRINT "YOUR FIREBALL HAS KILLED ";I$,M$;S$: FOR N=A TO NM: GO SUB VAL "4100": NEXT N: RETURN 
 2355 IF C<>A THEN GO TO VAL "2305"
 2360 IF M<INT PI THEN GO TO VAL "2310"
 2365 LET M=M-INT PI: LET Z=VAL "7030": IF NM THEN LET M(X)=NM: LET NM=O
 2370 RETURN 
 2402 IF O(F)=INT PI AND (Z=VAL "7360" OR Z=VAL "7645") THEN GO SUB MO: LET O(F)=TU
 2405 IF C<>A THEN GO TO VAL "2305"
 2410 IF M<A THEN GO TO VAL "2310"
 2412 GO SUB G
 2415 LET M=M-A: IF (X>NI AND X<TT) OR RND>A/TU OR NOT NM THEN GO TO VAL "2440"
 2425 LET Z$="ONE ": IF NM=SGN PI THEN LET Z$="THE "
 2427 IF X=NI+F THEN LET Z$="": IF RND>F/TE THEN GO TO VAL "2441"
 2430 PRINT Z$;M$;" HAS BEEN": PRINT "POLYMORPHED INTO A SMALL FROG.  IT HOPS AWAY.": LET NM=NM-A: RETURN 
 2441 PRINT "THE SPELL FAILS.": RETURN 
 2455 IF C<>TU THEN PRINT "YOU'RE A ";C$;" NOT A PRIEST","YOU CAN'T USE THE ";N$,"SPELL.": RETURN 
 2460 IF M<F THEN GO TO VAL "2310"
 2465 IF HP=IHP THEN PRINT "YOU'RE NOT INJURED !": RETURN 
 2470 LET M=M-F: LET HP=IHP: PRINT "ALL OF YOUR WOUNDS HAVE NOW BEENHEALED.": BORDER SE: LET K=SE: RETURN 
 2505 IF C<>TU THEN GO TO VAL "2455"
 2510 IF M<INT PI THEN GO TO VAL "2305"
 2515 LET M=M-INT PI: PRINT "YOU ARE NOW PROTECTED BY A MAGICSHIELD.": LET IAC=F: RETURN 
 2555 IF C<>TU THEN GO TO VAL "2455"
 2560 IF M<INT PI THEN GO TO VAL "2310"
 2565 LET M=M-INT PI: IF NOT NM THEN GO TO VAL "2590"
 2570 IF NOT NM THEN PRINT "I SEE NO UNDEAD!": RETURN 
 2571 IF X=TE THEN GO TO VAL "2575"
 2572 IF X=EL THEN GO TO VAL "2590"
 2573 PRINT "DON'T BE SILLY, ";M$;"S","ARE NOT UNDEAD !": RETURN 
 2575 LET M$="MUMMY": LET Z$=" IS": IF NM=TU THEN LET M$="MUMMIES": LET Z$=" ARE"
 2585 PRINT "IN A FLASH AND THUNDERCLAP THE",M$;Z$;" DISPELLED TO THE","OUTER PLANE OF ABYSS.": LET NM=O: RETURN 
 2590 IF Z=VAL "8790" AND O(VAL "18")>O THEN LET NM=O: PRINT "WITH A FLASH AND PIERCING SCREEMTHE VAMPIRE IS DAMNED TO THE"'"OUTER PLANE OF HADES.": LET O(VAL "18")=O: RETURN 
 2595 PRINT "NOTHING HAPPENS.": RETURN 
 2855 PRINT "FEED ";N$;" WITH WHAT ?"
 2860 INPUT "WHAT FOOD ? "; LINE I$: CLS : LET V$=I$+"   "
 2865 FOR N=A TO PO
 2870 IF Z(N)=O AND V$( TO INT PI)=T$(N,T(N) TO T(N)+TU) THEN RETURN 
 2875 NEXT N
 2880 PRINT "YOU HAVE NO ";I$;".": RETURN 
 2901 LET n$=N$+"    ": LET N$=N$( TO F)
 2903 IF N$<>"TWIG" AND N$<>"STRA" AND N$<>"GROU" AND N$<>"FLOO" THEN GO TO VAL "2907"
 2905 IF Z=VAL "8575" THEN PRINT "YOU HAVE DISCOVERED A WELL"'"CONCEALED HOLE IN THE GROUND    OPPOSITE THE SOUTH EXIT.": LET O(VAL "20")=SGN PI: RETURN 
 2907 IF GO THEN IF (N$="LEAD" OR N$="CHIE" OR N$="GOBL") AND (Z=Z(GO) OR NOT Z(GO)) AND Z(EI)=-A THEN LET Z(EI)=Z: PRINT "YOU HAVE FOUND ";T$(EI): RETURN 
 2935 IF N$<>"BRID" THEN GO TO VAL "2939"
 2936 IF Z=VAL "7205" OR Z=VAL "7215" THEN PRINT "THE BRIDGE IS AN ILLUSION.": RETURN 
 2937 IF O(TE)=A AND (Z=VAL "8270" OR Z=VAL "8280") THEN PRINT "THE BRIDGE IS PERFECTLY SAFE.": RETURN 
 2938 PRINT "I SEE NO BRIDGE.": RETURN 
 2939 IF N$( TO INT PI)<>"WEB" AND N$<>"WALL" AND N$<>"ENTR" AND N$<>"PASS" AND N$<>"CAVE" AND N$<>"ROOF" THEN GO TO VAL "2960"
 2940 IF (Z=VAL "7030" OR Z=VAL "7220") AND M(A) THEN PRINT "A GIANT SPIDER IS HANGING FROM  THE ROOF JUST WAITING FOR A     VICTIM.": RETURN 
 2955 IF Z=VAL "7655" THEN PRINT "THE TRAP IS A MERE ILLUSION.": RETURN 
 2957 IF Z=VAL "7725" THEN PRINT "THE SOUTH WALL IS AN ILLUSION.": RETURN 
 2958 IF Z=VAL "7630" THEN PRINT "THE NORTH WALL IS AN ILLUSION.": RETURN 
 2960 IF Z=VAL "7875" AND N$="MATT" AND Z(VAL "24")=-A THEN PRINT "YOU HAVE FOUND SOME RUBIES WHICHWERE CONCEALED IN A SLIT IN THE MATTRESS.": LET Z(VAL "24")=Z: RETURN 
 2965 IF Z=VAL "8735" AND N$="POOL" THEN PRINT "AN UNDERWATER PASSAGE LEADS EAST": RETURN 
 2970 IF (N$="MOUN" OR N$="FUNG") AND Z=VAL "7470" AND Z(VAL "23")=-A THEN PRINT "AMONGST THE VILE PILE OF ORGANICMATTER YOU FIND A PLATINUM"'"PENDANT AND ";T$(VAL "27"): LET Z(VAL "27")=Z: LET Z(VAL "23")=Z: RETURN 
 2975 IF N$="RAGS" AND (Z=VAL "7190" OR Z=VAL "7195") AND Z(FV)=-A THEN LET Z(FV)=Z: PRINT "YOU HAVE FOUND "'T$(FV): RETURN 
 2980 IF N$="SARC" AND Z=VAL "8785" THEN PRINT "YOU HAVE FOUND A PAINTING HIDDENIN A FALSE BACK OF ONE OF THE   SARCOPHAGI.": LET Z(VAL "22")=Z: RETURN 
 2985 IF Z=VAL "7715" THEN PRINT "THE WRITING IS TOO FAR AWAY TO  BE SEEN CLEARLY.": RETURN 
 2995 PRINT "YOU FIND NOTHING UNUSUAL.": RETURN 
 3110 CLS : PRINT AT FV,O;"WHICH CLASS DO YOU WISH TO BE ?"
 3120 PRINT AT TE,TU;"CLASSES :";AT TE,J;"WARRIOR";AT TT,J;"WIZARD";AT VAL "16",J;"PRIEST"
 3130 INPUT "CLASS ? "; LINE C$
 3140 IF C$="WARRIOR" THEN LET C=O: LET IHP=VAL "60": LET ABO=F: LET IAC=INT PI: LET HE=INT PI: LET M=O: GO TO VAL "3180"
 3150 IF C$="WIZARD" THEN LET C=A: LET ABO=INT PI: LET M=TE: LET IHP=VAL "40": LET IAC=SI: GO TO VAL "3180"
 3160 IF C$="PRIEST" THEN LET C=TU: LET ABO=C: LET M=TE: LET IHP=VAL "50": LET IAC=FV: GO TO VAL "3180"
 3170 PRINT AT VAL "19",O;"SORRY, I DON'T UNDERSTAND",C$,TAB TE: GO TO VAL "3130"
 3180 CLS : LET HP=IHP: PRINT AT INT PI,O;"YOU ARE NOW A ";C$;"."
 3190 PRINT ''" YOU ARRIVE AT THE CAVE"'"ENTRANCE CARRYING A TORCH, A"'"TINDERBOX AND A CLUB.": RETURN 
 3810 PRINT "YOU HEAR FOOTSTEPS AND A HISSINGSOUND FROM BEHIND YOU.": INPUT "WHAT WILL YOU DO NOW ?"' LINE N$: CLS : PRINT N$: PRINT AT TU,O
 3815 IF LEN N$>TU THEN IF N$( TO INT PI)="INV" THEN GO SUB VAL "440": GO TO VAL "3810"
 3820 IF LEN N$>=F THEN IF N$( TO F)="TELE" OR N$="USE TELEPORT" THEN GO SUB VAL "2350": IF Z=VAL "7030" THEN GO SUB Z: GO SUB VAL "555": RETURN 
 3830 IF N$<>"USE MIRROR" THEN GO TO VAL "3860"
 3840 IF NOT Z(SI) THEN PRINT "YOU HAVE REFLECTED BACK MEDUSA'SGAZE AND TURNED HER TO STONE."'': LET O(TU)=A: GO TO Z
 3850 PRINT "YOU HAVE NO MIRROR."
 3860 PRINT "IT WAS MEDUSA, HER GAZE HAS"'"TURNED YOU TO STONE.": LET HP=O: RETURN 
 4005 FOR N=A TO INT PI: BEEP A/INT PI,O: BEEP A/INT PI,INT PI: BEEP A/INT PI,EI: NEXT N: BEEP A/TU,O
 4010 LET MAC=A(X): LET MHP=H(X): LET DMHP=H(X): LET NM=M(X): LET M(X)=O: LET Z3=y(x): LET Z2=Z3
 4015 IF X=Y THEN LET Z3=Z: LET Z2=Z
 4020 LET Z$="ARE ": LET N$="S": LET V$="THEY": IF NM=A THEN LET Z$="IS ": LET N$="": LET V$="IT"
 4025 IF X>TE OR X<SI THEN RETURN 
 4028 IF NM=TU AND X=TE THEN PRINT "YOU HAVE BEEN ATTACKED BY TWO   ANIMATED MUMMIES.": RETURN 
 4030 PRINT : PRINT "THERE ";Z$;NM;" ";M$;N$;" HERE,"'V$;" ATTACK";"S" AND NM=A;".": RETURN 
 4050 LET Z$="": IF L>F/FV THEN LET Z$="SLIGHTLY"
 4060 IF L<A/TU THEN LET Z$="SERIOUSLY"
 4070 IF L<A/FV THEN LET Z$="CRITICALLY"
 4080 RETURN 
 4102 IF x=Y THEN GO TO VAL "4120"
 4105 LET PO=PO+A: IF X=FV THEN LET Z(VAL "16")=Z3
 4107 IF X=F AND Z(VAL "18")=A THEN LET Z(VAL "18")=Z3: LET GO=PO
 4110 LET NM=NM-A: LET T(PO)=EI: LET Z(PO)=Z2: LET T$(PO)="1 DEAD "+M$: RETURN 
 4120 LET PO=PO+A: LET NM=O: LET T$(PO)="A DEAD ZALROG": LET Z(PO)=Z: LET T(PO)=EI: LET O(VAL "23")=PO: RETURN 
 4310 LET HT=INT (RND*(TU+TE*(O(VAL "16")=A))): GO TO VAL "4320"+INT (RND*INT PI)*TE
 4320 PRINT "VELNOR CASTS A LIGHTNING BOLT ATYOU.": IF HT THEN PRINT "IT MISSES, STRIKING THE WALL"'"WITH A DEAFENING EXPLOSION.": RETURN 
 4325 LET HP=O: PRINT "IT STRIKES YOU AND BURNS YOU TO A MASS OF SMOULDERING CHARCOAL.": RETURN 
 4330 PRINT "A GREY RAY SHOOTS FROM VELNOR'S SCEPTRE";: IF HT THEN PRINT " BUT, HARMLESSLY WHIZZES"'"PAST YOU.": RETURN 
 4335 PRINT " AND STRIKES YOU": IF M THEN LET M=O: PRINT "DRAINING YOUR SPELL STRENGTH.": RETURN 
 4338 PRINT "BUT, WITH NO EFFECT.": RETURN 
 4340 PRINT "VELNOR LASHES AT YOU WITH THE"'"SCEPTRE";: IF HT THEN PRINT ",BUT, MISSES.": RETURN 
 4345 PRINT " AND HITS.": LET HP=HP-VAL "20": IF HP>=O THEN PRINT '"YOUR LIFE ENERGY HAS BEEN"'"SEVERELY DRAINED.": RETURN 
 4348 PRINT "YOUR BODY HAS BEEN DESTROYED ANDYOUR SOUL DAMNED FOR EVERLASTINGTORMENT.": RETURN 
 4400 IF O(F)<>TU AND (Z=VAL "7360" OR Z=VAL "7645") THEN LET O(F)=TU: GO TO MO
 4401 RETURN 
 4510 LET O(F)=TU: PRINT "HE CHALLENGES YOU - FRIEND OR   FOE ?"
 4520 INPUT "REPLY (FRIEND OR FOE?)"' LINE I$: CLS 
 4530 IF I$="FOE" THEN PRINT "THE GUARD ATTACKS.": GO SUB MO: RETURN 
 4540 IF I$<>"FRIEND" THEN PRINT "PARDON ?": GO TO VAL "4520"
 4550 PRINT "ARE YOU A FRIEND OF THE WIZARD, VELNOR ?"
 4560 INPUT "YES OR NO ?"' LINE I$: CLS 
 4570 IF I$="Y" OR I$="YES" THEN PRINT "GOBLIN GUARD - I THOUGHT SO !   WE HATE THAT VILE DEMON AND ALL HIS FRIENDS !"'"THE GOBLIN ATTACKS.": GO SUB MO: RETURN 
 4580 IF I$<>"N" AND I$<>"NO" THEN PRINT "PARDON ?": GO TO VAL "4560"
 4590 PRINT "THE GOBLIN GUARD TAKES YOU NORTHTO HIS LEADER AND THEN RETURNS  TO HIS POST."'''"GOBLIN LEADER - IT'S NOT OFTEN  WE GET VISITORS, WOULD YOU LIKE TO STAY FOR LUNCH ?"
 4595 LET O(F)=INT PI
 4600 INPUT "YES OR NO ?"' LINE I$: CLS 
 4610 IF I$="NO" THEN PRINT "GOBLIN CHIEF - OH! THERE'S NOT  MUCH POINT IN YOU STAYING THEN. HE TAKES YOU BACK TO THE GUARD  ROOM.": LET Z=VAL "7360": RETURN 
 4620 IF I$<>"YES" THEN PRINT "PARDON ?": GO TO VAL "4600"
 4630 PRINT "THE GOBLINS GIVE A HUGE FEAST INYOUR HONOUR, AS AN ENEMY OF"'"VELNOR."'" DURING THE FEAST YOU HEAR THAT IT'S RUMOURED THAT FOR VELNOR'S SERVICES TO EVIL, THE DEMONS"'"OFFERED TO MAKE HIM ANY BEAST OFHIS CHOICE TO GUARD HIM. IT'S"'"SAID THAT HE SCOURED THE BOOKS  OF MYTH AND LEGEND FOR THE"'"PERFECT BEAST, BUT, NO ONE KNOWSWHAT HE CHOSE."
 4640 PRINT " THE CHIEF TELLS YOU THAT THE"'"LAST ADVENTURERS TO VISIT THE   CAVES THOUGHT THAT THE KEY TO   VELNOR'S LAIR WAS TO THE EAST.  THEY LEFT THAT WAY,BUT, TO THIS DAY THEY HAVE NOT RETURNED."
 4650 PRINT '"DO YOU WISH TO LEAVE EAST OR    WEST ?": INPUT "E OR W ? "; LINE V$
 4655 IF v$="" THEN GO TO VAL "4680"
 4660 IF V$(A)="E" THEN LET Z=VAL "7645": GO TO VAL "4690"
 4670 IF V$(A)="W" THEN LET Z=VAL "7360": GO TO VAL "4690"
 4680 PRINT "PARDON ?": GO TO VAL "4650"
 4690 CLS : PRINT AT TU,O
 4695 IF NOT O(SI) AND Z=VAL "7645" THEN LET O(SI)=A: PRINT "THE CHIEF COMMENTS THAT YOU ARE VERY BRAVE. HE SAYS HE'D BE"'"PETRIFIED GOING THROUGH THERE ! HE UNLOCKS THE DOOR FOR YOU."''
 4700 IF Z(VAL "18")=A THEN LET Z(VAL "18")=Z: PRINT "THE CHIEF WISHES YOU LUCK AND   LEAVES YOU A SHIELD."''
 4705 RETURN 
 4720 IF RND>A/TU AND NOT Z(VAL "13") THEN PRINT "GOBLIN CHIEF - I SEE YOU'VE"'"FOUND A WAND OF DISINTEGRATION, IT'LL BE USEFUL, BUT,BEWARE,THE INVISIBLE ZALROG IS IMMUNE TO   MAGIC !": GO TO NN
 4730 IF RND>A/TU AND NOT Z(SE) THEN PRINT "GOBLIN CHIEF - THATS A LARGE"'"BATHTUB YOU'VE GOT, YOU COULD   ALMOST USE IT AS A BOAT.": GO TO NN
 4735 IF HP<>IHP AND RND>A/TU THEN PRINT "GOBLIN CHIEF - I SEE THAT YOU   HAVE BEEN INJURED, I THINK THEREIS A MAGIC POOL SOMEWHERE THAT  HEALS ALL WOUNDS.": GO TO NN
 4740 PRINT "GOBLIN LEADER - YOU'D BETTER GETA MOVE ON.": GO TO NN
 4810 IF O(FT)=A THEN LET Z2=Z : PRINT '"TWO CLUB WIELDING GIANTS ARE"'"CHARGING TOWARDS YOU FROM THE   NORTH.": LET O(VAL "14")=TU: RETURN 
 4820 IF Z=VAL "8270" AND NOT O(VAL "10") THEN PRINT " THE GIANTS HAVE FALLEN TO THEIRDEATH INTO THE FIREY ABYSS.": LET O(VAL "14")=-SGN PI: RETURN 
 4840 IF Z>=Z2 THEN PRINT " YOU HAVE BEEN CAUGHT AND BEATEN TO AN AMORPHOUS PULP.": LET HP=O: RETURN 
 4845 IF Z=VAL "8270" THEN PRINT '"THE TWO HUGE CLUB WIELDING"'"GIANTS ARE NOW CROSSING THE"'"BRIDGE CLOSE BEHIND YOU.": RETURN 
 4850 PRINT '"YOU ARE BEING CHASED BY TWO"'"NASTY CLUB WIELDING GIANTS.": LET Z2=Z: RETURN 
 5160 IF NOT CH AND RND<A/TU THEN LET Z=Z1: PRINT "THERE ISN'T ROOM TO ESCAPE.": LET Z=Z1: RETURN 
 5170 IF CH AND RND>VAL ".8" THEN LET Z=Z1: LET Z2=Z: LET Z3=Z: PRINT "YOU HAVE BEEN CAUGHT.": PRINT : LET CH=O: RETURN 
 5180 LET P=X: INK SE: PRINT AT F,O: GO SUB Z: INK O: PRINT AT TU,O: IF SCREEN$ (FV,O)=" " THEN LET CH=O: RETURN 
 5190 IF P<>X THEN LET MON=A: PRINT "YOU HAVE RAN STRAIGHT INTO ";"A" AND NM=A;"SOME" AND NM<>A';M$;"S" AND NM<>A;". ";"THEY" AND NM>A;"IT" AND NM=A;" HAD SURPRISE"'"AND YOU DIDN'T STAND A CHANCE.": LET HP=O: RETURN 
 5200 IF CH AND Z=Z3 THEN PRINT "YOU HAVE RAN STRAIGHT INTO YOUR PURSUER. YOU DIDN'T STAND A     CHANCE.": LET HP=O: LET MON=A: RETURN 
 5205 IF (Z=VAL "7650" AND X=EI) OR Z=VAL "7030" OR Z<>Y(X) AND RND>F/FV THEN PRINT "YOU HAVE ESCAPED.  ": LET M(X)=NM: LET NM=O: LET CH=O: RETURN 
 5210 LET Z3=Z3: LET Z2=Z
 5215 IF X=VAL "13" THEN PRINT "YOU ARE BEING PURSUED BY VELNOR.": RETURN 
 5220 LET CH=A: PRINT "YOU ARE BEING PURSUED BY ";NM'M$;"S" AND NM<>A: RETURN 
 5400 IF RND>VAL ".8" THEN PRINT '"YOU HEAR FOOTSTEPS BEHIND YOU.": LET X=TW: GO SUB MO: LET M$=("INVISIBLE" AND Z(NI)>=O)+("FLOUR COVERED" AND Z(NI)<O)+" ZALROG"
 5405 RETURN 
 5501 GO SUB G
 5502 IF Z=VAL "7195" OR Z=VAL "7190" THEN PRINT "YOU CAN'T, THEY ARE TOO QUICK   AND THERE ARE TOO MANY OF THEM.": RETURN 
 5503 IF O(FT)>O OR Z=VAL "8330" THEN PRINT "I DON'T THINK THAT WAS A GOOD   IDEA !": RETURN 
 5504 IF O(F)=INT PI AND (Z=VAL "7360" OR Z=VAL "7645") THEN GO SUB MO: LET O(F)=TU
 5505 IF NM=O THEN PRINT "I SEE NOTHING TO FIGHT.": RETURN 
 5506 LET AB=ABO: LET DAM=O: IF NOT Z(VAL "19") THEN LET DAM=FV
 5508 IF NOT Z(Y) THEN LET DAM=SI
 5509 IF NOT Z(VAL "16") THEN LET AB=ABO+TU: LET DAM=TE
 5510 IF NOT C THEN LET DAM=DAM+TU
 5515 PRINT : IF RND*VAL "20">MAC+AB+SI THEN PRINT INK A;"YOU MISSED"': RETURN 
 5520 LET DMHP=DMHP-RND*DAM
 5530 LET V$="ONE ": IF NM=A THEN LET V$="THE "
 5535 IF X=TT THEN LET V$=""
 5540 IF DMHP<O THEN PRINT INK A;"YOU HAVE KILLED "'V$;M$: GO SUB VAL "4100": LET DMHP=MHP: RETURN 
 5560 LET L=DMHP/MHP: GO SUB VAL "4040"
 5570 PRINT INK A;"YOU HAVE HIT AND ";Z$'"INJURED ";V$;M$': RETURN 
 5701 IF Z2<>Z AND X=TT THEN LET Z2=Z: LET Z3=Z
 5702 IF Z2<>Z THEN PRINT "YOU HAVE ESCAPED.": LET M(X)=NM: LET NM=O: LET CH=O: RETURN 
 5705 PRINT : INK TU: IF X=TT THEN GO SUB VAL "4300": RETURN 
 5715 LET AC=IAC-(F AND O(VAL "16"))-(A AND NOT Z(VAL "18"))-(INT PI AND NOT Z(VAL "17"))
 5716 IF X<>EL THEN GO TO VAL "5720"
 5717 IF O(VAL "18")=A THEN RETURN 
 5718 IF RND>A/TU THEN PRINT "THE VAMPIRE ATTEMPTS TO CHARM   YOU BUT FAILS.": RETURN 
 5719 PRINT "YOU HAVE NOW FALLEN UNDER THE   INFLUENCE OF THE VAMPIRES CHARM SPELL. HE WILL DRAIN YOUR BLOOD AT HIS LEISURE.": LET HP=O: RETURN 
 5720 FOR N=A TO NM
 5730 IF RND*F*FV>MHP/TE+INT PI+AC THEN GO TO VAL "5790"
 5735 IF X=A AND RND>F/SI THEN LET HP=O: PRINT "YOU HAVE BEEN INJECTED WITH A   FATAL DOSE OF POISON.": RETURN 
 5740 PRINT : LET HP=HP-RND*EI
 5750 LET L=HP/IHP: GO SUB VAL "4040"
 5760 IF A+L*SI<K THEN LET K=K-A: BORDER K: IF K>O THEN GO TO VAL "5760"
 5770 IF NOT K THEN PRINT "YOU HAVE BEEN KILLED.": RETURN 
 5780 FOR I=TE TO VAL "-20" STEP -FV: BEEP A/TE,I: NEXT I: PRINT "YOU HAVE BEEN HIT AND ";Z$: PRINT "WOUNDED"
 5790 NEXT N
 5794 IF X=TE AND NM=TU THEN PRINT "YOU ARE IN COMBAT WITH TWO"'"MUMMIES.": RETURN 
 5795 PRINT : PRINT "YOU ARE IN COMBAT WITH ": PRINT NM;" ";M$;"S" AND NM>A;".": RETURN 
 6000 LET Z=A: OVER O: PAPER SE: INK O: RANDOMIZE : BORDER SE: FLASH O: BRIGHT O
 6001 CLS : PRINT AT F,FV; INK TU;"VELNOR'S LAIR";AT EI,SI;"Written by";AT TE,Y;"DEREK BREWSTER.": PRINT AT Y+INT PI,F;"PLEASE WAIT A MOMENT.";AT VAL "20",FV; INK A;"* 1983 QUICKSILVA"
 6003 LET B=O: POKE VAL "23658",EI
 6005 LET A(Y)=-TE: LET T=O: LET FI=O: LET MON=O: LET WA=INT PI: LET X$="": FOR N=A TO FV: LET X$=X$+CHR$ INT (RND*VAL "26"+CODE "A"): NEXT N
 6008 LET MO=VAL "4E3":
 6010 DIM O(VAL "23")
 6030 FOR N=A TO TT: LET M(N)=PEEK (VAL "23296"+N): NEXT N: FOR N=A TO VAL "30": LET Z(N)=W(N): NEXT N: LET T(TU)=INT PI: LET T(EL)=VAL "23": LET T(FT)=VAL "22": LET T$(TU)=A$(A): LET T$(EL)=A$(INT PI): LET T$(FT)=A$(FV)
 6031  LET X=O: LET CH=O: LET PO=VAL "30": LET K=SE: LET NM=O: LET AB=F: RETURN 
 6080 PRINT INK TU;"CONGRATULATIONS ON THE"'"SUCCESSFUL COMPLETION OF YOUR"'"QUEST."
 6105 GO SUB VAL "6200"
 6108 IF HP<=O THEN FOR N=A TO TU: BEEP A,O: BEEP A,TU: BEEP A/TU,INT PI: BEEP A/TU,TU: BEEP A,O: NEXT N
 6110 PRINT #O;"PLAY AGAIN (Y OR N)?"
 6120 IF INKEY$="Y" THEN GO TO 1
 6130 IF INKEY$="N" THEN NEW 
 6140 GO TO VAL "6120"
 6210 LET SC=O: FOR N=TU TO VAL "22": IF O(N) THEN LET SC=SC+F
 6215 NEXT N
 6220 FOR N=A TO VAL "28": IF Z(N)<>W(N) THEN LET SC=SC+TU
 6225 NEXT N
 6230 FOR N=SGN PI TO TT: IF NOT M(N) THEN LET SC=SC+INT PI
 6235 NEXT N
 6240 LET SC=SC+(VAL "20" AND O(F)=A)+(VAL "30" AND NOT M(TT))-(VAL "20" AND HP<=O): LET SC=SC AND SC>O
 6250 PRINT INK TU'"YOU SCORED ";SC;" OUT OF A"'"POSSIBLE 200.": RETURN 
 6310 IF Z<=VAL "7030" OR ((Z=Z(TU) OR NOT Z(TU)) AND T(TU)<>INT PI) OR NOT Z(VAL "16") OR Z=Z(VAL "16") THEN GO TO VAL "6330"
 6320 PAPER O: PRINT INK SE;AT O,O;"IT IS NOW PITCH BLACK, UNLESS   YOU GET SOME LIGHT YOU ARE GOINGTO GET INTO TROUBLE.": RETURN 
 6330 IF ATTR (TU,TU)=O THEN PAPER SE: RANDOMIZE USR VAL "23310"
 6340 RETURN 
 6500 LET BORD=SE: POKE VAL "23658",EI: GO SUB VAL "6035": GO TO VAL "80"
 6935 PRINT "YOU DON'T WANT TO GO THAT WAY.  IT'S THE WAY BACK TO THE VILLAGE."'': LET Z=Z1: GO TO Z
 7029 RETURN 
 7030 PRINT F$;"FOOT OF MT ELK;  TO YOUR NORTH A NARROW PASSAGE  LEADS INTO THE MOUNTAIN SIDE."
 7031 IF (z(TU) OR t(TU)=INT PI) AND Z(VAL "17") THEN PRINT "IT IS TOO DARK TO SEE ANYTHING. TO CONTINUE YOU HAD BETTER GET  SOME LIGHT.": RETURN 
 7032 IF M(A) THEN PRINT "THE PASSAGE-WAY IS"'"CRISS-CROSSED AND BLOCKED WITH  THICK YELLOW WEBS."
 7124 RETURN 
 7125 GO SUB S: IF NOT NM AND M(A) THEN LET X=A: LET M$="GIANT SPIDER": PRINT '"YOU HAVE BEEN POUNCED UPON BY A",M$: GO TO MO
 7189 RETURN 
 7190 PRINT F$;"WEST END OF A"'"DANK ACRID SMELLING CAVE.THERE  ARE MANY BONES AND RAGS"'"SCATTERED ABOUT THE GROUND."'"EXIT N AND ";W$;"E."
 7191 IF Z(VAL "26")=Z THEN LET N=VAL "26": GO TO VAL "1734"
 7192 IF NOT O(EI) THEN LET B=B+A/TE: PRINT '"YOU HAVE BEEN ATTACKED AND"'"BITTEN BY VICIOUS HUNGRY RATS":
 7194 RETURN 
 7195 PRINT F$;"EAST END OF A"'"DANK ACRID SMELLING CAVE.THERE  ARE MANY BONES AND RAGS"'"SCATTERED ABOUT THE GROUND."'"EXIT E AND ";W$;"W."
 7196 IF O(EI)=A THEN PRINT "THERE ARE A LOT OF CONTENTED"'"LOOKING RATS HERE.": RETURN 
 7197 IF Z(TS)=Z THEN LET N=TS: GO TO VAL "1734"
 7198 IF NOT O(EI) THEN PRINT "MANY HUNGRY VICIOUS LOOKING RATSARE EYEING YOU INTENTLY.": RETURN 
 7199 RETURN 
 7200 GO TO E
 7204 RETURN 
 7205 PRINT F$;"WEST END OF THE  CAVERN OF CRACKS. A SMALL STONE BRIDGE SPANS A DEEP CREVASSE TO THE EAST. ";"A WOODEN PLANK ALSO   SPANS THE CREVASSE. " AND O(EL)=A;"EXIT W."
 7214 RETURN 
 7215 PRINT B$;"A LONG DUSTY CAVERN  OF CRACKS. A DEEP CREVASSE RUNS ACROSS THE CENTRE OF THE CAVERN AND IS SPANNED BY A SMALL STONE BRIDGE. ";"A 25FT PLANK ALSO SPANS THE CREVASSE. " AND O(EL)=A;"EXIT E."
 7219 RETURN 
 7220 PRINT B$;"A LARGE CAVERN WITH  WALLS COVERED IN GREEN SLIME.   THE FLOOR IS VERY SLIPPY. EXITS N,S,E AND W."
 7224 RETURN 
 7245 PRINT "YOU ARE FIGHTING YOUR WAY","THROUGH THICK FUNGI GROWTHS."'"THE AIR IS FILLED WITH FUNGI"'"SPORES";: IF Z<>VAL "7225" AND (NOT O(TT) OR Z(A)) AND RND>VAL ".8" THEN LET HP=O: PRINT "; ON WHICH YOU HAVE"'"CHOKED TO DEATH.": RETURN 
 7247 IF Z(A) OR NOT O(TT) THEN PRINT ", ALMOST TO THE POINT"'"OF CHOKEING YOU.": RETURN 
 7248 PRINT "."
 7284 RETURN 
 7285 GO SUB S
 7286 IF M(FV) THEN PRINT '"YOU CAN SEE A ORC TO THE NORTH."
 7314 RETURN 
 7315 GO TO S
 7320 RETURN 
 7337 GO TO VAL "7245"
 7342 GO SUB VAL "7245": PRINT "EXIT E."
 7344 RETURN 
 7345 PRINT D$;"CRAWLING THROUGH A"'"NARROW MUDDY LOW ROOFED TUNNEL."'"THERE IS A GOBLIN IN THE CAVE TOTHE EAST." AND M(TU)
 7349 RETURN 
 7350 LET Z=VAL "7360": GO TO Z
 7354 RETURN 
 7355 LET Z=VAL "7345": GO TO Z
 7359 RETURN 
 7360 PRINT B$;"THE GOBLINS GUARD    ROOM. EXITS N AND W.": IF NOT m(TU) THEN RETURN 
 7361 PRINT "THERE IS A GOBLIN GUARD HERE."
 7363 LET X=TU: LET M$="GOBLIN GUARD": IF NOT O(F) THEN LET O(F)=SGN PI
 7364 IF FI=Y(X) OR O(F)=TU THEN PRINT "HE RUSHES TO ATTACK.": GO SUB MO: RETURN 
 7369 RETURN 
 7370 PRINT "THIS EMPTY CAVE HOLDS NOTHING   BUT THE MEPHITIC STENCH OF THE  AREA. IT MAKES YOU FEEL ILL."'"EXIT N."
 7379 RETURN 
 7380 PRINT B$;"THE ORC GUARD ROOM."'"EXITS N AND S."
 7381 IF NOT NM AND M(FV) THEN LET M$="ORC GUARD": LET X=FV: PRINT "A LARGE ";M$;" WIELDING A    GLOWING SWORD IS RUSHING AT YOU.": GO TO MO
 7409 RETURN 
 7410 GO TO S
 7454 RETURN 
 7455 GO TO S
 7464 RETURN 
 7465 PRINT B$;"A DIRTY SLIMY CAVE,  THE AIR IS FILLED WITH A PUTRID SMELL OF DECAYING FLESH.EXITS N,S AND E."
 7469 RETURN 
 7470 IF Z1=VAL "7475" THEN RETURN 
 7471 PRINT F$;"SOURCE OF THE"'"NAUSEATING STENCH. BONES AND"'"DECAYING FLESH LIE EVERYWHERE.  A LARGE MOUND OF FUNGI DOMINATESONE CORNER OF THE CAVE. EXIT W."
 7472 IF NOT NM AND M(EI) THEN LET M$="TROLL": LET X=EI: GO TO MO
 7474 RETURN 
 7475 IF Z1=VAL "7470" THEN RETURN 
 7476 GO TO S
 7504 RETURN 
 7505 PRINT B$;"THE SOUTH OF A LONG  HIGH ROOFED CAVERN. THERE ARE   PRIMITIVE DRAWINGS ON THE WALLS AND SCORCH MARKS ON THE FLOOR.  EXIT S. ";W$;"N."
 7544 RETURN 
 7545 PRINT B$;"THE GOBLIN CHIEF'S   ROOM. EXIT E.": IF Z=VAL "7550" THEN LET O(F)=TU
 7546 IF O(F)=INT PI THEN GO SUB VAL "4720": GO TO Z
 7547 IF M(F) THEN LET M$="GOBLIN CHIEF": PRINT "THE ";M$;" IS HERE.": LET X=F: IF O(F)=TU OR FI=Y(X) THEN PRINT "HE RUSHES TO ATTACK.": GO SUB MO: RETURN 
 7549 RETURN 
 7550 PRINT F$;"END OF A N/S     PASSAGE. THERE ARE ROOMS TO THE NORTH AND WEST."
 7559 RETURN 
 7560 GO SUB S: PRINT "AN ACRID SMELL DRIFTS UP FROM   THE SOUTH."
 7569 RETURN 
 7570 PRINT F$;"END OF A N/S     PASSAGE. THERE ARE CAVES TO THE NORTH AND EAST."
 7574 RETURN 
 7575 PRINT B$;"THE ORC CHIEF'S ROOM.THE PLACE IS MORBIDLY DECORATED AND A GHASTLY TAPESTRY ADORNS   THE EAST WALL. EXIT W."
 7576 IF NOT NM AND M(SE) THEN LET M$="ORC CHIEF": LET X=SE: GO TO VAL "4E3"
 7579 RETURN 
 7580 IF NOT O(NI) THEN RETURN 
 7581 PRINT B$;"A SMALL SECRET ROOM  BELONGING TO THE ORC CHIEF. EXITW."
 7599 RETURN 
 7600 PRINT B$;"THE CENTRE OF A HIGH ROOFED CAVERN. IT EXTENDS N AND S FROM HERE."
 7629 RETURN 
 7630 PRINT B$;"A MAGICAL ROOM OF    GLISTENING CRYSTAL WALLS. A     SPARKLING POOL OF ENCHANTED     WATER ADORNS THE CENTRE OF THE  ROOM. NO EXIT CAN BE SEEN."
 7644 RETURN 
 7645 PRINT B$;"THE GOBLINS LAIR. A  LARGE OAK DOOR TO THE EAST IS"'"CLOSED." AND O(SI)<TU;"OPEN." AND O(SI)=TU;" EXIT S."
 7647 LET X=INT PI: LET M$="GOBLIN": IF NOT M(X) THEN RETURN 
 7648 PRINT "THERE ";"ARE " AND M(INT PI)<>A;"IS " AND M(INT PI)=A;M(INT PI);" ";M$;"S" AND M(INT PI)<>A;" HERE.": IF O(F)=TU OR FI=Y(X) THEN GO SUB MO: PRINT "THEY RUSH TO ATTACK."
 7649 RETURN 
 7650 IF Z1=VAL "7645" AND O(VAL "6")<>TU THEN PRINT "YOU CAN'T, THE DOOR IS CLOSED.": LET Z=Z1: PRINT : GO TO Z
 7652 GO SUB E: PRINT "TO THE WEST IS THE GOBLIN LAIR.": RETURN 
 7655 PRINT "PASSAGES GO SOUTH AND WEST FROM HERE. TO THE EAST IS A SMALL"'"WHITE WALLED CAVE. A BED OF"'"SPIKES HANGS FROM THE ROOF AND  MANY BONES ARE SCATTERED ABOUT  THE BLOODSTAINED FLOOR.": RETURN 
 7660 IF Z1=VAL "7665" THEN RETURN 
 7661 PRINT B$;"A CAVE OF ILLUSIONS. IMAGES OF SPIKES AND BONES GIVE THE IMPRESSION OF AN ELABORATE  TRAP, BUT NONE OF IT IS REAL."'U$;" AND W.": RETURN 
 7665 IF Z1=VAL "7660" THEN RETURN 
 7666 PRINT B$;"THE ORCS LAIR,SEVERALFIRES ARE BURNING AND THE ROOM  IS FILLED WITH A FOUL STENCH.   EXIT S."
 7667 IF NOT NM AND M(SI) THEN LET M$="ORC": LET X=SI: GO TO MO
 7694 RETURN 
 7695 PRINT B$;"THE NORTH OF THE HIGHROOFED CAVERN. EXITS N AND E."'W$;"S.": RETURN 
 7700 PRINT F$;"WEST END OF A    GLITTERING DOMED CHAMBER OF"'"STALAGMITES. EXIT W."'W$;"E.": RETURN 
 7705 PRINT F$;"EAST END OF THE  DOMED CHAMBER. EXIT E."'W$;"W.": RETURN 
 7710 GO TO E
 7715 GO SUB E
 7716 PRINT "THE PASSAGE IS TOO NARROW TO"'"CONTINUE ANY FURTHER TO THE"'"EAST. THROUGH THE CRACK YOU CAN VAGUELY SEE SOMETHING WRITTEN   ON THE ADJACENT WALL."
 7724 RETURN 
 7725 PRINT B$;"A SMALL SMOOTH       WALLED CAVERN.'";X$;"' IS NEATLY PAINTED ON THE WALL HERE.EXIT N."
 7754 RETURN 
 7755 IF Z1=VAL "7850" AND O(INT PI) THEN PRINT "YOU CAN'T, THE DOOR IS CLOSED   AND LOCKED.": LET Z=Z1: RETURN 
 7756 GO SUB S: LET Z$="NORTH": GO TO VAL "7852"
 7789 RETURN 
 7790 GO TO S
 7819 RETURN 
 7820 PRINT B$;"A SMALL DUSTY ROOM.  EXIT S."
 7839 RETURN 
 7840 PRINT "YOU ARE IN A SMALL DUG-OUT CAVE.THERE IS THE BODY OF A WIZARD"'"HERE AND THE NAME 'TIAMAT' IS"'"SCRAWLED ON THE WALL. EXIT E.": RETURN 
 7845 GO TO E
 7850 IF Z1=VAL "7755" AND O(INT PI) THEN PRINT "THE DOOR IS CLOSED AND LOCKED.": LET Z=Z1: RETURN 
 7851 LET Z$="SOUTH": PRINT B$;"A LARGE WORKED CAVE  WITH WALLS STREAKED WITH VEINS  OF RED AND BLUE MINERALS.": GO SUB VAL "7852": PRINT "EXITS N AND W.": RETURN 
 7852 IF NOT O(INT PI) THEN PRINT "TO THE ";Z$;" IS A LARGE OAK DOORWEDGED OPEN WITH A WOODEN STAKE.": RETURN 
 7853 PRINT "THERE IS A LARGE OAK DOOR CLOSEDTO THE ";Z$
 7864 RETURN 
 7865 PRINT B$;"THE OGRES KITCHEN."'"EXIT N."
 7866 IF NOT NM AND M(NI) THEN LET M$="OGRE": LET X=NI: GO TO MO
 7874 RETURN 
 7875 PRINT "YOU ARE IN THE OGRES BEDROOM, A FILTHY FLEA-RIDDEN MATTRESS LIESON TOP OF A LARGE STONE SLAB"'"HERE. EXIT N."
 7884 RETURN 
 7885 GO TO S
 7944 RETURN 
 7945 PRINT B$;"A BOULDER FILLED CAVE.";
 7946 IF NOT O(FV) THEN PRINT " THE PASSAGE TO THE NORTH IS"'"BLOCKED BY A ROCK-FALL. EXIT S.": RETURN 
 7947 PRINT U$;" AND S."
 7959 RETURN 
 7960 PRINT "PASSAGES LEAD N,S AND E FROM"'"HERE.": RETURN 
 7965 GO TO E
 7970 GO SUB E: PRINT "THERE IS A SMALL CAVE TO THE"'"SOUTH.": RETURN 
 7975 GO TO E
 7980 PRINT "PASSAGES LEAD N,S AND W FROM"'"HERE."
 8039 RETURN 
 8040 IF NOT O(FV) THEN PRINT "YOU CAN'T GO THAT DIRECTION, THEPASSAGE IS BLOCKED.": LET Z=Z1: PRINT : GO TO Z
 8041 GO TO S
 8054 RETURN 
 8055 PRINT B$;"THE OGRES BATHROOM."'"EXIT S.";
 8074 RETURN 
 8076 PRINT B$;"THE SOUTH OF LONG"'"DAMP CAVE, A RIVER POPULATED"'"WITH ";"HUNGRY" AND NOT O(SE);"PLACID" AND O(SE);" LOOKING CROCODILES"'"FLOWS THROUGH THE CENTRE OF THE CAVE. EXIT S."
 8134 RETURN 
 8135 GO TO S
 8164 RETURN 
 8165 PRINT B$;"THE NORTH OF A LONG  DAMP CAVERN.A RIVER POPULATED   WITH PLACID LOOKING CROCODILES  RUNS THROUGH THE CENTRE. EXIT N."
 8224 RETURN 
 8225 PRINT B$;"A SMALL DUSTY CAVERN.THERE IS THE DECOMPOSING BODY OFA WARRIOR HERE. EXIT E.": RETURN 
 8230 PRINT "PASSAGES LEAD S,E AND W FROM"'"HERE.": RETURN 
 8235 PRINT F$;"SOUTH END OF A   LARGE CAVERN FILLED WITH LIFE-  SIZE HUMAN STATUES OF THE"'"HIGHEST QUALITY. EXIT W."'W$;"N."
 8249 RETURN 
 8250 LET Z=VAL "8565": GO TO Z
 8259 RETURN 
 8260 PRINT "FROM HERE A PASSAGE LEADS EAST  AND THERE IS A CAVERN TO THE"'"SOUTH.": RETURN 
 8265 GO TO E
 8270 PRINT B$;"THE EAST OF A HOT    DUSTY CAVERN,A STRONG SULPHUROUSODOUR IS PROMINENT HERE. THE    CAVERN IS SPLIT IN TWO BY A WIDECHASM THROUGH THE CENTRE, MOLTENLAVA CAN BE SEEN BELOW. ";"A SMALL STONE BRIDGE SPANS THE CHASM." AND O(TE)'"EXIT W."
 8279 RETURN 
 8280 PRINT B$;"THE WEST OF A HOT,   DUSTY CAVERN. A WIDE CHASM OF   LAVA SPLITS THE CAVERN IN TWO."'"A SMALL STONE BRIDGE SPANS THE  CHASM." AND O(TE);" EXIT N."
 8329 RETURN 
 8330 PRINT F$;"NORTH END OF THE CAVERN OF STATUES."'W$;"S."
 8331 IF NOT O(TU) THEN GO TO VAL "3800"
 8344 RETURN 
 8345 GO SUB S: PRINT "A MARSHY SMELL DRIFTS DOWN FROM THE NORTH";: IF T(TU)<>INT PI AND NOT Z(TU) THEN PRINT " AND YOUR TORCH IS"'"BURNING MUCH BRIGHTER THAN"'"NORMAL."
 8374 RETURN 
 8375 IF Z1=VAL "8380" THEN RETURN 
 8376 GO TO S
 8384 RETURN 
 8385 PRINT "FROM HERE THERE ARE PASSAGES TO THE NORTH AND EAST.": RETURN 
 8390 GO TO E
 8395 GO SUB E
 8397 IF M(TT) THEN PRINT "THE DARK SHADOWY FIGURE OF"'"VELNOR THE WIZARD STEPS OUT"'"INFRONT OF YOU."': LET O(VAL "21")=A: LET M$="VELNOR": LET X=TT: GO SUB VAL "4E3"
 8399 RETURN 
 8400 PRINT "YOU ARE IN THE PLUSHLY FURNISHEDLIVING ROOM OF VELNOR'S LAIR."'"EXITS E AND W": RETURN 
 8405 PRINT "YOU ARE IN THE NICELY DECORATED BEDROOM OF VELNORS LAIR. EXIT W."
 8439 RETURN 
 8440 IF NOT Z(TU) AND T(TU)>INT PI THEN FOR N=A TO FV: PAPER TU: CLS : BEEP VAL ".02",N*VAL ".1": PAPER SE: CLS : NEXT N: PRINT "THERE HAS BEEN A MASSIVE"'"EXPLOSION"''"YOU HAVE BEEN KILLED BY THE"'"ROCK FALL": LET HP=O: RETURN 
 8441 PRINT B$;"A LONG DAMP CAVERN,  A MASSIVE EXPANSE OF BUBBLING   SWAMP STRETCHES OUT TO YOUR"'"NORTH. EXIT S."
 8469 RETURN 
 8470 PRINT F$;"SOUTH END OF A   LONG CHAMBER WITH WALLS OF"'"VOLCANIC GLASS. EXIT S."'W$;"N": IF O(FT)=O THEN LET O(FT)=A
 8479 RETURN 
 8480 IF Z1=VAL "8575" AND NOT O(VAL "20") THEN LET O(VAL "20")=SGN PI: LET HP=HP-TE: PRINT "YOU HAVE FALLEN INTO A DEEP PIT.": LET Z=VAL "9315": GO TO Z
 8481 GO TO S
 8534 RETURN 
 8535 PRINT "DON'T BE SILLY, YOU'LL BE"'"DROWNED IN THE SWAMP!": LET Z=Z1: GO TO Z
 8564 RETURN 
 8565 PRINT F$;"NORTH OF A LONG  VOLCANIC CHAMBER. THIS AREA WAS ONCE A GIANTS LAIR. EXIT N."'W$;"S."
 8574 RETURN 
 8575 PRINT B$;"A SMALL CAVERN WITH  ITS FLOOR COVERED IN STRAW AND  TWIGS. EXITS ";"N AND S." AND NOT O(VAL "20");"N,S AND D" AND O(VAL "20")
 8629 RETURN 
 8630 GO TO VAL "8535"
 8659 RETURN 
 8660 LET Z=VAL "8345": GO TO Z
 8669 RETURN 
 8670 GO TO S
 8724 RETURN 
 8725 PRINT F$;"NORTH OF A LARGE SWAMP FILLED CAVERN. EXIT E"
 8726 IF T(TU)=SE AND NOT Z(TU) THEN PRINT "YOUR TORCH IS BURNING BRIGHTER  THAN NORMAL."
 8729 RETURN 
 8730 GO SUB E: PRINT "A STRONG MARSHY SMELL DRIFTS"'"THROUGH FROM WEST.": RETURN 
 8735 LET Z$="HUNGRY": IF O(Y) THEN LET Z$="PLACID"
 8736 PRINT B$;"A SMALL CAVE WITH A  LARGE DEEP CRYSTAL CLEAR POOL   AGAINST THE EAST WALL. THE POOL IS FULL OF ";Z$;" LOOKING SHARKSEXIT W."
 8744 RETURN 
 8745 PRINT B$;"A SMALL CAVE WITH A  LARGE DEEP CRYSTAL CLEAR POOL   AGAINST THE WESTERN WALL. THE   POOL IS FULL OF PLACID LOOKING  SHARKS. EXIT E.": RETURN 
 8750 LET Z=VAL "8765": GO TO Z
 8760 LET Z=VAL "8745": GO TO Z
 8765 PRINT "PASSAGES LEAD S,E AND W FROM"'"HERE.": RETURN 
 8770 PRINT "FROM HERE A PASSAGE GOES WEST   AND SOME MARBLE STEPS LEAD DOWN."
 8779 RETURN 
 8780 PRINT B$;"A DARK STALE SMELLINGCRYPT. MOSAICS SHOWING DEVILS   AND DEMONS COVER THE WALLS AND  FLOOR. EXIT UP AND E.": RETURN 
 8785 PRINT B$;"THE SECOND CRYPT     CHAMBER ,THERE ARE TWO OPEN     SARCOPHAGI HERE. EXITS E AND W."
 8786 IF NOT NM AND M(TE) THEN LET X=TE: LET M$="MUMMY": GO TO MO
 8789 RETURN 
 8790 PRINT B$;"THE THIRD CRYPT"'"CHAMBER. THERE IS A LARGE OAK   COFFIN STANDING ON A BLACK"'"MARBLE DIAS HERE. EXIT W."
 8791 IF M(EL) THEN PRINT "A CLOAKED VAMPIRE SLOWLY RISES  FROM THE COFFIN.": LET O(VAL "18")=SGN PI: LET M$="VAMPIRE": LET X=EL: GO SUB MO: RETURN 
 8792 IF NM=SGN PI THEN LET O(VAL "18")=TU: PRINT "THERE IS A VAMPIRE HERE": RETURN 
 8910 RETURN 
 8915 LET Z=VAL "8735": GO TO VAL "8931"
 8920 PRINT B$;"A DEEP POOL OF PLACIDSHARKS, A NARROW SUBAQUA TUNNEL LEADS EAST FROM HERE."
 8921 IF NOT Z(TU) AND T(TU)<>INT PI THEN PRINT "YOUR TORCH IS EXTINGUISHED ON   ENTERING THE WATER.": LET T$(TU)=A$(A): LET T(TU)=INT PI
 8924 RETURN 
 8925 IF NOT Z(VAL "17") THEN LET Z=VAL "8920": PRINT "YOU CAN'T,YOUR ARMOUR WON'T PASSTHROUGH THE TUNNEL.": RETURN 
 8926 PRINT B$;"A LARGE DEEP POOL, ANUNDERWATER PASSAGE LEADS WEST   FROM HERE."
 8927 GO TO VAL "8921"
 8930 LET Z=VAL "8745"
 8931 PRINT "YOU LEAVE THE POOL."': GO TO Z
 9099 RETURN 
 9100 GO SUB Q: PRINT U$;" AND E.": RETURN 
 9150 GO SUB Q: PRINT U$;",E AND W.": RETURN 
 9155 GO SUB Q: PRINT U$;" AND W."
 9194 RETURN 
 9195 GO SUB Q: PRINT U$;",S AND E.": RETURN 
 9245 GO SUB Q: PRINT U$;",S,E AND W.": RETURN 
 9249 RETURN 
 9250 GO SUB Q: PRINT U$;",S AND W."
 9289 RETURN 
 9290 GO TO VAL "9195"
 9310 GO TO VAL "9245"
 9315 IF HP<=O THEN PRINT '"YOU HAVE BEEN KILLED BY THE FALL": RETURN 
 9316 GO SUB Q: PRINT "THERE IS A LARGE HOLE IN THE"'"ROOF HERE.A MESSAGE SCRAWLED ON THE WALL IN DRIED BLOOD READS :"''"'WELCOME TO THE ZALROG PIT,  YOUARE JUST IN TIME FOR LUNCH !'": RETURN 
 9340 GO TO VAL "9245"
 9345 GO TO VAL "9250"
 9384 RETURN 
 9385 GO TO VAL "9195"
 9435 GO TO VAL "9245"
 9440 GO TO VAL "9250"
 9479 RETURN 
 9480 GO TO VAL "9195"
 9530 GO SUB Q: PRINT "EXITS S,E AND W.": RETURN 
 9535 GO SUB Q: PRINT "EXITS S AND W."
 9574 RETURN 
 9575 GO SUB Q: PRINT "EXITS S AND E.": RETURN 
 9580 GO SUB Q: PRINT "EXITS S AND W."
 9814 RETURN 
 9975 PRINT B$;"A MAZE OF IDENTICAL  INTERCONNECTING LITTLE CAVES."'"BONES ARE LIBERALLY SCATTERED   ABOUT THE CAVE SYSTEM." AND (RND>VAL ".9" OR Z=VAL "9315"): RETURN 
 9980 PRINT B$;"A N/S PASSAGE.": RETURN 
 9985 PRINT B$;"A E/W PASSAGE.": RETURN 
 9992 REM  removed (LKDOS-only)
 9998 REM  removed (LKDOS-only)

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.