Quetzalcoatl is a 3-D maze game. Thrown into an Aztec temple by bandits, you must find a way out through its passages while gathering the 100 beads you need to survive the natives at the end of the game. The view down each passage is drawn in perspective, and you move with 1 (left), 2 (ahead) and 3 (right). There are six skill levels: levels 1 to 4 slowly increase the difficulty, in level 5 there is no map and in level 6 no compass. Help from “The Book of Ancient Lore” is on the H key, and an archaeologist’s journal sets the scene between screens. Pressing D at a “press C to continue” prompt switches on a demonstration mode.
The title screen reads “QUETZALCOATL / BY G J BRIGGS / © 1984 VIRGIN GAMES LTD”. It uses the same “VLOADER” loader (S. S. Dosanj, Bitterne Software) as Quicksilva’s TS2068 releases of Aquaplane and Velnor’s Lair. RMG Enterprises’ TS2068 catalogue lists the game. This copy came from one of Bob Swoger’s Larken disks.
Program Analysis
Structure
The tape holds the loader QTZLCT.B1, a loading screen, an 8,069-byte machine code block at 55600 (qtzlct.C1) and the BASIC game (qtzlct.B2). The BASIC handles the menus, journal pages and help screens (lines 9000 up) and calls the machine code with USR 57344 to draw the maze view.
Notable Techniques
- The game uses
DEF FNhelpers for high and low bytes (FN H(X),FN L(X)) when it POKEs addresses into the machine code. - The title border is drawn with block graphics in a
PRINTstatement, and the program moves the user-defined graphics by POKEing the UDG pointer (23675/23676) and changes the size of the lower screen through 23659.
Potential Issues
- The title screen warns that the program will crash if you try to BREAK into it.
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, the LOGICALL menu call and a tape-copying line at line 0 of the game. It was tested in ZEsarUX on a stock TS2068: the title, skill selection, journal pages and the 3-D maze view all work.
Source Code
; QTZLCT.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
55 BORDER 0: INK 0: PAPER 0: CLS : REM
57 PRINT #0;AT 0,13; INK 7; FLASH 1;"LOADING"; FLASH 0; INK 0: REM
60 LOAD "qtzlct.C$"SCREEN$ : REM
65 PRINT #0;AT 0,12; FLASH 1;"LOADING"; FLASH 0: REM
100 PRINT AT 18,0;: REM
110 LOAD "qtzlct.C1"CODE : REM
125 PRINT AT 18,0;: REM
130 LOAD "qtzlct.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 ````````
; qtzlct.B2
0 REM removed (LKDOS-only)
3 DEF FN F()=(((PEEK 23731)*256)+PEEK 23730)-(((PEEK 23654)*256)+PEEK 23653)
10 POKE 23658,8: POKE 23659,0
20 DEF FN H(X)=INT (X/256)
22 DEF FN L(X)=X-FN H(X)*256
24 GO TO 40
30 POKE 23658,8: POKE 23659,0: LET KEYS=0: LET DEM=0
36 GO SUB 9000: GO SUB 9110
40 BRIGHT 0: FLASH 0: OVER 0: DIM G$(22,14): RESTORE 8000: FOR T=1 TO 22: READ G$(T): NEXT T
45 DIM S(6,2): RESTORE 8100: FOR T=1 TO 6: FOR S=1 TO 2: READ S(T,S): NEXT S: NEXT T
50 DIM G(4): RESTORE 8200: FOR T=1 TO 4: READ G(T): NEXT T
55 DIM M(8)
60 RANDOMIZE
1499 REM START
1500 BORDER 6: GO SUB 9130: INK 0: PRINT AT 10,0;" Please select your skill levelfrom 1 to 6."''" Levels 1 to 4 slowly increase in difficulty."''" In level 5 there is no map andin level 6 no compass."'''"Selection : "; FLASH 1;"::"
1502 LET SK=CODE INKEY$-48: IF SK<1 OR SK>6 THEN GO TO 1502
1504 PRINT AT 20,12;STR$ SK: LET GR=INT (RND*SK*5)+10: LET G2=0: BEEP 1,5
1506 GO SUB 9100: POKE 57071,SK: POKE 57065,0: LET AR=USR 57344
1508 PRINT AT 10,0;" You will need to gather ";S(SK,1)'"beads to survive the natives at the end of the game."''" During the game, help can be found by consulting The Book of Ancient Lore. This can be done by pressing H for help."''" If it all gets too much for you, then you can press E to endit all."
1510 POKE 57065,7: POKE 57075,0: FOR T=1 TO 20: LET BRM=RND: LET AR=USR 57344: NEXT T: POKE 57075,3: GO SUB 9110: GO SUB 9100
1512 PRINT AT 7,0;"ARCHAEOLOGICAL JOURNAL"''"JUNE 19th"''"It is now three months since we began the search for the Temple of Quetzalcoatl and I am now at the point of abandoning the expedition. It would seem that it does not, after all, exist."''"JUNE 20th"''"Today we have been captured and robbed by a group of bandits."
1514 GO SUB 9110: GO SUB 9100: PRINT AT 12,0;"JUNE 21st"''"This morning my companions were foully murdered. The bandits saythat something worse is in storefor me. They tell me that I am to be cast into the Holy Place. I wonder if, by that, they mean the Temple of Quetzalcoatl?"'"This evening I shall find out."
1516 GO SUB 9110: PRINT AT 5,0;" ''' mm mnom m::::m m::::m b:'''''':a b:'''''''''':a b:'''''''''''''':a "
1518 PRINT " b:::::::'''''''''':::::::a b:::::::'''''''''''''':::::::a b:::::::'''''''''''''''''':::::::a b:::::::::::::'''''''''''''':::::::::::::a b:::::::::::::'''''''''''''''''':::::::::::::a b:::::::::::::'''''''''''''''''''''':::::::::::::a b:::::::::::::::::::'''''''''''''''''':::::::::::::::::::a b:::::::::::::::::::'''''''''''''''''''''':::::::::::::::::::a:::::::::::::::::::'''''''''''''''''''''''''':::::::::::::::::::"
1520 FOR S=1 TO 2: FOR T=1 TO 39 STEP 3: BEEP .1,T: NEXT T: NEXT S: BEEP .5,-8: BEEP .5,-12
1600 LET FLS=0: LET MPS=0: LET CPS=0
1605 LET AL=3: LET BDS=0
1610 LET BC=INT (RND*20)+109: LET BD=1
1675 POKE 23659,2: PAPER 5: CLS : POKE 23659,0: PRINT AT 22,0;" ": INK 0: PRINT AT 0,10;"QUETZALCOATL": PAPER 0
1680 FOR T=2 TO 21: PRINT AT T,7;" ": NEXT T
1682 PAPER 5: BEEP 1,-24
1685 GO SUB 1900: GO SUB 1805
1690 PRINT AT 22,0'" NOW EXPLORE AND PERHAPS ESCAPE": LET S$="(NN)(ow) eKSp(LL)(or), And.P(ER)(HH)aps.ESSc(aa)p": GO TO 2000
1800 INK 5: PAPER 5: POKE 23659,2: CLS : POKE 23659,0: INK 0: PRINT AT 0,10;"QUETZALCOATL"
1805 IF FLS=1 THEN GO SUB 4500
1810 PRINT AT 1,0;"SELECTj"; OVER 1''"1 LEFT"''"2 AHEAD"''"3 RIGHT"''"H HELP"''''" LEVEL"'" ";AL''" BEADS"'" ";BDS''" SKILL"'" ";SK' INK 0'" "
1815 IF CPS=1 THEN PRINT AT 22,0;"COMPASS"'" ";CHR$ (147+PEEK 57070)
1820 IF MPS=1 THEN PRINT AT 11,0;"M MAP"
1825 RETURN
1900 INK 8: PAPER 8: PRINT AT 1,6; INK 5; PAPER 5;" ": FOR T=9 TO 1 STEP -2: INK 5-((T=1)*5): INK 8: LET AT=(11-T)*16+1: PLOT 47+(T*8),(T-1)*8-1: DRAW 0,AT: DRAW AT,0: DRAW 0,-AT: DRAW -AT,0: NEXT T: INK 8: OVER 1: PLOT 58,1: DRAW 155,0: OVER 0: PLOT 55,0: PLOT 216,0
1905 PRINT AT 21,7; OVER 1;" ": PRINT AT 22,7;"llllllllllllllllllll": FOR T=-64 TO 64 STEP 16: PLOT 136,79: DRAW T,80: PLOT 136,80: DRAW T,-80: NEXT T
1910 FOR T=7 TO 16: PRINT AT T-5,T;"a";AT 28-T,T;"c";AT T+5,T+10;"d";AT 18-T,T+10;"b": NEXT T
1920 FOR T=1 TO 5: LET AT=1+T*2: LET AT1=AT+4: LET AT2=29-AT: LET AT3=23-AT: PRINT AT AT,AT1;"::";AT AT,AT2;"::";AT AT3,AT1;"::";AT AT3,AT2;"::": NEXT T
1925 PRINT AT 1,6; INK 0; OVER 0;"j"; OVER 1;"iiiiiiiiiiiiiiiiiiii"; OVER 0;"k"
1930 POKE 20678,1: POKE T,128: POKE 57065,3: LET AR=USR 57344
1935 PAPER 5: INK 0: RETURN
2000 LET K$=INKEY$: IF K$="" THEN GO TO 2000
2005 IF K$<>"1" AND K$<>"2" AND K$<>"3" AND K$<>"E" AND K$<>"M" AND K$<>"H" AND (NOT (K$="R" AND DEM=1)) THEN GO TO 2000
2010 POKE 57065,CODE K$
2015 IF K$="M" AND MPS=0 THEN GO TO 2000
2018 BEEP .125,5: IF DEM=0 THEN PRINT AT 22,0' OVER 1;" "; OVER 0;" ": GO TO 2030
2020 IF K$="R" THEN GO TO 30
2024 PRINT AT 22,0' OVER 1;" "; OVER 0;" PRESS R TO RESTART "
2026 IF K$="E" THEN GO TO 30
2030 IF K$="E" THEN GO TO 8500
2035 IF K$="H" THEN GO TO 4300
2040 IF K$="2" THEN LET GR=GR-1
2045 IF GR<-1 THEN LET GR=-1
3000 LET BRM=RND: LET AR=USR 57344
3002 IF BD<>1 THEN PRINT AT 13+BD,16; INK 8; BRIGHT 8; PAPER 8; OVER 1;CHR$ (157+BD);CHR$ (158+BD)
3004 IF K$<>"2" OR AR>104 THEN GO TO 3026
3006 LET BC=BC-1: IF BC=100 THEN LET BDS=BDS+5: PRINT AT 17,2;BDS: GO TO 3028
3008 IF BC>104 THEN GO TO 3036
3010 IF AR<BC THEN LET BC=AR: IF BC<101 THEN LET BC=105: GO TO 3036
3012 LET BD=(104-BC)*2: PRINT AT 13+BD,16; OVER 1; PAPER 8;CHR$ (157+BD);CHR$ (158+BD): GO TO 3036
3026 IF BD=1 AND BC>104 THEN GO TO 3036
3028 LET BD=1: LET BC=INT (RND*SK*(4-AL)*BDS/10)+104+INT (RND*5)
3036 IF AR=1 THEN GO TO 3100
3038 IF AR=10 OR AR=125 OR AR=126 THEN GO TO 3200
3040 IF AR=122 THEN PRINT AT 22,0' OVER 1;" "; OVER 0;" YOU HAVE BUMPED INTO A WALL"
3042 IF AR=127 THEN GO TO 8400
3044 IF AR=123 THEN PRINT AT 22,0' OVER 1;" "; OVER 0;"WELL DONE, YOU'RE NEARLY THERE": IF FLS=1 THEN LET GR=0
3046 IF AR=124 THEN GO TO 4200
3048 IF GR=0 THEN GO SUB 4100
3050 IF CPS=1 THEN PRINT AT 22,0'" ";CHR$ (147+PEEK 57070)
3095 GO TO 2000
3099 REM MAP
3100 PRINT AT 22,0' OVER 1;" "; OVER 0;" PRESS C TO CONTINUE"
3105 LET K$=INKEY$: IF K$="C" THEN GO TO 2010
3110 IF K$="E" THEN POKE 57065,67: LET AR=USR 57344: GO TO 8500
3115 LET BRM=RND: LET AR=USR 57344: GO TO 3105
3199 REM NEXT LEVEL
3200 LET G2=0: LET AL=AL-1: IF AR<>126 THEN PRINT AT 22,0'" THAT WAS THE WRONG SHAFT.": LET BDS=INT (RND*BDS): PRINT AT 17,2;" ";AT 17,2;BDS: IF CPS=1 THEN LET CPS=RND>(SK/10): IF CPS=0 THEN PRINT AT 22,0;" "'" WRONG SHAFT : COMPASS BROKEN"
3205 LET BRM=RND: IF USR 57344<>3 THEN GO TO 3205
3225 IF AL=2 THEN LET GR=INT (RND*10)+80
3230 IF AL=1 THEN LET GR=25-INT (RND*SK*10)
3235 IF AL=0 THEN LET GR=90+((7-SK)*10)-((FLS=1)*50)
3240 PRINT AT 14,2;AL
3245 GO TO 3000
4099 REM DRAW GOD
4100 PAPER G(AL+1): RESTORE 4101: FOR T=1 TO 25: LET RX=1+INT (RND*14): LET RY=1+INT (RND*21): IF G$(RY,RX)<>"A" THEN PRINT AT RY,9+RX;G$(RY,RX)
4101 DATA 1,14,4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11,4,11,2,13,2,13,2,13,2,13,5,10,4,11,4,11,4,11,4,11,5,10,5,10,5,10
4105 NEXT T: READ A,B: PRINT AT 22,10; OVER 1;G$(22,1 TO 14): FOR T=21 TO 1 STEP -1: READ A,B: PRINT AT T,A+9;G$(T,A TO B): NEXT T
4108 PAUSE 0: PAUSE 50: PRINT AT 5,15; PAPER 6;"m";AT 5,18;"m": PAUSE 50
4110 PAPER 5: GO TO 4120+AL*20
4120 LET A$="I AM THE LORD TEZCATLIPOCA, GOD OF SUN AND BRINGER OF YOUR DEATH": LET N$=",(II) Am (DTH)u'L(or)d TeZCatLip(OO)Cu.(GG)oD Ov S(eh)n,And'BRI(ng)(er) Ov Y(or) D(eh)(th)": IF FLS=0 THEN LET A$=A$+".": GO SUB 4400: BORDER 0: GO TO 8525
4122 LET A$=A$+" UNLESS YOU CAN APPEASE ME WITH YOUR FLUTE PLAYING. YOU HAVE ONE CHANCE TO GET IT RIGHT.": LET N$=N$+".(UH)nleS,Y(ou)'Can AP(ee)z'M(ee),Wi(dth) Y(or) FL(ou)t'PL(aa)i(ng).Y(ouu) Hav Won (CH)Ans,T(ou)'Get It,R(ii)t"
4124 GO SUB 4400: PRINT AT 22,0';: FOR T=1 TO 8: PRINT " "; INVERSE 1;CHR$ (49+M(T));" ";: NEXT T: PRINT "Now Play"
4126 LET T=1
4128 LET K=CODE INKEY$: IF K=0 THEN GO TO 4128
4130 IF K<49 OR K>56 THEN GO TO 4138
4132 BEEP .2,K-47: IF K<>M(T)+49 THEN GO TO 4138
4134 LET T=T+1: IF T<9 THEN GO TO 4128
4136 LET A$="THIS TIME YOU MAY GO. BUT, IN CASE YOU ARE STILL HERE IN A SHORT WHILE, I SHALL TAKE AWAY THE FLUTE. YOU WILL DIE IF I SEE YOU AGAIN.": LET N$=",(DTH)is T(ii)m,Y(ouu)'M(aa)'G(oo).But.In'K(aa)s Y(ou),(ar) StiL'H(ear) In'U'(SH)(or)t'(WH)(ii)L.(II),(SH)al'T(AA)k Aw(aa),(DTH)u FL(ou)t.Y(ouu),Wil'd(II).Iv (II) S(ee)'Y(ou).Ug(aa)n": GO SUB 4400: LET FLS=0: OVER 1: GO SUB 4500: OVER 0: PRINT AT 3,29;" ";AT 4,29;" ": PAUSE 0: LET GR=40+INT (RND*((7-SK)*10)): GO TO 4195
4138 BEEP .1,-10: BEEP .2,-15: BEEP .4,-41: LET A$="SO YOU WISH TO DIE DO YOU? VERY WELL THEN, DIE.": LET N$=",s(OO).Y(ou)'Wi(SH) T(ou)'d(II).D(ou)'Y(OUU).V(EH)r(ee)'Wel'(DTH)en.D(ii)y": GO SUB 4400: BORDER 0: GO TO 8525
4140 LET A$="I AM YOUR GUARDIAN THE GREAT GOD QUETZALCOATL.": LET N$=",(II) Am Y(or) G(ar)DiYun.(DTH)u Gr(AA)t GoD kwETzuCoTul": GO SUB 4400: GO SUB 4500: LET A$="HERE IS A FLUTE FOR YOU TO PLAY IF YOU SHOULD MEET TEZCATLIPOCA. AND THESE ARE THE NOTES YOU SHOULD PLAY ON IT.": LET N$=",H(ear),izu'FL(ou)t f(or) Y(ouu) T(ou) Pl(aa),Iv'Y(ouu)(SH)uD'M(ee)t,TeZCatLip(OO)Cu,.And (DTH)(ee)z.(ar)'(DTH)u'N(oo)ts.Y(ouu)'(SH)ud'Pl(aa),On'it": GO SUB 4400
4142 PRINT AT 22,0'" ";: FOR T=1 TO 8: LET M(T)=INT (RND*8): PRINT " "; INVERSE 1;CHR$ (49+M(T));" ";: BEEP RND,12+M(T): NEXT T
4144 PRINT AT 0,0;"NOW PRACTICE:PRESS C TO CONTINUE"
4146 LET K=CODE INKEY$: IF K=0 THEN GO TO 4146
4148 IF K=67 THEN PRINT AT 0,0;" QUETZALCOATL ";AT 22,0'" ": BEEP .1,10: PAUSE 0: LET FLS=1: LET GR=-1: GO TO 4195
4150 IF K<49 OR K>56 THEN BEEP .1,-10: BEEP .2,-15: BEEP .4,-41: GO TO 4146
4152 IF CODE INKEY$=K THEN BEEP .2,K-37: GO TO 4152
4154 GO TO 4146
4160 IF G2=1 THEN LET A$="YOU ARE TRYING MY PATIENCE. FOR THIS I SHALL TAKE AWAY ALL THE BEADS YOU HAVE.": LET N$=",Y(ou) (ar) TR(II)i(ng),M(II) P(AA)(SH)ens.F(or) (DTH)is,(II) (SH)al T(AA)KAw(AA) (OR)l (DTH)u b(EE)ds Y(ou) Hav": GO SUB 4400: LET GR=INT (RND*10)+18: PRINT AT 17,2;"0 ": LET BC=INT (RND*8)+105: LET BDS=0: GO TO 4195
4162 LET A$="I AM TLALOC THE GOD OF RAIN": LET N$=",(II) Am TLAlo(ck) (DTH)u (GG)oD oV R(aa)n": GO SUB 4400: GO SUB 4450: LET A$="ONE OF THESE PITCHERS CONTAINS GOOD WATER. WHICH ONE IS IT?": LET N$=",Won Ov (DTH)(ee)z Pi(ch)us cont(AA)ns G(uh)d W(or)(TT)(er).(wh)I(ch) Won,iz'It": GO SUB 4400
4164 LET K$=INKEY$: IF K$<"A" OR K$>"D" THEN GO TO 4164
4166 BEEP .5,-10: IF CODE K$-65=INT (RND*4) THEN LET A$="YOU HAVE CHOSEN WELL. CONTINUE ON YOUR WAY.": LET N$=",Y(ouu) Hav (CH)(OO)zen'Wel.COntinY(OU),On Y(or) W(aa)": GO SUB 4400: GO SUB 4450: LET GR=INT (RND*25)+30: GO TO 4195
4168 LET A$="THAT IS THE WRONG ONE. NOW YOU SHALL DIE.": LET N$=",(dth)aA'T,iz (DTH)u Ro(ng) Won.N(ow) Y(ouu)'(SH)al (DD)(ii)": GO SUB 4400: BORDER 0: GO TO 8525
4180 LET A$="I AM HUITZILOPOCHTLI. I SHALL HELP YOU IN YOUR JOURNEY. HERE IS A ": LET N$=",(II) Am (HH)(ou)tZIL(oo)PochTl(ee).(II) (sh)Al(HH)Elp Y(ou) In Y(or)J(ERR)n(ee).(HH)(ear),IzU,": IF SK<6 THEN LET A$=A$+"COMPASS ": LET N$=N$+"CumPuss ": LET CPS=1: IF SK<5 THEN LET A$=A$+"AND A ": LET N$=N$+"And,U "
4182 IF SK<>5 THEN LET A$=A$+"MAP ": LET N$=N$+"Map ": LET MPS=1
4184 LET GR=-1: LET A$=A$+"TO GUIDE YOU ON YOUR WAY.": LET N$=N$+"T(ou) (GG)(ii)D,Y(ou) On'Y(or),W(aa)": GO SUB 4400
4195 LET BD=1: LET G2=1: PRINT AT 5,15; PAPER G(AL+1);"O";AT 5,18;"O": PAUSE 80: RESTORE 4101: OVER 1: FOR T=22 TO 1 STEP -1: READ A,B: PRINT AT T,A+9;G$(T,A TO B): NEXT T: POKE 57065,4: LET AR=USR 57344: OVER 0: PAPER 5: INK 0: GO SUB 1900: GO SUB 1810: GO SUB 1810: GO TO 2000
4199 REM EXIT
4200 PRINT AT 22,0'"WELL YOU'RE AT THE EXIT. BUT NOW": LET S$="WE(ll),Y(or) At (DTH)(ee) EgZit.(BB)ut,(NN)(ow)"
4205 PAPER 7: INK 7: BRIGHT 1: POKE 23606,48: POKE 23607,216
4210 PRINT AT 7,9;"L !LLLLLLLLLLNML"
4211 PRINT AT 8,9;"""#$LL%LLLLRLLQPO"
4212 PRINT AT 9,9;"&'(L)*LLLLWVLUTS"
4213 PRINT AT 10,9;"+,-L.LLLLLL[LZYX"
4214 PRINT AT 11,9;"/0123LLLLLL`_^]\"
4215 PRINT AT 12,9;"4567LLLLLLLLdcba"
4216 PRINT AT 13,9;"89:;LLLLLLLLhgfe"
4217 PRINT AT 14,9;"<=>LLLLLLLLLLkji"
4218 PRINT AT 15,9;"?@ALLLLLLLLLLnml"
4219 PRINT AT 16,9;"BCDLLLLLLLLLLqpo"
4220 PRINT AT 17,9;"EFLLLLLLLLLLLLsr"
4221 PRINT AT 18,9;"GHLLLLLLLLLLLLut"
4222 PRINT AT 19,9;"IJKLLLLLLLLLLxwv"
4230 PAPER 5: INK 0: BRIGHT 0: POKE 23606,0: POKE 23607,60
4235 FOR T=1 TO 150: NEXT T: POKE 57065,5: LET AR=USR 57344
4240 PRINT AT 22,0'" YOU MUST GET PAST THE NATIVES. ": LET S$="Y(ou) MUst GeT'PasT,(DTH)u'(nn)(AA)Tivz": FOR T=1 TO 350: NEXT T
4245 GO SUB 9135: PAPER 7: INK 0: PRINT '"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii": BRIGHT 1: PRINT " "; OVER 1;" "; OVER 0;" "; OVER 1;" "; OVER 0;" "
4250 IF BDS>=S(SK,1) THEN GO TO 4260
4252 PRINT " The natives say "; OVER 1;" "; OVER 0;" that since I have "; OVER 1;" "; OVER 0;" so few beads (";BDS;"),";: IF BDS<10 THEN PRINT " ";
4254 IF BDS<100 THEN PRINT " ";
4256 PRINT OVER 1;" "; OVER 0;" I cannot have been "; OVER 1;" "; OVER 0;" blessed by their god"; OVER 1;" "; OVER 0;" Quetzalcoatl. I must"; OVER 1;" "; OVER 0;" therefore die for "; OVER 1;" "; OVER 0;" desecrating the "; OVER 1;" "; OVER 0;" temple. "; OVER 1;" "; OVER 0;" ": BORDER 0
4258 GO TO 4265
4260 IF BDS<S(SK,2) THEN PRINT " The natives are "; OVER 1;" "; OVER 0;" pleased that I have"; OVER 1;" "; OVER 0;" so many beads (";BDS;")."; OVER 1;" "; OVER 0;" They say that The "; OVER 1;" "; OVER 0;" Great Quetzalcoatl "; OVER 1;" "; OVER 0;" must have protected"; OVER 1;" "; OVER 0;" me and so they must"; OVER 1;" "; OVER 0;" not harm me. I am "; OVER 1;" "; OVER 0;" free to go. "; OVER 1;" "; OVER 0;" ": BORDER 4
4265 IF BDS<S(SK,2) THEN PRINT " "; OVER 1;" "; OVER 0;" "; OVER 1;" "; OVER 0;" "' BRIGHT 0'" .. .. .. .. l '' l l '' l l '' l l '' l ": PRINT AT 18,0;: OVER 1: GO TO 4280
4270 PRINT AT 8,0;" After a ceremony"'"including dance and"; OVER 1;" "; OVER 0;" feasting, I was led "; OVER 1;" "; OVER 0;" to this hut to spend"; OVER 1;" "; OVER 0;" the night. They tell"; OVER 1;" "; OVER 0;" me that to be given s"; OVER 1;"o "; OVER 0;" many beads (";BDS;") is"; OVER 1;" "; OVER 0;" proof positive that"; OVER 1;" "; OVER 0;" Quetzalcoatl will soon"; OVER 1;" "; OVER 0;" "
4275 PRINT "return. Tomorrow they"; OVER 1;" "; OVER 0;" will lead me to the"; OVER 1;" "; OVER 0;" nearest port, and then"; OVER 1;" "; OVER 0;" home. ": PRINT AT 20,0;: OVER 1: BORDER 2
4280 PRINT " ... ...:.: ": OVER 0: PRINT BRIGHT 0;" :"; BRIGHT 1;"............................................................"
4285 BRIGHT 0: GO TO 8525
4299 REM HELP
4300 GO SUB 9130: PRINT AT 7,0;"THE BOOK OF ANCIENT LORE"''" As you make your way through the Temple, you should collect all the glass beads that you seesince they are a gift from The Great Quetzalcoatl and show his favour for you."
4302 PRINT " You should descend the levelsfrom 3 to 0 via the blue shafts.Descent via black shafts will cause damage to the beads."
4304 PRINT " The more you move about, the more black shafts there will be. Each level has a guardian.": GO SUB 9110: POKE 23659,2: PAPER 6: CLS : POKE 23659,0
4306 PAPER G(AL+1): RESTORE 4101: FOR T=22 TO 1 STEP -1: READ A,B: PRINT AT T-1,A+17;G$(T,A TO B): NEXT T: PAPER 6: PRINT AT 1,1;
4310 GO SUB 4320+AL*10: PAPER 6: GO SUB 9110: GO SUB 1800: GO SUB 1900: GO TO 2000
4320 PRINT "::::::"'" ::"'" :: EZCATLIPOCA": PAPER 7
4322 PRINT AT 7,3;"The Sun God";AT 9,3;"If you should "'"meet him, he will "'"kill you.";AT 13,3;"Your only hope "'"is to play the "'"tune on the flute "'"if you were given "'"these on the level"'"above by the great"'"Quetzalcoatl."
4328 RETURN
4330 PRINT "::::::"'" ::. ::"'" ::::::ETZALCOATL"'" ''.. ": PAPER 7
4332 PRINT AT 6,3;"The God of Life"'"and Art.";AT 8,3;"He is the one "'"that blesses with "'"beads (mainly on "'"the upper levels).";AT 12,3;"If you should "'"meet him, he will "'"give you a flute "'"and teach you a "'"short tune. This "'"he will do so that"'"you may pacify "'"Tezcatlipoca if "'"you meet him on "'"the next level."
4338 RETURN
4340 PRINT "::::::"'" ::"'" :: LALOC": PAPER 7
4342 PRINT AT 5,3;"The God of Rain";AT 6,3;"He has four "'"pitchers of water."'"One contains good "'"water, another one"'"causes blight, a "'"third turns into "'"frost and a fourth"'"will burn crops.";AT 14,3;"If you meet him"'"he will ask you to"'"pick the good one.";AT 17,3;"Pick the right "'"one and he will "'"let you pass. Pick"'"the wrong one and "'"you will die."
4348 RETURN
4350 PRINT ":: ::"'" ::::::"'" :: ::UITZILOPOCHTLI": PAPER 7
4352 PRINT AT 7,3;"The God of the"'"Wayfarer.";AT 10,3;"If you meet him"'"he will give you a": IF SK<>5 THEN PRINT "map";: IF SK<>6 THEN PRINT " and a ";
4354 IF SK<>6 THEN PRINT "compass";
4356 PRINT ".";AT 14,3;"He it is that "'"makes sure that "'"the wayfarer can "'"always reach the "'"blue shaft on each"'"level."
4358 RETURN
4400 LET B=0: LET A=LEN A$+33: LET A$=" "+A$+" "
4405 LET S$=N$: FOR T=1 TO A: LET B$=A$(T TO T+31): PRINT AT 22,0'B$: IF (B=0 AND B$(32)<>" ") OR (B=1 AND B$(32)=" ") THEN PRINT AT 8,16; PAPER G(AL+1); OVER 1;"ll": LET B=B+1-(B=1)*2
4410 NEXT T: RETURN
4450 OVER 1: FOR T=0 TO 18 STEP 6
4455 LET A=INT (RND*8): INK A: IF A=5 THEN GO TO 4455
4460 PRINT AT T,28;"iii";AT T+1,28;"lll";AT T+2,28;"vvv";AT T+3,28;"dic";AT T+4,29;"l": INK 0: PRINT AT T+4,28;CHR$ (65+T/6): NEXT T
4490 OVER 0
4495 RETURN
4499 REM FLUTE
4500 INK 1: PRINT AT 1,29;"::";AT 2,28;" .::. ";AT 3,28;" :"; PAPER 0;"i"; PAPER 5;": ";AT 4,28;" :"; PAPER 0;".."; PAPER 5;": ";AT 5,28;" :l :": FOR T=6 TO 20 STEP 2: PRINT AT T,28;" :m: ";AT T+1,28;" :::: ": NEXT T: PRINT AT 22,28;"bla": INK 0: RETURN
8000 DATA "AAAA:':':'':':':AAAA"
8001 DATA "AAAA: : : : : :AAAA"
8002 DATA "AAAA: '' :AAAA"
8003 DATA "AAA:':'''''''''':':AAA"
8004 DATA "AAA: : O : O : :AAA"
8005 DATA "AAA: : : : :AAA"
8006 DATA "AAA:.: /....\ :.:AAA"
8007 DATA "AAAA:..........:AAAA"
8008 DATA "A:'''''' : : '''''':A"
8009 DATA "A:'' '':A"
8010 DATA "A:.. ..:A"
8011 DATA "A:...:''''':'':''''':...:A"
8012 DATA "AAA:'' :..: '':AAA"
8013 DATA "AAA:..............:AAA"
8014 DATA "AAA: :AAA"
8015 DATA "AAA:'' '':AAA"
8016 DATA "AAA:'''':....:'''':AAA"
8017 DATA "AAA: :: :AAA"
8018 DATA "AAA: :: :AAA"
8019 DATA "AAA: :: :AAA"
8020 DATA "AAA:''''''::'''''':AAA"
8021 DATA ":''':'''''''''''''''''':''':"
8100 DATA 100,150,120,180,130,200,150,250,150,250,150,250
8200 DATA 2,4,1,5
8399 REM WALL
8400 PRINT AT 22,0'" YOU ARE BURIED ALIVE ": PAUSE 0: PAUSE 150
8405 PRINT AT 22,0'" YOU ARE DEAD ": PAUSE 200
8410 GO TO 8525
8499 REM END
8500 PRINT AT 22,0'"DO YOU REALLY WISH TO END (Y/N)?"
8505 LET K$=INKEY$: IF K$<>"Y" AND K$<>"N" THEN GO TO 8505
8510 BEEP 1,-25: IF K$<>"N" THEN GO TO 8525
8515 PRINT AT 22,0'" ";CHR$ (32+(CPS=1)*(115+PEEK 57070));
8520 PRINT " ": GO TO 2000
8525 PRINT AT 22,0'"END GAME OR RESTART MAZE (E/R)? "
8528 IF DEM=1 THEN PAUSE 1: PAUSE 500: GO TO 30
8530 LET K$=INKEY$: IF K$<>"E" AND K$<>"R" THEN GO TO 8530
8535 IF K$="R" THEN BEEP .1,.1: POKE 23659,0: GO TO 9
8540 BEEP .5,-25: BEEP 1.5,-35
8545 RANDOMIZE USR 0
9000 BORDER 6: POKE 23659,2: PAPER 7: CLS : POKE 23659,0: INK 2
9005 IF DEM=0 THEN PRINT TAB 8; FLASH 1;"SWITCH TAPE OFF"': GO TO 9010
9008 PRINT TAB 9; FLASH 1;"DEMONSTRATION"
9010 POKE 23675,12: POKE 23676,248: PRINT ''TAB 9;":'''''''''''''''''''''''''':"'TAB 9;": QUETZALCOATL :"'TAB 9;":..........................:"''TAB 9;"BY G J BRIGGS"''" * 1984 VIRGIN GAMES LTD"
9015 PRINT ''" You are thrown into an Aztectemple by bandits. Your only means of escape is to make your way through the passages while risking the vengeance of Aztec gods."
9020 PRINT ''"NOTE THIS PROGRAM WILL CRASH IF YOU ATTEMPT TO BREAK INTO IT "
9025 IF DEM=0 THEN POKE 57065,6: LET AR=USR 57344
9030 RETURN
9100 FOR T=7 TO 21: PRINT AT T,0;" ": NEXT T: PRINT PAPER 6'" ": RETURN
9110 PRINT AT 22,0'"PRESS C TO CONTINUE"; PAPER 6;" "
9115 LET K$=INKEY$: IF K$="" THEN GO TO 9115
9120 IF K$="D" THEN LET DEM=1: PRINT AT 22,0' FLASH 1;" DEMONSTRATION MODE IS NOW ON ": BEEP 1,1: GO TO 9125
9122 IF K$<>"C" THEN GO TO 9115
9125 BEEP .1,10: RETURN
9130 PAPER 7: POKE 23659,2: CLS : POKE 23659,0
9135 PRINT AT 0,0;" .::::. ::' ':: : : :''' ':'' ''': .''. : .''. .''. .''. ':'' : ::. .:: : : :... : .' :..: : : : : :..: : : '::::' '..' :... : :... : : :... '..' '..' : : : :... ':.... :::.... ''' "
9140 PRINT AT 0,0; OVER 1; INK 1; PAPER 5;"\ /llllllllllllllllllllllllllll \/"'" /\"'"/ \"'"_ __________________________": RETURNNote: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


