File: AMAIN.LS of Disk: V50/Source/Source-Listing-FORTRAN-2
(Source file text)
RALF V50A 24-JUL-20 PAGE 1 EXTERN SAVEGM EXTERN RSTRGM EXTERN A5TOA1 SECT AMAIN EXTERN BITSET EXTERN BUG EXTERN CARRY EXTERN DROP EXTERN DSTROY EXTERN GETIN EXTERN IABS EXTERN JUGGLE EXTERN MAX0 EXTERN MIN0 EXTERN MOD EXTERN MOVE EXTERN SPEAK EXTERN PSPEAK EXTERN PUT EXTERN RND EXTERN RSPEAK EXTERN SPEAK EXTERN VOCAB EXTERN YES EXTERN #FIX EXTERN #WRITO EXTERN #RENDO EXTERN #RSVO EXTERN #UE EXTERN #EQ EXTERN #NE EXTERN PCT EXTERN GETWRD EXTERN PUTWRD EXTERN SIXOUT 00000 1030 JA #ST 00001 0606 #XR, ORG .+10 00012 0115 TEXT +AMAIN + 00013 0111 00014 1640 00015 1100 #RET, SETX #XR 00016 0002 00017 1110 SETB #BASE 00020 0023 00021 1030 JA .+3 00022 0024 #BASE, ORG .+6 ORG #BASE+30 00053 0040 FNOP 00054 1030 JA #RET 00055 0015 00056 0040 FNOP 00057 0000 #GOBAK, 0;0 00060 0000 HINT, ORG .+3 RALF V50A 24-JUL-20 PAGE 1-1 KENT, ORG .+3 KQ, ORG .+3 K2, ORG .+3 LL, ORG .+3 N, ORG .+3 PBOTL, ORG .+3 SPK, ORG .+3 WD1, ORG .+3 WD1X, ORG .+3 WD2, ORG .+3 WD2X, ORG .+3 YEA, ORG .+3 #TMP, ORG .+30 00160 0000 ZERO, F 0 00161 0000 00162 0000 00163 0001 ONE, F 1 00164 2000 00165 0000 00166 0002 TWO, F 2 00167 2000 00170 0000 00171 0002 THREE, F 3 00172 3000 00173 0000 00174 0003 #LIT, F 4 / Literals. Too many cause ST overflow 00175 2000 00176 0000 00177 0003 F 5 /3 00200 2400 00201 0000 00202 0003 F 6 /6 00203 3000 00204 0000 00205 0004 F 8 /11 00206 2000 00207 0000 00210 0004 F 9 /14 00211 2200 00212 0000 00213 0004 F 10 /17 00214 2400 00215 0000 00216 0004 F 12 /22 00217 3000 00220 0000 00221 0004 F 15 /25 00222 3600 00223 0000 00224 0005 F 16 /30 00225 2000 00226 0000 00227 0005 F 17 /33 00230 2100 00231 0000 RALF V50A 24-JUL-20 PAGE 1-2 00232 0005 F 20 /36 00233 2400 00234 0000 00235 0005 F 22 /41 00236 2600 00237 0000 00240 0005 F 23 /44 00241 2700 00242 0000 00243 0005 F 24 /47 00244 3000 00245 0000 00246 0005 F 25 /52 00247 3100 00250 0000 00251 0005 F 26 /55 00252 3200 00253 0000 00254 0005 F 27 /60 00255 3300 00256 0000 00257 0005 F 30 /63 00260 3600 00261 0000 00262 0006 F 35 /66 00263 2140 00264 0000 00265 0006 F 37 /71 00266 2240 00267 0000 00270 0006 F 39 /74 00271 2340 00272 0000 00273 0006 F 40 /77 00274 2400 00275 0000 00276 0006 F 45 /102 00277 2640 00300 0000 00301 0006 F 49 /105 00302 3040 00303 0000 00304 0006 F 50 /110 00305 3100 00306 0000 00307 0006 F 54 /113 00310 3300 00311 0000 00312 0006 F 57 /116 00313 3440 00314 0000 00315 0006 F 58 /121 00316 3500 00317 0000 00320 0006 F 62 /124 00321 3700 RALF V50A 24-JUL-20 PAGE 1-3 00322 0000 00323 0007 F 65 /127 00324 2020 00325 0000 00326 0007 F 81 /132 00327 2420 00330 0000 00331 0010 F 202 /135 00332 3120 00333 0000 00334 0007 F 91 /140 00335 2660 00336 0000 00337 0007 F 92 /143 00340 2700 00341 0000 00342 0007 F 95 /146 00343 2760 00344 0000 00345 0007 F 99 /151 00346 3060 00347 0000 00350 0007 F 100 /154 00351 3100 00352 0000 00353 0007 F 105 /157 00354 3220 00355 0000 00356 0007 F 110 /162 00357 3340 00360 0000 00361 0007 F 115 /165 00362 3460 00363 0000 00364 0007 F 116 /170 00365 3500 00366 0000 00367 0007 F 117 /173 00370 3520 00371 0000 00372 0007 F 127 /176 00373 3760 00374 0000 00375 0010 F 128 /201 00376 2000 00377 0000 00400 0010 F 129 /204 00401 2010 00402 0000 00403 0010 F 130 /207 00404 2020 00405 0000 00406 0010 F 131 /212 00407 2030 00410 0000 00411 0010 F 132 /215 RALF V50A 24-JUL-20 PAGE 1-4 00412 2040 00413 0000 00414 0010 F 136 /220 00415 2100 00416 0000 00417 0010 F 140 /223 00420 2140 00421 0000 00422 0010 F 141 /226 00423 2150 00424 0000 00425 0010 F 143 /231 00426 2170 00427 0000 00430 0010 F 145 /234 00431 2210 00432 0000 00433 0010 F 162 /237 00434 2420 00435 0000 00436 0010 F 163 /242 00437 2430 00440 0000 00441 0010 F 165 /245 00442 2450 00443 0000 00444 0010 F 175 /250 00445 2570 00446 0000 00447 0010 F 184 /253 00450 2700 00451 0000 00452 0010 F 185 /256 00453 2710 00454 0000 00455 0010 F 186 /261 00456 2720 00457 0000 00460 0010 F 188 /264 00461 2740 00462 0000 00463 0010 F 192 /267 00464 3000 00465 0000 00466 0010 F 193 /272 00467 3010 00470 0000 00471 0010 F 197 /275 00472 3050 00473 0000 00474 0010 F 199 /300 00475 3070 00476 0000 00477 0010 F 201 /303 00500 3110 00501 0000 RALF V50A 24-JUL-20 PAGE 1-5 00502 0011 F 300 /306 00503 2260 00504 0000 00505 0011 F 500 /311 00506 3720 00507 0000 00510 0012 F 1000 /314 00511 3720 00512 0000 00513 0014 F 2500 /317 00514 2342 00515 0000 00516 0016 F 10000 /322 00517 2342 00520 0000 00521 0000 PCOND, 0 /325 00522 1030 JA COND-3 00523 2362 00524 0000 PFIXD, 0 /330 00525 1030 JA FIXD-3 00526 1535 00527 0000 PHINTS, 0 /333 00530 1030 JA HINTS-77 00531 3170 00532 0000 PABB, 0 /336 00533 1037 JA ABB-3 00534 7775 00535 0000 PPLAC, 0 /341 00536 1030 JA PLAC-3 00537 1061 00540 0516 TENTE, TEXT +ENTE + /344 00541 2405 00542 4040 00543 2017 TPOUR, TEXT +POUR + /347 00544 2522 00545 4040 00546 2705 TWEST, TEXT +WEST + /352 00547 2324 00550 4040 00551 7700 TQUES, TEXT +?@ + /355 00552 4040 00553 4040 00554 4256 TQDOT, TEXT +".@ + /360 00555 0040 00556 4040 00557 3105 TYES, TEXT +YES + /363 00560 2340 00561 4040 00562 3105 TYE, TEXT +YE + /366 00563 4040 00564 4040 00565 3140 TY, TEXT +Y + /371 00566 4040 00567 4040 00570 0010 F 154 /374 00571 2320 RALF V50A 24-JUL-20 PAGE 1-6 00572 0000 00573 0006 F 60 /377 00574 3600 00575 0000 00576 0005 F 29 /402 00577 3500 00600 0000 00601 0001 MINUS1, F -1.0 00602 6000 00603 0000 #LBL=. COMMON ABBCOM ABB, ORG .+702 COMMON MISCOM LINUSE, ORG .+3 TRVS, ORG .+3 CLSSES, ORG .+3 OLDLOC, ORG .+3 LOC, ORG .+3 CVAL, ORG .+44 TK, ORG .+74 NEWLOC, ORG .+3 KEY, ORG .+702 PLAC, ORG .+454 FIXD, ORG .+454 ACTSPK, ORG .+151 COND, ORG .+702 HINTS, ORG .+360 HNTMAX, ORG .+3 PROP, ORG .+454 TALLY, ORG .+3 TALLY2, ORG .+3 HINTLC, ORG .+74 CHLOC, ORG .+3 CHLOC2, ORG .+3 DSEEN, ORG .+22 DFLAG, ORG .+3 DLOC, ORG .+22 DALTLC, ORG .+3 KEYS, ORG .+3 LAMP, ORG .+3 GRATE, ORG .+3 CAGE, ORG .+3 ROD, ORG .+3 ROD2, ORG .+3 STEPS, ORG .+3 BIRD, ORG .+3 DOOR, ORG .+3 PILLOW, ORG .+3 SNAKE, ORG .+3 FISSUR, ORG .+3 TABLET, ORG .+3 CLAM, ORG .+3 OYSTER, ORG .+3 MAGZIN, ORG .+3 DWARF, ORG .+3 RALF V50A 24-JUL-20 PAGE 1-7 KNIFE, ORG .+3 FOOD, ORG .+3 BOTTLE, ORG .+3 WATER, ORG .+3 OIL, ORG .+3 PLANT, ORG .+3 PLANT2, ORG .+3 AXE, ORG .+3 MIRROR, ORG .+3 DRAGON, ORG .+3 CHASM, ORG .+3 TROLL, ORG .+3 TROLL2, ORG .+3 BEAR, ORG .+3 MESSAG, ORG .+3 VEND, ORG .+3 BATTER, ORG .+3 NUGGET, ORG .+3 COINS, ORG .+3 CHEST, ORG .+3 EGGS, ORG .+3 TRIDNT, ORG .+3 VASE, ORG .+3 EMRALD, ORG .+3 PYRAM, ORG .+3 PEARL, ORG .+3 RUG, ORG .+3 CHAIN, ORG .+3 BACK, ORG .+3 LOOK, ORG .+3 CAVE, ORG .+3 NULL, ORG .+3 ENTRNC, ORG .+3 DPRSSN, ORG .+3 SAY, ORG .+3 LOCK, ORG .+3 THROW, ORG .+3 FIND, ORG .+3 INVENT, ORG .+3 TURNS, ORG .+3 LMWARN, ORG .+3 KNFLOC, ORG .+3 DETAIL, ORG .+3 ABBNUM, ORG .+3 NUMDIE, ORG .+3 MAXDIE, ORG .+3 DKILL, ORG .+3 FOOBAR, ORG .+3 BONUS, ORG .+3 CLOCK1, ORG .+3 CLOCK2, ORG .+3 CLOSNG, ORG .+3 PANIC, ORG .+3 CLOSED, ORG .+3 GAVEUP, ORG .+3 SCORNG, ORG .+3 RALF V50A 24-JUL-20 PAGE 1-8 ODLOC, ORG .+22 STREAM, ORG .+3 SPICES, ORG .+3 COMMON MISC2 I, ORG .+3 ORG .+3 /RTXSIZ ORG .+3 /CLSMAX ORG .+3 /LOCSIZ CTEXT, ORG .+44 STEXT, ORG .+702 LTEXT, ORG .+702 ORG .+3 /SECT TRAVEL, ORG .+1356 TRVCON, ORG .+1356 TRVLOC, ORG .+1356 TRVSIZ, ORG .+3 ORG .+3 /TABNDX OBJ, ORG .+3 J, ORG .+3 K, ORG .+3 VERB, ORG .+3 HNTSIZ, ORG .+3 MAXTRS, ORG .+3 HINTED, ORG .+74 ORG .+3 /HNTLOC KK, ORG .+3 COMMON PLACOM ATLOC, ORG .+702 LINK, ORG .+1130 PLACE, ORG .+454 FIXED, ORG .+454 HOLDNG, ORG .+3 COMMON PTXCOM PTEXT, ORG .+454 COMMON TXTCOM RTEXT, ORG .+1147 ORG .+44 /LINES ORG .+3 /ASCVAR ORG .+3 /TXTLOC ORG .+234 /DATA COMMON MISC3 ATTACK, ORG .+3 DTOTAL, ORG .+3 OLDLC2, ORG .+3 LIMIT, ORG .+3 MXSCOR, ORG .+3 SCORE, ORG .+3 STICK, ORG .+3 WZDARK, ORG .+3 RALF V50A 24-JUL-20 PAGE 2 ORG #LBL #25000, #RTN, BASE #BASE 00604 1030 JA #GOBAK 00605 0057 00606 0006 #ST, STARTD 00607 0210 0210 00610 6400 FSTA #GOBAK,0 00611 0057 00612 0200 0200 00613 1100 SETX #XR 00614 0002 00615 1110 SETB #BASE 00616 0023 00617 0005 STARTF 00620 1030 JA #STRT /#G0001 00621 1077 / / Statement functions - called with JSA to save space / / TOTING(OBJ)=PLACE(OBJ).EQ.-1 00622 0000 TOTING, 0;0 00623 0000 00624 0023 ATX 3 00625 0430 FLDA PLACE-3,3 00626 2027 00627 1240 FADD ONE 00630 1120 JSA #EQ 00631 0000 00632 1030 JA TOTING 00633 0622 / AT(OBJ)=PLACE(OBJ).EQ.LOC.OR.FIXED(OBJ).EQ.LOC 00634 0000 AT, 0;0 00635 0000 00636 0023 ATX 3 00637 0430 FLDA PLACE-3,3 00640 2027 00641 2400 FSUB LOC 00642 0014 00643 1000 JEQ ISAT 00644 0651 00645 0430 FLDA FIXED-3,3 00646 2503 00647 2400 FSUB LOC 00650 0014 00651 1120 ISAT, JSA #EQ 00652 0000 00653 1030 JA AT 00654 0634 / FORCED(LOC)=COND(LOC).EQ.2 00655 0000 FORCED, 0;0 00656 0000 00657 0023 ATX 3 00660 0430 FLDA COND-3,3 RALF V50A 24-JUL-20 PAGE 2-1 00661 2362 00662 2241 FSUB TWO 00663 1120 JSA #EQ 00664 0000 00665 1030 JA FORCED 00666 0655 / HERE(OBJ) = PLACE(OBJ).EQ.LOC .OR. TOTING(OBJ) 00667 0000 HERE, 0;0 00670 0000 00671 1120 JSA TOTING 00672 0622 00673 1040 JNE ISHERE 00674 0706 00675 0400 FLDA LOC 00676 0014 00677 2430 FSUB PLACE-3,3 00700 2027 00701 1000 JEQ ISHERE 00702 0706 00703 0002 FCLA 00704 1030 JA HERE 00705 0667 00706 0240 ISHERE, FLDA ONE 00707 1030 JA HERE 00710 0667 / DARK(DUMMY)=MOD(COND(LOC),2).EQ.0.AND.(PROP(LAMP).EQ.0.OR. / 1 .NOT.HERE(LAMP)) 00711 0000 DARK, 0;0 00712 0000 / .OR. .NOT. HERE(LAMP) 00713 0400 FLDA LAMP 00714 4513 00715 1120 JSA HERE 00716 0667 00717 1000 JEQ NOTHR 00720 0730 / .OR. PROP(LAMP) EQ 0 00721 0400 FLDA LAMP 00722 4513 00723 0024 ATX 4 00724 0440 FLDA PROP-3,4 00725 3647 00726 1040 JNE NOTDRK 00727 0752 / MOD(COND(LOC),2) .EQ. 0 00730 0400 NOTHR, FLDA LOC / Either prop or not here 00731 0014 00732 0024 ATX 4 00733 0440 FLDA COND-3,4 / COND(LOC) 00734 2362 00735 3241 FDIV TWO / Divided by two 00736 1120 JSA #FIX 00737 0000 RALF V50A 24-JUL-20 PAGE 2-2 00740 4241 FMUL TWO 00741 6233 FSTA #TMP+14 00742 0440 FLDA COND-3,4 / Get back COND(LOC) 00743 2362 00744 2233 FSUB #TMP+14 / Now have mod 00745 1040 JNE NOTDRK / If not zero, not dark 00746 0752 00747 0240 FLDA ONE 00750 1030 JA DARK 00751 0711 00752 0002 NOTDRK, FCLA 00753 1030 JA DARK 00754 0711 / LIQ2(PBOTL)=(1-PBOTL)*WATER+(PBOTL/2)*(WATER+OIL) 00755 0000 LIQ2, 0;0 00756 0000 00757 0240 FLDA ONE 00760 2220 FSUB PBOTL / 1 - PBOTL 00761 4400 FMUL WATER / (1-PBOTL)*WATER 00762 4604 00763 6233 FSTA #TMP+14 / Store first term 00764 0220 FLDA PBOTL 00765 3241 FDIV TWO / PBOTL/2 00766 1120 JSA #FIX 00767 0000 00770 6231 FSTA #TMP+6 00771 0400 FLDA WATER 00772 4604 00773 1400 FADD OIL / WATER+OIL 00774 4607 00775 4231 FMUL #TMP+6 / (PBOTL/2)*(WATER+OIL) 00776 1233 FADD #TMP+14 00777 1030 JA LIQ2 / Done 01000 0755 / LIQ(DUMMY)=LIQ2(MAX0(PROP(BOTTLE),-1-PROP(BOTTLE))) 01001 0000 LIQ, 0;0 01002 0000 /PROP(BOTTLE) 01003 0400 FLDA BOTTLE 01004 4601 01005 0025 ATX 5 01006 0450 FLDA PROP-3,5 / PROP(BOTTLE) 01007 3647 01010 6220 FSTA PBOTL 01011 0372 FLDA MINUS1 01012 2220 FSUB PBOTL /-1-PROP(BOTTLE) 01013 6232 FSTA #TMP+11 01014 0220 FLDA PBOTL / Find larger 01015 2232 FSUB #TMP+11 01016 1060 JGT .+4 / already larger, now PBOTL 01017 1022 01020 0232 FLDA #TMP+11 01021 6220 FSTA PBOTL / This is PBOTL 01022 1120 JSA LIQ2 / Call LIQ2 with this RALF V50A 24-JUL-20 PAGE 2-3 01023 0755 01024 1030 JA LIQ / And return 01025 1001 / LIQLOC(LOC)=LIQ2((MOD(COND(LOC)/2*2,8)-5)*MOD(COND(LOC)/4,2)+1) 01026 0000 LIQLOC, 0;0 01027 0000 01030 0400 FLDA LOC / Always called with LOC as arg 01031 0014 01032 0022 ATX 2 01033 0420 FLDA COND-3,2 / COND(LOC) 01034 2362 01035 6232 FSTA #TMP+11 / Save that 01036 3241 FDIV TWO 01037 1120 JSA #FIX / COND(LOC)/2 01040 0000 01041 4241 FMUL TWO / COND(LOC)/2*2 01042 6234 FSTA #TMP+17 01043 3246 FDIV #LIT+11 / Modulo 8 01044 1120 JSA #FIX 01045 0000 01046 4246 FMUL #LIT+11 01047 6235 FSTA #TMP+22 01050 0234 FLDA #TMP+17 01051 2235 FSUB #TMP+22 / MOD(...) 01052 2244 FSUB #LIT+3 / -5. 01053 6236 FSTA #TMP+25 / First Term 01054 0232 FLDA #TMP+11 / COND(LOC) 01055 3243 FDIV #LIT / COND(LOC)/4 01056 1120 JSA #FIX 01057 0000 01060 6234 FSTA #TMP+17 01061 3241 FDIV TWO / Mod 2 01062 1120 JSA #FIX 01063 0000 01064 4241 FMUL TWO 01065 6235 FSTA #TMP+22 01066 0234 FLDA #TMP+17 01067 2235 FSUB #TMP+22 01070 4236 FMUL #TMP+25 / Multiply 01071 1240 FADD ONE / +1 01072 6220 FSTA PBOTL / Finally got the term 01073 1120 JSA LIQ2 / Send to LIQ2 01074 0755 01075 1030 JA LIQLOC 01076 1026 RALF V50A 24-JUL-20 PAGE 3 / / Main routine entry point / #STRT, /1 I=RND(1) 01077 1130 #1, JSR RND 01100 0000 01101 1030 JA .+4 01102 1105 01103 1030 JA ONE 01104 0163 01105 6400 FSTA I 01106 0000 / HINTED(3)=YES(65,1,0) 01107 0107 LDX 3,7 01110 0003 01111 1130 JSR YES 01112 0000 01113 1030 JA .+10 01114 1123 01115 1030 JA #LIT+127 01116 0323 01117 1030 JA ONE 01120 0163 01121 1030 JA ZERO 01122 0160 01123 6470 FSTA HINTED-3,7 01124 6226 / NEWLOC=1 01125 0240 FLDA ONE 01126 6400 FSTA NEWLOC 01127 0157 / LOC = NEWLOC 01130 6400 FSTA LOC 01131 0014 / LIMIT=330 01132 0100 LDX 512,0 /330 01133 0512 01134 0030 XTA 0 01135 6400 FSTA LIMIT 01136 0011 / IF(HINTED(3))LIMIT=1000 01137 0470 FLDA HINTED-3,7 01140 6226 01141 1000 JEQ #2 01142 1146 01143 0347 FLDA #LIT+314 01144 6400 FSTA LIMIT 01145 0011 /2 IF(NEWLOC.GE.9.OR.NEWLOC.EQ.0.OR..NOT.CLOSNG)GOTO 71 01146 0400 #2, FLDA NEWLOC 01147 0157 01150 2247 FSUB #LIT+14 01151 1010 JGE #71 01152 1207 01153 0400 FLDA NEWLOC RALF V50A 24-JUL-20 PAGE 3-1 01154 0157 01155 1000 JEQ #71 01156 1207 01157 0400 FLDA CLOSNG 01160 5024 01161 1000 JEQ #71 01162 1207 / CALL RSPEAK(130) 01163 1130 JSR RSPEAK 01164 0000 01165 1030 JA .+4 01166 1171 01167 1030 JA #LIT+207 01170 0403 / NEWLOC=LOC 01171 0400 FLDA LOC 01172 0014 01173 6400 FSTA NEWLOC 01174 0157 / IF(.NOT.PANIC)CLOCK2=15 01175 0400 FLDA PANIC 01176 5027 01177 1040 JNE .+5 01200 1204 01201 0252 FLDA #LIT+25 01202 6400 FSTA CLOCK2 01203 5021 / PANIC=.TRUE. 01204 0240 FLDA ONE 01205 6400 FSTA PANIC 01206 5027 /C /C SEE IF A DWARF HAS SEEN HIM AND HAS COME FROM WHERE HE WANTS TO GO. IF SO, /C THE DWARF'S BLOCKING HIS WAY. IF COMING FROM PLACE FORBIDDEN TO PIRATE /C (DWARVES ROOTED IN PLACE) LET HIM GET OUT (AND ATTACKED). /C /71 IF(NEWLOC.EQ.LOC.OR.FORCED(LOC).OR.BITSET(LOC,3))GOTO 74 01207 0400 #71, FLDA NEWLOC 01210 0157 01211 2400 FSUB LOC 01212 0014 01213 1000 JEQ #74 01214 1301 01215 0400 FLDA LOC 01216 0014 01217 1120 JSA FORCED 01220 0655 01221 1040 JNE #74 01222 1301 01223 1130 JSR BITSET 01224 0000 01225 1030 JA .+6 01226 1233 01227 1030 JA LOC 01230 0014 01231 1030 JA THREE RALF V50A 24-JUL-20 PAGE 3-2 01232 0171 01233 1040 JNE #74 01234 1301 / DO 73 I=1,5 01235 0240 FLDA ONE 01236 6400 FSTA I 01237 0000 / IF(ODLOC(I).NE.NEWLOC.OR..NOT.DSEEN(I))GOTO 73 01240 0400 #G0047, FLDA I 01241 0000 01242 0027 ATX 7 01243 0470 FLDA ODLOC-3,7 01244 5040 01245 2400 FSUB NEWLOC 01246 0157 01247 1040 JNE #73 01250 1271 01251 0470 FLDA DSEEN-3,7 01252 4433 01253 1000 JEQ #73 01254 1271 / NEWLOC=LOC 01255 0400 FLDA LOC 01256 0014 01257 6400 FSTA NEWLOC 01260 0157 / CALL RSPEAK(2) 01261 1130 JSR RSPEAK 01262 0000 01263 1030 JA .+4 01264 1267 01265 1030 JA TWO 01266 0166 / GOTO 74 01267 1030 JA #74 01270 1301 /73 CONTINUE 01271 0400 #73, FLDA I 01272 0000 01273 1240 FADD ONE 01274 6400 FSTA I 01275 0000 01276 2244 FSUB #LIT+3 01277 1020 JLE #G0047 01300 1240 01301 0400 #74, FLDA NEWLOC 01302 0157 01303 6400 FSTA LOC 01304 0014 /C /C DWARF STUFF. SEE EARLIER COMMENTS FOR DESCRIPTION OF VARIABLES. REMEMBER /C SIXTH DWARF IS PIRATE AND IS THUS VERY DIFFERENT EXCEPT FOR MOTION RULES. /C /C FIRST OFF, DON'T LET THE DWARVES FOLLOW HIM INTO A PIT OR A WALL. ACTIVATE RALF V50A 24-JUL-20 PAGE 3-3 /C THE WHOLE MESS THE FIRST TIME HE GETS AS FAR AS THE HALL OF MISTS (LOC 15). /C IF NEWLOC IS FORBIDDEN TO PIRATE (IN PARTICULAR, IF IT'S BEYOND THE TROLL /C BRIDGE), BYPASS DWARF STUFF. THAT WAY PIRATE CAN'T STEAL RETURN TOLL, AND /C DWARVES CAN'T MEET THE BEAR. ALSO MEANS DWARVES WON'T FOLLOW HIM INTO DEAD /C END IN MAZE, BUT C'EST LA VIE. THEY'LL WAIT FOR HIM OUTSIDE THE DEAD END. /C / IF(LOC.EQ.0.OR.FORCED(LOC).OR.BITSET(NEWLOC,3))GOTO 2000 01305 1000 JEQ #2000 01306 2760 01307 0400 FLDA LOC 01310 0014 01311 1120 JSA FORCED 01312 0655 01313 1040 JNE #2000 01314 2760 01315 1130 JSR BITSET 01316 0000 01317 1030 JA .+6 01320 1325 01321 1030 JA NEWLOC 01322 0157 01323 1030 JA THREE 01324 0171 01325 1040 JNE #2000 01326 2760 / IF(DFLAG.NE.0)GOTO 6000 01327 0400 FLDA DFLAG 01330 4460 01331 1040 JNE #6000 01332 1345 / IF(LOC.GE.15)DFLAG=1 01333 0400 FLDA LOC 01334 0014 01335 2252 FSUB #LIT+25 01336 1050 JLT #2000 01337 2760 01340 0240 FLDA ONE 01341 6400 FSTA DFLAG 01342 4460 / GOTO 2000 01343 1030 JA #2000 01344 2760 /C /C WHEN WE ENCOUNTER THE FIRST DWARF, WE KILL 0, 1, OR 2 OF THE 5 DWARVES. IF /C ANY OF THE SURVIVORS IS AT LOC, REPLACE HIM WITH THE ALTERNATE. /C /6000 IF(DFLAG.NE.1)GOTO 6010 01345 0400 #6000, FLDA DFLAG 01346 4460 01347 2240 FSUB ONE 01350 1040 JNE #6010 01351 1511 / IF(LOC.LT.15.OR.PCT(95))GOTO 2000 01352 0400 FLDA LOC 01353 0014 RALF V50A 24-JUL-20 PAGE 3-4 01354 2252 FSUB #LIT+25 01355 1050 JLT #2000 01356 2760 01357 1130 JSR PCT 01360 0000 01361 1030 JA .+4 01362 1365 01363 1030 JA #LIT+146 01364 0342 01365 1040 JNE #2000 01366 2760 / DFLAG=2 01367 0241 FLDA TWO 01370 6400 FSTA DFLAG 01371 4460 / DO 6001 I=1,2 01372 0240 FLDA ONE 01373 6400 FSTA I 01374 0000 / J=1+RND(5) 01375 1130 #G0051, JSR RND 01376 0000 01377 1030 JA .+4 01400 1403 01401 1030 JA #LIT+3 01402 0177 01403 1240 FADD ONE 01404 6400 FSTA J 01405 6212 /6001 IF(PCT(50))DLOC(J)=0 01406 1130 #6001, JSR PCT 01407 0000 01410 1030 JA .+4 01411 1414 01412 1030 JA #LIT+110 01413 0304 01414 1000 JEQ .+10 01415 1424 01416 0400 FLDA J 01417 6212 01420 0027 ATX 7 01421 0002 FCLA 01422 6470 FSTA DLOC-3,7 01423 4460 01424 0400 FLDA I 01425 0000 01426 1240 FADD ONE 01427 6400 FSTA I 01430 0000 01431 2241 FSUB TWO 01432 1020 JLE #G0051 01433 1375 / DO 6002 I=1,5 01434 0240 FLDA ONE RALF V50A 24-JUL-20 PAGE 3-5 01435 6400 FSTA I 01436 0000 / IF(DLOC(I).EQ.LOC)DLOC(I)=DALTLC 01437 0400 #G0053, FLDA I 01440 0000 01441 0027 ATX 7 01442 0470 FLDA DLOC-3,7 01443 4460 01444 2400 FSUB LOC 01445 0014 01446 1040 JNE #6002 01447 1454 01450 0400 FLDA DALTLC 01451 4505 01452 6470 FSTA DLOC-3,7 01453 4460 /6002 ODLOC(I)=DLOC(I) 01454 0400 #6002, FLDA I 01455 0000 01456 0027 ATX 7 01457 0470 FLDA DLOC-3,7 01460 4460 01461 6470 FSTA ODLOC-3,7 01462 5040 01463 0400 FLDA I 01464 0000 01465 1240 FADD ONE 01466 6400 FSTA I 01467 0000 01470 2244 FSUB #LIT+3 01471 1020 JLE #G0053 01472 1437 / CALL RSPEAK(3) 01473 1130 JSR RSPEAK 01474 0000 01475 1030 JA .+4 01476 1501 01477 1030 JA THREE 01500 0171 / CALL DROP(AXE,LOC) 01501 1130 JSR DROP 01502 0000 / GOTO 2000 01503 1030 JA #2000 01504 2760 01505 1030 JA AXE 01506 4620 01507 1030 JA LOC 01510 0014 /C /C THINGS ARE IN FULL SWING. MOVE EACH DWARF AT RANDOM, EXCEPT IF HE'S SEEN US /C HE STICKS WITH US. DWARVES NEVER GO TO LOCS <15. IF WANDERING AT RANDOM, /C THEY DON'T BACK UP UNLESS THERE'S NO ALTERNATIVE. IF THEY DON'T HAVE TO /C MOVE, THEY ATTACK. AND, OF COURSE, DEAD DWARVES DON'T DO MUCH OF ANYTHING. RALF V50A 24-JUL-20 PAGE 3-6 /C /6010 DTOTAL=0 01511 0002 #6010, FCLA 01512 6400 FSTA DTOTAL 01513 0003 / ATTACK=0 01514 6400 FSTA ATTACK 01515 0000 / STICK=0 01516 6400 FSTA STICK 01517 0022 / DO 6030 I=1,6 01520 0240 FLDA ONE 01521 6400 FSTA I 01522 0000 / IF (DLOC(I).EQ.0)GOTO 6030 01523 0400 #G0055, FLDA I 01524 0000 01525 0027 ATX 7 01526 0470 FLDA DLOC-3,7 01527 4460 01530 1000 JEQ #6030 01531 2522 / J=1 01532 0240 FLDA ONE 01533 6400 FSTA J 01534 6212 / KK=DLOC(I) 01535 0470 FLDA DLOC-3,7 01536 4460 01537 6400 FSTA KK 01540 6330 / KK=KEY(KK) 01541 0027 ATX 7 01542 0470 FLDA KEY-3,7 01543 0157 01544 6400 FSTA KK 01545 6330 / IF(KK.EQ.0)GOTO 6016 01546 1000 JEQ #6016 01547 1736 /6012 NEWLOC=TRVLOC(KK) 01550 1130 #6012, JSR GETWRD 01551 0000 01552 1030 JA .+10 01553 1562 01554 1030 JA TRVLOC 01555 4623 01556 1030 JA KK 01557 6330 01560 1030 JA ZERO 01561 0160 01562 6400 FSTA NEWLOC 01563 0157 / IF(NEWLOC.GT.300.OR.NEWLOC.LT.15.OR.NEWLOC.EQ.ODLOC(I) RALF V50A 24-JUL-20 PAGE 3-7 / 1 .OR.(J.GT.1.AND.NEWLOC.EQ.TK(J-1)).OR.J.GE.20 / 2 .OR.NEWLOC.EQ.DLOC(I).OR.FORCED(NEWLOC) / 3 .OR.(I.EQ.6.AND.BITSET(NEWLOC,3)) / 4 .OR.TRVCON(KK).EQ.100)GOTO 6014 01564 2345 FSUB #LIT+306 01565 1060 JGT #6014 01566 1713 01567 0400 FLDA NEWLOC 01570 0157 01571 2252 FSUB #LIT+25 01572 1050 JLT #6014 01573 1713 01574 0400 FLDA I 01575 0000 01576 0027 ATX 7 01577 0400 FLDA NEWLOC 01600 0157 01601 2470 FSUB ODLOC-3,7 01602 5040 01603 1000 JEQ #6014 01604 1713 01605 0400 FLDA J 01606 6212 01607 2240 FSUB ONE 01610 1020 JLE .+11 01611 1621 01612 0026 ATX 6 01613 0400 FLDA NEWLOC 01614 0157 01615 2460 FSUB TK-3,6 01616 0060 01617 1000 JEQ #6014 01620 1713 01621 0400 FLDA J 01622 6212 01623 2255 FSUB #LIT+36 01624 1010 JGE #6014 01625 1713 01626 0400 FLDA I 01627 0000 01630 0027 ATX 7 01631 0400 FLDA NEWLOC 01632 0157 01633 2470 FSUB DLOC-3,7 01634 4460 01635 1000 JEQ #6014 01636 1713 01637 0400 FLDA NEWLOC 01640 0157 01641 1120 JSA FORCED 01642 0655 01643 1040 JNE #6014 01644 1713 01645 0400 FLDA I 01646 0000 01647 2245 FSUB #LIT+6 RALF V50A 24-JUL-20 PAGE 3-8 01650 1040 JNE .+14 01651 1664 01652 1130 JSR BITSET 01653 0000 01654 1030 JA .+6 01655 1662 01656 1030 JA NEWLOC 01657 0157 01660 1030 JA THREE 01661 0171 01662 1040 JNE #6014 01663 1713 01664 1130 JSR GETWRD 01665 0000 01666 1030 JA .+10 01667 1676 01670 1030 JA TRVCON 01671 3245 01672 1030 JA KK 01673 6330 01674 1030 JA ZERO 01675 0160 01676 2307 FSUB #LIT+154 01677 1000 JEQ #6014 01700 1713 / TK(J)=NEWLOC 01701 0400 FLDA J 01702 6212 01703 0027 ATX 7 01704 0400 FLDA NEWLOC 01705 0157 01706 6470 FSTA TK-3,7 01707 0060 / J=J+1 01710 0240 FLDA ONE 01711 5400 FADDM J 01712 6212 /6014 KK=KK+1 01713 0400 #6014, FLDA KK 01714 6330 01715 1240 FADD ONE 01716 6400 FSTA KK 01717 6330 / IF(TRAVEL(KK-1).GE.0)GOTO 6012 01720 2240 FSUB ONE 01721 6227 FSTA #TMP 01722 1130 JSR GETWRD 01723 0000 01724 1030 JA .+10 01725 1734 01726 1030 JA TRAVEL 01727 1667 01730 1030 JA #TMP 01731 0130 01732 1030 JA ZERO RALF V50A 24-JUL-20 PAGE 3-9 01733 0160 01734 1010 JGE #6012 01735 1550 /6016 TK(J)=ODLOC(I) 01736 0400 #6016, FLDA J 01737 6212 01740 0026 ATX 6 01741 0400 FLDA I 01742 0000 01743 0027 ATX 7 01744 0470 FLDA ODLOC-3,7 01745 5040 01746 6460 FSTA TK-3,6 01747 0060 / IF(J.GE.2)J=J-1 01750 0400 FLDA J 01751 6212 01752 2241 FSUB TWO 01753 1050 JLT .+5 01754 1760 01755 0372 FLDA MINUS1 01756 5400 FADDM J 01757 6212 / J=1+RND(J) 01760 1130 JSR RND 01761 0000 01762 1030 JA .+4 01763 1766 01764 1030 JA J 01765 6212 01766 1240 FADD ONE 01767 6400 FSTA J 01770 6212 / ODLOC(I)=DLOC(I) 01771 0470 FLDA DLOC-3,7 01772 4460 01773 6470 FSTA ODLOC-3,7 01774 5040 / DLOC(I)=TK(J) 01775 0400 FLDA J 01776 6212 01777 0026 ATX 6 02000 0460 FLDA TK-3,6 02001 0060 02002 6470 FSTA DLOC-3,7 02003 4460 / DSEEN(I)=(DSEEN(I).AND.LOC.GE.15) / 1 .OR.(DLOC(I).EQ.LOC.OR.ODLOC(I).EQ.LOC) 02004 0400 FLDA LOC 02005 0014 02006 2252 FSUB #LIT+25 02007 1050 JLT .+6 02010 2015 02011 0470 FLDA DSEEN-3,7 02012 4433 02013 1040 JNE .+21 RALF V50A 24-JUL-20 PAGE 3-10 02014 2034 02015 0470 FLDA DLOC-3,7 02016 4460 02017 2400 FSUB LOC 02020 0014 02021 1000 JEQ .+13 02022 2034 02023 0470 FLDA ODLOC-3,7 02024 5040 02025 2400 FSUB LOC 02026 0014 02027 1000 JEQ .+5 02030 2034 02031 0002 FCLA 02032 1030 JA .+3 02033 2035 02034 0240 FLDA ONE 02035 6470 FSTA DSEEN-3,7 02036 4433 / IF(.NOT.DSEEN(I))GOTO 6030 02037 1000 JEQ #6030 02040 2522 / DLOC(I)=LOC 02041 0400 FLDA LOC 02042 0014 02043 6470 FSTA DLOC-3,7 02044 4460 / IF(I.NE.6)GOTO 6027 02045 0400 FLDA I 02046 0000 02047 2245 FSUB #LIT+6 02050 1040 JNE #6027 02051 2452 /C /C THE PIRATE'S SPOTTED HIM. HE LEAVES HIM ALONE ONCE WE'VE FOUND CHEST. /C K COUNTS IF A TREASURE IS HERE. IF NOT, AND TALLY=TALLY2 PLUS ONE FOR /C AN UNSEEN CHEST, LET THE PIRATE BE SPOTTED. /C / IF(LOC.EQ.CHLOC.OR.PROP(CHEST).GE.0)GOTO 6030 02052 0400 FLDA LOC 02053 0014 02054 2400 FSUB CHLOC 02055 4430 02056 1000 JEQ #6030 02057 2522 02060 0400 FLDA CHEST 02061 4664 02062 0027 ATX 7 02063 0470 FLDA PROP-3,7 02064 3647 02065 1010 JGE #6030 02066 2522 / K=0 02067 0002 FCLA 02070 6400 FSTA K RALF V50A 24-JUL-20 PAGE 3-11 02071 6215 / DO 6020 J=50,MAXTRS 02072 0273 FLDA #LIT+110 02073 6400 FSTA J 02074 6212 /C /C PIRATE WON'T TAKE PYRAMID FROM PLOVER ROOM OR DARK ROOM (TOO EASY!). /C / IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM) / 1 .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6020 02075 0400 #G0057, FLDA J 02076 6212 02077 2400 FSUB PYRAM 02100 4703 02101 1040 JNE .+13 02102 2114 02103 0400 FLDA PYRAM 02104 4703 02105 0027 ATX 7 02106 0400 FLDA LOC 02107 0014 02110 2470 FSUB PLAC-3,7 02111 1061 02112 1000 JEQ #6020 02113 2133 02114 0400 FLDA EMRALD 02115 4700 02116 0026 ATX 6 02117 0400 FLDA LOC 02120 0014 02121 2460 FSUB PLAC-3,6 02122 1061 02123 1000 JEQ #6020 02124 2133 / IF(TOTING(J))GOTO 6022 02125 0400 FLDA J 02126 6212 02127 1120 JSA TOTING 02130 0622 02131 1040 JNE #6022 02132 2243 /6020 IF(HERE(J))K=1 02133 0400 #6020, FLDA J 02134 6212 02135 1120 JSA HERE 02136 0667 02137 1000 JEQ .+5 02140 2144 02141 0240 FLDA ONE 02142 6400 FSTA K 02143 6215 02144 0400 FLDA J 02145 6212 02146 1240 FADD ONE 02147 6400 FSTA J RALF V50A 24-JUL-20 PAGE 3-12 02150 6212 02151 2400 FSUB MAXTRS 02152 6226 02153 1020 JLE #G0057 02154 2075 / IF(TALLY.EQ.TALLY2+1.AND.K.EQ.0.AND.PLACE(CHEST).EQ.0 / 1 .AND.HERE(LAMP).AND.PROP(LAMP).EQ.1)GOTO 6025 02155 0400 FLDA TALLY2 02156 4331 02157 1240 FADD ONE 02160 2400 FSUB TALLY 02161 4326 02162 1040 JNE #M4 02163 2215 02164 0400 FLDA K 02165 6215 02166 1040 JNE #M4 02167 2215 02170 0400 FLDA CHEST 02171 4664 02172 0027 ATX 7 02173 0470 FLDA PLACE-3,7 02174 2027 02175 1040 JNE #M4 02176 2215 02177 0400 FLDA LAMP 02200 4513 02201 1120 JSA HERE 02202 0667 02203 1000 JEQ #M4 02204 2215 02205 0400 FLDA LAMP 02206 4513 02207 0026 ATX 6 02210 0460 FLDA PROP-3,6 02211 3647 02212 2240 FSUB ONE 02213 1000 JEQ #6025 02214 2424 / IF(ODLOC(6).NE.DLOC(6).AND.PCT(20))CALL RSPEAK(127) 02215 0245 #M4, FLDA #LIT+6 02216 0027 ATX 7 02217 0470 FLDA ODLOC-3,7 02220 5040 02221 2470 FSUB DLOC-3,7 02222 4460 02223 1000 JEQ #6030 02224 2522 02225 1130 JSR PCT 02226 0000 02227 1030 JA .+4 02230 2233 02231 1030 JA #LIT+36 02232 0232 02233 1000 JEQ #6030 02234 2522 RALF V50A 24-JUL-20 PAGE 3-13 02235 1130 JSR RSPEAK 02236 0000 / GOTO 6030 02237 1030 JA #6030 02240 2522 02241 1030 JA #LIT+176 02242 0372 /C /6022 CALL RSPEAK(128) 02243 1130 #6022, JSR RSPEAK 02244 0000 02245 1030 JA .+4 02246 2251 02247 1030 JA #LIT+201 02250 0375 /C /C DON'T STEAL CHEST BACK FROM TROLL! /C / IF(PLACE(MESSAG).EQ.0)CALL MOVE(CHEST,CHLOC) 02251 0400 FLDA MESSAG 02252 4645 02253 0027 ATX 7 02254 0470 FLDA PLACE-3,7 02255 2027 02256 1040 JNE .+12 02257 2270 02260 1130 JSR MOVE 02261 0000 02262 1030 JA .+6 02263 2270 02264 1030 JA CHEST 02265 4664 02266 1030 JA CHLOC 02267 4430 / CALL MOVE(MESSAG,CHLOC2) 02270 1130 JSR MOVE 02271 0000 02272 1030 JA .+6 02273 2300 02274 1030 JA MESSAG 02275 4645 02276 1030 JA CHLOC2 02277 4433 / DO 6023 J=50,MAXTRS 02300 0273 FLDA #LIT+110 02301 6400 FSTA J 02302 6212 / IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM) / 1 .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6023 02303 0400 #G0063, FLDA J 02304 6212 02305 2400 FSUB PYRAM 02306 4703 02307 1040 JNE .+13 02310 2322 RALF V50A 24-JUL-20 PAGE 3-14 02311 0400 FLDA PYRAM 02312 4703 02313 0027 ATX 7 02314 0400 FLDA LOC 02315 0014 02316 2470 FSUB PLAC-3,7 02317 1061 02320 1000 JEQ #6023 02321 2376 02322 0400 FLDA EMRALD 02323 4700 02324 0026 ATX 6 02325 0400 FLDA LOC 02326 0014 02327 2460 FSUB PLAC-3,6 02330 1061 02331 1000 JEQ #6023 02332 2376 / IF(AT(J).AND.FIXED(J).EQ.0)CALL CARRY(J,LOC) 02333 0400 FLDA J 02334 6212 02335 1120 JSA AT 02336 0634 02337 1000 JEQ .+21 02340 2360 02341 0400 FLDA J 02342 6212 02343 0027 ATX 7 02344 0470 FLDA FIXED-3,7 02345 2503 02346 1040 JNE .+12 02347 2360 02350 1130 JSR CARRY 02351 0000 02352 1030 JA .+6 02353 2360 02354 1030 JA J 02355 6212 02356 1030 JA LOC 02357 0014 / IF(TOTING(J))CALL DROP(J,CHLOC) 02360 0400 FLDA J 02361 6212 02362 1120 JSA TOTING 02363 0622 02364 1000 JEQ #6023 02365 2376 02366 1130 JSR DROP 02367 0000 02370 1030 JA .+6 02371 2376 02372 1030 JA J 02373 6212 02374 1030 JA CHLOC 02375 4430 /6023 CONTINUE RALF V50A 24-JUL-20 PAGE 3-15 02376 0400 #6023, FLDA J 02377 6212 02400 1240 FADD ONE 02401 6400 FSTA J 02402 6212 02403 2400 FSUB MAXTRS 02404 6226 02405 1020 JLE #G0063 02406 2303 /6024 DLOC(6)=CHLOC 02407 0245 #6024, FLDA #LIT+6 02410 0027 ATX 7 02411 0400 FLDA CHLOC 02412 4430 02413 6470 FSTA DLOC-3,7 02414 4460 / ODLOC(6)=CHLOC 02415 6470 FSTA ODLOC-3,7 02416 5040 / DSEEN(6)=.FALSE. 02417 0002 FCLA 02420 6470 FSTA DSEEN-3,7 02421 4433 / GOTO 6030 02422 1030 JA #6030 02423 2522 /C /6025 CALL RSPEAK(186) 02424 1130 #6025, JSR RSPEAK 02425 0000 02426 1030 JA .+4 02427 2432 02430 1030 JA #LIT+261 02431 0455 / CALL MOVE(CHEST,CHLOC) 02432 1130 JSR MOVE 02433 0000 02434 1030 JA .+6 02435 2442 02436 1030 JA CHEST 02437 4664 02440 1030 JA CHLOC 02441 4430 / CALL MOVE(MESSAG,CHLOC2) 02442 1130 JSR MOVE 02443 0000 / GOTO 6024 02444 1030 JA #6024 02445 2407 02446 1030 JA MESSAG 02447 4645 02450 1030 JA CHLOC2 02451 4433 RALF V50A 24-JUL-20 PAGE 3-16 /C /C THIS THREATENING LITTLE DWARF IS IN THE ROOM WITH HIM! /C /6027 DTOTAL=DTOTAL+1 02452 0240 #6027, FLDA ONE 02453 5400 FADDM DTOTAL 02454 0003 / IF(ODLOC(I).NE.DLOC(I))GOTO 6030 02455 0400 FLDA I 02456 0000 02457 0027 ATX 7 02460 0470 FLDA ODLOC-3,7 02461 5040 02462 2470 FSUB DLOC-3,7 02463 4460 02464 1040 JNE #6030 02465 2522 / ATTACK=ATTACK+1 02466 0240 FLDA ONE 02467 5400 FADDM ATTACK 02470 0000 / IF(KNFLOC.GE.0)KNFLOC=LOC 02471 0400 FLDA KNFLOC 02472 4766 02473 1050 JLT .+6 02474 2501 02475 0400 FLDA LOC 02476 0014 02477 6400 FSTA KNFLOC 02500 4766 / IF(RND(1000).LT.95*(DFLAG-2))STICK=STICK+1 02501 1130 JSR RND 02502 0000 02503 1030 JA .+4 02504 2507 02505 1030 JA #LIT+314 02506 0510 02507 6227 FSTA #TMP 02510 0400 FLDA DFLAG 02511 4460 02512 2241 FSUB TWO 02513 4305 FMUL #LIT+146 02514 2227 FSUB #TMP 02515 1050 JLT #6030 02516 2522 02517 0240 FLDA ONE 02520 5400 FADDM STICK 02521 0022 /6030 CONTINUE 02522 0400 #6030, FLDA I 02523 0000 02524 1240 FADD ONE 02525 6400 FSTA I 02526 0000 02527 2245 FSUB #LIT+6 RALF V50A 24-JUL-20 PAGE 3-17 02530 1020 JLE #G0055 02531 1523 /C /C NOW WE KNOW WHAT'S HAPPENING. LET'S TELL THE POOR SUCKER ABOUT IT. /C / IF(DTOTAL.EQ.0)GOTO 2000 02532 0400 FLDA DTOTAL 02533 0003 02534 1000 JEQ #2000 02535 2760 / IF(DTOTAL.EQ.1)GOTO 75 02536 2240 FSUB ONE 02537 1000 JEQ #75 02540 2601 / TYPE 67,DTOTAL /67 FORMAT(' There are ',I1,' threatening little dwarves in the' / 1 ,' room with you.') 02541 1130 JSR SIXOUT 02542 0000 02543 1030 JA .+10 02544 2553 02545 1031 JA #67A 02546 7676 02547 1030 JA ZERO 02550 0160 02551 1030 JA TWO 02552 0166 02553 3000 TRAP3 #WRITO 02554 0000 02555 1030 JA #LIT 02556 0174 02557 1031 JA #67 02560 7704 02561 0400 FLDA DTOTAL 02562 0003 02563 3000 TRAP3 #RSVO 02564 0000 02565 3000 TRAP3 #RENDO 02566 0000 02567 1130 JSR SIXOUT 02570 0000 / GOTO 77 02571 1030 JA #77 02572 2607 02573 1031 JA #67B 02574 7711 02575 1030 JA ZERO 02576 0160 02577 1030 JA ONE 02600 0163 /75 CALL RSPEAK(4) RALF V50A 24-JUL-20 PAGE 3-18 02601 1130 #75, JSR RSPEAK 02602 0000 02603 1030 JA .+4 02604 2607 02605 1030 JA #LIT 02606 0174 /77 IF(ATTACK.EQ.0)GOTO 2000 02607 0400 #77, FLDA ATTACK 02610 0000 02611 1000 JEQ #2000 02612 2760 / IF(DFLAG.EQ.2)DFLAG=3 02613 0400 FLDA DFLAG 02614 4460 02615 2241 FSUB TWO 02616 1040 JNE .+5 02617 2623 02620 0242 FLDA THREE 02621 6400 FSTA DFLAG 02622 4460 / IF(ATTACK.EQ.1)GOTO 79 02623 0400 FLDA ATTACK 02624 0000 02625 2240 FSUB ONE 02626 1000 JEQ #79 02627 2743 / TYPE 78,ATTACK /78 FORMAT(' ',I1,' of them throw knives at you!') 02630 3000 TRAP3 #WRITO 02631 0000 02632 1030 JA #LIT 02633 0174 02634 1031 JA #78 02635 7743 02636 0400 FLDA ATTACK 02637 0000 02640 3000 TRAP3 #RSVO 02641 0000 02642 3000 TRAP3 #RENDO 02643 0000 02644 1130 JSR SIXOUT 02645 0000 02646 1030 JA .+10 02647 2656 02650 1031 JA #78B 02651 7750 02652 1030 JA ZERO 02653 0160 02654 1030 JA ONE 02655 0163 / K=6 02656 0245 FLDA #LIT+6 02657 6400 FSTA K 02660 6215 RALF V50A 24-JUL-20 PAGE 3-19 /82 IF(STICK.GT.1)GOTO 83 02661 0400 #82, FLDA STICK 02662 0022 02663 2240 FSUB ONE 02664 1060 JGT #83 02665 2707 / CALL RSPEAK(K+STICK) 02666 0400 FLDA K 02667 6215 02670 1400 FADD STICK 02671 0022 02672 6227 FSTA #TMP 02673 1130 JSR RSPEAK 02674 0000 02675 1030 JA .+4 02676 2701 02677 1030 JA #TMP 02700 0130 / IF(STICK.EQ.0)GOTO 2000 02701 0400 FLDA STICK 02702 0022 02703 1000 JEQ #2000 02704 2760 / GOTO 84 02705 1030 JA #84 02706 2735 /83 TYPE 68,STICK 02707 3000 #83, TRAP3 #WRITO 02710 0000 02711 1030 JA #LIT 02712 0174 02713 1031 JA #68 02714 7743 02715 0400 FLDA STICK 02716 0022 02717 3000 TRAP3 #RSVO 02720 0000 02721 3000 TRAP3 #RENDO 02722 0000 /68 FORMAT(' ',I1,' of them get you!') 02723 1130 JSR SIXOUT 02724 0000 02725 1030 JA .+10 02726 2735 02727 1031 JA #68B 02730 7770 02731 1030 JA ZERO 02732 0160 02733 1030 JA ONE 02734 0163 /84 OLDLC2=LOC 02735 0400 #84, FLDA LOC 02736 0014 02737 6400 FSTA OLDLC2 RALF V50A 24-JUL-20 PAGE 3-20 02740 0006 / GOTO 99 02741 1030 JA #99 02742 6617 /C /79 CALL RSPEAK(5) 02743 1130 #79, JSR RSPEAK 02744 0000 02745 1030 JA .+4 02746 2751 02747 1030 JA #LIT+3 02750 0177 / K=52 02751 0100 LDX 64,0 /52 02752 0064 02753 0030 XTA 0 02754 6400 FSTA K 02755 6215 / GOTO 82 02756 1030 JA #82 02757 2661 /C DESCRIBE THE CURRENT LOCATION AND (MAYBE) GET NEXT COMMAND. /C /C PRINT TEXT FOR CURRENT LOC. /C /2000 IF(LOC.EQ.0)GOTO 99 02760 0400 #2000, FLDA LOC 02761 0014 02762 1000 JEQ #99 02763 6617 / KK=STEXT(LOC) 02764 0400 FLDA LOC 02765 0014 02766 0027 ATX 7 02767 0470 FLDA STEXT-3,7 02770 0055 02771 6400 FSTA KK 02772 6330 / KENT=0 02773 0002 FCLA 02774 6213 FSTA KENT / IF (ABBNUM.NE.0) KENT=MOD(ABB(LOC),ABBNUM) 02775 0400 FLDA ABBNUM 02776 4774 02777 1000 JEQ .+26 03000 3025 03001 0400 FLDA LOC 03002 0014 03003 0027 ATX 7 03004 0037 XTA 7 03005 4242 FMUL THREE 03006 0010 ALN 0 03007 0006 STARTD 03010 1355 FADD PABB RALF V50A 24-JUL-20 PAGE 3-21 03011 6400 FSTA .+7 03012 3020 03013 0005 STARTF 03014 1130 JSR MOD 03015 0000 03016 1030 JA .+6 03017 3024 03020 1030 JA . 03021 3020 03022 1030 JA ABBNUM 03023 4774 03024 6213 FSTA KENT / IF (KENT.EQ.0.OR.KK.EQ.0) KK=LTEXT(LOC) 03025 0213 NOMOD, FLDA KENT 03026 1000 JEQ .+6 03027 3034 03030 0400 FLDA KK 03031 6330 03032 1040 JNE .+11 03033 3043 03034 0400 FLDA LOC 03035 0014 03036 0027 ATX 7 03037 0470 FLDA LTEXT-3,7 03040 0757 03041 6400 FSTA KK 03042 6330 / IF(FORCED(LOC).OR..NOT.DARK(0))GOTO 2001 03043 0400 FLDA LOC 03044 0014 03045 1120 JSA FORCED 03046 0655 03047 1040 JNE #2001 03050 3075 03051 1120 JSA DARK 03052 0711 03053 1000 JEQ #2001 03054 3075 / IF(WZDARK.AND.PCT(35))GOTO 90 03055 0400 FLDA WZDARK 03056 0025 03057 1000 JEQ .+12 03060 3071 03061 1130 JSR PCT 03062 0000 03063 1030 JA .+4 03064 3067 03065 1030 JA #LIT+66 03066 0262 03067 1040 JNE #90 03070 6605 / KK=RTEXT(16) 03071 0400 FLDA RTEXT+55 03072 0055 03073 6400 FSTA KK 03074 6330 RALF V50A 24-JUL-20 PAGE 3-22 /2001 IF(TOTING(BEAR))CALL RSPEAK(141) 03075 0400 #2001, FLDA BEAR 03076 4642 03077 1120 JSA TOTING 03100 0622 03101 1000 JEQ .+10 03102 3111 03103 1130 JSR RSPEAK 03104 0000 03105 1030 JA .+4 03106 3111 03107 1030 JA #LIT+226 03110 0422 / CALL SPEAK(KK) 03111 1130 JSR SPEAK 03112 0000 03113 1030 JA .+4 03114 3117 03115 1030 JA KK 03116 6330 / K=1 03117 0240 FLDA ONE 03120 6400 FSTA K 03121 6215 / IF(FORCED(LOC))GOTO 8 03122 0400 FLDA LOC 03123 0014 03124 1120 JSA FORCED 03125 0655 03126 1040 JNE #8 03127 5146 / IF(LOC.EQ.33.AND.PCT(25).AND..NOT.CLOSNG)CALL RSPEAK(8) 03130 0100 LDX 41,0 /33 03131 0041 03132 0030 XTA 0 03133 2400 FSUB LOC 03134 0014 03135 1040 JNE .+24 03136 3161 03137 1130 JSR PCT 03140 0000 03141 1030 JA .+4 03142 3145 03143 1030 JA #LIT+52 03144 0246 03145 1000 JEQ .+14 03146 3161 03147 0400 FLDA CLOSNG 03150 5024 03151 1040 JNE .+10 03152 3161 03153 1130 JSR RSPEAK 03154 0000 03155 1030 JA .+4 03156 3161 RALF V50A 24-JUL-20 PAGE 3-23 03157 1030 JA #LIT+11 03160 0205 /C /C PRINT OUT DESCRIPTIONS OF OBJECTS AT THIS LOCATION. IF NOT CLOSING AND /C PROPERTY VALUE IS NEGATIVE, TALLY OFF ANOTHER TREASURE. RUG IS SPECIAL /C CASE; ONCE SEEN, ITS PROP IS 1 (DRAGON ON IT) TILL DRAGON IS KILLED. /C SIMILARLY FOR CHAIN; PROP IS INITIALLY 1 (LOCKED TO BEAR). THESE HACKS /C ARE BECAUSE PROP=0 IS NEEDED TO GET FULL SCORE. /C / IF(DARK(0))GOTO 2012 03161 1120 JSA DARK 03162 0711 03163 1040 JNE #2012 03164 3400 / ABB(LOC)=ABB(LOC)+1 03165 0400 FLDA LOC 03166 0014 03167 0027 ATX 7 03170 0477 FLDA ABB-3,7 03171 7775 03172 1240 FADD ONE 03173 6477 FSTA ABB-3,7 03174 7775 / I=ATLOC(LOC) 03175 0477 FLDA ATLOC-3,7 03176 7775 03177 6400 FSTA I 03200 0000 /2004 IF(I.EQ.0)GOTO 2012 03201 0400 #2004, FLDA I 03202 0000 03203 1000 JEQ #2012 03204 3400 / OBJ=I 03205 6400 FSTA OBJ 03206 6207 / IF(OBJ.GT.100)OBJ=OBJ-100 03207 2307 FSUB #LIT+154 03210 1020 JLE .+4 03211 3214 / FLDA OBJ / FSUB #LIT+154 03212 6400 FSTA OBJ 03213 6207 / IF(OBJ.EQ.STEPS.AND.TOTING(NUGGET))GOTO 2008 03214 0400 FLDA OBJ 03215 6207 03216 2400 FSUB STEPS 03217 4532 03220 1040 JNE .+10 03221 3230 03222 0400 FLDA NUGGET 03223 4656 03224 1120 JSA TOTING 03225 0622 RALF V50A 24-JUL-20 PAGE 3-24 03226 1040 JNE #2008 03227 3353 / IF(PROP(OBJ).GE.0)GOTO 2006 03230 0400 FLDA OBJ 03231 6207 03232 0027 ATX 7 03233 0470 FLDA PROP-3,7 03234 3647 03235 1010 JGE #2006 03236 3312 / IF(CLOSED)GOTO 2008 03237 0400 FLDA CLOSED 03240 5032 03241 1040 JNE #2008 03242 3353 / PROP(OBJ)=0 03243 0002 FCLA 03244 6470 FSTA PROP-3,7 03245 3647 / IF(OBJ.EQ.RUG.OR.OBJ.EQ.CHAIN)PROP(OBJ)=1 03246 0400 FLDA OBJ 03247 6207 03250 2400 FSUB RUG 03251 4711 03252 1000 JEQ .+10 03253 3262 03254 0400 FLDA OBJ 03255 6207 03256 2400 FSUB CHAIN 03257 4714 03260 1040 JNE .+5 03261 3265 03262 0240 FLDA ONE 03263 6470 FSTA PROP-3,7 03264 3647 / TALLY=TALLY-1 03265 0400 FLDA TALLY 03266 4326 03267 1372 FADD MINUS1 03270 6400 FSTA TALLY 03271 4326 /C IF REMAINING TREASURES TOO ELUSIVE, ZAP HIS LAMP. / IF(TALLY.EQ.TALLY2.AND.TALLY.NE.0)LIMIT=MIN0(35,LIMIT) 03272 1000 JEQ #2006 03273 3312 03274 2400 FSUB TALLY2 03275 4331 03276 1040 JNE #2006 03277 3312 03300 1130 JSR MIN0 03301 0000 03302 1030 JA .+6 03303 3310 03304 1030 JA #LIT+66 03305 0262 03306 1030 JA LIMIT RALF V50A 24-JUL-20 PAGE 3-25 03307 0011 03310 6400 FSTA LIMIT 03311 0011 /2006 KK=PROP(OBJ) 03312 0400 #2006, FLDA OBJ 03313 6207 03314 0027 ATX 7 03315 0470 FLDA PROP-3,7 03316 3647 03317 6400 FSTA KK 03320 6330 / IF(OBJ.EQ.STEPS.AND.LOC.EQ.FIXED(STEPS))KK=1 03321 0400 FLDA OBJ 03322 6207 03323 2400 FSUB STEPS 03324 4532 03325 1040 JNE .+16 03326 3343 03327 0400 FLDA STEPS 03330 4532 03331 0027 ATX 7 03332 0400 FLDA LOC 03333 0014 03334 2470 FSUB FIXED-3,7 03335 2503 03336 1040 JNE .+5 03337 3343 03340 0240 FLDA ONE 03341 6400 FSTA KK 03342 6330 / CALL PSPEAK(OBJ,KK) 03343 1130 JSR PSPEAK 03344 0000 03345 1030 JA .+6 03346 3353 03347 1030 JA OBJ 03350 6207 03351 1030 JA KK 03352 6330 /2008 I=LINK(I) 03353 0400 #2008, FLDA I 03354 0000 03355 0027 ATX 7 03356 0470 FLDA LINK-3,7 03357 0677 03360 6400 FSTA I 03361 0000 / GOTO 2004 03362 1030 JA #2004 03363 3201 /2009 K=54 03364 0274 #2009, FLDA #LIT+113 03365 6400 FSTA K 03366 6215 RALF V50A 24-JUL-20 PAGE 3-26 /2010 SPK=K 03367 0400 #2010, FLDA K 03370 6215 03371 6221 FSTA SPK /2011 CALL RSPEAK(SPK) 03372 1130 #2011, JSR RSPEAK 03373 0000 03374 1030 JA .+4 03375 3400 03376 1030 JA SPK 03377 0106 /2012 VERB=0 03400 0002 #2012, FCLA 03401 6400 FSTA VERB 03402 6220 / OBJ=0 03403 6400 FSTA OBJ 03404 6207 /C /C CHECK IF THIS LOC IS ELIGIBLE FOR ANY HINTS. IF BEEN HERE LONG ENOUGH, /C BRANCH TO HELP SECTION (ON LATER PAGE). HINTS ALL COME BACK HERE EVENTUALLY /C TO FINISH THE LOOP. IGNORE "HINTS" < 4 (SPECIAL STUFF, SEE DATABASE NOTES). /C /2600 DO 2602 HINT=4,HNTMAX 03405 0243 #2600, FLDA #LIT 03406 6212 FSTA HINT / IF(HINTED(HINT))GOTO 2602 03407 0212 #G0102, FLDA HINT 03410 0027 ATX 7 03411 0470 FLDA HINTED-3,7 03412 6226 03413 1040 JNE #2602 03414 3446 / IF(.NOT.BITSET(LOC,HINT))HINTLC(HINT)=-1 03415 1130 JSR BITSET 03416 0000 03417 1030 JA .+6 03420 3425 03421 1030 JA LOC 03422 0014 03423 1030 JA HINT 03424 0061 03425 1040 JNE .+6 03426 3433 03427 0372 FLDA MINUS1 03430 6470 FSTA HINTLC-3,7 03431 4331 / HINTLC(HINT)=HINTLC(HINT)+1 03432 0240 FLDA ONE 03433 5470 FADDM HINTLC-3,7 03434 4331 / IF(HINTLC(HINT).GE.HINTS(HINT,1))GOTO 40000 RALF V50A 24-JUL-20 PAGE 3-27 03435 0255 FLDA #LIT+36 03436 1212 FADD HINT 03437 0026 ATX 6 03440 0470 FLDA HINTLC-3,7 03441 4331 03442 2460 FSUB HINTS-0077,6 03443 3170 03444 1011 JGE #40000 03445 5466 /2602 CONTINUE 03446 0212 #2602, FLDA HINT 03447 1240 FADD ONE 03450 6212 FSTA HINT 03451 2400 FSUB HNTMAX 03452 3647 03453 1020 JLE #G0102 03454 3407 /C /C KICK THE RANDOM NUMBER GENERATOR JUST TO ADD VARIETY TO THE CHASE. ALSO, /C IF CLOSING TIME, CHECK FOR ANY OBJECTS BEING TOTED WITH PROP < 0 AND SET /C THE PROP TO -1-PROP. THIS WAY OBJECTS WON'T BE DESCRIBED UNTIL THEY'VE /C BEEN PICKED UP AND PUT DOWN SEPARATE FROM THEIR RESPECTIVE PILES. DON'T /C TICK CLOCK1 UNLESS WELL INTO CAVE (AND NOT AT Y2). /C / IF(.NOT.CLOSED)GOTO 2605 03455 0400 FLDA CLOSED 03456 5032 03457 1000 JEQ #2605 03460 3541 / IF(PROP(OYSTER).LT.0.AND.TOTING(OYSTER)) / 1 CALL PSPEAK(OYSTER,1) 03461 0400 FLDA OYSTER 03462 4562 03463 0027 ATX 7 03464 0470 FLDA PROP-3,7 03465 3647 03466 1010 JGE .+20 03467 3506 03470 0400 FLDA OYSTER 03471 4562 03472 1120 JSA TOTING 03473 0622 03474 1000 JEQ .+12 03475 3506 03476 1130 JSR PSPEAK 03477 0000 03500 1030 JA .+6 03501 3506 03502 1030 JA OYSTER 03503 4562 03504 1030 JA ONE 03505 0163 / DO 2604 I=1,100 03506 0240 FLDA ONE RALF V50A 24-JUL-20 PAGE 3-28 03507 6400 FSTA I 03510 0000 /2604 IF(TOTING(I).AND.PROP(I).LT.0)PROP(I)=-1-PROP(I) 03511 0400 #2604, FLDA I 03512 0000 03513 0027 ATX 7 03514 1120 JSA TOTING 03515 0622 03516 1000 JEQ .+13 03517 3531 03520 0470 FLDA PROP-3,7 03521 3647 03522 1010 JGE .+7 03523 3531 03524 0372 FLDA MINUS1 03525 2470 FSUB PROP-3,7 03526 3647 03527 6470 FSTA PROP-3,7 03530 3647 03531 0400 FLDA I 03532 0000 03533 1240 FADD ONE 03534 6400 FSTA I 03535 0000 03536 2307 FSUB #LIT+154 03537 1020 JLE #2604 03540 3511 /2605 WZDARK=DARK(0) 03541 1120 #2605, JSA DARK 03542 0711 03543 6400 FSTA WZDARK 03544 0025 / IF(KNFLOC.GT.0.AND.KNFLOC.NE.LOC)KNFLOC=0 03545 0400 FLDA KNFLOC 03546 4766 03547 1020 JLE .+11 03550 3560 03551 2400 FSUB LOC 03552 0014 03553 1000 JEQ .+5 03554 3560 03555 0002 FCLA 03556 6400 FSTA KNFLOC 03557 4766 / I=RND(1) 03560 1130 JSR RND 03561 0000 03562 1030 JA .+4 03563 3566 03564 1030 JA ONE 03565 0163 / CALL GETIN(WD1,WD1X,WD2,WD2X) 03566 1130 JSR GETIN 03567 0000 RALF V50A 24-JUL-20 PAGE 3-29 03570 1030 JA .+12 03571 3602 03572 1030 JA WD1 03573 0111 03574 1030 JA WD1X 03575 0114 03576 1030 JA WD2 03577 0117 03600 1030 JA WD2X 03601 0122 /C /C EVERY INPUT, CHECK "FOOBAR" FLAG. IF ZERO, NOTHING'S GOING ON. IF POS, /C MAKE NEG. IF NEG, HE SKIPPED A WORD, SO MAKE IT ZERO. /C /2608 FOOBAR=MIN0(0,-FOOBAR) 03602 0400 #2608, FLDA FOOBAR 03603 5010 03604 0003 FNEG 03605 6227 FSTA #TMP 03606 1130 JSR MIN0 03607 0000 03610 1030 JA .+6 03611 3616 03612 1030 JA ZERO 03613 0160 03614 1030 JA #TMP 03615 0130 03616 6400 FSTA FOOBAR 03617 5010 / TURNS=TURNS+1 03620 0240 FLDA ONE 03621 5400 FADDM TURNS 03622 4760 /C IF(VERB.EQ.SAY.AND.WD2.NE.0)VERB=0 /C IF(VERB.EQ.SAY)GOTO 4090 / IF(TALLY.EQ.0.AND.LOC.GE.15.AND.LOC.NE.33)CLOCK1=CLOCK1-1 03623 0400 FLDA TALLY 03624 4326 03625 1040 JNE .+23 03626 3650 03627 0400 FLDA LOC 03630 0014 03631 2252 FSUB #LIT+25 03632 1050 JLT .+16 03633 3650 03634 0100 LDX 41,0 /33 03635 0041 03636 0030 XTA 0 03637 2400 FSUB LOC 03640 0014 03641 1000 JEQ .+7 03642 3650 03643 0400 FLDA CLOCK1 03644 5016 03645 2240 FSUB ONE RALF V50A 24-JUL-20 PAGE 3-30 03646 6400 FSTA CLOCK1 03647 5016 / IF(CLOCK1.EQ.0)GOTO 10000 03650 0400 FLDA CLOCK1 03651 5016 03652 1001 JEQ #10000 03653 6044 / IF(CLOCK1.LT.0)CLOCK2=CLOCK2-1 03654 1010 JGE .+7 03655 3663 03656 0400 FLDA CLOCK2 03657 5021 03660 2240 FSUB ONE 03661 6400 FSTA CLOCK2 03662 5021 / IF(CLOCK2.EQ.0)GOTO 11000 03663 0400 FLDA CLOCK2 03664 5021 03665 1001 JEQ #11000 03666 6261 / IF(PROP(LAMP).EQ.1)LIMIT=LIMIT-1 03667 0400 FLDA LAMP 03670 4513 03671 0027 ATX 7 03672 0470 FLDA PROP-3,7 03673 3647 03674 2240 FSUB ONE 03675 1040 JNE .+5 03676 3702 03677 0372 FLDA MINUS1 03700 5400 FADDM LIMIT 03701 0011 / IF(LIMIT.LE.30.AND.HERE(BATTER).AND.PROP(BATTER).EQ.0 / 1 .AND.HERE(LAMP))GOTO 12000 03702 0400 FLDA LIMIT 03703 0011 03704 2264 FSUB #LIT+63 03705 1060 JGT .+25 03706 3732 03707 0400 FLDA BATTER 03710 4653 03711 1120 JSA HERE 03712 0667 03713 1000 JEQ .+17 03714 3732 03715 0400 FLDA BATTER 03716 4653 03717 0027 ATX 7 03720 0470 FLDA PROP-3,7 03721 3647 03722 1040 JNE .+10 03723 3732 03724 0400 FLDA LAMP 03725 4513 03726 1120 JSA HERE 03727 0667 RALF V50A 24-JUL-20 PAGE 3-31 03730 1041 JNE #12000 03731 6635 / IF(LIMIT.EQ.0)GOTO 12400 03732 0400 FLDA LIMIT 03733 0011 03734 1001 JEQ #12400 03735 6752 / IF(LIMIT.LT.0.AND.LOC.LE.8)GOTO 12600 03736 0400 FLDA LIMIT 03737 0011 03740 1010 JGE .+7 03741 3747 03742 0400 FLDA LOC 03743 0014 03744 2246 FSUB #LIT+11 03745 1021 JLE #12600 03746 6777 / IF(LIMIT.LE.30)GOTO 12200 03747 0400 FLDA LIMIT 03750 0011 03751 2264 FSUB #LIT+63 03752 1021 JLE #12200 03753 6677 /19999 K=43 03754 0100 #19999, LDX 53,0 /43 03755 0053 03756 0030 XTA 0 03757 6400 FSTA K 03760 6215 / IF(LIQLOC(LOC).EQ.WATER)K=70 03761 1120 JSA LIQLOC 03762 1026 03763 2400 FSUB WATER 03764 4604 03765 1040 JNE .+7 03766 3774 03767 0100 LDX 106,0 /70 03770 0106 03771 0030 XTA 0 03772 6400 FSTA K 03773 6215 /C /C DO PRELIMINARY ANALYSIS OF SENTENCE TO FIND CERTAIN SPECIAL /C CASES, VIZ, /C /C ENTER <WATER,STREAM> /C ENTER <LOCATION> /C <WATER,OIL> <PLANT,DOOR> /C / CALL VOCAB(WD1,WD1A,-1,I) 03774 1130 JSR VOCAB 03775 0000 03776 1030 JA .+6 03777 4004 04000 1030 JA WD1 RALF V50A 24-JUL-20 PAGE 3-32 04001 0111 04002 1030 JA MINUS1 04003 0601 04004 6400 FSTA I 04005 0000 / CALL VOCAB(WD2,WD2A,-1,J) 04006 1130 JSR VOCAB 04007 0000 04010 1030 JA .+6 04011 4016 04012 1030 JA WD2 04013 0117 04014 1030 JA MINUS1 04015 0601 04016 6400 FSTA J 04017 6212 / IF(WD1.NE.'ENTE') GO TO 2609 04020 0222 FLDA WD1 04021 2357 FSUB TENTE 04022 1040 JNE #2609 04023 4044 / IF(J .EQ. (WATER+1000) / 1 .OR. J .EQ. STREAM) GO TO 2010 04024 0400 FLDA WATER 04025 4604 04026 1347 FADD #LIT+314 04027 2400 FSUB J 04030 6212 04031 1000 JEQ #2010 04032 3367 04033 0400 FLDA J 04034 6212 04035 2400 FSUB STREAM 04036 5065 04037 1000 JEQ #2010 04040 3367 / IF(WD2 .NE. 0) GO TO 2800 04041 0224 FLDA WD2 04042 1040 JNE #2800 04043 4207 /2609 IF((I .NE. (WATER+1000) .AND. I .NE. (OIL+1000)) / 1 .OR. (J .NE. (PLANT+1000) .AND. J .NE. (DOOR+1000))) / 2 GO TO 2610 04044 0400 #2609, FLDA WATER 04045 4604 04046 1347 FADD #LIT+314 04047 2400 FSUB I 04050 0000 04051 1000 JEQ .+11 04052 4062 04053 0400 FLDA OIL 04054 4607 04055 1347 FADD #LIT+314 04056 2400 FSUB I 04057 0000 RALF V50A 24-JUL-20 PAGE 3-33 04060 1040 JNE #2610 04061 4102 04062 0400 FLDA PLANT 04063 4612 04064 1347 FADD #LIT+314 04065 2400 FSUB J 04066 6212 04067 1000 JEQ .+11 04070 4100 04071 0400 FLDA DOOR 04072 4540 04073 1347 FADD #LIT+314 04074 2400 FSUB J 04075 6212 04076 1040 JNE #2610 04077 4102 / WD2="POUR" 04100 0360 FLDA TPOUR 04101 6224 FSTA WD2 /2610 IF(WD1 .EQ. 'WEST' .AND. PCT(10)) / 1 CALL RSPEAK(17) 04102 0222 #2610, FLDA WD1 04103 2361 FSUB TWEST 04104 1040 JNE #2630 04105 4124 04106 1130 JSR PCT 04107 0000 04110 1030 JA .+4 04111 4114 04112 1030 JA #LIT+17 04113 0213 04114 1000 JEQ #2630 04115 4124 04116 1130 JSR RSPEAK 04117 0000 04120 1030 JA .+4 04121 4124 04122 1030 JA #LIT+33 04123 0227 /2630 CALL VOCAB(WD1,-1,I) 04124 1130 #2630, JSR VOCAB 04125 0000 04126 1030 JA .+6 04127 4134 04130 1030 JA WD1 04131 0111 04132 1030 JA MINUS1 04133 0601 04134 6400 FSTA I 04135 0000 / IF(I.EQ.-1)GOTO 3000 04136 1240 FADD ONE 04137 1000 JEQ #3000 04140 4217 RALF V50A 24-JUL-20 PAGE 3-34 / K=MOD(I,1000) 04141 1130 JSR MOD 04142 0000 04143 1030 JA .+6 04144 4151 04145 1030 JA I 04146 0000 04147 1030 JA #LIT+314 04150 0510 04151 6400 FSTA K 04152 6215 / KQ=I/1000+1 04153 0400 FLDA I 04154 0000 04155 3347 FDIV #LIT+314 04156 1120 JSA #FIX 04157 0000 04160 1240 FADD ONE 04161 6214 FSTA KQ / GOTO (8,5000,4000,2010)KQ 04162 0214 FLDA KQ 04163 0021 ATX 1 04164 0006 STARTD 04165 0410 FLDA .+2,1 04166 4167 04167 0005 STARTF 04170 0007 JAC 04171 1030 JA #8 04172 5146 04173 1030 JA #5000 04174 4560 04175 1030 JA #4000 04176 4263 04177 1030 JA #2010 04200 3367 / CALL BUG(22) 04201 1130 JSR BUG 04202 0000 04203 1030 JA .+4 04204 4207 04205 1030 JA #LIT+41 04206 0235 /C /C GET SECOND WORD FOR ANALYSIS. /C /2800 WD1=WD2 / WD1A=WD2A 04207 0224 #2800, FLDA WD2 04210 6222 FSTA WD1 / WD1X=WD2X 04211 0225 FLDA WD2X 04212 6223 FSTA WD1X / WD2=0 04213 0002 FCLA RALF V50A 24-JUL-20 PAGE 3-35 04214 6224 FSTA WD2 / GOTO 2610 04215 1030 JA #2610 04216 4102 /C /C GEE, I DON'T UNDERSTAND. /C /3000 SPK=60 04217 0100 #3000, LDX 74,0 /60 04220 0074 04221 0030 XTA 0 04222 6221 FSTA SPK / IF(PCT(20))SPK=61 04223 1130 JSR PCT 04224 0000 04225 1030 JA .+4 04226 4231 04227 1030 JA #LIT+36 04230 0232 04231 1000 JEQ .+6 04232 4237 04233 0100 LDX 75,0 /61 04234 0075 04235 0030 XTA 0 04236 6221 FSTA SPK / IF(PCT(20))SPK=13 04237 1130 JSR PCT 04240 0000 04241 1030 JA .+4 04242 4245 04243 1030 JA #LIT+36 04244 0232 04245 1000 JEQ .+6 04246 4253 04247 0100 LDX 15,0 /13 04250 0015 04251 0030 XTA 0 04252 6221 FSTA SPK / CALL RSPEAK(SPK) 04253 1130 JSR RSPEAK 04254 0000 04255 1030 JA .+4 04256 4261 04257 1030 JA SPK 04260 0106 / GOTO 2600 04261 1030 JA #2600 04262 3405 /C /C ANALYSE A VERB. REMEMBER WHAT IT WAS, GO BACK FOR OBJECT IF SECOND WORD /C UNLESS VERB IS "SAY", WHICH SNARFS ARBITRARY SECOND WORD. /C /4000 VERB=K 04263 0400 #4000, FLDA K RALF V50A 24-JUL-20 PAGE 3-36 04264 6215 04265 6400 FSTA VERB 04266 6220 / SPK=ACTSPK(VERB) 04267 0027 ATX 7 04270 0470 FLDA ACTSPK-3,7 04271 2211 04272 6221 FSTA SPK / IF(WD2.NE.0.AND.VERB.NE.SAY)GOTO 2800 04273 0224 FLDA WD2 04274 1000 JEQ .+10 04275 4304 04276 0400 FLDA VERB 04277 6220 04300 2400 FSUB SAY 04301 4741 04302 1040 JNE #2800 04303 4207 / IF(VERB.EQ.SAY)OBJ=WD2 04304 0400 FLDA VERB 04305 6220 04306 2400 FSUB SAY 04307 4741 04310 1040 JNE .+5 04311 4315 04312 0224 FLDA WD2 04313 6400 FSTA OBJ 04314 6207 / IF(OBJ.NE.0)GOTO 4090 04315 0400 FLDA OBJ 04316 6207 04317 2237 FSUB ZERO 04320 1040 JNE #4090 04321 4440 /C /C ANALYSE AN INTRANSITIVE VERB (IE, NO OBJECT GIVEN YET). /C /4080 GOTO(8010,8000,8000,8040,2009,8040,9070,9080,8000,8000, / 1 2011,9120,9130,8140,9150,8000,8000,8180,8000,8200, / 2 8000,9220,9230,8240,8250,8260,8270,8000,8000,8300, / 3 8310,8320)VERB /C TAKE DROP SAY OPEN NOTH LOCK ON OFF WAVE CALM /C WALK KILL POUR EAT DRNK RUB TOSS QUIT FIND INVN /C FEED FILL BLST SCOR FOO BRF READ BREK WAKE SUSP /C HOUR RESU 04322 0400 #4080, FLDA VERB 04323 6220 04324 0021 ATX 1 04325 0006 STARTD 04326 0410 FLDA .+2,1 04327 4330 04330 0005 STARTF 04331 0007 JAC 04332 1030 JA #8010 04333 7051 RALF V50A 24-JUL-20 PAGE 3-37 04334 1030 JA #8000 04335 7010 04336 1030 JA #8000 04337 7010 04340 1031 JA #8040 04341 0410 04342 1030 JA #2009 04343 3364 04344 1031 JA #8040 04345 0410 04346 1031 JA #9070 04347 1245 04350 1031 JA #9080 04351 1303 04352 1030 JA #8000 04353 7010 04354 1030 JA #8000 04355 7010 04356 1030 JA #2011 04357 3372 04360 1031 JA #9120 04361 1440 04362 1031 JA #9130 04363 2345 04364 1031 JA #8140 04365 2611 04366 1031 JA #9150 04367 2727 04370 1030 JA #8000 04371 7010 04372 1030 JA #8000 04373 7010 04374 1031 JA #8180 04375 3520 04376 1030 JA #8000 04377 7010 04400 1031 JA #8200 04401 3663 04402 1030 JA #8000 04403 7010 04404 1031 JA #9220 04405 4236 04406 1031 JA #9230 04407 4457 04410 1031 JA #8240 04411 4534 04412 1031 JA #8250 04413 4650 04414 1031 JA #8260 04415 5047 04416 1031 JA #8270 04417 5063 04420 1030 JA #8000 04421 7010 04422 1030 JA #8000 04423 7010 RALF V50A 24-JUL-20 PAGE 3-38 04424 1031 JA #8300 04425 5440 04426 1031 JA #8310 04427 5450 04430 1031 JA #8320 04431 5456 / CALL BUG(23) 04432 1130 JSR BUG 04433 0000 04434 1030 JA .+4 04435 4440 04436 1030 JA #LIT+44 04437 0240 /C /C ANALYSE A TRANSITIVE VERB. /C /4090 GOTO(9010,9020,9030,9040,2009,9040,9070,9080,9090,2011, / 1 2011,9120,9130,9140,9150,9160,9170,2011,9190,9190, / 2 9210,9220,9230,2011,2011,2011,9270,9280,9290,2011, / 3 2011,2011)VERB /C TAKE DROP SAY OPEN NOTH LOCK ON OFF WAVE CALM /C WALK KILL POUR EAT DRNK RUB TOSS QUIT FIND INVN /C FEED FILL BLST SCOR FOO BRF READ BREK WAKE SUSP /C HOUR RESU 04440 0400 #4090, FLDA VERB 04441 6220 04442 0021 ATX 1 04443 0006 STARTD 04444 0410 FLDA .+2,1 04445 4446 04446 0005 STARTF 04447 0007 JAC 04450 1030 JA #9010 04451 7125 04452 1030 JA #9020 04453 7523 04454 1031 JA #9030 04455 0315 04456 1031 JA #9040 04457 0514 04460 1030 JA #2009 04461 3364 04462 1031 JA #9040 04463 0514 04464 1031 JA #9070 04465 1245 04466 1031 JA #9080 04467 1303 04470 1031 JA #9090 04471 1337 04472 1030 JA #2011 04473 3372 04474 1030 JA #2011 04475 3372 04476 1031 JA #9120 RALF V50A 24-JUL-20 PAGE 3-39 04477 1440 04500 1031 JA #9130 04501 2345 04502 1031 JA #9140 04503 2633 04504 1031 JA #9150 04505 2727 04506 1031 JA #9160 04507 3033 04510 1031 JA #9170 04511 3047 04512 1030 JA #2011 04513 3372 04514 1031 JA #9190 04515 3542 04516 1031 JA #9190 04517 3542 04520 1031 JA #9210 04521 3756 04522 1031 JA #9220 04523 4236 04524 1031 JA #9230 04525 4457 04526 1030 JA #2011 04527 3372 04530 1030 JA #2011 04531 3372 04532 1030 JA #2011 04533 3372 04534 1031 JA #9270 04535 5160 04536 1031 JA #9280 04537 5314 04540 1031 JA #9290 04541 5420 04542 1030 JA #2011 04543 3372 04544 1030 JA #2011 04545 3372 04546 1030 JA #2011 04547 3372 04550 1030 JA #2011 04551 3372 / CALL BUG(24) 04552 1130 JSR BUG 04553 0000 04554 1030 JA .+4 04555 4560 04556 1030 JA #LIT+47 04557 0243 /C /C ANALYSE AN OBJECT WORD. SEE IF THE THING IS HERE, WHETHER WE'VE GOT A VERB /C YET, AND SO ON. OBJECT MUST BE HERE UNLESS VERB IS "FIND" OR "INVENT(ORY)" /C (AND NO NEW VERB YET TO BE ANALYSED). WATER AND OIL ARE ALSO FUNNY, SINCE /C THEY ARE NEVER ACTUALLY DROPPED AT ANY LOCATION, BUT MIGHT BE HERE INSIDE RALF V50A 24-JUL-20 PAGE 3-40 /C THE BOTTLE OR AS A FEATURE OF THE LOCATION. /C /5000 OBJ=K 04560 0400 #5000, FLDA K 04561 6215 04562 6400 FSTA OBJ 04563 6207 / IF(FIXED(K).NE.LOC.AND..NOT.HERE(K))GOTO 5100 04564 0400 FLDA K 04565 6215 04566 0027 ATX 7 04567 0470 FLDA FIXED-3,7 04570 2503 04571 2400 FSUB LOC 04572 0014 04573 1000 JEQ #5010 04574 4603 04575 0400 FLDA K 04576 6215 04577 1120 JSA HERE 04600 0667 04601 1000 JEQ #5100 04602 4653 /5010 IF(WD2.NE.0)GOTO 2800 04603 0224 #5010, FLDA WD2 04604 1040 JNE #2800 04605 4207 / IF(VERB.NE.0)GOTO 4090 04606 0400 FLDA VERB 04607 6220 04610 1040 JNE #4090 04611 4440 / TYPE 5015 /5015 FORMAT(' What do you want to do with the ',$) 04612 1130 JSR SIXOUT 04613 0000 04614 1030 JA .+10 04615 4624 04616 1032 JA #5015 04617 0002 04620 1030 JA ZERO 04621 0160 04622 1030 JA TWO 04623 0166 / CALL A5TOA1(WD1,WD1A,WD1X,'?') 04624 1130 JSR A5TOA1 04625 0000 04626 1030 JA .+10 04627 4636 04630 1030 JA WD1 04631 0111 04632 1030 JA WD1X 04633 0114 04634 1030 JA TQUES RALF V50A 24-JUL-20 PAGE 3-41 04635 0551 04636 3000 TRAP3 #WRITO 04637 0000 04640 1030 JA #LIT 04641 0174 04642 1030 JA #LINEF+2 04643 4650 04644 3000 TRAP3 #RENDO 04645 0000 / GOTO 2600 04646 1030 #LINEF, JA #2600 04647 3405 04650 5047 TEXT +(' ')+ 04651 4047 04652 5100 /C /5100 IF(K.NE.GRATE)GOTO 5110 04653 0400 #5100, FLDA K 04654 6215 04655 2400 FSUB GRATE 04656 4516 04657 1040 JNE #5110 04660 4724 / IF(LOC.EQ.1.OR.LOC.EQ.4.OR.LOC.EQ.7)K=DPRSSN 04661 0400 FLDA LOC 04662 0014 04663 2240 FSUB ONE 04664 1000 JEQ .+10 04665 4674 04666 2242 FSUB THREE 04667 1000 JEQ .+5 04670 4674 04671 2242 FSUB THREE 04672 1040 JNE .+6 04673 4700 04674 0400 FLDA DPRSSN 04675 4736 04676 6400 FSTA K 04677 6215 / IF(LOC.GT.9.AND.LOC.LT.15)K=ENTRNC 04700 0400 FLDA LOC 04701 0014 04702 2247 FSUB #LIT+14 04703 1020 JLE .+13 04704 4716 04705 0400 FLDA LOC 04706 0014 04707 2252 FSUB #LIT+25 04710 1010 JGE .+6 04711 4716 04712 0400 FLDA ENTRNC 04713 4733 04714 6400 FSTA K 04715 6215 / IF(K.NE.GRATE)GOTO 8 RALF V50A 24-JUL-20 PAGE 3-42 04716 0400 FLDA K 04717 6215 04720 2400 FSUB GRATE 04721 4516 04722 1040 JNE #8 04723 5146 /5110 IF(K.NE.DWARF)GOTO 5120 04724 0400 #5110, FLDA K 04725 6215 04726 2400 FSUB DWARF 04727 4570 04730 1040 JNE #5120 04731 4763 / DO 5112 I=1,5 04732 0240 FLDA ONE 04733 6400 FSTA I 04734 0000 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 5010 04735 0400 #G0122, FLDA I 04736 0000 04737 0027 ATX 7 04740 0470 FLDA DLOC-3,7 04741 4460 04742 2400 FSUB LOC 04743 0014 04744 1040 JNE #5112 04745 4753 04746 0400 FLDA DFLAG 04747 4460 04750 2241 FSUB TWO 04751 1010 JGE #5010 04752 4603 /5112 CONTINUE 04753 0400 #5112, FLDA I 04754 0000 04755 1240 FADD ONE 04756 6400 FSTA I 04757 0000 04760 2244 FSUB #LIT+3 04761 1020 JLE #G0122 04762 4735 /5120 IF((LIQ(0).EQ.K.AND.HERE(BOTTLE)).OR.K.EQ.LIQLOC(LOC))GOTO 5010 04763 1120 #5120, JSA LIQ 04764 1001 04765 2400 FSUB K 04766 6215 04767 1040 JNE .+10 04770 4777 04771 0400 FLDA BOTTLE 04772 4601 04773 1120 JSA HERE 04774 0667 04775 1040 JNE #5010 RALF V50A 24-JUL-20 PAGE 3-43 04776 4603 04777 1120 JSA LIQLOC 05000 1026 05001 2400 FSUB K 05002 6215 05003 1000 JEQ #5010 05004 4603 / IF(OBJ.NE.PLANT.OR..NOT.AT(PLANT2).OR.PROP(PLANT2).EQ.0)GOTO 5130 05005 0400 FLDA OBJ 05006 6207 05007 2400 FSUB PLANT 05010 4612 05011 1040 JNE #5130 05012 5036 05013 0400 FLDA PLANT2 05014 4615 05015 1120 JSA AT 05016 0634 05017 1000 JEQ #5130 05020 5036 05021 0400 FLDA PLANT2 05022 4615 05023 0027 ATX 7 05024 0470 FLDA PROP-3,7 05025 3647 05026 1000 JEQ #5130 05027 5036 / OBJ=PLANT2 05030 0400 FLDA PLANT2 05031 4615 05032 6400 FSTA OBJ 05033 6207 / GOTO 5010 05034 1030 JA #5010 05035 4603 /5130 IF(OBJ.NE.KNIFE.OR.KNFLOC.NE.LOC)GOTO 5140 05036 0400 #5130, FLDA OBJ 05037 6207 05040 2400 FSUB KNIFE 05041 4573 05042 1040 JNE #5140 05043 5061 05044 0400 FLDA KNFLOC 05045 4766 05046 2400 FSUB LOC 05047 0014 05050 1040 JNE #5140 05051 5061 / KNFLOC=-1 05052 0372 FLDA MINUS1 05053 6400 FSTA KNFLOC 05054 4766 / SPK=116 05055 0313 FLDA #LIT+170 05056 6221 FSTA SPK RALF V50A 24-JUL-20 PAGE 3-44 / GOTO 2011 05057 1030 JA #2011 05060 3372 /5140 IF(OBJ.NE.ROD.OR..NOT.HERE(ROD2))GOTO 5190 05061 0400 #5140, FLDA OBJ 05062 6207 05063 2400 FSUB ROD 05064 4524 05065 1040 JNE #5190 05066 5103 05067 0400 FLDA ROD2 05070 4527 05071 1120 JSA HERE 05072 0667 05073 1000 JEQ #5190 05074 5103 / OBJ=ROD2 05075 0400 FLDA ROD2 05076 4527 05077 6400 FSTA OBJ 05100 6207 / GOTO 5010 05101 1030 JA #5010 05102 4603 /5190 IF((VERB.EQ.FIND.OR.VERB.EQ.INVENT).AND.WD2.EQ.0)GOTO 5010 05103 0400 #5190, FLDA VERB 05104 6220 05105 2400 FSUB INVENT 05106 4755 05107 1000 JEQ .+10 05110 5117 05111 0400 FLDA VERB 05112 6220 05113 2400 FSUB FIND 05114 4752 05115 1040 JNE .+5 05116 5122 05117 0224 FLDA WD2 05120 1000 JEQ #5010 05121 4603 / TYPE 5199 05122 1130 JSR SIXOUT 05123 0000 05124 1030 JA .+10 05125 5134 05126 1032 JA #5199 05127 0023 05130 1030 JA ZERO 05131 0160 05132 1030 JA TWO 05133 0166 /5199 FORMAT(' I don''t see any ',$) RALF V50A 24-JUL-20 PAGE 3-45 / CALL A5TOA1(WD1,WD1A,WD1X,'.') / GOTO 2012 05134 1130 JSR A5TOA1 05135 0000 05136 1030 JA #2012 05137 3400 05140 1030 JA WD1 05141 0111 05142 1030 JA WD1X 05143 0114 05144 1030 JA TQDOT 05145 0554 /C FIGURE OUT THE NEW LOCATION /C /C GIVEN THE CURRENT LOCATION IN "LOC", AND A MOTION VERB NUMBER IN "K", PUT /C THE NEW LOCATION IN "NEWLOC". THE CURRENT LOC IS SAVED IN "OLDLOC" IN CASE /C HE WANTS TO RETREAT. THE CURRENT OLDLOC IS SAVED IN OLDLC2, IN CASE HE /C DIES. (IF HE DOES, NEWLOC WILL BE LIMBO, AND OLDLOC WILL BE WHAT KILLED /C HIM, SO WE NEED OLDLC2, WHICH IS THE LAST PLACE HE WAS SAFE.) /C /8 KK=KEY(LOC) 05146 0400 #8, FLDA LOC 05147 0014 05150 0027 ATX 7 05151 0470 FLDA KEY-3,7 05152 0157 05153 6400 FSTA KK 05154 6330 / NEWLOC=LOC 05155 0400 FLDA LOC 05156 0014 05157 6400 FSTA NEWLOC 05160 0157 / IF(KK.EQ.0)CALL BUG(26) 05161 0400 FLDA KK 05162 6330 05163 1040 JNE .+10 05164 5173 05165 1130 JSR BUG 05166 0000 05167 1030 JA .+4 05170 5173 05171 1030 JA #LIT+55 05172 0251 / IF(K.EQ.NULL)GOTO 2 05173 0400 FLDA K 05174 6215 05175 2400 FSUB NULL 05176 4730 05177 1000 JEQ #2 05200 1146 / IF(K.EQ.BACK)GOTO 20 05201 0400 FLDA K 05202 6215 05203 2400 FSUB BACK RALF V50A 24-JUL-20 PAGE 3-46 05204 4717 05205 1000 JEQ #20 05206 6142 / IF(K.EQ.LOOK)GOTO 30 05207 0400 FLDA K 05210 6215 05211 2400 FSUB LOOK 05212 4722 05213 1000 JEQ #30 05214 6353 / IF(K.EQ.CAVE)GOTO 40 05215 0400 FLDA K 05216 6215 05217 2400 FSUB CAVE 05220 4725 05221 1000 JEQ #40 05222 6404 / OLDLC2=OLDLOC 05223 0400 FLDA OLDLOC 05224 0011 05225 6400 FSTA OLDLC2 05226 0006 / OLDLOC=LOC 05227 0400 FLDA LOC 05230 0014 05231 6400 FSTA OLDLOC 05232 0011 /C /9 LL=IABS(TRAVEL(KK)) 05233 1130 #9, JSR GETWRD 05234 0000 05235 1030 JA .+10 05236 5245 05237 1030 JA TRAVEL 05240 1667 05241 1030 JA KK 05242 6330 05243 1030 JA ZERO 05244 0160 05245 6227 FSTA #TMP 05246 1130 JSR IABS 05247 0000 05250 1030 JA .+4 05251 5254 05252 1030 JA #TMP 05253 0130 05254 6216 FSTA LL / IF(LL.EQ.1 .OR. LL.EQ.K)GOTO 10 05255 2240 FSUB ONE 05256 1000 JEQ #10 05257 5306 05260 0216 FLDA LL 05261 2400 FSUB K 05262 6215 05263 1000 JEQ #10 05264 5306 RALF V50A 24-JUL-20 PAGE 3-47 / IF(TRAVEL(KK).LT.0)GOTO 50 05265 1130 JSR GETWRD 05266 0000 05267 1030 JA .+10 05270 5277 05271 1030 JA TRAVEL 05272 1667 05273 1030 JA KK 05274 6330 05275 1030 JA ZERO 05276 0160 05277 1050 JLT #50 05300 6425 / KK=KK+1 05301 0240 FLDA ONE 05302 5400 FADDM KK 05303 6330 / GOTO 9 05304 1030 JA #9 05305 5233 /C /10 NEWLOC=TRVCON(KK) 05306 1130 #10, JSR GETWRD 05307 0000 05310 1030 JA .+10 05311 5320 05312 1030 JA TRVCON 05313 3245 05314 1030 JA KK 05315 6330 05316 1030 JA ZERO 05317 0160 05320 6400 FSTA NEWLOC 05321 0157 / K=MOD(NEWLOC,100) 05322 1130 JSR MOD 05323 0000 05324 1030 JA .+6 05325 5332 05326 1030 JA NEWLOC 05327 0157 05330 1030 JA #LIT+154 05331 0350 05332 6400 FSTA K 05333 6215 / IF(NEWLOC.LE.300)GOTO 13 05334 0400 FLDA NEWLOC 05335 0157 05336 2345 FSUB #LIT+306 05337 1020 JLE #13 05340 5466 / IF(PROP(K).NE.NEWLOC/100-3)GOTO 16 05341 0400 FLDA K 05342 6215 05343 0027 ATX 7 RALF V50A 24-JUL-20 PAGE 3-48 05344 0400 FLDA NEWLOC 05345 0157 05346 3307 FDIV #LIT+154 05347 1120 JSA #FIX 05350 0000 05351 2242 FSUB THREE 05352 2470 FSUB PROP-3,7 05353 3647 05354 1040 JNE #16 05355 5534 /C /C TRY NEXT ENTRY IN TRAVEL TABLE /C /12 IF(TRAVEL(KK).LT.0)CALL BUG(25) 05356 1130 #12, JSR GETWRD 05357 0000 05360 1030 JA .+10 05361 5370 05362 1030 JA TRAVEL 05363 1667 05364 1030 JA KK 05365 6330 05366 1030 JA ZERO 05367 0160 05370 1010 JGE .+10 05371 5400 05372 1130 JSR BUG 05373 0000 05374 1030 JA .+4 05375 5400 05376 1030 JA #LIT+52 05377 0246 / KK=KK+1 05400 0400 FLDA KK 05401 6330 05402 6227 FSTA #TMP 05403 1240 FADD ONE 05404 6400 FSTA KK 05405 6330 /C MAKE SURE HE DOESN'T GO THROUGH SAME TEST AGAIN /C / IF(TRVCON(KK-1).EQ.TRVCON(KK) .AND. TRVLOC(KK-1).EQ.TRVLOC(KK)) / 1 GOTO 12 05406 1130 JSR GETWRD 05407 0000 05410 1030 JA .+10 05411 5420 05412 1030 JA TRVCON 05413 3245 05414 1030 JA #TMP 05415 0130 05416 1030 JA ZERO 05417 0160 05420 6230 FSTA #TMP+3 05421 1130 JSR GETWRD RALF V50A 24-JUL-20 PAGE 3-49 05422 0000 05423 1030 JA .+10 05424 5433 05425 1030 JA TRVCON 05426 3245 05427 1030 JA KK 05430 6330 05431 1030 JA ZERO 05432 0160 05433 2230 FSUB #TMP+3 05434 1040 JNE #10 05435 5306 05436 1130 JSR GETWRD 05437 0000 05440 1030 JA .+10 05441 5450 05442 1030 JA TRVLOC 05443 4623 05444 1030 JA #TMP 05445 0130 05446 1030 JA ZERO 05447 0160 05450 6230 FSTA #TMP+3 05451 1130 JSR GETWRD 05452 0000 05453 1030 JA .+10 05454 5463 05455 1030 JA TRVLOC 05456 4623 05457 1030 JA #TMP 05460 0130 05461 2230 FSUB #TMP+3 05462 1000 JEQ #12 05463 5356 / GO TO 10 05464 1030 JA #10 05465 5306 /C /13 IF(NEWLOC.LE.100)GOTO 14 05466 0400 #13, FLDA NEWLOC 05467 0157 05470 2307 FSUB #LIT+154 05471 1020 JLE #14 05472 5520 / IF(TOTING(K).OR.(NEWLOC.GT.200.AND.AT(K)))GOTO 16 05473 0400 FLDA K 05474 6215 05475 1120 JSA TOTING 05476 0622 05477 1040 JNE #16 05500 5534 05501 0100 LDX 310,0 /200 05502 0310 05503 0030 XTA 0 RALF V50A 24-JUL-20 PAGE 3-50 05504 2400 FSUB NEWLOC 05505 0157 05506 1060 JGT #12 05507 5356 05510 0400 FLDA K 05511 6215 05512 1120 JSA AT 05513 0634 05514 1040 JNE #16 05515 5534 / GOTO 12 05516 1030 JA #12 05517 5356 /C /14 IF(NEWLOC.NE.0.AND..NOT.PCT(NEWLOC))GOTO 12 05520 0400 #14, FLDA NEWLOC 05521 0157 05522 1000 JEQ #16 05523 5534 05524 1130 JSR PCT 05525 0000 05526 1030 JA .+4 05527 5532 05530 1030 JA NEWLOC 05531 0157 05532 1000 JEQ #12 05533 5356 /16 NEWLOC=TRVLOC(KK) 05534 1130 #16, JSR GETWRD 05535 0000 05536 1030 JA .+10 05537 5546 05540 1030 JA TRVLOC 05541 4623 05542 1030 JA KK 05543 6330 05544 1030 JA ZERO 05545 0160 05546 6400 FSTA NEWLOC 05547 0157 / IF(NEWLOC.LE.300)GOTO 2 05550 2345 FSUB #LIT+306 05551 1020 JLE #2 05552 1146 / IF(NEWLOC.LE.500)GOTO 30000 05553 0400 FLDA NEWLOC 05554 0157 05555 2346 FSUB #LIT+311 05556 1020 JLE #30000 05557 5575 / CALL RSPEAK(NEWLOC-500) / FLDA NEWLOC / FSUB #LIT+311 05560 6227 FSTA #TMP RALF V50A 24-JUL-20 PAGE 3-51 05561 1130 JSR RSPEAK 05562 0000 05563 1030 JA .+4 05564 5567 05565 1030 JA #TMP 05566 0130 / NEWLOC=LOC 05567 0400 FLDA LOC 05570 0014 05571 6400 FSTA NEWLOC 05572 0157 / GOTO 2 05573 1030 JA #2 05574 1146 /C /C SPECIAL MOTIONS COME HERE. LABELLING CONVENTION: STATEMENT NUMBERS NNNXX /C (XX=00-99) ARE USED FOR SPECIAL CASE NUMBER NNN (NNN=301-500). /C /30000 NEWLOC=NEWLOC-300 05575 0400 #30000, FLDA NEWLOC 05576 0157 05577 2345 FSUB #LIT+306 05600 6400 FSTA NEWLOC 05601 0157 / GOTO (30100,30200,30300)NEWLOC / FLDA NEWLOC 05602 0021 ATX 1 05603 0006 STARTD 05604 0410 FLDA .+2,1 05605 5606 05606 0005 STARTF 05607 0007 JAC 05610 1030 JA #30100 05611 5624 05612 1030 JA #30200 05613 5660 05614 1030 JA #30300 05615 5670 / CALL BUG(20) 05616 1130 JSR BUG 05617 0000 05620 1030 JA .+4 05621 5624 05622 1030 JA #LIT+36 05623 0232 /C /C TRAVEL 301. PLOVER-ALCOVE PASSAGE. CAN CARRY ONLY EMERALD. NOTE: TRAVEL /C TABLE MUST INCLUDE "USELESS" ENTRIES GOING THROUGH PASSAGE, WHICH CAN NEVER /C BE USED FOR ACTUAL MOTION, BUT CAN BE SPOTTED BY "GO BACK". /C /30100 NEWLOC=99+100-LOC 05624 0343 #30100, FLDA #LIT+300 /199 05625 2400 FSUB LOC 05626 0014 RALF V50A 24-JUL-20 PAGE 3-52 05627 6400 FSTA NEWLOC 05630 0157 / IF(HOLDNG.EQ.0.OR.(HOLDNG.EQ.1.AND.TOTING(EMRALD)))GOTO 2 05631 0400 FLDA HOLDNG 05632 3162 05633 1000 JEQ #2 05634 1146 05635 2240 FSUB ONE 05636 1040 JNE #M27 05637 5646 05640 0400 FLDA EMRALD 05641 4700 05642 1120 JSA TOTING 05643 0622 05644 1040 JNE #2 05645 1146 / NEWLOC=LOC 05646 0400 #M27, FLDA LOC 05647 0014 05650 6400 FSTA NEWLOC 05651 0157 / CALL RSPEAK(117) / GOTO 2 05652 1130 JSR RSPEAK 05653 0000 05654 1030 JA #2 05655 1146 05656 1030 JA #LIT+173 05657 0367 /C /C TRAVEL 302. PLOVER TRANSPORT. DROP THE EMERALD (ONLY USE SPECIAL TRAVEL IF /C TOTING IT), SO HE'S FORCED TO USE THE PLOVER-PASSAGE TO GET IT OUT. HAVING /C DROPPED IT, GO BACK AND PRETEND HE WASN'T CARRYING IT AFTER ALL. /C /30200 CALL DROP(EMRALD,LOC) /GOTO 12 05660 1130 #30200, JSR DROP 05661 0000 05662 1030 JA #12 05663 5356 05664 1030 JA EMRALD 05665 4700 05666 1030 JA LOC 05667 0014 /C /C TRAVEL 303. TROLL BRIDGE. MUST BE DONE ONLY AS SPECIAL MOTION SO THAT /C DWARVES WON'T WANDER ACROSS AND ENCOUNTER THE BEAR. (THEY WON'T FOLLOW THE /C PLAYER THERE BECAUSE THAT REGION IS FORBIDDEN TO THE PIRATE.) IF /C PROP(TROLL)=1, HE'S CROSSED SINCE PAYING, SO STEP OUT AND BLOCK HIM. /C (STANDARD TRAVEL ENTRIES CHECK FOR PROP(TROLL)=0.) SPECIAL STUFF FOR BEAR. /C /30300 IF(PROP(TROLL).NE.1)GOTO 30310 05670 0400 #30300, FLDA TROLL 05671 4634 RALF V50A 24-JUL-20 PAGE 3-53 05672 0027 ATX 7 05673 0470 FLDA PROP-3,7 05674 3647 05675 2240 FSUB ONE 05676 1040 JNE #30310 05677 6025 / CALL PSPEAK(TROLL,1) 05700 1130 JSR PSPEAK 05701 0000 05702 1030 JA .+6 05703 5710 05704 1030 JA TROLL 05705 4634 05706 1030 JA ONE 05707 0163 / PROP(TROLL)=0 05710 0002 FCLA 05711 6470 FSTA PROP-3,7 05712 3647 / CALL MOVE(TROLL2,0) 05713 1130 JSR MOVE 05714 0000 05715 1030 JA .+6 05716 5723 05717 1030 JA TROLL2 05720 4637 05721 1030 JA ZERO 05722 0160 / CALL MOVE(TROLL2+100,0) 05723 0400 FLDA TROLL2 05724 4637 05725 1307 FADD #LIT+154 05726 6227 FSTA #TMP 05727 1130 JSR MOVE 05730 0000 05731 1030 JA .+6 05732 5737 05733 1030 JA #TMP 05734 0130 05735 1030 JA ZERO 05736 0160 / CALL MOVE(TROLL,PLAC(TROLL)) 05737 0400 FLDA TROLL 05740 4634 05741 0027 ATX 7 05742 0037 XTA 7 05743 4242 FMUL THREE 05744 0010 ALN 0 05745 0006 STARTD 05746 1356 FADD PPLAC 05747 6400 FSTA .+11 05750 5760 05751 0005 STARTF 05752 1130 JSR MOVE 05753 0000 05754 1030 JA .+6 RALF V50A 24-JUL-20 PAGE 3-54 05755 5762 05756 1030 JA TROLL 05757 4634 05760 1030 JA . 05761 5760 / CALL MOVE(TROLL+100,FIXD(TROLL)) 05762 0400 FLDA TROLL 05763 4634 05764 1307 FADD #LIT+154 05765 6227 FSTA #TMP 05766 0400 FLDA TROLL 05767 4634 05770 0027 ATX 7 05771 0037 XTA 7 05772 4242 FMUL THREE 05773 0010 ALN 0 05774 0006 STARTD 05775 1353 FADD PFIXD 05776 6400 FSTA .+11 05777 6007 06000 0005 STARTF 06001 1130 JSR MOVE 06002 0000 06003 1030 JA .+6 06004 6011 06005 1030 JA #TMP 06006 0130 06007 1030 JA . 06010 6007 / CALL JUGGLE(CHASM) 06011 1130 JSR JUGGLE 06012 0000 06013 1030 JA .+4 06014 6017 06015 1030 JA CHASM 06016 4631 / NEWLOC=LOC 06017 0400 FLDA LOC 06020 0014 06021 6400 FSTA NEWLOC 06022 0157 / GOTO 2 06023 1030 JA #2 06024 1146 /C /30310 NEWLOC=PLAC(TROLL)+FIXD(TROLL)-LOC 06025 0400 #30310, FLDA TROLL 06026 4634 06027 0027 ATX 7 06030 0470 FLDA PLAC-3,7 06031 1061 06032 1470 FADD FIXD-3,7 06033 1535 06034 2400 FSUB LOC 06035 0014 RALF V50A 24-JUL-20 PAGE 3-55 06036 6400 FSTA NEWLOC 06037 0157 / IF(PROP(TROLL).EQ.0)PROP(TROLL)=1 06040 0470 FLDA PROP-3,7 06041 3647 06042 1040 JNE .+5 06043 6047 06044 0240 FLDA ONE 06045 6470 FSTA PROP-3,7 06046 3647 / IF(.NOT.TOTING(BEAR))GOTO 2 06047 0400 FLDA BEAR 06050 4642 06051 1120 JSA TOTING 06052 0622 06053 1000 JEQ #2 06054 1146 / CALL RSPEAK(162) 06055 1130 JSR RSPEAK 06056 0000 06057 1030 JA .+4 06060 6063 06061 1030 JA #LIT+237 06062 0433 / PROP(CHASM)=1 06063 0400 FLDA CHASM 06064 4631 06065 0027 ATX 7 06066 0240 FLDA ONE / PROP(TROLL)=2 06067 6470 FSTA PROP-3,7 06070 3647 06071 0400 FLDA TROLL 06072 4634 06073 0027 ATX 7 06074 0241 FLDA TWO 06075 6470 FSTA PROP-3,7 06076 3647 / CALL DROP(BEAR,NEWLOC) 06077 1130 JSR DROP 06100 0000 06101 1030 JA .+6 06102 6107 06103 1030 JA BEAR 06104 4642 06105 1030 JA NEWLOC 06106 0157 / FIXED(BEAR)=-1 06107 0400 FLDA BEAR 06110 4642 06111 0027 ATX 7 06112 0372 FLDA MINUS1 06113 6470 FSTA FIXED-3,7 06114 2503 / PROP(BEAR)=3 06115 0242 FLDA THREE RALF V50A 24-JUL-20 PAGE 3-56 06116 6470 FSTA PROP-3,7 06117 3647 / IF(PROP(SPICES).LT.0)TALLY2=TALLY2+1 06120 0400 FLDA SPICES 06121 5070 06122 0027 ATX 7 06123 0470 FLDA PROP-3,7 06124 3647 06125 1010 JGE .+7 06126 6134 06127 0400 FLDA TALLY2 06130 4331 06131 1240 FADD ONE 06132 6400 FSTA TALLY2 06133 4331 / OLDLC2=NEWLOC 06134 0400 FLDA NEWLOC 06135 0157 06136 6400 FSTA OLDLC2 06137 0006 / GOTO 99 06140 1030 JA #99 06141 6617 /C /C END OF SPECIALS. /C /C HANDLE "GO BACK". LOOK FOR VERB WHICH GOES FROM LOC TO OLDLOC, OR TO OLDLC2 /C IF OLDLOC HAS FORCED-MOTION. K2 SAVES ENTRY -> FORCED LOC -> PREVIOUS LOC. /C /20 K=OLDLOC 06142 0400 #20, FLDA OLDLOC 06143 0011 06144 6400 FSTA K 06145 6215 / IF(FORCED(K))K=OLDLC2 / FLDA K 06146 1120 JSA FORCED 06147 0655 06150 1000 JEQ .+6 06151 6156 06152 0400 FLDA OLDLC2 06153 0006 06154 6400 FSTA K 06155 6215 / OLDLC2=OLDLOC 06156 0400 FLDA OLDLOC 06157 0011 06160 6400 FSTA OLDLC2 06161 0006 / OLDLOC=LOC 06162 0400 FLDA LOC 06163 0014 06164 6400 FSTA OLDLOC 06165 0011 / K2=0 RALF V50A 24-JUL-20 PAGE 3-57 06166 0002 FCLA 06167 6215 FSTA K2 / IF(K.NE.LOC)GOTO 21 06170 0400 FLDA K 06171 6215 06172 2400 FSUB LOC 06173 0014 06174 1040 JNE #21 06175 6204 / CALL RSPEAK(91) / GOTO 2 06176 1130 JSR RSPEAK 06177 0000 06200 1030 JA #2 06201 1146 06202 1030 JA #LIT+140 06203 0334 /C /21 LL=TRVLOC(KK) 06204 1130 #21, JSR GETWRD 06205 0000 06206 1030 JA .+10 06207 6216 06210 1030 JA TRVLOC 06211 4623 06212 1030 JA KK 06213 6330 06214 1030 JA ZERO 06215 0160 06216 6216 FSTA LL / IF(LL.EQ.K)GOTO 25 06217 2400 FSUB K 06220 6215 06221 1000 JEQ #25 06222 6317 / IF(LL.GT.300)GOTO 22 06223 0216 FLDA LL 06224 2345 FSUB #LIT+306 06225 1060 JGT #22 06226 6263 / J=KEY(LL) 06227 0216 FLDA LL 06230 0027 ATX 7 06231 0470 FLDA KEY-3,7 06232 0157 06233 6400 FSTA J 06234 6212 / IF(FORCED(LL).AND.TRVLOC(KK).EQ.K)K2=KK 06235 0216 FLDA LL 06236 1120 JSA FORCED 06237 0655 06240 1000 JEQ #22 06241 6263 06242 1130 JSR GETWRD 06243 0000 RALF V50A 24-JUL-20 PAGE 3-58 06244 1030 JA .+10 06245 6254 06246 1030 JA TRVLOC 06247 4623 06250 1030 JA KK 06251 6330 06252 1030 JA ZERO 06253 0160 06254 2400 FSUB K 06255 6215 06256 1040 JNE #22 06257 6263 06260 0400 FLDA KK 06261 6330 06262 6215 FSTA K2 /22 IF(TRAVEL(KK).LT.0)GOTO 23 06263 1130 #22, JSR GETWRD 06264 0000 06265 1030 JA .+10 06266 6275 06267 1030 JA TRAVEL 06270 1667 06271 1030 JA KK 06272 6330 06273 1030 JA ZERO 06274 0160 06275 1050 JLT #23 06276 6304 / KK=KK+1 06277 0240 FLDA ONE 06300 5400 FADDM KK 06301 6330 / GOTO 21 06302 1030 JA #21 06303 6204 /C /23 KK=K2 06304 0215 #23, FLDA K2 06305 6400 FSTA KK 06306 6330 / IF(KK.NE.0)GOTO 25 06307 1040 JNE #25 06310 6317 / CALL RSPEAK(140) / GOTO 2 06311 1130 JSR RSPEAK 06312 0000 06313 1030 JA #2 06314 1146 06315 1030 JA #LIT+223 06316 0417 /C /25 K=IABS(TRAVEL(KK)) 06317 1130 #25, JSR GETWRD RALF V50A 24-JUL-20 PAGE 3-59 06320 0000 06321 1030 JA .+10 06322 6331 06323 1030 JA TRAVEL 06324 1667 06325 1030 JA KK 06326 6330 06327 1030 JA ZERO 06330 0160 06331 6227 FSTA #TMP 06332 1130 JSR IABS 06333 0000 06334 1030 JA .+4 06335 6340 06336 1030 JA #TMP 06337 0130 06340 6400 FSTA K 06341 6215 / KK=KEY(LOC) 06342 0400 FLDA LOC 06343 0014 06344 0027 ATX 7 06345 0470 FLDA KEY-3,7 06346 0157 06347 6400 FSTA KK 06350 6330 / GOTO 9 06351 1030 JA #9 06352 5233 /C /C LOOK. CAN'T GIVE MORE DETAIL. PRETEND IT WASN'T DARK (THOUGH IT MAY "NOW" /C BE DARK) SO HE WON'T FALL INTO A PIT WHILE STARING INTO THE GLOOM. /C /30 IF(DETAIL.LT.3)CALL RSPEAK(15) 06353 0400 #30, FLDA DETAIL 06354 4771 06355 2242 FSUB THREE 06356 1010 JGE .+10 06357 6366 06360 1130 JSR RSPEAK 06361 0000 06362 1030 JA .+4 06363 6366 06364 1030 JA #LIT+25 06365 0221 / DETAIL=DETAIL+1 06366 0240 FLDA ONE 06367 5400 FADDM DETAIL 06370 4771 / WZDARK=.FALSE. 06371 0002 FCLA 06372 6400 FSTA WZDARK 06373 0025 / ABB(LOC)=0 06374 0400 FLDA LOC RALF V50A 24-JUL-20 PAGE 3-60 06375 0014 06376 0027 ATX 7 06377 0002 FCLA 06400 6477 FSTA ABB-3,7 06401 7775 / GOTO 2 06402 1030 JA #2 06403 1146 /C /C CAVE. DIFFERENT MESSAGES DEPENDING ON WHETHER ABOVE GROUND. /C /40 IF(LOC.LT.8)CALL RSPEAK(57) 06404 0400 #40, FLDA LOC 06405 0014 06406 2246 FSUB #LIT+11 06407 1010 JGE .+10 06410 6417 06411 1130 JSR RSPEAK 06412 0000 06413 1030 JA #2 06414 1146 06415 1030 JA #LIT+116 06416 0312 / IF(LOC.GE.8)CALL RSPEAK(58) / GOTO 2 06417 1130 JSR RSPEAK 06420 0000 06421 1030 JA #2 06422 1146 06423 1030 JA #LIT+121 06424 0315 /C /C NON-APPLICABLE MOTION. VARIOUS MESSAGES DEPENDING ON WORD GIVEN. /C /50 SPK=12 06425 0251 #50, FLDA #LIT+22 06426 6221 FSTA SPK / IF(K.GE.43.AND.K.LE.50)SPK=9 06427 0100 LDX 53,0 /43 06430 0053 06431 0030 XTA 0 06432 2400 FSUB K 06433 6215 06434 1010 JGE .+7 06435 6443 06436 0400 FLDA K 06437 6215 06440 2273 FSUB #LIT+110 06441 1020 JLE #M31 06442 6457 / IF(K.EQ.29.OR.K.EQ.30)SPK=9 06443 0100 LDX 35,0 /29 06444 0035 06445 0030 XTA 0 RALF V50A 24-JUL-20 PAGE 3-61 06446 2400 FSUB K 06447 6215 06450 1000 JEQ #M31 06451 6457 06452 1240 FADD ONE 06453 1000 JEQ #M31 06454 6457 06455 1030 JA #M33 06456 6577 06457 0247 #M31, FLDA #LIT+14 06460 6221 FSTA SPK 06461 1030 JA #M32 06462 6532 / IF(K.EQ.7.OR.K.EQ.36.OR.K.EQ.37)SPK=10 06463 0100 LDX 7,0 06464 0007 06465 0030 XTA 0 06466 2400 FSUB K 06467 6215 06470 1000 JEQ #M34 06471 6504 06472 0100 LDX 44,0 06473 0044 06474 0030 XTA 0 06475 2400 FSUB K 06476 6215 06477 1000 JEQ #M34 06500 6504 06501 1240 FADD ONE 06502 1040 JNE #M35 06503 6510 06504 0250 #M34, FLDA #LIT+17 06505 6221 FSTA SPK 06506 1030 JA #M32 06507 6532 / IF(K.EQ.11.OR.K.EQ.19)SPK=11 06510 0100 #M35, LDX 13,0 /11 06511 0013 06512 0030 XTA 0 06513 2400 FSUB K 06514 6215 06515 1000 JEQ #M36 06516 6526 06517 0100 LDX 23,0 /19 06520 0023 06521 0030 XTA 0 06522 2400 FSUB K 06523 6215 06524 1040 JNE #M32 06525 6532 06526 0100 #M36, LDX 13,0 06527 0013 06530 0030 XTA 0 06531 6221 FSTA SPK / IF(VERB.EQ.FIND.OR.VERB.EQ.INVENT)SPK=59 06532 0400 #M32, FLDA VERB RALF V50A 24-JUL-20 PAGE 3-62 06533 6220 06534 2400 FSUB INVENT 06535 4755 06536 1000 JEQ #M37 06537 6546 06540 0400 FLDA VERB 06541 6220 06542 2400 FSUB FIND 06543 4752 06544 1040 JNE #M38 06545 6552 06546 0100 #M37, LDX 73,0 /59 06547 0073 06550 0030 XTA 0 06551 6221 FSTA SPK / IF(K.EQ.62.OR.K.EQ.65)SPK=42 06552 0400 #M38, FLDA K 06553 6215 06554 2277 FSUB #LIT+124 06555 1000 JEQ #M39 06556 6562 06557 2242 FSUB THREE 06560 1040 JNE #M40 06561 6566 06562 0100 #M39, LDX 52,0 /42 06563 0052 06564 0030 XTA 0 06565 6221 FSTA SPK / IF(K.EQ.17)SPK=80 06566 0400 #M40, FLDA K 06567 6215 06570 2254 FSUB #LIT+33 06571 1040 JNE #M33 06572 6577 06573 0100 LDX 120,0 /80 06574 0120 06575 0030 XTA 0 06576 6221 FSTA SPK / CALL RSPEAK(SPK) / GOTO 2 06577 1130 #M33, JSR RSPEAK 06600 0000 06601 1030 JA #2 06602 1146 06603 1030 JA SPK 06604 0106 /C "YOU'RE DEAD, JIM." /C /C IF THE CURRENT LOC IS ZERO, IT MEANS THE CLOWN GOT HIMSELF KILLED. WE'LL /C ALLOW THIS MAXDIE TIMES. MAXDIE IS AUTOMATICALLY SET BASED ON THE NUMBER OF /C SNIDE MESSAGES AVAILABLE. EACH DEATH RESULTS IN A MESSAGE (81, 83, ETC.) /C WHICH OFFERS REINCARNATION; IF ACCEPTED, THIS RESULTS IN MESSAGE 82, 84, /C ETC. THE LAST TIME, IF HE WANTS ANOTHER CHANCE, HE GETS A SNIDE REMARK AS /C WE EXIT. WHEN REINCARNATED, ALL OBJECTS BEING CARRIED GET DROPPED AT OLDLC2 /C (PRESUMABLY THE LAST PLACE PRIOR TO BEING KILLED) WITHOUT CHANGE OF PROPS. RALF V50A 24-JUL-20 PAGE 3-63 /C THE LOOP RUNS BACKWARDS TO ASSURE THAT THE BIRD IS DROPPED BEFORE THE CAGE. /C (THIS KLUGE COULD BE CHANGED ONCE WE'RE SURE ALL REFERENCES TO BIRD AND CAGE /C ARE DONE BY KEYWORDS.) THE LAMP IS A SPECIAL CASE (IT WOULDN'T DO TO LEAVE /C IT IN THE CAVE). IT IS TURNED OFF AND LEFT OUTSIDE THE BUILDING (ONLY IF HE /C WAS CARRYING IT, OF COURSE). HE HIMSELF IS LEFT INSIDE THE BUILDING (AND /C HEAVEN HELP HIM IF HE TRIES TO XYZZY BACK INTO THE CAVE WITHOUT THE LAMP!). /C OLDLOC IS ZAPPED SO HE CAN'T JUST "RETREAT". /C /C THE EASIEST WAY TO GET KILLED IS TO FALL INTO A PIT IN PITCH DARKNESS. /C /90 CALL RSPEAK(23) 06605 1130 #90, JSR RSPEAK 06606 0000 06607 1030 JA .+4 06610 6613 06611 1030 JA #LIT+44 06612 0240 / OLDLC2=LOC 06613 0400 FLDA LOC 06614 0014 06615 6400 FSTA OLDLC2 06616 0006 /C /C OKAY, HE'S DEAD. LET'S GET ON WITH IT. /C /99 IF(CLOSNG)GOTO 95 06617 0400 #99, FLDA CLOSNG 06620 5024 06621 1040 JNE #95 06622 6775 / YEA=YES(81+NUMDIE*2,82+NUMDIE*2,54) 06623 0400 FLDA NUMDIE 06624 4777 06625 1400 FADD NUMDIE 06626 4777 06627 1301 FADD #LIT+132 06630 6227 FSTA #TMP 06631 0227 FLDA #TMP 06632 1240 FADD ONE 06633 6230 FSTA #TMP+3 06634 1130 JSR YES 06635 0000 06636 1030 JA .+10 06637 6646 06640 1030 JA #TMP 06641 0130 06642 1030 JA #TMP+3 06643 0133 06644 1030 JA #LIT+113 06645 0307 06646 6226 FSTA YEA / NUMDIE=NUMDIE+1 06647 0400 FLDA NUMDIE 06650 4777 06651 1240 FADD ONE 06652 6400 FSTA NUMDIE RALF V50A 24-JUL-20 PAGE 3-64 06653 4777 / IF(NUMDIE.EQ.MAXDIE.OR..NOT.YEA)GOTO 20000 06654 2400 FSUB MAXDIE 06655 5002 06656 1001 JEQ #20000 06657 7020 06660 0226 FLDA YEA 06661 1001 JEQ #20000 06662 7020 / PLACE(WATER)=0 06663 0400 FLDA WATER 06664 4604 06665 0027 ATX 7 06666 0002 FCLA 06667 6470 FSTA PLACE-3,7 06670 2027 / PLACE(OIL)=0 06671 0400 FLDA OIL 06672 4607 06673 0027 ATX 7 06674 0002 FCLA 06675 6470 FSTA PLACE-3,7 06676 2027 / IF(TOTING(LAMP))PROP(LAMP)=0 06677 0400 FLDA LAMP 06700 4513 06701 1120 JSA TOTING 06702 0622 06703 1000 JEQ .+10 06704 6713 06705 0400 FLDA LAMP 06706 4513 06707 0027 ATX 7 06710 0002 FCLA 06711 6470 FSTA PROP-3,7 06712 3647 / DO 98 J=1,100 06713 0240 FLDA ONE 06714 6400 FSTA J 06715 6212 / I=101-J 06716 0100 #G0150, LDX 145,0 /101 06717 0145 06720 0030 XTA 0 06721 2400 FSUB J 06722 6212 06723 6400 FSTA I 06724 0000 / IF(.NOT.TOTING(I))GOTO 98 06725 1120 JSA TOTING 06726 0622 06727 1000 JEQ #98 06730 6756 / K=OLDLC2 06731 0400 FLDA OLDLC2 RALF V50A 24-JUL-20 PAGE 3-65 06732 0006 06733 6400 FSTA K 06734 6215 / IF(I.EQ.LAMP)K=1 06735 0400 FLDA I 06736 0000 06737 2400 FSUB LAMP 06740 4513 06741 1040 JNE .+5 06742 6746 06743 0240 FLDA ONE 06744 6400 FSTA K 06745 6215 / CALL DROP(I,K) 06746 1130 JSR DROP 06747 0000 06750 1030 JA .+6 06751 6756 06752 1030 JA I 06753 0000 06754 1030 JA K 06755 6215 /98 CONTINUE 06756 0400 #98, FLDA J 06757 6212 06760 1240 FADD ONE 06761 6400 FSTA J 06762 6212 06763 2307 FSUB #LIT+154 06764 1020 JLE #G0150 06765 6716 / LOC=3 06766 0242 FLDA THREE / OLDLOC=LOC 06767 6400 FSTA LOC 06770 0014 06771 6400 FSTA OLDLOC 06772 0011 / GOTO 2000 06773 1030 JA #2000 06774 2760 /C /C HE DIED DURING CLOSING TIME. NO RESURRECTION. TALLY UP A DEATH AND EXIT. /C /95 CALL RSPEAK(131) 06775 1130 #95, JSR RSPEAK 06776 0000 06777 1030 JA .+4 07000 7003 07001 1030 JA #LIT+212 07002 0406 / NUMDIE=NUMDIE+1 07003 0240 FLDA ONE 07004 5400 FADDM NUMDIE RALF V50A 24-JUL-20 PAGE 3-66 07005 4777 / GOTO 20000 07006 1031 JA #20000 07007 7020 /C ROUTINES FOR PERFORMING THE VARIOUS ACTION VERBS /C /C STATEMENT NUMBERS IN THIS SECTION ARE 8000 FOR INTRANSITIVE VERBS, 9000 FOR /C TRANSITIVE, PLUS TEN TIMES THE VERB NUMBER. MANY INTRANSITIVE VERBS USE THE /C TRANSITIVE CODE, AND SOME VERBS USE CODE FOR OTHER VERBS, AS NOTED BELOW. /C /C RANDOM INTRANSITIVE VERBS COME HERE. CLEAR OBJ JUST IN CASE (SEE "ATTACK"). /C /8000 TYPE 8002 07010 1130 #8000, JSR SIXOUT 07011 0000 07012 1030 JA .+10 07013 7022 07014 1032 JA #8002 07015 0035 07016 1030 JA ZERO 07017 0160 07020 1030 JA TWO 07021 0166 /8002 FORMAT(' I don''t understand "',$) / CALL A5TOA1(WD1,WD1A,WD1X,'".') 07022 1130 JSR A5TOA1 07023 0000 07024 1030 JA .+10 07025 7034 07026 1030 JA WD1 07027 0111 07030 1030 JA WD1X 07031 0114 07032 1030 JA TQDOT 07033 0554 / OBJ=0 07034 0002 FCLA 07035 6400 FSTA OBJ 07036 6207 07037 3000 TRAP3 #WRITO 07040 0000 07041 1030 JA #LIT 07042 0174 07043 1030 JA #LINEF+2 07044 4650 07045 3000 TRAP3 #RENDO 07046 0000 / GOTO 2600 07047 1030 JA #2600 07050 3405 /C /C CARRY, NO OBJECT GIVEN YET. OK IF ONLY ONE OBJECT PRESENT. /C RALF V50A 24-JUL-20 PAGE 3-67 /8010 IF(ATLOC(LOC).EQ.0.OR.LINK(ATLOC(LOC)).NE.0)GOTO 8000 07051 0400 #8010, FLDA LOC 07052 0014 07053 0027 ATX 7 07054 0477 FLDA ATLOC-3,7 07055 7775 07056 1000 JEQ #8000 07057 7010 07060 0026 ATX 6 07061 0460 FLDA LINK-3,6 07062 0677 07063 1040 JNE #8000 07064 7010 / DO 8012 I=1,5 07065 0240 FLDA ONE 07066 6400 FSTA I 07067 0000 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 8000 07070 0400 #G0152, FLDA I 07071 0000 07072 0027 ATX 7 07073 0470 FLDA DLOC-3,7 07074 4460 07075 2400 FSUB LOC 07076 0014 07077 1040 JNE #8012 07100 7106 07101 0400 FLDA DFLAG 07102 4460 07103 2241 FSUB TWO 07104 1010 JGE #8000 07105 7010 /8012 CONTINUE 07106 0400 #8012, FLDA I 07107 0000 07110 1240 FADD ONE 07111 6400 FSTA I 07112 0000 07113 2244 FSUB #LIT+3 07114 1020 JLE #G0152 07115 7070 / OBJ=ATLOC(LOC) 07116 0400 FLDA LOC 07117 0014 07120 0027 ATX 7 07121 0477 FLDA ATLOC-3,7 07122 7775 07123 6400 FSTA OBJ 07124 6207 /C /C CARRY AN OBJECT. SPECIAL CASES FOR BIRD AND CAGE (IF BIRD IN CAGE, CAN'T /C TAKE ONE WITHOUT THE OTHER. LIQUIDS ALSO SPECIAL, SINCE THEY DEPEND ON /C STATUS OF BOTTLE. ALSO VARIOUS SIDE EFFECTS, ETC. RALF V50A 24-JUL-20 PAGE 3-68 /C /9010 IF(TOTING(OBJ))GOTO 2011 07125 0400 #9010, FLDA OBJ 07126 6207 07127 1120 JSA TOTING 07130 0622 07131 1040 JNE #2011 07132 3372 / SPK=25 07133 0261 FLDA #LIT+52 07134 6221 FSTA SPK / IF(OBJ.EQ.PLANT.AND.PROP(PLANT).LE.0)SPK=115 07135 0400 FLDA OBJ 07136 6207 07137 2400 FSUB PLANT 07140 4612 07141 1040 JNE .+13 07142 7154 07143 0400 FLDA PLANT 07144 4612 07145 0027 ATX 7 07146 0470 FLDA PROP-3,7 07147 3647 07150 1060 JGT .+4 07151 7154 07152 0312 FLDA #LIT+165 07153 6221 FSTA SPK / IF(OBJ.EQ.BEAR.AND.PROP(BEAR).EQ.1)SPK=169 07154 0400 FLDA OBJ 07155 6207 07156 2400 FSUB BEAR 07157 4642 07160 1040 JNE .+16 07161 7176 07162 0400 FLDA BEAR 07163 4642 07164 0027 ATX 7 07165 0470 FLDA PROP-3,7 07166 3647 07167 2240 FSUB ONE 07170 1040 JNE .+6 07171 7176 07172 0100 LDX 251,0 /169 07173 0251 07174 0030 XTA 0 07175 6221 FSTA SPK / IF(OBJ.EQ.CHAIN.AND.PROP(BEAR).NE.0)SPK=170 07176 0400 FLDA OBJ 07177 6207 07200 2400 FSUB CHAIN 07201 4714 07202 1040 JNE .+15 07203 7217 07204 0400 FLDA BEAR 07205 4642 07206 0027 ATX 7 RALF V50A 24-JUL-20 PAGE 3-69 07207 0470 FLDA PROP-3,7 07210 3647 07211 1000 JEQ .+6 07212 7217 07213 0100 LDX 252,0 /170 07214 0252 07215 0030 XTA 0 07216 6221 FSTA SPK / IF(FIXED(OBJ).NE.0)GOTO 2011 07217 0400 FLDA OBJ 07220 6207 07221 0027 ATX 7 07222 0470 FLDA FIXED-3,7 07223 2503 07224 1040 JNE #2011 07225 3372 / IF(OBJ.NE.WATER.AND.OBJ.NE.OIL)GOTO 9017 07226 0400 FLDA OBJ 07227 6207 07230 2400 FSUB WATER 07231 4604 07232 1000 JEQ .+10 07233 7242 07234 0400 FLDA OBJ 07235 6207 07236 2400 FSUB OIL 07237 4607 07240 1040 JNE #9017 07241 7332 / IF(HERE(BOTTLE).AND.LIQ(0).EQ.OBJ)GOTO 9018 07242 0400 FLDA BOTTLE 07243 4601 07244 1120 JSA HERE 07245 0667 07246 1000 JEQ .+10 07247 7256 07250 1120 JSA LIQ 07251 1001 07252 2400 FSUB OBJ 07253 6207 07254 1000 JEQ #9018 07255 7326 / OBJ=BOTTLE 07256 0400 FLDA BOTTLE 07257 4601 07260 6400 FSTA OBJ 07261 6207 / IF(TOTING(BOTTLE).AND.PROP(BOTTLE).EQ.1)GOTO 9220 07262 0400 FLDA BOTTLE 07263 4601 07264 1120 JSA TOTING 07265 0622 07266 1000 JEQ #M222 07267 7300 07270 0400 FLDA BOTTLE 07271 4601 RALF V50A 24-JUL-20 PAGE 3-70 07272 0027 ATX 7 07273 0470 FLDA PROP-3,7 07274 3647 07275 2240 FSUB ONE 07276 1001 JEQ #9220 07277 4236 / IF(PROP(BOTTLE).NE.1)SPK=105 07300 0400 #M222, FLDA BOTTLE 07301 4601 07302 0027 ATX 7 07303 0470 FLDA PROP-3,7 07304 3647 07305 2240 FSUB ONE 07306 1000 JEQ .+4 07307 7312 07310 0310 FLDA #LIT+157 07311 6221 FSTA SPK / IF(.NOT.TOTING(BOTTLE))SPK=104 07312 0400 FLDA BOTTLE 07313 4601 07314 1120 JSA TOTING 07315 0622 07316 1040 JNE #2011 07317 3372 07320 0100 LDX 150,0 / 104 07321 0150 07322 0030 XTA 0 07323 6221 FSTA SPK / GOTO 2011 07324 1030 JA #2011 07325 3372 /9018 OBJ=BOTTLE 07326 0400 #9018, FLDA BOTTLE 07327 4601 07330 6400 FSTA OBJ 07331 6207 /9017 IF(HOLDNG.LT.7)GOTO 9016 07332 0100 #9017, LDX 7,0 07333 0007 07334 0030 XTA 0 07335 2400 FSUB HOLDNG 07336 3162 07337 1010 JGE #9016 07340 7347 / CALL RSPEAK(92) 07341 1130 JSR RSPEAK 07342 0000 07343 1030 JA #2012 07344 3400 07345 1030 JA #LIT+143 07346 0337 / GOTO 2012 RALF V50A 24-JUL-20 PAGE 3-71 /9016 IF(OBJ.NE.BIRD)GOTO 9014 07347 0400 #9016, FLDA OBJ 07350 6207 07351 2400 FSUB BIRD 07352 4535 07353 1040 JNE #9014 07354 7422 / IF(PROP(BIRD).NE.0)GOTO 9014 07355 0400 FLDA BIRD 07356 4535 07357 0027 ATX 7 07360 0470 FLDA PROP-3,7 07361 3647 07362 1040 JNE #9014 07363 7422 / IF(.NOT.TOTING(ROD))GOTO 9013 07364 0400 FLDA ROD 07365 4524 07366 1120 JSA TOTING 07367 0622 07370 1000 JEQ #9013 07371 7400 / CALL RSPEAK(26) 07372 1130 JSR RSPEAK 07373 0000 07374 1030 JA #2012 07375 3400 07376 1030 JA #LIT+55 07377 0251 / GOTO 2012 /9013 IF(TOTING(CAGE))GOTO 9015 07400 0400 #9013, FLDA CAGE 07401 4521 07402 1120 JSA TOTING 07403 0622 07404 1040 JNE #9015 07405 7414 / CALL RSPEAK(27) 07406 1130 JSR RSPEAK 07407 0000 07410 1030 JA #2012 07411 3400 07412 1030 JA #LIT+60 07413 0254 / GOTO 2012 /9015 PROP(BIRD)=1 07414 0400 #9015, FLDA BIRD 07415 4535 07416 0027 ATX 7 07417 0240 FLDA ONE 07420 6470 FSTA PROP-3,7 07421 3647 /9014 IF((OBJ.EQ.BIRD.OR.OBJ.EQ.CAGE).AND.PROP(BIRD).NE.0) RALF V50A 24-JUL-20 PAGE 3-72 / 1 CALL CARRY(BIRD+CAGE-OBJ,LOC) 07422 0400 #9014, FLDA OBJ 07423 6207 07424 2400 FSUB BIRD 07425 4535 07426 1000 JEQ .+10 07427 7436 07430 0400 FLDA OBJ 07431 6207 07432 2400 FSUB CAGE 07433 4521 07434 1040 JNE .+30 07435 7464 07436 0400 FLDA BIRD 07437 4535 07440 0027 ATX 7 07441 0470 FLDA PROP-3,7 07442 3647 07443 1000 JEQ .+21 07444 7464 07445 0400 FLDA BIRD 07446 4535 07447 1400 FADD CAGE 07450 4521 07451 2400 FSUB OBJ 07452 6207 07453 6227 FSTA #TMP 07454 1130 JSR CARRY 07455 0000 07456 1030 JA .+6 07457 7464 07460 1030 JA #TMP 07461 0130 07462 1030 JA LOC 07463 0014 / CALL CARRY(OBJ,LOC) 07464 1130 JSR CARRY 07465 0000 07466 1030 JA .+6 07467 7474 07470 1030 JA OBJ 07471 6207 07472 1030 JA LOC 07473 0014 / K=LIQ(0) 07474 1120 JSA LIQ 07475 1001 07476 6400 FSTA K 07477 6215 / IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=-1 07500 0400 FLDA OBJ 07501 6207 07502 2400 FSUB BOTTLE 07503 4601 07504 1040 JNE #2009A 07505 7516 RALF V50A 24-JUL-20 PAGE 3-73 07506 0400 FLDA K 07507 6215 07510 1000 JEQ #2009A 07511 7516 07512 0027 ATX 7 07513 0372 FLDA MINUS1 07514 6470 FSTA PLACE-3,7 07515 2027 / GOTO 2009 07516 0302 #2009A, FLDA #LIT+135 /RHM - "Taken" message 07517 6400 FSTA K 07520 6215 07521 1030 JA #2010 07522 3367 /C /C DISCARD OBJECT. "THROW" ALSO COMES HERE FOR MOST OBJECTS. SPECIAL CASES FOR /C BIRD (MIGHT ATTACK SNAKE OR DRAGON) AND CAGE (MIGHT CONTAIN BIRD) AND VASE. /C DROP COINS AT VENDING MACHINE FOR EXTRA BATTERIES. /C /9020 IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2 07523 0400 #9020, FLDA ROD2 07524 4527 07525 1120 JSA TOTING 07526 0622 07527 1000 JEQ .+22 07530 7551 07531 0400 FLDA OBJ 07532 6207 07533 2400 FSUB ROD 07534 4524 07535 1040 JNE .+14 07536 7551 07537 0400 FLDA ROD 07540 4524 07541 1120 JSA TOTING 07542 0622 07543 1040 JNE .+6 07544 7551 07545 0400 FLDA ROD2 07546 4527 07547 6400 FSTA OBJ 07550 6207 / IF(.NOT.TOTING(OBJ))GOTO 2011 07551 0400 FLDA OBJ 07552 6207 07553 1120 JSA TOTING 07554 0622 07555 1000 JEQ #2011 07556 3372 / IF(OBJ.NE.BIRD.OR..NOT.HERE(SNAKE))GOTO 9024 07557 0400 FLDA OBJ 07560 6207 07561 2400 FSUB BIRD 07562 4535 07563 1040 JNE #9024 RALF V50A 24-JUL-20 PAGE 3-74 07564 7724 07565 0400 FLDA SNAKE 07566 4546 07567 1120 JSA HERE 07570 0667 07571 1000 JEQ #9024 07572 7724 / CALL RSPEAK(30) 07573 1130 JSR RSPEAK 07574 0000 07575 1030 JA .+4 07576 7601 07577 1030 JA #LIT+63 07600 0257 / IF(CLOSED)GOTO 19000 07601 0400 FLDA CLOSED 07602 5032 07603 1041 JNE #19000 07604 7012 / CALL DSTROY(SNAKE) 07605 1130 JSR DSTROY 07606 0000 07607 1030 JA .+4 07610 7613 07611 1030 JA SNAKE 07612 4546 /C /C SET PROP FOR USE BY TRAVEL OPTIONS /C / PROP(SNAKE)=1 07613 0400 FLDA SNAKE 07614 4546 07615 0027 ATX 7 07616 0240 FLDA ONE 07617 6470 FSTA PROP-3,7 07620 3647 /9021 K=LIQ(0) 07621 1120 #9021, JSA LIQ 07622 1001 07623 6400 FSTA K 07624 6215 / IF(K.EQ.OBJ)OBJ=BOTTLE 07625 2400 FSUB OBJ 07626 6207 07627 1040 JNE .+6 07630 7635 07631 0400 FLDA BOTTLE 07632 4601 07633 6400 FSTA OBJ 07634 6207 / IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=0 07635 0400 FLDA OBJ 07636 6207 07637 2400 FSUB BOTTLE 07640 4601 RALF V50A 24-JUL-20 PAGE 3-75 07641 1040 JNE .+12 07642 7653 07643 0400 FLDA K 07644 6215 07645 1000 JEQ .+6 07646 7653 07647 0027 ATX 7 07650 0002 FCLA 07651 6470 FSTA PLACE-3,7 07652 2027 / IF(OBJ.EQ.CAGE.AND.PROP(BIRD).NE.0)CALL DROP(BIRD,LOC) 07653 0400 FLDA OBJ 07654 6207 07655 2400 FSUB CAGE 07656 4521 07657 1040 JNE .+21 07660 7700 07661 0400 FLDA BIRD 07662 4535 07663 0027 ATX 7 07664 0470 FLDA PROP-3,7 07665 3647 07666 1000 JEQ .+12 07667 7700 07670 1130 JSR DROP 07671 0000 07672 1030 JA .+6 07673 7700 07674 1030 JA BIRD 07675 4535 07676 1030 JA LOC 07677 0014 / IF(OBJ.EQ.BIRD)PROP(BIRD)=0 07700 0400 FLDA OBJ 07701 6207 07702 2400 FSUB BIRD 07703 4535 07704 1040 JNE .+10 07705 7714 07706 0400 FLDA BIRD 07707 4535 07710 0027 ATX 7 07711 0002 FCLA 07712 6470 FSTA PROP-3,7 07713 3647 / CALL DROP(OBJ,LOC) 07714 1130 JSR DROP 07715 0000 / GO TO 2012 07716 1030 JA #2012 07717 3400 / 07720 1030 JA OBJ 07721 6207 07722 1030 JA LOC 07723 0014 RALF V50A 24-JUL-20 PAGE 3-76 /C /9024 IF(OBJ.NE.COINS.OR..NOT.HERE(VEND))GOTO 9025 07724 0400 #9024, FLDA OBJ 07725 6207 07726 2400 FSUB COINS 07727 4661 07730 1040 JNE #9025 07731 7770 07732 0400 FLDA VEND 07733 4650 07734 1120 JSA HERE 07735 0667 07736 1000 JEQ #9025 07737 7770 / CALL DSTROY(COINS) 07740 1130 JSR DSTROY 07741 0000 07742 1030 JA .+4 07743 7746 07744 1030 JA COINS 07745 4661 / CALL DROP(BATTER,LOC) 07746 1130 JSR DROP 07747 0000 07750 1030 JA .+6 07751 7756 07752 1030 JA BATTER 07753 4653 07754 1030 JA LOC 07755 0014 / CALL PSPEAK(BATTER,0) 07756 1130 JSR PSPEAK 07757 0000 07760 1030 JA .+6 07761 7766 07762 1030 JA BATTER 07763 4653 07764 1030 JA ZERO 07765 0160 / GOTO 2012 07766 1030 JA #2012 07767 3400 RALF V50A 24-JUL-20 PAGE 4 /C /9025 IF(OBJ.NE.BIRD.OR..NOT.AT(DRAGON).OR.PROP(DRAGON).NE.0)GOTO 9026 07770 0400 #9025, FLDA OBJ 07771 6207 07772 2400 FSUB BIRD 07773 4535 07774 1041 JNE #9026 07775 0055 07776 0400 FLDA DRAGON 07777 4626 10000 1120 JSA AT 10001 0634 10002 1001 JEQ #9026 10003 0055 10004 0400 FLDA DRAGON 10005 4626 10006 0027 ATX 7 10007 0470 FLDA PROP-3,7 10010 3647 10011 1041 JNE #9026 10012 0055 / CALL RSPEAK(154) 10013 1130 JSR RSPEAK 10014 0000 10015 1031 JA .+4 10016 0021 10017 1030 JA #LIT+374 10020 0570 / CALL DSTROY(BIRD) 10021 1130 JSR DSTROY 10022 0000 10023 1031 JA .+4 10024 0027 10025 1030 JA BIRD 10026 4535 / PROP(BIRD)=0 10027 0400 FLDA BIRD 10030 4535 10031 0027 ATX 7 10032 0002 FCLA 10033 6470 FSTA PROP-3,7 10034 3647 / IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1 10035 0400 FLDA SNAKE 10036 4546 10037 0027 ATX 7 10040 0470 FLDA PLACE-3,7 10041 2027 10042 2470 FSUB PLAC-3,7 10043 1061 10044 1040 JNE #2012 10045 3400 10046 0400 FLDA TALLY2 10047 4331 10050 1240 FADD ONE 10051 6400 FSTA TALLY2 RALF V50A 24-JUL-20 PAGE 4-1 10052 4331 / GOTO 2012 10053 1030 JA #2012 10054 3400 /C /9026 IF(OBJ.NE.BEAR.OR..NOT.AT(TROLL))GOTO 9027 10055 0400 #9026, FLDA OBJ 10056 6207 10057 2400 FSUB BEAR 10060 4642 10061 1041 JNE #9027 10062 0213 10063 0400 FLDA TROLL 10064 4634 10065 1120 JSA AT 10066 0634 10067 1001 JEQ #9027 10070 0213 / CALL RSPEAK(163) 10071 1130 JSR RSPEAK 10072 0000 10073 1031 JA .+4 10074 0077 10075 1030 JA #LIT+242 10076 0436 / CALL MOVE(TROLL,0) 10077 1130 JSR MOVE 10100 0000 10101 1031 JA .+6 10102 0107 10103 1030 JA TROLL 10104 4634 10105 1030 JA ZERO 10106 0160 / CALL MOVE(TROLL+100,0) 10107 0400 FLDA TROLL 10110 4634 10111 1307 FADD #LIT+154 10112 6227 FSTA #TMP 10113 1130 JSR MOVE 10114 0000 10115 1031 JA .+6 10116 0123 10117 1030 JA #TMP 10120 0130 10121 1030 JA ZERO 10122 0160 / CALL MOVE(TROLL2,PLAC(TROLL)) 10123 0400 FLDA TROLL 10124 4634 10125 0027 ATX 7 10126 0037 XTA 7 10127 4242 FMUL THREE 10130 0010 ALN 0 10131 0006 STARTD RALF V50A 24-JUL-20 PAGE 4-2 10132 1356 FADD PPLAC 10133 6401 FSTA .+11 10134 0144 10135 0005 STARTF 10136 1130 JSR MOVE 10137 0000 10140 1031 JA .+6 10141 0146 10142 1030 JA TROLL2 10143 4637 10144 1031 JA . 10145 0144 / CALL MOVE(TROLL2+100,FIXD(TROLL)) 10146 0400 FLDA TROLL2 10147 4637 10150 1307 FADD #LIT+154 10151 6227 FSTA #TMP 10152 0400 FLDA TROLL 10153 4634 10154 0027 ATX 7 10155 0037 XTA 7 10156 4242 FMUL THREE 10157 0010 ALN 0 10160 0006 STARTD 10161 1353 FADD PFIXD 10162 6401 FSTA .+11 10163 0173 10164 0005 STARTF 10165 1130 JSR MOVE 10166 0000 10167 1031 JA .+6 10170 0175 10171 1030 JA #TMP 10172 0130 10173 1031 JA . 10174 0173 / CALL JUGGLE(CHASM) 10175 1130 JSR JUGGLE 10176 0000 10177 1031 JA .+4 10200 0203 10201 1030 JA CHASM 10202 4631 10203 0400 FLDA TROLL 10204 4634 10205 0027 ATX 7 / PROP(TROLL)=2 10206 0241 FLDA TWO 10207 6470 FSTA PROP-3,7 10210 3647 / GOTO 9021 10211 1030 JA #9021 10212 7621 /C /9027 IF(OBJ.EQ.VASE.AND.LOC.NE.PLAC(PILLOW))GOTO 9028 RALF V50A 24-JUL-20 PAGE 4-3 10213 0400 #9027, FLDA OBJ 10214 6207 10215 2400 FSUB VASE 10216 4675 10217 1041 JNE .+13 10220 0232 10221 0400 FLDA PILLOW 10222 4543 10223 0027 ATX 7 10224 0400 FLDA LOC 10225 0014 10226 2470 FSUB PLAC-3,7 10227 1061 10230 1041 JNE #9028 10231 0240 / CALL RSPEAK(54) 10232 1130 JSR RSPEAK 10233 0000 10234 1030 JA #9021 10235 7621 10236 1030 JA #LIT+113 10237 0307 / GOTO 9021 /C /9028 PROP(VASE)=2 10240 0400 #9028, FLDA VASE 10241 4675 10242 0027 ATX 7 10243 0241 FLDA TWO 10244 6470 FSTA PROP-3,7 10245 3647 / IF(AT(PILLOW))PROP(VASE)=0 10246 0400 FLDA PILLOW 10247 4543 10250 1120 JSA AT 10251 0634 10252 1001 JEQ .+10 10253 0262 10254 0400 FLDA VASE 10255 4675 10256 0027 ATX 7 10257 0002 FCLA 10260 6470 FSTA PROP-3,7 10261 3647 / CALL PSPEAK(VASE,PROP(VASE)+1) 10262 0400 FLDA VASE 10263 4675 10264 0027 ATX 7 10265 0470 FLDA PROP-3,7 10266 3647 10267 1240 FADD ONE 10270 6227 FSTA #TMP 10271 1130 JSR PSPEAK 10272 0000 10273 1031 JA .+6 RALF V50A 24-JUL-20 PAGE 4-4 10274 0301 10275 1030 JA VASE 10276 4675 10277 1030 JA #TMP 10300 0130 / IF(PROP(VASE).NE.0)FIXED(VASE)=-1 10301 0400 FLDA VASE 10302 4675 10303 0027 ATX 7 10304 0470 FLDA PROP-3,7 10305 3647 10306 1000 JEQ #9021 10307 7621 10310 0372 FLDA MINUS1 10311 6470 FSTA FIXED-3,7 10312 2503 / GOTO 9021 10313 1030 JA #9021 10314 7621 /C /C SAY. ECHO WD2 (OR WD1 IF NO WD2 (SAY WHAT?, ETC.).) MAGIC WORDS OVERRIDE. /C /9030 IF(WD2.EQ.0)GOTO 9031 10315 0224 #9030, FLDA WD2 10316 1001 JEQ #9031 10317 0324 / WD1=WD2 WD1A=WD2A 10320 0224 FLDA WD2 10321 6222 FSTA WD1 / WD1X=WD2X 10322 0225 FLDA WD2X 10323 6223 FSTA WD1X /9031 CALL VOCAB(WD1,WD1A,-1,I) 10324 1130 #9031, JSR VOCAB 10325 0000 10326 1031 JA .+6 10327 0334 10330 1030 JA WD1 10331 0111 10332 1030 JA MINUS1 10333 0601 10334 6400 FSTA I 10335 0000 / IF(I.EQ.62.OR.I.EQ.65.OR.I.EQ.71.OR.I.EQ.2025)GOTO 9035 10336 2277 FSUB #LIT+124 10337 1001 JEQ #9035 10340 0402 10341 2242 FSUB THREE 10342 1001 JEQ #9035 10343 0402 10344 2244 FSUB #LIT+3 10345 1001 JEQ #9035 10346 0402 10347 0100 LDX 3751,0 /2025 RALF V50A 24-JUL-20 PAGE 4-5 10350 3751 10351 0030 XTA 0 10352 2400 FSUB I 10353 0000 10354 1001 JEQ #9035 10355 0402 / TYPE 9032 10356 1130 JSR SIXOUT 10357 0000 10360 1031 JA .+10 10361 0370 10362 1032 JA #9032 10363 0050 10364 1030 JA ZERO 10365 0160 10366 1030 JA TWO 10367 0166 /9032 FORMAT(' Okay, "',$) / CALL A5TOA1(WD1,WD1A,WD1X,'".') 10370 1130 JSR A5TOA1 10371 0000 10372 1030 JA #2012 10373 3400 10374 1030 JA WD1 10375 0111 10376 1030 JA WD1X 10377 0114 10400 1030 JA TQDOT 10401 0554 / GOTO 2012 /C /9035 WD2=0 10402 0002 #9035, FCLA 10403 6224 FSTA WD2 / OBJ=0 10404 6400 FSTA OBJ 10405 6207 / GOTO 2630 10406 1030 JA #2630 10407 4124 /C /C LOCK, UNLOCK, NO OBJECT GIVEN. ASSUME VARIOUS THINGS IF PRESENT. /C /8040 SPK=28 10410 0100 #8040, LDX 34,0 /28 10411 0034 10412 0030 XTA 0 10413 6221 FSTA SPK / IF(HERE(CLAM))OBJ=CLAM 10414 0400 FLDA CLAM 10415 4557 10416 1120 JSA HERE 10417 0667 10420 1001 JEQ .+6 RALF V50A 24-JUL-20 PAGE 4-6 10421 0426 10422 0400 FLDA CLAM 10423 4557 10424 6400 FSTA OBJ 10425 6207 / IF(HERE(OYSTER))OBJ=OYSTER 10426 0400 FLDA OYSTER 10427 4562 10430 1120 JSA HERE 10431 0667 10432 1001 JEQ .+6 10433 0440 10434 0400 FLDA OYSTER 10435 4562 10436 6400 FSTA OBJ 10437 6207 / IF(AT(DOOR))OBJ=DOOR 10440 0400 FLDA DOOR 10441 4540 10442 1120 JSA AT 10443 0634 10444 1001 JEQ .+6 10445 0452 10446 0400 FLDA DOOR 10447 4540 10450 6400 FSTA OBJ 10451 6207 / IF(AT(GRATE))OBJ=GRATE 10452 0400 FLDA GRATE 10453 4516 10454 1120 JSA AT 10455 0634 10456 1001 JEQ .+6 10457 0464 10460 0400 FLDA GRATE 10461 4516 10462 6400 FSTA OBJ 10463 6207 / IF(OBJ.NE.0.AND.HERE(CHAIN))GOTO 8000 10464 0400 FLDA OBJ 10465 6207 10466 1001 JEQ .+10 10467 0476 10470 0400 FLDA CHAIN 10471 4714 10472 1120 JSA HERE 10473 0667 10474 1040 JNE #8000 10475 7010 / IF(HERE(CHAIN))OBJ=CHAIN 10476 0400 FLDA CHAIN 10477 4714 10500 1120 JSA HERE 10501 0667 10502 1001 JEQ .+6 10503 0510 RALF V50A 24-JUL-20 PAGE 4-7 10504 0400 FLDA CHAIN 10505 4714 10506 6400 FSTA OBJ 10507 6207 / IF(OBJ.EQ.0)GOTO 2011 10510 0400 FLDA OBJ 10511 6207 10512 1000 JEQ #2011 10513 3372 /C /C LOCK, UNLOCK OBJECT. SPECIAL STUFF FOR OPENING CLAM/OYSTER AND FOR CHAIN. /C /9040 IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)GOTO 9046 10514 0400 #9040, FLDA OBJ 10515 6207 10516 2400 FSUB CLAM 10517 4557 10520 1001 JEQ #9046 10521 0745 10522 0400 FLDA OBJ 10523 6207 10524 2400 FSUB OYSTER 10525 4562 10526 1001 JEQ #9046 10527 0745 / IF(OBJ.EQ.DOOR)SPK=111 10530 0400 FLDA OBJ 10531 6207 10532 2400 FSUB DOOR 10533 4540 10534 1041 JNE #9040A 10535 0542 10536 0100 LDX 157,0 /111 10537 0157 10540 0030 XTA 0 10541 6221 FSTA SPK / IF(OBJ.EQ.DOOR.AND.PROP(DOOR).EQ.1)SPK=54 10542 0400 #9040A, FLDA OBJ 10543 6207 10544 2400 FSUB DOOR 10545 4540 10546 1041 JNE .+16 10547 0564 10550 0400 FLDA DOOR 10551 4540 10552 0027 ATX 7 10553 0470 FLDA PROP-3,7 10554 3647 10555 2240 FSUB ONE 10556 1001 JEQ .+6 10557 0564 10560 0100 LDX 74,0 /60 10561 0074 10562 0030 XTA 0 10563 6221 FSTA SPK RALF V50A 24-JUL-20 PAGE 4-8 / IF(OBJ.EQ.CAGE)SPK=32 10564 0400 FLDA OBJ 10565 6207 10566 2400 FSUB CAGE 10567 4521 10570 1041 JNE .+6 10571 0576 10572 0100 LDX 40,0 /32 10573 0040 10574 0030 XTA 0 10575 6221 FSTA SPK / IF(OBJ.EQ.KEYS)SPK=55 10576 0400 FLDA OBJ 10577 6207 10600 2400 FSUB KEYS 10601 4510 10602 1041 JNE .+6 10603 0610 10604 0100 LDX 67,0 /55 10605 0067 10606 0030 XTA 0 10607 6221 FSTA SPK / IF(OBJ.EQ.GRATE.OR.OBJ.EQ.CHAIN)SPK=31 10610 0400 FLDA OBJ 10611 6207 10612 2400 FSUB GRATE 10613 4516 10614 1001 JEQ .+10 10615 0624 10616 0400 FLDA OBJ 10617 6207 10620 2400 FSUB CHAIN 10621 4714 10622 1041 JNE .+6 10623 0630 10624 0100 LDX 37,0 /31 10625 0037 10626 0030 XTA 0 10627 6221 FSTA SPK / IF(SPK.NE.31.OR..NOT.HERE(KEYS))GOTO 2011 10630 0100 LDX 37,0 /31 10631 0037 10632 0030 XTA 0 10633 2221 FSUB SPK 10634 1040 JNE #2011 10635 3372 10636 0400 FLDA KEYS 10637 4510 10640 1120 JSA HERE 10641 0667 10642 1000 JEQ #2011 10643 3372 / IF(OBJ.EQ.CHAIN)GOTO 9048 10644 0400 FLDA OBJ 10645 6207 10646 2400 FSUB CHAIN RALF V50A 24-JUL-20 PAGE 4-9 10647 4714 10650 1001 JEQ #9048 10651 1065 / IF(.NOT.CLOSNG)GOTO 9043 10652 0400 FLDA CLOSNG 10653 5024 10654 1001 JEQ #9043 10655 0675 / K=130 10656 0320 FLDA #LIT+207 10657 6400 FSTA K 10660 6215 / IF(.NOT.PANIC)CLOCK2=15 10661 0400 FLDA PANIC 10662 5027 10663 1041 JNE .+5 10664 0670 10665 0252 FLDA #LIT+25 10666 6400 FSTA CLOCK2 10667 5021 / PANIC=.TRUE. 10670 0240 FLDA ONE 10671 6400 FSTA PANIC 10672 5027 / GOTO 2010 10673 1030 JA #2010 10674 3367 /C /9043 K=34+PROP(GRATE) 10675 0400 #9043, FLDA GRATE 10676 4516 10677 0027 ATX 7 10700 0100 LDX 42,0 /34 10701 0042 10702 0030 XTA 0 10703 1470 FADD PROP-3,7 10704 3647 10705 6400 FSTA K 10706 6215 / IF(VERB.EQ.LOCK)PROP(GRATE)=0 10707 0400 FLDA GRATE 10710 4516 10711 0027 ATX 7 10712 0240 FLDA ONE 10713 6470 FSTA PROP-3,7 10714 3647 10715 0400 FLDA VERB 10716 6220 10717 2400 FSUB LOCK 10720 4744 10721 1041 JNE .+10 10722 0731 10723 0400 FLDA GRATE 10724 4516 10725 0027 ATX 7 RALF V50A 24-JUL-20 PAGE 4-10 10726 0002 FCLA 10727 6470 FSTA PROP-3,7 10730 3647 / K=K+2*PROP(GRATE) 10731 0400 FLDA GRATE 10732 4516 10733 0027 ATX 7 10734 0241 FLDA TWO 10735 4470 FMUL PROP-3,7 10736 3647 10737 1400 FADD K 10740 6215 10741 6400 FSTA K 10742 6215 / GOTO 2010 10743 1030 JA #2010 10744 3367 /C /C CLAM/OYSTER. /C /9046 K=0 10745 0002 #9046, FCLA 10746 6400 FSTA K 10747 6215 / IF(OBJ.EQ.OYSTER)K=1 10750 0400 FLDA OBJ 10751 6207 10752 2400 FSUB OYSTER 10753 4562 10754 1041 JNE .+5 10755 0761 10756 0240 FLDA ONE 10757 6400 FSTA K 10760 6215 / SPK=124+K 10761 0100 LDX 174,0 10762 0174 10763 0030 XTA 0 10764 1400 FADD K 10765 6215 10766 6221 FSTA SPK / IF(TOTING(OBJ))SPK=120+K 10767 0400 FLDA OBJ 10770 6207 10771 1120 JSA TOTING 10772 0622 10773 1001 JEQ #9046A 10774 1003 10775 0100 LDX 170,0 /120 10776 0170 10777 0030 XTA 0 11000 1400 FADD K 11001 6215 11002 6221 FSTA SPK / IF(.NOT.TOTING(TRIDNT))SPK=122+K RALF V50A 24-JUL-20 PAGE 4-11 11003 0400 #9046A, FLDA TRIDNT 11004 4672 11005 1120 JSA TOTING 11006 0622 11007 1041 JNE .+10 11010 1017 11011 0100 LDX 172,0 /122 11012 0172 11013 0030 XTA 0 11014 1400 FADD K 11015 6215 11016 6221 FSTA SPK / IF(VERB.EQ.LOCK)SPK=61 11017 0400 FLDA VERB 11020 6220 11021 2400 FSUB LOCK 11022 4744 11023 1041 JNE .+6 11024 1031 11025 0100 LDX 75,0 /61 11026 0075 11027 0030 XTA 0 11030 6221 FSTA SPK / IF(SPK.NE.124)GOTO 2011 11031 0100 LDX 174,0 /124 11032 0174 11033 0030 XTA 0 11034 2221 FSUB SPK 11035 1040 JNE #2011 11036 3372 / CALL DSTROY(CLAM) 11037 1130 JSR DSTROY 11040 0000 11041 1031 JA .+4 11042 1045 11043 1030 JA CLAM 11044 4557 / CALL DROP(OYSTER,LOC) 11045 1130 JSR DROP 11046 0000 11047 1031 JA .+6 11050 1055 11051 1030 JA OYSTER 11052 4562 11053 1030 JA LOC 11054 0014 / CALL DROP(PEARL,105) 11055 1130 JSR DROP 11056 0000 11057 1030 JA #2011 11060 3372 11061 1030 JA PEARL 11062 4706 11063 1030 JA #LIT+157 11064 0353 / GOTO 2011 RALF V50A 24-JUL-20 PAGE 4-12 /C /C CHAIN. /C /9048 IF(VERB.EQ.LOCK)GOTO 9049 11065 0400 #9048, FLDA VERB 11066 6220 11067 2400 FSUB LOCK 11070 4744 11071 1001 JEQ #9049 11072 1160 / SPK=171 11073 0100 LDX 253,0 /171 11074 0253 11075 0030 XTA 0 11076 6221 FSTA SPK / IF(PROP(BEAR).EQ.0)SPK=41 11077 0400 FLDA BEAR 11100 4642 11101 0027 ATX 7 11102 0470 FLDA PROP-3,7 11103 3647 11104 1041 JNE .+6 11105 1112 11106 0100 LDX 51,0 /41 11107 0051 11110 0030 XTA 0 11111 6221 FSTA SPK / IF(PROP(CHAIN).EQ.0)SPK=37 11112 0400 FLDA CHAIN 11113 4714 11114 0027 ATX 7 11115 0470 FLDA PROP-3,7 11116 3647 11117 1041 JNE .+4 11120 1123 11121 0266 FLDA #LIT+71 11122 6221 FSTA SPK / IF(SPK.NE.171)GOTO 2011 11123 0100 LDX 253,0 /171 11124 0253 11125 0030 XTA 0 11126 2221 FSUB SPK 11127 1040 JNE #2011 11130 3372 / PROP(CHAIN)=0 11131 0002 FCLA 11132 6470 FSTA PROP-3,7 11133 3647 / FIXED(CHAIN)=0 11134 6470 FSTA FIXED-3,7 11135 2503 / IF(PROP(BEAR).NE.3)PROP(BEAR)=2 11136 0400 FLDA BEAR 11137 4642 11140 0027 ATX 7 RALF V50A 24-JUL-20 PAGE 4-13 11141 0470 FLDA PROP-3,7 11142 3647 11143 2242 FSUB THREE 11144 1001 JEQ .+5 11145 1151 11146 0241 FLDA TWO 11147 6470 FSTA PROP-3,7 11150 3647 / FIXED(BEAR)=2-PROP(BEAR) 11151 0241 FLDA TWO 11152 2470 FSUB PROP-3,7 11153 3647 11154 6470 FSTA FIXED-3,7 11155 2503 / GOTO 2011 11156 1030 JA #2011 11157 3372 /C /9049 SPK=172 11160 0100 #9049, LDX 254,0 /172 11161 0254 11162 0030 XTA 0 11163 6221 FSTA SPK / IF(PROP(CHAIN).NE.0)SPK=34 11164 0400 FLDA CHAIN 11165 4714 11166 0027 ATX 7 11167 0470 FLDA PROP-3,7 11170 3647 11171 1001 JEQ .+6 11172 1177 11173 0100 LDX 42,0 /34 11174 0042 11175 0030 XTA 0 11176 6221 FSTA SPK / IF(LOC.NE.PLAC(CHAIN))SPK=173 11177 0400 FLDA LOC 11200 0014 11201 2470 FSUB PLAC-3,7 11202 1061 11203 1001 JEQ .+6 11204 1211 11205 0100 LDX 255,0 /173 11206 0255 11207 0030 XTA 0 11210 6221 FSTA SPK / IF(SPK.NE.172)GOTO 2011 11211 0100 LDX 254,0 /172 11212 0254 11213 0030 XTA 0 11214 2221 FSUB SPK 11215 1040 JNE #2011 11216 3372 / PROP(CHAIN)=2 11217 0241 FLDA TWO RALF V50A 24-JUL-20 PAGE 4-14 11220 6470 FSTA PROP-3,7 11221 3647 / IF(TOTING(CHAIN))CALL DROP(CHAIN,LOC) 11222 0400 FLDA CHAIN 11223 4714 11224 1120 JSA TOTING 11225 0622 11226 1001 JEQ .+12 11227 1240 11230 1130 JSR DROP 11231 0000 11232 1031 JA .+6 11233 1240 11234 1030 JA CHAIN 11235 4714 11236 1030 JA LOC 11237 0014 / FIXED(CHAIN)=-1 11240 0372 FLDA MINUS1 11241 6470 FSTA FIXED-3,7 11242 2503 / GOTO 2011 11243 1030 JA #2011 11244 3372 /C /C LIGHT LAMP /C /9070 IF(.NOT.HERE(LAMP))GOTO 2011 11245 0400 #9070, FLDA LAMP 11246 4513 11247 1120 JSA HERE 11250 0667 11251 1000 JEQ #2011 11252 3372 / SPK=184 11253 0334 FLDA #LIT+253 11254 6221 FSTA SPK / IF(LIMIT.LT.0)GOTO 2011 11255 0400 FLDA LIMIT 11256 0011 11257 1050 JLT #2011 11260 3372 / PROP(LAMP)=1 11261 0400 FLDA LAMP 11262 4513 11263 0027 ATX 7 11264 0240 FLDA ONE 11265 6470 FSTA PROP-3,7 11266 3647 / CALL RSPEAK(39) 11267 1130 JSR RSPEAK 11270 0000 11271 1031 JA .+4 11272 1275 11273 1030 JA #LIT+74 RALF V50A 24-JUL-20 PAGE 4-15 11274 0270 / IF(WZDARK)GOTO 2000 11275 0400 FLDA WZDARK 11276 0025 11277 1040 JNE #2000 11300 2760 / GOTO 2012 11301 1030 JA #2012 11302 3400 /C /C LAMP OFF /C /9080 IF(.NOT.HERE(LAMP))GOTO 2011 11303 0400 #9080, FLDA LAMP 11304 4513 11305 1120 JSA HERE 11306 0667 11307 1000 JEQ #2011 11310 3372 / PROP(LAMP)=0 11311 0400 FLDA LAMP 11312 4513 11313 0027 ATX 7 11314 0002 FCLA 11315 6470 FSTA PROP-3,7 11316 3647 / CALL RSPEAK(40) 11317 1130 JSR RSPEAK 11320 0000 11321 1031 JA .+4 11322 1325 11323 1030 JA #LIT+77 11324 0273 / IF(DARK(0))CALL RSPEAK(16) 11325 1120 JSA DARK 11326 0711 11327 1000 JEQ #2012 11330 3400 11331 1130 JSR RSPEAK 11332 0000 11333 1030 JA #2012 11334 3400 11335 1030 JA #LIT+30 11336 0224 / GOTO 2012 /C /C WAVE. NO EFFECT UNLESS WAVING ROD AT FISSURE. /C /9090 IF((.NOT.TOTING(OBJ)).AND.(OBJ.NE.ROD.OR..NOT.TOTING(ROD2))) / 1 SPK=29 11337 0400 #9090, FLDA OBJ 11340 6207 11341 1120 JSA TOTING 11342 0622 RALF V50A 24-JUL-20 PAGE 4-16 11343 1041 JNE .+20 11344 1363 11345 0400 FLDA OBJ 11346 6207 11347 2400 FSUB ROD 11350 4524 11351 1041 JNE .+12 11352 1363 11353 0400 FLDA ROD2 11354 4527 11355 1120 JSA TOTING 11356 0622 11357 1041 JNE .+4 11360 1363 11361 0371 FLDA #LIT+402 11362 6221 FSTA SPK / IF(OBJ.NE.ROD.OR..NOT.AT(FISSUR).OR..NOT.TOTING(OBJ) / 1 .OR.CLOSNG)GOTO 2011 11363 0400 FLDA OBJ 11364 6207 11365 2400 FSUB ROD 11366 4524 11367 1040 JNE #2011 11370 3372 11371 0400 FLDA FISSUR 11372 4551 11373 1120 JSA AT 11374 0634 11375 1000 JEQ #2011 11376 3372 11377 0400 FLDA OBJ 11400 6207 11401 1120 JSA TOTING 11402 0622 11403 1000 JEQ #2011 11404 3372 11405 0400 FLDA CLOSNG 11406 5024 11407 1040 JNE #2011 11410 3372 / PROP(FISSUR)=1-PROP(FISSUR) 11411 0400 FLDA FISSUR 11412 4551 11413 0027 ATX 7 11414 0240 FLDA ONE 11415 2470 FSUB PROP-3,7 11416 3647 11417 6470 FSTA PROP-3,7 11420 3647 / CALL PSPEAK(FISSUR,2-PROP(FISSUR)) 11421 0400 FLDA FISSUR 11422 4551 11423 0027 ATX 7 11424 0241 FLDA TWO 11425 2470 FSUB PROP-3,7 11426 3647 RALF V50A 24-JUL-20 PAGE 4-17 11427 6227 FSTA #TMP 11430 1130 JSR PSPEAK 11431 0000 11432 1030 JA #2012 11433 3400 11434 1030 JA FISSUR 11435 4551 11436 1030 JA #TMP 11437 0130 / GOTO 2012 /C /C ATTACK. ASSUME TARGET IF UNAMBIGUOUS. "THROW" ALSO LINKS HERE. ATTACKABLE /C OBJECTS FALL INTO TWO CATEGORIES: ENEMIES (SNAKE, DWARF, ETC.) AND OTHERS /C (BIRD, CLAM). AMBIGUOUS IF TWO ENEMIES, OR IF NO ENEMIES BUT TWO OTHERS. /C /9120 DO 9121 I=1,5 11440 0240 #9120, FLDA ONE 11441 6400 FSTA I 11442 0000 11443 0400 #H0102, FLDA I 11444 0000 11445 0027 ATX 7 / IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 9122 11446 0470 FLDA DLOC-3,7 11447 4460 11450 2400 FSUB LOC 11451 0014 11452 1041 JNE #9121 11453 1461 11454 0400 FLDA DFLAG 11455 4460 11456 2241 FSUB TWO 11457 1011 JGE #9122 11460 1474 /9121 CONTINUE 11461 0400 #9121, FLDA I 11462 0000 11463 1240 FADD ONE 11464 6400 FSTA I 11465 0000 11466 2244 FSUB #LIT+3 11467 1021 JLE #H0102 11470 1443 / I=0 11471 0002 FCLA 11472 6400 FSTA I 11473 0000 /9122 IF(OBJ.NE.0)GOTO 9124 11474 0400 #9122, FLDA OBJ 11475 6207 11476 1041 JNE #9124 11477 1673 RALF V50A 24-JUL-20 PAGE 4-18 / IF(I.NE.0)OBJ=DWARF 11500 0400 FLDA I 11501 0000 11502 1001 JEQ .+6 11503 1510 11504 0400 FLDA DWARF 11505 4570 11506 6400 FSTA OBJ 11507 6207 / IF(HERE(SNAKE))OBJ=OBJ*100+SNAKE 11510 0400 FLDA SNAKE 11511 4546 11512 1120 JSA HERE 11513 0667 11514 1001 JEQ .+11 11515 1525 11516 0400 FLDA OBJ 11517 6207 11520 4307 FMUL #LIT+154 11521 1400 FADD SNAKE 11522 4546 11523 6400 FSTA OBJ 11524 6207 / IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)OBJ=OBJ*100+DRAGON 11525 0400 FLDA DRAGON 11526 4626 11527 1120 JSA AT 11530 0634 11531 1001 JEQ .+20 11532 1551 11533 0400 FLDA DRAGON 11534 4626 11535 0027 ATX 7 11536 0470 FLDA PROP-3,7 11537 3647 11540 1041 JNE .+11 11541 1551 11542 0400 FLDA OBJ 11543 6207 11544 4307 FMUL #LIT+154 11545 1400 FADD DRAGON 11546 4626 11547 6400 FSTA OBJ 11550 6207 / IF(AT(TROLL))OBJ=OBJ*100+TROLL 11551 0400 FLDA TROLL 11552 4634 11553 1120 JSA AT 11554 0634 11555 1001 JEQ .+11 11556 1566 11557 0400 FLDA OBJ 11560 6207 11561 4307 FMUL #LIT+154 11562 1400 FADD TROLL 11563 4634 RALF V50A 24-JUL-20 PAGE 4-19 11564 6400 FSTA OBJ 11565 6207 / IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)OBJ=OBJ*100+BEAR 11566 0400 FLDA BEAR 11567 4642 11570 1120 JSA HERE 11571 0667 11572 1001 JEQ .+20 11573 1612 11574 0400 FLDA BEAR 11575 4642 11576 0027 ATX 7 11577 0470 FLDA PROP-3,7 11600 3647 11601 1041 JNE .+11 11602 1612 11603 0400 FLDA OBJ 11604 6207 11605 4307 FMUL #LIT+154 11606 1400 FADD BEAR 11607 4642 11610 6400 FSTA OBJ 11611 6207 / IF(OBJ.GT.100)GOTO 8000 11612 0400 FLDA OBJ 11613 6207 11614 2307 FSUB #LIT+154 11615 1060 JGT #8000 11616 7010 / IF(OBJ.NE.0)GOTO 9124 11617 0400 FLDA OBJ 11620 6207 11621 1041 JNE #9124 11622 1673 /C /C CAN'T ATTACK BIRD BY THROWING AXE. /C / IF(HERE(BIRD).AND.VERB.NE.THROW)OBJ=BIRD 11623 0400 FLDA BEAR 11624 4642 11625 1120 JSA HERE 11626 0667 11627 1001 JEQ .+14 11630 1643 11631 0400 FLDA VERB 11632 6220 11633 2400 FSUB THROW 11634 4747 11635 1041 JNE .+6 11636 1643 11637 0400 FLDA BIRD 11640 4535 11641 6400 FSTA OBJ 11642 6207 /C /C CLAM AND OYSTER BOTH TREATED AS CLAM FOR INTRANSITIVE CASE; NO HARM DONE. RALF V50A 24-JUL-20 PAGE 4-20 /C / IF(HERE(CLAM).OR.HERE(OYSTER))OBJ=100*OBJ+CLAM 11643 0400 FLDA CLAM 11644 4557 11645 1120 JSA HERE 11646 0667 11647 1041 JNE .+10 11650 1657 11651 0400 FLDA OYSTER 11652 4562 11653 1120 JSA HERE 11654 0667 11655 1001 JEQ .+11 11656 1666 11657 0307 FLDA #LIT+154 11660 4400 FMUL OBJ 11661 6207 11662 1400 FADD CLAM 11663 4557 11664 6400 FSTA OBJ 11665 6207 / IF(OBJ.GT.100)GOTO 8000 11666 0400 FLDA OBJ 11667 6207 11670 2307 FSUB #LIT+154 11671 1060 JGT #8000 11672 7010 /9124 IF(OBJ.NE.BIRD)GOTO 9125 11673 0400 #9124, FLDA OBJ 11674 6207 11675 2400 FSUB BIRD 11676 4535 11677 1041 JNE #9125 11700 1745 / SPK=137 11701 0100 LDX 211,0 /137 11702 0211 11703 0030 XTA 0 11704 6221 FSTA SPK / IF(CLOSED)GOTO 2011 11705 0400 FLDA CLOSED 11706 5032 11707 1040 JNE #2011 11710 3372 / CALL DSTROY(BIRD) 11711 1130 JSR DSTROY 11712 0000 11713 1031 JA .+4 11714 1717 11715 1030 JA BIRD 11716 4535 / PROP(BIRD)=0 11717 0400 FLDA BIRD 11720 4535 11721 0027 ATX 7 RALF V50A 24-JUL-20 PAGE 4-21 11722 0002 FCLA 11723 6470 FSTA PROP-3,7 11724 3647 / IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1 11725 0400 FLDA SNAKE 11726 4546 11727 0027 ATX 7 11730 0470 FLDA PLACE-3,7 11731 2027 11732 2470 FSUB PLAC-3,7 11733 1061 11734 1041 JNE .+7 11735 1743 11736 0400 FLDA TALLY2 11737 4331 11740 1240 FADD ONE 11741 6400 FSTA TALLY2 11742 4331 / SPK=45 11743 0271 FLDA #LIT+102 11744 6221 FSTA SPK /9125 IF(OBJ.EQ.0)SPK=44 11745 0400 #9125, FLDA OBJ 11746 6207 11747 1041 JNE .+6 11750 1755 11751 0100 LDX 54,0 /44 11752 0054 11753 0030 XTA 0 11754 6221 FSTA SPK / IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)SPK=150 11755 0400 FLDA OBJ 11756 6207 11757 2400 FSUB CLAM 11760 4557 11761 1001 JEQ .+10 11762 1771 11763 0400 FLDA OBJ 11764 6207 11765 2400 FSUB OYSTER 11766 4562 11767 1041 JNE .+6 11770 1775 11771 0100 LDX 226,0 /150 11772 0226 11773 0030 XTA 0 11774 6221 FSTA SPK / IF(OBJ.EQ.SNAKE)SPK=46 11775 0400 FLDA OBJ 11776 6207 11777 2400 FSUB SNAKE 12000 4546 12001 1041 JNE .+6 12002 2007 12003 0100 LDX 56,0 /46 RALF V50A 24-JUL-20 PAGE 4-22 12004 0056 12005 0030 XTA 0 12006 6221 FSTA SPK / IF(OBJ.EQ.DWARF)SPK=49 12007 0400 FLDA OBJ 12010 6207 12011 2400 FSUB DWARF 12012 4570 12013 1041 JNE .+4 12014 2017 12015 0272 FLDA #LIT+105 12016 6221 FSTA SPK / IF(OBJ.EQ.DWARF.AND.CLOSED)GOTO 19000 12017 0400 FLDA OBJ 12020 6207 12021 2400 FSUB DWARF 12022 4570 12023 1041 JNE .+6 12024 2031 12025 0400 FLDA CLOSED 12026 5032 12027 1041 JNE #19000 12030 7012 / IF(OBJ.EQ.DRAGON)SPK=167 12031 0400 FLDA OBJ 12032 6207 12033 2400 FSUB DRAGON 12034 4626 12035 1041 JNE .+6 12036 2043 12037 0100 LDX 247,0 /167 12040 0247 12041 0030 XTA 0 12042 6221 FSTA SPK / IF(OBJ.EQ.TROLL)SPK=157 12043 0400 FLDA OBJ 12044 6207 12045 2400 FSUB TROLL 12046 4634 12047 1041 JNE .+6 12050 2055 12051 0100 LDX 235,0 /157 12052 0235 12053 0030 XTA 0 12054 6221 FSTA SPK / IF(OBJ.EQ.BEAR)SPK=165+(PROP(BEAR)+1)/2 12055 0400 FLDA OBJ 12056 6207 12057 2400 FSUB BEAR 12060 4642 12061 1041 JNE .+15 12062 2076 12063 0400 FLDA BEAR 12064 4642 12065 0027 ATX 7 12066 0470 FLDA PROP-3,7 RALF V50A 24-JUL-20 PAGE 4-23 12067 3647 12070 1240 FADD ONE 12071 3241 FDIV TWO 12072 1120 JSA #FIX 12073 0000 12074 1332 FADD #LIT+245 12075 6221 FSTA SPK / IF(OBJ.NE.DRAGON.OR.PROP(DRAGON).NE.0)GOTO 2011 12076 0400 FLDA OBJ 12077 6207 12100 2400 FSUB DRAGON 12101 4626 12102 1040 JNE #2011 12103 3372 12104 0400 FLDA DRAGON 12105 4626 12106 0027 ATX 7 12107 0470 FLDA PROP-3,7 12110 3647 12111 1040 JNE #2011 12112 3372 /C /C FUN STUFF FOR DRAGON. IF HE INSISTS ON ATTACKING IT, WIN! SET PROP TO DEAD, /C MOVE DRAGON TO CENTRAL LOC (STILL FIXED), MOVE RUG THERE (NOT FIXED), AND /C MOVE HIM THERE, TOO. THEN DO A NULL MOTION TO GET NEW DESCRIPTION. /C / CALL RSPEAK(49) 12113 1130 JSR RSPEAK 12114 0000 12115 1031 JA .+4 12116 2121 12117 1030 JA #LIT+105 12120 0301 / VERB=0 12121 0002 FCLA 12122 6400 FSTA VERB 12123 6220 / OBJ=0 12124 6400 FSTA OBJ 12125 6207 / CALL GETIN(WD1,WD1A,WD1X,WD2,WD2A,WD2X) 12126 1130 JSR GETIN 12127 0000 12130 1031 JA .+12 12131 2142 12132 1030 JA WD1 12133 0111 12134 1030 JA WD1X 12135 0114 12136 1030 JA WD2 12137 0117 12140 1030 JA WD2X 12141 0122 / IF(WD1.NE.'YE'.AND.WD1.NE.'Y')GOTO 2608 12142 0222 FLDA WD1 12143 2364 FSUB TYES RALF V50A 24-JUL-20 PAGE 4-24 12144 1001 JEQ OKKILL 12145 2156 12146 0222 FLDA WD1 12147 2365 FSUB TYE 12150 1001 JEQ OKKILL 12151 2156 12152 0222 FLDA WD1 12153 2366 FSUB TY 12154 1040 JNE #2608 12155 3602 / CALL PSPEAK(DRAGON,1) 12156 1130 OKKILL, JSR PSPEAK 12157 0000 12160 1031 JA .+6 12161 2166 12162 1030 JA DRAGON 12163 4626 12164 1030 JA ONE 12165 0163 / PROP(DRAGON)=2 12166 0400 FLDA DRAGON 12167 4626 12170 0027 ATX 7 12171 0241 FLDA TWO 12172 6470 FSTA PROP-3,7 12173 3647 / PROP(RUG)=0 12174 0400 FLDA RUG 12175 4711 12176 0027 ATX 7 12177 0002 FCLA 12200 6470 FSTA PROP-3,7 12201 3647 / K=(PLAC(DRAGON)+FIXD(DRAGON))/2 12202 0400 FLDA DRAGON 12203 4626 12204 0027 ATX 7 12205 0470 FLDA PLAC-3,7 12206 1061 12207 1470 FADD FIXD-3,7 12210 1535 12211 3241 FDIV TWO 12212 1120 JSA #FIX 12213 0000 12214 6400 FSTA K 12215 6215 / CALL MOVE(DRAGON+100,-1) 12216 0400 FLDA DRAGON 12217 4626 12220 1307 FADD #LIT+154 12221 6227 FSTA #TMP 12222 1130 JSR MOVE 12223 0000 12224 1031 JA .+6 12225 2232 12226 1030 JA #TMP RALF V50A 24-JUL-20 PAGE 4-25 12227 0130 12230 1030 JA MINUS1 12231 0601 / CALL MOVE(RUG+100,0) 12232 0400 FLDA RUG 12233 4711 12234 1307 FADD #LIT+154 12235 6227 FSTA #TMP 12236 1130 JSR MOVE 12237 0000 12240 1031 JA .+6 12241 2246 12242 1030 JA #TMP 12243 0130 12244 1030 JA ZERO 12245 0160 / CALL MOVE(DRAGON,K) 12246 1130 JSR MOVE 12247 0000 12250 1031 JA .+6 12251 2256 12252 1030 JA DRAGON 12253 4626 12254 1030 JA K 12255 6215 / CALL MOVE(RUG,K) 12256 1130 JSR MOVE 12257 0000 12260 1031 JA .+6 12261 2266 12262 1030 JA RUG 12263 4711 12264 1030 JA K 12265 6215 / DO 9126 OBJ=1,100 12266 0240 FLDA ONE 12267 6400 FSTA OBJ 12270 6207 / IF(PLACE(OBJ).EQ.PLAC(DRAGON).OR.PLACE(OBJ).EQ.FIXD(DRAGON)) / 1 CALL MOVE(OBJ,K) 12271 0400 #H0122, FLDA OBJ 12272 6207 12273 0027 ATX 7 12274 0400 FLDA DRAGON 12275 4626 12276 0026 ATX 6 12277 0470 FLDA PLACE-3,7 12300 2027 12301 2460 FSUB PLAC-3,6 12302 1061 12303 1001 JEQ .+10 12304 2313 12305 0470 FLDA PLACE-3,7 12306 2027 12307 2460 FSUB FIXD-3,6 RALF V50A 24-JUL-20 PAGE 4-26 12310 1535 12311 1041 JNE #9126 12312 2323 12313 1130 JSR MOVE 12314 0000 12315 1031 JA .+6 12316 2323 12317 1030 JA OBJ 12320 6207 12321 1030 JA K 12322 6215 /9126 CONTINUE 12323 0400 #9126, FLDA OBJ 12324 6207 12325 1240 FADD ONE 12326 6400 FSTA OBJ 12327 6207 12330 2307 FSUB #LIT+154 12331 1021 JLE #H0122 12332 2271 / LOC=K 12333 0400 FLDA K 12334 6215 12335 6400 FSTA LOC 12336 0014 / K=NULL 12337 0400 FLDA NULL 12340 4730 12341 6400 FSTA K 12342 6215 / GOTO 8 12343 1030 JA #8 12344 5146 /C /C POUR. IF NO OBJECT, OR OBJECT IS BOTTLE, ASSUME CONTENTS OF BOTTLE. /C SPECIAL TESTS FOR POURING WATER OR OIL ON PLANT OR RUSTY DOOR. /C /9130 IF(OBJ.EQ.BOTTLE.OR.OBJ.EQ.0)OBJ=LIQ(0) 12345 0400 #9130, FLDA OBJ 12346 6207 12347 2400 FSUB BOTTLE 12350 4601 12351 1001 JEQ .+6 12352 2357 12353 0400 FLDA OBJ 12354 6207 12355 1041 JNE .+6 12356 2363 12357 1120 JSA LIQ 12360 1001 12361 6400 FSTA OBJ 12362 6207 / IF(OBJ.EQ.0)GOTO 8000 12363 0400 FLDA OBJ 12364 6207 RALF V50A 24-JUL-20 PAGE 4-27 12365 1000 JEQ #8000 12366 7010 / IF(.NOT.TOTING(OBJ))GOTO 2011 12367 0400 FLDA OBJ 12370 6207 12371 1120 JSA TOTING 12372 0622 12373 1000 JEQ #2011 12374 3372 / SPK=78 12375 0100 LDX 116,0 /78 12376 0116 12377 0030 XTA 0 12400 6221 FSTA SPK / IF(OBJ.NE.OIL.AND.OBJ.NE.WATER)GOTO 2011 12401 0400 FLDA OBJ 12402 6207 12403 2400 FSUB OIL 12404 4607 12405 1001 JEQ .+10 12406 2415 12407 0400 FLDA OBJ 12410 6207 12411 2400 FSUB WATER 12412 4604 12413 1040 JNE #2011 12414 3372 / PROP(BOTTLE)=1 12415 0400 FLDA BOTTLE 12416 4601 12417 0027 ATX 7 12420 0240 FLDA ONE 12421 6470 FSTA PROP-3,7 12422 3647 / PLACE(OBJ)=0 12423 0400 FLDA OBJ 12424 6207 12425 0027 ATX 7 12426 0002 FCLA 12427 6470 FSTA PLACE-3,7 12430 2027 / SPK=77 12431 0100 LDX 115,0 /77 12432 0115 12433 0030 XTA 0 12434 6221 FSTA SPK / IF(.NOT.(AT(PLANT).OR.AT(DOOR)))GOTO 2011 12435 0400 FLDA PLANT 12436 4612 12437 1120 JSA AT 12440 0634 12441 1041 JNE .+10 12442 2451 12443 0400 FLDA DOOR 12444 4540 12445 1120 JSA AT RALF V50A 24-JUL-20 PAGE 4-28 12446 0634 12447 1000 JEQ #2011 12450 3372 /C / IF(AT(DOOR))GOTO 9132 12451 0400 FLDA DOOR 12452 4540 12453 1120 JSA AT 12454 0634 12455 1041 JNE #9132 12456 2554 / SPK=112 12457 0100 LDX 160,0 /112 12460 0160 12461 0030 XTA 0 12462 6221 FSTA SPK / IF(OBJ.NE.WATER)GOTO 2011 12463 0400 FLDA OBJ 12464 6207 12465 2400 FSUB WATER 12466 4604 12467 1040 JNE #2011 12470 3372 / CALL PSPEAK(PLANT,PROP(PLANT)+1) 12471 0400 FLDA PLANT 12472 4612 12473 0027 ATX 7 12474 0470 FLDA PROP-3,7 12475 3647 12476 1240 FADD ONE 12477 6227 FSTA #TMP 12500 1130 JSR PSPEAK 12501 0000 12502 1031 JA .+6 12503 2510 12504 1030 JA PLANT 12505 4612 12506 1030 JA #TMP 12507 0130 / PROP(PLANT)=MOD(PROP(PLANT)+2,6) 12510 0400 FLDA PLANT 12511 4612 12512 0027 ATX 7 12513 0470 FLDA PROP-3,7 12514 3647 12515 1241 FADD TWO 12516 6227 FSTA #TMP 12517 1130 JSR MOD 12520 0000 12521 1031 JA .+6 12522 2527 12523 1030 JA #TMP 12524 0130 12525 1030 JA #LIT+6 12526 0202 12527 6470 FSTA PROP-3,7 RALF V50A 24-JUL-20 PAGE 4-29 12530 3647 / PROP(PLANT2)=PROP(PLANT)/2 12531 0400 FLDA PLANT2 12532 4615 12533 0027 ATX 7 12534 0400 FLDA PLANT 12535 4612 12536 0026 ATX 6 12537 0460 FLDA PROP-3,6 12540 3647 12541 3241 FDIV TWO 12542 1120 JSA #FIX 12543 0000 12544 6470 FSTA PROP-3,7 12545 3647 / K=NULL 12546 0400 FLDA NULL 12547 4730 12550 6400 FSTA K 12551 6215 / GOTO 8 12552 1030 JA #8 12553 5146 /C /9132 PROP(DOOR)=0 12554 0400 #9132, FLDA DOOR 12555 4540 12556 0027 ATX 7 12557 0002 FCLA 12560 6470 FSTA PROP-3,7 12561 3647 / IF(OBJ.EQ.OIL)PROP(DOOR)=1 12562 0400 FLDA OBJ 12563 6207 12564 2400 FSUB OIL 12565 4607 12566 1041 JNE .+10 12567 2576 12570 0400 FLDA DOOR 12571 4540 12572 0027 ATX 7 12573 0240 FLDA ONE 12574 6470 FSTA PROP-3,7 12575 3647 / SPK=113+PROP(DOOR) 12576 0400 FLDA DOOR 12577 4540 12600 0027 ATX 7 12601 0100 LDX 161,0 /113 12602 0161 12603 0030 XTA 0 12604 1470 FADD PROP-3,7 12605 3647 12606 6221 FSTA SPK / GOTO 2011 RALF V50A 24-JUL-20 PAGE 4-30 12607 1030 JA #2011 12610 3372 /C /C EAT. INTRANSITIVE: ASSUME FOOD IF PRESENT, ELSE ASK WHAT. TRANSITIVE: FOOD /C OK, SOME THINGS LOSE APPETITE, REST ARE RIDICULOUS. /C /8140 IF(.NOT.HERE(FOOD))GOTO 8000 12611 0400 #8140, FLDA FOOD 12612 4576 12613 1120 JSA HERE 12614 0667 12615 1000 JEQ #8000 12616 7010 /8142 CALL DSTROY(FOOD) 12617 1130 #8142, JSR DSTROY 12620 0000 12621 1031 JA .+4 12622 2625 12623 1030 JA FOOD 12624 4576 / SPK=72 12625 0100 LDX 110,0 /72 12626 0110 12627 0030 XTA 0 12630 6221 FSTA SPK / GOTO 2011 12631 1030 JA #2011 12632 3372 /C /9140 IF(OBJ.EQ.FOOD)GOTO 8142 12633 0400 #9140, FLDA OBJ 12634 6207 12635 2400 FSUB FOOD 12636 4576 12637 1001 JEQ #8142 12640 2617 / IF(OBJ.EQ.BIRD.OR.OBJ.EQ.SNAKE.OR.OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER / 1 .OR.OBJ.EQ.DWARF.OR.OBJ.EQ.DRAGON.OR.OBJ.EQ.TROLL / 2 .OR.OBJ.EQ.BEAR)SPK=71 12641 0400 FLDA OBJ 12642 6207 12643 2400 FSUB BIRD 12644 4535 12645 1001 JEQ #M78 12646 2721 12647 0400 FLDA OBJ 12650 6207 12651 2400 FSUB SNAKE 12652 4546 12653 1001 JEQ #M78 12654 2721 12655 0400 FLDA OBJ 12656 6207 12657 2400 FSUB CLAM RALF V50A 24-JUL-20 PAGE 4-31 12660 4557 12661 1001 JEQ #M78 12662 2721 12663 0400 FLDA OBJ 12664 6207 12665 2400 FSUB OYSTER 12666 4562 12667 1001 JEQ #M78 12670 2721 12671 0400 FLDA OBJ 12672 6207 12673 2400 FSUB DWARF 12674 4570 12675 1001 JEQ #M78 12676 2721 12677 0400 FLDA OBJ 12700 6207 12701 2400 FSUB DRAGON 12702 4626 12703 1001 JEQ #M78 12704 2721 12705 0400 FLDA OBJ 12706 6207 12707 2400 FSUB TROLL 12710 4634 12711 1001 JEQ #M78 12712 2721 12713 0400 FLDA OBJ 12714 6207 12715 2400 FSUB BEAR 12716 4642 12717 1040 JNE #2011 12720 3372 12721 0100 #M78, LDX 107,0 /71 12722 0107 12723 0030 XTA 0 12724 6221 FSTA SPK / GOTO 2011 12725 1030 JA #2011 12726 3372 /C /C DRINK. IF NO OBJECT, ASSUME WATER AND LOOK FOR IT HERE. IF WATER IS IN /C THE BOTTLE, DRINK THAT, ELSE MUST BE AT A WATER LOC, SO DRINK STREAM. /C /9150 IF(OBJ.EQ.0.AND.LIQLOC(LOC).NE.WATER.AND.(LIQ(0).NE.WATER / 1 .OR..NOT.HERE(BOTTLE)))GOTO 8000 12727 0400 #9150, FLDA OBJ 12730 6207 12731 1041 JNE #M79 12732 2755 12733 1120 JSA LIQLOC 12734 1026 12735 2400 FSUB WATER 12736 4604 12737 1001 JEQ #M79 RALF V50A 24-JUL-20 PAGE 4-32 12740 2755 12741 1120 JSA LIQ 12742 1001 12743 2400 FSUB WATER 12744 4604 12745 1040 JNE #8000 12746 7010 12747 0400 FLDA BOTTLE 12750 4601 12751 1120 JSA HERE 12752 0667 12753 1000 JEQ #8000 12754 7010 / IF(OBJ.NE.0.AND.OBJ.NE.WATER)SPK=110 12755 0400 #M79, FLDA OBJ 12756 6207 12757 1001 JEQ .+12 12760 2771 12761 0400 FLDA OBJ 12762 6207 12763 2400 FSUB WATER 12764 4604 12765 1001 JEQ .+4 12766 2771 12767 0311 FLDA #LIT+162 12770 6221 FSTA SPK / IF(SPK.EQ.110.OR.LIQ(0).NE.WATER.OR..NOT.HERE(BOTTLE))GOTO 2011 12771 0221 FLDA SPK 12772 2311 FSUB #LIT+162 12773 1000 JEQ #2011 12774 3372 12775 1120 JSA LIQ 12776 1001 12777 2400 FSUB WATER 13000 4604 13001 1040 JNE #2011 13002 3372 13003 0400 FLDA BOTTLE 13004 4601 13005 1120 JSA HERE 13006 0667 13007 1000 JEQ #2011 13010 3372 / PROP(BOTTLE)=1 13011 0400 FLDA BOTTLE 13012 4601 13013 0027 ATX 7 13014 0240 FLDA ONE 13015 6470 FSTA PROP-3,7 13016 3647 / PLACE(WATER)=0 13017 0400 FLDA WATER 13020 4604 13021 0027 ATX 7 13022 0002 FCLA 13023 6470 FSTA PLACE-3,7 RALF V50A 24-JUL-20 PAGE 4-33 13024 2027 / SPK=74 13025 0100 LDX 112,0 /74 13026 0112 13027 0030 XTA 0 13030 6221 FSTA SPK / GOTO 2011 13031 1030 JA #2011 13032 3372 /C /C RUB. YIELDS VARIOUS SNIDE REMARKS. /C /9160 IF(OBJ.NE.LAMP)SPK=76 13033 0400 #9160, FLDA OBJ 13034 6207 13035 2400 FSUB LAMP 13036 4513 13037 1000 JEQ #2011 13040 3372 13041 0100 LDX 114,0 /76 13042 0114 13043 0030 XTA 0 13044 6221 FSTA SPK / GOTO 2011 13045 1030 JA #2011 13046 3372 /C /C THROW. SAME AS DISCARD UNLESS AXE. THEN SAME AS ATTACK EXCEPT IGNORE BIRD, /C AND IF DWARF IS PRESENT THEN ONE MIGHT BE KILLED. (ONLY WAY TO DO SO!) /C AXE ALSO SPECIAL FOR DRAGON, BEAR, AND TROLL. TREASURES SPECIAL FOR TROLL. /C /9170 IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2 13047 0400 #9170, FLDA ROD2 13050 4527 13051 1120 JSA TOTING 13052 0622 13053 1001 JEQ #M81 13054 3075 13055 0400 FLDA OBJ 13056 6207 13057 2400 FSUB ROD 13060 4524 13061 1041 JNE #M81 13062 3075 13063 0400 FLDA ROD 13064 4524 13065 1120 JSA TOTING 13066 0622 13067 1041 JNE #M81 13070 3075 13071 0400 FLDA ROD2 13072 4527 13073 6400 FSTA OBJ 13074 6207 RALF V50A 24-JUL-20 PAGE 4-34 / IF(.NOT.TOTING(OBJ))GOTO 2011 13075 0400 #M81, FLDA OBJ 13076 6207 13077 1120 JSA TOTING 13100 0622 13101 1000 JEQ #2011 13102 3372 / IF(OBJ.GE.50.AND.OBJ.LE.MAXTRS.AND.AT(TROLL))GOTO 9178 13103 0400 FLDA OBJ 13104 6207 13105 2273 FSUB #LIT+110 13106 1051 JLT #M82 13107 3124 13110 0400 FLDA OBJ 13111 6207 13112 2400 FSUB MAXTRS 13113 6226 13114 1061 JGT #M82 13115 3124 13116 0400 FLDA TROLL 13117 4634 13120 1120 JSA AT 13121 0634 13122 1041 JNE #9178 13123 3376 / IF(OBJ.EQ.FOOD.AND.HERE(BEAR))GOTO 9177 13124 0400 #M82, FLDA OBJ 13125 6207 13126 2400 FSUB FOOD 13127 4576 13130 1041 JNE #M83 13131 3140 13132 0400 FLDA BEAR 13133 4642 13134 1120 JSA HERE 13135 0667 13136 1041 JNE #9177 13137 3370 / IF(OBJ.NE.AXE)GOTO 9020 13140 0400 #M83, FLDA OBJ 13141 6207 13142 2400 FSUB AXE 13143 4620 13144 1040 JNE #9020 13145 7523 / DO 9171 I=1,5 13146 0240 FLDA ONE 13147 6400 FSTA I 13150 0000 /C /C NEEDN'T CHECK DFLAG IF AXE IS HERE. /C / IF(DLOC(I).EQ.LOC)GOTO 9172 13151 0400 #H0132, FLDA I 13152 0000 RALF V50A 24-JUL-20 PAGE 4-35 13153 0027 ATX 7 13154 0470 FLDA DLOC-3,7 13155 4460 13156 2400 FSUB LOC 13157 0014 13160 1001 JEQ #9172 13161 3247 /9171 CONTINUE 13162 0400 #9171, FLDA I 13163 0000 13164 1240 FADD ONE 13165 6400 FSTA I 13166 0000 13167 2244 FSUB #LIT+3 13170 1021 JLE #H0132 13171 3151 / SPK=152 13172 0100 LDX 230,0 /152 13173 0230 13174 0030 XTA 0 13175 6221 FSTA SPK / IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)GOTO 9175 13176 0400 FLDA DRAGON 13177 4626 13200 1120 JSA AT 13201 0634 13202 1001 JEQ #M84 13203 3213 13204 0400 FLDA DRAGON 13205 4626 13206 0027 ATX 7 13207 0470 FLDA PROP-3,7 13210 3647 13211 1001 JEQ #9175 13212 3311 / SPK=158 13213 0100 #M84, LDX 236,0 /158 13214 0236 13215 0030 XTA 0 13216 6221 FSTA SPK / IF(AT(TROLL))GOTO 9175 13217 0400 FLDA TROLL 13220 4634 13221 1120 JSA AT 13222 0634 13223 1041 JNE #9175 13224 3311 / IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)GOTO 9176 13225 0400 FLDA BEAR 13226 4642 13227 1120 JSA HERE 13230 0667 13231 1001 JEQ #M85 13232 3242 13233 0400 FLDA BEAR RALF V50A 24-JUL-20 PAGE 4-36 13234 4642 13235 0027 ATX 7 13236 0470 FLDA PROP-3,7 13237 3647 13240 1001 JEQ #9176 13241 3335 / OBJ=0 13242 0002 #M85, FCLA 13243 6400 FSTA OBJ 13244 6207 / GOTO 9120 13245 1031 JA #9120 13246 1440 /C /9172 SPK=48 13247 0100 #9172, LDX 60,0 /48 13250 0060 13251 0030 XTA 0 13252 6221 FSTA SPK / IF(RND(3).EQ.0)GOTO 9175 13253 1130 JSR RND 13254 0000 13255 1031 JA .+4 13256 3261 13257 1030 JA THREE 13260 0171 13261 1001 JEQ #9175 13262 3311 / DSEEN(I)=.FALSE. 13263 0400 FLDA I 13264 0000 13265 0027 ATX 7 13266 0002 FCLA 13267 6470 FSTA DSEEN-3,7 13270 4433 / DLOC(I)=0 13271 6470 FSTA DLOC-3,7 13272 4460 / SPK=47 13273 0100 LDX 57,0 /47 13274 0057 13275 0030 XTA 0 13276 6221 FSTA SPK / DKILL=DKILL+1 13277 0240 FLDA ONE 13300 5400 FADDM DKILL 13301 5005 / IF(DKILL.EQ.1)SPK=149 13302 2240 FSUB ONE 13303 1041 JNE #9175 13304 3311 13305 0100 LDX 225,0 /149 13306 0225 13307 0030 XTA 0 13310 6221 FSTA SPK RALF V50A 24-JUL-20 PAGE 4-37 /9175 CALL RSPEAK(SPK) 13311 1130 #9175, JSR RSPEAK 13312 0000 13313 1031 JA .+4 13314 3317 13315 1030 JA SPK 13316 0106 / CALL DROP(AXE,LOC) 13317 1130 JSR DROP 13320 0000 13321 1031 JA .+6 13322 3327 13323 1030 JA AXE 13324 4620 13325 1030 JA LOC 13326 0014 / K=NULL 13327 0400 FLDA NULL 13330 4730 13331 6400 FSTA K 13332 6215 / GOTO 8 13333 1030 JA #8 13334 5146 /C /C THIS'LL TEACH HIM TO THROW THE AXE AT THE BEAR! /C /9176 SPK=164 13335 0100 #9176, LDX 244,0 /164 13336 0244 13337 0030 XTA 0 13340 6221 FSTA SPK / CALL DROP(AXE,LOC) 13341 1130 JSR DROP 13342 0000 13343 1031 JA .+6 13344 3351 13345 1030 JA AXE 13346 4620 13347 1030 JA LOC 13350 0014 / FIXED(AXE)=-1 13351 0400 FLDA AXE 13352 4620 13353 0027 ATX 7 13354 0372 FLDA MINUS1 13355 6470 FSTA FIXED-3,7 13356 2503 / PROP(AXE)=1 13357 0240 FLDA ONE 13360 6470 FSTA PROP-3,7 13361 3647 / CALL JUGGLE(BEAR) 13362 1130 JSR JUGGLE 13363 0000 RALF V50A 24-JUL-20 PAGE 4-38 / GOTO 2011 13364 1030 JA #2011 13365 3372 13366 1030 JA BEAR 13367 4642 /C /C BUT THROWING FOOD IS ANOTHER STORY. /C /9177 OBJ=BEAR 13370 0400 #9177, FLDA BEAR 13371 4642 13372 6400 FSTA OBJ 13373 6207 / GOTO 9210 13374 1031 JA #9210 13375 3756 /C /C SNARF A TREASURE FOR THE TROLL. /C /9178 SPK=159 13376 0100 #9178, LDX 237,0 /159 13377 0237 13400 0030 XTA 0 13401 6221 FSTA SPK / CALL DROP(OBJ,0) 13402 1130 JSR DROP 13403 0000 13404 1031 JA .+6 13405 3412 13406 1030 JA OBJ 13407 6207 13410 1030 JA ZERO 13411 0160 / CALL MOVE(TROLL,0) 13412 1130 JSR MOVE 13413 0000 13414 1031 JA .+6 13415 3422 13416 1030 JA TROLL 13417 4634 13420 1030 JA ZERO 13421 0160 / CALL MOVE(TROLL+100,0) 13422 0400 FLDA TROLL 13423 4634 13424 1307 FADD #LIT+154 13425 6227 FSTA #TMP 13426 1130 JSR MOVE 13427 0000 13430 1031 JA .+6 13431 3436 13432 1030 JA #TMP 13433 0130 13434 1030 JA ZERO RALF V50A 24-JUL-20 PAGE 4-39 13435 0160 / CALL DROP(TROLL2,PLAC(TROLL)) 13436 0400 FLDA TROLL 13437 4634 13440 0027 ATX 7 13441 0037 XTA 7 13442 4242 FMUL THREE 13443 0010 ALN 0 13444 0006 STARTD 13445 1356 FADD PPLAC 13446 6401 FSTA .+11 13447 3457 13450 0005 STARTF 13451 1130 JSR DROP 13452 0000 13453 1031 JA .+6 13454 3461 13455 1030 JA TROLL2 13456 4637 13457 1031 JA . 13460 3457 / CALL DROP(TROLL2+100,FIXD(TROLL)) 13461 0400 FLDA TROLL2 13462 4637 13463 1307 FADD #LIT+154 13464 6227 FSTA #TMP 13465 0400 FLDA TROLL 13466 4634 13467 0027 ATX 7 13470 0037 XTA 7 13471 4242 FMUL THREE 13472 0010 ALN 0 13473 0006 STARTD 13474 1353 FADD PFIXD 13475 6401 FSTA .+11 13476 3506 13477 0005 STARTF 13500 1130 JSR DROP 13501 0000 13502 1031 JA .+6 13503 3510 13504 1030 JA #TMP 13505 0130 13506 1031 JA . 13507 3506 / CALL JUGGLE(CHASM) 13510 1130 JSR JUGGLE 13511 0000 13512 1031 JA .+4 13513 3516 13514 1030 JA CHASM 13515 4631 / GOTO 2011 13516 1030 JA #2011 13517 3372 RALF V50A 24-JUL-20 PAGE 4-40 /C /C QUIT. INTRANSITIVE ONLY. VERIFY INTENT AND EXIT IF THAT'S WHAT HE WANTS. /C /8180 GAVEUP=YES(22,54,54) 13520 1130 #8180, JSR YES 13521 0000 13522 1031 JA .+10 13523 3532 13524 1030 JA #LIT+41 13525 0235 13526 1030 JA #LIT+113 13527 0307 13530 1030 JA #LIT+113 13531 0307 13532 6400 FSTA GAVEUP 13533 5035 /8185 IF(GAVEUP)GOTO 20000 13534 0400 #8185, FLDA GAVEUP 13535 5035 13536 1041 JNE #20000 13537 7020 / GOTO 2012 13540 1030 JA #2012 13541 3400 /C /C FIND. MIGHT BE CARRYING IT, OR IT MIGHT BE HERE. ELSE GIVE CAVEAT. /C /9190 IF(AT(OBJ).OR.(LIQ(0).EQ.OBJ.AND.AT(BOTTLE)) / 1 .OR.K.EQ.LIQLOC(LOC))SPK=94 13542 0400 #9190, FLDA OBJ 13543 6207 13544 1120 JSA AT 13545 0634 13546 1041 JNE #M86 13547 3572 13550 1120 JSA LIQ 13551 1001 13552 2400 FSUB OBJ 13553 6207 13554 1041 JNE #M87 13555 3564 13556 0400 FLDA BOTTLE 13557 4601 13560 1120 JSA AT 13561 0634 13562 1041 JNE #M86 13563 3572 13564 1120 #M87, JSA LIQLOC 13565 1026 13566 2400 FSUB K 13567 6215 13570 1041 JNE .+6 13571 3576 13572 0100 #M86, LDX 136,0 /94 13573 0136 RALF V50A 24-JUL-20 PAGE 4-41 13574 0030 XTA 0 13575 6221 FSTA SPK / DO 9192 I=1,5 13576 0240 FLDA ONE 13577 6400 FSTA I 13600 0000 /9192 IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2.AND.OBJ.EQ.DWARF)SPK=94 13601 0400 #9192, FLDA I 13602 0000 13603 0027 ATX 7 13604 0470 FLDA DLOC-3,7 13605 4460 13606 2400 FSUB LOC 13607 0014 13610 1041 JNE #M88 13611 3631 13612 0400 FLDA DFLAG 13613 4460 13614 2241 FSUB TWO 13615 1051 JLT #M88 13616 3631 13617 0400 FLDA OBJ 13620 6207 13621 2400 FSUB DWARF 13622 4570 13623 1041 JNE #M88 13624 3631 13625 0100 LDX 136,0 /94 13626 0136 13627 0030 XTA 0 13630 6221 FSTA SPK 13631 0400 #M88, FLDA I 13632 0000 13633 1240 FADD ONE 13634 6400 FSTA I 13635 0000 13636 2244 FSUB #LIT+3 13637 1021 JLE #9192 13640 3601 / IF(CLOSED)SPK=138 13641 0400 FLDA CLOSED 13642 5032 13643 1001 JEQ .+6 13644 3651 13645 0100 LDX 212,0 /138 13646 0212 13647 0030 XTA 0 13650 6221 FSTA SPK / IF(TOTING(OBJ))SPK=24 13651 0400 FLDA OBJ 13652 6207 13653 1120 JSA TOTING 13654 0622 13655 1000 JEQ #2011 13656 3372 13657 0260 FLDA #LIT+47 RALF V50A 24-JUL-20 PAGE 4-42 13660 6221 FSTA SPK / GOTO 2011 13661 1030 JA #2011 13662 3372 /C /C INVENTORY. IF OBJECT, TREAT SAME AS FIND. ELSE REPORT ON CURRENT BURDEN. /C /8200 SPK=98 13663 0100 #8200, LDX 142,0 /98 13664 0142 13665 0030 XTA 0 13666 6221 FSTA SPK / DO 8201 I=1,100 13667 0240 FLDA ONE 13670 6400 FSTA I 13671 0000 / IF(I.EQ.BEAR.OR..NOT.TOTING(I))GOTO 8201 13672 0400 #H0143, FLDA I 13673 0000 13674 2400 FSUB BEAR 13675 4642 13676 1001 JEQ #8201 13677 3734 13700 0400 FLDA I 13701 0000 13702 1120 JSA TOTING 13703 0622 13704 1001 JEQ #8201 13705 3734 / IF(SPK.EQ.98)CALL RSPEAK(99) 13706 0100 LDX 142,0 /98 13707 0142 13710 0030 XTA 0 13711 2221 FSUB SPK 13712 1041 JNE .+10 13713 3722 13714 1130 JSR RSPEAK 13715 0000 13716 1031 JA .+4 13717 3722 13720 1030 JA #LIT+151 13721 0345 / CALL PSPEAK(I,-1) 13722 1130 JSR PSPEAK 13723 0000 13724 1031 JA .+6 13725 3732 13726 1030 JA I 13727 0000 13730 1030 JA MINUS1 13731 0601 / SPK=0 13732 0002 FCLA 13733 6221 FSTA SPK RALF V50A 24-JUL-20 PAGE 4-43 /8201 CONTINUE 13734 0400 #8201, FLDA I 13735 0000 13736 1240 FADD ONE 13737 6400 FSTA I 13740 0000 13741 2307 FSUB #LIT+154 13742 1021 JLE #H0143 13743 3672 / IF(TOTING(BEAR))SPK=141 13744 0400 FLDA BEAR 13745 4642 13746 1120 JSA TOTING 13747 0622 13750 1000 JEQ #2011 13751 3372 13752 0325 FLDA #LIT+226 13753 6221 FSTA SPK / GOTO 2011 13754 1030 JA #2011 13755 3372 /C /C FEED. IF BIRD, NO SEED. SNAKE, DRAGON, TROLL: QUIP. IF DWARF, MAKE HIM /C MAD. BEAR, SPECIAL. /C /9210 IF(OBJ.NE.BIRD)GOTO 9212 13756 0400 #9210, FLDA OBJ 13757 6207 13760 2400 FSUB BIRD 13761 4535 13762 1041 JNE #9212 13763 3770 / SPK=100 13764 0307 FLDA #LIT+154 13765 6221 FSTA SPK / GOTO 2011 13766 1030 JA #2011 13767 3372 /C /9212 IF(OBJ.NE.SNAKE.AND.OBJ.NE.DRAGON.AND.OBJ.NE.TROLL)GOTO 9213 13770 0400 #9212, FLDA OBJ 13771 6207 13772 2400 FSUB SNAKE 13773 4546 13774 1001 JEQ #M89 13775 4012 13776 0400 FLDA OBJ 13777 6207 14000 2400 FSUB DRAGON 14001 4626 14002 1001 JEQ #M89 14003 4012 14004 0400 FLDA OBJ RALF V50A 24-JUL-20 PAGE 4-44 14005 6207 14006 2400 FSUB TROLL 14007 4634 14010 1041 JNE #9213 14011 4116 / SPK=102 14012 0100 #M89, LDX 146,0 /102 14013 0146 14014 0030 XTA 0 14015 6221 FSTA SPK / IF(OBJ.EQ.DRAGON.AND.PROP(DRAGON).NE.0)SPK=110 14016 0400 FLDA OBJ 14017 6207 14020 2400 FSUB DRAGON 14021 4626 14022 1041 JNE #M90 14023 4035 14024 0400 FLDA DRAGON 14025 4626 14026 0027 ATX 7 14027 0470 FLDA PROP-3,7 14030 3647 14031 1001 JEQ .+4 14032 4035 14033 0311 FLDA #LIT+162 14034 6221 FSTA SPK / IF(OBJ.EQ.TROLL)SPK=182 14035 0400 #M90, FLDA OBJ 14036 6207 14037 2400 FSUB TROLL 14040 4634 14041 1041 JNE .+6 14042 4047 14043 0100 LDX 266,0 /182 14044 0266 14045 0030 XTA 0 14046 6221 FSTA SPK / IF(OBJ.NE.SNAKE.OR.CLOSED.OR..NOT.HERE(BIRD))GOTO 2011 14047 0400 FLDA OBJ 14050 6207 14051 2400 FSUB SNAKE 14052 4546 14053 1040 JNE #2011 14054 3372 14055 0400 FLDA CLOSED 14056 5032 14057 1040 JNE #2011 14060 3372 14061 0400 FLDA BIRD 14062 4535 14063 1120 JSA HERE 14064 0667 14065 1000 JEQ #2011 14066 3372 / SPK=101 14067 0100 LDX 145,0 /101 RALF V50A 24-JUL-20 PAGE 4-45 14070 0145 14071 0030 XTA 0 14072 6221 FSTA SPK / CALL DSTROY(BIRD) 14073 1130 JSR DSTROY 14074 0000 14075 1031 JA .+4 14076 4101 14077 1030 JA BIRD 14100 4535 / PROP(BIRD)=0 14101 0400 FLDA BIRD 14102 4535 14103 0027 ATX 7 14104 0002 FCLA 14105 6470 FSTA PROP-3,7 14106 3647 / TALLY2=TALLY2+1 14107 0400 FLDA TALLY2 14110 4331 14111 1240 FADD ONE 14112 6400 FSTA TALLY2 14113 4331 / GOTO 2011 14114 1030 JA #2011 14115 3372 /C /9213 IF(OBJ.NE.DWARF)GOTO 9214 14116 0400 #9213, FLDA OBJ 14117 6207 14120 2400 FSUB DWARF 14121 4570 14122 1041 JNE #9214 14123 4143 / IF(.NOT.HERE(FOOD))GOTO 2011 14124 0400 FLDA FOOD 14125 4576 14126 1120 JSA HERE 14127 0667 14130 1000 JEQ #2011 14131 3372 / SPK=103 14132 0100 LDX 147,0 / 103 14133 0147 14134 0030 XTA 0 14135 6221 FSTA SPK / DFLAG=DFLAG+1 14136 0240 FLDA ONE 14137 5400 FADDM DFLAG 14140 4460 / GOTO 2011 14141 1030 JA #2011 14142 3372 /C RALF V50A 24-JUL-20 PAGE 4-46 /9214 IF(OBJ.NE.BEAR)GOTO 9215 14143 0400 #9214, FLDA OBJ 14144 6207 14145 2400 FSUB BEAR 14146 4642 14147 1041 JNE #9215 14150 4230 / IF(PROP(BEAR).EQ.0)SPK=102 14151 0400 FLDA BEAR 14152 4642 14153 0027 ATX 7 14154 0470 FLDA PROP-3,7 14155 3647 14156 1041 JNE .+6 14157 4164 14160 0100 LDX 146,0 /102 14161 0146 14162 0030 XTA 0 14163 6221 FSTA SPK / IF(PROP(BEAR).EQ.3)SPK=110 14164 0470 FLDA PROP-3,7 14165 3647 14166 2242 FSUB THREE 14167 1041 JNE .+4 14170 4173 14171 0311 FLDA #LIT+162 14172 6221 FSTA SPK / IF(.NOT.HERE(FOOD))GOTO 2011 14173 0400 FLDA FOOD 14174 4576 14175 1120 JSA HERE 14176 0667 14177 1000 JEQ #2011 14200 3372 / CALL DSTROY(FOOD) 14201 1130 JSR DSTROY 14202 0000 14203 1031 JA .+4 14204 4207 14205 1030 JA FOOD 14206 4576 / PROP(BEAR)=1 14207 0240 FLDA ONE 14210 6470 FSTA PROP-3,7 14211 3647 / FIXED(AXE)=0 14212 0400 FLDA AXE 14213 4620 14214 0027 ATX 7 14215 0002 FCLA 14216 6470 FSTA FIXED-3,7 14217 2503 / PROP(AXE)=0 14220 6470 FSTA PROP-3,7 14221 3647 / SPK=168 RALF V50A 24-JUL-20 PAGE 4-47 14222 0100 LDX 250,0 /168 14223 0250 14224 0030 XTA 0 14225 6221 FSTA SPK / GOTO 2011 14226 1030 JA #2011 14227 3372 /C /9215 SPK=14 14230 0100 #9215, LDX 16,0 /14 14231 0016 14232 0030 XTA 0 14233 6221 FSTA SPK / GOTO 2011 14234 1030 JA #2011 14235 3372 /C /C FILL. BOTTLE MUST BE EMPTY, AND SOME LIQUID AVAILABLE. (VASE IS NASTY.) /C /9220 IF(OBJ.EQ.VASE)GOTO 9222 14236 0400 #9220, FLDA OBJ 14237 6207 14240 2400 FSUB VASE 14241 4675 14242 1001 JEQ #9222 14243 4410 / IF(OBJ.NE.0.AND.OBJ.NE.BOTTLE)GOTO 2011 14244 0400 FLDA OBJ 14245 6207 14246 1001 JEQ #M91 14247 4256 14250 0400 FLDA OBJ 14251 6207 14252 2400 FSUB BOTTLE 14253 4601 14254 1040 JNE #2011 14255 3372 / IF(OBJ.EQ.0.AND..NOT.HERE(BOTTLE))GOTO 8000 14256 0400 #M91, FLDA OBJ 14257 6207 14260 1041 JNE #M92 14261 4270 14262 0400 FLDA BOTTLE 14263 4601 14264 1120 JSA HERE 14265 0667 14266 1000 JEQ #8000 14267 7010 / SPK=107 14270 0100 #M92, LDX 153,0 /107 14271 0153 14272 0030 XTA 0 14273 6221 FSTA SPK / IF(LIQLOC(LOC).EQ.0)SPK=106 RALF V50A 24-JUL-20 PAGE 4-48 14274 1120 JSA LIQLOC 14275 1026 14276 1041 JNE #M92A 14277 4304 14300 0100 LDX 152,0 /106 14301 0152 14302 0030 XTA 0 14303 6221 FSTA SPK / IF(LIQ(0).NE.0)SPK=105 14304 1120 #M92A, JSA LIQ 14305 1001 14306 1001 JEQ .+4 14307 4312 14310 0310 FLDA #LIT+157 14311 6221 FSTA SPK / IF(SPK.NE.107)GOTO 2011 14312 0100 LDX 153,0 /107 14313 0153 14314 0030 XTA 0 14315 2221 FSUB SPK 14316 1040 JNE #2011 14317 3372 / PROP(BOTTLE)=MOD(COND(LOC),4)/2*2 14320 0400 FLDA BOTTLE 14321 4601 14322 0027 ATX 7 14323 0400 FLDA LOC 14324 0014 14325 0026 ATX 6 14326 0036 XTA 6 14327 4242 FMUL THREE 14330 0010 ALN 0 14331 0006 STARTD 14332 1352 FADD PCOND 14333 6401 FSTA .+7 14334 4342 14335 0005 STARTF 14336 1130 JSR MOD 14337 0000 14340 1031 JA .+6 14341 4346 14342 1031 JA . 14343 4342 14344 1030 JA #LIT 14345 0174 14346 3241 FDIV TWO 14347 1120 JSA #FIX 14350 0000 14351 4241 FMUL TWO 14352 6470 FSTA PROP-3,7 14353 3647 / K=LIQ(0) 14354 1120 JSA LIQ 14355 1001 14356 6400 FSTA K 14357 6215 RALF V50A 24-JUL-20 PAGE 4-49 / IF(TOTING(BOTTLE))PLACE(K)=-1 14360 0400 FLDA BOTTLE 14361 4601 14362 1120 JSA TOTING 14363 0622 14364 1001 JEQ .+11 14365 4375 14366 0400 FLDA K 14367 6215 14370 0027 ATX 7 14371 0372 FLDA MINUS1 14372 6470 FSTA PLACE-3,7 14373 2027 / IF(K.EQ.OIL)SPK=108 14374 0400 FLDA K 14375 6215 14376 2400 FSUB OIL 14377 4607 14400 1040 JNE #2011 14401 3372 14402 0100 LDX 154,0 /108 14403 0154 14404 0030 XTA 0 14405 6221 FSTA SPK / GOTO 2011 14406 1030 JA #2011 14407 3372 /C /9222 SPK=29 14410 0100 #9222, LDX 35,0 /29 14411 0035 14412 0030 XTA 0 14413 6221 FSTA SPK / IF(LIQLOC(LOC).EQ.0)SPK=144 14414 1120 JSA LIQLOC 14415 1026 14416 1041 JNE .+6 14417 4424 14420 0100 LDX 220,0 /144 14421 0220 14422 0030 XTA 0 14423 6221 FSTA SPK / IF(LIQLOC(LOC).EQ.0.OR..NOT.TOTING(VASE))GOTO 2011 14424 1120 JSA LIQLOC 14425 1026 14426 1000 JEQ #2011 14427 3372 14430 0400 FLDA VASE 14431 4675 14432 1120 JSA TOTING 14433 0622 14434 1000 JEQ #2011 14435 3372 / CALL RSPEAK(145) 14436 1130 JSR RSPEAK RALF V50A 24-JUL-20 PAGE 4-50 14437 0000 14440 1031 JA .+4 14441 4444 14442 1030 JA #LIT+234 14443 0430 / PROP(VASE)=2 14444 0400 FLDA VASE 14445 4675 14446 0027 ATX 7 14447 0241 FLDA TWO 14450 6470 FSTA PROP-3,7 14451 3647 / FIXED(VASE)=-1 14452 0372 FLDA MINUS1 14453 6470 FSTA FIXED-3,7 14454 2503 / GOTO 9024 14455 1030 JA #9024 14456 7724 /C /C BLAST. NO EFFECT UNLESS YOU'VE GOT DYNAMITE, WHICH IS A NEAT TRICK! /C /9230 IF(PROP(ROD2).LT.0.OR..NOT.CLOSED)GOTO 2011 14457 0400 #9230, FLDA ROD2 14460 4527 14461 0027 ATX 7 14462 0470 FLDA PROP-3,7 14463 3647 14464 1050 JLT #2011 14465 3372 14466 0400 FLDA CLOSED 14467 5032 14470 1000 JEQ #2011 14471 3372 / BONUS=133 14472 0100 LDX 205,0 /133 14473 0205 14474 0030 XTA 0 14475 6400 FSTA BONUS 14476 5013 / IF(LOC.EQ.115)BONUS=134 14477 0400 FLDA LOC 14500 0014 14501 2312 FSUB #LIT+165 14502 1041 JNE .+7 14503 4511 14504 0100 LDX 206,0 /134 14505 0206 14506 0030 XTA 0 14507 6400 FSTA BONUS 14510 5013 / IF(HERE(ROD2))BONUS=135 14511 0400 FLDA ROD2 14512 4527 14513 1120 JSA HERE RALF V50A 24-JUL-20 PAGE 4-51 14514 0667 14515 1001 JEQ .+7 14516 4524 14517 0100 LDX 207,0 /135 14520 0207 14521 0030 XTA 0 14522 6400 FSTA BONUS 14523 5013 / CALL RSPEAK(BONUS) 14524 1130 JSR RSPEAK 14525 0000 14526 1031 JA .+4 14527 4532 14530 1030 JA BONUS 14531 5013 / GOTO 20000 14532 1031 JA #20000 14533 7020 /C /C SCORE. GO TO SCORING SECTION, WHICH WILL RETURN TO 8241 IF SCORNG IS TRUE. /C /8240 SCORNG=.TRUE. 14534 0240 #8240, FLDA ONE 14535 6400 FSTA SCORNG 14536 5040 / GOTO 20000 14537 1031 JA #20000 14540 7020 /C /8241 SCORNG=.FALSE. 14541 0002 #8241, FCLA 14542 6400 FSTA SCORNG 14543 5040 / TYPE 8243,SCORE,MXSCOR 14544 1130 JSR SIXOUT 14545 0000 14546 1031 JA .+10 14547 4556 14550 1032 JA #8243 14551 0055 14552 1030 JA ZERO 14553 0160 14554 1030 JA TWO 14555 0166 14556 3000 TRAP3 #WRITO 14557 0000 14560 1030 JA #LIT 14561 0174 14562 1032 JA #8243A 14563 0103 14564 0400 FLDA SCORE 14565 0017 14566 3000 TRAP3 #RSVO RALF V50A 24-JUL-20 PAGE 4-52 14567 0000 14570 3000 TRAP3 #RENDO 14571 0000 14572 1130 JSR SIXOUT 14573 0000 14574 1031 JA .+10 14575 4604 14576 1032 JA #8243B 14577 0110 14600 1030 JA ZERO 14601 0160 14602 1030 JA THREE 14603 0171 14604 3000 TRAP3 #WRITO 14605 0000 14606 1030 JA #LIT 14607 0174 14610 1032 JA #8243A 14611 0103 14612 0400 FLDA MXSCOR 14613 0014 14614 3000 TRAP3 #RSVO 14615 0000 14616 3000 TRAP3 #RENDO 14617 0000 14620 1130 JSR SIXOUT 14621 0000 14622 1031 JA .+10 14623 4632 14624 1032 JA #8243C 14625 0123 14626 1030 JA ZERO 14627 0160 14630 1030 JA ONE 14631 0163 /8243 FORMAT(' If you were to quit now, you would score',I4 / 1 ,' out of a possible',I4,'.') / GAVEUP=YES(143,54,54) 14632 1130 JSR YES 14633 0000 14634 1031 JA .+10 14635 4644 14636 1030 JA #LIT+231 14637 0425 14640 1030 JA #LIT+113 14641 0307 14642 1030 JA #LIT+113 14643 0307 14644 6400 FSTA GAVEUP 14645 5035 / GOTO 8185 14646 1031 JA #8185 RALF V50A 24-JUL-20 PAGE 4-53 14647 3534 /C /C FEE FIE FOE FOO (AND FUM). ADVANCE TO NEXT STATE IF GIVEN IN PROPER ORDER. /C LOOK UP WD1 IN SECTION 3 OF VOCAB TO DETERMINE WHICH WORD WE'VE GOT. LAST /C WORD ZIPS THE EGGS BACK TO THE GIANT ROOM (UNLESS ALREADY THERE). /C /8250 CALL VOCAB(WD1,WD1A,3,K) 14650 1130 #8250, JSR VOCAB 14651 0000 14652 1031 JA .+6 14653 4660 14654 1030 JA WD1 14655 0111 14656 1030 JA THREE 14657 0171 14660 6400 FSTA K 14661 6215 / SPK=42 14662 0100 LDX 52,0 /42 14663 0052 14664 0030 XTA 0 14665 6221 FSTA SPK / IF(FOOBAR.EQ.1-K)GOTO 8252 14666 0240 FLDA ONE 14667 2400 FSUB K 14670 6215 14671 2400 FSUB FOOBAR 14672 5010 14673 1001 JEQ #8252 14674 4707 / IF(FOOBAR.NE.0)SPK=151 14675 0400 FLDA FOOBAR 14676 5010 14677 1000 JEQ #2011 14700 3372 14701 0100 LDX 227,0 /151 14702 0227 14703 0030 XTA 0 14704 6221 FSTA SPK / GOTO 2011 14705 1030 JA #2011 14706 3372 /C /8252 FOOBAR=K 14707 0400 #8252, FLDA K 14710 6215 14711 6400 FSTA FOOBAR 14712 5010 / IF(K.NE.4)GOTO 2009 14713 2243 FSUB #LIT 14714 1040 JNE #2009 14715 3364 / FOOBAR=0 14716 0002 FCLA RALF V50A 24-JUL-20 PAGE 4-54 14717 6400 FSTA FOOBAR 14720 5010 / IF(PLACE(EGGS).EQ.PLAC(EGGS) / 1 .OR.(TOTING(EGGS).AND.LOC.EQ.PLAC(EGGS)))GOTO 2011 14721 0400 FLDA EGGS 14722 4667 14723 0027 ATX 7 14724 0470 FLDA PLACE-3,7 14725 2027 14726 2470 FSUB PLAC-3,7 14727 1061 14730 1000 JEQ #2011 14731 3372 14732 0400 FLDA EGGS 14733 4667 14734 1120 JSA TOTING 14735 0622 14736 1001 JEQ #M93 14737 4746 14740 0400 FLDA LOC 14741 0014 14742 2470 FSUB PLAC-3,7 14743 1061 14744 1000 JEQ #2011 14745 3372 /C /C BRING BACK TROLL IF WE STEAL THE EGGS BACK FROM HIM BEFORE CROSSING. /C / IF(PLACE(EGGS).EQ.0.AND.PLACE(TROLL).EQ.0.AND.PROP(TROLL).EQ.0) / 1 PROP(TROLL)=1 14746 0470 #M93, FLDA PLACE-3,7 14747 2027 14750 1041 JNE #M94 14751 4770 14752 0400 FLDA TROLL 14753 4634 14754 0026 ATX 6 14755 0460 FLDA PLACE-3,6 14756 2027 14757 1041 JNE #M94 14760 4770 14761 0460 FLDA PROP-3,6 14762 3647 14763 1041 JNE #M94 14764 4770 14765 0240 FLDA ONE 14766 6460 FSTA PROP-3,6 14767 3647 / K=2 14770 0241 #M94, FLDA TWO 14771 6400 FSTA K 14772 6215 / IF(HERE(EGGS))K=1 14773 0400 FLDA EGGS 14774 4667 14775 1120 JSA HERE RALF V50A 24-JUL-20 PAGE 4-55 14776 0667 14777 1001 JEQ .+5 15000 5004 15001 0240 FLDA ONE 15002 6400 FSTA K 15003 6215 / IF(LOC.EQ.PLAC(EGGS))K=0 15004 0400 FLDA LOC 15005 0014 15006 2470 FSUB PLAC-3,7 15007 1061 15010 1041 JNE .+5 15011 5015 15012 0002 FCLA 15013 6400 FSTA K 15014 6215 / CALL MOVE(EGGS,PLAC(EGGS)) 15015 0037 XTA 7 15016 4242 FMUL THREE 15017 0010 ALN 0 15020 0006 STARTD 15021 1356 FADD PPLAC 15022 6401 FSTA .+11 15023 5033 15024 0005 STARTF 15025 1130 JSR MOVE 15026 0000 15027 1031 JA .+6 15030 5035 15031 1030 JA EGGS 15032 4667 15033 1031 JA . 15034 5033 / CALL PSPEAK(EGGS,K) 15035 1130 JSR PSPEAK 15036 0000 15037 1031 JA .+6 15040 5045 15041 1030 JA EGGS 15042 4667 15043 1030 JA K 15044 6215 / GOTO 2012 15045 1030 JA #2012 15046 3400 /C /C BRIEF. INTRANSITIVE ONLY. SUPPRESS LONG DESCRIPTIONS AFTER FIRST TIME. /C /8260 SPK=156 15047 0100 #8260, LDX 234,0 /156 15050 0234 15051 0030 XTA 0 15052 6221 FSTA SPK / ABBNUM=10000 15053 0351 FLDA #LIT+322 RALF V50A 24-JUL-20 PAGE 4-56 15054 6400 FSTA ABBNUM 15055 4774 / DETAIL=3 15056 0242 FLDA THREE 15057 6400 FSTA DETAIL 15060 4771 / GOTO 2011 15061 1030 JA #2011 15062 3372 /C /C READ. MAGAZINES IN DWARVISH, MESSAGE WE'VE SEEN, AND . . . OYSTER? /C /8270 IF(HERE(MAGZIN))OBJ=MAGZIN 15063 0400 #8270, FLDA MAGZIN 15064 4565 15065 1120 JSA HERE 15066 0667 15067 1001 JEQ .+6 15070 5075 15071 0400 FLDA MAGZIN 15072 4565 15073 6400 FSTA OBJ 15074 6207 / IF(HERE(TABLET))OBJ=OBJ*100+TABLET 15075 0400 FLDA TABLET 15076 4554 15077 1120 JSA HERE 15100 0667 15101 1001 JEQ .+11 15102 5112 15103 0400 FLDA OBJ 15104 6207 15105 4307 FMUL #LIT+154 15106 1400 FADD TABLET 15107 4554 15110 6400 FSTA OBJ 15111 6207 / IF(HERE(MESSAG))OBJ=OBJ*100+MESSAG 15112 0400 FLDA MESSAGE 15113 4645 15114 1120 JSA HERE 15115 0667 15116 1001 JEQ .+11 15117 5127 15120 0400 FLDA OBJ 15121 6207 15122 4307 FMUL #LIT+154 15123 1400 FADD MESSAG 15124 4645 15125 6400 FSTA OBJ 15126 6207 / IF(CLOSED.AND.TOTING(OYSTER))OBJ=OYSTER 15127 0400 FLDA OYSTER 15130 4562 15131 1120 JSA TOTING RALF V50A 24-JUL-20 PAGE 4-57 15132 0622 15133 4400 FMUL CLOSED 15134 5032 15135 1001 JEQ .+6 15136 5143 15137 0400 FLDA OYSTER 15140 4562 15141 6400 FSTA OBJ 15142 6207 / IF(OBJ.GT.100.OR.OBJ.EQ.0.OR.DARK(0))GOTO 8000 15143 0400 FLDA OBJ 15144 6207 15145 2307 FSUB #LIT+154 15146 1060 JGT #8000 15147 7010 15150 0400 FLDA OBJ 15151 6207 15152 1000 JEQ #8000 15153 7010 15154 1120 JSA DARK 15155 0711 15156 1040 JNE #8000 15157 7010 /C /9270 IF(DARK(0))GOTO 5190 15160 1120 #9270, JSA DARK 15161 0711 15162 1040 JNE #5190 15163 5103 / IF(OBJ.EQ.MAGZIN)SPK=190 15164 0400 FLDA OBJ 15165 6207 15166 2400 FSUB MAGZIN 15167 4565 15170 1041 JNE .+6 15171 5176 15172 0100 LDX 276,0 /190 15173 0276 15174 0030 XTA 0 15175 6221 FSTA SPK / IF(OBJ.EQ.TABLET)SPK=196 15176 0400 FLDA OBJ 15177 6207 15200 2400 FSUB TABLET 15201 4554 15202 1041 JNE .+6 15203 5210 15204 0100 LDX 304,0 /196 15205 0304 15206 0030 XTA 0 15207 6221 FSTA SPK / IF(OBJ.EQ.MESSAG)SPK=191 15210 0400 FLDA OBJ 15211 6207 15212 2400 FSUB MESSAG RALF V50A 24-JUL-20 PAGE 4-58 15213 4645 15214 1041 JNE .+6 15215 5222 15216 0100 LDX 277,0 /191 15217 0277 15220 0030 XTA 0 15221 6221 FSTA SPK / IF(OBJ.EQ.OYSTER.AND.HINTED(2).AND.TOTING(OYSTER))SPK=194 15222 0400 FLDA OBJ 15223 6207 15224 2400 FSUB OYSTER 15225 4562 15226 1041 JNE #M95 15227 5250 15230 0241 FLDA TWO 15231 0027 ATX 7 15232 0470 FLDA HINTED-3,7 15233 6226 15234 1001 JEQ #M95 15235 5250 15236 0400 FLDA OYSTER 15237 4562 15240 1120 JSA TOTING 15241 0622 15242 1001 JEQ .+6 15243 5250 15244 0100 LDX 302,0 /194 15245 0302 15246 0030 XTA 0 15247 6221 FSTA SPK / IF(OBJ.NE.OYSTER.OR.HINTED(2).OR..NOT.TOTING(OYSTER) / 1 .OR..NOT.CLOSED)GOTO 2011 15250 0400 #M95, FLDA OBJ 15251 6207 15252 2400 FSUB OYSTER 15253 4562 15254 1040 JNE #2011 15255 3372 15256 0470 FLDA HINTED-3,7 15257 6226 15260 1040 JNE #2011 15261 3372 15262 0400 FLDA OYSTER 15263 4562 15264 1120 JSA TOTING 15265 0622 15266 1000 JEQ #2011 15267 3372 15270 0400 FLDA CLOSED 15271 5032 15272 1000 JEQ #2011 15273 3372 / HINTED(2)=YES(192,193,54) 15274 0241 FLDA TWO 15275 0027 ATX 7 15276 1130 JSR YES RALF V50A 24-JUL-20 PAGE 4-59 15277 0000 15300 1031 JA .+10 15301 5310 15302 1030 JA #LIT+267 15303 0463 15304 1030 JA #LIT+272 15305 0466 15306 1030 JA #LIT+113 15307 0307 15310 6470 FSTA HINTED-3,7 15311 6226 / GOTO 2012 15312 1030 JA #2012 15313 3400 /C /C BREAK. ONLY WORKS FOR MIRROR IN REPOSITORY AND, OF COURSE, THE VASE. /C /9280 IF(OBJ.EQ.MIRROR)SPK=148 15314 0400 #9280, FLDA OBJ 15315 6207 15316 2400 FSUB MIRROR 15317 4623 15320 1041 JNE .+6 15321 5326 15322 0100 LDX 224,0 /148 15323 0224 15324 0030 XTA 0 15325 6221 FSTA SPK / IF(OBJ.EQ.VASE.AND.PROP(VASE).EQ.0)GOTO 9282 15326 0400 FLDA OBJ 15327 6207 15330 2400 FSUB VASE 15331 4675 15332 1041 JNE #M96 15333 5343 15334 0400 FLDA VASE 15335 4675 15336 0027 ATX 7 15337 0470 FLDA PROP-3,7 15340 3647 15341 1001 JEQ #9282 15342 5363 / IF(OBJ.NE.MIRROR.OR..NOT.CLOSED)GOTO 2011 15343 0400 #M96, FLDA OBJ 15344 6207 15345 2400 FSUB MIRROR 15346 4623 15347 1040 JNE #2011 15350 3372 15351 0400 FLDA CLOSED 15352 5032 15353 1000 JEQ #2011 15354 3372 / CALL RSPEAK(197) 15355 1130 JSR RSPEAK RALF V50A 24-JUL-20 PAGE 4-60 15356 0000 / GOTO 19000 15357 1031 JA #19000 15360 7012 15361 1030 JA #LIT+275 15362 0471 /C /9282 SPK=198 15363 0100 #9282, LDX 306,0 /198 15364 0306 15365 0030 XTA 0 15366 6221 FSTA SPK / IF(TOTING(VASE))CALL DROP(VASE,LOC) 15367 0400 FLDA VASE 15370 4675 15371 1120 JSA TOTING 15372 0622 15373 1001 JEQ .+12 15374 5405 15375 1130 JSR DROP 15376 0000 15377 1031 JA .+6 15400 5405 15401 1030 JA VASE 15402 4675 15403 1030 JA LOC 15404 0014 / PROP(VASE)=2 15405 0400 FLDA VASE 15406 4675 15407 0027 ATX 7 15410 0241 FLDA TWO 15411 6470 FSTA PROP-3,7 15412 3647 / FIXED(VASE)=-1 15413 0372 FLDA MINUS1 15414 6470 FSTA FIXED-3,7 15415 2503 / GOTO 2011 15416 1030 JA #2011 15417 3372 /C /C WAKE. ONLY USE IS TO DISTURB THE DWARVES. /C /9290 IF(OBJ.NE.DWARF.OR..NOT.CLOSED)GOTO 2011 15420 0400 #9290, FLDA OBJ 15421 6207 15422 2400 FSUB DWARF 15423 4570 15424 1040 JNE #2011 15425 3372 15426 0400 FLDA CLOSED 15427 5032 15430 1000 JEQ #2011 RALF V50A 24-JUL-20 PAGE 4-61 15431 3372 / CALL RSPEAK(199) 15432 1130 JSR RSPEAK 15433 0000 / GOTO 19000 15434 1031 JA #19000 15435 7012 15436 1030 JA #LIT+300 15437 0474 /C /C SUSPEND. SAVE THE WORLD. /C /8300 CALL SAVEGM(.TRUE.,I) / GOTO 2012 15440 1130 #8300, JSR SAVEGM 15441 0000 15442 1030 JA #2012 15443 3400 15444 1030 JA ONE 15445 0163 15446 1030 JA I 15447 0000 /C /C HOURS. JUST A JOKE. /C /8310 CALL RSPEAK(201) 15450 1130 #8310, JSR RSPEAK 15451 0000 / GOTO 2012 15452 1030 JA #2012 15453 3400 15454 1030 JA #LIT+303 15455 0477 /C /C RESUME. RESTORE THE WORLD. /C /8320 CALL RSTRGM(.TRUE.,I) / GO TO 2012 15456 1130 #8320, JSR RSTRGM 15457 0000 15460 1030 JA #2012 15461 3400 15462 1030 JA ONE 15463 0163 15464 1030 JA I 15465 0000 /C HINTS /C /C COME HERE IF HE'S BEEN LONG ENOUGH AT REQUIRED LOC(S) FOR SOME UNUSED HINT. /C HINT NUMBER IS IN VARIABLE "HINT". BRANCH TO QUICK TEST FOR ADDITIONAL RALF V50A 24-JUL-20 PAGE 4-62 /C CONDITIONS, THEN COME BACK TO DO NEAT STUFF. GOTO 40010 IF CONDITIONS ARE /C MET AND WE WANT TO OFFER THE HINT. GOTO 40020 TO CLEAR HINTLC BACK TO ZERO, /C 40030 TO TAKE NO ACTION YET. /C /40000 GOTO (40400,40500,40600,40700,40800,40900)(HINT-3) /C CAVE BIRD SNAKE MAZE DARK WITT 15466 0212 #40000, FLDA HINT 15467 2242 FSUB THREE 15470 0021 ATX 1 15471 0006 STARTD 15472 0411 FLDA .+2,1 15473 5474 15474 0005 STARTF 15475 0007 JAC 15476 1031 JA #40400 15477 5703 15500 1031 JA #40500 15501 5722 15502 1031 JA #40600 15503 5750 15504 1031 JA #40700 15505 5766 15506 1031 JA #40800 15507 6022 15510 1031 JA #40010 15511 5520 / CALL BUG(27) 15512 1130 JSR BUG 15513 0000 15514 1031 JA .+4 15515 5520 15516 1030 JA #LIT+60 15517 0254 /C /40010 HINTLC(HINT)=0 15520 0212 #40010, FLDA HINT 15521 0027 ATX 7 15522 0002 FCLA 15523 6470 FSTA HINTLC-3,7 15524 4331 / IF(.NOT.YES(HINTS(HINT,3),0,54))GOTO 2602 15525 0370 FLDA #LIT+377 15526 1212 FADD HINT 15527 0027 ATX 7 15530 0037 XTA 7 15531 4242 FMUL THREE 15532 0010 ALN 0 15533 0006 STARTD 15534 1354 FADD PHINTS 15535 6401 FSTA .+7 15536 5544 15537 0005 STARTF 15540 1130 JSR YES 15541 0000 15542 1031 JA .+10 15543 5552 RALF V50A 24-JUL-20 PAGE 4-63 15544 1031 JA . 15545 5544 15546 1030 JA ZERO 15547 0160 15550 1030 JA #LIT+113 15551 0307 15552 1000 JEQ #2602 15553 3446 / TYPE 40012,HINTS(HINT,2) 15554 1130 JSR SIXOUT 15555 0000 15556 1031 JA .+10 15557 5566 15560 1032 JA #40012 15561 0124 15562 1030 JA ZERO 15563 0160 15564 1030 JA TWO 15565 0166 15566 3000 TRAP3 #WRITO 15567 0000 15570 1030 JA #LIT 15571 0174 15572 1032 JA #4001A 15573 0161 15574 0241 FLDA TWO 15575 4255 FMUL #LIT+36 15576 1212 FADD HINT 15577 0027 ATX 7 15600 0470 FLDA HINTS-0077,7 15601 3170 15602 3000 TRAP3 #RSVO 15603 0000 15604 3000 TRAP3 #RENDO 15605 0000 15606 1130 JSR SIXOUT 15607 0000 15610 1031 JA .+10 15611 5620 15612 1032 JA #4001B 15613 0166 15614 1030 JA ZERO 15615 0160 15616 1030 JA ONE 15617 0163 /40012 FORMAT(' I am prepared to give you a hint, but it will cost you', / 1 I2,' points.') / HINTED(HINT)=YES(175,HINTS(HINT,4),54) 15620 0212 FLDA HINT 15621 0027 ATX 7 15622 0243 FLDA #LIT 15623 4255 FMUL #LIT+36 15624 1212 FADD HINT RALF V50A 24-JUL-20 PAGE 4-64 15625 0026 ATX 6 15626 0036 XTA 6 15627 4242 FMUL THREE 15630 0010 ALN 0 15631 0006 STARTD 15632 1354 FADD PHINTS 15633 6401 FSTA .+11 15634 5644 15635 0005 STARTF 15636 1130 JSR YES 15637 0000 15640 1031 JA .+10 15641 5650 15642 1030 JA #LIT+250 15643 0444 15644 1031 JA . 15645 5644 15646 1030 JA #LIT+113 15647 0307 15650 6470 FSTA HINTED-3,7 15651 6226 / IF(HINTED(HINT).AND.LIMIT.GT.30)LIMIT=LIMIT+30*HINTS(HINT,2) 15652 1001 JEQ #40020 15653 5674 15654 0400 FLDA LIMIT 15655 0011 15656 2264 FSUB #LIT+63 15657 1021 JLE #40020 15660 5674 15661 0241 FLDA TWO 15662 4255 FMUL #LIT+36 15663 1212 FADD HINT 15664 0026 ATX 6 15665 0264 FLDA #LIT+63 15666 4460 FMUL HINTS-0077,6 15667 3170 15670 1400 FADD LIMIT 15671 0011 15672 6400 FSTA LIMIT 15673 0011 /40020 HINTLC(HINT)=0 15674 0212 #40020, FLDA HINT 15675 0027 ATX 7 15676 0002 FCLA 15677 6470 FSTA HINTLC-3,7 15700 4331 /40030 GOTO 2602 15701 1030 #40030, JA #2602 15702 3446 /C /C NOW FOR THE QUICK TESTS. SEE DATABASE DESCRIPTION FOR ONE-LINE NOTES. /C /40400 IF(PROP(GRATE).EQ.0.AND..NOT.HERE(KEYS))GOTO 40010 15703 0400 #40400, FLDA GRATE 15704 4516 RALF V50A 24-JUL-20 PAGE 4-65 15705 0027 ATX 7 15706 0470 FLDA PROP-3,7 15707 3647 15710 1041 JNE #40020 15711 5674 15712 0400 FLDA KEYS 15713 4510 15714 1120 JSA HERE 15715 0667 15716 1001 JEQ #40010 15717 5520 / GOTO 40020 15720 1031 JA #40020 15721 5674 /40500 IF(HERE(BIRD).AND.TOTING(ROD).AND.OBJ.EQ.BIRD)GOTO 40010 15722 0400 #40500, FLDA BIRD 15723 4535 15724 1120 JSA HERE 15725 0667 15726 1000 JEQ #2602 15727 3446 15730 0400 FLDA ROD 15731 4524 15732 1120 JSA TOTING 15733 0622 15734 1000 JEQ #2602 15735 3446 15736 0400 FLDA OBJ 15737 6207 15740 1001 JEQ #40010 15741 5520 15742 2400 FSUB BIRD 15743 4535 15744 1001 JEQ #40010 15745 5520 / GOTO 40030 15746 1030 JA #2602 15747 3446 /C /40600 IF(HERE(SNAKE).AND..NOT.HERE(BIRD))GOTO 40010 15750 0400 #40600, FLDA SNAKE 15751 4546 15752 1120 JSA HERE 15753 0667 15754 1001 JEQ #40020 15755 5674 15756 0400 FLDA BIRD 15757 4535 15760 1120 JSA HERE 15761 0667 15762 1001 JEQ #40010 15763 5520 / GOTO 40020 15764 1031 JA #40020 RALF V50A 24-JUL-20 PAGE 4-66 15765 5674 /C /40700 IF(ATLOC(LOC).EQ.0.AND.ATLOC(OLDLOC).EQ.0 / 1 .AND.ATLOC(OLDLC2).EQ.0.AND.HOLDNG.GT.1)GOTO 40010 15766 0400 #40700, FLDA LOC 15767 0014 15770 0027 ATX 7 15771 0477 FLDA ATLOC-3,7 15772 7775 15773 1041 JNE #40020 15774 5674 15775 0400 FLDA OLDLOC 15776 0011 15777 0026 ATX 6 16000 0467 FLDA ATLOC-3,6 16001 7775 16002 1041 JNE #40020 16003 5674 16004 0400 FLDA OLDLC2 16005 0006 16006 0025 ATX 5 16007 0457 FLDA ATLOC-3,5 16010 7775 16011 1041 JNE #40020 16012 5674 16013 0400 FLDA HOLDNG 16014 3162 16015 2240 FSUB ONE 16016 1061 JGT #40010 16017 5520 / GOTO 40020 16020 1031 JA #40020 16021 5674 /C /40800 IF(PROP(EMRALD).NE.-1.AND.PROP(PYRAM).EQ.-1)GOTO 40010 / GOTO 40020 16022 0400 #40800, FLDA EMRALD 16023 4700 16024 0027 ATX 7 16025 0372 FLDA MINUS1 16026 2470 FSUB PROP-3,7 16027 3647 16030 1001 JEQ #40020 16031 5674 16032 0400 FLDA PYRAM 16033 4703 16034 0026 ATX 6 16035 0372 FLDA MINUS1 16036 2460 FSUB PROP-3,6 16037 3647 16040 1001 JEQ #40010 16041 5520 / GOTO 40020 16042 1031 JA #40020 RALF V50A 24-JUL-20 PAGE 4-67 16043 5674 /C /40900 JA #40010 /#40900 JA 40010 /C CAVE CLOSING AND SCORING /C /C /C THESE SECTIONS HANDLE THE CLOSING OF THE CAVE. THE CAVE CLOSES "CLOCK1" /C TURNS AFTER THE LAST TREASURE HAS BEEN LOCATED (INCLUDING THE PIRATE'S /C CHEST, WHICH MAY OF COURSE NEVER SHOW UP). NOTE THAT THE TREASURES NEED NOT /C HAVE BEEN TAKEN YET, JUST LOCATED. HENCE CLOCK1 MUST BE LARGE ENOUGH TO GET /C OUT OF THE CAVE (IT ONLY TICKS WHILE INSIDE THE CAVE). WHEN IT HITS ZERO, /C WE BRANCH TO 10000 TO START CLOSING THE CAVE, AND THEN SIT BACK AND WAIT FOR /C HIM TO TRY TO GET OUT. IF HE DOESN'T WITHIN CLOCK2 TURNS, WE CLOSE THE /C CAVE; IF HE DOES TRY, WE ASSUME HE PANICS, AND GIVE HIM A FEW ADDITIONAL /C TURNS TO GET FRANTIC BEFORE WE CLOSE. WHEN CLOCK2 HITS ZERO, WE BRANCH TO /C 11000 TO TRANSPORT HIM INTO THE FINAL PUZZLE. NOTE THAT THE PUZZLE DEPENDS /C UPON ALL SORTS OF RANDOM THINGS. FOR INSTANCE, THERE MUST BE NO WATER OR /C OIL, SINCE THERE ARE BEANSTALKS WHICH WE DON'T WANT TO BE ABLE TO WATER, /C SINCE THE CODE CAN'T HANDLE IT. ALSO, WE CAN HAVE NO KEYS, SINCE THERE IS A /C GRATE (HAVING MOVED THE FIXED OBJECT!) THERE SEPARATING HIM FROM ALL THE /C TREASURES. MOST OF THESE PROBLEMS ARISE FROM THE USE OF NEGATIVE PROP /C NUMBERS TO SUPPRESS THE OBJECT DESCRIPTIONS UNTIL HE'S ACTUALLY MOVED THE /C OBJECTS. /C /C WHEN THE FIRST WARNING COMES, WE LOCK THE GRATE, DESTROY THE BRIDGE, KILL /C ALL THE DWARVES (AND THE PIRATE), REMOVE THE TROLL AND BEAR (UNLESS DEAD), /C AND SET "CLOSNG" TO TRUE. LEAVE THE DRAGON; TOO MUCH TROUBLE TO MOVE IT. /C FROM NOW UNTIL CLOCK2 RUNS OUT, HE CANNOT UNLOCK THE GRATE, MOVE TO ANY /C LOCATION OUTSIDE THE CAVE (LOC<9), OR CREATE THE BRIDGE. NOR CAN HE BE /C RESURRECTED IF HE DIES. NOTE THAT THE SNAKE IS ALREADY GONE, SINCE HE GOT /C TO THE TREASURE ACCESSIBLE ONLY VIA THE HALL OF THE MT. KING. ALSO, HE'S /C BEEN IN GIANT ROOM (TO GET EGGS), SO WE CAN REFER TO IT. ALSO ALSO, HE'S /C GOTTEN THE PEARL, SO WE KNOW THE BIVALVE IS AN OYSTER. *AND*, THE DWARVES /C MUST HAVE BEEN ACTIVATED, SINCE WE'VE FOUND CHEST. /C /10000 PROP(GRATE)=0 16044 0400 #10000, FLDA GRATE 16045 4516 16046 0027 ATX 7 16047 0002 FCLA 16050 6470 FSTA PROP-3,7 16051 3647 / PROP(FISSUR)=0 16052 0400 FLDA FISSUR 16053 4551 16054 0027 ATX 7 16055 0002 FCLA 16056 6470 FSTA PROP-3,7 16057 3647 / DO 10010 I=1,6 16060 0240 FLDA ONE 16061 6400 FSTA I 16062 0000 RALF V50A 24-JUL-20 PAGE 4-68 / DSEEN(I)=.FALSE. 16063 0400 #H0204, FLDA I 16064 0000 16065 0027 ATX 7 16066 0002 FCLA 16067 6470 FSTA DSEEN-3,7 16070 4433 /10010 DLOC(I)=0 /#10010, FLDA I / ATX 7 / FCLA 16071 6470 FSTA DLOC-3,7 16072 4460 16073 0400 FLDA I 16074 0000 16075 1240 FADD ONE 16076 6400 FSTA I 16077 0000 16100 2245 FSUB #LIT+6 16101 1021 JLE #H0204 16102 6063 / CALL MOVE(TROLL,0) 16103 1130 JSR MOVE 16104 0000 16105 1031 JA .+6 16106 6113 16107 1030 JA TROLL 16110 4634 16111 1030 JA ZERO 16112 0160 / CALL MOVE(TROLL+100,0) 16113 0400 FLDA TROLL 16114 4634 16115 1307 FADD #LIT+154 16116 6227 FSTA #TMP 16117 1130 JSR MOVE 16120 0000 16121 1031 JA .+6 16122 6127 16123 1030 JA #TMP 16124 0130 16125 1030 JA ZERO 16126 0160 / CALL MOVE(TROLL2,PLAC(TROLL)) 16127 0400 FLDA TROLL 16130 4634 16131 0027 ATX 7 16132 0037 XTA 7 16133 4242 FMUL THREE 16134 0010 ALN 0 16135 0006 STARTD 16136 1356 FADD PPLAC 16137 6401 FSTA .+11 16140 6150 16141 0005 STARTF 16142 1130 JSR MOVE RALF V50A 24-JUL-20 PAGE 4-69 16143 0000 16144 1031 JA .+6 16145 6152 16146 1030 JA TROLL2 16147 4637 16150 1031 JA . 16151 6150 / CALL MOVE(TROLL2+100,FIXD(TROLL)) 16152 0400 FLDA TROLL2 16153 4637 16154 1307 FADD #LIT+154 16155 6227 FSTA #TMP 16156 0400 FLDA TROLL 16157 4634 16160 0027 ATX 7 16161 0037 XTA 7 16162 4242 FMUL THREE 16163 0010 ALN 0 16164 0006 STARTD 16165 1353 FADD PFIXD 16166 6401 FSTA .+11 16167 6177 16170 0005 STARTF 16171 1130 JSR MOVE 16172 0000 16173 1031 JA .+6 16174 6201 16175 1030 JA #TMP 16176 0130 16177 1031 JA . 16200 6177 / CALL JUGGLE(CHASM) 16201 1130 JSR JUGGLE 16202 0000 16203 1031 JA .+4 16204 6207 16205 1030 JA CHASM 16206 4631 / IF(PROP(BEAR).NE.3)CALL DSTROY(BEAR) 16207 0400 FLDA BEAR 16210 4642 16211 0027 ATX 7 16212 0470 FLDA PROP-3,7 16213 3647 16214 2242 FSUB THREE 16215 1001 JEQ .+10 16216 6225 16217 1130 JSR DSTROY 16220 0000 16221 1031 JA .+4 16222 6225 16223 1030 JA BEAR 16224 4642 / PROP(CHAIN)=0 16225 0400 FLDA CHAIN 16226 4714 RALF V50A 24-JUL-20 PAGE 4-70 16227 0027 ATX 7 16230 0002 FCLA 16231 6470 FSTA PROP-3,7 16232 3647 / FIXED(CHAIN)=0 / PROP(AXE)=0 16233 0400 FLDA AXE 16234 4620 16235 0027 ATX 7 16236 0002 FCLA 16237 6470 FSTA PROP-3,7 16240 3647 / FIXED(AXE)=0 16241 6470 FSTA FIXED-3,7 16242 2503 / CALL RSPEAK(129) 16243 1130 JSR RSPEAK 16244 0000 16245 1031 JA .+4 16246 6251 16247 1030 JA #LIT+204 16250 0400 / CLOCK1=-1 16251 0372 FLDA MINUS1 16252 6400 FSTA CLOCK1 16253 5016 / CLOSNG=.TRUE. 16254 0240 FLDA ONE 16255 6400 FSTA CLOSNG 16256 5024 / GOTO 19999 16257 1030 JA #19999 16260 3754 /C /C ONCE HE'S PANICKED, AND CLOCK2 HAS RUN OUT, WE COME HERE TO SET UP THE /C STORAGE ROOM. THE ROOM HAS TWO LOCS, HARDWIRED AS 115 (NE) AND 116 (SW). /C AT THE NE END, WE PLACE EMPTY BOTTLES, A NURSERY OF PLANTS, A BED OF /C OYSTERS, A PILE OF LAMPS, RODS WITH STARS, SLEEPING DWARVES, AND HIM. AND /C THE SW END WE PLACE GRATE OVER TREASURES, SNAKE PIT, COVEY OF CAGED BIRDS, /C MORE RODS, AND PILLOWS. A MIRROR STRETCHES ACROSS ONE WALL. MANY OF THE /C OBJECTS COME FROM KNOWN LOCATIONS AND/OR STATES (E.G. THE SNAKE IS KNOWN TO /C HAVE BEEN DESTROYED AND NEEDN'T BE CARRIED AWAY FROM ITS OLD "PLACE"), /C MAKING THE VARIOUS OBJECTS BE HANDLED DIFFERENTLY. WE ALSO DROP ALL OTHER /C OBJECTS HE MIGHT BE CARRYING (LEST HE HAVE SOME WHICH COULD CAUSE TROUBLE, /C SUCH AS THE KEYS). WE DESCRIBE THE FLASH OF LIGHT AND TRUNDLE BACK. /C /11000 PROP(BOTTLE)=PUT(BOTTLE,115,1) 16261 0400 #11000, FLDA BOTTLE 16262 4601 16263 0027 ATX 7 16264 1130 JSR PUT 16265 0000 16266 1031 JA .+10 16267 6276 16270 1030 JA BOTTLE RALF V50A 24-JUL-20 PAGE 4-71 16271 4601 16272 1030 JA #LIT+165 16273 0361 16274 1030 JA ONE 16275 0163 16276 6470 FSTA PROP-3,7 16277 3647 / PROP(PLANT)=PUT(PLANT,115,0) 16300 0400 FLDA PLANT 16301 4612 16302 0027 ATX 7 16303 1130 JSR PUT 16304 0000 16305 1031 JA .+10 16306 6315 16307 1030 JA PLANT 16310 4612 16311 1030 JA #LIT+165 16312 0361 16313 1030 JA ZERO 16314 0160 16315 6470 FSTA PROP-3,7 16316 3647 / PROP(OYSTER)=PUT(OYSTER,115,0) 16317 0400 FLDA OYSTER 16320 4562 16321 0027 ATX 7 16322 1130 JSR PUT 16323 0000 16324 1031 JA .+10 16325 6334 16326 1030 JA OYSTER 16327 4562 16330 1030 JA #LIT+165 16331 0361 16332 1030 JA ZERO 16333 0160 16334 6470 FSTA PROP-3,7 16335 3647 / PROP(LAMP)=PUT(LAMP,115,0) 16336 0400 FLDA LAMP 16337 4513 16340 0027 ATX 7 16341 1130 JSR PUT 16342 0000 16343 1031 JA .+10 16344 6353 16345 1030 JA LAMP 16346 4513 16347 1030 JA #LIT+165 16350 0361 16351 1030 JA ZERO 16352 0160 16353 6470 FSTA PROP-3,7 16354 3647 / PROP(ROD)=PUT(ROD,115,0) RALF V50A 24-JUL-20 PAGE 4-72 16355 0400 FLDA ROD 16356 4524 16357 0027 ATX 7 16360 1130 JSR PUT 16361 0000 16362 1031 JA .+10 16363 6372 16364 1030 JA ROD 16365 4524 16366 1030 JA #LIT+165 16367 0361 16370 1030 JA ZERO 16371 0160 16372 6470 FSTA PROP-3,7 16373 3647 / PROP(DWARF)=PUT(DWARF,115,0) 16374 0400 FLDA DWARF 16375 4570 16376 0027 ATX 7 16377 1130 JSR PUT 16400 0000 16401 1031 JA .+10 16402 6411 16403 1030 JA DWARF 16404 4570 16405 1030 JA #LIT+165 16406 0361 16407 1030 JA ZERO 16410 0160 16411 6470 FSTA PROP-3,7 16412 3647 / LOC=115 / OLDLOC=115 / NEWLOC=115 16413 0312 FLDA #LIT+165 16414 6400 FSTA LOC 16415 0014 16416 6400 FSTA OLDLOC 16417 0011 16420 6400 FSTA NEWLOC 16421 0157 /C /C LEAVE THE GRATE WITH NORMAL (NON-NEGATIVE PROPERTY). /C / I=PUT(GRATE,116,0) 16422 1130 JSR PUT 16423 0000 16424 1031 JA .+10 16425 6434 16426 1030 JA GRATE 16427 4516 16430 1030 JA #LIT+170 16431 0364 16432 1030 JA ZERO 16433 0160 16434 6400 FSTA I RALF V50A 24-JUL-20 PAGE 4-73 16435 0000 / PROP(SNAKE)=PUT(SNAKE,116,1) 16436 0400 FLDA SNAKE 16437 4546 16440 0027 ATX 7 16441 1130 JSR PUT 16442 0000 16443 1031 JA .+10 16444 6453 16445 1030 JA SNAKE 16446 4546 16447 1030 JA #LIT+170 16450 0364 16451 1030 JA ONE 16452 0163 16453 6470 FSTA PROP-3,7 16454 3647 / PROP(BIRD)=PUT(BIRD,116,1) 16455 0400 FLDA BIRD 16456 4535 16457 0027 ATX 7 16460 1130 JSR PUT 16461 0000 16462 1031 JA .+10 16463 6472 16464 1030 JA BIRD 16465 4535 16466 1030 JA #LIT+170 16467 0364 16470 1030 JA ONE 16471 0163 16472 6470 FSTA PROP-3,7 16473 3647 / PROP(CAGE)=PUT(CAGE,116,0) 16474 0400 FLDA CAGE 16475 4521 16476 0027 ATX 7 16477 1130 JSR PUT 16500 0000 16501 1031 JA .+10 16502 6511 16503 1030 JA CAGE 16504 4521 16505 1030 JA #LIT+170 16506 0364 16507 1030 JA ZERO 16510 0160 16511 6470 FSTA PROP-3,7 16512 3647 / PROP(ROD2)=PUT(ROD2,116,0) 16513 0400 FLDA ROD2 16514 4527 16515 0027 ATX 7 16516 1130 JSR PUT 16517 0000 16520 1031 JA .+10 RALF V50A 24-JUL-20 PAGE 4-74 16521 6530 16522 1030 JA ROD2 16523 4527 16524 1030 JA #LIT+170 16525 0364 16526 1030 JA MINUS1 16527 0601 16530 6470 FSTA PROP-3,7 16531 3647 / PROP(PILLOW)=PUT(PILLOW,116,0) 16532 0400 FLDA PILLOW 16533 4543 16534 0027 ATX 7 16535 1130 JSR PUT 16536 0000 16537 1031 JA .+10 16540 6547 16541 1030 JA PILLOW 16542 4543 16543 1030 JA #LIT+170 16544 0364 16545 1030 JA ZERO 16546 0160 16547 6470 FSTA PROP-3,7 16550 3647 /C / PROP(MIRROR)=PUT(MIRROR,115,0) 16551 0400 FLDA MIRROR 16552 4623 16553 0027 ATX 7 16554 1130 JSR PUT 16555 0000 16556 1031 JA .+10 16557 6566 16560 1030 JA MIRROR 16561 4623 16562 1030 JA #LIT+165 16563 0361 16564 1030 JA ZERO 16565 0160 16566 6470 FSTA PROP-3,7 16567 3647 / FIXED(MIRROR)=116 16570 0313 FLDA #LIT+170 16571 6470 FSTA FIXED-3,7 16572 2503 /C / DO 11010 I=1,100 16573 0240 FLDA ONE 16574 6400 FSTA I 16575 0000 /11010 IF(TOTING(I))CALL DSTROY(I) 16576 0400 #11010, FLDA I 16577 0000 16600 1120 JSA TOTING RALF V50A 24-JUL-20 PAGE 4-75 16601 0622 16602 1001 JEQ .+10 16603 6612 16604 1130 JSR DSTROY 16605 0000 16606 1031 JA .+4 16607 6612 16610 1030 JA I 16611 0000 16612 0400 FLDA I 16613 0000 16614 1240 FADD ONE 16615 6400 FSTA I 16616 0000 16617 2307 FSUB #LIT+154 16620 1021 JLE #11010 16621 6576 /C / CALL RSPEAK(132) 16622 1130 JSR RSPEAK 16623 0000 16624 1031 JA .+4 16625 6630 16626 1030 JA #LIT+215 16627 0411 / CLOSED=.TRUE. 16630 0240 FLDA ONE 16631 6400 FSTA CLOSED 16632 5032 / GOTO 2 16633 1030 JA #2 16634 1146 /C /C ANOTHER WAY WE CAN FORCE AN END TO THINGS IS BY HAVING THE LAMP GIVE OUT. /C WHEN IT GETS CLOSE, WE COME HERE TO WARN HIM. WE GO TO 12000 IF THE LAMP /C AND FRESH BATTERIES ARE HERE, IN WHICH CASE WE REPLACE THE BATTERIES AND /C CONTINUE. 12200 IS FOR OTHER CASES OF LAMP DYING.12400 IS WHEN IT GOES /C OUT, AND 12600 IS IF HE'S WANDERED OUTSIDE AND THE LAMP IS USED UP, IN WHICH /C CASE WE FORCE HIM TO GIVE UP. /C /12000 CALL RSPEAK(188) 16635 1130 #12000, JSR RSPEAK 16636 0000 16637 1031 JA .+4 16640 6643 16641 1030 JA #LIT+264 16642 0460 / PROP(BATTER)=1 16643 0400 FLDA BATTER 16644 4653 16645 0027 ATX 7 16646 0240 FLDA ONE 16647 6470 FSTA PROP-3,7 16650 3647 / IF(TOTING(BATTER))CALL DROP(BATTER,LOC) RALF V50A 24-JUL-20 PAGE 4-76 16651 0400 FLDA BATTER 16652 4653 16653 1120 JSA TOTING 16654 0622 16655 1001 JEQ .+12 16656 6667 16657 1130 JSR DROP 16660 0000 16661 1031 JA .+6 16662 6667 16663 1030 JA BATTER 16664 4653 16665 1030 JA LOC 16666 0014 / LIMIT=LIMIT+2500 16667 0350 FLDA #LIT+317 16670 5400 FADDM LIMIT 16671 0011 / LMWARN=.FALSE. 16672 0002 FCLA 16673 6400 FSTA LMWARN 16674 4763 / GOTO 19999 16675 1030 JA #19999 16676 3754 /C /12200 IF(LMWARN.OR..NOT.HERE(LAMP))GOTO 19999 16677 0400 #12200, FLDA LAMP 16700 4513 16701 1120 JSA HERE 16702 0667 16703 1000 JEQ #19999 16704 3754 16705 0400 FLDA LMWARN 16706 4763 16707 1040 JNE #19999 16710 3754 / LMWARN=.TRUE. 16711 0240 FLDA ONE 16712 6400 FSTA LMWARN 16713 4763 / SPK=187 16714 0100 LDX 273,0 /187 16715 0273 16716 0030 XTA 0 16717 6221 FSTA SPK / IF(PLACE(BATTER).EQ.0)SPK=183 16720 0400 FLDA BATTER 16721 4653 16722 0027 ATX 7 16723 0470 FLDA PLACE-3,7 16724 2027 16725 1041 JNE .+6 16726 6733 16727 0100 LDX 267,0 /183 RALF V50A 24-JUL-20 PAGE 4-77 16730 0267 16731 0030 XTA 0 16732 6221 FSTA SPK / IF(PROP(BATTER).EQ.1)SPK=189 16733 0470 FLDA PROP-3,7 16734 3647 16735 2240 FSUB ONE 16736 1041 JNE .+6 16737 6744 16740 0100 LDX 275,0 /189 16741 0275 16742 0030 XTA 0 16743 6221 FSTA SPK / CALL RSPEAK(SPK) 16744 1130 #H0214, JSR RSPEAK 16745 0000 16746 1030 JA #19999 16747 3754 16750 1030 JA SPK 16751 0106 / GOTO 19999 /C /12400 LIMIT=-1 16752 0372 #12400, FLDA MINUS1 16753 6400 FSTA LIMIT 16754 0011 / PROP(LAMP)=0 16755 0400 FLDA LAMP 16756 4513 16757 0027 ATX 7 16760 0002 FCLA 16761 6470 FSTA PROP-3,7 16762 3647 / IF(HERE(LAMP))CALL RSPEAK(184) 16763 0400 FLDA LAMP 16764 4513 16765 1120 JSA HERE 16766 0667 / GOTO 19999 16767 1000 JEQ #19999 16770 3754 16771 1130 JSR RSPEAK 16772 0000 16773 1030 JA #19999 16774 3754 16775 1030 JA #LIT+253 16776 0447 /C /12600 CALL RSPEAK(185) 16777 1130 #12600, JSR RSPEAK 17000 0000 17001 1031 JA .+4 17002 7005 17003 1030 JA #LIT+256 RALF V50A 24-JUL-20 PAGE 4-78 17004 0452 / GAVEUP=.TRUE. 17005 0240 FLDA ONE 17006 6400 FSTA GAVEUP 17007 5035 / GOTO 20000 17010 1031 JA #20000 17011 7020 /C /C /C OH DEAR, HE'S DISTURBED THE DWARVES. /C /19000 CALL RSPEAK(136) 17012 1130 #19000, JSR RSPEAK 17013 0000 17014 1031 JA .+4 17015 7020 17016 1030 JA #LIT+220 17017 0414 /C /C EXIT CODE. WILL EVENTUALLY INCLUDE SCORING. FOR NOW, HOWEVER, ... /C /C THE PRESENT SCORING ALGORITHM IS AS FOLLOWS: /C OBJECTIVE: POINTS: PRESENT TOTAL POSSIBLE: /C GETTING WELL INTO CAVE 25 25 /C EACH TREASURE < CHEST 12 60 /C TREASURE CHEST ITSELF 14 14 /C EACH TREASURE > CHEST 16 144 /C SURVIVING (MAX-NUM)*10 30 /C NOT QUITTING 4 4 /C REACHING "CLOSNG" 25 25 /C "CLOSED": QUIT/KILLED 10 /C KLUTZED 25 /C WRONG WAY 30 /C SUCCESS 45 45 /C CAME TO WITT'S END 1 1 /C ROUND OUT THE TOTAL 2 2 /C TOTAL: 350 /20000 SCORE=0 17020 0002 #20000, FCLA 17021 6400 FSTA SCORE 17022 0017 / MXSCOR=0 17023 6400 FSTA MXSCOR 17024 0014 /C /C FIRST TALLY UP THE TREASURES. MUST BE IN BUILDING AND NOT BROKEN. /C GIVE THE POOR GUY 2 POINTS JUST FOR FINDING EACH TREASURE. /C / DO 20010 I=50,MAXTRS 17025 0273 FLDA #LIT+110 17026 6400 FSTA I 17027 0000 RALF V50A 24-JUL-20 PAGE 4-79 / IF(PTEXT(I).EQ.0)GOTO 20010 17030 0400 #H0216, FLDA I 17031 0000 17032 0027 ATX 7 17033 0477 FLDA PTEXT-3,7 17034 7775 17035 1001 JEQ #20010 17036 7121 / K=12 17037 0251 FLDA #LIT+22 17040 6400 FSTA K 17041 6215 / IF(I.EQ.CHEST)K=14 17042 0400 FLDA I 17043 0000 17044 2400 FSUB CHEST 17045 4664 17046 1041 JNE .+7 17047 7055 17050 0100 LDX 16,0 /14 17051 0016 17052 0030 XTA 0 17053 6400 FSTA K 17054 6215 / IF(I.GT.CHEST)K=16 17055 0400 FLDA I 17056 0000 17057 2400 FSUB CHEST 17060 4664 17061 1021 JLE .+5 17062 7066 17063 0253 FLDA #LIT+30 17064 6400 FSTA K 17065 6215 / IF(PROP(I).GE.0)SCORE=SCORE+2 17066 0470 FLDA PROP-3,7 17067 3647 17070 1051 JLT .+5 17071 7075 17072 0241 FLDA TWO 17073 5400 FADDM SCORE 17074 0017 / IF(PLACE(I).EQ.3.AND.PROP(I).EQ.0)SCORE=SCORE+K-2 17075 0470 FLDA PLACE-3,7 17076 2027 17077 2242 FSUB THREE 17100 1041 JNE #M100 17101 7115 17102 0470 FLDA PROP-3,7 17103 3647 17104 1041 JNE #M100 17105 7115 17106 0400 FLDA SCORE 17107 0017 17110 1400 FADD K 17111 6215 RALF V50A 24-JUL-20 PAGE 4-80 17112 2241 FSUB TWO 17113 6400 FSTA SCORE 17114 0017 / MXSCOR=MXSCOR+K 17115 0400 #M100, FLDA K 17116 6215 17117 5400 FADDM MXSCOR 17120 0014 /20010 CONTINUE 17121 0400 #20010, FLDA I 17122 0000 17123 1240 FADD ONE 17124 6400 FSTA I 17125 0000 17126 2400 FSUB MAXTRS 17127 6226 17130 1021 JLE #H0216 17131 7030 /C /C NOW LOOK AT HOW HE FINISHED AND HOW FAR HE GOT. MAXDIE AND NUMDIE TELL US /C HOW WELL HE SURVIVED. GAVEUP SAYS WHETHER HE EXITED VIA QUIT. DFLAG WILL /C TELL US IF HE EVER GOT SUITABLY DEEP INTO THE CAVE. CLOSNG STILL INDICATES /C WHETHER HE REACHED THE ENDGAME. AND IF HE GOT AS FAR AS "CAVE CLOSED" /C (INDICATED BY "CLOSED"), THEN BONUS IS ZERO FOR MUNDANE EXITS OR 133, 134, /C 135 IF HE BLEW IT (SO TO SPEAK). /C / SCORE=SCORE+(MAXDIE-NUMDIE)*10 17132 0400 FLDA MAXDIE 17133 5002 17134 2400 FSUB NUMDIE 17135 4777 17136 4250 FMUL #LIT+17 17137 5400 FADDM SCORE 17140 0017 / MXSCOR=MXSCOR+MAXDIE*10 17141 0400 FLDA MAXDIE 17142 5002 17143 4250 FMUL #LIT+17 17144 5400 FADDM MXSCOR 17145 0014 / IF(.NOT.(SCORNG.OR.GAVEUP))SCORE=SCORE+4 17146 0400 FLDA SCORNG 17147 5040 17150 1400 FADD GAVEUP 17151 5035 17152 1041 JNE .+5 17153 7157 17154 0243 FLDA #LIT 17155 5400 FADDM SCORE 17156 0017 / MXSCOR=MXSCOR+4 17157 0243 FLDA #LIT 17160 5400 FADDM MXSCOR 17161 0014 RALF V50A 24-JUL-20 PAGE 5 / IF(DFLAG.NE.0)SCORE=SCORE+25 17162 0400 FLDA DFLAG 17163 4460 17164 1001 JEQ .+5 17165 7171 17166 0261 FLDA #LIT+52 17167 5400 FADDM SCORE 17170 0017 / MXSCOR=MXSCOR+25 17171 0261 FLDA #LIT+52 17172 5400 FADDM MXSCOR 17173 0014 / IF(CLOSNG)SCORE=SCORE+25 17174 0400 FLDA CLOSNG 17175 5024 17176 1001 JEQ .+5 17177 7203 17200 0261 FLDA #LIT+52 17201 5400 FADDM SCORE 17202 0017 / MXSCOR=MXSCOR+25 17203 0261 FLDA #LIT+52 17204 5400 FADDM MXSCOR 17205 0014 / IF(.NOT.CLOSED)GOTO 20020 17206 0400 FLDA CLOSED 17207 5032 17210 1001 JEQ #20020 17211 7257 / IF(BONUS.EQ.0)SCORE=SCORE+10 17212 0400 FLDA BONUS 17213 5013 17214 1041 JNE .+5 17215 7221 17216 0250 FLDA #LIT+17 17217 5400 FADDM SCORE 17220 0017 / IF(BONUS.EQ.135)SCORE=SCORE+25 17221 0100 LDX 207,0 /135 17222 0207 17223 0030 XTA 0 17224 2400 FSUB BONUS 17225 5013 17226 1041 JNE .+5 17227 7233 17230 0261 FLDA #LIT+52 17231 5400 FADDM SCORE 17232 0017 / IF(BONUS.EQ.134)SCORE=SCORE+30 17233 0100 LDX 206,0 /134 17234 0206 17235 0030 XTA 0 17236 2400 FSUB BONUS 17237 5013 17240 1041 JNE .+5 RALF V50A 24-JUL-20 PAGE 5-1 17241 7245 17242 0264 FLDA #LIT+63 17243 5400 FADDM SCORE 17244 0017 / IF(BONUS.EQ.133)SCORE=SCORE+45 17245 0100 LDX 205,0 /133 17246 0205 17247 0030 XTA 0 17250 2400 FSUB BONUS 17251 5013 17252 1041 JNE #20020 17253 7257 17254 0271 FLDA #LIT+102 17255 5400 FADDM SCORE 17256 0017 /20020 MXSCOR=MXSCOR+45 17257 0271 #20020, FLDA #LIT+102 17260 5400 FADDM MXSCOR 17261 0014 /C /C DID HE COME TO WITT'S END AS HE SHOULD? /C / IF(PLACE(MAGZIN).EQ.108)SCORE=SCORE+1 17262 0400 FLDA MAGZIN 17263 4565 17264 0027 ATX 7 17265 0100 LDX 154,0 /108 17266 0154 17267 0030 XTA 0 17270 2470 FSUB PLACE-3,7 17271 2027 17272 1041 JNE .+5 17273 7277 17274 0240 FLDA ONE 17275 5400 FADDM SCORE 17276 0017 / MXSCOR=MXSCOR+1 17277 0240 FLDA ONE 17300 5400 FADDM MXSCOR 17301 0014 /C /C ROUND IT OFF. /C / SCORE=SCORE+2 17302 0241 FLDA TWO 17303 5400 FADDM SCORE 17304 0017 / MXSCOR=MXSCOR+2 17305 5400 FADDM MXSCOR 17306 0014 /C /C DEDUCT POINTS FOR HINTS. HINTS < 4 ARE SPECIAL; SEE DATABASE DESCRIPTION. /C / DO 20030 I=1,HNTMAX 17307 0240 FLDA ONE 17310 6400 FSTA I RALF V50A 24-JUL-20 PAGE 5-2 17311 0000 /20030 IF(HINTED(I))SCORE=SCORE-HINTS(I,2) 17312 0400 #20030, FLDA I 17313 0000 17314 0027 ATX 7 17315 0470 FLDA HINTED-3,7 17316 6226 17317 1001 JEQ .+15 17320 7334 17321 0241 FLDA TWO 17322 4255 FMUL #LIT+36 17323 1400 FADD I 17324 0000 17325 0026 ATX 6 17326 0400 FLDA SCORE 17327 0017 17330 2460 FSUB HINTS-0077,6 17331 3170 17332 6400 FSTA SCORE 17333 0017 17334 0400 FLDA I 17335 0000 17336 1240 FADD ONE 17337 6400 FSTA I 17340 0000 17341 2400 FSUB HNTMAX 17342 3647 17343 1021 JLE #20030 17344 7312 /C /C RETURN TO SCORE COMMAND IF THAT'S WHERE WE CAME FROM. /C / IF(SCORNG)GOTO 8241 17345 0400 FLDA SCORNG 17346 5040 17347 1041 JNE #8241 17350 4541 /C /C THAT SHOULD BE GOOD ENOUGH. LET'S TELL HIM ALL ABOUT IT. /C / TYPE 20100,SCORE,MXSCOR,TURNS 17351 1130 JSR SIXOUT 17352 0000 17353 1031 JA .+10 17354 7363 17355 1032 JA #20100 17356 0173 17357 1030 JA ZERO 17360 0160 17361 1030 JA TWO 17362 0166 17363 3000 TRAP3 #WRITO 17364 0000 RALF V50A 24-JUL-20 PAGE 5-3 17365 1030 JA #LIT 17366 0174 17367 1032 JA #2010A 17370 0103 17371 0400 FLDA SCORE 17372 0017 17373 3000 TRAP3 #RSVO 17374 0000 17375 3000 TRAP3 #RENDO 17376 0000 17377 1130 JSR SIXOUT 17400 0000 17401 1031 JA .+10 17402 7411 17403 1032 JA #2010B 17404 0202 17405 1030 JA ZERO 17406 0160 17407 1030 JA THREE 17410 0171 17411 3000 TRAP3 #WRITO 17412 0000 17413 1030 JA #LIT 17414 0174 17415 1032 JA #2010A 17416 0103 17417 0400 FLDA MXSCOR 17420 0014 17421 3000 TRAP3 #RSVO 17422 0000 17423 3000 TRAP3 #RENDO 17424 0000 17425 1130 JSR SIXOUT 17426 0000 17427 1031 JA .+10 17430 7437 17431 1032 JA #2010C 17432 0215 17433 1030 JA ZERO 17434 0160 17435 1030 JA THREE 17436 0171 17437 3000 TRAP3 #WRITO 17440 0000 17441 1030 JA #LIT 17442 0174 17443 1032 JA #2010D 17444 0222 17445 0400 FLDA TURNS 17446 4760 17447 3000 TRAP3 #RSVO RALF V50A 24-JUL-20 PAGE 5-4 17450 0000 17451 3000 TRAP3 #RENDO 17452 0000 17453 1130 JSR SIXOUT 17454 0000 17455 1031 JA .+10 17456 7465 17457 1032 JA #2010E 17460 0227 17461 1030 JA ZERO 17462 0160 17463 1030 JA ONE 17464 0163 /20100 FORMAT(/' You scored',I4,' out of a possible',I4, / 1 ', using',I5,' turns.') /C / DO 20200 I=1,CLSSES 17465 0240 FLDA ONE 17466 6400 FSTA I 17467 0000 / IF(CVAL(I).GE.SCORE)GOTO 20210 17470 0400 #I0064, FLDA I 17471 0000 17472 0027 ATX 7 17473 0470 FLDA CVAL-3,7 17474 0014 17475 2400 FSUB SCORE 17476 0017 17477 1011 JGE #20210 17500 7524 /20200 CONTINUE 17501 0400 #20200, FLDA I 17502 0000 17503 1240 FADD ONE 17504 6400 FSTA I 17505 0000 17506 2400 FSUB CLSSES 17507 0006 17510 1021 JLE #I0064 17511 7470 / TYPE 20202 17512 1130 JSR SIXOUT 17513 0000 17514 1030 JA #25000 17515 0604 17516 1032 JA #20202 17517 0234 17520 1030 JA ZERO 17521 0160 17522 1030 JA ZERO 17523 0160 RALF V50A 24-JUL-20 PAGE 5-5 /20202 FORMAT(' You just went off my scale!!'/) / GOTO 25000 /C /20210 CALL SPEAK(CTEXT(I)) 17524 0400 #20210, FLDA I 17525 0000 17526 0027 ATX 7 17527 0470 FLDA CTEXT-3,7 /GET CLASS MESSAGE 17530 0011 17531 6230 FSTA #TMP+3 17532 1130 JSR SPEAK 17533 0000 17534 1031 JA .+4 17535 7540 17536 1030 JA #TMP+3 17537 0133 / IF(I.EQ.CLSSES-1)GOTO 20220 17540 0400 FLDA CLSSES 17541 0006 17542 2240 FSUB ONE 17543 2400 FSUB I 17544 0000 17545 1001 JEQ #20220 17546 7652 / K=CVAL(I)+1-SCORE 17547 0400 FLDA I 17550 0000 17551 0027 ATX 7 17552 0470 FLDA CVAL-3,7 17553 0014 17554 1240 FADD ONE 17555 2400 FSUB SCORE 17556 0017 17557 6400 FSTA K 17560 6215 / TYPE 20212,K 17561 1130 JSR SIXOUT 17562 0000 17563 1031 JA .+10 17564 7573 17565 1032 JA #20212 17566 0253 17567 1030 JA ZERO 17570 0160 17571 1030 JA TWO 17572 0166 17573 3000 TRAP3 #WRITO 17574 0000 17575 1030 JA #LIT 17576 0174 17577 1032 JA #2021A 17600 0302 17601 0400 FLDA K 17602 6215 RALF V50A 24-JUL-20 PAGE 5-6 17603 3000 TRAP3 #RSVO 17604 0000 17605 3000 TRAP3 #RENDO 17606 0000 17607 1130 JSR SIXOUT 17610 0000 17611 1031 JA .+10 17612 7621 17613 1032 JA #2021B 17614 0307 17615 1030 JA ZERO 17616 0160 17617 1030 JA THREE 17620 0171 /20212 FORMAT(' To achieve the next higher rating, you need',I3, / 1 ' more point',$) / IF(K.EQ.1) TYPE 20213 17621 0400 FLDA K 17622 6215 17623 2240 FSUB ONE 17624 1041 JNE .+14 17625 7640 17626 1130 JSR SIXOUT 17627 0000 17630 1030 JA #25000 17631 0604 17632 1032 JA #20213 17633 0123 17634 1030 JA ZERO 17635 0160 17636 1030 JA ONE 17637 0163 / IF(K.NE.1) TYPE 20214 17640 1130 JSR SIXOUT 17641 0000 17642 1030 JA #25000 17643 0604 17644 1032 JA #20214 17645 0316 17646 1030 JA ZERO 17647 0160 17650 1030 JA ONE 17651 0163 /20213 FORMAT('+.'/) /20214 FORMAT('+s.'/) / GOTO 25000 /C /20220 TYPE 20222 17652 1130 #20220, JSR SIXOUT 17653 0000 17654 1031 JA .+10 RALF V50A 24-JUL-20 PAGE 5-7 17655 7664 17656 1032 JA #20222 17657 0320 17660 1030 JA ZERO 17661 0160 17662 1030 JA ZERO 17663 0160 17664 1130 JSR SIXOUT 17665 0000 17666 1030 JA #GOBAK 17667 0057 17670 1032 JA #20223 17671 0355 17672 1030 JA ZERO 17673 0160 17674 1030 JA ZERO 17675 0160 /20222 FORMAT(' To achieve the next higher rating ', / 1 'would be a neat trick!'/' Congratulations!!'/) / RETURN / END / / Fortran Formats: / 17676 2435 #67A, TEXT %T]HERE ARE @% 17677 1005 17700 2205 17701 4001 17702 2205 17703 4000 17704 5047 #67, TEXT %('+',I1,$)% 17705 5347 17706 5411 17707 6154 17710 4451 17711 4024 #67B, TEXT % T]HREATENING LITTLE DWARVES IN THE ROOM WITH YOU.@% 17712 3510 17713 2205 17714 0124 17715 0516 17716 1116 17717 0740 17720 1411 17721 2424 17722 1405 17723 4004 17724 2701 17725 2226 17726 0523 17727 4011 17730 1640 17731 2410 17732 0540 17733 2217 17734 1715 RALF V50A 24-JUL-20 PAGE 5-8 17735 4027 17736 1124 17737 1040 17740 3117 17741 2556 17742 0000 #68, 17743 5061 #78, TEXT %(1X,I1,$)% 17744 3054 17745 1161 17746 5444 17747 5100 17750 4035 #78B, TEXT % ]OF THEM THROW KNIVES AT YOU!@% 17751 1706 17752 4024 17753 1005 17754 1540 17755 2410 17756 2217 17757 2740 17760 1316 17761 1126 17762 0523 17763 4001 17764 2440 17765 3117 17766 2541 17767 0000 17770 4035 #68B, TEXT % ]OF THEM GET YOU!@% 17771 1706 17772 4024 17773 1005 17774 1540 17775 0705 17776 2440 17777 3117 20000 2541 20001 0000 20002 2735 #5015, TEXT %W]HAT DO YOU WANT TO DO WITH THE @% 20003 1001 20004 2440 20005 0417 20006 4031 20007 1725 20010 4027 20011 0116 20012 2440 20013 2417 20014 4004 20015 1740 20016 2711 20017 2410 20020 4024 20021 1005 20022 4000 20023 1135 #5199, TEXT %I] DON'T SEE ANY "@% RALF V50A 24-JUL-20 PAGE 5-9 20024 4004 20025 1716 20026 4724 20027 4023 20030 0505 20031 4001 20032 1631 20033 4042 20034 0000 20035 1140 #8002, TEXT %I ]DON'T UNDERSTAND "@% 20036 3504 20037 1716 20040 4724 20041 4025 20042 1604 20043 0522 20044 2324 20045 0116 20046 0440 20047 4200 20050 1735 #9032, TEXT %O]KAY, "@% 20051 1301 20052 3154 20053 4042 20054 0000 20055 1135 #8243, TEXT %I]F YOU WERE TO QUIT NOW, YOU WOULD SCORE @% 20056 0640 20057 3117 20060 2540 20061 2705 20062 2205 20063 4024 20064 1740 20065 2125 20066 1124 20067 4016 20070 1727 20071 5440 20072 3117 20073 2540 20074 2717 20075 2514 20076 0440 20077 2303 20100 1722 20101 0540 20102 0000 #2010A, 20103 5047 #8243A, TEXT %('+',I4,$)% 20104 5347 20105 5411 20106 6454 20107 4451 20110 4035 #8243B, TEXT % ]OUT OF A POSSIBLE @% 20111 1725 20112 2440 RALF V50A 24-JUL-20 PAGE 5-10 20113 1706 20114 4001 20115 4020 20116 1723 20117 2311 20120 0214 20121 0540 20122 0000 #20213, 20123 5600 #8243C, TEXT %.@% 20124 1135 #40012, TEXT %I] AM PREPARED TO GIVE YOU A HINT, BUT IT WILL COST YOU @% 20125 4001 20126 1540 20127 2022 20130 0520 20131 0122 20132 0504 20133 4024 20134 1740 20135 0711 20136 2605 20137 4031 20140 1725 20141 4001 20142 4010 20143 1116 20144 2454 20145 4002 20146 2524 20147 4011 20150 2440 20151 2711 20152 1414 20153 4003 20154 1723 20155 2440 20156 3117 20157 2540 20160 0000 20161 5047 #4001A, TEXT %('+',I2,$)% 20162 5347 20163 5411 20164 6254 20165 4451 20166 4035 #4001B, TEXT % ]POINTS.@% 20167 2017 20170 1116 20171 2423 20172 5600 20173 3135 #20100, TEXT %Y]OU SCORED @% 20174 1725 20175 4023 20176 0317 20177 2205 20200 0440 20201 0000 RALF V50A 24-JUL-20 PAGE 5-11 20202 4035 #2010B, TEXT % ]OUT OF A POSSIBLE @% 20203 1725 20204 2440 20205 1706 20206 4001 20207 4020 20210 1723 20211 2311 20212 0214 20213 0540 20214 0000 20215 4035 #2010C, TEXT % ]USING @% 20216 2523 20217 1116 20220 0740 20221 0000 20222 5047 #2010D, TEXT %('+',I5,$)% 20223 5347 20224 5411 20225 6554 20226 4451 20227 4035 #2010E, TEXT % ]TURNS.@% 20230 2425 20231 2216 20232 2356 20233 0000 20234 3135 #20202, TEXT %Y]OU JUST WENT OFF MY SCALE!!@% 20235 1725 20236 4012 20237 2523 20240 2440 20241 2705 20242 1624 20243 4017 20244 0606 20245 4015 20246 3140 20247 2303 20250 0114 20251 0541 20252 4100 20253 2435 #20212, TEXT %T]O ACHIEVE THE NEXT HIGHER RATING, YOU NEED @% 20254 1740 20255 0103 20256 1011 20257 0526 20260 0540 20261 2410 20262 0540 20263 1605 20264 3024 20265 4010 20266 1107 20267 1005 20270 2240 20271 2201 RALF V50A 24-JUL-20 PAGE 5-12 20272 2411 20273 1607 20274 5440 20275 3117 20276 2540 20277 1605 20300 0504 20301 4000 20302 5047 #2021A, TEXT %('+',I3,$)% 20303 5347 20304 5411 20305 6354 20306 4451 20307 4035 #2021B, TEXT % ]MORE POINT@% 20310 1517 20311 2205 20312 4020 20313 1711 20314 1624 20315 0000 20316 3523 #20214, TEXT %]S.@% 20317 5600 20320 2435 #20222, TEXT %T]O ACHIEVE THE NEXT HIGHER RATING WOULD BE A NEAT TRICK!@% 20321 1740 20322 0103 20323 1011 20324 0526 20325 0540 20326 2410 20327 0540 20330 1605 20331 3024 20332 4010 20333 1107 20334 1005 20335 2240 20336 2201 20337 2411 20340 1607 20341 4027 20342 1725 20343 1404 20344 4002 20345 0540 20346 0140 20347 1605 20350 0124 20351 4024 20352 2211 20353 0313 20354 4100 20355 0335 #20223, TEXT %C]ONGRATULATIONS!!@% 20356 1716 20357 0722 20360 0124 20361 2514 RALF V50A 24-JUL-20 PAGE 5-13 20362 0124 20363 1117 20364 1623 20365 4141 20366 0000 RALF V50A 24-JUL-20 PAGE 5-14 NO ERRORS 498 SYMBOLS, NO ABS REFS # C 00000 #BASE 00023 #EQ X 00000 #FIX X 00000 #GOBAK 00057 #G0047 01240 #G0051 01375 #G0053 01437 #G0055 01523 #G0057 02075 #G0063 02303 #G0102 03407 #G0122 04735 #G0150 06716 #G0152 07070 #H0102 11443 #H0122 12271 #H0132 13151 #H0143 13672 #H0204 16063 #H0214 16744 #H0216 17030 #I0064 17470 #LBL 00604 #LINEF 04646 #LIT 00174 #MAIN S 00000 #M100 17115 #M222 07300 #M27 05646 #M31 06457 #M32 06532 #M33 06577 #M34 06504 #M35 06510 #M36 06526 #M37 06546 #M38 06552 #M39 06562 #M4 02215 #M40 06566 #M78 12721 #M79 12755 #M81 13075 #M82 13124 #M83 13140 #M84 13213 #M85 13242 #M86 13572 #M87 13564 #M88 13631 #M89 14012 #M90 14035 #M91 14256 #M92 14270 #M92A 14304 #M93 14746 #M94 14770 #M95 15250 #M96 15343 #NE X 00000 #RENDO X 00000 #RET 00015 #RSVO X 00000 #RTN 00604 #ST 00606 #STRT 01077 #TMP 00130 #UE X 00000 #WRITO X 00000 #XR 00002 #1 01077 #10 05306 #10000 16044 #11000 16261 #11010 16576 #12 05356 #12000 16635 #12200 16677 #12400 16752 #12600 16777 #13 05466 #14 05520 #16 05534 #19000 17012 #19999 03754 #2 01146 #20 06142 #2000 02760 #20000 17020 #2001 03075 #20010 17121 #20020 17257 #20030 17312 #2004 03201 #2006 03312 #2008 03353 #2009 03364 #2009A 07516 #2010 03367 #2010A 20103 #2010B 20202 #2010C 20215 #2010D 20222 #2010E 20227 #20100 20173 #2011 03372 #2012 03400 #20200 17501 #20202 20234 #2021A 20302 #2021B 20307 #20210 17524 #20212 20253 #20213 20123 #20214 20316 #20220 17652 #20222 20320 #20223 20355 #21 06204 #22 06263 #23 06304 #25 06317 #25000 00604 #2600 03405 #2602 03446 #2604 03511 #2605 03541 #2608 03602 #2609 04044 #2610 04102 #2630 04124 #2800 04207 #30 06353 #3000 04217 #30000 05575 #30100 05624 #30200 05660 #30300 05670 #30310 06025 #40 06404 #4000 04263 #40000 15466 #4001A 20161 #4001B 20166 #40010 15520 #40012 20124 #40020 15674 #40030 15701 #40400 15703 #40500 15722 #40600 15750 #40700 15766 #4080 04322 #40800 16022 #4090 04440 #50 06425 #5000 04560 #5010 04603 #5015 20002 #5100 04653 #5110 04724 #5112 04753 #5120 04763 #5130 05036 #5140 05061 #5190 05103 #5199 20023 #6000 01345 #6001 01406 #6002 01454 #6010 01511 #6012 01550 #6014 01713 #6016 01736 #6020 02133 #6022 02243 #6023 02376 #6024 02407 #6025 02424 #6027 02452 #6030 02522 #67 17704 #67A 17676 #67B 17711 #68 17743 #68B 17770 #71 01207 #73 01271 #74 01301 #75 02601 #77 02607 #78 17743 #78B 17750 #79 02743 #8 05146 #8000 07010 #8002 20035 #8010 07051 #8012 07106 #8040 10410 #8140 12611 #8142 12617 #8180 13520 #8185 13534 #82 02661 #8200 13663 #8201 13734 #8240 14534 #8241 14541 #8243 20055 #8243A 20103 RALF V50A 24-JUL-20 PAGE 5-15 #8243B 20110 #8243C 20123 #8250 14650 #8252 14707 #8260 15047 #8270 15063 #83 02707 #8300 15440 #8310 15450 #8320 15456 #84 02735 #9 05233 #90 06605 #9010 07125 #9013 07400 #9014 07422 #9015 07414 #9016 07347 #9017 07332 #9018 07326 #9020 07523 #9021 07621 #9024 07724 #9025 07770 #9026 10055 #9027 10213 #9028 10240 #9030 10315 #9031 10324 #9032 20050 #9035 10402 #9040 10514 #9040A 10542 #9043 10675 #9046 10745 #9046A 11003 #9048 11065 #9049 11160 #9070 11245 #9080 11303 #9090 11337 #9120 11440 #9121 11461 #9122 11474 #9124 11673 #9125 11745 #9126 12323 #9130 12345 #9132 12554 #9140 12633 #9150 12727 #9160 13033 #9170 13047 #9171 13162 #9172 13247 #9175 13311 #9176 13335 #9177 13370 #9178 13376 #9190 13542 #9192 13601 #9210 13756 #9212 13770 #9213 14116 #9214 14143 #9215 14230 #9220 14236 #9222 14410 #9230 14457 #9270 15160 #9280 15314 #9282 15363 #9290 15420 #95 06775 #98 06756 #99 06617 ABB 00000 ABBCOM C 00702 ABBNUM 04774 ACTSPK 02214 AMAIN S 20367 AT 00634 ATLOC 00000 ATTACK 00000 AXE 04620 A5TOA1 X 00000 BACK 04717 BATTER 04653 BEAR 04642 BIRD 04535 BITSET X 00000 BONUS 05013 BOTTLE 04601 BUG X 00000 CAGE 04521 CARRY X 00000 CAVE 04725 CHAIN 04714 CHASM 04631 CHEST 04664 CHLOC 04430 CHLOC2 04433 CLAM 04557 CLOCK1 05016 CLOCK2 05021 CLOSED 05032 CLOSNG 05024 CLSSES 00006 COINS 04661 COND 02365 CTEXT 00014 CVAL 00017 DALTLC 04505 DARK 00711 DETAIL 04771 DFLAG 04460 DKILL 05005 DLOC 04463 DOOR 04540 DPRSSN 04736 DRAGON 04626 DROP X 00000 DSEEN 04436 DSTROY X 00000 DTOTAL 00003 DWARF 04570 EGGS 04667 EMRALD 04700 ENTRNC 04733 FIND 04752 FISSUR 04551 FIXD 01540 FIXED 02506 FOOBAR 05010 FOOD 04576 FORCED 00655 GAVEUP 05035 GETIN X 00000 GETWRD X 00000 GRATE 04516 HERE 00667 HINT 00061 HINTED 06231 HINTLC 04334 HINTS 03267 HNTMAX 03647 HNTSIZ 06223 HOLDNG 03162 I 00000 IABS X 00000 INVENT 04755 ISAT 00651 ISHERE 00706 J 06212 JUGGLE X 00000 K 06215 KENT 00064 KEY 00162 KEYS 04510 KK 06330 KNFLOC 04766 KNIFE 04573 KQ 00067 K2 00072 LAMP 04513 LIMIT 00011 LINK 00702 LINUSE 00000 LIQ 01001 LIQLOC 01026 LIQ2 00755 LL 00075 LMWARN 04763 LOC 00014 LOCK 04744 LOOK 04722 LTEXT 00762 MAGZIN 04565 MAXDIE 05002 MAXTRS 06226 MAX0 X 00000 MESSAG 04645 MINUS1 00601 MIN0 X 00000 MIRROR 04623 MISCOM C 05073 MISC2 C 06333 MISC3 C 00030 MOD X 00000 MOVE X 00000 MXSCOR 00014 N 00100 NEWLOC 00157 NOMOD 03025 NOTDRK 00752 NOTHR 00730 NUGGET 04656 NULL 04730 NUMDIE 04777 OBJ 06207 ODLOC 05043 OIL 04607 OKKILL 12156 OLDLC2 00006 OLDLOC 00011 ONE 00163 OYSTER 04562 PABB 00532 PANIC 05027 PBOTL 00103 PCOND 00521 PCT X 00000 PEARL 04706 PFIXD 00524 PHINTS 00527 PILLOW 04543 PLAC 01064 PLACE 02032 PLACOM C 03165 PLANT 04612 PLANT2 04615 PPLAC 00535 PROP 03652 PSPEAK X 00000 RALF V50A 24-JUL-20 PAGE 5-16 PTEXT 00000 PTXCOM C 00454 PUT X 00000 PUTWRD X 00000 PYRAM 04703 RND X 00000 ROD 04524 ROD2 04527 RSPEAK X 00000 RSTRGM X 00000 RTEXT 00000 RUG 04711 SAVEGM X 00000 SAY 04741 SCORE 00017 SCORNG 05040 SIXOUT X 00000 SNAKE 04546 SPEAK X 00000 SPICES 05070 SPK 00106 STEPS 04532 STEXT 00060 STICK 00022 STREAM 05065 TABLET 04554 TALLY 04326 TALLY2 04331 TENTE 00540 THREE 00171 THROW 04747 TK 00063 TOTING 00622 TPOUR 00543 TQDOT 00554 TQUES 00551 TRAVEL 01667 TRIDNT 04672 TROLL 04634 TROLL2 04637 TRVCON 03245 TRVLOC 04623 TRVS 00003 TRVSIZ 06201 TURNS 04760 TWEST 00546 TWO 00166 TXTCOM C 01455 TY 00565 TYE 00562 TYES 00557 VASE 04675 VEND 04650 VERB 06220 VOCAB X 00000 WATER 04604 WD1 00111 WD1X 00114 WD2 00117 WD2X 00122 WZDARK 00025 YEA 00125 YES X 00000 ZERO 00160