ZX81 Listing for gq2016.p


ZX81 program listing for Gem Quest*SLR/2016

Gem Quest*SLR/2016 (gq2016.p)

A later attempt at creating an Ultima style game. This version has you eating food and losing health if you run out.


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 30070
VARS  : 30863
E-LINE: 30864
STKBOT: 30864
STKEND: 30864


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

   0 REM MCII
30403 ?/INKEY$??INKEY$??INKEY$??
INKEY$?  ??INKEY$PI?8PI?INPUT
PI???LN Vò84IF INT £FAST STR$
ACS ?C!Y-LN õPILN (INKEY$)(BLN
UNPLOT RNDK;)CONT óLN UNPLOT RND
K=)? LN UNPLOT RNDK>2úLN UNPLOT
RNDK)/=LN òINKEY$)CONT óLN ò
INKEY$)? LN òINKEY$LN òINKEY$2
ñLN òINKEY$SGN LPRINT TAN FAST B
GOSUB ?LPRINT TAN Y0BGOSUB ?SóW/
RAND ;?õPI?J??J?7TAN RND)5 
FAST GOSUB ?/RNDù7FAST ;FOR 5
CHR$ òGOSUB PISTOP AT FOR GOSUB
KLPRINT ñQòù6:RNDCLEAR QT5CLEAR
QUóTAN LN VòñCOPY RETURN JFAST
GOSUB PILPRINT COS //LN VòG4IF
LN Vò?RETURN COPY CSAVE ñCOPY
RETURN JFAST GOSUB PILPRINT C
INPUT J?8COS 9?LN X÷ASN DRNDTAN
ACS UNPLOT 6ORNDEORND?NEW ?PCOS
LN ?INKEY$CNEXT TAN YF( AND
GOTO PI?YñACS CKòYôACS DKòACS ÷
PRINT LN INT INKEY$÷ACS ?Kò
INPUT ??)2£UKRND<IF VAL INKEY$
LET J4LET KRETURN !SòINPUT ?/Q
Y*( AND GOTO PI?NEW 3?VAL VAL
VAL JACS (ACS (ACS (??DDAT ??ù
AT GOSUB RNDù76:RNDAT Y/(MU
RNDY5)MTRNDTAN STR$ FAST VAL
RETURN
8218 RNDACS ?CõLN ( /QE:RNDLN ?
PI/CRETURN RNDABS JPIRNDACS ?C
õLN ( /*E:RNDPRINT LET E:RND?76:
RND5TRNDPAT LPRINT SGN TAN 7
PRINT 6:RNDCLEAR QT5UURNDXMURND
RETURN òATN ?PILET TAN U5RND
RETURN  CöXM5RND/AE£RNDñSAVE òùQ
?FAST LN ?INKEY$CCLS LPRINT
RETURN CASN RETURN ZC:RETURN D
ACS 0F?O4CLS ?/INKEY$LN ?!/
ABS ?LCOS ,LN õPI<"/PRINT
RETURN ?SùRETURN ""ACS R AND FPI
NEW Z5)ñ?ôRETURN 5K£RETURN ñCô
RETURN *SôJLN õPIACS õPI7/PRINT
NEW ZLN õPIJ?!PIINT º?MCIF LN O?
VAL ?PI)  STR$ FOR 7DFOR D?+?0
FOR KPLOT FOR FOR J?3??3?OC/FOR
JACS 0ACS 1?+?0IF ù??+??0?STOP ;
STOP /<>LPRINT AT ACS ?TAB (
INKEY$TAN ??*>=(INKEY$FOR ?C?
ACS ?TAB (INKEY$TAN GOSUB ?MRND?
ICLEAR ?Rö GOSUB ?/GOSUB ?/??
GOSUB ?Kñ76MRNDACS W??TAN LN   E
-RND7PRINT LN -?LN -?LN S?LN
INPUT ?INT ?LN R?LN <>?TAN LN
LEN ?YCODE LN RUN ?LN *?/$LN R?5
  LN >?óLN NEXT ?FAST LN LEN ?
LPRINT LN >?LN A?LN LLIST !)
CLEAR ?ñ( LN IF ?E?RNDLN INPUT ?
)RUN ?ñô LN IF ?E?RNDLN INPUT ?
LN .?LN .?YRUN LN RUN ?Y?LN RUN
?LN LET ?RETURN YTAB DRND5LIST ?
FAST LN EúE?RNDDIM LN POKE ?4
CLS INT ?
30455  
30386 DER II ENDAT YTAN ?B?6?RND
GOSUB ?0RND<5?RNDLN ??5  6?RNDE?
RND6?RNDLN A?WMõ?5?RNDFAST LN 7?
LPRINT FAST 7776-RNDU*RNDM5RND
LN -?RETURN PAUSE ATN NEXT ?
RETURN RAND ATN CHR$ ?RETURN IF
ATN ,?RETURN THEN CREM RETURN
DIM ATN J?RETURN GOTO ATN ??
RETURN GOSUB ATN >?RETURN FOR
ATN PAUSE ?RETURN NEXT ATN 2?
RETURN SLOW ATN ""?RETURN POKE
ATN VAL ?RETURN FAST ATN L?
RETURN INPUT ATN ¶?RETURN PLOT
ATN ??RETURN UNPLOT ATN ³?
RETURN LET ATN 2?RETURN CLS ATN
K?RETURN STOP ASN £?RETURN
PRINT ATN LET ?RETURN LPRINT
ATN CHR$ ?RETURN NEW ATN ò?
RETURN COPY ATN UNPLOT ?RETURN
REM C?RETURN SCROLL ATN P?
RETURN RETURN ATN $?RETURN
CLEAR ATN A?RETURN  4;E-RND-?
RETURN
8202 2?TAB Q?LN £?LN LEN ?YSLN
RUN ??DRNDLN H?5=RND?S?5?!?S?5?ó
?S?SCROLL RETURN ?4SGN LN RUN ?5
/?LN S?/LEN ñRETURN RETURN
GOSUB ?ACS 1**?POKE ??7?STR$
FOR FAST 67RNDRNDLN .?LN
INPUT ?JLN RUN ?LPRINT LN ??..
FOR SGN LN ??GOSUB ??RNDLN ??
FAST GOSUB ??RNDBGOSUB ?LPRINT
**6?RND?SCROLL ??7?7TAN ?7?7TAN
FAST AT E0RND7LN ??FOR BGOSUB PI
SQR E?RNDGOSUB ?**FOR 7/GOSUB Y?
PRINT LN -?LN ??LN ??FOR LN ??
FOR LET ?U?YLN /DIM FAST SCROLL
RETURN
10249 PRINT LN RUN ?LET LPRINT
TAN VAL FAST E?RNDPRINT ?FAST 76
?RNDLN POKE ?RETURN D4-Y
52727 LN INPUT ?JLN RUN ?LET A ?
LN INPUT ?/òLPRINT LET LPRINT
AT JTAN 5CLEAR ACS LN X?5ñEXP
LN X?LN LET ?5CLEAR ACS LN X?5ñ:
?X?LN -?RETURN
8198 ?LN -?RETURN INKEY$CZ
RETURN
51890 "CYRETURN AT C?RETURN CHR$
ASN >=?RETURN TAB ASN GOTO ?
RETURN ,ASN O?PRINT E-RND7LET ñT
?VAL ñ  VAL ñM?VAL ???5INPUT ?
LN S?/?5RND?LN S?/óLN ??5IF ?LN
S?/?Y?LN B?E?RNDFAST LN XCOPY
COPY LN ? óPRINT LN RUN ?LET
RETURN "CõLN B?/INPUT LPRINT
VAL GOSUB ??RNDLN ??Y)LN U?Yñ
LPRINT ?U?LN I?LN SQR ?5??LN X?5
PRINT !LN S?LN -?RETURN ,C>
RETURN ;ASN CLS ?RETURN +ASN
CLS ?5.?LN S?JTAN 5X?LN S??CLS ?
RNDACS ?TAB :"JLN RUN ?UTRND
RETURN )S?:(Y/5URND-??PRINT !LN
??Y?LN B?5RUN ?LN S?/JLN H?5RUN
?LN S?/8?NEW 3?5ñRNDACS ?C:5SRND
-ACS COPY LEN WUSR ?!?òùUTRND
CHR$ UNPLOT .?/RY
50167 LN ABS ?5IF ?LN S??.?LN ??
STR$ LN ??STR$ AT SGN TAN
RETURN RNDABS CONT ?ñWRNDòLN ??
RETURN 0SúRETURN RNDLN -?ó/
INPUT RETURN (M÷?CôRETURN $4òóòú
ACS COPY òLN ³?A ?DDGOSUB ??RNDù
?U÷?RETURN $C!RETURN (4òJTAN ?
TAN TAN RND9ñWRNDJMö?úY
ACS ?4KACS LIST ACS RNDFAST 5ö?O
ASN CONT ?LPRINT ?FFAST LN
SCROLL ?LPRINT óACS ?CNEXT J?6ù?
Uö?LN ??RETURN ñ4"Y5LN U?5SAVE ?
LN S?Uö?5õ??ôS**?TAN Eù?)M 
GOSUB ?GOSUB ??RNDGOSUB ?SQR
INT ³FAST LN ???NLPRINT ""GOSUB
?ñ?LN ??)  LN ??E?RNDGOSUB ?ñ?;6
ñ?ñ  ?COS :LN -?LN S?RETURN ñ
ASN ??RETURN  4úLN ?ACOPY FAST
LN -?RETURN =TAB CONT ?LN H?
LPRINT ?RETURN COPY 4£5SGN FOR
LN X?5???S?Y6?U?FAST 5??LN S?LN
-?LN ??RETURN (46LPRINT LN **?5
STR$ VAL LN X?5??LN S?LN -?LN 3?
5AT SGN LN X?5???S?LN -?LN 3?
LPRINT Y5LN U?5???S?I+FAST LN -?
RETURN (CRAND RETURN "4õLN ??/?
RETURN INKEY$4!5RND?LN S?/?
RETURN CHR$ 4"LN ??5U?LN S?/?LN
ABS ?/?LN S?LN -?FAST LN ??
RETURN (4NLN -?LN H?E-RND??LN X?
/"LN -?RETURN TO TAB CONT ?LN O
?5??LN S?LPRINT Y5LN U?5???S?
LPRINT Y5LN U?5H??S?5??LN S?LN ?
?RETURN )CùLPRINT X""LN -??5?LN
-?/FOR ?ññ /ùLN POKE ?ñ  GCOS £)
ù?>TAN B.GOSUB ???LIST INT º
STR$ LN ??FOR SGN ;FOR TAN Eñ?6õ
?TAN ?LCOS Eõ?FOR GOSUB KGOSUB ?
õ?TAN FAST Eõ?GOSUB ?ñ?BGOSUB ?
FAST AT LPRINT LN ??VAL FAST LN
??LPRINT AT ?7?TAN FOR ö!?
RETURN  CñACS  ??FOR 5  ACS T3Kñ
;FOR DFOR (PRINT TAN JPRINT LN ?
?LN ??RETURN + AND RND?RETURN ;
ABS RND?YFAST LN B?LN -?PRINT
LN ??LET RETURN +CôRETURN -47AT
??RETURN  4ôPRINT FAST /PEEK
FAST 5??LN X?LN NEXT ?YFAST 5??
LN U?/ZPRINT VAL /0RETURN /C(
RETURN *TAB CONT ?LN V?5)?LN S?/
BLN V?5CLEAR ?/NEXT YLPRINT LN B
?LET RETURN  COS RETURN +C)LN V?
5BFOR LN X?5GOSUB ?LN X?/SCROLL
LN V?Y;LN B?/<>YSGN ?B?RETURN )4
USR LN -?/INT RETURN PEEK 4?LN ?
?5A ?X?RETURN USR 4>LN ??5???S
??VAL FAST TAN ??TAN RETURN
CODE 4G5õ?YELN U?YFAST LN B?I
COPY LN 5?YSGN LN B?5>?/USR Eõ?
GOSUB ?õ?JGOSUB ???COS ,?TAN
RETURN RND4õ5ARND/VRETURN ABS 4)
LN ??5ACS ?LN X?YCODE 5???U?
RETURN INT ASN ??RETURN LEN 4,
LN -?LN S?LN -?Y5LN U?5>=?/º77
LN ??FOR TAN RETURN SGN 4+LN ??5
LIST ??S??PCOS ACS ?5ñ TAB ??
TAN RETURN SQR TAB CONT ?LN ??5ú
??S?JXACS ?CòINT ¹??A )RND ö!
GOSUB ?Kñ;ZACS GOSUB GOSUB ?
(LIST ??TAN LN H?LN -?PRINT Y
FAST LN B?LN H?YSGN LN B?LET
TAN LN -?RETURN -PRINT ATN -?
RETURN (C-RETURN RNDK$RETURN A
USR ??>=µ?LET ATN ??TAN LN ??/
PLOT LN H?/LET 5??/??J??J?7TAN
LN S?RETURN  ASN >?YE/PLN ??Y5/I
)(BLN A?LN $?Uõ??£E?RND6?RNDöô
LN B?(CLS $4PLOT LPRINT GOSUB ??
RNDTAN 5Eú/ó5"RNDYLN LN B??LN B?
??B?LN I?LN SQR ?5FOR ?/GOSUB
RETURN ,TAB CONT ?TAN LN ??
RETURN
10245 ?/!YE5ORNDLN U?Y65MRND?U?
LN -?LN S?FAST FAST LN -?LN I?Y7
LN B?5GOSUB ?LN X?LPRINT LN X?Y6
77LN U?LPRINT GOSUB ??RND???LN -
?LN S?FAST FAST YELN U?576LN X?
LPRINT LN X?77YGOSUB LN B?Y?LN U
?YB5GOSUB ?LN U?YIF LPRINT LN ??
FOR ?U?5  /?LN -?RETURN  LN )?
LET RETURN AABS CONT ?RETURN 0
AND CONT ?CHR$ 0ö ?ù/ TO FAST E
-RND)õ ;6-RNDLPRINT TAN LN -?LN
S?RETURN ñC1PRINT FAST 5*?LN S?
LPRINT LET RETURN  TAB ??YFOR
LN B?LN S?Y5LN U?LN -?5V??S?
GOSUB ?ñ?VAL FAST LN ò?6ñ?FAST
LN PAUSE ?RETURN
10249 KPRINT LN $?/LIST SGN
GOSUB ?FAST AT LPRINT LN ³?AT
GOSUB ?ñ?FAST LN ò?ñ3 LN ??
LPRINT TAN FAST LN LET ?LPRINT
RETURN ?""J?FY
48672 £RNDñSAVE òùYL?TAN ?7Y
48672 /PAUSE LN ò?FAST FAST LN
PAUSE ?RETURN
10257 C!RETURN 0SLET RETURN AK
GOSUB LN $?/CONT 5  SGN ,RETURN
-C(RETURN LC?CHR$ 0DFAST DDAT ùö
 ?ù</CONT SGN ,RETURN -PRINT LN
NEW ?LET ""???Y.PRINT LN I?LN
SQR ?5??LN X?YYLN B?LET LN B?YM5
KRNDLN U?5,RND?S?Y4/**?PCOS ?N
COS RTAN ?PCòRTAN ?NCOS RTAN E-
RND7(CPLOT RETURN INKEY$ASN ??
RETURN CHR$ ASN ??RETURN "ASN ??
7LN I?RETURN OR 4ú5??LN S?YABS
/?RETURN AND 4õ5·?/LIST PRINT Y
B5GOSUB ?LN U?LET RETURN =4ôY
TAB /GRETURN <>4ôYASN /8RETURN >
C+RETURN <4÷YASN LN 5?/<RETURN
>=4ú5CóLN X?YPAUSE RETURN <=
TAB CONT ?YIF LN 5?LN -?RETURN
AND ASN ,?TAN LN B?EúRND7LN ??
FOR LN ??FOR ?X?LN X?6õ?6÷?TAN E
õ?QCOPY 7TAN 5??LN S?LN 3?LN -?
PRINT 5N?LN S?LN 3?5X?LN S?52?
LN S?LET RETURN =4ôYTAB /A
RETURN <>4ôYASN /2RETURN >4÷Y
ASN LN 5?/!RETURN <C<RETURN >=4ô
Y AND RETURN <=TAB CONT ?5Có
LN X?YABS ?+?E÷?GOSUB ?ñ?úWOY""
RETURN  COS 7ó/POKE 5R??S?LN
SCROLL ò5VRNDACS QTAN 5LEN ??S?5
VRNDACS PLOT ?÷ò5ò LN **ù""FAST
LN 2?SGN ??ú5ò LN **ù""LN 2?COS
LN 2?COS ??E£RND/SCROLL óóóVAL ó
óóóVAL LN EXP ?5ó LN **ùAT LN 2ù
7Y
28963 7AT ?7?7QREM 7?7?7TAN 77?7?
ù7U£RND1""U$RND0TAN LN -?LN S?Y5
LN U?YGOSUB LN B?Y?5ñ?LN U?5??
LN S?LN H?5???S?7D7FAST FAST AT
Eñ?LN COS :AT LN ??GOSUB ?ñ?TAN
Eñ???<Q /óEñ??LCOS GOSUB KTAN
FAST LN ??5GOSUB ?LN X?LPRINT
LN X?5Dù?X?LN ?5??LN S?5FOR SGN
?X?EôRND9QCOPY FQCOPY FQ 6ù?Y5E?
RNDLN U?I:Uõ??LN X?5ATN ??SJM5
RNDöô?7(UNPLOT $4RUN 54 6?RNDE0
RNDñ? ù6ñ?6õ?TAN RND?:RND?)RND
?1RND?4RNDFOR ?7RND¶?N(REM
30241 :2LN ATN ?LN Eú5/?:ñLN ATN
????± GEM QUEST ** FRACTURED WOR
LD ²)E?ñ4 LN IF ?LN .?5ñ FAST 5=
 SGN 7GOSUB ?4?66???? )??ññ LN
IF ?5+ LN RUN ??·?           )??
ñ" LN IF ?E4?764?GOSUB ?6?B
GOSUB ?IF ???CODE             
                  ÷)8?ñ4 LN IF ?
5ù FAST 5- SGN ??LN PRINT !?NEW
?         )<>?ñù LN IF ?LN .?5£
RND ñFAST 5$RND)?FAST 5ñ ??
LPRINT SGN ;FAST ??SGN ;68?LN
POKE ?5  6C?5  6G?5õ 6K?5ú 6O?5?
 6S?5? 6W?5ñ 6RND?5  6??5COS  6?
?LN SGN ????DONE.)??ñõ LN IF ?
LN .?LN IF ?LN A????E4?6??E4?
FAST 5  SGN BGOSUB ?ASN -?IF -?E
4?FAST 5- SGN ;6??E4?FAST 5+ 
SGN BGOSUB ?PAUSE N?E4?FAST 5- 
SGN BFOR GOSUB ?6??E??6??E??
FAST 5  SGN BGOSUB ?ASN CHR$ ?
IF CHR$ ?E??FAST 54 SGN ;6??E??
FAST 53 SGN BGOSUB ?PAUSE NEXT ?
E??FAST 54 SGN BFOR GOSUB ?6??5ñ
 FAST 54 FAST E??SGN LN )?FAST E
????LPRINT SGN ;FAST ??SGN ;6??E
??GOSUB ???DùSTR$ LN ??FOR SGN 6
??TAN E??FAST 5  SGN BGOSUB ?
PAUSE ??E??FAST 5ñ SGN BFOR
GOSUB ?6??E??FAST 5ñ SGN BGOSUB
?ASN ??IF ??ES?FAST 5ñ SGN BFOR
GOSUB ?6S?ES?FAST 5ñ SGN BGOSUB
?ASN ??IF ???)?EK?64?EO?6??E??
FAST 5W SGN BGOSUB ?TAB 4?EK?
FAST 5ñ SGN BFOR GOSUB ?64?E4?
FAST 5  SGN BGOSUB ?ASN R?IF R?5
+ 64?E??FAST 5S SGN BGOSUB ?TAB
SGN ?EK?FAST 5ñ SGN ;64?E4?FAST
5+ SGN BGOSUB ?PAUSE FAST ?5  64
?E??FAST 5A SGN BGOSUB ?TAB ò?EO
?FAST 5ñ SGN BFOR GOSUB ?6??E??
FAST 5  SGN BGOSUB ?ASN ;?IF ;?5
3 6??E??FAST 5D SGN BGOSUB ?TAB
N?EO?FAST 5ñ SGN ;6??E??FAST 53 
SGN BGOSUB ?PAUSE ??5  6??LN ??E
??FAST 5ñ SGN BGOSUB ?TAB ???
STOP ?E??FAST 5õ SGN BGOSUB ?
TAB ???STOP ?E4?6K?E??6O?E??
FAST 5W SGN BGOSUB ?TAB ,??:?NOR
TH)¹?ñõ LN IF ?LN .?E??FAST 5W 
SGN BGOSUB ?TAB D?TAN E??FAST 5S
 SGN BGOSUB ?TAB ACS ??Z?SOUTH)U
?ñõ LN IF ?LN .?E??FAST 5S SGN B
GOSUB ?TAB AND ?TAN E??FAST 5A 
SGN BGOSUB ?TAB CLS ??LOAD ?WEST
)FOR ?ñô LN IF ?LN .?E??FAST 5A 
SGN BGOSUB ?TAB ú?TAN E??FAST 5D
 SGN BGOSUB ?TAB F??3?EAST).?ñô 
LN IF ?LN .?E??FAST 5D SGN B
GOSUB ?TAB U?TAN E??FAST 5H SGN
BGOSUB ?TAB ?????HIT)??ñó LN IF
?LN .?E??FAST 5H SGN BGOSUB ?
TAB ???IF ?E??FAST 5Q SGN B
GOSUB ?TAB £?? ?QUIT)??ñô LN IF
?LN .?E??FAST 5Q SGN BGOSUB ?
TAB 1??ñ?E??FAST 5E SGN BGOSUB ?
TAB Z??N?ENTER)I?ñõ LN IF ?LN .?
E??FAST 5E SGN BGOSUB ?TAB SQR ?
?Z??CHR$ ?ZZZ)PEEK ?ñó LN IF ?
LN .?TAN ?GOSUB ?NO MOVE)NEW ?ñ÷
 LN IF ?LN .?TAN 5ò FAST 5- SGN
??LN PRINT !???GOLD:)ú?ñõ LN IF
?EW?LN INPUT ??6? )5?ññ LN IF ?5
ó FAST 5- SGN ??LN PRINT !?RND?H
LTH:)V?ñõ LN IF ?ES?LN INPUT ???
? )??ññ LN IF ?5ô FAST 5- SGN ??
LN PRINT !???FOOD:)??ñõ LN IF ?E
??LN INPUT ??´? )³?ññ LN IF ?5ö 
FAST 5- SGN ??LN PRINT !?8?WORLD
: )1?ñ÷ LN IF ?ERND?LN INPUT ?5÷
 FAST 5- SGN ??LN PRINT !?ASN ?G
EMS:  )??ñ÷ LN IF ?E??LN INPUT ?
LN .?LN ???STOP ?>)LLIST ?ññ LN
IF ?LN J?E??FAST 5  SGN BGOSUB ?
PAUSE RETURN ?TAN ?GOTO ?LN ???£
?START)÷?ñõ LN IF ?LN .?LN ???B?
OVER? Y/N)2?ñù LN IF ?LN .?LN
IF ?E??FAST 5N SGN BGOSUB ?TAB ?
????NO)??ñò LN IF ?E??FAST 5Y 
SGN BGOSUB ?TAB ?????YES)??ñó 
LN IF ?E??FAST 5N SGN BGOSUB ?
TAB ¶?5>=£LN ??64?E??FAST 5Y 
SGN BGOSUB ?ASN *??N?LN ???8?OKA
Y...)1?ñ÷ LN IF ?LN .?LN ??LN ??
LN ??LN ???,?LN ??E??FAST 5ö 
SGN BGOSUB ?TAB PEEK ??4?E??
FAST 5÷ SGN BGOSUB ?TAB RUN ??
FOR ?DUNGEON)SLOW ?ñ÷ LN IF ?LN
.?E??FAST 5ö SGN BGOSUB ?ASN 3?
IF 3??<?NOT HERE)"?ñ! LN IF ?LN
.?TAN ?B?CITY)7?ñô LN IF ?LN .?
LN ???RND?FOOD OR)T?ñ÷ LN IF ?
LN .?LN ?????HEALTH?)??ñ÷ LN IF
?LN .?LN IF ?5  6??E??FAST 5F 
SGN BGOSUB ?TAB ²?5ñ 6??E??FAST
5F SGN BGOSUB ?TAB 7??*?FOOD)<
ô LN IF ?LN .?E??FAST 5H SGN B
GOSUB ?TAB R?5ò 6??E??FAST 5H 
SGN BGOSUB ?TAB AND ??EXP ?HEAL
TH)COS ?ñö LN IF ?LN .?E??FAST 5
  SGN BGOSUB ?TAB FOR ??<>?LN ??
?IF ?HOW MANY?)LET ?ñù LN IF ?
LN .?LN ???<?1-9 X10)£?ñ÷ LN IF
?LN .?LN IF ?E??FAST 50 SGN B
FOR GOSUB ?FAST 5ú SGN LN )?6??E
??FAST 5ú SGN BGOSUB ?ASN ??IF ?
??<>?E??FAST 5? SGN BGOSUB ?
PAUSE ???<>?E??LN INPUT ?LN .?
LN ??EW?FAST E??SGN BFOR GOSUB ?
FAST 5  SGN BGOSUB ?ASN ·?IF ·??
ASN ?EW?FAST E??SGN BFOR GOSUB ?
6W?E??FAST 5ñ SGN BGOSUB ?TAB K?
E??FAST E??SGN ;6??E??FAST 5ò 
SGN BGOSUB ?TAB ASN ?ES?FAST E??
SGN ;6S??CHR$ ?PURCHASED)LN ?ñù 
LN IF ?LN .?TAN ?GOSUB ?NO GOLD)
NEW ?ñ÷ LN IF ?LN .?TAN LN ???ô?
DIR?) ?ñô LN IF ?LN .?LN IF ?E??
FAST 5W SGN BGOSUB ?TAB P??D?NOR
TH)8?ñõ LN IF ?LN .?E??FAST 5S 
SGN BGOSUB ?TAB ?????SOUTH)??ñõ 
LN IF ?LN .?E??FAST 5A SGN B
GOSUB ?TAB ?????WEST)??ñô LN IF
?LN .?E??FAST 5D SGN BGOSUB ?
TAB ;??$?EAST)¹?ñô LN IF ?LN .?E
??FAST 5W SGN BGOSUB ?TAB E??
NEXT ?E??FAST 5S SGN BGOSUB ?
TAB V??NEXT ?E??FAST 5A SGN B
GOSUB ?TAB ATN ??NEXT ?E??FAST 5
SGN BGOSUB ?TAB <>??NEXT ??
NEW ?CANCEL) STEP ?ñö LN IF ?LN
.?TAN LN ???ñ?NOT HERE)RAND ?ñ! 
LN IF ?LN .?TAN LN ???1?YOU DIED
*)=?ñù LN IF ?LN .?LN ???ñ?5  6?
?5ñ 6??EK?FAST 5ò SGN BFOR
GOSUB ?FAST EK?FAST 5ò SGN ;SGN
7GOSUB ?4?66?5ñ 6??EO?FAST 5ò 
SGN BFOR GOSUB ?FAST EO?FAST 5ò 
SGN ;SGN 7GOSUB ???6??LN ??E??
FAST 5ñ SGN BGOSUB ?TAB 0?5ó 
FAST EC?SGN ;6??E??FAST 5ò SGN B
GOSUB ?TAB K?5" 6??E??FAST 5ó 
SGN BGOSUB ?TAB CODE ?5£ 6??E??
FAST 5ô SGN BGOSUB ?TAB **?5$ 6?
?E??FAST 5õ SGN BGOSUB ?TAB
GOTO ?5: 6??E??FAST 5ö SGN B
GOSUB ?TAB ö?5? FAST EG?SGN ;6??
E??FAST 5÷ SGN BGOSUB ?TAB ,?5) 
6??E4?FAST EK?SGN BGOSUB ?TAB PI
?E??FAST EO?SGN BGOSUB ?TAB PI?5
ñ FAST EG?SGN ;6??LN S?E??FAST 5
ñ SGN ;6??E??76??GOSUB ???B
GOSUB ?IF ??E??FAST 5ñ SGN ;6??E
4?764?GOSUB ?6?BGOSUB ?IF ??EG?
FAST 5ñ SGN ;6G?EG?FAST 5ñ SGN B
GOSUB ?PAUSE 3?5  6G?EC?FAST 5ñ 
SGN ;6C?EC?FAST 5÷ SGN BGOSUB ?
PAUSE Z?5  6C?Eõ?FAST LN RND?LN
??SGN LN >?6??TAN 5?RND6??E??
FAST 5ñ SGN ;6??E??REM  SGN B
GOSUB ?TAB C?E??FAST 5ñ SGN ;** 
SGN BGOSUB ?TAB C?E??FAST 5ò 
SGN ;£ SGN BGOSUB ?TAB C??F??
NOT ?E??FAST 5ó SGN ;6??TAN E8?
FAST 55 FAST E??FAST 5ñ SGN B
FOR GOSUB ?SGN LN )?FAST 5ô SGN
LN )?FAST 55 ??LPRINT SGN ;FAST
??FAST 5ô ??LPRINT SGN ;FAST ??
FAST E??FAST 5ñ SGN BFOR GOSUB ?
SGN LN )?FAST 5ñ ??LPRINT SGN ;
FAST ??SGN ;6??E??FAST E??FAST 5
ñ SGN BFOR GOSUB ?FAST 5- SGN
LN )?SGN ;6??5ñ FAST 5ô SGN 7
GOSUB ? ?6²?E??FAST E???E??FAST
5ñ SGN ;FAST E??FAST 5ñ SGN ;?E?
?FAST 5ò SGN ;FAST E??FAST 5ò 
SGN ;?E??FAST 5ó SGN ;FAST E??
FAST 5ó SGN ;?E??FAST 55 SGN ;6?
?E??FAST 5ô SGN ;6??E ?76 ?
GOSUB ?²?BGOSUB ?IF Z?TAN 5" 
FAST 5= SGN 7GOSUB ? ?6²?E8?
FAST 55 FAST E ?SGN LN )?SGN ;6?
?5- FAST 52 SGN 7GOSUB ?´?6¶?E??
FAST E´?FAST 55 ??LPRINT SGN ;
FAST ??SGN BFOR GOSUB ?FAST E??
FAST E´?SGN ;?E´?76´?GOSUB ?¶?B
GOSUB ?IF ??E ?76 ?GOSUB ?²?B
GOSUB ?IF ??5= FAST 5- SGN ??LN
PRINT !?<>?         )USR ?ñù LN
IF ?5= FAST 5- SGN ??LN PRINT !
TAN 5< FAST 5- SGN ??LN PRINT !?
£?BUILDING)ô?ñ! LN IF ?5= FAST 5
SGN ??LN PRINT !?A?>)9?ññ LN
IF ?5??GOSUB ?ñ?LN ??5""òLN ??5 
 FAST 5+ SGN 7GOSUB ?K?6M?5  
FAST 53 SGN 7GOSUB ?O?6Q?EK?
FAST 54 SGN LN )?FAST EO?FAST
 ??LPRINT SGN ;FAST ??SGN ;64?5ñ
 6??EK?FAST 5  SGN BGOSUB ?TAB -
??VAL ?EO?FAST 5  SGN BGOSUB ?
TAB B??VAL ?E4?FAST 54 SGN BFOR
GOSUB ?GOSUB ???DùSTR$ LN ??FOR
SGN 6¸?E4?FAST 5ñ SGN BFOR
GOSUB ?GOSUB ???DùSTR$ LN ??FOR
SGN 6??E??FAST 5õ SGN BGOSUB ?
PAUSE ö?E4?FAST 5ò SGN BFOR
GOSUB ?GOSUB ???DùSTR$ LN ??FOR
SGN 6??E¸?FAST 5õ SGN BGOSUB ?
PAUSE ,?E??6¸?5ARNDLN ??FAST 5?ñ
SGN LN CLEAR ?6£?5ARNDLN ??FAST
5?ñSGN LN CLEAR ?6(?E(?FAST 5M 
SGN BGOSUB ?PAUSE ???IF ?E£?
FAST 5? SGN BGOSUB ?PAUSE ??5ô 6
??E£?FAST 5; SGN BGOSUB ?PAUSE ?
?5ò 6??E£?FAST 5R SGN BGOSUB ?
PAUSE ¹?5ó 6??E£?FAST 5? SGN B
GOSUB ?PAUSE 1?5õ 6??E£?FAST 5? 
SGN BGOSUB ?PAUSE L?5ö 6??E£?
FAST 5? SGN BGOSUB ?PAUSE VAL ?5
÷ 6??E4?GOSUB ???DùFAST E??SGN
FOR LN ??EO?76O?GOSUB ?Q?BGOSUB
?IF ??EK?76K?GOSUB ?M?BGOSUB ?
IF ??TAN E¸?6??E(?FAST 5? SGN B
GOSUB ?PAUSE =?E??6???VAL ?TAN  
       * * ??          = - ó 4 ?
   ?   ñ       ?       X?  ö ö ö
   ñ   ò?  N   ñ   ö   ö   ú   
FAST ?  V?  õ õ 3 3 ñ   L   ò   
PRINT  ó? REM       MCODER II   
      COPYRIGHT 1983   D C THREL
FALL COMPILER AT 17300 PROG AT 2
0500
  10 REM **TILES**
  20 CLS
  30 CLEAR
  40 PRINT  GEM QUEST ** FRACT
URED WORLD ²"
  50 FOR L=1 TO 20
  60 PRINT " ";TAB 21;"         
  ";
  70 NEXT L
  80 PRINT                    
           ÷";AT 9,22;"         
"
  81 LET PP=PEEK 16396+256*PEEK
16397+1
  82 GOSUB 9000
  85 LET Q=0
  90 LET Z=0
 100 LET X=5
 110 LET Y=10
 120 LET HP=100
 121 LET GL=100
 122 LET WL=1
 123 LET GM=0
 130 LET FD=100
 145 GOSUB 3000
 146 PRINT "DONE."
 150 GOSUB 1100
 155 REM M?
 160 GOSUB 1000
 200 GOTO 150
 500 LET LL=L
 510 IF L<0 THEN LET LL=L+22
 520 IF L>21 THEN LET LL=L-22
 530 LET MM=M
 540 IF M<0 THEN LET MM=M+32
 550 IF M>31 THEN LET MM=M-32
 560 LET LOC=1+32*LL+MM
 570 LET T1=W(LOC)
 580 RETURN
1000 IF FD>0 THEN LET FD=FD-1
1002 IF FD<1 THEN LET HP=HP-1
1003 IF HP<1 THEN GOTO 1810
1005 LET L=X
1006 LET M=Y
1007 IF I=60 THEN LET L=X-1
1008 IF L<0 THEN LET L=21
1010 IF I=56 THEN LET L=X+1
1015 IF L>21 THEN LET L=0
1020 IF I=38 THEN LET M=Y-1
1025 IF M<0 THEN LET M=31
1030 IF I=41 THEN LET M=Y+1
1032 IF M>31 THEN LET M=0
1035 GOSUB 500
1040 IF T1=1 THEN GOTO 1095
1041 IF T1=5 THEN GOTO 1095
1050 LET X=L
1051 LET Y=M
1060 IF I=60 THEN PRINT "NORTH"
1061 IF I=60 THEN RETURN
1062 IF I=56 THEN PRINT "SOUTH"
1063 IF I=56 THEN RETURN
1064 IF I=38 THEN PRINT "WEST"
1065 IF I=38 THEN RETURN
1066 IF I=41 THEN PRINT "EAST"
1067 IF I=41 THEN RETURN
1068 IF I=45 THEN PRINT "HIT"
1069 IF I=45 THEN GOTO 1500
1078 IF I=54 THEN PRINT "QUIT"
1079 IF I=54 THEN GOTO 1200
1080 IF I=42 THEN PRINT "ENTER"
1081 IF I=42 THEN GOTO 1400
1089 PRINT "ZZZ"
1090 RETURN
1095 PRINT "NO MOVE"
1096 RETURN
1100 PRINT AT 2,22;"GOLD:";GL;" 
";AT 3,22;"HLTH:";HP;" ";AT 4,22
;"FOOD:";FD;" ";AT 6,22;"WORLD: 
";WL;AT 7,22;"GEMS:  ";GM
1105 GOSUB 6000
1110 PRINT ">";
1120 GOSUB 2000
1130 IF I>0 THEN RETURN
1140 GOTO 1120
1200 GOSUB 6000
1210 PRINT "START"
1220 GOSUB 6000
1230 PRINT "OVER? Y/N"
1250 GOSUB 1100
1260 IF I=51 THEN PRINT "NO";
1270 IF I=62 THEN PRINT "YES";
1280 IF I=51 THEN LET L=USR 3292
1290 IF I<>62 THEN GOTO 1250
1300 GOSUB 6000
1310 PRINT "OKAY..."
1320 GOSUB 6000
1330 GOSUB 6000
1340 GOSUB 6000
1350 GOSUB 6000
1360 GOTO 82
1400 GOSUB 6000
1420 IF T1=6 THEN GOTO 1460
1430 IF T1=7 THEN PRINT "DUNGEON
"
1440 IF T1<6 THEN PRINT "NOT HER
E"
1450 RETURN
1460 PRINT "CITY"
1461 GOSUB 6000
1462 PRINT "FOOD OR"
1463 GOSUB 6000
1465 PRINT "HEALTH?"
1466 GOSUB 1100
1467 LET E=0
1468 IF I=43 THEN LET E=1
1469 IF I=43 THEN PRINT "FOOD"
1470 IF I=45 THEN LET E=2
1471 IF I=45 THEN PRINT "HEALTH"
1472 IF E=0 THEN GOTO 1650
1473 GOSUB 6000
1474 PRINT "HOW MANY?"
1475 GOSUB 6000
1476 PRINT "1-9 X10"
1477 GOSUB 1100
1478 LET I=(I-28)*10
1479 IF I<10 THEN GOTO 1650
1480 IF I>90 THEN GOTO 1650
1481 PRINT I
1482 GOSUB 6000
1484 IF GL-I<0 THEN GOTO 1489
1485 LET GL=GL-I
1486 IF E=1 THEN LET FD=FD+I
1487 IF E=2 THEN LET HP=HP+I
1496 PRINT "PURCHASED"
1497 RETURN
1498 PRINT "NO GOLD"
1499 RETURN
1500 GOSUB 6000
1510 PRINT "DIR?"
1520 GOSUB 1100
1550 IF I=60 THEN PRINT "NORTH"
1560 IF I=56 THEN PRINT "SOUTH"
1570 IF I=38 THEN PRINT "WEST"
1580 IF I=41 THEN PRINT "EAST"
1590 IF I=60 THEN GOTO 1700
1600 IF I=56 THEN GOTO 1700
1610 IF I=38 THEN GOTO 1700
1620 IF I=41 THEN GOTO 1700
1650 PRINT "CANCEL"
1660 RETURN
1700 GOSUB 6000
1710 PRINT "NOT HERE"
1720 RETURN
1800 GOSUB 6000
1810 PRINT "YOU DIED*"
1820 GOSUB 6000
1830 GOTO 1200
2000 LET I=0
2002 LET X1=1
2005 FOR L=X-2 TO X+2
2010 LET Y1=1
2020 FOR M=Y-2 TO Y+2
2090 GOSUB 500
2120 IF T1=1 THEN LET O=3+Q
2130 IF T1=2 THEN LET O=11
2131 IF T1=3 THEN LET O=12
2132 IF T1=4 THEN LET O=13
2133 IF T1=5 THEN LET O=14
2134 IF T1=6 THEN LET O=15+Z
2135 IF T1=7 THEN LET O=17
2137 IF L=X AND M=Y THEN LET O=1
+Z
2140 GOSUB 5000
2150 LET Y1=Y1+1
2160 NEXT M
2170 LET X1=X1+1
2180 NEXT L
2190 LET Z=Z+1
2200 IF Z>1 THEN LET Z=0
2210 LET Q=Q+1
2220 IF Q>7 THEN LET Q=0
2230 LET I=CODE INKEY$
2240 RETURN
2900 REM **CREATE TILES**
3000 LET T=16509
3010 LET T=T+1
3020 IF PEEK T=234 AND PEEK (T+1
)=216 AND PEEK (T+2)=12 THEN
GOTO 3040
3030 GOTO 3010
3040 LET T=T+3
3050 RETURN
5000 LET MM=PP+33*(X1-1)*4+33+4*
(Y1-1)+1
5010 LET NN=T+(O-1)*22
5020 FOR C=1 TO 4
5030 POKE MM,PEEK NN
5040 POKE MM+1,PEEK (NN+1)
5050 POKE MM+2,PEEK (NN+2)
5060 POKE MM+3,PEEK (NN+3)
5070 LET MM=MM+33
5080 LET NN=NN+4
5090 NEXT C
5100 RETURN
6000 FOR C=11 TO 20
6020 LET MM=PP+33*C
6030 FOR D=22 TO 30
6040 POKE MM+D-33,PEEK (MM+D)
6050 NEXT D
6060 NEXT C
6080 PRINT AT 20,22;"         ";
AT 20,22;
6090 RETURN
9000 PRINT AT 19,22;"BUILDING";
AT 20,22;">";
9010 DIM W(704)
9020 FOR X=0 TO 21
9030 FOR Y=0 TO 31
9040 LET L=X*32+Y+1
9050 LET T=1
9060 IF X=0 THEN GOTO 9200
9070 IF Y=0 THEN GOTO 9200
9080 LET N=W(L-32)
9090 LET E=W(L-1)
9100 IF E>5 THEN LET E=W(L-2)
9110 IF N>5 THEN LET N=E
9120 LET R=USR 16550/328
9125 LET S=USR 16550/328
9130 IF S>50 THEN GOTO 9270
9140 IF R>15 THEN LET T=4
9150 IF R>25 THEN LET T=2
9160 IF R>55 THEN LET T=3
9170 IF R>75 THEN LET T=5
9180 IF R>95 THEN LET T=6
9190 IF R>97 THEN LET T=7
9200 LET W(L)=T
9220 NEXT Y
9240 NEXT X
9260 RETURN
9270 LET T=N
9280 IF S>75 THEN LET T=E
9290 GOTO 9200
9299 STOP
9310 REM **£µ¶· µ²±ôµ¶ò ò ñ 
9320 REM µ¶µ µ²´ñµ¶  ò ñ 
9330 REM ·ô  ñò¶ö  ·ô¶öñò
9340 REM ³    ó³ó  ³ ³ó ó
9350 REM ô  ·ò¶öñ ·ô öñò¶
9360 REM    ³ó³ó  ³  ó ó³
9370 REM   ·ô¶öñò·ô  ñò¶ö
9380 REM   ³ ³ó ó³    ó³ó
9390 REM  ·ô öñò¶ô  ·ò¶öñ
9400 REM  ³  ó ó³   ³ó³ó 
9410 REM ··   ñôôôôò ò   
9420 REM  ±  · õ ±    ¹  
9430 REM úùúùùúùúúùúùùúùú
9440 REM  öôôö öò ö ôöòöò
9450 REM  µù µ±²õµ::õòñòñ
9460 REM  µú µ±²õµ::õòñòñ
9470 REM ·  ô ùú  ùú  ùú 
9500 SAVE "GQ2016"
9510 RAND USR 20500