ZX81 Listing for tiles32.p


ZX81 program listing for **TILES32**SLR/2013**

**TILES32**SLR/2013** (tiles32.p)

My attempt at creating an Ultima like game on a ZX81. Tiles is a prototype of that game. This version will run on a 32K ZX81.


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 30776
VARS  : 31569
E-LINE: 31570
STKBOT: 31570
STKEND: 31570


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 ?7RNDA"  Q"
30518 
   2 REM
30241 :1LN ATN ?LN Eú5CLEAR ?:ñ
LN ATN ????±                    
          ²)E?ñ4 LN IF ?LN .?5ñ 
FAST 5= SGN 7GOSUB ?õ?6÷??¹? !!!
!¸¸¸¸!!!!¸¸¸¸!!!!           )??ñ
LN IF ?Eõ?76õ?GOSUB ?÷?BGOSUB
?IF ???LEN                    
           ÷)A?ñ4 LN IF ?5£RND ñ
FAST 5$RND)?FAST 5ñ ??LPRINT
SGN ;FAST ??SGN ;6ù?LN FOR ?5  6
$?5  6)?5õ 6+?5ú 6;?E+?61?E;?65?
LN C?5  69?LN 1?Eõ?FAST LN RND?
LN ??SGN LN >?69?E9?FAST 5  SGN
BGOSUB ?ASN ??LN ò??5?Eõ?6D?Eõ?
FAST 5  SGN BGOSUB ?ASN ??IF ??E
õ?FAST 5- SGN ;6D?Eõ?FAST 5+ 
SGN BGOSUB ?PAUSE ??Eõ?FAST 5- 
SGN BFOR GOSUB ?6D?EL?6H?EL?
FAST 5  SGN BGOSUB ?ASN M?IF M?E
L?FAST 54 SGN ;6H?EL?FAST 53 
SGN BGOSUB ?PAUSE INT ?EL?FAST 5
SGN BFOR GOSUB ?6H?5ñ FAST 54 
FAST ED?SGN LN )?FAST EH???
LPRINT SGN ;FAST ??SGN ;6P?EP?
GOSUB ?X?DùSTR$ LN ??FOR SGN 6T?
TAN E+?6õ?E;?6L?E9?FAST 5W SGN B
GOSUB ?TAB F?E+?FAST 5ñ SGN B
FOR GOSUB ?6õ?Eõ?FAST 5  SGN B
GOSUB ?ASN PI?IF PI?5+ 6õ?E9?
FAST 5S SGN BGOSUB ?TAB ??E+?
FAST 5ñ SGN ;6õ?Eõ?FAST 5+ SGN B
GOSUB ?PAUSE ??5  6õ?E9?FAST 5A 
SGN BGOSUB ?TAB $?E;?FAST 5ñ 
SGN BFOR GOSUB ?6L?EL?FAST 5  
SGN BGOSUB ?ASN 8?IF 8?53 6L?E9?
FAST 5D SGN BGOSUB ?TAB Y?E;?
FAST 5ñ SGN ;6L?EL?FAST 53 SGN B
GOSUB ?PAUSE ABS ?5  6L?LN ??ET?
FAST 5ñ SGN BGOSUB ?TAB SLOW ?
TAN ET?FAST 5õ SGN BGOSUB ?TAB
NEXT ?TAN Eõ?6+?EL?6;?LN ??5= 
FAST 5- SGN ??LN PRINT !?<?>)>?ñ
ñ LN IF ?E9?FAST 5W SGN BGOSUB ?
TAB V??M?NORTH)H?ñõ LN IF ?E9?
FAST 5S SGN BGOSUB ?TAB ?????SOU
TH)??ñõ LN IF ?E9?FAST 5A SGN B
GOSUB ?TAB ?????WEST)??ñô LN IF
?E9?FAST 5D SGN BGOSUB ?TAB -??$
?EAST)¹?ñô LN IF ?E9?FAST 5E 
SGN BGOSUB ?TAB P??G?ENTER)B?ñõ 
LN IF ?E9?FAST 5O SGN BGOSUB ?
TAB PEEK ??ASN ?OPEN)LEN ?ñô LN
IF ?E9?FAST 5H SGN BGOSUB ?TAB
LIST ??SCROLL ?HIT)SLOW ?ñó LN
IF ?E9?FAST 5B SGN BGOSUB ?TAB $
??ô?BUY)ñ?ñó LN IF ?E9?FAST 5C 
SGN BGOSUB ?TAB F??6?CAST)2?ñô 
LN IF ?E9?FAST 5Y SGN BGOSUB ?
TAB ???RND?YELL)W?ñô LN IF ?E9?
FAST 5Z SGN BGOSUB ?TAB ?????ZZZ
)??ñó LN IF ?E9?FAST 5Q SGN B
GOSUB ?TAB ´????QUIT)??ñô LN IF
?E9?FAST 5Q SGN BGOSUB ?TAB +??
FOR ?E9?FAST 5E SGN BGOSUB ?TAB
A??LN ?E9?FAST 5O SGN BGOSUB ?
TAB R??PI?E9?FAST 5H SGN BGOSUB
?TAB COS ??PI?E9?FAST 5C SGN B
GOSUB ?TAB OR ??PI?E9?FAST 5B 
SGN BGOSUB ?TAB REM ??PI?TAN LN
??5= FAST 5- SGN ??LN PRINT !?ó?
START)RETURN ?ñõ LN IF ?LN ??LN
1?5= FAST 5- SGN ??LN PRINT !?C?
OVER? )6?ñö LN IF ?Eõ?FAST LN
RND?LN ??SGN LN >?69?E9?FAST 5N 
SGN BGOSUB ?TAB ?????NO)??ñò LN
IF ?E9?FAST 5Y SGN BGOSUB ?TAB ?
????YES)??ñó LN IF ?E9?FAST 5N 
SGN BGOSUB ?TAB º?TAN E9?FAST 5Y
 SGN BGOSUB ?ASN .????LN ??5= 
FAST 5- SGN ??LN PRINT !?P?OKAY.
..)I?ñ÷ LN IF ?LN ??LN ??LN ??
LN ???RUN ?LN ??5= FAST 5- SGN ?
?LN PRINT !ET?FAST 5ö SGN B
GOSUB ?TAB CLS ??PAUSE ?CITY)
INPUT ?ñô LN IF ?ET?FAST 5÷ SGN
BGOSUB ?TAB 0??<?DUNGEON)£?ñ÷ 
LN IF ?ET?FAST 5ö SGN BGOSUB ?
ASN INKEY$?IF INKEY$??S?NOT HERE
)K?ñ! LN IF ?TAN LN ??5= FAST 5-
 SGN ??LN PRINT !???DIR?)??ñô 
LN IF ?LN ??LN 1?5= FAST 5- SGN
??LN PRINT !???>)??ññ LN IF ?Eõ?
FAST LN RND?LN ??SGN LN >?69?E9?
FAST 5W SGN BGOSUB ?TAB M??D?NOR
TH)8?ñõ LN IF ?E9?FAST 5S SGN B
GOSUB ?TAB SGN ??COS ?SOUTH)??ñõ
 LN IF ?E9?FAST 5A SGN BGOSUB ?
TAB LOAD ??NEW ?WEST)LLIST ?ñô 
LN IF ?E9?FAST 5D SGN BGOSUB ?
TAB $??ô?EAST) ?ñô LN IF ?E9?
FAST 5W SGN BGOSUB ?TAB 2????E9?
FAST 5S SGN BGOSUB ?TAB J????E9?
FAST 5A SGN BGOSUB ?TAB RND????E
9?FAST 5D SGN BGOSUB ?TAB ?????
LN 1?E9?FAST 5  SGN BGOSUB ?TAB
????????CANCEL)??ñö LN IF ?TAN
LN ??5= FAST 5- SGN ??LN PRINT !
?<?NOT HERE)"?ñ! LN IF ?TAN 5ñ 6
INKEY$?E+?FAST 5ò SGN BFOR
GOSUB ?FAST E+?FAST 5ò SGN ;SGN
7GOSUB ?õ?6÷?5ñ 6??E;?FAST 5ò 
SGN BFOR GOSUB ?FAST E;?FAST 5ò 
SGN ;SGN 7GOSUB ?L?6N?LN ??ET?
FAST 5ñ SGN BGOSUB ?TAB ô?5ó 
FAST E$?SGN ;6??ET?FAST 5ò SGN B
GOSUB ?TAB /?5" 6??ET?FAST 5ó 
SGN BGOSUB ?TAB G?5£ 6??ET?FAST
5ô SGN BGOSUB ?TAB RND?5$ 6??ET?
FAST 5õ SGN BGOSUB ?TAB ??5: 6??
ET?FAST 5ö SGN BGOSUB ?TAB ??5? 
FAST E)?SGN ;6??ET?FAST 5÷ SGN B
GOSUB ?TAB ²?5) 6??Eõ?FAST E+?
SGN BGOSUB ?TAB E?EL?FAST E;?
SGN BGOSUB ?TAB E?5ñ FAST E)?
SGN ;6??LN 0?E??FAST 5ñ SGN ;6??
EL?76L?GOSUB ?N?BGOSUB ?IF
SCROLL ?EINKEY$?FAST 5ñ SGN ;6
INKEY$?Eõ?76õ?GOSUB ?÷?BGOSUB ?
IF TAB ?E)?FAST 5ñ SGN ;6)?E)?
FAST 5ñ SGN BGOSUB ?PAUSE ÷?5  6
)?E$?FAST 5ñ SGN ;6$?E$?FAST 5÷ 
SGN BGOSUB ?PAUSE B?5  6$?TAN 5?
?GOSUB ?ñ?LN ??5( FAST 5) SGN
LN )?LN ??5ñ 6??5??LN SAVE ?LN ?
????µ¶· µ²±ôµ¶ò ò ñ )??ñ( LN ??5
??LN ??LN P?5ò 6??5??LN SAVE ?
LN ???-?µ¶µ µ²´ñµ¶  ò ñ )¶?ñ( 
LN ??5??LN ??LN P?5ó 6??5??LN
SAVE ?LN ???ASN ?·ô  ñò¶ö  ·ô¶öñ
ò)U?ñ( LN ??5??LN ??LN P?5ô 6??5
??LN SAVE ?LN ???RETURN ?³    ó³
ó  ³ ³ó ó)INPUT ?ñ( LN ??5??LN ?
?LN P?5õ 6??5??LN SAVE ?LN ???M?
ô  ·ò¶öñ ·ô öñò¶)6?ñ( LN ??5??
LN ??LN P?5ö 6??5??LN SAVE ?LN ?
????   ³ó³ó  ³  ó ó³)??ñ( LN ??5
??LN ??LN P?5÷ 6??5??LN SAVE ?
LN ???,?  ·ô¶öñò·ô  ñò¶ö)º?ñ( 
LN ??5??LN ??LN P?5! 6??5??LN
SAVE ?LN ???EXP ?  ³ ³ó ó³    ó³
ó)Y?ñ( LN ??5??LN ??LN P?5ù 6??5
??LN SAVE ?LN ???ò? ·ô öñò¶ô  ·ò
¶öñ)PAUSE ?ñ( LN ??5??LN ??LN P?
5ú 6??5??LN SAVE ?LN ???Q? ³  ó 
ó³   ³ó³ó )A?ñ( LN ??5??LN ??LN
P?5" 6??5??LN SAVE ?LN ?????··  
 ñôôôôò ò   )??ñ( LN ??5??LN ??
LN P?5£ 6??5??LN SAVE ?LN ???2
±  · õ ±    ¹  ):?ñ( LN ??5??LN
??LN P?5$ 6??5??LN SAVE ?LN ???
ABS ?úùúùùúùúúùúùùúùú)TAB ?ñ( 
LN ??5??LN ??LN P?5: 6??5??LN
SAVE ?LN ???ö? öôôö öò ö ôöòöò)
PLOT ?ñ( LN ??5??LN ??LN P?5? 6?
?5??LN SAVE ?LN ???U? µù µ±²õµ::
õòñòñ)E?ñ( LN ??5??LN ??LN P?5( 
6??5??LN SAVE ?LN ????? µú µ±²õµ
::õòñòñ)??ñ( LN ??5??LN ??LN P?5
) 6??5??LN SAVE ?LN ???6  ô ùú
  ùú  ùú )>?ñ( LN ??5??LN ??LN P
?TAN 5ñ FAST 5( SGN 7GOSUB ?5?67
?5( FAST E??FAST 5ñ SGN BFOR
GOSUB ?SGN LN )?FAST E5?SGN ;
GOSUB ???DùFAST Eõ?FAST 5??LN
SAVE ?E5???LN ??5??LN ??LN ??
SGN LN >?SGN FOR LN ??E5?765?
GOSUB ?7?BGOSUB ?IF VAL ?TAN Eù?
FAST 55 FAST EINKEY$?FAST 5ñ 
SGN BFOR GOSUB ?SGN LN )?FAST
 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 ;6H?5( 
FAST E??FAST 5ñ SGN BFOR GOSUB ?
SGN LN )?FAST 5ñ SGN ;6??5ñ 
FAST 5ô SGN 7GOSUB ???6??EH?
FAST E??GOSUB ???DùSTR$ LN ??
FOR SGN SGN FOR ?EH?FAST 5ñ SGN
;FAST E??FAST 5ñ SGN ;GOSUB ???D
ùSTR$ LN ??FOR SGN SGN FOR ?EH?
FAST 5ò SGN ;FAST E??FAST 5ò 
SGN ;GOSUB ???DùSTR$ LN ??FOR
SGN SGN FOR ?EH?FAST 5ó SGN ;
FAST E??FAST 5ó SGN ;GOSUB ???Dù
STR$ LN ??FOR SGN SGN FOR ?EH?
FAST 55 SGN ;6H?E??FAST 5ô SGN ;
6??E??76??GOSUB ???BGOSUB ?IF 7?
TAN 5ò FAST 5= SGN 7GOSUB ???6??
Eù?FAST 55 FAST E??SGN LN )?SGN
;6H?5- FAST 52 SGN 7GOSUB ???6??
EH?FAST E??FAST 55 ??LPRINT SGN
;FAST ??SGN BFOR GOSUB ?FAST EH?
FAST E??SGN ;?E??76??GOSUB ???B
GOSUB ?IF ??E??76??GOSUB ???B
GOSUB ?IF ??5= FAST 5- SGN ??LN
PRINT !?LPRINT ?         )**?ñù 
LN IF ?TAN 5> FAST 5- SGN ??LN
PRINT !?ó?CREATING)CLS ?ñ! LN
IF ?5< FAST 5- SGN ??LN PRINT !?
8?WORLD...)0?ñ! LN IF ?5  6)?5X?
GOSUB ?ñ?LN ??5""òLN ??5  FAST 5
SGN 7GOSUB ?+?6*?E)?FAST 5  
SGN BGOSUB ?TAB ??5= FAST 5- 
SGN ??LN PRINT !???ñ)??ññ LN IF
?E)?FAST 5ñ SGN BGOSUB ?TAB 7?5=
 FAST 5- SGN ??LN PRINT !?,?ò);?
ññ LN IF ?E)?FAST 5ò SGN BGOSUB
?TAB ACS ?5= FAST 5- SGN ??LN
PRINT !?TAB ?·)AT ?ññ LN IF ?E)?
FAST 5ó SGN BGOSUB ?TAB NEXT ?5=
 FAST 5- SGN ??LN PRINT !?REM
)DIM ?ññ LN IF ?E)?FAST 5ñ SGN ;
6)?E)?FAST 5ó SGN BGOSUB ?PAUSE
<?5  6)?5  FAST 53 SGN 7GOSUB ?;
?6.?E+?FAST 54 SGN LN )?FAST E;?
FAST 5ñ ??LPRINT SGN ;FAST ??
SGN ;6õ?5ñ 6??E+?FAST 5  SGN B
GOSUB ?TAB ???¹?E;?FAST 5  SGN B
GOSUB ?TAB ???¹?Eõ?FAST 54 SGN B
FOR GOSUB ?GOSUB ?X?DùSTR$ LN ??
FOR SGN 6??Eõ?FAST 5ñ SGN BFOR
GOSUB ?GOSUB ?X?DùSTR$ LN ??FOR
SGN 6??E??FAST 5õ SGN BGOSUB ?
PAUSE ASN ?Eõ?FAST 5ò SGN BFOR
GOSUB ?GOSUB ?X?DùSTR$ LN ??FOR
SGN 6??E??FAST 5õ SGN BGOSUB ?
PAUSE THEN ?E??6??5ARNDLN ??
FAST 5?ñSGN LN CLEAR ?6??5ARND
LN ??FAST 5?ñSGN LN CLEAR ?6??E?
?FAST 5M SGN BGOSUB ?PAUSE )??
TO ?E??FAST 5? SGN BGOSUB ?
PAUSE 9?5ô 6??E??FAST 5; SGN B
GOSUB ?PAUSE T?5ò 6??E??FAST 5R 
SGN BGOSUB ?PAUSE ??5ó 6??E??
FAST 5? SGN BGOSUB ?PAUSE ??5õ 6
??E??FAST 5? SGN BGOSUB ?PAUSE ?
?5ö 6??E??FAST 5? SGN BGOSUB ?
PAUSE ¹?5÷ 6??Eõ?GOSUB ?X?Dù
FAST E??SGN FOR LN ??E;?76;?
GOSUB ?.?BGOSUB ?IF 7?E+?76+?
GOSUB ?*?BGOSUB ?IF ??5= FAST 5-
 SGN ??LN PRINT !?ABS ?DONE.)LN
?ñõ LN IF ?LN ??TAN E??6??E??
FAST 5? SGN BGOSUB ?PAUSE RAND ?
E??6???¹?TAN         ! ! T?  ÷  
 ñ   õ - ú 4 õ   ) )     ÷   
COPY ?  $ $ GOSUB    ñ     ö   ù
   ò¹  ?³( )   õ õ 3 3 õ   ò   ñ
   ?   "     ó? REM       MCODER
 II         COPYRIGHT 1983   D C
 THRELFALL COMPILER AT 17300 PRO
G AT 20500
  10 REM **TILES**
  20 CLS
  30 CLEAR
  40 PRINT                    
           ²"
  50 FOR L=1 TO 20
  60 PRINT " !!!!¸¸¸¸!!!!¸¸¸¸!!!
!           ";
  70 NEXT L
  80 PRINT                    
           ÷";
  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 A=X
 130 LET B=Y
 145 GOSUB 3000
 150 LET I=0
 152 GOSUB 2000
 155 REM MOVE?
 156 LET I=CODE INKEY$
 160 IF I<>0 THEN 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 LET L=X
1002 LET M=Y
1005 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 RETURN
1041 IF T1=5 THEN RETURN
1050 LET X=L
1051 LET Y=M
1060 GOSUB 6000
1061 PRINT AT 20,22;">";
1062 IF I=60 THEN PRINT "NORTH";
1063 IF I=56 THEN PRINT "SOUTH";
1064 IF I=38 THEN PRINT "WEST";
1065 IF I=41 THEN PRINT "EAST";
1066 IF I=42 THEN PRINT "ENTER";
1067 IF I=52 THEN PRINT "OPEN";
1068 IF I=45 THEN PRINT "HIT";
1069 IF I=39 THEN PRINT "BUY";
1070 IF I=40 THEN PRINT "CAST";
1071 IF I=62 THEN PRINT "YELL";
1072 IF I=63 THEN PRINT "ZZZ";
1073 IF I=54 THEN PRINT "QUIT";
1080 IF I=54 THEN GOTO 1200
1081 IF I=42 THEN GOTO 1400
1082 IF I=52 THEN GOTO 1500
1083 IF I=45 THEN GOTO 1500
1084 IF I=40 THEN GOTO 1500
1085 IF I=39 THEN GOTO 1500
1100 RETURN
1200 GOSUB 6000
1210 PRINT AT 20,22;"START";
1220 GOSUB 6000
1225 GOSUB 2000
1230 PRINT AT 20,22;"OVER? ";
1250 LET I=CODE INKEY$
1260 IF I=51 THEN PRINT "NO";
1270 IF I=62 THEN PRINT "YES";
1280 IF I=51 THEN RETURN
1290 IF I<>62 THEN GOTO 1225
1300 GOSUB 6000
1310 PRINT AT 20,22;"OKAY...";
1320 GOSUB 6000
1330 GOSUB 6000
1340 GOSUB 6000
1350 GOSUB 6000
1360 GOTO 82
1400 GOSUB 6000
1410 PRINT AT 20,22;
1420 IF T1=6 THEN PRINT "CITY";
1430 IF T1=7 THEN PRINT "DUNGEON
";
1440 IF T1<6 THEN PRINT "NOT HER
E";
1450 RETURN
1500 GOSUB 6000
1510 PRINT AT 20,22;"DIR?";
1520 GOSUB 6000
1525 GOSUB 2000
1530 PRINT AT 20,22;">";
1540 LET I=CODE INKEY$
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
1630 GOSUB 2000
1640 IF I=0 THEN GOTO 1525
1650 PRINT "CANCEL";
1660 RETURN
1700 GOSUB 6000
1710 PRINT AT 20,22;"NOT HERE";
1720 RETURN
2000 LET X1=1
2005 FOR L=X-2 TO X+2
2010 LET Y1=1
2020 FOR M=Y-2 TO Y+2
2030 REM LET IN=CODE INKEY$
2040 REM IF IN>0 THEN LET I=IN
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 RETURN
2900 REM **CREATE TILES**
3000 DIM T(16*17)
3010 LET O=1
3020 LET A$="µ¶· µ²±ôµ¶ò ò ñ "
3030 GOSUB 4000
3040 LET O=2
3050 LET A$="µ¶µ µ²´ñµ¶  ò ñ "
3060 GOSUB 4000
3070 LET O=3
3071 LET A$="·ô  ñò¶ö  ·ô¶öñò"
3072 GOSUB 4000
3073 LET O=4
3074 LET A$="³    ó³ó  ³ ³ó ó"
3075 GOSUB 4000
3076 LET O=5
3077 LET A$="ô  ·ò¶öñ ·ô öñò¶"
3078 GOSUB 4000
3079 LET O=6
3080 LET A$="   ³ó³ó  ³  ó ó³"
3081 GOSUB 4000
3082 LET O=7
3083 LET A$="  ·ô¶öñò·ô  ñò¶ö"
3084 GOSUB 4000
3085 LET O=8
3086 LET A$="  ³ ³ó ó³    ó³ó"
3087 GOSUB 4000
3088 LET O=9
3089 LET A$=" ·ô öñò¶ô  ·ò¶öñ"
3090 GOSUB 4000
3091 LET O=10
3092 LET A$=" ³  ó ó³   ³ó³ó "
3093 GOSUB 4000
3200 LET O=11
3210 LET A$="··   ñôôôôò ò   "
3220 GOSUB 4000
3300 LET O=12
3310 LET A$=" ±  · õ ±    ¹  "
3320 GOSUB 4000
3400 LET O=13
3410 LET A$="úùúùùúùúúùúùùúùú"
3420 GOSUB 4000
3500 LET O=14
3510 LET A$=" öôôö öò ö ôöòöò"
3520 GOSUB 4000
3600 LET O=15
3610 LET A$=" µù µ±²õµ::õòñòñ"
3620 GOSUB 4000
3630 LET O=16
3640 LET A$=" µú µ±²õµ::õòñòñ"
3650 GOSUB 4000
3700 LET O=17
3710 LET A$="·  ô ùú  ùú  ùú "
3720 GOSUB 4000
3730 RETURN
4000 FOR B=1 TO 16
4010 LET T(16*(O-1)+B)=CODE A$(B
)
4020 NEXT B
4030 RETURN
5000 LET MM=PP+33*(X1-1)*4+33+4*
(Y1-1)+1
5010 LET NN=16*(O-1)+1
5020 FOR C=1 TO 4
5030 POKE MM,T(NN)
5040 POKE MM+1,T(NN+1)
5050 POKE MM+2,T(NN+2)
5060 POKE MM+3,T(NN+3)
5070 LET MM=MM+33
5080 LET NN=NN+4
5090 NEXT C
5100 RETURN
6000 REM **SCROLL**
6010 FOR C=2 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;"         ";
6090 RETURN
9000 REM **CREATE WORLD**
9001 PRINT AT 18,22;"CREATING";
AT 19,22;"WORLD...";
9002 LET Z=0
9010 DIM W(704)
9020 FOR X=0 TO 21
9021 IF Z=0 THEN PRINT AT 20,22;
"ñ";
9022 IF Z=1 THEN PRINT AT 20,22;
"ò";
9023 IF Z=2 THEN PRINT AT 20,22;
"·";
9024 IF Z=3 THEN PRINT AT 20,22;
"ô";
9025 LET Z=Z+1
9026 IF Z>3 THEN LET Z=0
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 9300
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
9241 PRINT AT 20,22;"DONE.";
9252 GOSUB 6000
9260 RETURN
9300 LET T=N
9310 IF S>75 THEN LET T=E
9320 GOTO 9200
9800 STOP
9810 CLS
9820 CLEAR
9830 SAVE "TILES"
9840 LET L=USR 20500