adventure: Initial commit
[pdp8.git] / sw / adventure / AMAIN.RA
diff --git a/sw/adventure/AMAIN.RA b/sw/adventure/AMAIN.RA
new file mode 100644 (file)
index 0000000..3b0d477
--- /dev/null
@@ -0,0 +1,6482 @@
+       EXTERN  SAVEGM\r
+       EXTERN  RSTRGM\r
+       EXTERN  A5TOA1\r
+       SECT    AMAIN\r
+       EXTERN  BITSET\r
+       EXTERN  BUG\r
+       EXTERN  CARRY\r
+       EXTERN  DROP\r
+       EXTERN  DSTROY\r
+       EXTERN  GETIN\r
+       EXTERN  IABS\r
+       EXTERN  JUGGLE\r
+       EXTERN  MAX0\r
+       EXTERN  MIN0\r
+       EXTERN  MOD\r
+       EXTERN  MOVE\r
+       EXTERN  SPEAK\r
+       EXTERN  PSPEAK\r
+       EXTERN  PUT\r
+       EXTERN  RND\r
+       EXTERN  RSPEAK\r
+       EXTERN  SPEAK\r
+       EXTERN  VOCAB\r
+       EXTERN  YES\r
+       EXTERN  #FIX\r
+       EXTERN  #WRITO\r
+       EXTERN  #RENDO\r
+       EXTERN  #RSVO\r
+       EXTERN  #UE\r
+       EXTERN  #EQ\r
+       EXTERN  #NE\r
+       EXTERN  PCT\r
+       EXTERN  GETWRD\r
+       EXTERN  PUTWRD\r
+       EXTERN  SIXOUT\r
+       JA      #ST\r
+#XR,   ORG     .+10\r
+       TEXT    +AMAIN +\r
+#RET,  SETX    #XR\r
+       SETB    #BASE\r
+       JA      .+3\r
+#BASE, ORG     .+6\r
+ZERO,  F 0\r
+ONE,   F 1\r
+TWO,   F 2\r
+THREE, F 3\r
+MINUS1,        F -1\r
+IND,   0;0;0\r
+       ORG     #BASE+30\r
+       FNOP\r
+       JA      #RET\r
+       FNOP\r
+#GOBAK,        0;0\r
+HINT,  ORG     .+3\r
+KENT,  ORG     .+3\r
+KQ,    ORG     .+3\r
+K2,    ORG     .+3\r
+LL,    ORG     .+3\r
+N,     ORG     .+3\r
+PBOTL, ORG     .+3\r
+SPK,   ORG     .+3\r
+WD1,   ORG     .+3\r
+WD1X,  ORG     .+3\r
+WD2,   ORG     .+3\r
+WD2X,  ORG     .+3\r
+YEA,   ORG     .+3\r
+#TMP,  ORG     .+30\r
+\r
+#LIT,  F 4             / Literals. Too many cause ST overflow\r
+       F 5     /3\r
+       F 6     /6\r
+       F 8     /11\r
+       F 9     /14\r
+       F 10    /17\r
+       F 12    /22\r
+       F 15    /25\r
+       F 16    /30\r
+       F 17    /33\r
+       F 20    /36\r
+       F 22    /41\r
+       F 23    /44\r
+       F 24    /47\r
+       F 25    /52\r
+       F 26    /55\r
+       F 27    /60\r
+       F 30    /63\r
+       F 35    /66\r
+       F 37    /71\r
+       F 39    /74\r
+       F 40    /77\r
+       F 45    /102\r
+       F 49    /105\r
+       F 50    /110\r
+       F 54    /113\r
+       F 57    /116\r
+       F 58    /121\r
+       F 62    /124\r
+       F 65    /127\r
+       F 81    /132\r
+       F 29    /135\r
+       F 91    /140\r
+       F 92    /143\r
+       F 95    /146\r
+       F 99    /151\r
+       F 100   /154\r
+       F 105   /157\r
+       F 110   /162\r
+       F 115   /165\r
+       F 116   /170\r
+       F 117   /173\r
+       F 127   /176\r
+       F 128   /201\r
+       F 129   /204\r
+       F 130   /207\r
+       F 131   /212\r
+       F 132   /215\r
+       F 136   /220\r
+       F 140   /223\r
+       F 141   /226\r
+       F 143   /231\r
+       F 145   /234\r
+       F 162   /237\r
+       F 163   /242\r
+       F 165   /245\r
+       F 175   /250\r
+       F 184   /253\r
+       F 185   /256\r
+       F 186   /261\r
+       F 188   /264\r
+       F 192   /267\r
+       F 193   /272\r
+       F 197   /275\r
+       F 199   /300\r
+       F 201   /303\r
+       F 300   /306\r
+       F 500   /311\r
+       F 1000  /314\r
+       F 2500  /317\r
+       F 10000 /322\r
+       F 80    /325\r
+       F 60    /330\r
+       F 154   /333\r
+TENTE, TEXT +ENTE  +\r
+TPOUR, TEXT +POUR  +\r
+TWEST, TEXT +WEST  +\r
+TQUES, TEXT +?@    +\r
+TQDOT, TEXT +".@   +\r
+TYES,  TEXT +YES   +\r
+TYE,   TEXT +YE    +\r
+TY,    TEXT +Y     +\r
+\f      #LBL=.\r
+       COMMON  ABBCOM\r
+ABB,   ORG     .+702\r
+       COMMON  MISCOM\r
+LINUSE,        ORG     .+3\r
+TRVS,  ORG     .+3\r
+CLSSES,        ORG     .+3\r
+OLDLOC,        ORG     .+3\r
+LOC,   ORG     .+3\r
+CVAL,  ORG     .+44\r
+TK,    ORG     .+74\r
+NEWLOC,        ORG     .+3\r
+KEY,   ORG     .+702\r
+PLAC,  ORG     .+454\r
+FIXD,  ORG     .+454\r
+ACTSPK,        ORG     .+151\r
+COND,  ORG     .+702\r
+HINTS, ORG     .+360\r
+HNTMAX,        ORG     .+3\r
+PROP,  ORG     .+454\r
+TALLY, ORG     .+3\r
+TALLY2,        ORG     .+3\r
+HINTLC,        ORG     .+74\r
+CHLOC, ORG     .+3\r
+CHLOC2,        ORG     .+3\r
+DSEEN, ORG     .+22\r
+DFLAG, ORG     .+3\r
+DLOC,  ORG     .+22\r
+DALTLC,        ORG     .+3\r
+KEYS,  ORG     .+3\r
+LAMP,  ORG     .+3\r
+GRATE, ORG     .+3\r
+CAGE,  ORG     .+3\r
+ROD,   ORG     .+3\r
+ROD2,  ORG     .+3\r
+STEPS, ORG     .+3\r
+BIRD,  ORG     .+3\r
+DOOR,  ORG     .+3\r
+PILLOW,        ORG     .+3\r
+SNAKE, ORG     .+3\r
+FISSUR,        ORG     .+3\r
+TABLET,        ORG     .+3\r
+CLAM,  ORG     .+3\r
+OYSTER,        ORG     .+3\r
+MAGZIN,        ORG     .+3\r
+DWARF, ORG     .+3\r
+KNIFE, ORG     .+3\r
+FOOD,  ORG     .+3\r
+BOTTLE,        ORG     .+3\r
+WATER, ORG     .+3\r
+OIL,   ORG     .+3\r
+PLANT, ORG     .+3\r
+PLANT2,        ORG     .+3\r
+AXE,   ORG     .+3\r
+MIRROR,        ORG     .+3\r
+DRAGON,        ORG     .+3\r
+CHASM, ORG     .+3\r
+TROLL, ORG     .+3\r
+TROLL2,        ORG     .+3\r
+BEAR,  ORG     .+3\r
+MESSAG,        ORG     .+3\r
+VEND,  ORG     .+3\r
+BATTER,        ORG     .+3\r
+NUGGET,        ORG     .+3\r
+COINS, ORG     .+3\r
+CHEST, ORG     .+3\r
+EGGS,  ORG     .+3\r
+TRIDNT,        ORG     .+3\r
+VASE,  ORG     .+3\r
+EMRALD,        ORG     .+3\r
+PYRAM, ORG     .+3\r
+PEARL, ORG     .+3\r
+RUG,   ORG     .+3\r
+CHAIN, ORG     .+3\r
+BACK,  ORG     .+3\r
+LOOK,  ORG     .+3\r
+CAVE,  ORG     .+3\r
+NULL,  ORG     .+3\r
+ENTRNC,        ORG     .+3\r
+DPRSSN,        ORG     .+3\r
+SAY,   ORG     .+3\r
+LOCK,  ORG     .+3\r
+THROW, ORG     .+3\r
+FIND,  ORG     .+3\r
+INVENT,        ORG     .+3\r
+TURNS, ORG     .+3\r
+LMWARN,        ORG     .+3\r
+KNFLOC,        ORG     .+3\r
+DETAIL,        ORG     .+3\r
+ABBNUM,        ORG     .+3\r
+NUMDIE,        ORG     .+3\r
+MAXDIE,        ORG     .+3\r
+DKILL, ORG     .+3\r
+FOOBAR,        ORG     .+3\r
+BONUS, ORG     .+3\r
+CLOCK1,        ORG     .+3\r
+CLOCK2,        ORG     .+3\r
+CLOSNG,        ORG     .+3\r
+PANIC, ORG     .+3\r
+CLOSED,        ORG     .+3\r
+GAVEUP,        ORG     .+3\r
+SCORNG,        ORG     .+3\r
+ODLOC, ORG     .+22\r
+STREAM,        ORG     .+3\r
+SPICES,        ORG     .+3\r
+\r
+       COMMON  MISC2\r
+I,     ORG     .+3\r
+       ORG     .+3     /RTXSIZ\r
+       ORG     .+3     /CLSMAX\r
+       ORG     .+3     /LOCSIZ\r
+CTEXT, ORG     .+44\r
+STEXT, ORG     .+702\r
+LTEXT, ORG     .+702\r
+       ORG     .+3     /SECT\r
+TRAVEL, ORG    .+1356\r
+TRVCON, ORG    .+1356\r
+TRVLOC, ORG    .+1356\r
+TRVSIZ,        ORG     .+3\r
+       ORG     .+3     /TABNDX\r
+OBJ,   ORG     .+3\r
+J,     ORG     .+3\r
+K,     ORG     .+3\r
+VERB,  ORG     .+3\r
+HNTSIZ,        ORG     .+3\r
+MAXTRS,        ORG     .+3\r
+HINTED,        ORG     .+74\r
+       ORG     .+3     /HNTLOC\r
+KK,    ORG     .+3\r
+       COMMON  PLACOM\r
+ATLOC, ORG     .+702\r
+LINK,  ORG     .+1130\r
+PLACE, ORG     .+454\r
+FIXED, ORG     .+454\r
+HOLDNG,        ORG     .+3\r
+       COMMON  PTXCOM\r
+PTEXT, ORG     .+454\r
+       COMMON  TXTCOM\r
+RTEXT, ORG     .+1147\r
+       ORG     .+44    /LINES\r
+       ORG     .+3     /ASCVAR\r
+       ORG     .+3     /TXTLOC\r
+       ORG     .+234   /DATA\r
+       COMMON  MISC3\r
+ATTACK,        ORG     .+3\r
+DTOTAL,        ORG     .+3\r
+OLDLC2,        ORG     .+3\r
+LIMIT, ORG     .+3\r
+MXSCOR,        ORG     .+3\r
+SCORE, ORG     .+3\r
+STICK, ORG     .+3\r
+WZDARK,        ORG     .+3\r
+\f      ORG     #LBL\r
+#25000,\r
+#RTN,  BASE    #BASE\r
+       JA      #GOBAK\r
+#ST,   STARTD\r
+       0210\r
+       FSTA    #GOBAK,0\r
+       0200\r
+       SETX    #XR\r
+       SETB    #BASE\r
+       STARTF\r
+       JA      #STRT    /#G0001\r
+/\r
+/ Statement functions - called with JSA to save space\r
+/\r
+/      TOTING(OBJ)=PLACE(OBJ).EQ.-1\r
+TOTING,        0;0\r
+       ATX     3\r
+       FLDA    PLACE-3,3\r
+       FADD    ONE\r
+       JSA     #EQ\r
+       JA      TOTING\r
+\r
+/      AT(OBJ)=PLACE(OBJ).EQ.LOC.OR.FIXED(OBJ).EQ.LOC\r
+AT,    0;0\r
+       ATX     3\r
+       FLDA    PLACE-3,3\r
+       FSUB    LOC\r
+       JEQ     ISAT\r
+       FLDA    FIXED-3,3\r
+       FSUB    LOC\r
+ISAT,  JSA     #EQ\r
+       JA      AT\r
+\r
+/      FORCED(LOC)=COND(LOC).EQ.2\r
+FORCED,        0;0\r
+       ATX     3\r
+       FLDA    COND-3,3\r
+       FSUB    TWO\r
+       JSA     #EQ\r
+       JA      FORCED\r
+\r
+/      HERE(OBJ) = PLACE(OBJ).EQ.LOC .OR. TOTING(OBJ)\r
+HERE,  0;0\r
+       JSA     TOTING\r
+       JNE     ISHERE\r
+       FLDA    LOC\r
+       FSUB    PLACE-3,3\r
+       JEQ     ISHERE\r
+       FCLA\r
+       JA      HERE\r
+ISHERE,        FLDA    ONE\r
+       JA      HERE\r
+\r
+/ DARK(DUMMY)=MOD(COND(LOC),2).EQ.0.AND.(PROP(LAMP).EQ.0.OR.\r
+/ 1    .NOT.HERE(LAMP))\r
+\r
+DARK,  0;0\r
+/ .OR. .NOT. HERE(LAMP)\r
+       FLDA    LAMP\r
+       JSA     HERE\r
+       JEQ     NOTHR\r
+/ .OR. PROP(LAMP) EQ 0\r
+       FLDA    PROP-3,3\r
+       JNE     NOTDRK\r
+/ MOD(COND(LOC),2) .EQ. 0\r
+NOTHR, FLDA    LOC             / Either prop or not here\r
+       ATX     4\r
+       FLDA    COND-3,4        / COND(LOC)\r
+       FDIV    TWO             / Divided by two\r
+       JSA     #FIX\r
+       FMUL    TWO\r
+       FSTA    #TMP+14\r
+       FLDA    COND-3,4        / Get back COND(LOC)\r
+       FSUB    #TMP+14         / Now have mod\r
+       JNE     NOTDRK          / If not zero, not dark\r
+       FLDA    ONE\r
+       JA      DARK\r
+NOTDRK,        FCLA\r
+       JA      DARK\r
+\r
+/      LIQ2(PBOTL)=(1-PBOTL)*WATER+(PBOTL/2)*(WATER+OIL)\r
+LIQ2,  0;0\r
+       FLDA    ONE\r
+       FSUB    PBOTL           / 1 - PBOTL\r
+       FMUL    WATER           / (1-PBOTL)*WATER\r
+       FSTA    #TMP+14         / Store first term\r
+       FLDA    PBOTL\r
+       FDIV    TWO             / PBOTL/2\r
+       JSA     #FIX\r
+       FSTA    #TMP+6\r
+       FLDA    WATER\r
+       FADD    OIL             / WATER+OIL\r
+       FMUL    #TMP+6          / (PBOTL/2)*(WATER+OIL)\r
+       FADD    #TMP+14\r
+       JA      LIQ2            / Done\r
+\r
+/      LIQ(DUMMY)=LIQ2(MAX0(PROP(BOTTLE),-1-PROP(BOTTLE)))\r
+LIQ,   0;0\r
+/PROP(BOTTLE)\r
+       FLDA    BOTTLE\r
+       ATX     5\r
+       FLDA    PROP-3,5        / PROP(BOTTLE)\r
+       FSTA    PBOTL   \r
+       FLDA    MINUS1\r
+       FSUB    PBOTL           /-1-PROP(BOTTLE)\r
+       FSTA    #TMP+11\r
+       FLDA    PBOTL           / Find larger\r
+       FSUB    #TMP+11\r
+       JGT     .+4             / already larger, now PBOTL\r
+       FLDA    #TMP+11\r
+       FSTA    PBOTL           / This is PBOTL\r
+       JSA     LIQ2            / Call LIQ2 with this\r
+       JA      LIQ             / And return\r
+\r
+/      LIQLOC(LOC)=LIQ2((MOD(COND(LOC)/2*2,8)-5)*MOD(COND(LOC)/4,2)+1)\r
+LIQLOC,        0;0\r
+       FLDA    LOC             / Always called with LOC as arg\r
+       ATX     2\r
+       FLDA    COND-3,2        / COND(LOC)\r
+       FSTA    #TMP+11         / Save that\r
+       FDIV    TWO\r
+       JSA     #FIX            / COND(LOC)/2\r
+       FMUL    TWO             / COND(LOC)/2*2\r
+       FSTA    #TMP+17\r
+       FDIV    #LIT+11         / Modulo 8\r
+       JSA     #FIX\r
+       FMUL    #LIT+11\r
+       FSTA    #TMP+22\r
+       FLDA    #TMP+17\r
+       FSUB    #TMP+22         / MOD(...)\r
+       FSUB    #LIT+3          / -5.\r
+       FSTA    #TMP+25         / First Term\r
+       FLDA    #TMP+11         / COND(LOC)\r
+       FDIV    #LIT            / COND(LOC)/4\r
+       JSA     #FIX\r
+       FSTA    #TMP+17\r
+       FDIV    TWO             / Mod 2\r
+       JSA     #FIX\r
+       FMUL    TWO\r
+       FSTA    #TMP+22\r
+       FLDA    #TMP+17\r
+       FSUB    #TMP+22\r
+       FMUL    #TMP+25         / Multiply\r
+       FADD    ONE             / +1\r
+       FSTA    PBOTL           / Finally got the term\r
+       JSA     LIQ2            / Send to LIQ2\r
+       JA      LIQLOC\r
+/\r
+/ Read the property field - object passed in FAC\r
+/\r
+RDPROP,        0;0\r
+       ATX     7\r
+       FLDA    PROP-3,7\r
+       JA      RDPROP\r
+/\r
+/ Print a string\r
+/\r
+SPRINT,        0;0\r
+       LDX     0,1\r
+       STARTD\r
+       FLDA    SPRINT\r
+       FSTA    IND             /Indirect pointer\r
+       FLDA%   IND,1\r
+       FSTA    PTR\r
+       FLDA%   IND,1+\r
+       FSTA    CNT\r
+       FLDA    D4              /Add four to skip arguments\r
+       FADDM   SPRINT\r
+       STARTD\r
+       JSR     SIXOUT\r
+       JA      SPRINT\r
+PTR,   0;0\r
+       JA      ZERO\r
+CNT,   0;0\r
+D4,    0;4\r
+\f/\r
+/ Main routine entry point\r
+/\r
+#STRT, \r
+/1      I=RND(1)\r
+#1,    JSR     RND\r
+       JA      .+4\r
+       JA      ONE\r
+       FSTA    I\r
+/      HINTED(3)=YES(65,1,0)\r
+       JSR     YES\r
+       JA      .+10\r
+       JA      #LIT+127\r
+       JA      ONE\r
+       JA      ZERO\r
+       FSTA    HINTED+6                /HINTED(3)\r
+/      NEWLOC=1\r
+       FLDA    ONE\r
+       FSTA    NEWLOC\r
+/      LOC = NEWLOC\r
+       FSTA    LOC\r
+/      LIMIT=330\r
+       DECIMAL\r
+               LDX     330,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    LIMIT\r
+/      IF(HINTED(3))LIMIT=1000\r
+       FLDA    HINTED+6                /HINTED(3)\r
+       JEQ     #2\r
+       FLDA    #LIT+314\r
+       FSTA    LIMIT\r
+/2      IF(NEWLOC.GE.9.OR.NEWLOC.EQ.0.OR..NOT.CLOSNG)GOTO 71\r
+#2,    FLDA    NEWLOC\r
+       FSUB    #LIT+14\r
+       JGE     #71\r
+       FLDA    NEWLOC\r
+       JEQ     #71\r
+       FLDA    CLOSNG\r
+       JEQ     #71\r
+/      CALL RSPEAK(130)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+207\r
+/      NEWLOC=LOC\r
+       FLDA    LOC\r
+       FSTA    NEWLOC\r
+/      IF(.NOT.PANIC)CLOCK2=15\r
+       FLDA    PANIC\r
+       JNE     .+5\r
+       FLDA    #LIT+25\r
+       FSTA    CLOCK2\r
+/      PANIC=.TRUE.\r
+       FLDA    ONE\r
+       FSTA    PANIC\r
+/C\r
+/C SEE IF A DWARF HAS SEEN HIM AND HAS COME FROM WHERE HE WANTS TO GO. IF SO,\r
+/C THE DWARF'S BLOCKING HIS WAY. IF COMING FROM PLACE FORBIDDEN TO PIRATE\r
+/C (DWARVES ROOTED IN PLACE) LET HIM GET OUT (AND ATTACKED).\r
+/C\r
+/71     IF(NEWLOC.EQ.LOC.OR.FORCED(LOC).OR.BITSET(LOC,3))GOTO 74\r
+#71,   FLDA    NEWLOC\r
+       FSUB    LOC\r
+       JEQ     #74\r
+       FLDA    LOC\r
+       JSA     FORCED\r
+       JNE     #74\r
+       JSR     BITSET\r
+       JA      .+6\r
+       JA      LOC\r
+       JA      THREE\r
+       JNE     #74\r
+/      DO 73 I=1,5\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      IF(ODLOC(I).NE.NEWLOC.OR..NOT.DSEEN(I))GOTO 73\r
+#G0047,        FLDA    I\r
+       ATX     7\r
+       FLDA    ODLOC-3,7\r
+       FSUB    NEWLOC\r
+       JNE     #73\r
+       FLDA    DSEEN-3,7\r
+       JEQ     #73\r
+/      NEWLOC=LOC\r
+       FLDA    LOC\r
+       FSTA    NEWLOC\r
+/      CALL RSPEAK(2)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      TWO\r
+/      GOTO 74\r
+       JA      #74\r
+/73     CONTINUE\r
+#73,   FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+3\r
+       JLE     #G0047\r
+\r
+#74,   FLDA    NEWLOC\r
+       FSTA    LOC\r
+/C\r
+/C DWARF STUFF. SEE EARLIER COMMENTS FOR DESCRIPTION OF VARIABLES. REMEMBER\r
+/C SIXTH DWARF IS PIRATE AND IS THUS VERY DIFFERENT EXCEPT FOR MOTION RULES.\r
+/C\r
+/C FIRST OFF, DON'T LET THE DWARVES FOLLOW HIM INTO A PIT OR A WALL. ACTIVATE\r
+/C THE WHOLE MESS THE FIRST TIME HE GETS AS FAR AS THE HALL OF MISTS (LOC 15).\r
+/C IF NEWLOC IS FORBIDDEN TO PIRATE (IN PARTICULAR, IF IT'S BEYOND THE TROLL\r
+/C BRIDGE), BYPASS DWARF STUFF. THAT WAY PIRATE CAN'T STEAL RETURN TOLL, AND\r
+/C DWARVES CAN'T MEET THE BEAR. ALSO MEANS DWARVES WON'T FOLLOW HIM INTO DEAD\r
+/C END IN MAZE, BUT C'EST LA VIE. THEY'LL WAIT FOR HIM OUTSIDE THE DEAD END.\r
+/C\r
+/      IF(LOC.EQ.0.OR.FORCED(LOC).OR.BITSET(NEWLOC,3))GOTO 2000\r
+/      FLDA    LOC\r
+       JEQ     #2000\r
+/      FLDA    LOC\r
+       JSA     FORCED\r
+       JNE     #2000\r
+       JSR     BITSET\r
+       JA      .+6\r
+       JA      NEWLOC\r
+       JA      THREE\r
+       JNE     #2000\r
+/      IF(DFLAG.NE.0)GOTO 6000\r
+       FLDA    DFLAG\r
+       JNE     #6000\r
+/      IF(LOC.GE.15)DFLAG=1\r
+       FLDA    LOC\r
+       FSUB    #LIT+25\r
+       JLT     #2000\r
+       FLDA    ONE\r
+       FSTA    DFLAG\r
+/      GOTO 2000\r
+       JA      #2000\r
+\r
+/C\r
+/C WHEN WE ENCOUNTER THE FIRST DWARF, WE KILL 0, 1, OR 2 OF THE 5 DWARVES. IF\r
+/C ANY OF THE SURVIVORS IS AT LOC, REPLACE HIM WITH THE ALTERNATE.\r
+/C\r
+/6000   IF(DFLAG.NE.1)GOTO 6010\r
+#6000, FLDA    DFLAG\r
+       FSUB    ONE\r
+       JNE     #6010\r
+/      IF(LOC.LT.15.OR.PCT(95))GOTO 2000\r
+       FLDA    LOC\r
+       FSUB    #LIT+25\r
+       JLT     #2000\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+146\r
+       JNE     #2000\r
+/      DFLAG=2\r
+       FLDA    TWO\r
+       FSTA    DFLAG\r
+/      DO 6001 I=1,2\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      J=1+RND(5)\r
+#G0051,        JSR     RND\r
+       JA      .+4\r
+       JA      #LIT+3\r
+       FADD    ONE\r
+       FSTA    J\r
+\r
+/6001   IF(PCT(50))DLOC(J)=0\r
+#6001, JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+110\r
+       JEQ     .+10\r
+       FLDA    J\r
+       ATX     7\r
+       FCLA\r
+       FSTA    DLOC-3,7\r
+       FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    TWO\r
+       JLE     #G0051\r
+/      DO 6002 I=1,5\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      IF(DLOC(I).EQ.LOC)DLOC(I)=DALTLC\r
+#G0053,        FLDA    I\r
+       ATX     7\r
+       FLDA    DLOC-3,7\r
+       FSUB    LOC\r
+       JNE     #6002\r
+       FLDA    DALTLC\r
+       FSTA    DLOC-3,7\r
+/6002   ODLOC(I)=DLOC(I)\r
+#6002, FLDA    I\r
+       ATX     7\r
+       FLDA    DLOC-3,7\r
+       FSTA    ODLOC-3,7\r
+       FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+3\r
+       JLE     #G0053\r
+/      CALL RSPEAK(3)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      THREE\r
+/      CALL DROP(AXE,LOC)\r
+       JSR     DROP\r
+/      GOTO 2000\r
+       JA      #2000\r
+       JA      AXE\r
+       JA      LOC\r
+\r
+/C\r
+/C THINGS ARE IN FULL SWING. MOVE EACH DWARF AT RANDOM, EXCEPT IF HE'S SEEN US\r
+/C HE STICKS WITH US. DWARVES NEVER GO TO LOCS <15. IF WANDERING AT RANDOM,\r
+/C THEY DON'T BACK UP UNLESS THERE'S NO ALTERNATIVE. IF THEY DON'T HAVE TO\r
+/C MOVE, THEY ATTACK. AND, OF COURSE, DEAD DWARVES DON'T DO MUCH OF ANYTHING.\r
+/C\r
+/6010   DTOTAL=0\r
+#6010, FCLA\r
+       FSTA    DTOTAL\r
+/      ATTACK=0\r
+       FSTA    ATTACK\r
+/      STICK=0\r
+       FSTA    STICK\r
+/      DO 6030 I=1,6\r
+       FLDA    ONE\r
+       FSTA    I\r
+/       IF (DLOC(I).EQ.0)GOTO 6030\r
+#G0055,        FLDA    I\r
+       ATX     7\r
+       FLDA    DLOC-3,7\r
+       JEQ     #6030\r
+/      J=1\r
+       FLDA    ONE\r
+       FSTA    J\r
+/      KK=DLOC(I)\r
+       FLDA    DLOC-3,7\r
+       FSTA    KK\r
+/      KK=KEY(KK)\r
+       ATX     7\r
+       FLDA    KEY-3,7\r
+       FSTA    KK\r
+/      IF(KK.EQ.0)GOTO 6016\r
+       JEQ     #6016\r
+\r
+/6012   NEWLOC=TRVLOC(KK)\r
+#6012, JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVLOC\r
+       JA      KK\r
+       JA      ZERO\r
+       FSTA    NEWLOC\r
+/      IF(NEWLOC.GT.300.OR.NEWLOC.LT.15.OR.NEWLOC.EQ.ODLOC(I)\r
+/      1       .OR.(J.GT.1.AND.NEWLOC.EQ.TK(J-1)).OR.J.GE.20\r
+/      2       .OR.NEWLOC.EQ.DLOC(I).OR.FORCED(NEWLOC)\r
+/      3       .OR.(I.EQ.6.AND.BITSET(NEWLOC,3))\r
+/      4       .OR.TRVCON(KK).EQ.100)GOTO 6014\r
+       FSUB    #LIT+306\r
+       JGT     #6014\r
+       FLDA    NEWLOC\r
+       FSUB    #LIT+25\r
+       JLT     #6014\r
+       FLDA    I\r
+       ATX     7\r
+       FLDA    NEWLOC\r
+       FSUB    ODLOC-3,7\r
+       JEQ     #6014\r
+       FLDA    J\r
+       FSUB    ONE\r
+       JLE     .+11\r
+       ATX     6\r
+       FLDA    NEWLOC\r
+       FSUB    TK-3,6\r
+       JEQ     #6014\r
+       FLDA    J\r
+       FSUB    #LIT+36\r
+       JGE     #6014\r
+       FLDA    I\r
+       ATX     7\r
+       FLDA    NEWLOC\r
+       FSUB    DLOC-3,7\r
+       JEQ     #6014\r
+       FLDA    NEWLOC\r
+       JSA     FORCED\r
+       JNE     #6014\r
+       FLDA    I\r
+       FSUB    #LIT+6\r
+       JNE     .+14\r
+       JSR     BITSET\r
+       JA      .+6\r
+       JA      NEWLOC\r
+       JA      THREE\r
+       JNE     #6014\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVCON\r
+       JA      KK\r
+       JA      ZERO\r
+       FSUB    #LIT+154\r
+       JEQ     #6014\r
+/      TK(J)=NEWLOC\r
+       FLDA    J\r
+       ATX     7\r
+       FLDA    NEWLOC\r
+       FSTA    TK-3,7\r
+/      J=J+1\r
+       FLDA    ONE\r
+       FADDM   J\r
+\r
+/6014   KK=KK+1\r
+#6014, FLDA    KK\r
+       FADD    ONE\r
+       FSTA    KK\r
+/      IF(TRAVEL(KK-1).GE.0)GOTO 6012\r
+       FSUB    ONE\r
+       FSTA    #TMP\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRAVEL\r
+       JA      #TMP\r
+       JA      ZERO\r
+       JGE     #6012\r
+/6016   TK(J)=ODLOC(I)\r
+#6016, FLDA    J\r
+       ATX     6\r
+       FLDA    I\r
+       ATX     7\r
+       FLDA    ODLOC-3,7\r
+       FSTA    TK-3,6\r
+/      IF(J.GE.2)J=J-1\r
+       FLDA    J\r
+       FSUB    TWO\r
+       JLT     .+5\r
+       FLDA    MINUS1\r
+       FADDM   J\r
+/      J=1+RND(J)\r
+       JSR     RND\r
+       JA      .+4\r
+       JA      J\r
+       FADD    ONE\r
+       FSTA    J\r
+/      ODLOC(I)=DLOC(I)\r
+       FLDA    DLOC-3,7\r
+       FSTA    ODLOC-3,7\r
+/      DLOC(I)=TK(J)\r
+       FLDA    J\r
+       ATX     6\r
+       FLDA    TK-3,6\r
+       FSTA    DLOC-3,7\r
+/      DSEEN(I)=(DSEEN(I).AND.LOC.GE.15)\r
+/      1       .OR.(DLOC(I).EQ.LOC.OR.ODLOC(I).EQ.LOC)\r
+       FLDA    LOC\r
+       FSUB    #LIT+25\r
+       JLT     .+6\r
+       FLDA    DSEEN-3,7\r
+       JNE     .+21\r
+       FLDA    DLOC-3,7\r
+       FSUB    LOC\r
+       JEQ     .+13\r
+       FLDA    ODLOC-3,7\r
+       FSUB    LOC\r
+       JEQ     .+5\r
+       FCLA\r
+       JA      .+3\r
+       FLDA    ONE\r
+       FSTA    DSEEN-3,7\r
+/      IF(.NOT.DSEEN(I))GOTO 6030\r
+       JEQ     #6030\r
+/      DLOC(I)=LOC\r
+       FLDA    LOC\r
+       FSTA    DLOC-3,7\r
+/      IF(I.NE.6)GOTO 6027\r
+       FLDA    I\r
+       FSUB    #LIT+6\r
+       JNE     #6027\r
+/C\r
+/C THE PIRATE'S SPOTTED HIM. HE LEAVES HIM ALONE ONCE WE'VE FOUND CHEST.\r
+/C K COUNTS IF A TREASURE IS HERE. IF NOT, AND TALLY=TALLY2 PLUS ONE FOR\r
+/C AN UNSEEN CHEST, LET THE PIRATE BE SPOTTED.\r
+/C\r
+/      IF(LOC.EQ.CHLOC.OR.PROP(CHEST).GE.0)GOTO 6030\r
+\r
+       FLDA    LOC\r
+       FSUB    CHLOC\r
+       JEQ     #6030\r
+       FLDA    CHEST\r
+       JSA     RDPROP\r
+       JGE     #6030\r
+/      K=0\r
+       FCLA\r
+       FSTA    K\r
+/      DO 6020 J=50,MAXTRS\r
+       FLDA    #LIT+110\r
+       FSTA    J\r
+/C\r
+/C PIRATE WON'T TAKE PYRAMID FROM PLOVER ROOM OR DARK ROOM (TOO EASY!).\r
+/C\r
+/      IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)\r
+/      1       .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6020\r
+#G0057,        FLDA    J\r
+       FSUB    PYRAM\r
+       JNE     .+24\r
+       FLDA    PYRAM\r
+       ATX     7\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,7\r
+       JEQ     #6020\r
+       FLDA    EMRALD\r
+       ATX     6\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,6\r
+       JEQ     #6020\r
+/      IF(TOTING(J))GOTO 6022\r
+       FLDA    J\r
+       JSA     TOTING\r
+       JNE     #6022\r
+\r
+/6020   IF(HERE(J))K=1\r
+#6020, FLDA    J\r
+       JSA     HERE\r
+       JEQ     .+5\r
+       FLDA    ONE\r
+       FSTA    K\r
+       FLDA    J\r
+       FADD    ONE\r
+       FSTA    J\r
+       FSUB    MAXTRS\r
+       JLE     #G0057\r
+/      IF(TALLY.EQ.TALLY2+1.AND.K.EQ.0.AND.PLACE(CHEST).EQ.0\r
+/      1       .AND.HERE(LAMP).AND.PROP(LAMP).EQ.1)GOTO 6025\r
+       FLDA    TALLY2\r
+       FADD    ONE\r
+       FSUB    TALLY\r
+       JNE     #M4\r
+       FLDA    K\r
+       JNE     #M4\r
+       FLDA    CHEST\r
+       ATX     7\r
+       FLDA    PLACE-3,7\r
+       JNE     #M4\r
+       FLDA    LAMP\r
+       JSA     HERE\r
+       JEQ     #M4\r
+       FLDA    PROP-3,3\r
+       FSUB    ONE\r
+       JEQ     #6025\r
+/      IF(ODLOC(6).NE.DLOC(6).AND.PCT(20))CALL RSPEAK(127)\r
+#M4,   FLDA    ODLOC+17        /ODLOC(6)\r
+       FSUB    DLOC+17         /DLOC(6)\r
+       JEQ     #6030\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+36\r
+       JEQ     #6030\r
+       JSR     RSPEAK\r
+/      GOTO 6030\r
+       JA      #6030\r
+       JA      #LIT+176\r
+/C\r
+/6022   CALL RSPEAK(128)\r
+#6022, JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+201\r
+/C\r
+/C DON'T STEAL CHEST BACK FROM TROLL!\r
+/C\r
+/      IF(PLACE(MESSAG).EQ.0)CALL MOVE(CHEST,CHLOC)\r
+       FLDA    MESSAG\r
+       ATX     7\r
+       FLDA    PLACE-3,7\r
+       JNE     .+12\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      CHEST\r
+       JA      CHLOC\r
+/      CALL MOVE(MESSAG,CHLOC2)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      MESSAG\r
+       JA      CHLOC2\r
+/      DO 6023 J=50,MAXTRS\r
+       FLDA    #LIT+110\r
+       FSTA    J\r
+\r
+/      IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)\r
+/      1       .OR.LOC.EQ.PLAC(EMRALD)))GOTO 6023\r
+#G0063,        FLDA    J\r
+       FSUB    PYRAM\r
+       JNE     .+24\r
+       FLDA    PYRAM\r
+       ATX     7\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,7\r
+       JEQ     #6023\r
+       FLDA    EMRALD\r
+       ATX     6\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,6\r
+       JEQ     #6023\r
+/      IF(AT(J).AND.FIXED(J).EQ.0)CALL CARRY(J,LOC)\r
+       FLDA    J\r
+       JSA     AT\r
+       JEQ     .+16\r
+/      FLDA    J\r
+/      ATX     3\r
+       FLDA    FIXED-3,3\r
+       JNE     .+12\r
+       JSR     CARRY\r
+       JA      .+6\r
+       JA      J\r
+       JA      LOC\r
+/      IF(TOTING(J))CALL DROP(J,CHLOC)\r
+       FLDA    J\r
+       JSA     TOTING\r
+       JEQ     #6023\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      J\r
+       JA      CHLOC\r
+/6023   CONTINUE\r
+#6023, FLDA    J\r
+       FADD    ONE\r
+       FSTA    J\r
+       FSUB    MAXTRS\r
+       JLE     #G0063\r
+\r
+/6024   DLOC(6)=CHLOC\r
+#6024, FLDA    #LIT+6\r
+       ATX     7\r
+       FLDA    CHLOC\r
+       FSTA    DLOC-3,7\r
+/      ODLOC(6)=CHLOC\r
+       FSTA    ODLOC-3,7\r
+/      DSEEN(6)=.FALSE.\r
+       FCLA\r
+       FSTA    DSEEN-3,7\r
+/      GOTO 6030\r
+       JA      #6030\r
+\r
+/C\r
+/6025   CALL RSPEAK(186)\r
+\r
+#6025, JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+261\r
+/      CALL MOVE(CHEST,CHLOC)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      CHEST\r
+       JA      CHLOC\r
+/      CALL MOVE(MESSAG,CHLOC2)\r
+       JSR     MOVE\r
+/      GOTO 6024\r
+       JA      #6024\r
+       JA      MESSAG\r
+       JA      CHLOC2\r
+\r
+/C\r
+/C THIS THREATENING LITTLE DWARF IS IN THE ROOM WITH HIM!\r
+/C\r
+/6027   DTOTAL=DTOTAL+1\r
+#6027, FLDA    ONE\r
+       FADDM   DTOTAL\r
+/      IF(ODLOC(I).NE.DLOC(I))GOTO 6030\r
+       FLDA    I\r
+       ATX     7\r
+       FLDA    ODLOC-3,7\r
+       FSUB    DLOC-3,7\r
+       JNE     #6030\r
+/      ATTACK=ATTACK+1\r
+       FLDA    ONE\r
+       FADDM   ATTACK\r
+/      IF(KNFLOC.GE.0)KNFLOC=LOC\r
+       FLDA    KNFLOC\r
+       JLT     .+6\r
+       FLDA    LOC\r
+       FSTA    KNFLOC\r
+/      IF(RND(1000).LT.95*(DFLAG-2))STICK=STICK+1\r
+       JSR     RND\r
+       JA      .+4\r
+       JA      #LIT+314\r
+       FSTA    #TMP\r
+       FLDA    DFLAG\r
+       FSUB    TWO\r
+       FMUL    #LIT+146\r
+       FSUB    #TMP\r
+       JLT     #6030\r
+       FLDA    ONE\r
+       FADDM   STICK\r
+/6030   CONTINUE\r
+#6030, FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+6\r
+       JLE     #G0055\r
+/C\r
+/C NOW WE KNOW WHAT'S HAPPENING. LET'S TELL THE POOR SUCKER ABOUT IT.\r
+/C\r
+/      IF(DTOTAL.EQ.0)GOTO 2000\r
+       FLDA    DTOTAL\r
+       JEQ     #2000\r
+/      IF(DTOTAL.EQ.1)GOTO 75\r
+       FSUB    ONE\r
+       JEQ     #75\r
+/      TYPE 67,DTOTAL\r
+/67     FORMAT(' There are ',I1,' threatening little dwarves in the'\r
+/      1       ,' room with you.')\r
+\r
+       JSR     SPRINT\r
+       JA      #67A\r
+       JA      TWO\r
+\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #67\r
+       FLDA    DTOTAL\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+\r      JA      #67B\r
+       JA      ONE\r
+/       GOTO 77\r
+       JA      #77\r
+\r
+/75     CALL RSPEAK(4)\r
+#75,   JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT\r
+\r
+/77     IF(ATTACK.EQ.0)GOTO 2000\r
+#77,   FLDA    ATTACK\r
+       JEQ     #2000\r
+/      IF(DFLAG.EQ.2)DFLAG=3\r
+       FLDA    DFLAG\r
+       FSUB    TWO\r
+       JNE     .+5\r
+       FLDA    THREE\r
+       FSTA    DFLAG\r
+/      IF(ATTACK.EQ.1)GOTO 79\r
+       FLDA    ATTACK\r
+       FSUB    ONE\r
+       JEQ     #79\r
+/      TYPE 78,ATTACK\r
+/78     FORMAT(' ',I1,' of them throw knives at you!')\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #78\r
+       FLDA    ATTACK\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+       JSA     SPRINT\r
+       JA      #78B\r
+       JA      ONE\r
+/      K=6\r
+       FLDA    #LIT+6\r
+       FSTA    K\r
+\r
+/82     IF(STICK.GT.1)GOTO 83\r
+#82,   FLDA    STICK\r
+       FSUB    ONE\r
+       JGT     #83\r
+/      CALL RSPEAK(K+STICK)\r
+       FLDA    K\r
+       FADD    STICK\r
+       FSTA    #TMP\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #TMP\r
+/      IF(STICK.EQ.0)GOTO 2000\r
+       FLDA    STICK\r
+       JEQ     #2000\r
+/      GOTO 84\r
+       JA      #84\r
+\r
+/83     TYPE 68,STICK\r
+#83,   TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #68\r
+       FLDA    STICK\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+/68     FORMAT(' ',I1,' of them get you!')\r
+       JSA     SPRINT\r
+       JA      #68B\r
+       JA      ONE\r
+/84     OLDLC2=LOC\r
+#84,   FLDA    LOC\r
+       FSTA    OLDLC2\r
+/      GOTO 99\r
+       JA      #99\r
+\r
+/C\r
+/79     CALL RSPEAK(5)\r
+#79,   JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+3\r
+/      K=52\r
+       DECIMAL\r
+               LDX     52,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    K\r
+/      GOTO 82\r
+       JA      #82\r
+\r
+/C DESCRIBE THE CURRENT LOCATION AND (MAYBE) GET NEXT COMMAND.\r
+/C\r
+/C PRINT TEXT FOR CURRENT LOC.\r
+/C\r
+/2000   IF(LOC.EQ.0)GOTO 99\r
+#2000, FLDA    LOC\r
+       JEQ     #99\r
+/      KK=STEXT(LOC)\r
+       FLDA    LOC\r
+       ATX     7\r
+       FLDA    STEXT-3,7\r
+       FSTA    KK\r
+/      KENT=0\r
+       FCLA\r
+       FSTA    KENT\r
+/      IF (ABBNUM.NE.0) KENT=MOD(ABB(LOC),ABBNUM)\r
+       FLDA    ABBNUM\r
+       JEQ     NOMOD\r
+/      FLDA    LOC\r
+/      ATX     7\r
+       FLDA    ABB-3,7\r
+       FSTA    #TMP\r
+       JSR     MOD\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      ABBNUM\r
+       FSTA    KENT\r
+/      IF (KENT.EQ.0.OR.KK.EQ.0) KK=LTEXT(LOC)\r
+NOMOD, FLDA    KENT\r
+       JEQ     .+6\r
+       FLDA    KK\r
+       JNE     .+11\r
+       FLDA    LOC\r
+       ATX     7\r
+       FLDA    LTEXT-3,7\r
+       FSTA    KK\r
+/      IF(FORCED(LOC).OR..NOT.DARK(0))GOTO 2001\r
+       FLDA    LOC\r
+       JSA     FORCED\r
+       JNE     #2001\r
+       JSA     DARK\r
+       JEQ     #2001\r
+/      IF(WZDARK.AND.PCT(35))GOTO 90\r
+       FLDA    WZDARK\r
+       JEQ     .+12\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+66\r
+       JNE     #90\r
+/      KK=RTEXT(16)\r
+       FLDA    RTEXT+55\r
+       FSTA    KK\r
+\r
+/2001   IF(TOTING(BEAR))CALL RSPEAK(141)\r
+#2001, FLDA    BEAR\r
+       JSA     TOTING\r
+       JEQ     .+10\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+226\r
+/      CALL SPEAK(KK)\r
+       JSR     SPEAK\r
+       JA      .+4\r
+       JA      KK\r
+/      K=1\r
+       FLDA    ONE\r
+       FSTA    K\r
+/      IF(FORCED(LOC))GOTO 8\r
+       FLDA    LOC\r
+       JSA     FORCED\r
+       JNE     #8\r
+/      IF(LOC.EQ.33.AND.PCT(25).AND..NOT.CLOSNG)CALL RSPEAK(8)\r
+       DECIMAL\r
+               LDX     33,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    LOC\r
+       JNE     .+24\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+52\r
+       JEQ     .+14\r
+       FLDA    CLOSNG\r
+       JNE     .+10\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+11\r
+/C\r
+/C PRINT OUT DESCRIPTIONS OF OBJECTS AT THIS LOCATION. IF NOT CLOSING AND\r
+/C PROPERTY VALUE IS NEGATIVE, TALLY OFF ANOTHER TREASURE. RUG IS SPECIAL\r
+/C CASE; ONCE SEEN, ITS PROP IS 1 (DRAGON ON IT) TILL DRAGON IS KILLED.\r
+/C SIMILARLY FOR CHAIN; PROP IS INITIALLY 1 (LOCKED TO BEAR). THESE HACKS\r
+/C ARE BECAUSE PROP=0 IS NEEDED TO GET FULL SCORE.\r
+/C\r
+/      IF(DARK(0))GOTO 2012\r
+       JSA     DARK\r
+       JNE     #2012\r
+/      ABB(LOC)=ABB(LOC)+1\r
+       FLDA    LOC\r
+       ATX     4\r
+       FLDA    ONE\r
+       FADDM   ABB-3,7\r
+/      I=ATLOC(LOC)\r
+       FLDA    ATLOC-3,7\r
+       FSTA    I\r
+\r
+/2004   IF(I.EQ.0)GOTO 2012\r
+#2004, FLDA    I\r
+       JEQ     #2012\r
+/      OBJ=I\r
+       FSTA    OBJ\r
+/      IF(OBJ.GT.100)OBJ=OBJ-100\r
+       FSUB    #LIT+154\r
+       JLE     .+4\r
+/      FLDA    OBJ\r
+/      FSUB    #LIT+154\r
+       FSTA    OBJ\r
+/      IF(OBJ.EQ.STEPS.AND.TOTING(NUGGET))GOTO 2008\r
+       FLDA    OBJ\r
+       FSUB    STEPS\r
+       JNE     .+10\r
+       FLDA    NUGGET\r
+       JSA     TOTING\r
+       JNE     #2008\r
+/      IF(PROP(OBJ).GE.0)GOTO 2006\r
+       FLDA    OBJ\r
+       JSA     RDPROP\r
+       JGE     #2006\r
+/      IF(CLOSED)GOTO 2008\r
+       FLDA    CLOSED\r
+       JNE     #2008\r
+/      PROP(OBJ)=0\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      IF(OBJ.EQ.RUG.OR.OBJ.EQ.CHAIN)PROP(OBJ)=1\r
+       FLDA    OBJ\r
+       FSUB    RUG\r
+       JEQ     .+10\r
+       FLDA    OBJ\r
+       FSUB    CHAIN\r
+       JNE     .+5\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      TALLY=TALLY-1\r
+       FLDA    TALLY\r
+       FADD    MINUS1\r
+       FSTA    TALLY\r
+/C IF REMAINING TREASURES TOO ELUSIVE, ZAP HIS LAMP.\r
+/      IF(TALLY.EQ.TALLY2.AND.TALLY.NE.0)LIMIT=MIN0(35,LIMIT)\r
+       JEQ     #2006\r
+       FSUB    TALLY2\r
+       JNE     #2006\r
+       JSR     MIN0\r
+       JA      .+6\r
+       JA      #LIT+66\r
+       JA      LIMIT\r
+       FSTA    LIMIT\r
+/2006   KK=PROP(OBJ)\r
+#2006, FLDA    OBJ\r
+       JSA     RDPROP\r
+       FSTA    KK\r
+/      IF(OBJ.EQ.STEPS.AND.LOC.EQ.FIXED(STEPS))KK=1\r
+       FLDA    OBJ\r
+       FSUB    STEPS\r
+       JNE     .+16\r
+       FLDA    STEPS\r
+       ATX     7\r
+       FLDA    LOC\r
+       FSUB    FIXED-3,7\r
+       JNE     .+5\r
+       FLDA    ONE\r
+       FSTA    KK\r
+/      CALL PSPEAK(OBJ,KK)\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      OBJ\r
+       JA      KK\r
+\r
+/2008   I=LINK(I)\r
+#2008, FLDA    I\r
+       ATX     7\r
+       FLDA    LINK-3,7\r
+       FSTA    I\r
+/      GOTO 2004\r
+       JA      #2004\r
+\r
+/2009   K=54\r
+#2009, FLDA    #LIT+113\r
+       FSTA    K\r
+/2010   SPK=K\r
+#2010, FLDA    K\r
+       FSTA    SPK\r
+\r
+/2011   CALL RSPEAK(SPK)\r
+#2011, JSR     RSPEAK\r
+       JA      .+4\r
+       JA      SPK\r
+\r
+/2012   VERB=0\r
+#2012, FCLA\r
+       FSTA    VERB\r
+/      OBJ=0\r
+       FSTA    OBJ\r
+\r
+/C\r
+/C CHECK IF THIS LOC IS ELIGIBLE FOR ANY HINTS. IF BEEN HERE LONG ENOUGH,\r
+/C BRANCH TO HELP SECTION (ON LATER PAGE). HINTS ALL COME BACK HERE EVENTUALLY\r
+/C TO FINISH THE LOOP. IGNORE "HINTS" < 4 (SPECIAL STUFF, SEE DATABASE NOTES).\r
+/C\r
+/2600   DO 2602 HINT=4,HNTMAX\r
+#2600, FLDA    #LIT\r
+       FSTA    HINT\r
+\r
+/      IF(HINTED(HINT))GOTO 2602\r
+#G0102,        FLDA    HINT\r
+       ATX     7\r
+       FLDA    HINTED-3,7\r
+       JNE     #2602\r
+/      IF(.NOT.BITSET(LOC,HINT))HINTLC(HINT)=-1\r
+       JSR     BITSET\r
+       JA      .+6\r
+       JA      LOC\r
+       JA      HINT\r
+       JNE     .+5\r
+       FLDA    MINUS1\r
+       FSTA    HINTLC-3,7\r
+/      HINTLC(HINT)=HINTLC(HINT)+1\r
+       FLDA    ONE\r
+       FADDM   HINTLC-3,7\r
+/      IF(HINTLC(HINT).GE.HINTS(HINT,1))GOTO 40000\r
+       FLDA    #LIT+36         / 20\r
+       FADD    HINT            / HINT,1\r
+       ATX     6\r
+       FLDA    HINTLC-3,7\r
+       FSUB    HINTS-77,6\r
+       JGE     #40000\r
+\r
+/2602   CONTINUE\r
+#2602, FLDA    HINT\r
+       FADD    ONE\r
+       FSTA    HINT\r
+       FSUB    HNTMAX\r
+       JLE     #G0102\r
+/C\r
+/C KICK THE RANDOM NUMBER GENERATOR JUST TO ADD VARIETY TO THE CHASE. ALSO,\r
+/C IF CLOSING TIME, CHECK FOR ANY OBJECTS BEING TOTED WITH PROP < 0 AND SET\r
+/C THE PROP TO -1-PROP. THIS WAY OBJECTS WON'T BE DESCRIBED UNTIL THEY'VE\r
+/C BEEN PICKED UP AND PUT DOWN SEPARATE FROM THEIR RESPECTIVE PILES. DON'T\r
+/C TICK CLOCK1 UNLESS WELL INTO CAVE (AND NOT AT Y2).\r
+/C\r
+/      IF(.NOT.CLOSED)GOTO 2605\r
+       FLDA    CLOSED\r
+       JEQ     #2605\r
+/      IF(PROP(OYSTER).LT.0.AND.TOTING(OYSTER))\r
+/      1       CALL PSPEAK(OYSTER,1)\r
+\r
+       FLDA    OYSTER\r
+       JSA     TOTING\r
+       JEQ     .+16\r
+       FLDA    PROP-3,3\r
+       JGE     .+12\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      OYSTER\r
+       JA      ONE\r
+/      DO 2604 I=1,100\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/2604   IF(TOTING(I).AND.PROP(I).LT.0)PROP(I)=-1-PROP(I)\r
+#2604, FLDA    I\r
+       JSA     TOTING\r
+       JEQ     .+13\r
+       FLDA    PROP-3,3\r
+       JGE     .+7\r
+       FLDA    MINUS1\r
+       FSUB    PROP-3,3\r
+       FSTA    PROP-3,3\r
+       FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+154\r
+       JLE     #2604\r
+\r
+/2605   WZDARK=DARK(0)\r
+#2605, JSA     DARK\r
+       FSTA    WZDARK\r
+/      IF(KNFLOC.GT.0.AND.KNFLOC.NE.LOC)KNFLOC=0\r
+       FLDA    KNFLOC\r
+       JLE     .+11\r
+       FSUB    LOC\r
+       JEQ     .+5\r
+       FCLA\r
+       FSTA    KNFLOC\r
+/      I=RND(1)\r
+       JSR     RND\r
+       JA      .+4\r
+       JA      ONE\r
+/      CALL GETIN(WD1,WD1X,WD2,WD2X)\r
+       JSR     GETIN\r
+       JA      .+12\r
+       JA      WD1\r
+       JA      WD1X\r
+       JA      WD2\r
+       JA      WD2X\r
+\r
+/C\r
+/C EVERY INPUT, CHECK "FOOBAR" FLAG. IF ZERO, NOTHING'S GOING ON. IF POS,\r
+/C MAKE NEG. IF NEG, HE SKIPPED A WORD, SO MAKE IT ZERO.\r
+/C\r
+/2608   FOOBAR=MIN0(0,-FOOBAR)\r
+#2608, FLDA    FOOBAR\r
+       FNEG\r
+       FSTA    #TMP\r
+       JSR     MIN0\r
+       JA      .+6\r
+       JA      ZERO\r
+       JA      #TMP\r
+       FSTA    FOOBAR\r
+/      TURNS=TURNS+1\r
+       FLDA    ONE\r
+       FADDM   TURNS\r
+/C      IF(VERB.EQ.SAY.AND.WD2.NE.0)VERB=0\r
+/C      IF(VERB.EQ.SAY)GOTO 4090\r
+/      IF(TALLY.EQ.0.AND.LOC.GE.15.AND.LOC.NE.33)CLOCK1=CLOCK1-1\r
+       FLDA    TALLY\r
+       JNE     .+23\r
+       FLDA    LOC\r
+       FSUB    #LIT+25\r
+       JLT     .+16\r
+       DECIMAL\r
+               LDX     33,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    LOC\r
+       JEQ     .+7\r
+       FLDA    CLOCK1\r
+       FSUB    ONE\r
+       FSTA    CLOCK1\r
+/      IF(CLOCK1.EQ.0)GOTO 10000\r
+       FLDA    CLOCK1\r
+       JEQ     #10000\r
+/      IF(CLOCK1.LT.0)CLOCK2=CLOCK2-1\r
+       JGE     .+7\r
+       FLDA    CLOCK2\r
+       FSUB    ONE\r
+       FSTA    CLOCK2\r
+/      IF(CLOCK2.EQ.0)GOTO 11000\r
+       FLDA    CLOCK2\r
+       JEQ     #11000\r
+/      IF(PROP(LAMP).EQ.1)LIMIT=LIMIT-1\r
+       FLDA    LAMP\r
+       JSA     RDPROP\r
+       FSUB    ONE\r
+       JNE     .+5\r
+       FLDA    MINUS1\r
+       FADDM   LIMIT\r
+/      IF(LIMIT.LE.30.AND.HERE(BATTER).AND.PROP(BATTER).EQ.0\r
+/      1       .AND.HERE(LAMP))GOTO 12000\r
+       FLDA    LIMIT\r
+       FSUB    #LIT+63\r
+       JGT     .+22\r
+       FLDA    BATTER\r
+       JSA     HERE\r
+       JEQ     .+14\r
+       FLDA    PROP-3,3\r
+       JNE     .+10\r
+       FLDA    LAMP\r
+       JSA     HERE\r
+       JNE     #12000\r
+/      IF(LIMIT.EQ.0)GOTO 12400\r
+       FLDA    LIMIT\r
+       JEQ     #12400\r
+/      IF(LIMIT.LT.0.AND.LOC.LE.8)GOTO 12600\r
+/      FLDA    LIMIT\r
+       JGE     .+7\r
+       FLDA    LOC\r
+       FSUB    #LIT+11\r
+       JLE     #12600\r
+/      IF(LIMIT.LE.30)GOTO 12200\r
+       FLDA    LIMIT\r
+       FSUB    #LIT+63\r
+       JLE     #12200\r
+\r
+/19999  K=43\r
+       DECIMAL\r
+#19999,                LDX     43,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    K\r
+/      IF(LIQLOC(LOC).EQ.WATER)K=70\r
+       JSA     LIQLOC\r
+       FSUB    WATER\r
+       JNE     .+7\r
+       DECIMAL\r
+               LDX     70,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    K\r
+/C\r
+/C DO PRELIMINARY ANALYSIS OF SENTENCE TO FIND CERTAIN SPECIAL\r
+/C CASES, VIZ,\r
+/C\r
+/C ENTER <WATER,STREAM>\r
+/C ENTER <LOCATION>\r
+/C <WATER,OIL> <PLANT,DOOR>\r
+/C\r
+/      CALL VOCAB(WD1,WD1A,-1,I)\r
+       JSR     VOCAB\r
+       JA      .+6\r
+       JA      WD1\r
+       JA      MINUS1\r
+       FSTA    I\r
+/      CALL VOCAB(WD2,WD2A,-1,J)\r
+       JSR     VOCAB\r
+       JA      .+6\r
+       JA      WD2\r
+       JA      MINUS1\r
+       FSTA    J\r
+/      IF(WD1.NE.'ENTE') GO TO 2609\r
+       FLDA    WD1\r
+       FSUB    TENTE\r
+       JNE     #2609\r
+/      IF(J .EQ. (WATER+1000)\r
+/      1       .OR. J .EQ. STREAM) GO TO 2010\r
+       FLDA    WATER\r
+       FADD    #LIT+314\r
+       FSUB    J\r
+       JEQ     #2010\r
+       FLDA    J\r
+       FSUB    STREAM\r
+       JEQ     #2010\r
+/      IF(WD2 .NE. 0) GO TO 2800\r
+       FLDA    WD2\r
+       JNE     #2800\r
+\r
+/2609   IF((I .NE. (WATER+1000) .AND. I .NE. (OIL+1000))\r
+/      1       .OR. (J .NE. (PLANT+1000) .AND. J .NE. (DOOR+1000)))\r
+/      2       GO TO 2610\r
+#2609, FLDA    WATER\r
+       FADD    #LIT+314\r
+       FSUB    I\r
+       JEQ     .+11\r
+       FLDA    OIL\r
+       FADD    #LIT+314\r
+       FSUB    I\r
+       JNE     #2610\r
+       FLDA    PLANT\r
+       FADD    #LIT+314\r
+       FSUB    J\r
+       JEQ     .+11\r
+       FLDA    DOOR\r
+       FADD    #LIT+314\r
+       FSUB    J\r
+       JNE     #2610\r
+/      WD2="POUR"\r
+       FLDA    TPOUR\r
+       FSTA    WD2\r
+\r
+/2610   IF(WD1 .EQ. 'WEST' .AND. PCT(10))\r
+/      1       CALL RSPEAK(17)\r
+\r
+#2610, FLDA    WD1\r
+       FSUB    TWEST\r
+       JNE     #2630\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+17\r
+       JEQ     #2630\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+33\r
+/2630   CALL VOCAB(WD1,-1,I)\r
+#2630, JSR     VOCAB\r
+       JA      .+6\r
+       JA      WD1\r
+       JA      MINUS1\r
+       FSTA    I\r
+/      IF(I.EQ.-1)GOTO 3000\r
+       FADD    ONE\r
+       JEQ     #3000\r
+/      K=MOD(I,1000)\r
+       JSR     MOD\r
+       JA      .+6\r
+       JA      I\r
+       JA      #LIT+314\r
+       FSTA    K\r
+/      KQ=I/1000+1\r
+       FLDA    I\r
+       FDIV    #LIT+314\r
+       JSA     #FIX\r
+       FADD    ONE\r
+       FSTA    KQ\r
+/      GOTO (8,5000,4000,2010)KQ\r
+       FLDA    KQ\r
+       ATX     1\r
+       STARTD\r
+       FLDA    .+2,1\r
+       STARTF\r
+       JAC\r
+       JA      #8\r
+       JA      #5000\r
+       JA      #4000\r
+       JA      #2010\r
+/      CALL BUG(22)\r
+       JSR     BUG\r
+       JA      .+4\r
+       JA      #LIT+41\r
+\r
+/C\r
+/C GET SECOND WORD FOR ANALYSIS.\r
+/C\r
+/2800   WD1=WD2\r
+/      WD1A=WD2A\r
+\r
+#2800, FLDA    WD2\r
+       FSTA    WD1\r
+/      WD1X=WD2X\r
+       FLDA    WD2X\r
+       FSTA    WD1X\r
+/      WD2=0\r
+       FCLA\r
+       FSTA    WD2\r
+/      GOTO 2610\r
+       JA      #2610\r
+\r
+/C\r
+/C GEE, I DON'T UNDERSTAND.\r
+/C\r
+/3000   SPK=60\r
+#3000, FLDA    #LIT+330\r
+       FSTA    SPK\r
+/      IF(PCT(20))SPK=61\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+36\r
+       JEQ     .+6\r
+       DECIMAL\r
+               LDX     61,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(PCT(20))SPK=13\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      #LIT+36\r
+       JEQ     .+6\r
+       DECIMAL\r
+               LDX     13,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      CALL RSPEAK(SPK)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      SPK\r
+/      GOTO 2600\r
+       JA      #2600\r
+\r
+/C\r
+/C ANALYSE A VERB. REMEMBER WHAT IT WAS, GO BACK FOR OBJECT IF SECOND WORD\r
+/C UNLESS VERB IS "SAY", WHICH SNARFS ARBITRARY SECOND WORD.\r
+/C\r
+/4000   VERB=K\r
+#4000, FLDA    K\r
+       FSTA    VERB\r
+/      SPK=ACTSPK(VERB)\r
+       ATX     7\r
+       FLDA    ACTSPK-3,7\r
+       FSTA    SPK\r
+/      IF(WD2.NE.0.AND.VERB.NE.SAY)GOTO 2800\r
+       FLDA    WD2\r
+       JEQ     .+10\r
+       FLDA    VERB\r
+       FSUB    SAY\r
+       JNE     #2800\r
+/      IF(VERB.EQ.SAY)OBJ=WD2\r
+       FLDA    VERB\r
+       FSUB    SAY\r
+       JNE     .+5\r
+       FLDA    WD2\r
+       FSTA    OBJ\r
+/      IF(OBJ.NE.0)GOTO 4090\r
+       FLDA    OBJ\r
+       FSUB    ZERO\r
+       JNE     #4090\r
+\r
+/C\r
+/C ANALYSE AN INTRANSITIVE VERB (IE, NO OBJECT GIVEN YET).\r
+/C\r
+/4080   GOTO(8010,8000,8000,8040,2009,8040,9070,9080,8000,8000,\r
+/      1    2011,9120,9130,8140,9150,8000,8000,8180,8000,8200,\r
+/      2    8000,9220,9230,8240,8250,8260,8270,8000,8000,8300,\r
+/      3    8310,8320)VERB\r
+/C           TAKE DROP  SAY OPEN NOTH LOCK   ON  OFF WAVE CALM\r
+/C           WALK KILL POUR  EAT DRNK  RUB TOSS QUIT FIND INVN\r
+/C           FEED FILL BLST SCOR  FOO  BRF READ BREK WAKE SUSP\r
+/C           HOUR RESU\r
+#4080, FLDA    VERB\r
+       ATX     1\r
+       STARTD\r
+       FLDA    .+2,1\r
+       STARTF\r
+       JAC\r
+       JA      #8010\r
+       JA      #8000\r
+       JA      #8000\r
+       JA      #8040\r
+       JA      #2009\r
+       JA      #8040\r
+       JA      #9070\r
+       JA      #9080\r
+       JA      #8000\r
+       JA      #8000\r
+       JA      #2011\r
+       JA      #9120\r
+       JA      #9130\r
+       JA      #8140\r
+       JA      #9150\r
+       JA      #8000\r
+       JA      #8000\r
+       JA      #8180\r
+       JA      #8000\r
+       JA      #8200\r
+       JA      #8000\r
+       JA      #9220\r
+       JA      #9230\r
+       JA      #8240\r
+       JA      #8250\r
+       JA      #8260\r
+       JA      #8270\r
+       JA      #8000\r
+       JA      #8000\r
+       JA      #8300\r
+       JA      #8310\r
+       JA      #8320\r
+/      CALL BUG(23)\r
+       JSR     BUG\r
+       JA      .+4\r
+       JA      #LIT+44\r
+\r
+/C\r
+/C ANALYSE A TRANSITIVE VERB.\r
+/C\r
+/4090    GOTO(9010,9020,9030,9040,2009,9040,9070,9080,9090,2011,\r
+/      1    2011,9120,9130,9140,9150,9160,9170,2011,9190,9190,\r
+/      2    9210,9220,9230,2011,2011,2011,9270,9280,9290,2011,\r
+/      3    2011,2011)VERB\r
+/C           TAKE DROP  SAY OPEN NOTH LOCK   ON  OFF WAVE CALM\r
+/C           WALK KILL POUR  EAT DRNK  RUB TOSS QUIT FIND INVN\r
+/C           FEED FILL BLST SCOR  FOO  BRF READ BREK WAKE SUSP\r
+/C           HOUR RESU\r
+#4090, FLDA    VERB\r
+       ATX     1\r
+       STARTD\r
+       FLDA    .+2,1\r
+       STARTF\r
+       JAC\r
+       JA      #9010\r
+       JA      #9020\r
+       JA      #9030\r
+       JA      #9040\r
+       JA      #2009\r
+       JA      #9040\r
+       JA      #9070\r
+       JA      #9080\r
+       JA      #9090\r
+       JA      #2011\r
+       JA      #2011\r
+       JA      #9120\r
+       JA      #9130\r
+       JA      #9140\r
+       JA      #9150\r
+       JA      #9160\r
+       JA      #9170\r
+       JA      #2011\r
+       JA      #9190\r
+       JA      #9190\r
+       JA      #9210\r
+       JA      #9220\r
+       JA      #9230\r
+       JA      #2011\r
+       JA      #2011\r
+       JA      #2011\r
+       JA      #9270\r
+       JA      #9280\r
+       JA      #9290\r
+       JA      #2011\r
+       JA      #2011\r
+       JA      #2011\r
+       JA      #2011\r
+/      CALL BUG(24)\r
+       JSR     BUG\r
+       JA      .+4\r
+       JA      #LIT+47\r
+\r
+/C\r
+/C ANALYSE AN OBJECT WORD. SEE IF THE THING IS HERE, WHETHER WE'VE GOT A VERB\r
+/C YET, AND SO ON. OBJECT MUST BE HERE UNLESS VERB IS "FIND" OR "INVENT(ORY)"\r
+/C (AND NO NEW VERB YET TO BE ANALYSED). WATER AND OIL ARE ALSO FUNNY, SINCE\r
+/C THEY ARE NEVER ACTUALLY DROPPED AT ANY LOCATION, BUT MIGHT BE HERE INSIDE\r
+/C THE BOTTLE OR AS A FEATURE OF THE LOCATION.\r
+/C\r
+/5000   OBJ=K\r
+#5000, FLDA    K\r
+       FSTA    OBJ\r
+/      IF(FIXED(K).NE.LOC.AND..NOT.HERE(K))GOTO 5100\r
+       FLDA    K\r
+       ATX     7\r
+       FLDA    FIXED-3,7\r
+       FSUB    LOC\r
+       JEQ     #5010\r
+       FLDA    K\r
+       JSA     HERE\r
+       JEQ     #5100\r
+\r
+/5010   IF(WD2.NE.0)GOTO 2800\r
+#5010, FLDA    WD2\r
+       JNE     #2800\r
+/      IF(VERB.NE.0)GOTO 4090\r
+       FLDA    VERB\r
+       JNE     #4090\r
+/      TYPE 5015\r
+/5015   FORMAT(' What do you want to do with the ',$)\r
+       JSA     SPRINT\r
+       JA      #5015\r
+       JA      TWO\r
+\r
+/      CALL A5TOA1(WD1,WD1A,WD1X,'?')\r
+       JSR     A5TOA1\r
+       JA      .+10\r
+       JA      WD1\r
+       JA      WD1X\r
+       JA      TQUES\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #LINEF+2\r
+       TRAP3   #RENDO\r
+/      GOTO 2600\r
+#LINEF,        JA      #2600\r
+       TEXT    +(' ')+\r
+\r
+/C\r
+/5100   IF(K.NE.GRATE)GOTO 5110\r
+#5100, FLDA    K\r
+       FSUB    GRATE\r
+       JNE     #5110\r
+/      IF(LOC.EQ.1.OR.LOC.EQ.4.OR.LOC.EQ.7)K=DPRSSN\r
+       FLDA    LOC\r
+       FSUB    ONE\r
+       JEQ     .+10\r
+       FSUB    THREE\r
+       JEQ     .+5\r
+       FSUB    THREE\r
+       JNE     .+6\r
+       FLDA    DPRSSN\r
+       FSTA    K\r
+/      IF(LOC.GT.9.AND.LOC.LT.15)K=ENTRNC\r
+       FLDA    LOC\r
+       FSUB    #LIT+14\r
+       JLE     .+13\r
+       FLDA    LOC\r
+       FSUB    #LIT+25\r
+       JGE     .+6\r
+       FLDA    ENTRNC\r
+       FSTA    K\r
+/      IF(K.NE.GRATE)GOTO 8\r
+       FLDA    K\r
+       FSUB    GRATE\r
+       JNE     #8\r
+\r
+/5110   IF(K.NE.DWARF)GOTO 5120\r
+#5110, FLDA    K\r
+       FSUB    DWARF\r
+       JNE     #5120\r
+/      DO 5112 I=1,5\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 5010\r
+#G0122,        FLDA    I\r
+       ATX     7\r
+       FLDA    DLOC-3,7\r
+       FSUB    LOC\r
+       JNE     #5112\r
+       FLDA    DFLAG\r
+       FSUB    TWO\r
+       JGE     #5010\r
+/5112   CONTINUE\r
+#5112, FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+3\r
+       JLE     #G0122\r
+\r
+/5120   IF((LIQ(0).EQ.K.AND.HERE(BOTTLE)).OR.K.EQ.LIQLOC(LOC))GOTO 5010\r
+#5120, JSA     LIQ\r
+       FSUB    K\r
+       JNE     .+10\r
+       FLDA    BOTTLE\r
+       JSA     HERE\r
+       JNE     #5010\r
+       JSA     LIQLOC\r
+       FSUB    K\r
+       JEQ     #5010\r
+/      IF(OBJ.NE.PLANT.OR..NOT.AT(PLANT2).OR.PROP(PLANT2).EQ.0)GOTO 5130\r
+       FLDA    OBJ\r
+       FSUB    PLANT\r
+       JNE     #5130\r
+       FLDA    PLANT2\r
+       JSA     AT\r
+       JEQ     #5130\r
+/      FLDA    PLANT2\r
+/      ATX     3\r
+       FLDA    PROP-3,3\r
+       JEQ     #5130\r
+/      OBJ=PLANT2\r
+       FLDA    PLANT2\r
+       FSTA    OBJ\r
+/      GOTO 5010\r
+       JA      #5010\r
+\r
+/5130   IF(OBJ.NE.KNIFE.OR.KNFLOC.NE.LOC)GOTO 5140\r
+#5130, FLDA    OBJ\r
+       FSUB    KNIFE\r
+       JNE     #5140\r
+       FLDA    KNFLOC\r
+       FSUB    LOC\r
+       JNE     #5140\r
+/      KNFLOC=-1\r
+       FLDA    MINUS1\r
+       FSTA    KNFLOC\r
+/      SPK=116\r
+       FLDA    #LIT+170\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/5140   IF(OBJ.NE.ROD.OR..NOT.HERE(ROD2))GOTO 5190\r
+#5140, FLDA    OBJ\r
+       FSUB    ROD\r
+       JNE     #5190\r
+       FLDA    ROD2\r
+       JSA     HERE\r
+       JEQ     #5190\r
+/      OBJ=ROD2\r
+       FLDA    ROD2\r
+       FSTA    OBJ\r
+/      GOTO 5010\r
+       JA      #5010\r
+\r
+/5190   IF((VERB.EQ.FIND.OR.VERB.EQ.INVENT).AND.WD2.EQ.0)GOTO 5010\r
+#5190, FLDA    VERB\r
+       FSUB    INVENT\r
+       JEQ     .+10\r
+       FLDA    VERB\r
+       FSUB    FIND\r
+       JNE     .+5\r
+       FLDA    WD2\r
+       JEQ     #5010\r
+/      TYPE 5199\r
+       JSA     SPRINT\r
+       JA      #5199\r
+       JA      TWO\r
+\r
+/5199   FORMAT(' I don''t see any ',$)\r
+\r
+/      CALL A5TOA1(WD1,WD1A,WD1X,'.')\r
+/      GOTO 2012\r
+       JSR     A5TOA1\r
+       JA      #2012\r
+       JA      WD1\r
+       JA      WD1X\r
+       JA      TQDOT\r
+\r
+/C FIGURE OUT THE NEW LOCATION\r
+/C\r
+/C GIVEN THE CURRENT LOCATION IN "LOC", AND A MOTION VERB NUMBER IN "K", PUT\r
+/C THE NEW LOCATION IN "NEWLOC". THE CURRENT LOC IS SAVED IN "OLDLOC" IN CASE\r
+/C HE WANTS TO RETREAT. THE CURRENT OLDLOC IS SAVED IN OLDLC2, IN CASE HE\r
+/C DIES. (IF HE DOES, NEWLOC WILL BE LIMBO, AND OLDLOC WILL BE WHAT KILLED\r
+/C HIM, SO WE NEED OLDLC2, WHICH IS THE LAST PLACE HE WAS SAFE.)\r
+/C\r
+/8      KK=KEY(LOC)\r
+#8,    FLDA    LOC\r
+       ATX     7\r
+       FLDA    KEY-3,7\r
+       FSTA    KK\r
+/      NEWLOC=LOC\r
+       FLDA    LOC\r
+       FSTA    NEWLOC\r
+/      IF(KK.EQ.0)CALL BUG(26)\r
+       FLDA    KK\r
+       JNE     .+10\r
+       JSR     BUG\r
+       JA      .+4\r
+       JA      #LIT+55\r
+/      IF(K.EQ.NULL)GOTO 2\r
+       FLDA    K\r
+       FSUB    NULL\r
+       JEQ     #2\r
+/      IF(K.EQ.BACK)GOTO 20\r
+       FLDA    K\r
+       FSUB    BACK\r
+       JEQ     #20\r
+/      IF(K.EQ.LOOK)GOTO 30\r
+       FLDA    K\r
+       FSUB    LOOK\r
+       JEQ     #30\r
+/      IF(K.EQ.CAVE)GOTO 40\r
+       FLDA    K\r
+       FSUB    CAVE\r
+       JEQ     #40\r
+/      OLDLC2=OLDLOC\r
+       FLDA    OLDLOC\r
+       FSTA    OLDLC2\r
+/      OLDLOC=LOC\r
+       FLDA    LOC\r
+       FSTA    OLDLOC\r
+/C\r
+/9      LL=IABS(TRAVEL(KK))\r
+#9,    JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRAVEL\r
+       JA      KK\r
+       JA      ZERO\r
+       FSTA    #TMP\r
+       JSR     IABS\r
+       JA      .+4\r
+       JA      #TMP\r
+       FSTA    LL\r
+/      IF(LL.EQ.1 .OR. LL.EQ.K)GOTO 10\r
+       FSUB    ONE\r
+       JEQ     #10\r
+       FLDA    LL\r
+       FSUB    K\r
+       JEQ     #10\r
+/      IF(TRAVEL(KK).LT.0)GOTO 50\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRAVEL\r
+       JA      KK\r
+       JA      ZERO\r
+       JLT     #50\r
+/      KK=KK+1\r
+       FLDA    ONE\r
+       FADDM   KK\r
+/      GOTO 9\r
+       JA      #9\r
+\r
+/C\r
+/10     NEWLOC=TRVCON(KK)\r
+#10,   JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVCON\r
+       JA      KK\r
+       JA      ZERO\r
+       FSTA    NEWLOC\r
+/      K=MOD(NEWLOC,100)\r
+       JSR     MOD\r
+       JA      .+6\r
+       JA      NEWLOC\r
+       JA      #LIT+154\r
+       FSTA    K\r
+/      IF(NEWLOC.LE.300)GOTO 13\r
+       FLDA    NEWLOC\r
+       FSUB    #LIT+306\r
+       JLE     #13\r
+/      IF(PROP(K).NE.NEWLOC/100-3)GOTO 16\r
+       FLDA    K\r
+       ATX     7\r
+       FLDA    NEWLOC\r
+       FDIV    #LIT+154\r
+       JSA     #FIX\r
+       FSUB    THREE\r
+       FSUB    PROP-3,7\r
+       JNE     #16\r
+/C\r
+/C TRY NEXT ENTRY IN TRAVEL TABLE\r
+/C\r
+/12     IF(TRAVEL(KK).LT.0)CALL BUG(25)\r
+#12,   JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRAVEL\r
+       JA      KK\r
+       JA      ZERO\r
+       JGE     .+10\r
+       JSR     BUG\r
+       JA      .+4\r
+       JA      #LIT+52\r
+/      KK=KK+1\r
+       FLDA    KK\r
+       FSTA    #TMP\r
+       FADD    ONE\r
+       FSTA    KK\r
+\r
+/C MAKE SURE HE DOESN'T GO THROUGH SAME TEST AGAIN\r
+/C\r
+/      IF(TRVCON(KK-1).EQ.TRVCON(KK) .AND. TRVLOC(KK-1).EQ.TRVLOC(KK))\r
+/      1       GOTO 12\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVCON\r
+       JA      #TMP\r
+       JA      ZERO\r
+       FSTA    #TMP+3\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVCON\r
+       JA      KK\r
+       JA      ZERO\r
+       FSUB    #TMP+3\r
+       JNE     #10\r
+\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVLOC\r
+       JA      #TMP\r
+       JA      ZERO\r
+       FSTA    #TMP+3\r
+\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVLOC\r
+       JA      #TMP\r
+       FSUB    #TMP+3\r
+       JEQ     #12\r
+/      GO TO 10\r
+       JA      #10\r
+/C\r
+/13     IF(NEWLOC.LE.100)GOTO 14\r
+#13,   FLDA    NEWLOC\r
+       FSUB    #LIT+154\r
+       JLE     #14\r
+/      IF(TOTING(K).OR.(NEWLOC.GT.200.AND.AT(K)))GOTO 16\r
+       FLDA    K\r
+       JSA     TOTING\r
+       JNE     #16\r
+       DECIMAL\r
+               LDX     200,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    NEWLOC\r
+       JGT     #12\r
+       FLDA    K\r
+       JSA     AT\r
+       JNE     #16\r
+/      GOTO 12\r
+       JA      #12\r
+\r
+/C\r
+/14     IF(NEWLOC.NE.0.AND..NOT.PCT(NEWLOC))GOTO 12\r
+#14,   FLDA    NEWLOC\r
+       JEQ     #16\r
+       JSR     PCT\r
+       JA      .+4\r
+       JA      NEWLOC\r
+       JEQ     #12\r
+\r
+/16     NEWLOC=TRVLOC(KK)\r
+#16,   JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVLOC\r
+       JA      KK\r
+       JA      ZERO\r
+       FSTA    NEWLOC\r
+/      IF(NEWLOC.LE.300)GOTO 2\r
+       FSUB    #LIT+306\r
+       JLE     #2\r
+/      IF(NEWLOC.LE.500)GOTO 30000\r
+       FLDA    NEWLOC\r
+       FSUB    #LIT+311\r
+       JLE     #30000\r
+/      CALL RSPEAK(NEWLOC-500)\r
+/      FLDA    NEWLOC\r
+/      FSUB    #LIT+311\r
+       FSTA    #TMP\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #TMP\r
+/      NEWLOC=LOC\r
+       FLDA    LOC\r
+       FSTA    NEWLOC\r
+/      GOTO 2\r
+       JA      #2\r
+\r
+/C\r
+/C SPECIAL MOTIONS COME HERE. LABELLING CONVENTION: STATEMENT NUMBERS NNNXX\r
+/C (XX=00-99) ARE USED FOR SPECIAL CASE NUMBER NNN (NNN=301-500).\r
+/C\r
+/30000  NEWLOC=NEWLOC-300\r
+#30000,        FLDA    NEWLOC\r
+       FSUB    #LIT+306\r
+       FSTA    NEWLOC\r
+/      GOTO (30100,30200,30300)NEWLOC\r
+/      FLDA    NEWLOC\r
+       ATX     1\r
+       STARTD\r
+       FLDA    .+2,1\r
+       STARTF\r
+       JAC\r
+       JA      #30100\r
+       JA      #30200\r
+       JA      #30300\r
+/      CALL BUG(20)\r
+       JSR     BUG\r
+       JA      .+4\r
+       JA      #LIT+36\r
+\r
+/C\r
+/C TRAVEL 301. PLOVER-ALCOVE PASSAGE. CAN CARRY ONLY EMERALD. NOTE: TRAVEL\r
+/C TABLE MUST INCLUDE "USELESS" ENTRIES GOING THROUGH PASSAGE, WHICH CAN NEVER\r
+/C BE USED FOR ACTUAL MOTION, BUT CAN BE SPOTTED BY "GO BACK".\r
+/C\r
+/30100  NEWLOC=99+100-LOC\r
+#30100,        FLDA    #LIT+300        /199\r
+       FSUB    LOC\r
+       FSTA    NEWLOC\r
+/      IF(HOLDNG.EQ.0.OR.(HOLDNG.EQ.1.AND.TOTING(EMRALD)))GOTO 2\r
+       FLDA    HOLDNG\r
+       JEQ     #2\r
+       FSUB    ONE\r
+       JNE     #M27\r
+       FLDA    EMRALD\r
+       JSA     TOTING\r
+       JNE     #2\r
+/      NEWLOC=LOC\r
+#M27,  FLDA    LOC\r
+       FSTA    NEWLOC\r
+/      CALL RSPEAK(117)\r
+/      GOTO 2\r
+       JSR     RSPEAK\r
+       JA      #2\r
+       JA      #LIT+173\r
+\r
+/C\r
+/C TRAVEL 302. PLOVER TRANSPORT. DROP THE EMERALD (ONLY USE SPECIAL TRAVEL IF\r
+/C TOTING IT), SO HE'S FORCED TO USE THE PLOVER-PASSAGE TO GET IT OUT. HAVING\r
+/C DROPPED IT, GO BACK AND PRETEND HE WASN'T CARRYING IT AFTER ALL.\r
+/C\r
+/30200  CALL DROP(EMRALD,LOC)\r
+/GOTO 12\r
+#30200,        JSR     DROP\r
+       JA      #12\r
+       JA      EMRALD\r
+       JA      LOC\r
+\r
+/C\r
+/C TRAVEL 303. TROLL BRIDGE. MUST BE DONE ONLY AS SPECIAL MOTION SO THAT\r
+/C DWARVES WON'T WANDER ACROSS AND ENCOUNTER THE BEAR. (THEY WON'T FOLLOW THE\r
+/C PLAYER THERE BECAUSE THAT REGION IS FORBIDDEN TO THE PIRATE.) IF\r
+/C PROP(TROLL)=1, HE'S CROSSED SINCE PAYING, SO STEP OUT AND BLOCK HIM.\r
+/C (STANDARD TRAVEL ENTRIES CHECK FOR PROP(TROLL)=0.) SPECIAL STUFF FOR BEAR.\r
+/C\r
+/30300  IF(PROP(TROLL).NE.1)GOTO 30310\r
+#30300,        FLDA    TROLL\r
+       JSA     RDPROP\r
+       FSUB    ONE\r
+       JNE     #30310\r
+/      CALL PSPEAK(TROLL,1)\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      TROLL\r
+       JA      ONE\r
+/      PROP(TROLL)=0\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      CALL MOVE(TROLL2,0)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      TROLL2\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL2+100,0)\r
+       FLDA    TROLL2\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL,PLAC(TROLL))\r
+       FLDA    TROLL\r
+       ATX     7\r
+       FLDA    PLAC-3,7\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      TROLL\r
+       JA      #TMP\r
+/      CALL MOVE(TROLL+100,FIXD(TROLL))\r
+       FLDA    TROLL\r
+       ATX     7\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+       FLDA    FIXD-3,7\r
+       FSTA    #TMP+3\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      #TMP+3\r
+/      CALL JUGGLE(CHASM)\r
+       FLDA    CHASM\r
+       JSA     JUGGLE\r
+/      NEWLOC=LOC\r
+       FLDA    LOC\r
+       FSTA    NEWLOC\r
+/      GOTO 2\r
+       JA      #2\r
+\r
+/C\r
+/30310  NEWLOC=PLAC(TROLL)+FIXD(TROLL)-LOC\r
+#30310,        FLDA    TROLL\r
+       ATX     7\r
+       FLDA    PLAC-3,7\r
+       FADD    FIXD-3,7\r
+       FSUB    LOC\r
+       FSTA    NEWLOC\r
+/      IF(PROP(TROLL).EQ.0)PROP(TROLL)=1\r
+       FLDA    PROP-3,7\r
+       JNE     .+5\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      IF(.NOT.TOTING(BEAR))GOTO 2\r
+       FLDA    BEAR\r
+       JSA     TOTING\r
+       JEQ     #2\r
+/      CALL RSPEAK(162)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+237\r
+/      PROP(CHASM)=1\r
+       FLDA    CHASM\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/       PROP(TROLL)=2\r
+       FLDA    TROLL\r
+       ATX     7\r
+       FLDA    TWO\r
+       FSTA    PROP-3,7\r
+/      CALL DROP(BEAR,NEWLOC)\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      BEAR\r
+       JA      NEWLOC\r
+/      FIXED(BEAR)=-1\r
+       FLDA    BEAR\r
+       ATX     7\r
+       FLDA    MINUS1\r
+       FSTA    FIXED-3,7\r
+/      PROP(BEAR)=3\r
+       FLDA    THREE\r
+       FSTA    PROP-3,7\r
+/      IF(PROP(SPICES).LT.0)TALLY2=TALLY2+1\r
+       FLDA    SPICES\r
+       JSA     RDPROP\r
+       JGE     .+7\r
+       FLDA    TALLY2\r
+       FADD    ONE\r
+       FSTA    TALLY2\r
+/      OLDLC2=NEWLOC\r
+       FLDA    NEWLOC\r
+       FSTA    OLDLC2\r
+/      GOTO 99\r
+       JA      #99\r
+\r
+/C\r
+/C END OF SPECIALS.\r
+/C\r
+/C HANDLE "GO BACK". LOOK FOR VERB WHICH GOES FROM LOC TO OLDLOC, OR TO OLDLC2\r
+/C IF OLDLOC HAS FORCED-MOTION. K2 SAVES ENTRY -> FORCED LOC -> PREVIOUS LOC.\r
+/C\r
+/20     K=OLDLOC\r
+#20,   FLDA    OLDLOC\r
+       FSTA    K\r
+/      IF(FORCED(K))K=OLDLC2\r
+/      FLDA    K\r
+       JSA     FORCED\r
+       JEQ     .+6\r
+       FLDA    OLDLC2\r
+       FSTA    K\r
+/      OLDLC2=OLDLOC\r
+       FLDA    OLDLOC\r
+       FSTA    OLDLC2\r
+/      OLDLOC=LOC\r
+       FLDA    LOC\r
+       FSTA    OLDLOC\r
+/      K2=0\r
+       FCLA\r
+       FSTA    K2\r
+/      IF(K.NE.LOC)GOTO 21\r
+       FLDA    K\r
+       FSUB    LOC\r
+       JNE     #21\r
+/      CALL RSPEAK(91)\r
+/      GOTO 2\r
+       JSR     RSPEAK\r
+       JA      #2\r
+       JA      #LIT+140\r
+\r
+/C\r
+/21     LL=TRVLOC(KK)\r
+#21,   JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVLOC\r
+       JA      KK\r
+       JA      ZERO\r
+       FSTA    LL\r
+/      IF(LL.EQ.K)GOTO 25\r
+       FSUB    K\r
+       JEQ     #25\r
+/      IF(LL.GT.300)GOTO 22\r
+       FLDA    LL\r
+       FSUB    #LIT+306\r
+       JGT     #22\r
+/      J=KEY(LL)\r
+       FLDA    LL\r
+       ATX     7\r
+       FLDA    KEY-3,7\r
+       FSTA    J\r
+/      IF(FORCED(LL).AND.TRVLOC(KK).EQ.K)K2=KK\r
+       FLDA    LL\r
+       JSA     FORCED\r
+       JEQ     #22\r
+       JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRVLOC\r
+       JA      KK\r
+       JA      ZERO\r
+       FSUB    K\r
+       JNE     #22\r
+       FLDA    KK\r
+       FSTA    K2\r
+/22     IF(TRAVEL(KK).LT.0)GOTO 23\r
+#22,   JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRAVEL\r
+       JA      KK\r
+       JA      ZERO\r
+       JLT     #23\r
+/      KK=KK+1\r
+       FLDA    ONE\r
+       FADDM   KK\r
+/      GOTO 21\r
+       JA      #21\r
+\r
+/C\r
+/23     KK=K2\r
+#23,   FLDA    K2\r
+       FSTA    KK\r
+/      IF(KK.NE.0)GOTO 25\r
+       JNE     #25\r
+/      CALL RSPEAK(140)\r
+/      GOTO 2\r
+       JSR     RSPEAK\r
+       JA      #2\r
+       JA      #LIT+223\r
+\r
+/C\r
+/25     K=IABS(TRAVEL(KK))\r
+#25,   JSR     GETWRD\r
+       JA      .+10\r
+       JA      TRAVEL\r
+       JA      KK\r
+       JA      ZERO\r
+       FSTA    #TMP\r
+       JSR     IABS\r
+       JA      .+4\r
+       JA      #TMP\r
+       FSTA    K\r
+/      KK=KEY(LOC)\r
+       FLDA    LOC\r
+       ATX     7\r
+       FLDA    KEY-3,7\r
+       FSTA    KK\r
+/      GOTO 9\r
+       JA      #9\r
+\r
+/C\r
+/C LOOK. CAN'T GIVE MORE DETAIL. PRETEND IT WASN'T DARK (THOUGH IT MAY "NOW"\r
+/C BE DARK) SO HE WON'T FALL INTO A PIT WHILE STARING INTO THE GLOOM.\r
+/C\r
+/30     IF(DETAIL.LT.3)CALL RSPEAK(15)\r
+#30,   FLDA    DETAIL\r
+       FSUB    THREE\r
+       JGE     .+10\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+25\r
+/      DETAIL=DETAIL+1\r
+       FLDA    ONE\r
+       FADDM   DETAIL\r
+/      WZDARK=.FALSE.\r
+       FCLA\r
+       FSTA    WZDARK\r
+/      ABB(LOC)=0\r
+       FLDA    LOC\r
+       ATX     7\r
+       FCLA\r
+       FSTA    ABB-3,7\r
+/      GOTO 2\r
+       JA      #2\r
+\r
+/C\r
+/C CAVE. DIFFERENT MESSAGES DEPENDING ON WHETHER ABOVE GROUND.\r
+/C\r
+/40     IF(LOC.LT.8)CALL RSPEAK(57)\r
+#40,   FLDA    LOC\r
+       FSUB    #LIT+11\r
+       JGE     .+10\r
+       JSR     RSPEAK\r
+       JA      #2\r
+       JA      #LIT+116\r
+/      IF(LOC.GE.8)CALL RSPEAK(58)\r
+/      GOTO 2\r
+       JSR     RSPEAK\r
+       JA      #2\r
+       JA      #LIT+121\r
+\r
+/C\r
+/C NON-APPLICABLE MOTION. VARIOUS MESSAGES DEPENDING ON WORD GIVEN.\r
+/C\r
+/50     SPK=12\r
+#50,   FLDA    #LIT+22\r
+       FSTA    SPK\r
+/      IF(K.GE.43.AND.K.LE.50)SPK=9\r
+       DECIMAL\r
+               LDX     43,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    K\r
+       JGT     .+7\r
+       FLDA    K\r
+       FSUB    #LIT+110\r
+       JLE     #M31\r
+/      IF(K.EQ.29.OR.K.EQ.30)SPK=9\r
+       FLDA    #LIT+135\r
+       FSUB    K\r
+       JEQ     #M31\r
+       FADD    ONE\r
+       JNE     .+6\r
+#M31,  FLDA    #LIT+14\r
+       FSTA    SPK\r
+       JA      #M32\r
+/      IF(K.EQ.7.OR.K.EQ.36.OR.K.EQ.37)SPK=10\r
+       LDX     7,0\r
+       XTA     0\r
+       FSUB    K\r
+       JEQ     #M34\r
+       DECIMAL\r
+               LDX     36,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    K\r
+       JEQ     #M34\r
+       FADD    ONE\r
+       JNE     #M35\r
+#M34,  FLDA    #LIT+17\r
+       FSTA    SPK\r
+       JA      #M32\r
+/      IF(K.EQ.11.OR.K.EQ.19)SPK=11\r
+#M35,  DECIMAL\r
+               LDX     11,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    K\r
+       JEQ     #M36\r
+       DECIMAL\r
+               LDX     19,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    K\r
+       JNE     #M32\r
+#M36,  DECIMAL\r
+               LDX     11,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(VERB.EQ.FIND.OR.VERB.EQ.INVENT)SPK=59\r
+#M32,  FLDA    VERB\r
+       FSUB    INVENT\r
+       JEQ     #M37\r
+       FLDA    VERB\r
+       FSUB    FIND\r
+       JNE     #M38\r
+#M37,  DECIMAL\r
+               LDX     59,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(K.EQ.62.OR.K.EQ.65)SPK=42\r
+#M38,  FLDA    K\r
+       FSUB    #LIT+124\r
+       JEQ     #M39\r
+       FSUB    THREE\r
+       JNE     #M40\r
+#M39,  DECIMAL\r
+               LDX     42,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(K.EQ.17)SPK=80\r
+#M40,  FLDA    K\r
+       FSUB    #LIT+33\r
+       JNE     #M33\r
+       FLDA    #LIT+325\r
+       FSTA    SPK\r
+/      CALL RSPEAK(SPK)\r
+/      GOTO 2\r
+#M33,  JSR     RSPEAK\r
+       JA      #2\r
+       JA      SPK\r
+\r
+/C "YOU'RE DEAD, JIM."\r
+/C\r
+/C IF THE CURRENT LOC IS ZERO, IT MEANS THE CLOWN GOT HIMSELF KILLED. WE'LL\r
+/C ALLOW THIS MAXDIE TIMES. MAXDIE IS AUTOMATICALLY SET BASED ON THE NUMBER OF\r
+/C SNIDE MESSAGES AVAILABLE. EACH DEATH RESULTS IN A MESSAGE (81, 83, ETC.)\r
+/C WHICH OFFERS REINCARNATION; IF ACCEPTED, THIS RESULTS IN MESSAGE 82, 84,\r
+/C ETC. THE LAST TIME, IF HE WANTS ANOTHER CHANCE, HE GETS A SNIDE REMARK AS\r
+/C WE EXIT. WHEN REINCARNATED, ALL OBJECTS BEING CARRIED GET DROPPED AT OLDLC2\r
+/C (PRESUMABLY THE LAST PLACE PRIOR TO BEING KILLED) WITHOUT CHANGE OF PROPS.\r
+/C THE LOOP RUNS BACKWARDS TO ASSURE THAT THE BIRD IS DROPPED BEFORE THE CAGE.\r
+/C (THIS KLUGE COULD BE CHANGED ONCE WE'RE SURE ALL REFERENCES TO BIRD AND CAGE\r
+/C ARE DONE BY KEYWORDS.) THE LAMP IS A SPECIAL CASE (IT WOULDN'T DO TO LEAVE\r
+/C IT IN THE CAVE). IT IS TURNED OFF AND LEFT OUTSIDE THE BUILDING (ONLY IF HE\r
+/C WAS CARRYING IT, OF COURSE). HE HIMSELF IS LEFT INSIDE THE BUILDING (AND\r
+/C HEAVEN HELP HIM IF HE TRIES TO XYZZY BACK INTO THE CAVE WITHOUT THE LAMP!).\r
+/C OLDLOC IS ZAPPED SO HE CAN'T JUST "RETREAT".\r
+/C\r
+/C THE EASIEST WAY TO GET KILLED IS TO FALL INTO A PIT IN PITCH DARKNESS.\r
+/C\r
+/90     CALL RSPEAK(23)\r
+#90,   JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+44\r
+/      OLDLC2=LOC\r
+       FLDA    LOC\r
+       FSTA    OLDLC2\r
+/C\r
+/C OKAY, HE'S DEAD. LET'S GET ON WITH IT.\r
+/C\r
+/99     IF(CLOSNG)GOTO 95\r
+#99,   FLDA    CLOSNG\r
+       JNE     #95\r
+/      YEA=YES(81+NUMDIE*2,82+NUMDIE*2,54)\r
+       FLDA    NUMDIE\r
+       FADD    NUMDIE\r
+       FADD    #LIT+132\r
+       FSTA    #TMP\r
+       FADD    ONE\r
+       FSTA    #TMP+3\r
+       JSR     YES\r
+       JA      .+10\r
+       JA      #TMP\r
+       JA      #TMP+3\r
+       JA      #LIT+113\r
+       FSTA    YEA\r
+/      NUMDIE=NUMDIE+1\r
+       FLDA    NUMDIE\r
+       FADD    ONE\r
+       FSTA    NUMDIE\r
+/      IF(NUMDIE.EQ.MAXDIE.OR..NOT.YEA)GOTO 20000\r
+       FSUB    MAXDIE\r
+       JEQ     #20000\r
+       FLDA    YEA\r
+       JEQ     #20000\r
+/      PLACE(WATER)=0\r
+       FLDA    WATER\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PLACE-3,7\r
+/      PLACE(OIL)=0\r
+       FLDA    OIL\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PLACE-3,7\r
+/      IF(TOTING(LAMP))PROP(LAMP)=0\r
+       FLDA    LAMP\r
+       JSA     TOTING\r
+       JEQ     .+5\r
+       FCLA\r
+       FSTA    PROP-3,3\r
+/      DO 98 J=1,100\r
+       FLDA    ONE\r
+       FSTA    J\r
+\r
+/      I=101-J\r
+#G0150,        DECIMAL\r
+               LDX     101,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    J\r
+       FSTA    I\r
+/      IF(.NOT.TOTING(I))GOTO 98\r
+       JSA     TOTING\r
+       JEQ     #98\r
+/      K=OLDLC2\r
+       FLDA    OLDLC2\r
+       FSTA    K\r
+/      IF(I.EQ.LAMP)K=1\r
+       FLDA    I\r
+       FSUB    LAMP\r
+       JNE     .+5\r
+       FLDA    ONE\r
+       FSTA    K\r
+/      CALL DROP(I,K)\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      I\r
+       JA      K\r
+\r
+/98     CONTINUE\r
+#98,   FLDA    J\r
+       FADD    ONE\r
+       FSTA    J\r
+       FSUB    #LIT+154\r
+       JLE     #G0150\r
+/      LOC=3\r
+       FLDA    THREE\r
+/      OLDLOC=LOC\r
+       FSTA    LOC\r
+       FSTA    OLDLOC\r
+/      GOTO 2000\r
+       JA      #2000\r
+\r
+/C\r
+/C HE DIED DURING CLOSING TIME. NO RESURRECTION. TALLY UP A DEATH AND EXIT.\r
+/C\r
+/95     CALL RSPEAK(131)\r
+#95,   JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+212\r
+/      NUMDIE=NUMDIE+1\r
+       FLDA    ONE\r
+       FADDM   NUMDIE\r
+/      GOTO 20000\r
+       JA      #20000\r
+\r
+/C ROUTINES FOR PERFORMING THE VARIOUS ACTION VERBS\r
+/C\r
+/C STATEMENT NUMBERS IN THIS SECTION ARE 8000 FOR INTRANSITIVE VERBS, 9000 FOR\r
+/C TRANSITIVE, PLUS TEN TIMES THE VERB NUMBER. MANY INTRANSITIVE VERBS USE THE\r
+/C TRANSITIVE CODE, AND SOME VERBS USE CODE FOR OTHER VERBS, AS NOTED BELOW.\r
+/C\r
+/C RANDOM INTRANSITIVE VERBS COME HERE. CLEAR OBJ JUST IN CASE (SEE "ATTACK").\r
+/C\r
+/8000   TYPE 8002\r
+#8000, JSA     SPRINT\r
+       JA      #8002\r
+       JA      TWO\r
+\r
+/8002   FORMAT(' I don''t understand "',$)\r
+/      CALL A5TOA1(WD1,WD1A,WD1X,'".')\r
+       JSR     A5TOA1\r
+       JA      .+10\r
+       JA      WD1\r
+       JA      WD1X\r
+       JA      TQDOT\r
+/      OBJ=0\r
+       FCLA\r
+       FSTA    OBJ\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #LINEF+2\r
+       TRAP3   #RENDO\r
+/      GOTO 2600\r
+       JA      #2600\r
+\r
+/C\r
+/C CARRY, NO OBJECT GIVEN YET. OK IF ONLY ONE OBJECT PRESENT.\r
+/C\r
+/8010   IF(ATLOC(LOC).EQ.0.OR.LINK(ATLOC(LOC)).NE.0)GOTO 8000\r
+#8010, FLDA    LOC\r
+       ATX     7\r
+       FLDA    ATLOC-3,7\r
+       JEQ     #8000\r
+       ATX     6\r
+       FLDA    LINK-3,6\r
+       JNE     #8000\r
+/      DO 8012 I=1,5\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 8000\r
+#G0152,        FLDA    I\r
+       ATX     7\r
+       FLDA    DLOC-3,7\r
+       FSUB    LOC\r
+       JNE     #8012\r
+       FLDA    DFLAG\r
+       FSUB    TWO\r
+       JGE     #8000\r
+\r
+/8012   CONTINUE\r
+#8012, FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+3\r
+       JLE     #G0152\r
+/      OBJ=ATLOC(LOC)\r
+       FLDA    LOC\r
+       ATX     7\r
+       FLDA    ATLOC-3,7\r
+       FSTA    OBJ\r
+\r
+/C\r
+/C CARRY AN OBJECT. SPECIAL CASES FOR BIRD AND CAGE (IF BIRD IN CAGE, CAN'T\r
+/C TAKE ONE WITHOUT THE OTHER. LIQUIDS ALSO SPECIAL, SINCE THEY DEPEND ON\r
+/C STATUS OF BOTTLE. ALSO VARIOUS SIDE EFFECTS, ETC.\r
+/C\r
+/9010   IF(TOTING(OBJ))GOTO 2011\r
+#9010, FLDA    OBJ\r
+       JSA     TOTING\r
+       JNE     #2011\r
+/      SPK=25\r
+       FLDA    #LIT+52\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.PLANT.AND.PROP(PLANT).LE.0)SPK=115\r
+       FLDA    OBJ\r
+       FSUB    PLANT\r
+       JNE     .+12\r
+       FLDA    PLANT\r
+       JSA     RDPROP\r
+       JGT     .+4\r
+       FLDA    #LIT+165\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.BEAR.AND.PROP(BEAR).EQ.1)SPK=169\r
+       FLDA    OBJ\r
+       FSUB    BEAR\r
+       JNE     .+15\r
+       FLDA    BEAR\r
+       JSA     RDPROP\r
+       FSUB    ONE\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     169,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.CHAIN.AND.PROP(BEAR).NE.0)SPK=170\r
+       FLDA    OBJ\r
+       FSUB    CHAIN\r
+       JNE     .+14\r
+       FLDA    BEAR\r
+       JSA     RDPROP\r
+       JEQ     .+6\r
+       DECIMAL\r
+               LDX     170,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(FIXED(OBJ).NE.0)GOTO 2011\r
+       FLDA    OBJ\r
+       ATX     7\r
+       FLDA    FIXED-3,7\r
+       JNE     #2011\r
+/      IF(OBJ.NE.WATER.AND.OBJ.NE.OIL)GOTO 9017\r
+       FLDA    OBJ\r
+       FSUB    WATER\r
+       JEQ     .+10\r
+       FLDA    OBJ\r
+       FSUB    OIL\r
+       JNE     #9017\r
+/      IF(HERE(BOTTLE).AND.LIQ(0).EQ.OBJ)GOTO 9018\r
+       FLDA    BOTTLE\r
+       JSA     HERE\r
+       JEQ     .+10\r
+       JSA     LIQ\r
+       FSUB    OBJ\r
+       JEQ     #9018\r
+/      OBJ=BOTTLE\r
+       FLDA    BOTTLE\r
+       FSTA    OBJ\r
+/      IF(TOTING(BOTTLE).AND.PROP(BOTTLE).EQ.1)GOTO 9220\r
+       FLDA    BOTTLE\r
+       JSA     TOTING\r
+       JEQ     .+7\r
+       FLDA    PROP-3,3\r
+       FSUB    ONE\r
+       JEQ     #9220\r
+\r
+/      IF(PROP(BOTTLE).NE.1)SPK=105\r
+       FLDA    PROP-3,3\r
+       FSUB    ONE\r
+       JEQ     .+4\r
+       FLDA    #LIT+157\r
+       FSTA    SPK\r
+/      IF(.NOT.TOTING(BOTTLE))SPK=104\r
+       FLDA    BOTTLE\r
+       JSA     TOTING\r
+       JNE     #2011\r
+       DECIMAL\r
+               LDX     104,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/9018   OBJ=BOTTLE\r
+#9018, FLDA    BOTTLE\r
+       FSTA    OBJ\r
+\r
+/9017   IF(HOLDNG.LT.7)GOTO 9016\r
+#9017, LDX     7,0\r
+       XTA     0\r
+       FSUB    HOLDNG\r
+       JGE     #9016\r
+/      CALL RSPEAK(92)\r
+       JSR     RSPEAK\r
+       JA      #2012\r
+       JA      #LIT+143\r
+/      GOTO 2012\r
+\r
+/9016   IF(OBJ.NE.BIRD)GOTO 9014\r
+#9016, FLDA    OBJ\r
+       FSUB    BIRD\r
+       JNE     #9014\r
+/      IF(PROP(BIRD).NE.0)GOTO 9014\r
+       FLDA    BIRD\r
+       JSA     RDPROP\r
+       JNE     #9014\r
+/      IF(.NOT.TOTING(ROD))GOTO 9013\r
+       FLDA    ROD\r
+       JSA     TOTING\r
+       JEQ     #9013\r
+/      CALL RSPEAK(26)\r
+       JSR     RSPEAK\r
+       JA      #2012\r
+       JA      #LIT+55\r
+/      GOTO 2012\r
+\r
+/9013   IF(TOTING(CAGE))GOTO 9015\r
+#9013, FLDA    CAGE\r
+       JSA     TOTING\r
+       JNE     #9015\r
+/      CALL RSPEAK(27)\r
+       JSR     RSPEAK\r
+       JA      #2012\r
+       JA      #LIT+60\r
+/      GOTO 2012\r
+\r
+/9015   PROP(BIRD)=1\r
+#9015, FLDA    BIRD\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+\r
+/9014   IF((OBJ.EQ.BIRD.OR.OBJ.EQ.CAGE).AND.PROP(BIRD).NE.0)\r
+/      1       CALL CARRY(BIRD+CAGE-OBJ,LOC)\r
+#9014, FLDA    OBJ\r
+       FSUB    BIRD\r
+       JEQ     .+10\r
+       FLDA    OBJ\r
+       FSUB    CAGE\r
+       JNE     .+27\r
+       FLDA    BIRD\r
+       JSA     RDPROP\r
+       JEQ     .+21\r
+       FLDA    BIRD\r
+       FADD    CAGE\r
+       FSUB    OBJ\r
+       FSTA    #TMP\r
+       JSR     CARRY\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      LOC\r
+/      CALL CARRY(OBJ,LOC)\r
+       JSR     CARRY\r
+       JA      .+6\r
+       JA      OBJ\r
+       JA      LOC\r
+/      K=LIQ(0)\r
+       JSA     LIQ\r
+       FSTA    K\r
+/      IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=-1\r
+       FLDA    OBJ\r
+       FSUB    BOTTLE\r
+       JNE     #2009A\r
+       FLDA    K\r
+       JEQ     #2009A\r
+       ATX     7\r
+       FLDA    MINUS1\r
+       FSTA    PLACE-3,7\r
+/      GOTO 2009\r
+#2009A,        DECIMAL\r
+               LDX     202,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    K       /RHM - "Taken" message\r
+       JA      #2010\r
+\r
+/C\r
+/C DISCARD OBJECT. "THROW" ALSO COMES HERE FOR MOST OBJECTS. SPECIAL CASES FOR\r
+/C BIRD (MIGHT ATTACK SNAKE OR DRAGON) AND CAGE (MIGHT CONTAIN BIRD) AND VASE.\r
+/C DROP COINS AT VENDING MACHINE FOR EXTRA BATTERIES.\r
+/C\r
+/9020   IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2\r
+#9020, FLDA    ROD2\r
+       JSA     TOTING\r
+       JEQ     .+22\r
+       FLDA    OBJ\r
+       FSUB    ROD\r
+       JNE     .+14\r
+       FLDA    ROD\r
+       JSA     TOTING\r
+       JNE     .+6\r
+       FLDA    ROD2\r
+       FSTA    OBJ\r
+/      IF(.NOT.TOTING(OBJ))GOTO 2011\r
+       FLDA    OBJ\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+/      IF(OBJ.NE.BIRD.OR..NOT.HERE(SNAKE))GOTO 9024\r
+       FLDA    OBJ\r
+       FSUB    BIRD\r
+       JNE     #9024\r
+       FLDA    SNAKE\r
+       JSA     HERE\r
+       JEQ     #9024\r
+/      CALL RSPEAK(30)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+63\r
+/      IF(CLOSED)GOTO 19000\r
+       FLDA    CLOSED\r
+       JNE     #19000\r
+/      CALL DSTROY(SNAKE)\r
+       FLDA    SNAKE\r
+       JSA     DSTROY\r
+/C\r
+/C SET PROP FOR USE BY TRAVEL OPTIONS\r
+/C\r
+/      PROP(SNAKE)=1\r
+       FLDA    SNAKE\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+\r
+/9021   K=LIQ(0)\r
+#9021, JSA     LIQ\r
+       FSTA    K\r
+/      IF(K.EQ.OBJ)OBJ=BOTTLE\r
+       FSUB    OBJ\r
+       JNE     .+6\r
+       FLDA    BOTTLE\r
+       FSTA    OBJ\r
+/      IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=0\r
+       FLDA    OBJ\r
+       FSUB    BOTTLE\r
+       JNE     .+12\r
+       FLDA    K\r
+       JEQ     .+6\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PLACE-3,7\r
+/      IF(OBJ.EQ.CAGE.AND.PROP(BIRD).NE.0)CALL DROP(BIRD,LOC)\r
+       FLDA    OBJ\r
+       FSUB    CAGE\r
+       JNE     .+20\r
+       FLDA    BIRD\r
+       JSA     RDPROP\r
+       JEQ     .+12\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      BIRD\r
+       JA      LOC\r
+/      IF(OBJ.EQ.BIRD)PROP(BIRD)=0\r
+       FLDA    OBJ\r
+       FSUB    BIRD\r
+       JNE     .+10\r
+       FLDA    BIRD\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      CALL DROP(OBJ,LOC)\r
+       JSR     DROP\r
+/      GO TO 2012\r
+       JA      #2012\r
+/\r
+       JA      OBJ\r
+       JA      LOC\r
+\r
+/C\r
+/9024   IF(OBJ.NE.COINS.OR..NOT.HERE(VEND))GOTO 9025\r
+#9024, FLDA    OBJ\r
+       FSUB    COINS\r
+       JNE     #9025\r
+       FLDA    VEND\r
+       JSA     HERE\r
+       JEQ     #9025\r
+/      CALL DSTROY(COINS)\r
+       FLDA    COINS\r
+       JSA     DSTROY\r
+/      CALL DROP(BATTER,LOC)\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      BATTER\r
+       JA      LOC\r
+/      CALL PSPEAK(BATTER,0)\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      BATTER\r
+       JA      ZERO\r
+/      GOTO 2012\r
+       JA      #2012\r
+\r
+\f/C\r
+/9025   IF(OBJ.NE.BIRD.OR..NOT.AT(DRAGON).OR.PROP(DRAGON).NE.0)GOTO 9026\r
+#9025, FLDA    OBJ\r
+       FSUB    BIRD\r
+       JNE     #9026\r
+       FLDA    DRAGON\r
+       JSA     AT\r
+       JEQ     #9026\r
+/      FLDA    DRAGON\r
+/      ATX     3\r
+       FLDA    PROP-3,3\r
+       JNE     #9026\r
+/      CALL RSPEAK(154)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+333\r
+/      CALL DSTROY(BIRD)\r
+       FLDA    BIRD\r
+       JSA     DSTROY\r
+/      PROP(BIRD)=0\r
+       FLDA    BIRD\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1\r
+       FLDA    SNAKE\r
+       ATX     7\r
+       FLDA    PLACE-3,7\r
+       FSUB    PLAC-3,7\r
+       JNE     #2012\r
+       FLDA    TALLY2\r
+       FADD    ONE\r
+       FSTA    TALLY2\r
+/      GOTO 2012\r
+       JA      #2012\r
+\r
+/C\r
+/9026   IF(OBJ.NE.BEAR.OR..NOT.AT(TROLL))GOTO 9027\r
+#9026, FLDA    OBJ\r
+       FSUB    BEAR\r
+       JNE     #9027\r
+       FLDA    TROLL\r
+       JSA     AT\r
+       JEQ     #9027\r
+/      CALL RSPEAK(163)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+242\r
+/      CALL MOVE(TROLL,0)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      TROLL\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL+100,0)\r
+       FLDA    TROLL\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL2,PLAC(TROLL))\r
+       FLDA    TROLL\r
+       ATX     7\r
+       FLDA    PLAC-3,7\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      TROLL2\r
+       JA      #TMP\r
+/      CALL MOVE(TROLL2+100,FIXD(TROLL))\r
+       FLDA    TROLL2\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+/      FLDA    TROLL\r
+/      ATX     7\r
+       FLDA    FIXD-3,7\r
+       FSTA    #TMP+3\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      #TMP+3\r
+/      CALL JUGGLE(CHASM)\r
+       FLDA    CHASM\r
+       JSA     JUGGLE\r
+/      PROP(TROLL)=2\r
+/      FLDA    TROLL\r
+/      ATX     7\r
+       FLDA    TWO\r
+       FSTA    PROP-3,7\r
+/      GOTO 9021\r
+       JA      #9021\r
+\r
+/C\r
+/9027   IF(OBJ.EQ.VASE.AND.LOC.NE.PLAC(PILLOW))GOTO 9028\r
+#9027, FLDA    OBJ\r
+       FSUB    VASE\r
+       JNE     .+13\r
+       FLDA    PILLOW\r
+       ATX     7\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,7\r
+       JNE     #9028\r
+/      CALL RSPEAK(54)\r
+       JSR     RSPEAK\r
+       JA      #9021\r
+       JA      #LIT+113\r
+/      GOTO 9021\r
+\r
+/C\r
+/9028   PROP(VASE)=2\r
+#9028, FLDA    VASE\r
+       ATX     7\r
+       FLDA    TWO\r
+       FSTA    PROP-3,7\r
+/      IF(AT(PILLOW))PROP(VASE)=0\r
+       FLDA    PILLOW\r
+       JSA     AT\r
+       JEQ     .+10\r
+       FLDA    VASE\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      CALL PSPEAK(VASE,PROP(VASE)+1)\r
+       FLDA    VASE\r
+       JSA     RDPROP\r
+       FADD    ONE\r
+       FSTA    #TMP\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      VASE\r
+       JA      #TMP\r
+/      IF(PROP(VASE).NE.0)FIXED(VASE)=-1\r
+       FLDA    VASE\r
+       ATX     7\r
+       FLDA    PROP-3,7\r
+       JEQ     #9021\r
+       FLDA    MINUS1\r
+       FSTA    FIXED-3,7\r
+/      GOTO 9021\r
+       JA      #9021\r
+\r
+/C\r
+/C SAY. ECHO WD2 (OR WD1 IF NO WD2 (SAY WHAT?, ETC.).) MAGIC WORDS OVERRIDE.\r
+/C\r
+/9030   IF(WD2.EQ.0)GOTO 9031\r
+#9030, FLDA    WD2\r
+       JEQ     #9031\r
+/      WD1=WD2 WD1A=WD2A\r
+       FLDA    WD2\r
+       FSTA    WD1\r
+/      WD1X=WD2X\r
+       FLDA    WD2X\r
+       FSTA    WD1X\r
+\r
+/9031   CALL VOCAB(WD1,WD1A,-1,I)\r
+#9031, JSR     VOCAB\r
+       JA      .+6\r
+       JA      WD1\r
+       JA      MINUS1\r
+       FSTA    I\r
+/      IF(I.EQ.62.OR.I.EQ.65.OR.I.EQ.71.OR.I.EQ.2025)GOTO 9035\r
+       FSUB    #LIT+124\r
+       JEQ     #9035\r
+       FSUB    THREE\r
+       JEQ     #9035\r
+       FSUB    #LIT+3\r
+       JEQ     #9035\r
+       DECIMAL\r
+               LDX     2025,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    I\r
+       JEQ     #9035\r
+/      TYPE 9032\r
+       JSA     SPRINT\r
+       JA      #9032\r
+       JA      TWO\r
+/9032   FORMAT(' Okay, "',$)\r
+/      CALL A5TOA1(WD1,WD1A,WD1X,'".')\r
+       JSR     A5TOA1\r
+       JA      #2012\r
+       JA      WD1\r
+       JA      WD1X\r
+       JA      TQDOT\r
+/      GOTO 2012\r
+\r
+/C\r
+/9035   WD2=0\r
+#9035, FCLA\r
+       FSTA    WD2\r
+/      OBJ=0\r
+       FSTA    OBJ\r
+/      GOTO 2630\r
+       JA      #2630\r
+\r
+/C\r
+/C LOCK, UNLOCK, NO OBJECT GIVEN. ASSUME VARIOUS THINGS IF PRESENT.\r
+/C\r
+/8040   SPK=28\r
+#8040, DECIMAL\r
+               LDX     28,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(HERE(CLAM))OBJ=CLAM\r
+       FLDA    CLAM\r
+       JSA     HERE\r
+       JEQ     .+6\r
+       FLDA    CLAM\r
+       FSTA    OBJ\r
+/      IF(HERE(OYSTER))OBJ=OYSTER\r
+       FLDA    OYSTER\r
+       JSA     HERE\r
+       JEQ     .+6\r
+       FLDA    OYSTER\r
+       FSTA    OBJ\r
+/      IF(AT(DOOR))OBJ=DOOR\r
+       FLDA    DOOR\r
+       JSA     AT\r
+       JEQ     .+6\r
+       FLDA    DOOR\r
+       FSTA    OBJ\r
+/      IF(AT(GRATE))OBJ=GRATE\r
+       FLDA    GRATE\r
+       JSA     AT\r
+       JEQ     .+6\r
+       FLDA    GRATE\r
+       FSTA    OBJ\r
+/      IF(OBJ.NE.0.AND.HERE(CHAIN))GOTO 8000\r
+       FLDA    OBJ\r
+       JEQ     .+10\r
+       FLDA    CHAIN\r
+       JSA     HERE\r
+       JNE     #8000\r
+/      IF(HERE(CHAIN))OBJ=CHAIN\r
+       FLDA    CHAIN\r
+       JSA     HERE\r
+       JEQ     .+6\r
+       FLDA    CHAIN\r
+       FSTA    OBJ\r
+/      IF(OBJ.EQ.0)GOTO 2011\r
+       FLDA    OBJ\r
+       JEQ     #2011\r
+\r
+/C\r
+/C LOCK, UNLOCK OBJECT. SPECIAL STUFF FOR OPENING CLAM/OYSTER AND FOR CHAIN.\r
+/C\r
+/9040   IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)GOTO 9046\r
+#9040, FLDA    OBJ\r
+       FSUB    CLAM\r
+       JEQ     #9046\r
+       FLDA    OBJ\r
+       FSUB    OYSTER\r
+       JEQ     #9046\r
+/      IF(OBJ.EQ.DOOR)SPK=111\r
+       FLDA    OBJ\r
+       FSUB    DOOR\r
+       JNE     #9040A\r
+       DECIMAL\r
+               LDX     111,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.DOOR.AND.PROP(DOOR).EQ.1)SPK=54\r
+#9040A,        FLDA    OBJ\r
+       FSUB    DOOR\r
+       JNE     .+13\r
+       FLDA    DOOR\r
+       JSA     RDPROP\r
+       FSUB    ONE\r
+       JEQ     .+4\r
+       FLDA    #LIT+113\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.CAGE)SPK=32\r
+       FLDA    OBJ\r
+       FSUB    CAGE\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     32,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.KEYS)SPK=55\r
+       FLDA    OBJ\r
+       FSUB    KEYS\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     55,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.GRATE.OR.OBJ.EQ.CHAIN)SPK=31\r
+       FLDA    OBJ\r
+       FSUB    GRATE\r
+       JEQ     .+10\r
+       FLDA    OBJ\r
+       FSUB    CHAIN\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     31,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(SPK.NE.31.OR..NOT.HERE(KEYS))GOTO 2011\r
+       DECIMAL\r
+               LDX     31,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    SPK\r
+       JNE     #2011\r
+       FLDA    KEYS\r
+       JSA     HERE\r
+       JEQ     #2011\r
+/      IF(OBJ.EQ.CHAIN)GOTO 9048\r
+       FLDA    OBJ\r
+       FSUB    CHAIN\r
+       JEQ     #9048\r
+/      IF(.NOT.CLOSNG)GOTO 9043\r
+       FLDA    CLOSNG\r
+       JEQ     #9043\r
+/      K=130\r
+       FLDA    #LIT+207\r
+       FSTA    K\r
+/      IF(.NOT.PANIC)CLOCK2=15\r
+       FLDA    PANIC\r
+       JNE     .+5\r
+       FLDA    #LIT+25\r
+       FSTA    CLOCK2\r
+/      PANIC=.TRUE.\r
+       FLDA    ONE\r
+       FSTA    PANIC\r
+/      GOTO 2010\r
+       JA      #2010\r
+\r
+/C\r
+/9043   K=34+PROP(GRATE)\r
+#9043, FLDA    GRATE\r
+       ATX     7\r
+       DECIMAL\r
+               LDX     34,0\r
+       OCTAL\r
+       XTA     0\r
+       FADD    PROP-3,7\r
+       FSTA    K\r
+/      IF(VERB.EQ.LOCK)PROP(GRATE)=0\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+       FLDA    VERB\r
+       FSUB    LOCK\r
+       JNE     .+4\r
+/      FCLA                    / already zero\r
+       FSTA    PROP-3,7\r
+/      K=K+2*PROP(GRATE)\r
+       FLDA    TWO\r
+       FMUL    PROP-3,7\r
+       FADD    K\r
+       FSTA    K\r
+/      GOTO 2010\r
+       JA      #2010\r
+\r
+/C\r
+/C CLAM/OYSTER.\r
+/C\r
+/9046   K=0\r
+#9046, FCLA\r
+       FSTA    K\r
+/      IF(OBJ.EQ.OYSTER)K=1\r
+       FLDA    OBJ\r
+       FSUB    OYSTER\r
+       JNE     .+5\r
+       FLDA    ONE\r
+       FSTA    K\r
+/      SPK=124+K\r
+       DECIMAL\r
+               LDX     124,0\r
+       OCTAL\r
+       XTA     0\r
+       FADD    K\r
+       FSTA    SPK\r
+/      IF(TOTING(OBJ))SPK=120+K\r
+       FLDA    OBJ\r
+       JSA     TOTING\r
+       JEQ     #9046A\r
+       DECIMAL\r
+               LDX     120,0\r
+       OCTAL\r
+       XTA     0\r
+       FADD    K\r
+       FSTA    SPK\r
+/      IF(.NOT.TOTING(TRIDNT))SPK=122+K\r
+#9046A,        FLDA    TRIDNT\r
+       JSA     TOTING\r
+       JNE     .+10\r
+       DECIMAL\r
+               LDX     122,0\r
+       OCTAL\r
+       XTA     0\r
+       FADD    K\r
+       FSTA    SPK\r
+/      IF(VERB.EQ.LOCK)SPK=61\r
+       FLDA    VERB\r
+       FSUB    LOCK\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     61,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(SPK.NE.124)GOTO 2011\r
+       DECIMAL\r
+               LDX     124,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    SPK\r
+       JNE     #2011\r
+/      CALL DSTROY(CLAM)\r
+       FLDA    CLAM\r
+       JSA     DSTROY\r
+/      CALL DROP(OYSTER,LOC)\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      OYSTER\r
+       JA      LOC\r
+/      CALL DROP(PEARL,105)\r
+       JSR     DROP\r
+       JA      #2011\r
+       JA      PEARL\r
+       JA      #LIT+157\r
+/      GOTO 2011\r
+\r
+/C\r
+/C CHAIN.\r
+/C\r
+/9048   IF(VERB.EQ.LOCK)GOTO 9049\r
+#9048, FLDA    VERB\r
+       FSUB    LOCK\r
+       JEQ     #9049\r
+/      SPK=171\r
+       DECIMAL\r
+               LDX     171,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(PROP(BEAR).EQ.0)SPK=41\r
+       FLDA    BEAR\r
+       JSA     RDPROP\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     41,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(PROP(CHAIN).EQ.0)SPK=37\r
+       FLDA    CHAIN\r
+       JSA     RDPROP\r
+       JNE     .+4\r
+       FLDA    #LIT+71\r
+       FSTA    SPK\r
+/      IF(SPK.NE.171)GOTO 2011\r
+       DECIMAL\r
+               LDX     171,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    SPK\r
+       JNE     #2011\r
+/      PROP(CHAIN)=0\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      FIXED(CHAIN)=0\r
+       FSTA    FIXED-3,7\r
+/      IF(PROP(BEAR).NE.3)PROP(BEAR)=2\r
+       FLDA    BEAR\r
+       JSA     RDPROP\r
+       FSUB    THREE\r
+       JEQ     .+5\r
+       FLDA    TWO\r
+       FSTA    PROP-3,7\r
+/      FIXED(BEAR)=2-PROP(BEAR)\r
+       FLDA    TWO\r
+       FSUB    PROP-3,7\r
+       FSTA    FIXED-3,7\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/9049   SPK=172\r
+#9049, DECIMAL\r
+               LDX     172,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(PROP(CHAIN).NE.0)SPK=34\r
+       FLDA    CHAIN\r
+       JSA     RDPROP\r
+       JEQ     .+6\r
+       DECIMAL\r
+               LDX     34,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(LOC.NE.PLAC(CHAIN))SPK=173\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,7\r
+       JEQ     .+6\r
+       DECIMAL\r
+               LDX     173,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(SPK.NE.172)GOTO 2011\r
+       DECIMAL\r
+               LDX     172,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    SPK\r
+       JNE     #2011\r
+/      PROP(CHAIN)=2\r
+       FLDA    TWO\r
+       FSTA    PROP-3,7\r
+/      IF(TOTING(CHAIN))CALL DROP(CHAIN,LOC)\r
+       FLDA    CHAIN\r
+       JSA     TOTING\r
+       JEQ     .+12\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      CHAIN\r
+       JA      LOC\r
+/      FIXED(CHAIN)=-1\r
+       FLDA    MINUS1\r
+       FSTA    FIXED-3,7\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C LIGHT LAMP\r
+/C\r
+/9070   IF(.NOT.HERE(LAMP))GOTO 2011\r
+#9070, FLDA    LAMP\r
+       JSA     HERE\r
+       JEQ     #2011\r
+/      SPK=184\r
+       FLDA    #LIT+253\r
+       FSTA    SPK\r
+/      IF(LIMIT.LT.0)GOTO 2011\r
+       FLDA    LIMIT\r
+       JLT     #2011\r
+/      PROP(LAMP)=1\r
+       FLDA    LAMP\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      CALL RSPEAK(39)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+74\r
+/      IF(WZDARK)GOTO 2000\r
+       FLDA    WZDARK\r
+       JNE     #2000\r
+/      GOTO 2012\r
+       JA      #2012\r
+\r
+/C\r
+/C LAMP OFF\r
+/C\r
+/9080   IF(.NOT.HERE(LAMP))GOTO 2011\r
+#9080, FLDA    LAMP\r
+       ATX     7\r
+       JSA     HERE\r
+       JEQ     #2011\r
+/      PROP(LAMP)=0\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      CALL RSPEAK(40)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+77\r
+/      IF(DARK(0))CALL RSPEAK(16)\r
+       JSA     DARK\r
+       JEQ     #2012\r
+       JSR     RSPEAK\r
+       JA      #2012\r
+       JA      #LIT+30\r
+/      GOTO 2012\r
+\r
+/C\r
+/C WAVE. NO EFFECT UNLESS WAVING ROD AT FISSURE.\r
+/C\r
+/9090   IF((.NOT.TOTING(OBJ)).AND.(OBJ.NE.ROD.OR..NOT.TOTING(ROD2)))\r
+/      1        SPK=29\r
+#9090, FLDA    OBJ\r
+       JSA     TOTING\r
+       JNE     .+20\r
+       FLDA    OBJ\r
+       FSUB    ROD\r
+       JNE     .+12\r
+       FLDA    ROD2\r
+       JSA     TOTING\r
+       JNE     .+4\r
+       FLDA    #LIT+135\r
+       FSTA    SPK\r
+/      IF(OBJ.NE.ROD.OR..NOT.AT(FISSUR).OR..NOT.TOTING(OBJ)\r
+/      1       .OR.CLOSNG)GOTO 2011\r
+       FLDA    OBJ\r
+       FSUB    ROD\r
+       JNE     #2011\r
+       FLDA    FISSUR\r
+       JSA     AT\r
+       JEQ     #2011\r
+       FLDA    OBJ\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+       FLDA    CLOSNG\r
+       JNE     #2011\r
+/      PROP(FISSUR)=1-PROP(FISSUR)\r
+       FLDA    FISSUR\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSUB    PROP-3,7\r
+       FSTA    PROP-3,7\r
+/      CALL PSPEAK(FISSUR,2-PROP(FISSUR))\r
+       FLDA    FISSUR\r
+       ATX     7\r
+       FLDA    TWO\r
+       FSUB    PROP-3,7\r
+       FSTA    #TMP\r
+       JSR     PSPEAK\r
+       JA      #2012\r
+       JA      FISSUR\r
+       JA      #TMP\r
+/      GOTO 2012\r
+\r
+/C\r
+/C ATTACK. ASSUME TARGET IF UNAMBIGUOUS. "THROW" ALSO LINKS HERE. ATTACKABLE\r
+/C OBJECTS FALL INTO TWO CATEGORIES: ENEMIES (SNAKE, DWARF, ETC.) AND OTHERS\r
+/C (BIRD, CLAM). AMBIGUOUS IF TWO ENEMIES, OR IF NO ENEMIES BUT TWO OTHERS.\r
+/C\r
+/9120   DO 9121 I=1,5\r
+#9120, FLDA    ONE\r
+       FSTA    I\r
+\r
+#H0102,        FLDA    I\r
+       ATX     7\r
+/      IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 9122\r
+       FLDA    DLOC-3,7\r
+       FSUB    LOC\r
+       JNE     #9121\r
+       FLDA    DFLAG\r
+       FSUB    TWO\r
+       JGE     #9122\r
+\r
+/9121   CONTINUE\r
+#9121, FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+3\r
+       JLE     #H0102\r
+/      I=0\r
+       FCLA\r
+       FSTA    I\r
+\r
+/9122   IF(OBJ.NE.0)GOTO 9124\r
+#9122, FLDA    OBJ\r
+       JNE     #9124\r
+/      IF(I.NE.0)OBJ=DWARF\r
+       FLDA    I\r
+       JEQ     .+6\r
+       FLDA    DWARF\r
+       FSTA    OBJ\r
+/      IF(HERE(SNAKE))OBJ=OBJ*100+SNAKE\r
+       FLDA    SNAKE\r
+       JSA     HERE\r
+       JEQ     .+11\r
+       FLDA    OBJ\r
+       FMUL    #LIT+154\r
+       FADD    SNAKE\r
+       FSTA    OBJ\r
+/      IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)OBJ=OBJ*100+DRAGON\r
+       FLDA    DRAGON\r
+       JSA     AT\r
+       JEQ     .+15\r
+/      FLDA    DRAGON\r
+/      ATX     3\r
+       FLDA    PROP-3,3\r
+       JNE     .+11\r
+       FLDA    OBJ\r
+       FMUL    #LIT+154\r
+       FADD    DRAGON\r
+       FSTA    OBJ\r
+/      IF(AT(TROLL))OBJ=OBJ*100+TROLL\r
+       FLDA    TROLL\r
+       JSA     AT\r
+       JEQ     .+11\r
+       FLDA    OBJ\r
+       FMUL    #LIT+154\r
+       FADD    TROLL\r
+       FSTA    OBJ\r
+/      IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)OBJ=OBJ*100+BEAR\r
+       FLDA    BEAR\r
+       JSA     HERE\r
+       JEQ     .+15\r
+       FLDA    PROP-3,3\r
+       JNE     .+11\r
+       FLDA    OBJ\r
+       FMUL    #LIT+154\r
+       FADD    BEAR\r
+       FSTA    OBJ\r
+/      IF(OBJ.GT.100)GOTO 8000\r
+       FLDA    OBJ\r
+       FSUB    #LIT+154\r
+       JGT     #8000\r
+/      IF(OBJ.NE.0)GOTO 9124\r
+       FLDA    OBJ\r
+       JNE     #9124\r
+/C\r
+/C CAN'T ATTACK BIRD BY THROWING AXE.\r
+/C\r
+/      IF(HERE(BIRD).AND.VERB.NE.THROW)OBJ=BIRD\r
+       FLDA    BEAR\r
+       JSA     HERE\r
+       JEQ     .+14\r
+       FLDA    VERB\r
+       FSUB    THROW\r
+       JNE     .+6\r
+       FLDA    BIRD\r
+       FSTA    OBJ\r
+/C\r
+/C CLAM AND OYSTER BOTH TREATED AS CLAM FOR INTRANSITIVE CASE; NO HARM DONE.\r
+/C\r
+/      IF(HERE(CLAM).OR.HERE(OYSTER))OBJ=100*OBJ+CLAM\r
+       FLDA    CLAM\r
+       JSA     HERE\r
+       JNE     .+10\r
+       FLDA    OYSTER\r
+       JSA     HERE\r
+       JEQ     .+11\r
+       FLDA    #LIT+154\r
+       FMUL    OBJ\r
+       FADD    CLAM\r
+       FSTA    OBJ\r
+/      IF(OBJ.GT.100)GOTO 8000\r
+       FLDA    OBJ\r
+       FSUB    #LIT+154\r
+       JGT     #8000\r
+\r
+/9124   IF(OBJ.NE.BIRD)GOTO 9125\r
+#9124, FLDA    OBJ\r
+       FSUB    BIRD\r
+       JNE     #9125\r
+/      SPK=137\r
+       DECIMAL\r
+               LDX     137,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(CLOSED)GOTO 2011\r
+       FLDA    CLOSED\r
+       JNE     #2011\r
+/      CALL DSTROY(BIRD)\r
+       FLDA    BIRD\r
+       JSA     DSTROY\r
+/      PROP(BIRD)=0\r
+       FLDA    BIRD\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1\r
+       FLDA    SNAKE\r
+       ATX     7\r
+       FLDA    PLACE-3,7\r
+       FSUB    PLAC-3,7\r
+       JNE     .+7\r
+       FLDA    TALLY2\r
+       FADD    ONE\r
+       FSTA    TALLY2\r
+/      SPK=45\r
+       FLDA    #LIT+102\r
+       FSTA    SPK\r
+\r
+/9125   IF(OBJ.EQ.0)SPK=44\r
+#9125, FLDA    OBJ\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     44,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)SPK=150\r
+       FLDA    OBJ\r
+       FSUB    CLAM\r
+       JEQ     .+10\r
+       FLDA    OBJ\r
+       FSUB    OYSTER\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     150,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.SNAKE)SPK=46\r
+       FLDA    OBJ\r
+       FSUB    SNAKE\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     46,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.DWARF)SPK=49\r
+       FLDA    OBJ\r
+       FSUB    DWARF\r
+       JNE     .+4\r
+       FLDA    #LIT+105\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.DWARF.AND.CLOSED)GOTO 19000\r
+       FLDA    OBJ\r
+       FSUB    DWARF\r
+       JNE     .+6\r
+       FLDA    CLOSED\r
+       JNE     #19000\r
+/      IF(OBJ.EQ.DRAGON)SPK=167\r
+       FLDA    OBJ\r
+       FSUB    DRAGON\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     167,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.TROLL)SPK=157\r
+       FLDA    OBJ\r
+       FSUB    TROLL\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     157,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.BEAR)SPK=165+(PROP(BEAR)+1)/2\r
+       FLDA    OBJ\r
+       FSUB    BEAR\r
+       JNE     .+14\r
+       FLDA    BEAR\r
+       JSA     RDPROP\r
+       FADD    ONE\r
+       FDIV    TWO\r
+       JSA     #FIX\r
+       FADD    #LIT+245\r
+       FSTA    SPK\r
+/      IF(OBJ.NE.DRAGON.OR.PROP(DRAGON).NE.0)GOTO 2011\r
+       FLDA    OBJ\r
+       FSUB    DRAGON\r
+       JNE     #2011\r
+       FLDA    DRAGON\r
+       JSA     RDPROP\r
+       JNE     #2011\r
+/C\r
+/C FUN STUFF FOR DRAGON. IF HE INSISTS ON ATTACKING IT, WIN! SET PROP TO DEAD,\r
+/C MOVE DRAGON TO CENTRAL LOC (STILL FIXED), MOVE RUG THERE (NOT FIXED), AND\r
+/C MOVE HIM THERE, TOO. THEN DO A NULL MOTION TO GET NEW DESCRIPTION.\r
+/C\r
+/      CALL RSPEAK(49)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+105\r
+/      VERB=0\r
+       FCLA\r
+       FSTA    VERB\r
+/      OBJ=0\r
+       FSTA    OBJ\r
+/      CALL GETIN(WD1,WD1A,WD1X,WD2,WD2A,WD2X)\r
+       JSR     GETIN\r
+       JA      .+12\r
+       JA      WD1\r
+       JA      WD1X\r
+       JA      WD2\r
+       JA      WD2X\r
+/      IF(WD1.NE.'YE'.AND.WD1.NE.'Y')GOTO 2608\r
+       FLDA    WD1\r
+       FSUB    TYES\r
+       JEQ     OKKILL\r
+       FLDA    WD1\r
+       FSUB    TYE\r
+       JEQ     OKKILL\r
+       FLDA    WD1\r
+       FSUB    TY\r
+       JNE     #2608\r
+/      CALL PSPEAK(DRAGON,1)\r
+OKKILL,        JSR     PSPEAK\r
+       JA      .+6\r
+       JA      DRAGON\r
+       JA      ONE\r
+/      PROP(DRAGON)=2\r
+       FLDA    DRAGON\r
+       ATX     7\r
+       FLDA    TWO\r
+       FSTA    PROP-3,7\r
+/      PROP(RUG)=0\r
+       FLDA    RUG\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      K=(PLAC(DRAGON)+FIXD(DRAGON))/2\r
+       FLDA    DRAGON\r
+       ATX     7\r
+       FLDA    PLAC-3,7\r
+       FADD    FIXD-3,7\r
+       FDIV    TWO\r
+       JSA     #FIX\r
+       FSTA    K\r
+/      CALL MOVE(DRAGON+100,-1)\r
+       FLDA    DRAGON\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      MINUS1\r
+/      CALL MOVE(RUG+100,0)\r
+       FLDA    RUG\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      ZERO\r
+/      CALL MOVE(DRAGON,K)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      DRAGON\r
+       JA      K\r
+/      CALL MOVE(RUG,K)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      RUG\r
+       JA      K\r
+/      DO 9126 OBJ=1,100\r
+       FLDA    ONE\r
+       FSTA    OBJ\r
+\r
+/      IF(PLACE(OBJ).EQ.PLAC(DRAGON).OR.PLACE(OBJ).EQ.FIXD(DRAGON))\r
+/      1       CALL MOVE(OBJ,K)\r
+#H0122,        FLDA    OBJ\r
+       ATX     7\r
+       FLDA    DRAGON\r
+       ATX     6\r
+       FLDA    PLACE-3,7\r
+       FSUB    PLAC-3,6\r
+       JEQ     .+10\r
+       FLDA    PLACE-3,7\r
+       FSUB    FIXD-3,6\r
+       JNE     #9126\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      OBJ\r
+       JA      K\r
+/9126   CONTINUE\r
+#9126, FLDA    OBJ\r
+       FADD    ONE\r
+       FSTA    OBJ\r
+       FSUB    #LIT+154\r
+       JLE     #H0122\r
+/      LOC=K\r
+       FLDA    K\r
+       FSTA    LOC\r
+/      K=NULL\r
+       FLDA    NULL\r
+       FSTA    K\r
+/      GOTO 8\r
+       JA      #8\r
+\r
+/C\r
+/C POUR. IF NO OBJECT, OR OBJECT IS BOTTLE, ASSUME CONTENTS OF BOTTLE.\r
+/C SPECIAL TESTS FOR POURING WATER OR OIL ON PLANT OR RUSTY DOOR.\r
+/C\r
+/9130   IF(OBJ.EQ.BOTTLE.OR.OBJ.EQ.0)OBJ=LIQ(0)\r
+#9130, FLDA    OBJ\r
+       FSUB    BOTTLE\r
+       JEQ     .+6\r
+       FLDA    OBJ\r
+       JNE     .+6\r
+       JSA     LIQ\r
+       FSTA    OBJ\r
+/      IF(OBJ.EQ.0)GOTO 8000\r
+       FLDA    OBJ\r
+       JEQ     #8000\r
+/      IF(.NOT.TOTING(OBJ))GOTO 2011\r
+       FLDA    OBJ\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+/      SPK=78\r
+       DECIMAL\r
+               LDX     78,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.NE.OIL.AND.OBJ.NE.WATER)GOTO 2011\r
+       FLDA    OBJ\r
+       FSUB    OIL\r
+       JEQ     .+10\r
+       FLDA    OBJ\r
+       FSUB    WATER\r
+       JNE     #2011\r
+/      PROP(BOTTLE)=1\r
+       FLDA    BOTTLE\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      PLACE(OBJ)=0\r
+       FLDA    OBJ\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PLACE-3,7\r
+/      SPK=77\r
+       DECIMAL\r
+               LDX     77,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(.NOT.(AT(PLANT).OR.AT(DOOR)))GOTO 2011\r
+       FLDA    PLANT\r
+       JSA     AT\r
+       JNE     .+10\r
+       FLDA    DOOR\r
+       JSA     AT\r
+       JEQ     #2011\r
+/C\r
+/      IF(AT(DOOR))GOTO 9132\r
+       FLDA    DOOR\r
+       JSA     AT\r
+       JNE     #9132\r
+/      SPK=112\r
+       DECIMAL\r
+               LDX     112,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.NE.WATER)GOTO 2011\r
+       FLDA    OBJ\r
+       FSUB    WATER\r
+       JNE     #2011\r
+/      CALL PSPEAK(PLANT,PROP(PLANT)+1)\r
+       FLDA    PLANT\r
+       JSA     RDPROP\r
+       FADD    ONE\r
+       FSTA    #TMP\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      PLANT\r
+       JA      #TMP\r
+/      PROP(PLANT)=MOD(PROP(PLANT)+2,6)\r
+       FLDA    PLANT\r
+       JSA     RDPROP\r
+       FADD    TWO\r
+       FSTA    #TMP\r
+       JSR     MOD\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      #LIT+6\r
+       FSTA    PROP-3,7\r
+/      PROP(PLANT2)=PROP(PLANT)/2\r
+       FLDA    PLANT2\r
+       ATX     7\r
+       FLDA    PLANT\r
+       JSA     RDPROP\r
+       FDIV    TWO\r
+       JSA     #FIX\r
+       FSTA    PROP-3,6\r
+/      K=NULL\r
+       FLDA    NULL\r
+       FSTA    K\r
+/      GOTO 8\r
+       JA      #8\r
+\r
+/C\r
+/9132   PROP(DOOR)=0\r
+#9132, FLDA    DOOR\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      IF(OBJ.EQ.OIL)PROP(DOOR)=1\r
+       FLDA    OBJ\r
+       FSUB    OIL\r
+       JNE     .+10\r
+       FLDA    DOOR\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      SPK=113+PROP(DOOR)\r
+       FLDA    DOOR\r
+       ATX     7\r
+       DECIMAL\r
+               LDX     113,0\r
+       OCTAL\r
+       XTA     0\r
+       FADD    PROP-3,7\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C EAT. INTRANSITIVE: ASSUME FOOD IF PRESENT, ELSE ASK WHAT. TRANSITIVE: FOOD\r
+/C OK, SOME THINGS LOSE APPETITE, REST ARE RIDICULOUS.\r
+/C\r
+/8140   IF(.NOT.HERE(FOOD))GOTO 8000\r
+#8140, FLDA    FOOD\r
+       JSA     HERE\r
+       JEQ     #8000\r
+\r
+/8142   CALL DSTROY(FOOD)\r
+#8142, FLDA    FOOD\r
+       JSA     DSTROY\r
+/      SPK=72\r
+       DECIMAL\r
+               LDX     72,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+/C\r
+/9140   IF(OBJ.EQ.FOOD)GOTO 8142\r
+#9140, FLDA    OBJ\r
+       FSUB    FOOD\r
+       JEQ     #8142\r
+/      IF(OBJ.EQ.BIRD.OR.OBJ.EQ.SNAKE.OR.OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER\r
+/      1       .OR.OBJ.EQ.DWARF.OR.OBJ.EQ.DRAGON.OR.OBJ.EQ.TROLL\r
+/      2       .OR.OBJ.EQ.BEAR)SPK=71\r
+       FLDA    OBJ\r
+       FSUB    BIRD\r
+       JEQ     #M78\r
+       FLDA    OBJ\r
+       FSUB    SNAKE\r
+       JEQ     #M78\r
+       FLDA    OBJ\r
+       FSUB    CLAM\r
+       JEQ     #M78\r
+       FLDA    OBJ\r
+       FSUB    OYSTER\r
+       JEQ     #M78\r
+       FLDA    OBJ\r
+       FSUB    DWARF\r
+       JEQ     #M78\r
+       FLDA    OBJ\r
+       FSUB    DRAGON\r
+       JEQ     #M78\r
+       FLDA    OBJ\r
+       FSUB    TROLL\r
+       JEQ     #M78\r
+       FLDA    OBJ\r
+       FSUB    BEAR\r
+       JNE     #2011\r
+#M78,  DECIMAL\r
+               LDX     71,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C DRINK. IF NO OBJECT, ASSUME WATER AND LOOK FOR IT HERE. IF WATER IS IN\r
+/C THE BOTTLE, DRINK THAT, ELSE MUST BE AT A WATER LOC, SO DRINK STREAM.\r
+/C\r
+/9150   IF(OBJ.EQ.0.AND.LIQLOC(LOC).NE.WATER.AND.(LIQ(0).NE.WATER\r
+/      1       .OR..NOT.HERE(BOTTLE)))GOTO 8000\r
+#9150, FLDA    OBJ\r
+       JNE     #M79\r
+       JSA     LIQLOC\r
+       FSUB    WATER\r
+       JEQ     #M79\r
+       JSA     LIQ\r
+       FSUB    WATER\r
+       JNE     #8000\r
+       FLDA    BOTTLE\r
+       JSA     HERE\r
+       JEQ     #8000\r
+/      IF(OBJ.NE.0.AND.OBJ.NE.WATER)SPK=110\r
+#M79,  FLDA    OBJ\r
+       JEQ     .+10\r
+/      FLDA    OBJ\r
+       FSUB    WATER\r
+       JEQ     .+4\r
+       FLDA    #LIT+162\r
+       FSTA    SPK\r
+/      IF(SPK.EQ.110.OR.LIQ(0).NE.WATER.OR..NOT.HERE(BOTTLE))GOTO 2011\r
+       FLDA    SPK\r
+       FSUB    #LIT+162\r
+       JEQ     #2011\r
+       JSA     LIQ\r
+       FSUB    WATER\r
+       JNE     #2011\r
+       FLDA    BOTTLE\r
+       JSA     HERE\r
+       JEQ     #2011\r
+/      PROP(BOTTLE)=1\r
+       FLDA    ONE\r
+       FSTA    PROP-3,3\r
+/      PLACE(WATER)=0\r
+       FLDA    WATER\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PLACE-3,7\r
+/      SPK=74\r
+       DECIMAL\r
+               LDX     74,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C RUB. YIELDS VARIOUS SNIDE REMARKS.\r
+/C\r
+/9160   IF(OBJ.NE.LAMP)SPK=76\r
+#9160, FLDA    OBJ\r
+       FSUB    LAMP\r
+       JEQ     #2011\r
+       DECIMAL\r
+               LDX     76,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C THROW. SAME AS DISCARD UNLESS AXE. THEN SAME AS ATTACK EXCEPT IGNORE BIRD,\r
+/C AND IF DWARF IS PRESENT THEN ONE MIGHT BE KILLED. (ONLY WAY TO DO SO!)\r
+/C AXE ALSO SPECIAL FOR DRAGON, BEAR, AND TROLL. TREASURES SPECIAL FOR TROLL.\r
+/C\r
+/9170   IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2\r
+#9170, FLDA    ROD2\r
+       JSA     TOTING\r
+       JEQ     #M81\r
+       FLDA    OBJ\r
+       FSUB    ROD\r
+       JNE     #M81\r
+       FLDA    ROD\r
+       JSA     TOTING\r
+       JNE     #M81\r
+       FLDA    ROD2\r
+       FSTA    OBJ\r
+/      IF(.NOT.TOTING(OBJ))GOTO 2011\r
+#M81,  FLDA    OBJ\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+/      IF(OBJ.GE.50.AND.OBJ.LE.MAXTRS.AND.AT(TROLL))GOTO 9178\r
+       FLDA    OBJ\r
+       FSUB    #LIT+110\r
+       JLT     #M82\r
+       FLDA    OBJ\r
+       FSUB    MAXTRS\r
+       JGT     #M82\r
+       FLDA    TROLL\r
+       JSA     AT\r
+       JNE     #9178\r
+/      IF(OBJ.EQ.FOOD.AND.HERE(BEAR))GOTO 9177\r
+#M82,  FLDA    OBJ\r
+       FSUB    FOOD\r
+       JNE     #M83\r
+       FLDA    BEAR\r
+       JSA     HERE\r
+       JNE     #9177\r
+/      IF(OBJ.NE.AXE)GOTO 9020\r
+#M83,  FLDA    OBJ\r
+       FSUB    AXE\r
+       JNE     #9020\r
+/      DO 9171 I=1,5\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/C\r
+/C NEEDN'T CHECK DFLAG IF AXE IS HERE.\r
+/C\r
+/      IF(DLOC(I).EQ.LOC)GOTO 9172\r
+#H0132,        FLDA    I\r
+       ATX     7\r
+       FLDA    DLOC-3,7\r
+       FSUB    LOC\r
+       JEQ     #9172\r
+\r
+/9171   CONTINUE\r
+#9171, FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+3\r
+       JLE     #H0132\r
+/      SPK=152\r
+       DECIMAL\r
+               LDX     152,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)GOTO 9175\r
+       FLDA    DRAGON\r
+       JSA     AT\r
+       JEQ     #M84\r
+/      FLDA    DRAGON\r
+/      ATX     3\r
+       FLDA    PROP-3,3\r
+       JEQ     #9175\r
+/      SPK=158\r
+#M84,  DECIMAL\r
+               LDX     158,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(AT(TROLL))GOTO 9175\r
+       FLDA    TROLL\r
+       JSA     AT\r
+       JNE     #9175\r
+/      IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)GOTO 9176\r
+       FLDA    BEAR\r
+       JSA     HERE\r
+       JEQ     #M85\r
+       FLDA    PROP-3,3\r
+       JEQ     #9176\r
+/      OBJ=0\r
+#M85,  FCLA\r
+       FSTA    OBJ\r
+/      GOTO 9120\r
+       JA      #9120\r
+\r
+/C\r
+/9172   SPK=48\r
+#9172, DECIMAL\r
+               LDX     48,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(RND(3).EQ.0)GOTO 9175\r
+       JSR     RND\r
+       JA      .+4\r
+       JA      THREE\r
+       JEQ     #9175\r
+/      DSEEN(I)=.FALSE.\r
+       FLDA    I\r
+       ATX     7\r
+       FCLA\r
+       FSTA    DSEEN-3,7\r
+/      DLOC(I)=0\r
+       FSTA    DLOC-3,7\r
+/      SPK=47\r
+       DECIMAL\r
+               LDX     47,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      DKILL=DKILL+1\r
+       FLDA    ONE\r
+       FADDM   DKILL\r
+/      IF(DKILL.EQ.1)SPK=149\r
+       FSUB    ONE\r
+       JNE     #9175\r
+       DECIMAL\r
+               LDX     149,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/9175   CALL RSPEAK(SPK)\r
+#9175, JSR     RSPEAK\r
+       JA      .+4\r
+       JA      SPK\r
+/      CALL DROP(AXE,LOC)\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      AXE\r
+       JA      LOC\r
+/      K=NULL\r
+       FLDA    NULL\r
+       FSTA    K\r
+/      GOTO 8\r
+       JA      #8\r
+\r
+/C\r
+/C THIS'LL TEACH HIM TO THROW THE AXE AT THE BEAR!\r
+/C\r
+/9176   SPK=164\r
+#9176, DECIMAL\r
+               LDX     164,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      CALL DROP(AXE,LOC)\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      AXE\r
+       JA      LOC\r
+/      FIXED(AXE)=-1\r
+       FLDA    AXE\r
+       ATX     7\r
+       FLDA    MINUS1\r
+       FSTA    FIXED-3,7\r
+/      PROP(AXE)=1\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      CALL JUGGLE(BEAR)\r
+       FLDA    BEAR\r
+       JSA     JUGGLE\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C BUT THROWING FOOD IS ANOTHER STORY.\r
+/C\r
+/9177   OBJ=BEAR\r
+#9177, FLDA    BEAR\r
+       FSTA    OBJ\r
+/      GOTO 9210\r
+       JA      #9210\r
+\r
+/C\r
+/C SNARF A TREASURE FOR THE TROLL.\r
+/C\r
+/9178   SPK=159\r
+#9178, DECIMAL\r
+               LDX     159,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      CALL DROP(OBJ,0)\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      OBJ\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL,0)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      TROLL\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL+100,0)\r
+       FLDA    TROLL\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      ZERO\r
+/      CALL DROP(TROLL2,PLAC(TROLL))\r
+       FLDA    TROLL\r
+       ATX     7\r
+       FLDA    PLAC-3,7\r
+       FSTA    #TMP\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      TROLL2\r
+       JA      #TMP\r
+/      CALL DROP(TROLL2+100,FIXD(TROLL))\r
+       FLDA    TROLL2\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+/      FLDA    TROLL\r
+/      ATX     7\r
+       FLDA    FIXD-3,7\r
+       FSTA    #TMP+3\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      #TMP+3\r
+/      CALL JUGGLE(CHASM)\r
+       FLDA    CHASM\r
+       JSA     JUGGLE\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C QUIT. INTRANSITIVE ONLY. VERIFY INTENT AND EXIT IF THAT'S WHAT HE WANTS.\r
+/C\r
+/8180   GAVEUP=YES(22,54,54)\r
+#8180, JSR     YES\r
+       JA      .+10\r
+       JA      #LIT+41\r
+       JA      #LIT+113\r
+       JA      #LIT+113\r
+       FSTA    GAVEUP\r
+\r
+/8185   IF(GAVEUP)GOTO 20000\r
+#8185, FLDA    GAVEUP\r
+       JNE     #20000\r
+/      GOTO 2012\r
+       JA      #2012\r
+/C\r
+/C FIND. MIGHT BE CARRYING IT, OR IT MIGHT BE HERE. ELSE GIVE CAVEAT.\r
+/C\r
+/9190   IF(AT(OBJ).OR.(LIQ(0).EQ.OBJ.AND.AT(BOTTLE))\r
+/      1       .OR.K.EQ.LIQLOC(LOC))SPK=94\r
+#9190, FLDA    OBJ\r
+       JSA     AT\r
+       JNE     #M86\r
+       JSA     LIQ\r
+       FSUB    OBJ\r
+       JNE     #M87\r
+       FLDA    BOTTLE\r
+       JSA     AT\r
+       JNE     #M86\r
+#M87,  JSA     LIQLOC\r
+       FSUB    K\r
+       JNE     .+6\r
+#M86,  DECIMAL\r
+               LDX     94,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      DO 9192 I=1,5\r
+       FLDA    ONE\r
+       FSTA    I\r
+/9192   IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2.AND.OBJ.EQ.DWARF)SPK=94\r
+#9192, FLDA    I\r
+       ATX     7\r
+       FLDA    DLOC-3,7\r
+       FSUB    LOC\r
+       JNE     #M88\r
+       FLDA    DFLAG\r
+       FSUB    TWO\r
+       JLT     #M88\r
+       FLDA    OBJ\r
+       FSUB    DWARF\r
+       JNE     #M88\r
+       DECIMAL\r
+               LDX     94,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+#M88,  FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+3\r
+       JLE     #9192\r
+/      IF(CLOSED)SPK=138\r
+       FLDA    CLOSED\r
+       JEQ     .+6\r
+       DECIMAL\r
+               LDX     138,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(TOTING(OBJ))SPK=24\r
+       FLDA    OBJ\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+       FLDA    #LIT+47\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C INVENTORY. IF OBJECT, TREAT SAME AS FIND. ELSE REPORT ON CURRENT BURDEN.\r
+/C\r
+/8200   SPK=98\r
+#8200, DECIMAL\r
+               LDX     98,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      DO 8201 I=1,100\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      IF(I.EQ.BEAR.OR..NOT.TOTING(I))GOTO 8201\r
+#H0143,        FLDA    I\r
+       FSUB    BEAR\r
+       JEQ     #8201\r
+       FLDA    I\r
+       JSA     TOTING\r
+       JEQ     #8201\r
+/      IF(SPK.EQ.98)CALL RSPEAK(99)\r
+       DECIMAL\r
+               LDX     98,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    SPK\r
+       JNE     .+10\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+151\r
+/      CALL PSPEAK(I,-1)\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      I\r
+       JA      MINUS1\r
+/      SPK=0\r
+       FCLA\r
+       FSTA    SPK\r
+\r
+/8201   CONTINUE\r
+#8201, FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+154\r
+       JLE     #H0143\r
+/      IF(TOTING(BEAR))SPK=141\r
+       FLDA    BEAR\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+       FLDA    #LIT+226\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C FEED. IF BIRD, NO SEED. SNAKE, DRAGON, TROLL: QUIP. IF DWARF, MAKE HIM\r
+/C MAD. BEAR, SPECIAL.\r
+/C\r
+/9210   IF(OBJ.NE.BIRD)GOTO 9212\r
+#9210, FLDA    OBJ\r
+       FSUB    BIRD\r
+       JNE     #9212\r
+/      SPK=100\r
+       FLDA    #LIT+154\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/9212   IF(OBJ.NE.SNAKE.AND.OBJ.NE.DRAGON.AND.OBJ.NE.TROLL)GOTO 9213\r
+#9212, FLDA    OBJ\r
+       FSUB    SNAKE\r
+       JEQ     #M89\r
+       FLDA    OBJ\r
+       FSUB    DRAGON\r
+       JEQ     #M89\r
+       FLDA    OBJ\r
+       FSUB    TROLL\r
+       JNE     #9213\r
+/      SPK=102\r
+#M89,  DECIMAL\r
+               LDX     102,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.DRAGON.AND.PROP(DRAGON).NE.0)SPK=110\r
+       FLDA    OBJ\r
+       FSUB    DRAGON\r
+       JNE     #M90\r
+       FLDA    DRAGON\r
+       JSA     RDPROP\r
+       JEQ     .+4\r
+       FLDA    #LIT+162\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.TROLL)SPK=182\r
+#M90,  FLDA    OBJ\r
+       FSUB    TROLL\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     182,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.NE.SNAKE.OR.CLOSED.OR..NOT.HERE(BIRD))GOTO 2011\r
+       FLDA    OBJ\r
+       FSUB    SNAKE\r
+       JNE     #2011\r
+       FLDA    CLOSED\r
+       JNE     #2011\r
+       FLDA    BIRD\r
+       JSA     HERE\r
+       JEQ     #2011\r
+/      SPK=101\r
+       DECIMAL\r
+               LDX     101,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      CALL DSTROY(BIRD)\r
+       FLDA    BIRD\r
+       JSA     DSTROY\r
+/      PROP(BIRD)=0\r
+       FLDA    BIRD\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      TALLY2=TALLY2+1\r
+       FLDA    TALLY2\r
+       FADD    ONE\r
+       FSTA    TALLY2\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/9213   IF(OBJ.NE.DWARF)GOTO 9214\r
+#9213, FLDA    OBJ\r
+       FSUB    DWARF\r
+       JNE     #9214\r
+/      IF(.NOT.HERE(FOOD))GOTO 2011\r
+       FLDA    FOOD\r
+       JSA     HERE\r
+       JEQ     #2011\r
+/      SPK=103\r
+       DECIMAL\r
+               LDX     103,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      DFLAG=DFLAG+1\r
+       FLDA    ONE\r
+       FADDM   DFLAG\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/9214   IF(OBJ.NE.BEAR)GOTO 9215\r
+#9214, FLDA    OBJ\r
+       FSUB    BEAR\r
+       JNE     #9215\r
+/      IF(PROP(BEAR).EQ.0)SPK=102\r
+       FLDA    BEAR\r
+       JSA     RDPROP\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     102,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(PROP(BEAR).EQ.3)SPK=110\r
+       FLDA    PROP-3,7\r
+       FSUB    THREE\r
+       JNE     .+4\r
+       FLDA    #LIT+162\r
+       FSTA    SPK\r
+/      IF(.NOT.HERE(FOOD))GOTO 2011\r
+       FLDA    FOOD\r
+       JSA     HERE\r
+       JEQ     #2011\r
+/      CALL DSTROY(FOOD)\r
+       FLDA    FOOD\r
+       JSA     DSTROY\r
+/      PROP(BEAR)=1\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      FIXED(AXE)=0\r
+       FLDA    AXE\r
+       ATX     7\r
+       FCLA\r
+       FSTA    FIXED-3,7\r
+/      PROP(AXE)=0\r
+       FSTA    PROP-3,7\r
+/      SPK=168\r
+       DECIMAL\r
+               LDX     168,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/9215   SPK=14\r
+#9215, DECIMAL\r
+               LDX     14,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C FILL. BOTTLE MUST BE EMPTY, AND SOME LIQUID AVAILABLE. (VASE IS NASTY.)\r
+/C\r
+/9220   IF(OBJ.EQ.VASE)GOTO 9222\r
+#9220, FLDA    OBJ\r
+       FSUB    VASE\r
+       JEQ     #9222\r
+/      IF(OBJ.NE.0.AND.OBJ.NE.BOTTLE)GOTO 2011\r
+       FLDA    OBJ\r
+       JEQ     #M91\r
+       FLDA    OBJ\r
+       FSUB    BOTTLE\r
+       JNE     #2011\r
+/      IF(OBJ.EQ.0.AND..NOT.HERE(BOTTLE))GOTO 8000\r
+#M91,  FLDA    OBJ\r
+       JNE     #M92\r
+       FLDA    BOTTLE\r
+       JSA     HERE\r
+       JEQ     #8000\r
+/      SPK=107\r
+#M92,  DECIMAL\r
+               LDX     107,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(LIQLOC(LOC).EQ.0)SPK=106\r
+       JSA     LIQLOC\r
+       JNE     #M92A\r
+       DECIMAL\r
+               LDX     106,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(LIQ(0).NE.0)SPK=105\r
+#M92A, JSA     LIQ\r
+       JEQ     .+4\r
+       FLDA    #LIT+157\r
+       FSTA    SPK\r
+/      IF(SPK.NE.107)GOTO 2011\r
+       DECIMAL\r
+               LDX     107,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    SPK\r
+       JNE     #2011\r
+/       PROP(BOTTLE)=MOD(COND(LOC),4)/2*2\r
+       FLDA    BOTTLE\r
+       ATX     7\r
+       FLDA    LOC\r
+       ATX     6\r
+       FLDA    COND-3,6\r
+       FSTA    #TMP\r
+       JSR     MOD\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      #LIT\r
+       FDIV    TWO\r
+       JSA     #FIX\r
+       FMUL    TWO\r
+       FSTA    PROP-3,7\r
+/      K=LIQ(0)\r
+       JSA     LIQ\r
+       FSTA    K\r
+/      IF(TOTING(BOTTLE))PLACE(K)=-1\r
+       FLDA    BOTTLE\r
+       JSA     TOTING\r
+       JEQ     .+10\r
+       FLDA    K\r
+       ATX     7\r
+       FLDA    MINUS1\r
+       FSTA    PLACE-3,7\r
+/      IF(K.EQ.OIL)SPK=108\r
+       FLDA    K\r
+       FSUB    OIL\r
+       JNE     #2011\r
+       DECIMAL\r
+               LDX     108,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/9222   SPK=29\r
+#9222, FLDA    #LIT+135\r
+       FSTA    SPK\r
+/      IF(LIQLOC(LOC).EQ.0)SPK=144\r
+       JSA     LIQLOC\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     144,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(LIQLOC(LOC).EQ.0.OR..NOT.TOTING(VASE))GOTO 2011\r
+       JSA     LIQLOC\r
+       JEQ     #2011\r
+       FLDA    VASE\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+/      CALL RSPEAK(145)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+234\r
+/      PROP(VASE)=2\r
+       FLDA    VASE\r
+       ATX     7\r
+       FLDA    TWO\r
+       FSTA    PROP-3,7\r
+/      FIXED(VASE)=-1\r
+       FLDA    MINUS1\r
+       FSTA    FIXED-3,7\r
+/      GOTO 9024\r
+       JA      #9024\r
+\r
+/C\r
+/C BLAST. NO EFFECT UNLESS YOU'VE GOT DYNAMITE, WHICH IS A NEAT TRICK!\r
+/C\r
+/9230   IF(PROP(ROD2).LT.0.OR..NOT.CLOSED)GOTO 2011\r
+#9230, FLDA    ROD2\r
+       JSA     RDPROP\r
+       JLT     #2011\r
+       FLDA    CLOSED\r
+       JEQ     #2011\r
+/      BONUS=133\r
+       DECIMAL\r
+               LDX     133,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    BONUS\r
+/      IF(LOC.EQ.115)BONUS=134\r
+       FLDA    LOC\r
+       FSUB    #LIT+165\r
+       JNE     .+7\r
+       DECIMAL\r
+               LDX     134,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    BONUS\r
+/      IF(HERE(ROD2))BONUS=135\r
+       FLDA    ROD2\r
+       JSA     HERE\r
+       JEQ     .+7\r
+       DECIMAL\r
+               LDX     135,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    BONUS\r
+/      CALL RSPEAK(BONUS)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      BONUS\r
+/      GOTO 20000\r
+       JA      #20000\r
+\r
+/C\r
+/C SCORE. GO TO SCORING SECTION, WHICH WILL RETURN TO 8241 IF SCORNG IS TRUE.\r
+/C\r
+/8240   SCORNG=.TRUE.\r
+#8240, FLDA    ONE\r
+       FSTA    SCORNG\r
+/      GOTO 20000\r
+       JA      #20000\r
+\r
+/C\r
+/8241   SCORNG=.FALSE.\r
+#8241, FCLA\r
+       FSTA    SCORNG\r
+/      TYPE 8243,SCORE,MXSCOR\r
+       JSA     SPRINT\r
+       JA      #8243\r
+       JA      TWO\r
+       \r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #8243A\r
+       FLDA    SCORE\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+       JA      #8243B\r
+       JA      THREE\r
+\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #8243A\r
+       FLDA    MXSCOR\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+       JA      #8243C\r
+       JA      ONE\r
+\r
+/8243   FORMAT(' If you were to quit now, you would score',I4\r
+/      1       ,' out of a possible',I4,'.')\r
+/      GAVEUP=YES(143,54,54)\r
+       JSR     YES\r
+       JA      .+10\r
+       JA      #LIT+231\r
+       JA      #LIT+113\r
+       JA      #LIT+113\r
+       FSTA    GAVEUP\r
+/      GOTO 8185\r
+       JA      #8185\r
+\r
+/C\r
+/C FEE FIE FOE FOO (AND FUM). ADVANCE TO NEXT STATE IF GIVEN IN PROPER ORDER.\r
+/C LOOK UP WD1 IN SECTION 3 OF VOCAB TO DETERMINE WHICH WORD WE'VE GOT. LAST\r
+/C WORD ZIPS THE EGGS BACK TO THE GIANT ROOM (UNLESS ALREADY THERE).\r
+/C\r
+/8250   CALL VOCAB(WD1,WD1A,3,K)\r
+#8250, JSR     VOCAB\r
+       JA      .+6\r
+       JA      WD1\r
+       JA      THREE\r
+       FSTA    K\r
+/      SPK=42\r
+       DECIMAL\r
+               LDX     42,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(FOOBAR.EQ.1-K)GOTO 8252\r
+       FLDA    ONE\r
+       FSUB    K\r
+       FSUB    FOOBAR\r
+       JEQ     #8252\r
+/      IF(FOOBAR.NE.0)SPK=151\r
+       FLDA    FOOBAR\r
+       JEQ     #2011\r
+       DECIMAL\r
+               LDX     151,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/8252   FOOBAR=K\r
+#8252, FLDA    K\r
+       FSTA    FOOBAR\r
+/      IF(K.NE.4)GOTO 2009\r
+       FSUB    #LIT\r
+       JNE     #2009\r
+/      FOOBAR=0\r
+       FCLA\r
+       FSTA    FOOBAR\r
+/      IF(PLACE(EGGS).EQ.PLAC(EGGS)\r
+/      1       .OR.(TOTING(EGGS).AND.LOC.EQ.PLAC(EGGS)))GOTO 2011\r
+       FLDA    EGGS\r
+       ATX     7\r
+       FLDA    PLACE-3,7\r
+       FSUB    PLAC-3,7\r
+       JEQ     #2011\r
+       FLDA    EGGS\r
+       JSA     TOTING\r
+       JEQ     #M93\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,7\r
+       JEQ     #2011\r
+/C\r
+/C BRING BACK TROLL IF WE STEAL THE EGGS BACK FROM HIM BEFORE CROSSING.\r
+/C\r
+/      IF(PLACE(EGGS).EQ.0.AND.PLACE(TROLL).EQ.0.AND.PROP(TROLL).EQ.0)\r
+/      1       PROP(TROLL)=1\r
+#M93,  FLDA    PLACE-3,7\r
+       JNE     #M94\r
+       FLDA    TROLL\r
+       ATX     6\r
+       FLDA    PLACE-3,6\r
+       JNE     #M94\r
+       FLDA    PROP-3,6\r
+       JNE     #M94\r
+       FLDA    ONE\r
+       FSTA    PROP-3,6\r
+/      K=2\r
+#M94,  FLDA    TWO\r
+       FSTA    K\r
+/      IF(HERE(EGGS))K=1\r
+       FLDA    EGGS\r
+       JSA     HERE\r
+       JEQ     .+5\r
+       FLDA    ONE\r
+       FSTA    K\r
+/      IF(LOC.EQ.PLAC(EGGS))K=0\r
+       FLDA    LOC\r
+       FSUB    PLAC-3,7\r
+       JNE     .+5\r
+       FCLA\r
+       FSTA    K\r
+/      CALL MOVE(EGGS,PLAC(EGGS))\r
+       FLDA    PLAC-3,7\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      EGGS\r
+       JA      #TMP\r
+/      CALL PSPEAK(EGGS,K)\r
+       JSR     PSPEAK\r
+       JA      .+6\r
+       JA      EGGS\r
+       JA      K\r
+/      GOTO 2012\r
+       JA      #2012\r
+\r
+/C\r
+/C BRIEF. INTRANSITIVE ONLY. SUPPRESS LONG DESCRIPTIONS AFTER FIRST TIME.\r
+/C\r
+/8260   SPK=156\r
+#8260, DECIMAL\r
+               LDX     156,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      ABBNUM=10000\r
+       FLDA    #LIT+322\r
+       FSTA    ABBNUM\r
+/      DETAIL=3\r
+       FLDA    THREE\r
+       FSTA    DETAIL\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C READ. MAGAZINES IN DWARVISH, MESSAGE WE'VE SEEN, AND . . . OYSTER?\r
+/C\r
+/8270   IF(HERE(MAGZIN))OBJ=MAGZIN\r
+#8270, FLDA    MAGZIN\r
+       JSA     HERE\r
+       JEQ     .+6\r
+       FLDA    MAGZIN\r
+       FSTA    OBJ\r
+/      IF(HERE(TABLET))OBJ=OBJ*100+TABLET\r
+       FLDA    TABLET\r
+       JSA     HERE\r
+       JEQ     .+11\r
+       FLDA    OBJ\r
+       FMUL    #LIT+154\r
+       FADD    TABLET\r
+       FSTA    OBJ\r
+/      IF(HERE(MESSAG))OBJ=OBJ*100+MESSAG\r
+       FLDA    MESSAGE\r
+       JSA     HERE\r
+       JEQ     .+11\r
+       FLDA    OBJ\r
+       FMUL    #LIT+154\r
+       FADD    MESSAG\r
+       FSTA    OBJ\r
+/      IF(CLOSED.AND.TOTING(OYSTER))OBJ=OYSTER\r
+       FLDA    OYSTER\r
+       JSA     TOTING\r
+       FMUL    CLOSED\r
+       JEQ     .+6\r
+       FLDA    OYSTER\r
+       FSTA    OBJ\r
+/      IF(OBJ.GT.100.OR.OBJ.EQ.0.OR.DARK(0))GOTO 8000\r
+       FLDA    OBJ\r
+       FSUB    #LIT+154\r
+       JGT     #8000\r
+       FLDA    OBJ\r
+       JEQ     #8000\r
+       JSA     DARK\r
+       JNE     #8000\r
+\r
+/C\r
+/9270   IF(DARK(0))GOTO 5190\r
+#9270, JSA     DARK\r
+       JNE     #5190\r
+/      IF(OBJ.EQ.MAGZIN)SPK=190\r
+       FLDA    OBJ\r
+       FSUB    MAGZIN\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     190,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.TABLET)SPK=196\r
+       FLDA    OBJ\r
+       FSUB    TABLET\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     196,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.MESSAG)SPK=191\r
+       FLDA    OBJ\r
+       FSUB    MESSAG\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     191,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.OYSTER.AND.HINTED(2).AND.TOTING(OYSTER))SPK=194\r
+       FLDA    OBJ\r
+       FSUB    OYSTER\r
+       JNE     #M95\r
+       FLDA    HINTED+3        / HINTED(2)\r
+       JEQ     #M95\r
+       FLDA    OYSTER\r
+       JSA     TOTING\r
+       JEQ     .+6\r
+       DECIMAL\r
+               LDX     194,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.NE.OYSTER.OR.HINTED(2).OR..NOT.TOTING(OYSTER)\r
+/      1       .OR..NOT.CLOSED)GOTO 2011\r
+#M95,  FLDA    OBJ\r
+       FSUB    OYSTER\r
+       JNE     #2011\r
+       FLDA    HINTED+3\r
+       JNE     #2011\r
+       FLDA    OYSTER\r
+       JSA     TOTING\r
+       JEQ     #2011\r
+       FLDA    CLOSED\r
+       JEQ     #2011\r
+/      HINTED(2)=YES(192,193,54)\r
+       JSR     YES\r
+       JA      #2012\r
+       JA      #LIT+267\r
+       JA      #LIT+272\r
+       JA      #LIT+113\r
+       FSTA    HINTED+3                /HINTED(2)\r
+/      GOTO 2012\r
+/      JA      #2012\r
+\r
+/C\r
+/C BREAK. ONLY WORKS FOR MIRROR IN REPOSITORY AND, OF COURSE, THE VASE.\r
+/C\r
+/9280   IF(OBJ.EQ.MIRROR)SPK=148\r
+#9280, FLDA    OBJ\r
+       FSUB    MIRROR\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     148,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(OBJ.EQ.VASE.AND.PROP(VASE).EQ.0)GOTO 9282\r
+       FLDA    OBJ\r
+       FSUB    VASE\r
+       JNE     #M96\r
+       FLDA    VASE\r
+       JSA     RDPROP\r
+       JEQ     #9282\r
+/      IF(OBJ.NE.MIRROR.OR..NOT.CLOSED)GOTO 2011\r
+#M96,  FLDA    OBJ\r
+       FSUB    MIRROR\r
+       JNE     #2011\r
+       FLDA    CLOSED\r
+       JEQ     #2011\r
+/      CALL RSPEAK(197)\r
+       JSR     RSPEAK\r
+/      GOTO 19000\r
+       JA      #19000\r
+       JA      #LIT+275\r
+\r
+/C\r
+/9282   SPK=198\r
+#9282, DECIMAL\r
+               LDX     198,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(TOTING(VASE))CALL DROP(VASE,LOC)\r
+       FLDA    VASE\r
+       JSA     TOTING\r
+       JEQ     .+12\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      VASE\r
+       JA      LOC\r
+/      PROP(VASE)=2\r
+       FLDA    TWO\r
+       FSTA    PROP-3,3\r
+/      FIXED(VASE)=-1\r
+       FLDA    MINUS1\r
+       FSTA    FIXED-3,3\r
+/      GOTO 2011\r
+       JA      #2011\r
+\r
+/C\r
+/C WAKE. ONLY USE IS TO DISTURB THE DWARVES.\r
+/C\r
+/9290   IF(OBJ.NE.DWARF.OR..NOT.CLOSED)GOTO 2011\r
+#9290, FLDA    OBJ\r
+       FSUB    DWARF\r
+       JNE     #2011\r
+       FLDA    CLOSED\r
+       JEQ     #2011\r
+/      CALL RSPEAK(199)\r
+       JSR     RSPEAK\r
+/      GOTO 19000\r
+       JA      #19000\r
+       JA      #LIT+300\r
+\r
+/C\r
+/C SUSPEND. SAVE THE WORLD.\r
+/C\r
+/8300   CALL SAVEGM(.TRUE.,I)\r
+/      GOTO 2012\r
+#8300, JSR     SAVEGM\r
+       JA      #2012\r
+       JA      ONE\r
+       JA      I\r
+\r
+/C\r
+/C HOURS. JUST A JOKE.\r
+/C\r
+/8310   CALL RSPEAK(201)\r
+#8310, JSR     RSPEAK\r
+/      GOTO 2012\r
+       JA      #2012\r
+       JA      #LIT+303\r
+\r
+/C\r
+/C RESUME. RESTORE THE WORLD.\r
+/C\r
+/8320   CALL RSTRGM(.TRUE.,I)\r
+/      GO TO 2012\r
+\r
+#8320, JSR RSTRGM\r
+       JA      #2012\r
+       JA      ONE\r
+       JA      I\r
+\r
+\r
+/C HINTS\r
+/C\r
+/C COME HERE IF HE'S BEEN LONG ENOUGH AT REQUIRED LOC(S) FOR SOME UNUSED HINT.\r
+/C HINT NUMBER IS IN VARIABLE "HINT". BRANCH TO QUICK TEST FOR ADDITIONAL\r
+/C CONDITIONS, THEN COME BACK TO DO NEAT STUFF. GOTO 40010 IF CONDITIONS ARE\r
+/C MET AND WE WANT TO OFFER THE HINT. GOTO 40020 TO CLEAR HINTLC BACK TO ZERO,\r
+/C 40030 TO TAKE NO ACTION YET.\r
+/C\r
+/40000  GOTO (40400,40500,40600,40700,40800,40900)(HINT-3)\r
+/C            CAVE  BIRD  SNAKE MAZE  DARK  WITT\r
+#40000,        FLDA    HINT\r
+       FSUB    THREE\r
+       ATX     1\r
+       STARTD\r
+       FLDA    .+2,1\r
+       STARTF\r
+       JAC\r
+       JA      #40400\r
+       JA      #40500\r
+       JA      #40600\r
+       JA      #40700\r
+       JA      #40800\r
+       JA      #40010\r
+/      CALL BUG(27)\r
+       JSR     BUG\r
+       JA      .+4\r
+       JA      #LIT+60\r
+/C\r
+/40010  HINTLC(HINT)=0\r
+#40010,        FLDA    HINT\r
+       ATX     7\r
+       FCLA\r
+       FSTA    HINTLC-3,7\r
+/      IF(.NOT.YES(HINTS(HINT,3),0,54))GOTO 2602\r
+       FLDA    #LIT+330        / 60 (index 3)\r
+       FADD    HINT            / hint,3\r
+       ATX     7\r
+       FLDA    HINTS-77,7\r
+       FSTA    #TMP\r
+       JSR     YES\r
+       JA      .+10\r
+       JA      #TMP\r
+       JA      ZERO\r
+       JA      #LIT+113\r
+       JEQ     #2602\r
+/      TYPE 40012,HINTS(HINT,2)\r
+       JSA     SPRINT\r
+       JA      #40012\r
+       JA      TWO\r
+\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #4001A\r
+       FLDA    #LIT+77         / 40\r
+       FADD    HINT            / HINT, 2\r
+       ATX     7\r
+       FLDA    HINTS-77,7\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+       JA      #4001B\r
+       JA      ONE\r
+/40012  FORMAT(' I am prepared to give you a hint, but it will cost you',\r
+/      1       I2,' points.')\r
+\r
+/      HINTED(HINT)=YES(175,HINTS(HINT,4),54)\r
+       FLDA    HINT\r
+       ATX     6\r
+       FADD    #LIT+325        / 80: HINT,4\r
+       ATX     7\r
+       FLDA    HINTS-77,7\r
+       FSTA    #TMP\r
+       JSR     YES\r
+       JA      .+10\r
+       JA      #LIT+250\r
+       JA      #TMP\r
+       JA      #LIT+113\r
+       FSTA    HINTED-3,6\r
+/      IF(HINTED(HINT).AND.LIMIT.GT.30)LIMIT=LIMIT+30*HINTS(HINT,2)\r
+       JEQ     #40020\r
+       FLDA    LIMIT\r
+       FSUB    #LIT+63\r
+       JLE     #40020\r
+       FLDA    #LIT+77         /80\r
+       FADD    HINT            /HINT,2\r
+       ATX     6\r
+       FLDA    #LIT+63\r
+       FMUL    HINTS-77,6\r
+       FADD    LIMIT\r
+       FSTA    LIMIT\r
+/40020  HINTLC(HINT)=0\r
+#40020,        FLDA    HINT\r
+       ATX     7\r
+       FCLA\r
+       FSTA    HINTLC-3,7\r
+/40030  GOTO 2602\r
+#40030,        JA      #2602\r
+\r
+/C\r
+/C NOW FOR THE QUICK TESTS. SEE DATABASE DESCRIPTION FOR ONE-LINE NOTES.\r
+/C\r
+/40400  IF(PROP(GRATE).EQ.0.AND..NOT.HERE(KEYS))GOTO 40010\r
+#40400,        FLDA    GRATE\r
+       JSA     RDPROP\r
+       JNE     #40020\r
+       FLDA    KEYS\r
+       JSA     HERE\r
+       JEQ     #40010\r
+/      GOTO 40020\r
+       JA      #40020\r
+\r
+/40500  IF(HERE(BIRD).AND.TOTING(ROD).AND.OBJ.EQ.BIRD)GOTO 40010\r
+#40500,        FLDA    BIRD\r
+       JSA     HERE\r
+       JEQ     #2602\r
+       FLDA    ROD\r
+       JSA     TOTING\r
+       JEQ     #2602\r
+       FLDA    OBJ\r
+       JEQ     #40010\r
+       FSUB    BIRD\r
+       JEQ     #40010\r
+/      GOTO 40030\r
+       JA      #2602\r
+\r
+/C\r
+/40600  IF(HERE(SNAKE).AND..NOT.HERE(BIRD))GOTO 40010\r
+#40600,        FLDA    SNAKE\r
+       JSA     HERE\r
+       JEQ     #40020\r
+       FLDA    BIRD\r
+       JSA     HERE\r
+       JEQ     #40010\r
+/      GOTO 40020\r
+       JA      #40020\r
+\r
+/C\r
+/40700  IF(ATLOC(LOC).EQ.0.AND.ATLOC(OLDLOC).EQ.0\r
+/      1       .AND.ATLOC(OLDLC2).EQ.0.AND.HOLDNG.GT.1)GOTO 40010\r
+#40700,        FLDA    LOC\r
+       ATX     7\r
+       FLDA    ATLOC-3,7\r
+       JNE     #40020\r
+       FLDA    OLDLOC\r
+       ATX     6\r
+       FLDA    ATLOC-3,6\r
+       JNE     #40020\r
+       FLDA    OLDLC2\r
+       ATX     5\r
+       FLDA    ATLOC-3,5\r
+       JNE     #40020\r
+       FLDA    HOLDNG\r
+       FSUB    ONE\r
+       JGT     #40010\r
+/      GOTO 40020\r
+       JA      #40020\r
+\r
+/C\r
+/40800  IF(PROP(EMRALD).NE.-1.AND.PROP(PYRAM).EQ.-1)GOTO 40010\r
+/      GOTO 40020\r
+#40800,        FLDA    EMRALD\r
+       ATX     7\r
+       FLDA    MINUS1\r
+       FSUB    PROP-3,7\r
+       JEQ     #40020\r
+       FLDA    PYRAM\r
+       ATX     6\r
+       FLDA    MINUS1\r
+       FSUB    PROP-3,6\r
+       JEQ     #40010\r
+/      GOTO 40020\r
+       JA      #40020\r
+/C\r
+/40900 JA      #40010\r
+/#40900        JA      40010\r
+\r
+/C CAVE CLOSING AND SCORING\r
+/C\r
+/C\r
+/C THESE SECTIONS HANDLE THE CLOSING OF THE CAVE. THE CAVE CLOSES "CLOCK1"\r
+/C TURNS AFTER THE LAST TREASURE HAS BEEN LOCATED (INCLUDING THE PIRATE'S\r
+/C CHEST, WHICH MAY OF COURSE NEVER SHOW UP). NOTE THAT THE TREASURES NEED NOT\r
+/C HAVE BEEN TAKEN YET, JUST LOCATED. HENCE CLOCK1 MUST BE LARGE ENOUGH TO GET\r
+/C OUT OF THE CAVE (IT ONLY TICKS WHILE INSIDE THE CAVE). WHEN IT HITS ZERO,\r
+/C WE BRANCH TO 10000 TO START CLOSING THE CAVE, AND THEN SIT BACK AND WAIT FOR\r
+/C HIM TO TRY TO GET OUT. IF HE DOESN'T WITHIN CLOCK2 TURNS, WE CLOSE THE\r
+/C CAVE; IF HE DOES TRY, WE ASSUME HE PANICS, AND GIVE HIM A FEW ADDITIONAL\r
+/C TURNS TO GET FRANTIC BEFORE WE CLOSE. WHEN CLOCK2 HITS ZERO, WE BRANCH TO\r
+/C 11000 TO TRANSPORT HIM INTO THE FINAL PUZZLE. NOTE THAT THE PUZZLE DEPENDS\r
+/C UPON ALL SORTS OF RANDOM THINGS. FOR INSTANCE, THERE MUST BE NO WATER OR\r
+/C OIL, SINCE THERE ARE BEANSTALKS WHICH WE DON'T WANT TO BE ABLE TO WATER,\r
+/C SINCE THE CODE CAN'T HANDLE IT. ALSO, WE CAN HAVE NO KEYS, SINCE THERE IS A\r
+/C GRATE (HAVING MOVED THE FIXED OBJECT!) THERE SEPARATING HIM FROM ALL THE\r
+/C TREASURES. MOST OF THESE PROBLEMS ARISE FROM THE USE OF NEGATIVE PROP\r
+/C NUMBERS TO SUPPRESS THE OBJECT DESCRIPTIONS UNTIL HE'S ACTUALLY MOVED THE\r
+/C OBJECTS.\r
+/C\r
+/C WHEN THE FIRST WARNING COMES, WE LOCK THE GRATE, DESTROY THE BRIDGE, KILL\r
+/C ALL THE DWARVES (AND THE PIRATE), REMOVE THE TROLL AND BEAR (UNLESS DEAD),\r
+/C AND SET "CLOSNG" TO TRUE. LEAVE THE DRAGON; TOO MUCH TROUBLE TO MOVE IT.\r
+/C FROM NOW UNTIL CLOCK2 RUNS OUT, HE CANNOT UNLOCK THE GRATE, MOVE TO ANY\r
+/C LOCATION OUTSIDE THE CAVE (LOC<9), OR CREATE THE BRIDGE. NOR CAN HE BE\r
+/C RESURRECTED IF HE DIES. NOTE THAT THE SNAKE IS ALREADY GONE, SINCE HE GOT\r
+/C TO THE TREASURE ACCESSIBLE ONLY VIA THE HALL OF THE MT. KING. ALSO, HE'S\r
+/C BEEN IN GIANT ROOM (TO GET EGGS), SO WE CAN REFER TO IT. ALSO ALSO, HE'S\r
+/C GOTTEN THE PEARL, SO WE KNOW THE BIVALVE IS AN OYSTER. *AND*, THE DWARVES\r
+/C MUST HAVE BEEN ACTIVATED, SINCE WE'VE FOUND CHEST.\r
+/C\r
+/10000  PROP(GRATE)=0\r
+#10000,        FLDA    GRATE\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      PROP(FISSUR)=0\r
+       FLDA    FISSUR\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      DO 10010 I=1,6\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      DSEEN(I)=.FALSE.\r
+#H0204,        FLDA    I\r
+       ATX     7\r
+       FCLA\r
+       FSTA    DSEEN-3,7\r
+/10010  DLOC(I)=0\r
+/#10010,       FLDA    I\r
+/      ATX     7\r
+/      FCLA\r
+       FSTA    DLOC-3,7\r
+       FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+6\r
+       JLE     #H0204\r
+/      CALL MOVE(TROLL,0)\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      TROLL\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL+100,0)\r
+       FLDA    TROLL\r
+       ATX     7\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      ZERO\r
+/      CALL MOVE(TROLL2,PLAC(TROLL))\r
+/      FLDA    TROLL\r
+/      ATX     7\r
+       FLDA    PLAC-3,7\r
+       FSTA    #TMP\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      TROLL2\r
+       JA      #TMP\r
+/      CALL MOVE(TROLL2+100,FIXD(TROLL))\r
+       FLDA    TROLL2\r
+       FADD    #LIT+154\r
+       FSTA    #TMP\r
+/      FLDA    TROLL\r
+/      ATX     7\r
+       FLDA    FIXD-3,7\r
+       FSTA    #TMP+3\r
+       JSR     MOVE\r
+       JA      .+6\r
+       JA      #TMP\r
+       JA      #TMP+3\r
+/      CALL JUGGLE(CHASM)\r
+       FLDA    CHASM\r
+       JSA     JUGGLE\r
+/      IF(PROP(BEAR).NE.3)CALL DSTROY(BEAR)\r
+       FLDA    BEAR\r
+       JSA     RDPROP\r
+       FSUB    THREE\r
+       JEQ     .+6\r
+       FLDA    BEAR\r
+       JSA     DSTROY\r
+/      PROP(CHAIN)=0\r
+       FLDA    CHAIN\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      FIXED(CHAIN)=0\r
+/      PROP(AXE)=0\r
+       FLDA    AXE\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      FIXED(AXE)=0\r
+       FSTA    FIXED-3,7\r
+/      CALL RSPEAK(129)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+204\r
+/      CLOCK1=-1\r
+       FLDA    MINUS1\r
+       FSTA    CLOCK1\r
+/      CLOSNG=.TRUE.\r
+       FLDA    ONE\r
+       FSTA    CLOSNG\r
+/      GOTO 19999\r
+       JA      #19999\r
+\r
+/C\r
+/C ONCE HE'S PANICKED, AND CLOCK2 HAS RUN OUT, WE COME HERE TO SET UP THE\r
+/C STORAGE ROOM. THE ROOM HAS TWO LOCS, HARDWIRED AS 115 (NE) AND 116 (SW).\r
+/C AT THE NE END, WE PLACE EMPTY BOTTLES, A NURSERY OF PLANTS, A BED OF\r
+/C OYSTERS, A PILE OF LAMPS, RODS WITH STARS, SLEEPING DWARVES, AND HIM. AND\r
+/C THE SW END WE PLACE GRATE OVER TREASURES, SNAKE PIT, COVEY OF CAGED BIRDS,\r
+/C MORE RODS, AND PILLOWS. A MIRROR STRETCHES ACROSS ONE WALL. MANY OF THE\r
+/C OBJECTS COME FROM KNOWN LOCATIONS AND/OR STATES (E.G. THE SNAKE IS KNOWN TO\r
+/C HAVE BEEN DESTROYED AND NEEDN'T BE CARRIED AWAY FROM ITS OLD "PLACE"),\r
+/C MAKING THE VARIOUS OBJECTS BE HANDLED DIFFERENTLY. WE ALSO DROP ALL OTHER\r
+/C OBJECTS HE MIGHT BE CARRYING (LEST HE HAVE SOME WHICH COULD CAUSE TROUBLE,\r
+/C SUCH AS THE KEYS). WE DESCRIBE THE FLASH OF LIGHT AND TRUNDLE BACK.\r
+/C\r
+/11000  PROP(BOTTLE)=PUT(BOTTLE,115,1)\r
+#11000,        FLDA    BOTTLE\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      BOTTLE\r
+       JA      #LIT+165\r
+       JA      ONE\r
+       FSTA    PROP-3,7\r
+/      PROP(PLANT)=PUT(PLANT,115,0)\r
+       FLDA    PLANT\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      PLANT\r
+       JA      #LIT+165\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      PROP(OYSTER)=PUT(OYSTER,115,0)\r
+       FLDA    OYSTER\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      OYSTER\r
+       JA      #LIT+165\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      PROP(LAMP)=PUT(LAMP,115,0)\r
+       FLDA    LAMP\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      LAMP\r
+       JA      #LIT+165\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      PROP(ROD)=PUT(ROD,115,0)\r
+       FLDA    ROD\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      ROD\r
+       JA      #LIT+165\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      PROP(DWARF)=PUT(DWARF,115,0)\r
+       FLDA    DWARF\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      DWARF\r
+       JA      #LIT+165\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      LOC=115\r
+/      OLDLOC=115\r
+/      NEWLOC=115\r
+       FLDA    #LIT+165\r
+       FSTA    LOC\r
+       FSTA    OLDLOC\r
+       FSTA    NEWLOC\r
+/C\r
+/C LEAVE THE GRATE WITH NORMAL (NON-NEGATIVE PROPERTY).\r
+/C\r
+/      I=PUT(GRATE,116,0)\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      GRATE\r
+       JA      #LIT+170\r
+       JA      ZERO\r
+       FSTA    I\r
+/      PROP(SNAKE)=PUT(SNAKE,116,1)\r
+       FLDA    SNAKE\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      SNAKE\r
+       JA      #LIT+170\r
+       JA      ONE\r
+       FSTA    PROP-3,7\r
+/      PROP(BIRD)=PUT(BIRD,116,1)\r
+       FLDA    BIRD\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      BIRD\r
+       JA      #LIT+170\r
+       JA      ONE\r
+       FSTA    PROP-3,7\r
+/      PROP(CAGE)=PUT(CAGE,116,0)\r
+       FLDA    CAGE\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      CAGE\r
+       JA      #LIT+170\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      PROP(ROD2)=PUT(ROD2,116,0)\r
+       FLDA    ROD2\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      ROD2\r
+       JA      #LIT+170\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      PROP(PILLOW)=PUT(PILLOW,116,0)\r
+       FLDA    PILLOW\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      PILLOW\r
+       JA      #LIT+170\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/C\r
+/      PROP(MIRROR)=PUT(MIRROR,115,0)\r
+       FLDA    MIRROR\r
+       ATX     7\r
+       JSR     PUT\r
+       JA      .+10\r
+       JA      MIRROR\r
+       JA      #LIT+165\r
+       JA      ZERO\r
+       FSTA    PROP-3,7\r
+/      FIXED(MIRROR)=116\r
+       FLDA    #LIT+170\r
+       FSTA    FIXED-3,7\r
+/C\r
+/      DO 11010 I=1,100\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/11010  IF(TOTING(I))CALL DSTROY(I)\r
+#11010,        FLDA    I\r
+       JSA     TOTING\r
+       JEQ     .+6\r
+       FLDA    I\r
+       JSA     DSTROY\r
+       FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #LIT+154\r
+       JLE     #11010\r
+/C\r
+/      CALL RSPEAK(132)\r
+       JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+215\r
+/      CLOSED=.TRUE.\r
+       FLDA    ONE\r
+       FSTA    CLOSED\r
+/      GOTO 2\r
+       JA      #2\r
+\r
+/C\r
+/C ANOTHER WAY WE CAN FORCE AN END TO THINGS IS BY HAVING THE LAMP GIVE OUT.\r
+/C WHEN IT GETS CLOSE, WE COME HERE TO WARN HIM. WE GO TO 12000 IF THE LAMP\r
+/C AND FRESH BATTERIES ARE HERE, IN WHICH CASE WE REPLACE THE BATTERIES AND\r
+/C CONTINUE. 12200 IS FOR OTHER CASES OF LAMP DYING.12400 IS WHEN IT GOES\r
+/C OUT, AND 12600 IS IF HE'S WANDERED OUTSIDE AND THE LAMP IS USED UP, IN WHICH\r
+/C CASE WE FORCE HIM TO GIVE UP.\r
+/C\r
+/12000  CALL RSPEAK(188)\r
+#12000,        JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+264\r
+/      PROP(BATTER)=1\r
+       FLDA    BATTER\r
+       ATX     7\r
+       FLDA    ONE\r
+       FSTA    PROP-3,7\r
+/      IF(TOTING(BATTER))CALL DROP(BATTER,LOC)\r
+       FLDA    BATTER\r
+       JSA     TOTING\r
+       JEQ     .+12\r
+       JSR     DROP\r
+       JA      .+6\r
+       JA      BATTER\r
+       JA      LOC\r
+/      LIMIT=LIMIT+2500\r
+       FLDA    #LIT+317\r
+       FADDM   LIMIT\r
+/      LMWARN=.FALSE.\r
+       FCLA\r
+       FSTA    LMWARN\r
+/      GOTO 19999\r
+       JA      #19999\r
+\r
+/C\r
+/12200  IF(LMWARN.OR..NOT.HERE(LAMP))GOTO 19999\r
+#12200,        FLDA    LAMP\r
+       JSA     HERE\r
+       JEQ     #19999\r
+       FLDA    LMWARN\r
+       JNE     #19999\r
+/      LMWARN=.TRUE.\r
+       FLDA    ONE\r
+       FSTA    LMWARN\r
+/      SPK=187\r
+       DECIMAL\r
+               LDX     187,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(PLACE(BATTER).EQ.0)SPK=183\r
+       FLDA    BATTER\r
+       ATX     7\r
+       FLDA    PLACE-3,7\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     183,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      IF(PROP(BATTER).EQ.1)SPK=189\r
+       FLDA    PROP-3,7\r
+       FSUB    ONE\r
+       JNE     .+6\r
+       DECIMAL\r
+               LDX     189,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    SPK\r
+/      CALL RSPEAK(SPK)\r
+#H0214,        JSR     RSPEAK\r
+       JA      #19999\r
+       JA      SPK\r
+/      GOTO 19999\r
+\r
+/C\r
+/12400  LIMIT=-1\r
+#12400,        FLDA    MINUS1\r
+       FSTA    LIMIT\r
+/      PROP(LAMP)=0\r
+       FLDA    LAMP\r
+       ATX     7\r
+       FCLA\r
+       FSTA    PROP-3,7\r
+/      IF(HERE(LAMP))CALL RSPEAK(184)\r
+       FLDA    LAMP\r
+       JSA     HERE\r
+/      GOTO 19999\r
+       JEQ     #19999\r
+       JSR     RSPEAK\r
+       JA      #19999\r
+       JA      #LIT+253\r
+\r
+/C\r
+/12600  CALL RSPEAK(185)\r
+#12600,        JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+256\r
+/      GAVEUP=.TRUE.\r
+       FLDA    ONE\r
+       FSTA    GAVEUP\r
+/      GOTO 20000\r
+       JA      #20000\r
+\r
+/C\r
+/C\r
+/C OH DEAR, HE'S DISTURBED THE DWARVES.\r
+/C\r
+/19000  CALL RSPEAK(136)\r
+#19000,        JSR     RSPEAK\r
+       JA      .+4\r
+       JA      #LIT+220\r
+\r
+/C\r
+/C EXIT CODE. WILL EVENTUALLY INCLUDE SCORING. FOR NOW, HOWEVER, ...\r
+/C\r
+/C THE PRESENT SCORING ALGORITHM IS AS FOLLOWS:\r
+/C     OBJECTIVE:          POINTS:        PRESENT TOTAL POSSIBLE:\r
+/C  GETTING WELL INTO CAVE   25                    25\r
+/C  EACH TREASURE < CHEST    12                    60\r
+/C  TREASURE CHEST ITSELF    14                    14\r
+/C  EACH TREASURE > CHEST    16                   144\r
+/C  SURVIVING             (MAX-NUM)*10             30\r
+/C  NOT QUITTING              4                     4\r
+/C  REACHING "CLOSNG"        25                    25\r
+/C  "CLOSED": QUIT/KILLED    10\r
+/C            KLUTZED        25\r
+/C            WRONG WAY      30\r
+/C            SUCCESS        45                    45\r
+/C  CAME TO WITT'S END        1                     1\r
+/C  ROUND OUT THE TOTAL       2                     2\r
+/C                                       TOTAL:   350\r
+/20000  SCORE=0\r
+#20000,        FCLA\r
+       FSTA    SCORE\r
+/      MXSCOR=0\r
+       FSTA    MXSCOR\r
+/C\r
+/C FIRST TALLY UP THE TREASURES. MUST BE IN BUILDING AND NOT BROKEN.\r
+/C GIVE THE POOR GUY 2 POINTS JUST FOR FINDING EACH TREASURE.\r
+/C\r
+/      DO 20010 I=50,MAXTRS\r
+       FLDA    #LIT+110\r
+       FSTA    I\r
+\r
+/      IF(PTEXT(I).EQ.0)GOTO 20010\r
+#H0216,        FLDA    I\r
+       ATX     7\r
+       FLDA    PTEXT-3,7\r
+       JEQ     #20010\r
+/      K=12\r
+       FLDA    #LIT+22\r
+       FSTA    K\r
+/      IF(I.EQ.CHEST)K=14\r
+       FLDA    I\r
+       FSUB    CHEST\r
+       JNE     .+7\r
+       DECIMAL\r
+               LDX     14,0\r
+       OCTAL\r
+       XTA     0\r
+       FSTA    K\r
+/      IF(I.GT.CHEST)K=16\r
+       FLDA    I\r
+       FSUB    CHEST\r
+       JLE     .+5\r
+       FLDA    #LIT+30\r
+       FSTA    K\r
+/      IF(PROP(I).GE.0)SCORE=SCORE+2\r
+       FLDA    PROP-3,7\r
+       JLT     .+5\r
+       FLDA    TWO\r
+       FADDM   SCORE\r
+/      IF(PLACE(I).EQ.3.AND.PROP(I).EQ.0)SCORE=SCORE+K-2\r
+       FLDA    PLACE-3,7\r
+       FSUB    THREE\r
+       JNE     #M100\r
+       FLDA    PROP-3,7\r
+       JNE     #M100\r
+       FLDA    SCORE\r
+       FADD    K\r
+       FSUB    TWO\r
+       FSTA    SCORE\r
+/      MXSCOR=MXSCOR+K\r
+#M100, FLDA    K\r
+       FADDM   MXSCOR\r
+\r
+/20010  CONTINUE\r
+#20010,        FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    MAXTRS\r
+       JLE     #H0216\r
+/C\r
+/C NOW LOOK AT HOW HE FINISHED AND HOW FAR HE GOT. MAXDIE AND NUMDIE TELL US\r
+/C HOW WELL HE SURVIVED. GAVEUP SAYS WHETHER HE EXITED VIA QUIT. DFLAG WILL\r
+/C TELL US IF HE EVER GOT SUITABLY DEEP INTO THE CAVE. CLOSNG STILL INDICATES\r
+/C WHETHER HE REACHED THE ENDGAME. AND IF HE GOT AS FAR AS "CAVE CLOSED"\r
+/C (INDICATED BY "CLOSED"), THEN BONUS IS ZERO FOR MUNDANE EXITS OR 133, 134,\r
+/C 135 IF HE BLEW IT (SO TO SPEAK).\r
+/C\r
+/      SCORE=SCORE+(MAXDIE-NUMDIE)*10\r
+       FLDA    MAXDIE\r
+       FSUB    NUMDIE\r
+       FMUL    #LIT+17\r
+       FADDM   SCORE\r
+/      MXSCOR=MXSCOR+MAXDIE*10\r
+       FLDA    MAXDIE\r
+       FMUL    #LIT+17\r
+       FADDM   MXSCOR\r
+/      IF(.NOT.(SCORNG.OR.GAVEUP))SCORE=SCORE+4\r
+       FLDA    SCORNG\r
+       FADD    GAVEUP\r
+       JNE     .+5\r
+       FLDA    #LIT\r
+       FADDM   SCORE\r
+/      MXSCOR=MXSCOR+4\r
+       FLDA    #LIT\r
+       FADDM   MXSCOR\r
+\f\r
+/      IF(DFLAG.NE.0)SCORE=SCORE+25\r
+       FLDA    DFLAG\r
+       JEQ     .+5\r
+       FLDA    #LIT+52\r
+       FADDM   SCORE\r
+/      MXSCOR=MXSCOR+25\r
+       FLDA    #LIT+52\r
+       FADDM   MXSCOR\r
+/      IF(CLOSNG)SCORE=SCORE+25\r
+       FLDA    CLOSNG\r
+       JEQ     .+5\r
+       FLDA    #LIT+52\r
+       FADDM   SCORE\r
+/      MXSCOR=MXSCOR+25\r
+       FLDA    #LIT+52\r
+       FADDM   MXSCOR\r
+/      IF(.NOT.CLOSED)GOTO 20020\r
+       FLDA    CLOSED\r
+       JEQ     #20020\r
+/      IF(BONUS.EQ.0)SCORE=SCORE+10\r
+       FLDA    BONUS\r
+       JNE     .+5\r
+       FLDA    #LIT+17\r
+       FADDM   SCORE\r
+/      IF(BONUS.EQ.135)SCORE=SCORE+25\r
+       DECIMAL\r
+               LDX     135,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    BONUS\r
+       JNE     .+5\r
+       FLDA    #LIT+52\r
+       FADDM   SCORE\r
+/      IF(BONUS.EQ.134)SCORE=SCORE+30\r
+       DECIMAL\r
+               LDX     134,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    BONUS \r
+       JNE     .+5\r
+       FLDA    #LIT+63\r
+       FADDM   SCORE\r
+/      IF(BONUS.EQ.133)SCORE=SCORE+45\r
+       DECIMAL\r
+               LDX     133,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    BONUS\r
+       JNE     #20020\r
+       FLDA    #LIT+102\r
+       FADDM   SCORE\r
+/20020  MXSCOR=MXSCOR+45\r
+#20020,        FLDA    #LIT+102\r
+       FADDM   MXSCOR\r
+/C\r
+/C DID HE COME TO WITT'S END AS HE SHOULD?\r
+/C\r
+/      IF(PLACE(MAGZIN).EQ.108)SCORE=SCORE+1\r
+       FLDA    MAGZIN\r
+       ATX     7\r
+       DECIMAL\r
+               LDX     108,0\r
+       OCTAL\r
+       XTA     0\r
+       FSUB    PLACE-3,7\r
+       JNE     .+5\r
+       FLDA    ONE\r
+       FADDM   SCORE\r
+/      MXSCOR=MXSCOR+1\r
+       FLDA    ONE\r
+       FADDM   MXSCOR\r
+/C\r
+/C ROUND IT OFF.\r
+/C\r
+/      SCORE=SCORE+2\r
+       FLDA    TWO\r
+       FADDM   SCORE\r
+/      MXSCOR=MXSCOR+2\r
+       FADDM   MXSCOR\r
+/C\r
+/C DEDUCT POINTS FOR HINTS. HINTS < 4 ARE SPECIAL; SEE DATABASE DESCRIPTION.\r
+/C\r
+/      DO 20030 I=1,HNTMAX\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/20030  IF(HINTED(I))SCORE=SCORE-HINTS(I,2)\r
+#20030,        FLDA    I\r
+       ATX     7\r
+       FLDA    HINTED-3,7\r
+       JEQ     .+14\r
+       FLDA    #LIT+77         /20\r
+       FADD    I               /I, 2\r
+       ATX     6\r
+       FLDA    SCORE\r
+       FSUB    HINTS-77,6\r
+       FSTA    SCORE\r
+\r
+       FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    HNTMAX\r
+       JLE     #20030\r
+/C\r
+/C RETURN TO SCORE COMMAND IF THAT'S WHERE WE CAME FROM.\r
+/C\r
+/      IF(SCORNG)GOTO 8241\r
+       FLDA    SCORNG\r
+       JNE     #8241\r
+/C\r
+/C THAT SHOULD BE GOOD ENOUGH. LET'S TELL HIM ALL ABOUT IT.\r
+/C\r
+/      TYPE 20100,SCORE,MXSCOR,TURNS\r
+       JSA     SPRINT\r
+       JA      #20100\r
+       JA      TWO\r
+\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #2010A\r
+       FLDA    SCORE\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+       JA      #2010B\r
+       JA      THREE\r
+\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #2010A\r
+       FLDA    MXSCOR\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+       JA      #2010C\r
+       JA      THREE\r
+\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #2010D\r
+\r
+       FLDA    TURNS\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+       JA      #2010E\r
+       JA      ONE\r
+\r
+/20100  FORMAT(/' You scored',I4,' out of a possible',I4,\r
+/      1       ', using',I5,' turns.')\r
+/C\r
+/      DO 20200 I=1,CLSSES\r
+       FLDA    ONE\r
+       FSTA    I\r
+\r
+/      IF(CVAL(I).GE.SCORE)GOTO 20210\r
+#I0064,        FLDA    I\r
+       ATX     7\r
+       FLDA    CVAL-3,7\r
+       FSUB    SCORE\r
+       JGE     #20210\r
+\r
+/20200  CONTINUE\r
+#20200,        FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    CLSSES\r
+       JLE     #I0064\r
+/      TYPE 20202\r
+       JSA     SPRINT\r
+       JA      #20202\r
+       JA      ZERO\r
+       \r
+/20202  FORMAT(' You just went off my scale!!'/)\r
+/      GOTO 25000\r
+       JA      #25000\r
+\r
+/C\r
+/20210  CALL SPEAK(CTEXT(I))\r
+#20210,        FLDA    I\r
+       ATX     7\r
+       FLDA    CTEXT-3,7       /GET CLASS MESSAGE\r
+       FSTA    #TMP+3\r
+       JSR     SPEAK\r
+       JA      .+4\r
+       JA      #TMP+3\r
+/      IF(I.EQ.CLSSES-1)GOTO 20220\r
+       FLDA    CLSSES\r
+       FSUB    ONE\r
+       FSUB    I\r
+       JEQ     #20220\r
+/      K=CVAL(I)+1-SCORE\r
+       FLDA    I\r
+       ATX     7\r
+       FLDA    CVAL-3,7\r
+       FADD    ONE\r
+       FSUB    SCORE\r
+       FSTA    K\r
+/      TYPE 20212,K\r
+       JSA     SPRINT\r
+       JA      #20212\r
+       JA      TWO\r
+\r
+       JSA     SPRINT\r
+       JA      #2021A\r
+       JA      THREE\r
+\r
+       TRAP3   #WRITO\r
+       JA      #LIT\r
+       JA      #2021B\r
+       FLDA    K\r
+       TRAP3   #RSVO\r
+       TRAP3   #RENDO\r
+\r
+       JSA     SPRINT\r
+       JA      #2021C\r
+       JA      THREE\r
+       \r
+/20212  FORMAT(' To achieve the next higher rating, you need',I3,\r
+/      1       ' more point',$)\r
+/      IF(K.EQ.1) TYPE 20213\r
+       FLDA    K\r
+       FSUB    ONE\r
+       JNE     .+12\r
+       JSA     SPRINT\r
+       JA      #20213\r
+       JA      ONE\r
+       JA      #25000\r
+\r
+/      IF(K.NE.1) TYPE 20214\r
+       JSA     SPRINT\r
+       JA      #20214\r
+       JA      ONE\r
+/20213  FORMAT('+.'/)\r
+\r
+/20214  FORMAT('+s.'/)\r
+/      GOTO 25000\r
+       JA      #25000\r
+/C\r
+/20220  TYPE 20222\r
+#20220,        JSA     SPRINT\r
+       JA      #20212\r
+       JA      TWO\r
+\r
+       JSA     SPRINT\r
+       JA      #20222\r
+       JA      ONE\r
+\r
+       JSA     SPRINT\r
+       JA      #20223\r
+       JA      ZERO\r
+/20222  FORMAT(' To achieve the next higher rating ',\r
+/      1       'would be a neat trick!'/' Congratulations!!'/)\r
+/      RETURN\r
+       JA      #GOBAK\r
+/      END\r
+/\r
+/ Fortran Formats:\r
+/\r
+#67A,  TEXT    %T]HERE ARE @%\r
+#67,   TEXT    %('+',I1,$)%\r
+#67B,  TEXT    % T]HREATENING LITTLE DWARVES IN THE ROOM WITH YOU.@%\r
+#68,\r
+#78,   TEXT    %(1X,I1,$)%\r
+#78B,  TEXT    % ]OF THEM THROW KNIVES AT YOU!@%\r
+#68B,  TEXT    % ]OF THEM GET YOU!@%\r
+#5015, TEXT    %W]HAT DO YOU WANT TO DO WITH THE @%\r
+#5199, TEXT    %I] DON'T SEE ANY "@%\r
+#8002, TEXT    %I ]DON'T UNDERSTAND "@%\r
+#9032, TEXT    %O]KAY, "@%\r
+#8243, TEXT    %I]F YOU WERE TO QUIT NOW, YOU WOULD SCORE @%\r
+#2010A,\r
+#2021B,\r
+#8243A,        TEXT    %('+',I3,$)%\r
+#2010B,\r
+#8243B,        TEXT    % ]OUT OF A POSSIBLE @%\r
+#20213,        \r
+#8243C,        TEXT    %.@%\r
+#40012,        TEXT    %I] AM PREPARED TO GIVE YOU A HINT, BUT IT WILL COST YOU @%\r
+#4001A,        TEXT    %('+',I2,$)%\r
+#4001B,        TEXT    % ]POINTS.@%\r
+#20100,        TEXT    %Y]OU SCORED @%\r
+#2010C,        TEXT    % ]USING @%\r
+#2010D,        TEXT    %('+',I5,$)%\r
+#2010E,        TEXT    % ]TURNS.@%\r
+#20202,        TEXT    %Y]OU JUST WENT OFF MY SCALE!!@%\r
+#20212, TEXT   %T]O ACHIEVE THE NEXT HIGHER RATING@%\r
+#2021A, TEXT   %, ]YOU NEED @%\r
+#2021C,        TEXT    % ]MORE POINT@%\r
+#20214,        TEXT    %]S.@%\r
+#20222,        TEXT    %] WOULD BE A NEAT TRICK!@%\r
+#20223,        TEXT    %C]ONGRATULATIONS!!@%\r
+       END\r