Minotaur

Developer(s): Kristian Boisvert
Date: 1986
Type: Program
Platform(s): TS 2068
Tags: Game

The Minotaur is a maze adventure seen in first-person 3D. You choose the size of the maze (18 to 26 corridors across, 13 to 19 deep) and a level from 3 to 5, see the map once, and then walk with N, S, E and W while a compass shows which way you are facing. Along the way you meet treasure, swords of strength, traps, guards, tarantulas, snakes, scorpions, phantoms, gnomes, unicorns with riddles, mirror rooms, wishing wells and the room of the gold cross, and you can blow up walls with dynamite and a detonator (D). Each exit found leads to a new maze and $100; the game is won only by beating the Minotaur as many times as the chosen level, after which he shows you the real exit. Press 1 at any time for your status.

Written by Kristian Boisvert for the first issue of Byte Power, August 1986, where the magazine calls it a graphic adventure with a loading time of 4 minutes 15 seconds.

Program Analysis

Loading

A short loader (MINOTAUR, 622 bytes) loads a 4,458-byte code block at 50000 and calls it, sets the AY sound chip playing a tone, then loads 152 bytes of user-defined graphics at 65368 (19 UDGs, \a to \s) and the main program. Unlike most Byte Power programs, the main game is ordinary BASIC, about 770 lines.

The maze

The maze is held in a string array m$(de,ac). Every other row is a solid wall line with two to four random gaps, the rows between are corridors, and extra wall blocks are dropped into the corridors. Objects and creatures are stored as UDG characters in the same array, each placed by a retry loop until it lands on an empty square. Line 9970 prints the whole array as a map, which a wishing well can also offer.

3D view and encounters

After each move the screen is cleared and the view is drawn with PLOT and DRAW: the subroutines at 1000, 1500, 2000, 2500, 3000 and 3500 draw an open or closed left wall, the far wall or opening, and an open or closed right wall, depending on the squares beside and ahead of the player. The subroutine at 4030 then checks the square for an object and branches to its routine, each of which draws the creature or item in block graphics. The Minotaur moves one square towards the player each turn and three guards patrol back and forth along their rows.

Mini-games

  • Unicorn: answer one of ten riddles held in DATA.
  • Phantom: guess a secret number from 1 to 5 in three tries.
  • Mirror room: choose the one open door in two tries, or fall into the Endless Hole, a scrolling shaft steered with keys 5 and 8.
  • Gold cross: guide a marker through a maze drawn in block graphics, using keys 1 to 8; touching red ends the attempt.

Notable Techniques

  • Music for the title and the death report played from DATA tables with multi-register SOUND statements on the AY chip.
  • Pseudo-3D corridors drawn with a handful of DRAW calls rather than stored screens.
  • The direction keys are combined into one expression, LET a=a+(c$="s" AND m$(a+1,b)<>"█")-(c$="n" AND …), which also does the wall test.
  • ATTR is used for collision detection in the gold-cross maze and the Endless Hole.

Potential Issues

  • The instructions and map routine list a bat (UDG \k) and the encounter routine at 8500 handles one, but no line places a bat in the maze, so bats never appear.
  • After a correct phantom guess (line 6800) the phantom is not removed from the square.
  • Line 164 has a stray NEXT m after the loop it belongs to has finished; it does no harm.

As with every Byte Power program, the copy instructions in the magazine say to POKE 23681,0 before loading; the program then stops after loading instead of starting, and the save line 9998 saves a personal backup.

Appears On

The first issue of Byte Power, a monthly tape magazine for the TS2068 created by Eric and Kristian Boisvert of Pickering, Ontario, in May 1986.

Related Articles

You are lost in a maze and you must find the exit. Sounds easy, but what if I told you that there is a dangerous monster in that maze, the MINOTAUR?

Image Gallery

Source Code

    1 POKE 23659,2: GO SUB 2505
    2 INK 7: PAPER 0: BORDER 0: GO TO 970
    3 LET ki=0: LET dyn=1: LET det=1: LET gc=0
    4 LET arg=100: LET for=arg
    6 LET a=2: LET b=a
    7 GO TO 285
    8 LET c=de-1: LET d=ac-2
    9 FOR f=-30 TO 30: BEEP .022,f: NEXT f: FOR f=30 TO -30 STEP -1: BEEP .022,f: NEXT f
   10 DIM e(3): DIM f(3): DIM g(3)
   13 FOR f=1 TO 3
   14 LET f(f)=INT (RND*(ac-3))+2: LET g(f)=1
   15 NEXT f
   16 LET e(1)=2: LET e(2)=INT (de/2)+(1 AND de=15 OR de=19): LET e(3)=de-1
   20 LET c$="e"
   30 DIM m$(de,ac)
   40 FOR m=1 TO de-2 STEP 2
   50 LET m$(m)="::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
   60 FOR n=1 TO 2+(1 AND ac>19 AND ac<=25)+(2 AND ac>25)
   70 LET m$(m,INT (RND*(ac-3))+2)=" "
   80 NEXT n
   90 LET m$(m+1,1)="::": LET m$(m+1,ac)="::"
  100 NEXT m
  110 LET m$(1)="::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
  130 LET m$(de)=m$(1)
  140 FOR m=4 TO de-3 STEP 2
  150 LET r=INT (RND*(ac-7))+4
  155 IF m$(m-1,r)=" " OR m$(m+1,r)=" " THEN GO TO 150
  160 LET m$(m,r)="::"
  161 NEXT m
  162 BORDER 0: PAPER 0: CLS 
  163 FOR x=1 TO de: PRINT INK 1;m$(x): NEXT x
  164 NEXT m: PRINT AT (de/2)-2,ac+2;"N";AT (de/2)-1,ac+1;"WrE";AT de/2,ac+2;"S"
  165 FOR f=1 TO 1+(1 AND ac>20)
  166 LET r=INT (RND*(ac-3))+2
  167 LET t=INT (RND*(de-3))+2
  168 IF m$(t,r)<>" " OR t=3 OR t=5 OR t=7 OR t=9 OR t=11 OR t=13 OR t=15 OR t=17 OR t=19 THEN GO TO 167
  169 LET m$(t,r)="m": PRINT AT t-1,r-1; INK 2;"m"
  170 NEXT f
  171 FOR m=4 TO de-3 STEP 4
  172 LET r=INT (RND*(ac-3))+2
  173 IF m$(m,r)<>" " OR m$(m-1,r)<>"::" OR m$(m+1,r)<>"::" OR m$(m-1,r-1)=" " OR m$(m-1,r+1)=" " OR m$(m+1,r-1)=" " OR m$(m+1,r+1)=" " THEN GO TO 172
  174 LET m$(m,r)="j": PRINT AT m-1,r-1; INK 1; PAPER 0; BRIGHT 1; INVERSE 1;"j"
  175 NEXT m
  176 LET r=INT (RND*(ac-3))+2
  177 LET t=INT (RND*(de-3))+2
  178 IF m$(t,r)<>" " OR t=3 OR t=5 OR t=7 OR t=9 OR t=11 OR t=13 OR t=15 OR t=17 OR t=19 THEN GO TO 177
  179 LET m$(t,r)="l": PRINT AT t-1,r-1; INK 2;"l"
  180 FOR m=2 TO de-1 STEP 2
  185 FOR f=1 TO 1+(1 AND ac>25)
  190 LET r=INT (RND*(ac-3))+2
  200 IF m$(m,r)<>" " THEN GO TO 190
  201 LET m$(m,r)="e": PRINT AT m-1,r-1; INK 5;"e": NEXT f
  202 LET r=INT (RND*(ac-3))+2
  203 IF m$(m,r)<>" " THEN GO TO 202
  204 LET m$(m,r)="p": PRINT AT m-1,r-1; INK 2;"p"
  205 LET r=INT (RND*(ac-3))+2
  206 IF m$(m,r)<>" " THEN GO TO 205
  208 LET m$(m,r)="f": PRINT AT m-1,r-1; INK 7;"f"
  211 LET r=INT (RND*(ac-3))+2
  212 IF m$(m,r)<>" " THEN GO TO 211
  213 LET m$(m,r)="a": PRINT AT m-1,r-1; INK 3;"a"
  215 LET r=INT (RND*(ac-3))+2
  216 IF m$(m,r)<>" " THEN GO TO 215
  217 NEXT m
  218 FOR f=1 TO 1+(1 AND ac>20)
  219 LET r=INT (RND*(ac-3))+2
  220 LET t=INT (RND*(de-3))+2
  221 IF m$(t,r)<>" " OR t=3 OR t=5 OR t=7 OR t=9 OR t=11 OR t=13 OR t=15 OR t=17 OR t=19 THEN GO TO 220
  222 LET m$(t,r)="o": PRINT AT t-1,r-1; INK 5;"o"
  223 NEXT f
  229 FOR m=8 TO de-1 STEP 2
  230 LET r=INT (RND*(ac-3))+2
  240 IF m$(m,r)<>" " THEN GO TO 230
  250 LET m$(m,r)="g": PRINT AT m-1,r-1; INK 6;"g": NEXT m
  254 FOR m=6 TO de-1 STEP 2
  255 LET r=INT (RND*(ac-1))+2
  256 IF m$(m,r)<>" " THEN GO TO 255
  257 LET m$(m,r)="h": PRINT AT m-1,r-1; INK 4;"h": NEXT m
  264 FOR m=2 TO de-1 STEP 6
  265 LET r=INT (RND*(ac-3))+2
  266 IF m$(m,r)<>" " THEN GO TO 265
  267 LET m$(m,r)="c": PRINT AT m-1,r-1; INK 7;"c": NEXT m
  268 LET m$(de-1,ac-1)="X": PRINT AT de-2,ac-2; BRIGHT 1; FLASH 1; INK 7; PAPER 1;"X"
  269 LET m$(de-1,ac)=" "
  270 IF RND>=.3 THEN GO TO 275
  271 LET r=INT (RND*(ac-3))+2
  272 LET t=INT (RND*(de-3))+2
  273 IF m$(t,r)<>" " OR t=3 OR t=5 OR t=7 OR t=9 OR t=11 OR t=13 OR t=15 OR t=17 OR t=19 THEN GO TO 272
  274 LET m$(t,r)="n": PRINT AT t-1,r-1; INK 6;"n"
  276 LET r=INT (RND*(ac-3))+2: LET t=INT (RND*(de-3))+2
  277 IF m$(t,r)<>" " OR t=3 OR t=5 OR t=7 OR t=9 OR t=11 OR t=13 OR t=15 OR t=17 OR t=19 THEN GO TO 276
  278 LET m$(t,r)="q": PRINT AT t-1,r-1; INK 7;"q"
  279 FOR f=4 TO de-5 STEP 4
  280 LET r=INT (RND*(ac-3))+2
  281 IF m$(f,r)<>" " THEN GO TO 280
  282 LET m$(f,r)="s": PRINT AT f-1,r-1; INK 5;"s"
  283 NEXT f
  284 GO TO 350
  285 PRINT AT 2,10; INK 6;"the Minotaur": PRINT AT 4,10;"INSTRUCTIONS";AT 7,0; INK 7;" i:Your position";TAB 21; INK 5;"e"; INK 7;":Treasure"
  290 PRINT INK 7;" f:Sword of strength";TAB 21; INK 6;"d"; INK 7;":Minotaur"
  291 PRINT INK 2;" k"; INK 7;":Bat";TAB 21; INK 4;"h"; INK 7;":Snake"
  292 PRINT INK 6;" b"; INK 7;":Guard";TAB 21; INK 6;"g"; INK 7;":Trap"
  293 PRINT INK 7;" c:Phantom";TAB 21; INK 3;"a"; INK 7;":Tarantula"
  294 PRINT TAB 1; BRIGHT 1; INK 1; PAPER 0; INVERSE 1;"j";: PRINT INK 7;":Mirror room";TAB 21; INK 2;"l"; INK 7;":Dynamite"
  295 PRINT INK 6;" n";: PRINT INK 7;":Gold cross";TAB 21; INK 2;"m"; INK 7;":Detonator"
  296 PRINT INK 5;" o";: PRINT INK 7;":Gnome";TAB 21; INK 2;"p"; INK 7;":Scorpion"
  297 PRINT INK 7;" q:Unicorn";TAB 21; BRIGHT 1; INK 7; PAPER 1;"X"; PAPER 0; BRIGHT 0;":Exit"
  298 PRINT INK 5;" s"; INK 7;":Wishing Well"
  299 PRINT AT 18,6;"Press any key to play"
  300 IF INKEY$="" THEN GO TO 300
  310 CLS : GO TO 8
  350 PRINT AT a-1,b-1;"i";AT c-1,d-1; INK 6;"d"
  365 FOR f=1 TO 3: PRINT AT e(f)-1,f(f)-1; INK 6;"b": NEXT f
  380 GO SUB 2505: GO SUB 2505
  393 CLS 
  395 GO TO 450
  400 LET s$=c$
  401 LET c$=INKEY$
  405 IF c$="1" THEN GO TO 3505
  410 IF c$="d" THEN GO TO 1060
  412 IF c$<>"e" AND c$<>"w" AND c$<>"s" AND c$<>"n" THEN GO TO 401
  420 LET a=a+(c$="s" AND m$(a+1,b)<>"::")-(c$="n" AND m$(a-1,b)<>"::")
  430 LET b=b+(c$="e" AND m$(a,b+1)<>"::")-(c$="w" AND m$(a,b-1)<>"::")
  451 PAPER 0: INK 7: CLS 
  452 IF c$="e" THEN PRINT AT 0,15;"E": PRINT AT 1,14;"NrS": PRINT AT 2,15;"W"
  460 IF c$="w" THEN PRINT AT 0,15;"W": PRINT AT 1,14;"SrN": PRINT AT 2,15;"E"
  470 IF c$="n" THEN PRINT AT 0,15;"N": PRINT AT 1,14;"WrE": PRINT AT 2,15;"S"
  480 IF c$="s" THEN PRINT AT 0,15;"S": PRINT AT 1,14;"ErW": PRINT AT 2,15;"N"
  500 IF c$="e" OR c$="w" THEN GO TO 640
  510 IF c$="n" AND m$(a,b-1)<>"::" THEN GO SUB 1000
  520 IF c$="s" AND m$(a,b+1)<>"::" THEN GO SUB 1000
  530 IF c$="n" AND m$(a,b-1)="::" THEN GO SUB 1500
  540 IF c$="s" AND m$(a,b+1)="::" THEN GO SUB 1500
  550 LET z1=b
  560 IF c$="n" THEN LET z=a-1
  570 IF c$="s" THEN LET z=a+1
  580 GO SUB 4000
  590 IF c$="n" AND m$(a,b+1)<>"::" THEN GO SUB 3000
  600 IF c$="s" AND m$(a,b-1)<>"::" THEN GO SUB 3000
  610 IF c$="n" AND m$(a,b+1)="::" THEN GO SUB 3500
  620 IF c$="s" AND m$(a,b-1)="::" THEN GO SUB 3500
  630 GO TO 760
  640 IF c$="e" AND m$(a-1,b)<>"::" THEN GO SUB 1000
  650 IF c$="w" AND m$(a+1,b)<>"::" THEN GO SUB 1000
  660 IF c$="e" AND m$(a-1,b)="::" THEN GO SUB 1500
  670 IF c$="w" AND m$(a+1,b)="::" THEN GO SUB 1500
  680 LET z=a
  690 IF c$="e" THEN LET z1=b+1
  700 IF c$="w" THEN LET z1=b-1
  710 GO SUB 4000
  720 IF c$="e" AND m$(a+1,b)<>"::" THEN GO SUB 3000
  730 IF c$="w" AND m$(a-1,b)<>"::" THEN GO SUB 3000
  740 IF c$="e" AND m$(a+1,b)="::" THEN GO SUB 3500
  750 IF c$="w" AND m$(a-1,b)="::" THEN GO SUB 3500
  760 FOR f=1 TO 2: SOUND 0,0;1,6;8,15;7,62: PAUSE 1: SOUND 8,0: FOR p=1 TO 10: NEXT p: NEXT f
  765 GO SUB 4030
  770 IF c<a AND m$(c+1,d)<>"::" THEN LET c=c+1
  780 IF c>a AND m$(c-1,d)<>"::" THEN LET c=c-1
  790 IF d>b AND m$(c,d-1)<>"::" THEN LET d=d-1
  800 IF d<b AND m$(c,d+1)<>"::" THEN LET d=d+1
  801 FOR f=1 TO 3: IF m$(e(f),f(f)+g(f))="::" OR f(f)+g(f)>=ac THEN LET g(f)=-g(f)
  802 LET f(f)=f(f)+g(f): NEXT f
  810 FOR f=0 TO lon: NEXT f
  821 GO SUB 9940
  824 PRINT AT 21,3;"Wich direction? (N-S-E-W)": GO TO 400
  825 RESTORE 825: DATA 6,136,1,7,196,1,5,209,2,7,196,3,6,235,1,6,136,1,7,196,1,5,209,2,7,196,3,0,0,1,6,136,2,4,228,2,5,47,2,5,209,2,6,136,1,7,196,1,5,209,2,7,196,10
  826 DATA 0,0,0
  827 READ b,a,c
  828 IF c=0 THEN RETURN 
  829 SOUND 0,a;1,b;8,15;7,62
  830 PAUSE 10*c: SOUND 8,0
  831 GO TO 827
  900 FOR p=1 TO 100: NEXT p: GO SUB 9940: PRINT AT 20,4;"You killed the MINOTAUR,": FOR p=1 TO 150: NEXT p: PRINT AT 20,0;"but before dying he showed you             the EXIT."
  910 FOR p=1 TO 300: NEXT p: CLS 
  920 PRINT AT 8,7;"You may now go...";AT 10,9;"you are free.";AT 12,6;"You accumulated ";arg;"$";AT 13,6;"and ";for;" of strength";AT 14,6;+("also "+STR$ gc+" gold cross"+("es" AND gc>1) AND gc>0)
  930 PRINT AT 21,10;"PLAY AGAIN?"
  940 IF INKEY$="y" THEN RUN 2
  950 IF INKEY$<>"n" THEN GO TO 940
  960 CLS : STOP 
  970 CLS : PRINT AT 2,10; INK 6;"the Minotaur"; INK 7;AT 4,12;"SETTING";AT 7,3;"corridors across? (18-26)": INPUT "How many? ";ac: IF ac<18 OR ac>26 THEN GO TO 970
  971 PRINT AT 9,4;"corridors deep? (13-19)": INPUT "How many? ";de: IF de<13 OR de>19 THEN GO TO 971
  972 IF de/2=INT (de/2) THEN LET de=de+1
  973 PRINT AT 11,10;"Level? (3-5)": INPUT "Level? ";le: IF le<3 OR le>5 THEN GO TO 973
  979 GO TO 3
 1000 PLOT 0,10: DRAW 40,40: DRAW 0,70: DRAW 15,-15: DRAW 0,-40: DRAW 20,20: DRAW 0,30: DRAW -60,60: RETURN 
 1005 LET m$(a,b)=" ": LET dyn=dyn+1
 1010 PRINT AT 9,14;"'.";AT 10,15;"'."
 1015 INK 2
 1020 FOR f=11 TO 15: PRINT AT f,14;" :::::": NEXT f
 1030 INK 7
 1040 PRINT AT 20,0;"You have found some dynamite!..."
 1050 GO TO 6560
 1060 GO SUB 9940
 1061 IF dyn=0 THEN PRINT AT 20,0;"You don't have any dynamite!!!": FOR p=1 TO 150: NEXT p: LET c$=s$: GO SUB 9940: GO TO 824
 1062 IF det=0 THEN PRINT AT 20,0;"You don't have any detonator!!!": FOR p=1 TO 150: LET c$=s$: NEXT p: GO SUB 9940: GO TO 824
 1070 PRINT AT 20,1;"Dynamite wich wall? (W-E-S-N)"
 1080 LET s$=INKEY$
 1090 IF s$<>"s" AND s$<>"n" AND s$<>"e" AND s$<>"w" THEN GO TO 1080
 1095 IF s$="e" AND b+1>ac-2 THEN GO TO 1200
 1096 IF s$="w" AND b-1<2 THEN GO TO 1200
 1097 IF s$="n" AND a-1<2 THEN GO TO 1200
 1098 IF s$="s" AND a+1>de-1 THEN GO TO 1200
 1100 IF s$="e" THEN LET q=a: LET w=b+1
 1110 IF s$="w" THEN LET q=a: LET w=b-1
 1120 IF s$="n" THEN LET q=a-1: LET w=b
 1130 IF s$="s" THEN LET q=a+1: LET w=b
 1131 IF s$="e" THEN LET q$="EAST"
 1132 IF s$="w" THEN LET q$="WEST"
 1133 IF s$="n" THEN LET q$="NORTH"
 1134 IF s$="s" THEN LET q$="SOUTH"
 1140 LET m$(q,w)=" "
 1145 GO SUB 9940
 1150 PRINT AT 20,8-LEN q$/2;q$;" wall blew up"
 1155 LET dyn=dyn-1: LET det=0
 1160 FOR p=1 TO 100: NEXT p
 1170 LET c$=s$
 1180 GO TO 450
 1200 GO SUB 9940: PRINT AT 20,4;"You CAN'T blow that wall!";AT 21,0;"It's the OUTER WALL of the maze!"
 1210 FOR p=1 TO 200: NEXT p
 1215 GO SUB 9940
 1220 GO TO 824
 1500 PLOT 0,10: DRAW 75,75: DRAW 0,30: DRAW -60,60: RETURN 
 1600 LET m$(a,b)=" "
 1601 INK 7: PRINT AT 8,11;".::::::::::::::::::."
 1605 PRINT AT 9,10;".::::::::::::::::::::::."
 1610 PRINT AT 10,10;"::::::::::::::::::::::::"
 1620 INK 3: PRINT AT 11,11;" :: ";AT 11,19;" :: "
 1621 PRINT AT 12,11;" :: ";AT 12,19;" :: "
 1622 PRINT AT 13,11;" :: ";AT 13,19;" :: "
 1623 INK 1: PRINT AT 14,9;" :::::::::::::::::::::::::: "
 1624 PRINT AT 15,9;" :::::::::::::::::::::::::: "
 1625 PRINT AT 16,9;" :::::::::::::::::::::::::: "
 1626 PRINT AT 17,9;" :::::::::::::::::::::::::: "
 1627 PRINT AT 18,9;" :::::::::::::::::::::::::: "
 1630 INK 7
 1635 PRINT AT 20,0;"        A wishing well!!"
 1640 FOR p=1 TO 150: NEXT p
 1645 CLS : PRINT ''" Do you wish to:"
 1650 PRINT ''"1) have an extra 50 of strength?"
 1651 PRINT '"2) have an extra 50 dollars?"
 1655 PRINT '"3) have some dynamite?"
 1660 PRINT '"4) have a detonator?"
 1665 PRINT '"5) see the plan of the maze?"
 1670 PRINT ''"enter choice"
 1671 LET y$=INKEY$
 1675 IF y$<"1" OR y$>"5" THEN GO TO 1671
 1680 IF y$="1" THEN LET for=for+50: GO TO 1699
 1681 IF y$="2" THEN LET arg=arg+50: GO TO 1699
 1685 IF y$="3" THEN LET dyn=dyn+1: GO TO 1699
 1686 IF y$="4" THEN LET det=1: GO TO 1699
 1687 IF y$="5" THEN GO TO 9970
 1699 GO TO 440
 1700 LET a$="by a unicorn"
 1705 PRINT AT 5,8;". "
 1706 PRINT AT 6,8;"':. "
 1707 PRINT AT 7,9;"':. "
 1708 PRINT AT 8,10;"':. "
 1710 PRINT AT 9,10;"..::.."
 1711 PRINT AT 10,9;".:::'::::."
 1712 PRINT AT 11,7;".::::::::::::::."
 1713 PRINT AT 12,7;"..:::::::::::::::.      ........"
 1714 PRINT AT 13,7;"   ':::::::::::::::::::::::::::::::::"
 1715 PRINT AT 14,7;"    '::::::::::::::::::::::::::::::'"
 1716 PRINT AT 15,7;"     :::::::'.::::::::::::.'::::::: "
 1717 PRINT AT 16,7;"     ::::::'.::::::::::::::.':::::: "
 1718 PRINT AT 17,7;"     '::::'  ''''''''''''  '::::' "
 1719 PRINT AT 18,7;"     ::::          ::::"
 1720 PRINT AT 19,7;"     :::           ::: "
 1730 PRINT AT 20,0;"OHo!...A unicorn.Find the answerto the riddle or you will die..."
 1740 FOR p=1 TO 200: NEXT p: GO SUB 9940
 1745 RESTORE 1700
 1750 LET riddle=INT (RND*10)+1
 1760 FOR f=1 TO riddle: READ r$,i$: NEXT f
 1770 CLS : PRINT AT 11-INT (((LEN r$)/32)/2),0;r$
 1778 INPUT "your answer? :"; LINE o$
 1780 IF o$=i$ THEN GO TO 1800
 1790 GO TO 6665
 1800 GO SUB 9940: PRINT AT 20,0;"congratulations...You have the  right answer!"
 1810 FOR p=1 TO 150: NEXT p: LET c$=s$: LET m$(a,b)=" ": GO TO 450
 1820 DATA " What has roots as nobody sees,      Is taller than trees              Up, up it goes,               And yet never grows?","mountain"
 1830 DATA "      Thirty white horses                On a red hill,                First they champ,                Then they stamp,             Then they stand still.","teeth"
 1840 DATA "      Voiceless it cries,              Wingless flutters,               Toothless bites,               Mouthless mutters.","wind"
 1850 DATA "     An eye in a blue face        Saw an eye in a green face.    'That eye is like to this eye'       Said the first eye,              'But in low place,             Not in high place.'","sun"
 1860 DATA "      It cannot be seen,               Cannot be felt,                 Cannot be heard,                Cannot be smelt.              It lies behind stars              And under hills,           And empty holes it fills.     It comes first and follows after   Ends life, kills laughter.","dark"
 1870 DATA "     A box without hinges,               Key or lid.                 Yet golden treasure                Inside is hid,","egg"
 1880 DATA "     Alive without breath,             As cold as death;         Never thirsty, ever drinking,    All in mail never clinking.","fish"
 1890 DATA " This thing all things devours:  Birds, beasts, trees, flowers;     Gnaws iron, bites steel;      Grinds hard stones to meal;       Slays king, ruins town,       And beats high mountain down","time"
 1900 DATA "IT has four legs in the morning,          Two at noon               And three in the evening.","man"
 1910 DATA "       It has four legs,                    One foot                     And one head.","bed"
 1999 STOP 
 2000 PLOT 75,85: DRAW 30,0: DRAW 0,20: DRAW 44,0: DRAW 0,-20: DRAW 31,0: DRAW 0,30: DRAW -105,0: RETURN 
 2005 LET m$(a,b)=" ": LET det=det+1: IF det>1 THEN LET det=1
 2010 INK 5: PRINT AT 10,13;"''''::''''"
 2015 PRINT AT 11,15;"::"
 2020 INK 2
 2025 FOR f=12 TO 15: PRINT AT f,13;" :::::::: ": NEXT f
 2040 PRINT AT 16,13;"''''''''''"
 2050 INK 7: PRINT AT 20,1;"You have found a detonator!..."
 2060 GO TO 6560
 2500 PLOT 75,85: DRAW 105,0: DRAW 0,30: DRAW -105,0: RETURN 
 2510 RESTORE 2510
 2515 DATA 46,2,4,75,1,8,116,1,4,75,1,4,162,1,8,46,2,4,46,2,4,23,1,8,57,1,4,23,1,4,74,1,10,0,0,2,162,1,4,248,0,4,248,0,4,248,0,4,248,0,4
 2516 DATA 23,1,8,75,1,4,23,1,4,23,1,4,57,1,2,75,1,2,57,1,4,23,1,4,75,1,12,162,1,4,248,0,4,248,0,4,209,0,4,248,0,4,23,1,8,75,1,4,23,1,4,23,1,4,57,1,2,75,1,2,57,1,4,116,1,4,162,1,12
 2517 DATA 0,0,0
 2520 READ a1,b1,c1
 2525 IF c1=0 THEN GO TO 2550
 2526 IF a1=0 THEN PAUSE c1*2.2: GO TO 2520
 2530 SOUND 11,70;10,8;9,8;8,16;7,56;12,20;13,200;0,a1;1,b1;2,a1+1;3,b1;4,a1+2;5,b1: PAUSE c1*2: SOUND 9,0: GO TO 2520
 2550 SOUND 10,0;9,0;8,0;13,0: RETURN 
 2600 LET a$="by a scorpion": LET b$="A scorpion"
 2601 INK 2
 2602 PRINT AT 8,13;".::::."
 2605 PRINT AT 9,13;"': :::::."
 2610 PRINT AT 10,16;"'::::."
 2615 PRINT AT 11,15;" .:::::'"
 2620 PRINT AT 12,14;".::::::'"
 2625 PRINT AT 13,13;" :::::::::"
 2630 PRINT AT 14,13;"::::::::::: "
 2635 PRINT AT 15,13;"::::::::::: "
 2640 PRINT AT 16,13;"::::::::::: "
 2645 PRINT AT 17,13;" ':::::::'"
 2646 PRINT AT 18,14;" ':::::'"
 2650 PRINT AT 17,19;".::::."
 2655 PRINT AT 18,18;"'::....."
 2660 PRINT AT 19,19;" '''' "
 2665 PRINT AT 14,18;".''.";AT 14,11;".''."
 2668 PRINT AT 16,18;":.''. ";AT 17,13;".'"
 2669 PRINT AT 18,13;"'."
 2670 PRINT AT 16,11;".''."
 2675 PRINT AT 17,10;".'"
 2680 PRINT AT 15,10;".'";AT 15,20;"'."
 2685 PRINT AT 17,15;"'::':::."
 2690 GO SUB 6500: RETURN 
 3000 PLOT 255,10: DRAW -40,40: DRAW 0,70: DRAW -15,-15: DRAW 0,-40: DRAW -20,20: DRAW 0,30: DRAW 60,60: RETURN 
 3005 LET m$(a,b)=" "
 3006 INK 6
 3010 PRINT AT 14,12;".::::::::::::."
 3015 PRINT AT 15,11;".::::::::::::::::."
 3020 PRINT AT 16,10;".::::::::::::::::::::."
 3021 PRINT AT 17,9;".::::::::::::::::::::::::."
 3025 PRINT AT 15,14;" '''' "
 3030 PRINT AT 16,14;" :::: "
 3035 PRINT AT 17,14;" .... "
 3040 INK 7
 3050 PRINT AT 20,0;"This is the entrance to the room";AT 21,5;"of the GOLD CROSS..."
 3055 FOR p=1 TO 150: NEXT p: GO SUB 9940
 3060 PRINT AT 20,2;"Get ready to take over the";AT 21,7;"challenge!!!..."
 3065 FOR p=1 TO 150: NEXT p: CLS 
 3066 INK 2
 3070 PRINT "'.'.   .'.'     . ........ .      . .......... ."
 3071 PRINT " '.'. .'.'     .'.'    '.'.    .'.'     '.'."
 3072 PRINT "  : : : :      : : .'.''.'. '.'.  .'.' .'.''.'.  : :"
 3073 PRINT "  : : '.'.    .'.' : :  : :  : :  .'.' .'.' : :  : :"
 3074 PRINT "  '.'. '.'.  .'.' .'.' .'.' .'.' .'.' .'.' .'.' .'.'"
 3075 PRINT "   '.'. '.'..'.' .'.' .'.' .'.' .'.' .'.' .'.' .'.'"
 3076 PRINT "    '.'.    .'.' .'.' .'.'  '.'. '.'. : :  : :"
 3077 PRINT "     ' '''''''' ' .'.' .'.'   .'.' .'.' : :  : :"
 3078 PRINT "            : :  : :    : :  : : .'.' .'.'"
 3079 PRINT "  . .................'.' .'.'    : :  : : : :  : :"
 3080 PRINT " .'.'          .'.'    .'.' .'.' : :  : :"
 3081 PRINT ".'.' .'.''''''''''''''''' '     '.'. '.'. '.'. '.'."
 3082 PRINT ": :  : :        . ........ .  '.'. '.'. '.'. '.'."
 3083 PRINT "'.'. '.'.      .'.'    '.'.  '.'. '.'. : :  : : "
 3084 PRINT " '.'. '.'.    .'.' .'.''.'. '.'....'.' .'.' : :  : : "
 3085 PRINT "  '.'. '.'......'.' .'.'  '.'.     .'.' .'.' .'.'"
 3086 PRINT "   '.'.      .'.'    ' '''''''''' ' .'.' .'.'"
 3087 PRINT "    ' '''''''''''' '            .'.' .'.'"
 3088 PRINT "           .'.''''''''''''''''''''''' ' .'.'"
 3089 PRINT "           : : "; INK 7;"  "; INK 6;"n"; INK 7;"          "; INK 2;": : "
 3090 PRINT "           '.'..........................'.'"
 3095 INK 7
 3100 DATA VAL "1",VAL "3",VAL "1",VAL "1",VAL "13",VAL "4",VAL "1",VAL "25",VAL "5",VAL "2",VAL "3",VAL "1",VAL "2",VAL "12",VAL "1",VAL "2",VAL "17",VAL "1",VAL "2",VAL "24",VAL "1",VAL "2",VAL "29",VAL "1",VAL "3",VAL "3",VAL "1",VAL "3",VAL "12",VAL "1",VAL "3",VAL "18",VAL "1",VAL "3",VAL "24",VAL "1",VAL "3",VAL "29",VAL "1",VAL "4",VAL "4",VAL "1",VAL "4",VAL "11",VAL "1",VAL "4",VAL "17",VAL "1",VAL "4",VAL "23",VAL "1",VAL "4",VAL "29",VAL "1",VAL "5",VAL "5",VAL "1",VAL "5",VAL "10",VAL "1",VAL "5",VAL "16",VAL "1",VAL "5",VAL "22",VAL "1",VAL "5",VAL "28",VAL "1",VAL "6",VAL "6",VAL "4",VAL "6",VAL "15",VAL "1",VAL "6",VAL "22",VAL "1",6,27,1,7,14,1,7,22,1,7,27,1,8,13,1,8,21,1,8,27,1
 3110 DATA VAL "9",VAL "13",VAL "1",VAL "9",VAL "21",VAL "1",VAL "9",VAL "26",VAL "1",VAL "10",VAL "3",VAL "10",VAL "10",VAL "21",VAL "1",VAL "10",VAL "26",VAL "1",VAL "11",VAL "2",VAL "1",VAL "11",VAL "21",VAL "1",VAL "11",VAL "27",VAL "1",VAL "12",VAL "2",VAL "1",VAL "12",VAL "22",VAL "1",VAL "12",VAL "28",VAL "1",VAL "13",VAL "2",VAL "1",VAL "13",VAL "13",VAL "4",VAL "13",VAL "23",VAL "1",VAL "13",VAL "29",VAL "1",VAL "14",VAL "3",VAL "1",VAL "14",VAL "12",VAL "1",VAL "14",VAL "17",VAL "1",VAL "14",VAL "23",VAL "1",VAL "14",VAL "29",VAL "1",VAL "15",VAL "4",VAL "1",VAL "15",VAL "11",VAL "1",VAL "15",VAL "18",VAL "5",VAL "15",VAL "28",VAL "1",VAL "16",VAL "5",VAL "6",16,27,1,17,26,1,18,25,1
 3115 DATA VAL "0",VAL "0",VAL "0"
 3116 LET o$="          "
 3120 RESTORE VAL "3100"
 3130 READ o,p,q
 3140 IF o=0 THEN GO TO 3170
 3150 PRINT AT o,p; INK 7;o$(1 TO q)
 3160 GO TO 3130
 3170 LET qw=0: LET wq=3
 3180 PRINT AT qw,wq; INK 5;"i"
 3190 LET qw1=qw: LET wq1=wq
 3200 IF INKEY$="1" AND qw-1>0 THEN LET qw=qw-1: LET wq=wq+1
 3205 IF INKEY$="2" AND qw-1>0 THEN LET qw=qw-1: LET wq=wq-1
 3210 IF INKEY$="3" THEN LET qw=qw+1: LET wq=wq-1
 3215 IF INKEY$="4" THEN LET qw=qw+1: LET wq=wq+1
 3220 LET qw=qw+(INKEY$="6")-(INKEY$="7")
 3225 LET wq=wq+(INKEY$="8")-(INKEY$="5")
 3230 IF qw=qw1 AND wq1=wq THEN GO TO 3190
 3235 PRINT AT qw1,wq1;" "
 3240 LET we=ATTR (qw,wq)
 3250 PRINT AT qw,wq; INK 5;"i"
 3260 IF we<>2 THEN GO TO 3300
 3270 PRINT AT 21,0;"OOPS!...Better luck next time!"
 3280 FOR p=1 TO 50: NEXT p
 3290 LET c$=s$: GO TO 450
 3300 IF we=7 THEN GO TO 3190
 3310 PRINT AT 21,7;"HEY!...You did it!": FOR p=1 TO 150: NEXT p: PRINT AT 21,0;"                                ";AT 21,5;"Now the cross is yours!"
 3320 LET gc=gc+1
 3330 FOR p=1 TO 100: NEXT p: LET c$=s$: GO TO 450
 3500 PLOT 255,10: DRAW -75,75: DRAW 0,30: DRAW 60,60: RETURN 
 3505 CLS 
 3506 PRINT AT 4,6;":'''''''''''''''''''''''''''''''''''''':";AT 5,6;":       STATUS       :";AT 6,6;":......................................:"
 3507 FOR f=7 TO 17: PRINT AT f,6;": ";AT f,25;" :": NEXT f
 3508 PRINT "      :......................................:"
 3510 PRINT AT 8,8;"You have ";arg;"$";AT 10,8;for;" of strength";AT 12,8;dyn;" dynamite"+("s" AND dyn>1);AT 14,8;det;" detonator";AT 16,8;gc;" gold cross"+("es" AND gc>1)
 3520 PRINT AT 20,3;"PRESS ANY KEY TO CONTINUE"
 3530 IF INKEY$="" THEN GO TO 3530
 3540 CLS : LET c$=s$: GO TO 450
 3550 PRINT AT 7,15;"::";AT 8,14; INK 2;" :::: ";AT 9,13; INK 2;" .::::::. "
 3555 PRINT AT 10,13;" ."; PAPER 7; INK 0;"o o"; INK 7; PAPER 0;". "
 3560 PRINT AT 11,13; INK 0; PAPER 7;"  -  "
 3565 PRINT AT 12,13; INK 0; PAPER 7;":. - .:"
 3570 INK 2: PRINT AT 13,11;".::::::::::::::::."
 3575 PRINT AT 14,10;".::'::::::::::::::'::."
 3580 PRINT AT 15,9;".::' :::::::::::::: '::."
 3585 PRINT AT 16,9;"::  ::::::::::::::  ::"
 3590 PRINT AT 17,9; INK 6;"::"; INK 2;"  ::::::::::::::  "; INK 6;"::"
 3595 INK 1: PRINT AT 18,12;"::::::''::::::"
 3600 PRINT AT 19,12;":::::: ::::::"
 3610 INK 7
 3611 LET j=INT (RND*4)+1
 3613 IF j=2 AND dyn<>0 THEN LET w$="He wants some dynamite": LET dyn=dyn-1: GO TO 3620
 3614 IF j=3 AND det<>0 THEN LET w$="He wants a detonator": LET det=0: GO TO 3620
 3615 IF j=4 AND gc<>0 THEN LET w$="He wants a gold cross": LET gc=gc-1: GO TO 3620
 3616 LET w$="Nothing interested him"
 3620 PRINT AT 20,0;"A gnome...";w$
 3630 GO TO 6560
 4000 IF m$(z,z1)="::" THEN GO SUB 2500
 4010 IF m$(z,z1)<>"::" THEN GO SUB 2000
 4020 RETURN 
 4030 IF m$(a,b)="X" THEN GO TO 9000
 4031 IF m$(a,b)="j" THEN GO TO 7300
 4032 IF m$(a,b)="c" THEN GO TO 6600
 4033 IF m$(a,b)="a" THEN GO TO 4500
 4034 IF m$(a,b)="e" THEN GO TO 4100
 4035 IF m$(a,b)="k" THEN GO TO 8500
 4036 IF m$(a,b)="g" THEN GO TO 5000
 4037 IF m$(a,b)="h" THEN GO TO 7000
 4038 IF m$(a,b)="f" THEN GO TO 8000
 4039 IF m$(a,b)="l" THEN GO TO 1005
 4040 IF m$(a,b)="m" THEN GO TO 2005
 4041 IF m$(a,b)="n" THEN GO TO 3005
 4042 IF m$(a,b)="o" THEN GO TO 3550
 4043 IF m$(a,b)="p" THEN GO TO 2600
 4044 IF m$(a,b)="q" THEN GO TO 1700
 4045 IF m$(a,b)="s" THEN GO TO 1600
 4049 IF a=c AND b=d THEN GO TO 6000
 4050 FOR f=1 TO 3: IF a=e(f) AND b=f(f) THEN GO TO 7500
 4060 NEXT f
 4080 LET lon=0
 4090 RETURN 
 4100 INK 5: PRINT AT 11,11;".''':''''''''''''."
 4110 PRINT AT 12,10; " :   :      : "
 4120 PRINT AT 13,10; " :.....:............: "
 4130 PRINT AT 14,10; " :   :      : "
 4140 PRINT AT 15,10; " :   :      : "
 4150 PRINT AT 16,10; " :.....:............: "
 4155 INK 7
 4160 LET e=INT (RND*100)+1
 4170 LET arg=arg+e
 4180 PRINT AT 20,6;"A treasure...+";e;"$";AT 21,6;"You now have ";arg;"$"
 4190 LET m$(a,b)=" "
 4200 GO TO 6560
 4500 LET a$="by a tarantula"
 4501 LET b$="A tarantula"
 4505 INK 3
 4510 PRINT AT 10,11;"..::::::::::::::.."
 4520 PRINT AT 11,10;".::::::::::::::::::::."
 4530 PRINT AT 12,9;":::::::::''....'':::::::::"
 4550 PRINT AT 13,9;"::::::'..::::::::..'::::::"
 4560 PRINT AT 14,9;"'::::: : .::::::. : :::::'"
 4570 PRINT AT 15,10;"':::.'::':'':'::'.:::'"
 4580 PRINT AT 16,11;"'::: : . . : :::'"
 4590 PRINT AT 17,13;" '::::::' "
 4600 PRINT AT 9,6;".::.";AT 9,23;".::."
 4610 PRINT AT 10,5;".::''::.";AT 10,22;".::''::."
 4620 PRINT AT 11,4;".::'  '::.";AT 11,21;".::'  '::."
 4630 FOR f=12 TO 14: PRINT AT f,4;"::";AT f,26;"::": NEXT f
 4660 PRINT AT 15,3;".::'";AT 15,26;"'::."
 4670 PRINT AT 16,2;".::'";AT 16,27;"'::."
 4680 PRINT AT 16,9;".::'";AT 16,20;"'::."
 4690 PRINT AT 17,8;".::'";AT 17,21;"'::."
 4700 PRINT AT 18,8;"'::.";AT 18,21;".::'"
 4720 PRINT AT 19,9;"'::.";AT 19,20;".::'"
 4721 PRINT AT 15,5;"::  ':::::";AT 15,20;":::::'  ::"
 4722 PRINT AT 14,5;".::''::.";AT 14,22;".::''::."
 4723 PRINT AT 13,6;".::.";AT 13,23;".::."
 4724 PRINT AT 16,5;"::";AT 16,25;"::"
 4725 PRINT AT 17,4;".::'";AT 17,25;"'::."
 4726 PRINT AT 18,3;".::'";AT 18,26;"'::."
 4730 GO SUB 6500
 4790 RETURN 
 5000 LET a$="in a trap"
 5001 INK 6
 5005 PRINT AT 14,11;".::::::::::::::::."
 5010 PRINT AT 15,10;".::::::::::::::::::::."
 5020 PRINT AT 16,9;".::::::::::::::::::::::::."
 5030 PRINT AT 17,8;".::::::::::::::::::::::::::::."
 5040 PRINT AT 18,7;".::::::::::::::::::::::::::::::::."
 5045 LET e=INT (RND*50)+1: LET arg=arg-e
 5050 IF arg<0 THEN LET arg=0
 5055 INK 7
 5060 PRINT AT 20,3;"You have stepped in a trap!";AT 21,6;"You now have ";arg;"$"
 5080 IF arg=0 THEN GO TO 9120
 5090 GO TO 6560
 6000 LET a$="by the MINOTAUR"
 6001 INK 6
 6002 LET ki=ki+1
 6005 PRINT AT 4,13;":.   .:"
 6010 PRINT AT 5,13;" ::   :: "
 6020 PRINT AT 6,11;":. .::::::::. .:"
 6030 PRINT AT 7,11;"::::::::::::::::::"
 6040 PRINT AT 8,11;" ''::: .::. :::'' "
 6050 PRINT AT 9,13;":::'::':::"
 6060 PRINT AT 10,12;" :::::::::::: "
 6070 PRINT AT 11,12;" ':: ' ' ::' "
 6080 PRINT AT 12,13;" ':.::.:' "
 6090 PRINT AT 13,10;".::::::::::::::::::::."
 6100 PRINT AT 14,10;"::::::::::::::::::::::"
 6110 PRINT AT 15,10;"::::::::::::::::::::::"
 6120 PRINT AT 16,10;" :::::::::::::::::::: "
 6130 PRINT AT 17,11;"::::::::::::::::::"
 6140 PRINT AT 18,11;" :::::::::::::::: "
 6150 PRINT AT 18,11;" :::::::::::::::: "
 6210 PRINT AT 7,3;". . . . ";AT 7,24;" . . . ."
 6220 PRINT AT 8,3;": : : : ";AT 8,24;" : : : :"
 6230 PRINT AT 9,3;"'::::::..'";AT 9,23;"'..::::::'"
 6240 PRINT AT 10,4;"'::::'";AT 10,24;"'::::'"
 6250 PRINT AT 11,4;" :::: ";AT 11,24;" :::: "
 6260 PRINT AT 12,4;" :::: ";AT 12,24;" :::: "
 6270 PRINT AT 13,4;" '::::..:::.";AT 13,21;".:::..::::' "
 6280 PRINT AT 14,5;" '::::::::";AT 14,21;"::::::::' "
 6290 LET r=INT (RND*200)+50: LET for=for-r
 6300 IF for<0 THEN LET for=0
 6305 INK 7
 6307 IF ki=le THEN GO TO 6310
 6308 PRINT AT 20,2;"The MINOTAUR...You need ";r;AT 21,2;"of you strength to beat him"
 6309 GO TO 6315
 6310 PRINT AT 20,2;"The MINOTAUR...You need ";r;AT 21,2;"of you strength to kill him"
 6315 FOR p=1 TO 150: NEXT p: GO SUB 9940: PRINT AT 20,2;"you now have ";for;" of strength": FOR p=1 TO 100: NEXT p
 6320 IF for=0 THEN GO TO 9120
 6325 IF ki=le THEN GO TO 900
 6330 LET c=de-1: LET d=ac-2
 6340 GO TO 6560
 6500 INK 7: LET r=INT (RND*50)+1: LET for=for-r
 6510 IF for<0 THEN LET for=0
 6520 PRINT AT 20,8-LEN b$/2;b$;"...You need ";r;AT 21,4;"of strength to kill it": FOR p=1 TO 150: NEXT p: GO SUB 9940: PRINT AT 20,2;"You now have ";for;" of strength"
 6530 IF for=0 THEN GO TO 9120
 6540 LET m$(a,b)=" "
 6560 LET lon=300
 6570 RETURN 
 6600 LET a$="by a phantom"
 6608 PRINT AT 6,13;" .::::::. "
 6609 PRINT AT 7,13;":::'::':::"
 6610 PRINT AT 8,13;":::.::.:::"
 6611 PRINT AT 9,13;"':::-:::'"
 6612 PRINT AT 10,12;".::::::::::::."
 6613 PRINT AT 11,12;"'::::::::::::::."
 6614 PRINT AT 12,12;" ':::::::::::::::."
 6615 PRINT AT 13,12;" .::::::::::::::::"
 6616 PRINT AT 14,12;".::::::::::::::::'"
 6617 PRINT AT 15,11;" ::::::::::::::::'"
 6618 PRINT AT 16,11;" ::::::::::::::'"
 6619 PRINT AT 17,12;"'::::::::::'"
 6620 PRINT AT 18,13;"'::::::'"
 6621 PRINT AT 19,14;"'::'"
 6630 LET qu=INT (RND*5)+1
 6636 PRINT AT 20,9;"A phantom...": FOR p=1 TO 70: NEXT p
 6640 FOR g=1 TO 3
 6641 GO SUB 9940: PRINT AT 20,6;"You have ";4-g;" chance";+("s" AND g<3);AT 21,1;"to find the secret number..."
 6642 FOR p=1 TO 100: NEXT p
 6643 GO SUB 9940
 6644 PRINT AT 20,2;"Your number? (between 1-5)"
 6645 LET q$=INKEY$
 6646 IF q$<"1" OR q$>"5" THEN GO TO 6645
 6655 IF (CODE q$)-48=qu THEN GO TO 6800
 6660 NEXT g
 6663 GO SUB 9940
 6665 PRINT AT 20,8;"You are dead..."
 6670 GO TO 9120
 6700 STOP 
 6800 GO SUB 9940
 6810 PRINT AT 20,0;"Congratulations...You have foundthe secret number.You are free."
 6820 GO TO 6560
 7000 LET a$="by a snake": LET b$="A snake"
 7005 INK 4
 7010 PRINT AT 5,13;".::::::::::::."
 7020 PRINT AT 6,12;".::: .::::::. :::."
 7030 PRINT AT 7,12;":::::::'::':::::::"
 7040 PRINT AT 8,12;"'::::::::::::::::'"
 7050 PRINT AT 9,13;"'::: ' ' :::'"
 7060 PRINT AT 10,14;"'::....::'"
 7070 PRINT AT 11,15;"::::::"
 7080 PRINT AT 12,15;" :::::: "
 7090 PRINT AT 13,16;"::::::"
 7100 PRINT AT 14,16;" :::::: "
 7110 PRINT AT 15,16;" :::::: "
 7120 PRINT AT 16,16;"::::::"
 7130 PRINT AT 17,11;"..::::::::::::::::.."
 7140 PRINT AT 18,10;".::::::::::::::::::::::."
 7145 PRINT AT 19,9;" :::::::::::::::::::::::::: "
 7150 PRINT AT 15,9;":.";AT 16,9;" ::.";AT 17,10;"::"
 7180 GO SUB 6500
 7190 RETURN 
 7300 CLS : LET po=INT (RND*4)+1
 7301 IF po=1 THEN LET m$(a-1,b)=" ": LET m$(a+1,b)="::": LET m$(a,b-1)="::": LET m$(a,b+1)="::"
 7302 IF po=2 THEN LET m$(a+1,b)=" ": LET m$(a-1,b)="::": LET m$(a,b-1)="::": LET m$(a,b+1)="::"
 7303 IF po=3 THEN LET m$(a,b-1)=" ": LET m$(a,b+1)="::": LET m$(a-1,b)="::": LET m$(a+1,b)="::"
 7304 IF po=4 THEN LET m$(a,b+1)=" ": LET m$(a,b-1)="::": LET m$(a-1,b)="::": LET m$(a+1,b)="::"
 7305 LET a$="in the ENDLESS HOLE"
 7315 LET k=a: LET l=b
 7320 GO SUB 1000: GO SUB 2000: GO SUB 3000
 7330 GO SUB 9940
 7340 PRINT AT 20,6;"The mirror room...": FOR p=1 TO 80: NEXT p: GO SUB 9940: PRINT AT 20,0;"Find the right door or you will";AT 21,2;"fall in the ENDLESS HOLE."
 7350 FOR p=1 TO 100: NEXT p
 7360 FOR g=1 TO 2
 7370 GO SUB 9940
 7380 PRINT AT 21,3;"Wich direction? (N-S-E-W)"
 7385 LET c$=INKEY$: IF c$<>"e" AND c$<>"w" AND c$<>"s" AND c$<>"n" THEN GO TO 7385
 7386 GO SUB 9940
 7390 LET a=a+(c$="s")-(c$="n"): LET b=b+(c$="e")-(c$="w")
 7395 IF m$(a,b)<>" " THEN GO TO 7405
 7400 LET m$(k,l)=" ": PRINT AT 20,1;"Bravo!...You have found the";AT 21,1;"right door. You are now free.": FOR p=1 TO 150: NEXT p: GO SUB 9940: GO TO 451
 7405 LET a=a-(c$="s")+(c$="n"): LET b=b-(c$="e")+(c$="w"): PRINT AT 20,12;"WRONG,";
 7406 IF g=1 THEN PRINT AT 21,3;"only one more chance...": FOR p=1 TO 100: NEXT p: NEXT g
 7420 FOR p=1 TO 100: NEXT p: GO SUB 9940: PRINT AT 20,2;"OHo! The ENDLESS HOLE...Move";AT 21,4;"with the CURSOR KEYS."
 7430 FOR p=1 TO 150: NEXT p: CLS 
 7440 LET qw=15: LET qwe=12
 7445 FOR f=0 TO 21: PRINT TAB qwe; INK 7;"::::"; INK 5;"::::::::::"; INK 7;"::::": NEXT f
 7446 FOR f=1 TO 400
 7447 LET ra=INT (RND*2)+1
 7448 LET qwe=qwe+(ra=1 AND qwe+1<22)-(ra=2 AND qwe-1>0)
 7450 POKE 23692,2
 7455 PRINT AT 21,0: PRINT TAB qwe; INK 7;"::::"; INK 5;"::::::::::"; INK 7;"::::"
 7456 PRINT AT 9,qw; INK 5;"::"
 7460 LET qw=qw+(INKEY$="8")-(INKEY$="5")
 7465 IF ATTR (10,qw)<>5 THEN GO TO 7480
 7466 PRINT AT 10,qw; PAPER 5; INK 1;"i"
 7467 NEXT f
 7468 LET m$(k,l)=" ": PRINT AT 20,6;"HEY!...You did it.";AT 21,6;"You are now free."
 7469 FOR p=1 TO 200: NEXT p
 7470 GO TO 451
 7480 PRINT AT 10,7;"You are dead...": GO TO 9120
 7500 LET a$="by a guard"
 7505 PRINT AT 8,14; INK 4;"..::.."
 7510 PRINT AT 9,13; INK 4;".::::::::."
 7520 PRINT AT 10,12; INK 4;".:::"; PAPER 4; INK 0;"O"; PAPER 0; INK 4;"::"; INK 0; PAPER 4;"O"; INK 4; PAPER 0;":::."
 7530 PRINT AT 11,12; INK 4;"::::::"; INK 0; PAPER 4;"-"; INK 4; PAPER 0;"::::::"
 7540 PRINT AT 12,12; INK 4;"':"; PAPER 6;":. - .:"; PAPER 0; INK 4;":'"
 7550 PRINT AT 13,11; INK 2;".::::::::::::::::."
 7560 FOR f=14 TO 17: PRINT AT f,11; INK 2;"::::::::::::::::::::::": NEXT f
 7565 INK 5
 7570 PRINT AT 11,9;".::."
 7580 PRINT AT 12,8;".::::::."
 7590 FOR f=13 TO 16: PRINT AT f,7;" :::::::::: ": NEXT f
 7600 PRINT AT 14,9; INK 0; PAPER 5;"**"
 7620 PRINT AT 15,9; INK 0; PAPER 5;"**"
 7630 PRINT AT 17,8;"''''''''";: INK 7: PRINT INK 2;".:"
 7635 INK 1
 7640 PRINT AT 7,21;" .";AT 8,20;" .:::.";AT 9,20;" :::::";AT 10,20;" :::::"
 7650 PRINT AT 11,20;" ':::'"
 7660 INK 3: FOR f=12 TO 19: PRINT AT f,21;" :": NEXT f
 7670 PRINT AT 17,19;"  "
 7680 PRINT AT 14,20; INK 2;":."
 7690 PRINT AT 15,21; INK 6;"::"
 7700 PRINT AT 16,19; INK 2;" '':"; INK 6;"::"
 7720 PRINT AT 18,12; INK 6;"::::::''::::::"
 7730 PRINT AT 19,12; INK 6;":::::: ::::::"
 7740 LET r=INT (RND*75)+1: LET arg=arg-r
 7745 INK 7
 7750 IF arg<0 THEN LET arg=0
 7760 PRINT AT 20,0;"A guard. Give him ";r;"$ to be free";AT 21,7;"You now have ";arg;"$"
 7770 IF arg=0 THEN GO TO 9120
 7780 GO TO 6560
 8000 PRINT AT 8,15;". "
 8005 PRINT AT 9,14;".' '. "
 8010 FOR f=10 TO 16: PRINT AT f,14;":  : ": NEXT f
 8020 PRINT AT 17,13;" '':::''"
 8030 PRINT AT 18,14;" :::"
 8040 PRINT AT 19,14;".:::. "
 8050 LET e=INT (RND*125)+1: LET for=for+e
 8060 PRINT AT 20,2;"A sword of strength...+";e;AT 21,1;"You now have ";for;" of strength"
 8070 LET m$(a,b)=" "
 8080 GO TO 6560
 8500 LET a$="by a bat": LET b$="A bat"
 8501 INK 2
 8505 PRINT AT 8,7;".:";AT 8,23;":."
 8510 PRINT AT 9,7;":::.";AT 9,22;".:::"
 8520 PRINT AT 10,7;" ::::.";AT 10,21;".:::: "
 8530 PRINT AT 11,7;" ::::::.";AT 11,20;".:::::: "
 8540 PRINT AT 12,7;" ::::::::.";AT 12,19;".:::::::: "
 8550 PRINT AT 13,7;"::::::::::";AT 13,19;"::::::::::"
 8560 PRINT AT 14,7;"':::::::::";AT 14,19;":::::::::'"
 8570 PRINT AT 15,8;"'::::::::.";AT 15,18;".::::::::'"
 8580 PRINT AT 16,8;" ':::::::::.";AT 16,17;".:::::::::' "
 8590 PRINT AT 17,10;"'::::::::::.";AT 17,15;".::::::::::'"
 8600 PRINT AT 18,9;".::''::::::::::::::::''::."
 8610 PRINT AT 19,8;".''.   '::::::::'   .''."
 8620 PRINT AT 9,12;":. .::::::. .:"
 8630 PRINT AT 10,12;"'::: .::. :::'"
 8640 PRINT AT 11,13;":::'::':::"
 8650 PRINT AT 12,13;"::':'':'::"
 8660 PRINT AT 13,13;" : . . : "
 8670 PRINT AT 14,12;"::.'::::::'.::"
 8680 PRINT AT 15,13;"'::::::::'"
 8690 PRINT AT 16,14;"'::::'"
 8700 PRINT AT 17,15;"''"
 8710 GO SUB 6500
 8720 RETURN 
 8780 STOP 
 9000 PRINT AT 6,14; FLASH 1;"EXIT"
 9010 LET arg=arg+100
 9020 PRINT AT 21,12; FLASH 1;"NEW MAZE"
 9030 FOR F=1 TO 400
 9040 NEXT F
 9050 CLS 
 9060 GO TO 6
 9120 FOR f=1 TO 200: NEXT f
 9130 CLS 
 9131 PRINT AT 1,13;" .''''. "
 9132 PRINT AT 2,13;".'  '."
 9133 PRINT AT 3,13;":  ::  :"
 9134 PRINT AT 4,13;": :::: :"
 9135 PRINT AT 5,13;"'. :: .'"
 9136 PRINT AT 6,13;" : :: : "
 9137 PRINT AT 7,13;" :  : "
 9138 PRINT AT 8,13;" '....' "
 9139 FLASH 1: PRINT AT 10,9;
 9140 IF a$="by the MINOTAUR" THEN PRINT "d";AT 10,21;"d";AT 11,8;"d";AT 11,22;"d": GO TO 9144
 9141 IF a$="by a guard" THEN PRINT "b";AT 10,21;"b";AT 11,8;"b";AT 11,22;"b": GO TO 9144
 9143 PRINT m$(a,b);AT 10,21;m$(a,b);AT 11,8;m$(a,b);AT 11,22;m$(a,b)
 9144 PRINT AT 10,10;" D E A T H ";AT 11,9;" R E P O R T "
 9145 FLASH 0
 9149 PRINT AT 13,5;"You have been killed";AT 15,15-LEN a$/2;a$
 9150 PRINT AT 17,6;"You accumulated ";arg;"$";AT 18,6;"and ";for;" of strength";AT 19,6;+("also "+STR$ gc+" gold cross"+("es" AND gc>1) AND gc>0)
 9151 GO SUB 825
 9154 PRINT AT 21,10;"PLAY AGAIN?"
 9155 IF INKEY$="y" THEN RUN 2
 9160 IF INKEY$<>"n" THEN GO TO 9155
 9170 CLS : STOP 
 9940 PRINT AT 20,0;"                                "
 9941 PRINT AT 21,0;"                                "
 9943 RETURN 
 9970 CLS 
 9971 FOR f=1 TO de STEP 2
 9972 PRINT AT f-1,0; INK 1;m$(f): NEXT f: PRINT AT (de/2)-2,ac+2;"N";AT (de/2)-1,ac+1;"WrE";AT de/2,ac+2;"S"
 9973 FOR f=2 TO de-1 STEP 2
 9974 FOR g=1 TO ac: IF m$(f,g)=" " THEN GO TO 9997
 9975 IF m$(f,g)="::" THEN PRINT AT f-1,g-1; INK 1;m$(f,g): GO TO 9997
 9976 IF m$(f,g)="a" THEN PRINT AT f-1,g-1; INK 3;m$(f,g): GO TO 9997
 9977 IF m$(f,g)="b" THEN PRINT AT f-1,g-1; INK 6;m$(f,g): GO TO 9997
 9978 IF m$(f,g)="c" THEN PRINT AT f-1,g-1; INK 7;m$(f,g): GO TO 9997
 9979 IF m$(f,g)="d" THEN PRINT AT f-1,g-1; INK 6;m$(f,g): GO TO 9997
 9980 IF m$(f,g)="e" THEN PRINT AT f-1,g-1; INK 5;m$(f,g): GO TO 9997
 9981 IF m$(f,g)="f" THEN PRINT AT f-1,g-1; INK 7;m$(f,g): GO TO 9997
 9982 IF m$(f,g)="g" THEN PRINT AT f-1,g-1; INK 6;m$(f,g): GO TO 9997
 9983 IF m$(f,g)="h" THEN PRINT AT f-1,g-1; INK 4;m$(f,g): GO TO 9997
 9984 IF m$(f,g)="j" THEN PRINT AT f-1,g-1; INK 1; PAPER 0; BRIGHT 1; INVERSE 1;m$(f,g): GO TO 9997
 9985 IF m$(f,g)="k" THEN PRINT AT f-1,g-1; INK 2;m$(f,g): GO TO 9997
 9986 IF m$(f,g)="l" THEN PRINT AT f-1,g-1; INK 2;m$(f,g): GO TO 9997
 9987 IF m$(f,g)="m" THEN PRINT AT f-1,g-1; INK 2;m$(f,g): GO TO 9997
 9988 IF m$(f,g)="n" THEN PRINT AT f-1,g-1; INK 6;m$(f,g): GO TO 9997
 9989 IF m$(f,g)="p" THEN PRINT AT f-1,g-1; INK 2;m$(f,g): GO TO 9997
 9990 IF m$(f,g)="o" THEN PRINT AT f-1,g-1; INK 5;m$(f,g): GO TO 9997
 9991 IF m$(f,g)="q" THEN PRINT AT f-1,g-1; INK 7;m$(f,g): GO TO 9997
 9992 IF m$(f,g)="s" THEN PRINT AT f-1,g-1; INK 5;m$(f,g): GO TO 9997
 9997 NEXT g: NEXT f
 9998 PRINT AT de-2,ac-2; BRIGHT 1; FLASH 1; INK 7; PAPER 1;"X"; FLASH 0; BRIGHT 0;AT de-2,ac-1; INK 1;"::"
 9999 GO TO 350

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