CODE2T=ADVENTURE II, NO TEXT PACKING.
C  ADVENTURE II:JACK PIKE & PETER LUCKETT (RAE BEDFORD/FARNBOROUGH)
C  ORIGINATOR:WILLIE CROWTHER (STAMFORD UNIVERSITY)
C  MOST FEATURES OF EARLY VERSION: DON WOODS (DON @ SU AI).
C  FORTRAN IV VERSION:JACK PIKE.
C  BUGS,COMMENTS,QUERIES,SUGGESTIONS ETC. TO JP PLEASE.
C
C  THE PROGRAM IS IN USA STANDARD FORTRAN (ANSI)
C
C  I/O SPECIFICATION IS DONE IN FUNCTION 'DATA' AT END OF PROGRAM.
C  ALTER THIS TO SUIT YOUR SYSTEM.
C
C  THIS PROGRAM IS SUPPIED ON THE UNDERSTANDING THAT THE NAMES OF THE
C  ORIGINATORS IS RETAINED IN THE DATABASE.
C
CC  1
CC  2
      LOGICAL DSEEN,BLKLIN,HINTED,YES,START,WIZENT
      COMMON /TXTCOM/ RTEXT,LINES
      COMMON /BLKCOM/ BLKLIN
      COMMON /VOCCOM/ KTAB,ATAB,TABSIZ
      COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG
      COMMON /PTXCOM/ PTEXT
      COMMON /TRVCOM/ TK,TRAVEL,KEY,COND
      COMMON /DTOCOM/ DOBJ,DLOC,PLAC,FIXD,PROP,LOC,MAXTRS
      COMMON/TURN/TURNS,IRAN
      INTEGER LINES(32760),TLINES(18,2)
      INTEGER TRAVEL(1000,3)
      INTEGER KTAB(400),ATAB(400,7),WD1(10),WD2(10)
      INTEGER LTEXT(200),STEXT(200),KEY(200),COND(200),ABB(200)
      INTEGER PLAC(100),PLACE(100),FIXD(100),FIXED(100),LINK(200)
      INTEGER ACTSPK(35),ATLOC(300),PTEXT(100),PROP(100)
      INTEGER RTEXT(300)
      INTEGER CTEXT(12),CVAL(12)
      INTEGER HINTLC(20),MTEXT(1),HINTS(20,4)
      INTEGER TK(20),DLOC(6),ODLOC(6),HNAME(4),DOBJ(5),ORC(5)
      DIMENSION HINTED(20),DSEEN(6)
CC  3
      INTEGER IDONDX
      INTEGER KEYS,GRATE,CAGE,ROD,ROD2,STEPS,BIRD,DOOR,SNAKE,FISSUR,
     2TABLET,CLAM,OYSTER,DWARF,FOOD,BOTTLE,WATER,OIL,PLANT,PLANT2,
     4AXE,DRAGON,CHASM,TROLL,TROLL2,BEAR,PILLOW,
     5VEND,BATTER,OWL,SPIDER,DCMNTS,WEB,SPOON,HORN,RAT
      INTEGER SILVER,COINS,CHEST,EGGS,TRIDNT,VASE,EMRALD,PYRAM,PEARL,
     2RUG,CHAIN,CROWN,CHALIC,TUSK,ORB
      INTEGER BACK,STREA,LOOK,CAVE,NULL,ENTRNC,DPRSSN
      INTEGER SAY,THROW,FIND,HOOT,CIM
      INTEGER TRVSIZ,TABSIZ,VRBSIZ,RTXSIZ,CLSMAX,HNTSIZ,SETUP,OPDUMP
     1,TRVS,CLSSES,SECT,OLDLOC,NEWLOC,TABNDX,T,OBJ,VERB,HNTMAX
     1,TALLY,TALLY2,CHLOC,CHLOC2,DFLAG,DALTLC,ORCT,ORCT1,TURNS,DETAIL
     2,ABBNUM,HOLDNG,DKILL,FOOBAR,BONUS,CLOCK1,CLOCK2,DUNG0,THROWC
     3,DTOTAL,ATTACK,STICK,OLDLC2,TIDE,TIDE0,SPK,HINT,FOO
     4,WD1X,WD2X,SHORT,V1,V2,SCORE,PBOTL,DUMMY,VOCAB,RAN,DISTNT,PUT
CC  4
      LOGICAL TOTING,HERE,AT,BITSET,DARK,WZDARK,LMWARN,CLOSNG,PANIC,
     1CLOSED,GAVEUP,SCORNG,DEMO,YEA,FORCED,PCT
      DATA LINSIZ/32760/,TRVSIZ/1000/,LOCSIZ/200/,SETUP/0/,
     1  VRBSIZ/35/,RTXSIZ/300/,CLSMAX/12/,HNTSIZ/20/,MAGSIZ/1/
      DATA IBL/1H /,LLP/1HP/,LLO/1HO/,LLU/1HU/,LLR/1HR/,LLY/1HY/
CC 25
      DATA KEYS/01/,LAMP/02/,GRATE/03/,CAGE/04/,ROD/05/,
     1ROD2/6/,STEPS/7/,
     1BIRD/08/,DOOR/09/,PILLOW/10/,SNAKE/11/,FISSUR/12/,
     2TABLET/13/,CLAM/14/,OYSTER/15/,MAGZIN/16/,DWARF/17/,
     2KNIFE/18/,FOOD/19/,
     3BOTTLE/20/,WATER/21/,OIL/22/,PLANT/24/,PLANT2/25/,
     4AXE/28/,MIRROR/23/,DRAGON/31/,CHASM/32/,TROLL/33/,
     4TROLL2/34/,BEAR/35/,
     5MESSAG/36/,VEND/38/,BATTER/39/,OWL/41/,SPIDER/43/,
     6DCMNTS/44/,WEB/42/,SPOON/45/,HORN/46/,RAT/47/
CC 26
      DATA NUGGET/50/,SILVER/52/,COINS/54/,CHEST/55/,EGGS/56/,
     1TRIDNT/57/,VASE/58/,EMRALD/59/,PYRAM/60/,PEARL/61/,
     2RUG/62/,CHAIN/64/,CROWN/65/,CHALIC/67/,TUSK/66/,
     3ORB/69/
CC 27
      DATA BACK/8/,STREA/14/,LOOK/57/,CAVE/67/,NULL/21/,ENTRNC/64/,
     1DPRSSN/63/
CC 28
      DATA SAY/03/,LOCK/06/,THROW/17/,FIND/19/,INVENT/20/,
     1HOOT/32/,CIM/1HM/,IBL2/2H  /,ILT/2H< /
      TOTING(OBJ)=PLACE(OBJ).EQ.-1
      HERE(OBJ)=PLACE(OBJ).EQ.LOC.OR.TOTING(OBJ)
      AT(OBJ)=PLACE(OBJ).EQ.LOC.OR.FIXED(OBJ).EQ.LOC
      LIQ2(PBOTL)=(1-PBOTL)*WATER+(PBOTL/2)*(WATER+OIL)
      LIQ(DUMMY)=LIQ2(MAX0(PROP(BOTTLE),-1-PROP(BOTTLE)))
      LIQLOC(LOC)=LIQ2((MOD(COND(LOC)/2*2,8)-5)*MOD(COND(LOC)/4,2)+1)
      BITSET(L,N)=MOD(COND(L),2**(N+1)).GE.2**N
      FORCED(LOC)=COND(LOC).EQ.2
      DARK(DUMMY)=MOD(COND(LOC),2).EQ.0.AND.(PROP(LAMP).EQ.0.OR.
     1.NOT.HERE(LAMP))
      PCT(N)=RAN(100).LT.N
      BLKLIN=.TRUE.
CC  5
      IF(SETUP.NE.0)GOTO 1100
      IPDATA=IODATA(1)
      IOPDEV=IODATA(2)
      IPDUMP=IODATA(3)
      OPDUMP=IODATA(4)
      WRITE(IOPDEV,1000)
1000      FORMAT(16H INITIALIZING..   )
CC  6
      DO 999 I=1,400
      DO 999 J=1,7
999   ATAB(I,J)=IBL
      DO 1001 I=1,200
      KEY(I)=0
      IF(I.LE.100)PTEXT(I)=0
      IF(I.LE.RTXSIZ)RTEXT(I)=0
      IF(I.LE.CLSMAX)CTEXT(I)=0
      IF(I.LE.MAGSIZ)MTEXT(I)=0
      IF(I.GT.LOCSIZ)GOTO 1001
      STEXT(I)=0
      LTEXT(I)=0
      COND(I)=0
1001      CONTINUE
      SETUP=1
      LINUSE=1
      TRVS=1
      CLSSES=1
      TABSIZ=400
      IRAN=0
CC  7
1002      READ(IPDATA,1003)SECT
      WRITE(IOPDEV,1069)SECT,KK
1003      FORMAT(I2)
      OLDLOC=-1
      ISECT=SECT+1
      GOTO(1100,1004,1004,1030,1040,1004,1004,1050,1060,1070,1004,
     1    1080,1004),ISECT
CC  8
CC  9
1004      READ(IPDATA,1005)LOC,KKK
1005      FORMAT(I4,I2)
21006      FORMAT(36A2)
      IF(LOC.EQ.-1)GOTO 1002
         READ(IPDATA,21006)((TLINES(J,JJ),JJ=1,2),J=1,KKK)
      IF(LOC.GE.157.AND.LOC.LE.162.AND.SECT.EQ.1)GOTO 1004
      JJ=2
      KKK2=2*KKK
      IF(TLINES(1,2)/2.EQ.IBL2/2.OR.TLINES(1,2)/2.EQ.ILT/2)KKK2=KKK2-1
      KK=LINUSE+KKK2
      DO 1006 J=1,KKK2
      JJ=3-JJ
      KKKK=KKK-(J-1)/2
      KKKKK=LINUSE+J
1006  LINES(KKKKK)=TLINES(KKKK,JJ)
1007      LINES(LINUSE)=KK+1
      IF(LOC.EQ.OLDLOC)GOTO 1020
      LINES(LINUSE)=-LINES(LINUSE)
      IF(SECT.EQ.12)GOTO 1013
      IF(SECT.EQ.10)GOTO 1012
      IF(SECT.EQ.6)GOTO 1011
      IF(SECT.EQ.5)GOTO 1010
      IF(SECT.EQ.1)GOTO 1008
      STEXT(LOC)=LINUSE
      GOTO 1020
1008      LTEXT(LOC)=LINUSE
      GOTO 1020
1010      IF(LOC.GT.0.AND.LOC.LE.100)PTEXT(LOC)=LINUSE
      GOTO 1020
1011      IF(LOC.GT.RTXSIZ)CALL BUG(6)
      RTEXT(LOC)=LINUSE
      GOTO 1020
1012      CTEXT(CLSSES)=LINUSE
      CVAL(CLSSES)=LOC
      CLSSES=CLSSES+1
      GOTO 1020
1013      IF(LOC.GT.MAGSIZ)CALL BUG(6)
      MTEXT(LOC)=LINUSE
1020      LINUSE=KK+1
      LINES(LINUSE)=-1
      OLDLOC=LOC
      IF(LINUSE+1.GT.LINSIZ)CALL BUG(2)
      GOTO 1004
CC 11
1030      READ(IPDATA,1031)LOC,NEWLOC,NEWLO,(TK(J),J=1,10)
1031      FORMAT(13I3)
      IF(LOC.EQ.0)GOTO 1030
CC 12
      IF(LOC.EQ.-1)GOTO 1002
      IF(KEY(LOC).NE.0)GOTO 1033
      KEY(LOC)=TRVS
      GOTO 1035
1033      TRAVEL(TRVS-1,3)=-TRAVEL(TRVS-1,3)
1035      DO 1037 L=1,13
      IF(TK(L).EQ.0)GOTO 1039
      TRAVEL(TRVS,3)=TK(L)
      TRAVEL(TRVS,2)=NEWLO
      TRAVEL(TRVS,1)=NEWLOC
      TRVS=TRVS+1
      IF(TRVS.EQ.TRVSIZ)CALL BUG(3)
1037      CONTINUE
1039      TRAVEL(TRVS-1,3)=-TRAVEL(TRVS-1,3)
      GOTO 1030
CC 13
1040      DO 1042 TABNDX=1,TABSIZ
      T=TABNDX
1043      READ(IPDATA,1041)KTAB(T),ATAB(T,2),ATAB(T,1),ATAB(T,6)
     1,ATAB(T,7),ATAB(T,4),ATAB(T,3),ATAB(T,5)
1041      FORMAT(I4,7A1)
      IF(KTAB(TABNDX).EQ.0)GOTO 1043
CC 14
      IF(KTAB(TABNDX).EQ.-1)GOTO 1002
1042      CONTINUE
CC 15
      CALL BUG(4)
CC 16
1050            READ(IPDATA,21033)OBJ,J,K
21033            FORMAT(3I3)
      IF(OBJ.EQ.-1)GOTO 1002
      PLAC(OBJ)=J
      FIXD(OBJ)=K
      GOTO 1050
CC 17
1060            READ(IPDATA,21033)VERB,J
      IF(VERB.EQ.-1)GOTO 1002
      ACTSPK(VERB)=J
      GOTO 1060
CC 18
1069  FORMAT(I3,I6,10I3)
1070            READ(IPDATA,1069)K,(TK(J),J=1,10)
      IF(K.EQ.-1)GOTO 1002
      DO 1071 I=1,10
      LOC=TK(I)
      IF(LOC.EQ.0)GOTO 1070
      IF(BITSET(LOC,K))CALL BUG(8)
1071      COND(LOC)=COND(LOC)+2**K
      GOTO 1070
CC 19
1080      HNTMAX=0
1081      READ(IPDATA,1069)K,(TK(J),J=1,10)
      IF(K.EQ.-1)GOTO 1002
      IF(K.EQ.0)GOTO 1081
      IF(K.LT.0.OR.K.GT.HNTSIZ)CALL BUG(7)
      DO 1083 I=1,4
1083      HINTS(K,I)=TK(I)
      HNTMAX=MAX0(HNTMAX,K)
      GOTO 1081
CC 20
1100      IF(SETUP.EQ.2)GOTO 1
      IF(SETUP.EQ.-1)GOTO 8305
CC 21
      DO 1101 I=1,100
      PLACE(I)=0
      PROP(I)=0
      LINK(I)=0
1101      LINK(I+100)=0
      DO 1102 I=1,LOCSIZ
      ABB(I)=0
      IF(LTEXT(I).EQ.0.OR.KEY(I).EQ.0)GOTO 1102
      K=KEY(I)
      IF(IABS(TRAVEL(K,3)).EQ.1)COND(I)=2
1102      ATLOC(I)=0
CC 22
      DO 1106 I=1,100
      K=101-I
      IF(FIXD(K).LE.0)GOTO 1106
      CALL DROP(K+100,FIXD(K))
      CALL DROP(K,PLAC(K))
1106      CONTINUE
      DO 1107 I=1,100
      K=101-I
      FIXED(K)=FIXD(K)
1107      IF(PLAC(K).NE.0.AND.FIXD(K).LE.0)CALL DROP(K,PLAC(K))
CC 23
      MAXTRS=79
      TALLY=0
      TALLY2=0
      DO 1200 I=50,MAXTRS
      IF(PTEXT(I).NE.0)PROP(I)=-1
1200      TALLY=TALLY-PROP(I)
CC 24
      DO 1300 I=1,HNTMAX
      HINTED(I)=.FALSE.
1300      HINTLC(I)=0
CC 29
      CHLOC=114
      CHLOC2=140
      DO 1700 I=1,6
1700      DSEEN(I)=.FALSE.
      DFLAG=0
      DLOC(1)=19
      DLOC(2)=27
      DLOC(3)=113
      DLOC(4)=44
      DLOC(5)=64
      DLOC(6)=CHLOC
      DALTLC=18
      ORCT=0
      ORCT1=0
      DO 1710 I=1,5
      ORC(I)=0
1710      DOBJ(I)=0
      CALL MOVE(HORN,163)
      CALL MOVE(FOOD,3)
CC 30
      TURNS=0
      LMWARN=.FALSE.
      IWEST=0
      LIMIT2=-200
      KNFLOC=0
      DETAIL=0
      ABBNUM=5
      DO 1800 I=1,5
1800      IF(RTEXT(2*I+79).NE.0)MAXDIE=I
      NUMDIE=0
      HOLDNG=0
      DKILL=0
      FOOBAR=0
      BONUS=0
      CLOCK1=30
      CLOCK2=50
      TIDE=100
      INSC1=0
      DUNG0=0
      THROWC=0
      CLOSNG=.FALSE.
      PANIC=.FALSE.
      CLOSED=.FALSE.
      GAVEUP=.FALSE.
      SCORNG=.FALSE.
CC 31
      IF(SETUP.NE.1)GOTO 1
      SETUP=2
      DO 1998 K=1,LOCSIZ
      LOCUSD=LOCSIZ+1-K
      IF(LTEXT(LOCUSD).NE.0)GOTO 1997
1998      CONTINUE
      OBJ=0
1997      DO 1996 K=1,100
1996      IF(PTEXT(K).NE.0)OBJ=OBJ+1
      DO 1995 K=1,TABNDX
1995      IF(KTAB(K)/1000.EQ.2)VERB=KTAB(K)-2000
      DO 1994 K=1,RTXSIZ
      J=RTXSIZ+1-K
      IF(RTEXT(J).NE.0)GOTO 1993
1994      CONTINUE
1993      DO 1992 K=1,MAGSIZ
      I=MAGSIZ+1-K
      IF(MTEXT(I).NE.0)GOTO 1991
1992      CONTINUE
1991      K=100
CC 32
1      DEMO=.FALSE.
      IF(YES(273,54,0))GOTO 8305
      I=RAN(1)
      HINTED(3)=.FALSE.
      IF(.NOT.WIZENT)HINTED(3)=YES(65,1,0)
      OLDLOC=1
      LOC=1
      NEWLOC=1
      SETUP=3
      LIMIT=330
      IF(HINTED(3))LIMIT=1000
      IF(.NOT.WIZENT)GO TO 2
60      DO 61 KK=1,LOCUSD
      ABB(KK)=1
61      CONTINUE
      ABBNUM=10000
      DETAIL=3
CC 33
2      IF((NEWLOC.GE.9.AND.NEWLOC.NE.167).OR.NEWLOC.EQ.0.OR..NOT.CLOSNG
     2)GOTO 71
      CALL RSPEAK(130)
      NEWLOC=LOC
      IF(.NOT.PANIC)CLOCK2=15
      PANIC=.TRUE.
CC 34
71      IF(NEWLOC.EQ.LOC.OR.FORCED(LOC).OR.BITSET(LOC,3))GOTO 74
      DO 73 I=1,5
      IF(ODLOC(I).NE.NEWLOC.OR..NOT.DSEEN(I))GOTO 73
      NEWLOC=LOC
      CALL RSPEAK(2)
      GOTO 74
73      CONTINUE
74      LOC=NEWLOC
CC 35
76      IF(.NOT.HERE(OWL).OR.DARK(0))GOTO 7405
      SPK=206
7402      I=LOC
7403      I=DISTNT(I,3)
      IF(I.EQ.LOC.OR.MOD(COND(I),2).NE.0.OR.I.EQ.PLAC(SPIDER))GOTO 7403
      CALL MOVE(OWL,I)
7404      CALL RSPEAK(SPK)
CC 36
7405      IF(LOC.EQ.0.OR.FORCED(LOC).OR.BITSET(NEWLOC,3))GOTO 2000
      IF(DFLAG.NE.0)GOTO 6000
      IF(LOC.GE.15)DFLAG=1
      GOTO 2000
CC 37
6000      IF(DFLAG.NE.1)GOTO 6010
      IF(LOC.LT.15.OR.PCT(95).OR.DARK(0))GOTO 2000
      DFLAG=2
      DO 6001 I=1,2
      J=1+RAN(5)
CC 38
6001      IF(PCT(50))DLOC(J)=0
      DO 6002 I=1,5
      IF(DLOC(I).EQ.LOC)DLOC(I)=DALTLC
6002      ODLOC(I)=DLOC(I)
      CALL RSPEAK(3)
      CALL DROP(AXE,LOC)
      GOTO 2000
CC 39
6010      DTOTAL=0
      ATTACK=0
      STICK=0
      CALL DTOT
      DO 6030 I=1,6
      IF(DLOC(I).EQ.0)GOTO 6028
      J=1
      KK=DLOC(I)
      KK=KEY(KK)
      IF(KK.EQ.0)GOTO 6016
6012      NEWLOC=TRAVEL(KK,2)
      IF(NEWLOC.GT.300.OR.NEWLOC.LT.15.OR.NEWLOC.EQ.ODLOC(I))GOTO 6014
      IF(J.LE.1)GOTO6013
      IF(NEWLOC.EQ.TK(J-1).OR.J.GE.20)GOTO6014
6013  IF(NEWLOC.EQ.DLOC(I).OR.FORCED(NEWLOC)
     3.OR.(I.EQ.6.AND.BITSET(NEWLOC,3)).OR.NEWLOC.EQ.PLACE(OWL)
     4.OR.TRAVEL(KK,1).EQ.100)GOTO 6014
      TK(J)=NEWLOC
      J=J+1
6014      KK=KK+1
      IF(TRAVEL(KK-1,3).GE.0)GOTO 6012
6016      TK(J)=ODLOC(I)
      IF(J.GE.2)J=J-1
      J=1+RAN(J)
      ODLOC(I)=DLOC(I)
      DLOC(I)=TK(J)
      DSEEN(I)=(DSEEN(I).AND.LOC.GE.15.AND.IABS(LOC-182).GT.6)
     1.OR.(DLOC(I).EQ.LOC.OR.ODLOC(I).EQ.LOC)
      IF(.NOT.DSEEN(I))GOTO 6030
      DLOC(I)=LOC
      IDWARF=I
      IF(I.NE.6)GOTO 6027
CC 40
      IF(LOC.EQ.CHLOC.OR.PROP(CHEST).GE.0)GOTO 6030
      K=0
      DO 6020 J=50,MAXTRS
CC 41
      IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)
     1.OR.LOC.EQ.PLAC(EMRALD)))GOTO 6020
      IDONDX=J
      IF(TOTING(IDONDX))GOTO 6022
6020      IF(HERE(IDONDX))K=1
      IF(TALLY.EQ.TALLY2+1.AND.K.EQ.0.AND.PLACE(CHEST).EQ.0
     1.AND.HERE(LAMP).AND.PROP(LAMP).EQ.1)GOTO 6025
      IF(ODLOC(6).NE.DLOC(6).AND.PCT(20))CALL RSPEAK(127)
      GOTO 6030
6022      CALL RSPEAK(128)
CC 42
      IF(PLACE(MESSAG).EQ.0)CALL MOVE(CHEST,CHLOC)
      CALL MOVE(MESSAG,CHLOC2)
      DO 6023 J=50,MAXTRS
      IF(J.EQ.PYRAM.AND.(LOC.EQ.PLAC(PYRAM)
     1.OR.LOC.EQ.PLAC(EMRALD)))GOTO 6023
      IDONDX=J
      IF(AT(IDONDX).AND.FIXED(IDONDX).EQ.0)
     1 CALL CARRY(IDONDX,LOC)
      IF(TOTING(IDONDX))CALL DROP(IDONDX,CHLOC)
6023      CONTINUE
6024      DLOC(6)=CHLOC
      ODLOC(6)=CHLOC
      DSEEN(6)=.FALSE.
      GOTO 6030
6025      CALL RSPEAK(186)
      CALL MOVE(CHEST,CHLOC)
      CALL MOVE(MESSAG,CHLOC2)
      GOTO 6024
CC 43
6027      DTOTAL=DTOTAL+1
      IF(ODLOC(I).NE.DLOC(I))GOTO 6030
      ATTACK=ATTACK+1
      IF(KNFLOC.GE.0)KNFLOC=LOC
      IF(RAN(10).LT.DFLAG-2)STICK=STICK+1
      GOTO 6030
CC 44
6028      IF(RAN(100).LT.1)DLOC(I)=163
6030      CONTINUE
      NEWLOC=LOC
CC 45
      IF(DTOTAL.EQ.0.OR.DARK(0))GOTO 2000
      IF(DTOTAL.EQ.1)GOTO 75
      WRITE(IOPDEV,67)DTOTAL
67      FORMAT(/11H THERE ARE ,I1,36H  THREATENING LITTLE DWARVES IN THE
     1 ,16H ROOM WITH YOU. )
      GOTO 77
75      CALL RSPEAK(4)
      IF(ATTACK.EQ.0.AND.DOBJ(IDWARF).NE.0)CALL RSPEAK(231)
77      IF(ATTACK.EQ.0)GOTO 2000
      IF(DFLAG.EQ.2)DFLAG=3
CC 46
      IF(ATTACK.EQ.1)GOTO 79
      WRITE(IOPDEV,78)ATTACK
78      FORMAT(/2H  ,I1,29H OF THEM THROW KNIVES AT YOU!)
      K=6
82      IF(STICK.GT.1)GOTO 83
      CALL RSPEAK(K+STICK)
      IF(STICK.EQ.0)GOTO 2000
      GOTO 84
83      WRITE(IOPDEV,68)STICK
68      FORMAT(/2H  ,I1,17H OF THEM GET YOU!)
84      OLDLC2=LOC
      GOTO 99
79      CALL RSPEAK(5)
      K=52
      GOTO 82
CC 47
2000      IF(LOC.EQ.0)GOTO 99
      TIDE=TIDE+1
      IF(TIDE.EQ.15)TIDE=-15
      IF(LOC.LT.176.OR.LOC.GT.187)GOTO 203
      IF(TIDE.GE.100.AND.LOC.EQ.178)TIDE=3
      IF(IABS(TIDE).GE.5.AND.LOC.EQ.178)LOC=179
      IF(LOC.LT.180.OR.LOC.GT.182)GOTO 202
      IF(LOC.EQ.182)PROP(47)=MOD(PROP(47)+1,7)
      TIDE0=214+2*181-364+IABS(TIDE)-2
      IF(TIDE0.GT.214)GOTO 201
      CALL RSPEAK(214)
      GOTO 99
201      IF(TIDE0.GE.221)TIDE0=221
      CALL RSPEAK(TIDE0)
202      IF(LOC.LT.183.OR.LOC.GT.186.OR.TIDE.NE.0)GOTO 205
      CALL RSPEAK(222)
      GOTO 99
203      CONTINUE
      LIMIT1=LIMIT2
      LIMIT2=LIMIT2+2+HOLDNG
      IF(LOC.EQ.126)LIMIT2=440+LIMIT2/2
      IF(LIMIT2.LE.800)GOTO 204
      IF(LIMIT1.LT.800)SPK=270
      IF(LIMIT2.GE.880.AND.LIMIT1.LT.880)SPK=271
      IF(LIMIT2.GE.900)SPK=272
      IF(IABS(SPK-271).LE.1)CALL RSPEAK(SPK)
      IF(SPK.EQ.272)GOTO 99
204      SPK=0
      IF(ORCT.LT.40)GOTO 205
      IF(CLOSNG.OR.CLOSED.OR.DTOTAL.NE.0.OR.LOC.LT.20)GOTO 205
      IF(LOC.GT.150)GOTO 205
      IF(TALLY.EQ.ORCT1.AND..NOT.DARK(0))CALL ORCALL(ORC)
      ORCT1=TALLY
      ORCT=0
205      ORCT=ORCT+1
      KK=STEXT(LOC)
      IF(MOD(ABB(LOC),ABBNUM).EQ.0.OR.KK.EQ.0)KK=LTEXT(LOC)
      IF(FORCED(LOC).OR..NOT.DARK(0))GOTO 2001
      IF(VERB.NE.HOOT.AND.WZDARK.AND.PCT(35))GOTO 90
      KK=RTEXT(16)
2001      IF(TOTING(BEAR))CALL RSPEAK(141)
      CALL SPEAK(KK)
      K=1
      IF(FORCED(LOC))GOTO 8
      IF(LOC.EQ.33.AND.PCT(25).AND..NOT.CLOSNG)CALL RSPEAK(8)
CC 48
      IF(DARK(0))GOTO 206
      ABB(LOC)=ABB(LOC)+1
      I=ATLOC(LOC)
2004      IF(I.EQ.0)GOTO 206
      OBJ=I
      IF(OBJ.GT.100)OBJ=OBJ-100
      IF(OBJ.EQ.STEPS.AND.TOTING(NUGGET))GOTO 2008
      IF(PROP(OBJ).GE.0)GOTO 2006
      IF(CLOSED)GOTO 2008
      PROP(OBJ)=0
      IF(OBJ.EQ.RUG.OR.OBJ.EQ.CHAIN)PROP(OBJ)=1
      TALLY=TALLY-1
CC 49
      IF(TALLY.EQ.TALLY2.AND.TALLY.NE.0)LIMIT=MIN0(35,LIMIT)
2006      KK=PROP(OBJ)
      IF(OBJ.EQ.STEPS.AND.LOC.EQ.FIXED(STEPS))KK=1
      CALL PSPEAK(OBJ,KK)
2008      I=LINK(I)
      GOTO 2004
206      IF(PROP(47).EQ.6.AND.LOC.EQ.182)GOTO 99
      IF(MOD(PROP(48),2).EQ.1)GOTO 30500
      IF(LOC.EQ.145)GOTO 30600
      IF(PROP(CHALIC).NE.1.OR.PLACE(CHALIC).EQ.LOC)GOTO 207
      FIXED(CHALIC)=0
      CALL MOVE(CHALIC,0)
207      GOTO 2012
2009      K=54
2010      SPK=K
2011      CALL RSPEAK(SPK)
2012      VERB=0
      OBJ=0
CC 50
2600      DO 2602 HINT=4,HNTMAX
      IF(HINTED(HINT))GOTO 2602
      IDONDX=HINT
      IF(.NOT.BITSET(LOC,IDONDX))HINTLC(HINT)=-1
      HINTLC(HINT)=HINTLC(HINT)+1
      IF(HINTLC(HINT).GE.HINTS(HINT,1))GOTO 40000
2602      CONTINUE
CC 51
      IF(.NOT.CLOSED)GOTO 2605
      IF(PROP(OYSTER).LT.0.AND.TOTING(OYSTER))
     1CALL PSPEAK(OYSTER,1)
      DO 2604 I=1,100
      IDONDX=I
2604      IF(TOTING(IDONDX).AND.PROP(IDONDX).LT.0)
     1 PROP(IDONDX)=-1-PROP(IDONDX)
2605      WZDARK=DARK(0)
      IF(KNFLOC.GT.0.AND.KNFLOC.NE.LOC)KNFLOC=0
      I=RAN(1)
      CALL GETIN(WD1,WD1X,WD2,WD2X)
CC 52
2608      FOOBAR=MIN0(0,-FOOBAR)
      IF(TURNS.EQ.0.AND.WD1(1)/2.EQ.CIM/2.AND.WD2(1)/2.EQ.CIM/2)
     1WIZENT=.TRUE.
      TURNS=TURNS+1
      IF(VERB.EQ.SAY.AND.WD2X.NE.0)VERB=0
      IF(VERB.EQ.SAY)GOTO 4090
      IF(TALLY.EQ.0.AND.LOC.GE.15.AND.LOC.NE.33)CLOCK1=CLOCK1-1
      IF(CLOCK1.EQ.0)GOTO 10000
      IF(CLOCK1.LT.0)CLOCK2=CLOCK2-1
      IF(CLOCK2.EQ.0)GOTO 11000
      IF(PROP(LAMP).EQ.1)LIMIT=LIMIT-1
      IF(LIMIT.LE.30.AND.HERE(BATTER).AND.PROP(BATTER).EQ.0
     1.AND.HERE(LAMP))GOTO 12000
      IF(LIMIT.EQ.0)GOTO 12400
      IF(LIMIT.LT.0.AND.LOC.LE.8)GOTO 12600
      IF(LIMIT.LE.30)GOTO 12200
19999      K=43
      IF(LIQLOC(LOC).EQ.WATER)K=70
      V1=VOCAB(WD1,-1)
      V2=VOCAB(WD2,-1)
      IF(V1.EQ.3.AND.(V2.EQ.14.OR.V2.EQ.1021))GOTO 2010
      IF(V1.EQ.3.AND.WD2X.NE.0)GOTO 2800
      IF((V1.NE.1021.AND.V1.NE.1022)
     1.OR.(V2.NE.1024.AND.V2.NE.1009))GOTO 2610
      IF(.NOT.AT(VOCAB(WD2,1)))GOTO 2610
      WD2(1)=LLP
      WD2(2)=LLO
      WD2(3)=LLU
      WD2(4)=LLR
      WD2(5)=IBL
      WD2(6)=IBL
      WD2(7)=IBL
      WD2X=4
2610      IF(V1.NE.44)GOTO 2630
      IWEST=IWEST+1
      IF(IWEST.EQ.10.AND.WD1(2)/2.NE.IBL/2)CALL RSPEAK(17)
2630      I=VOCAB(WD1,-1)
      IF(I.EQ.-1)GOTO 3000
      K=MOD(I,1000)
      KQ=I/1000+1
      GOTO (8,5000,4000,2010),KQ
CC 53
2800  WD1X=WD2X
      DO 2801 IW=1,10
      WD1(IW)=WD2(IW)
2801  WD2(IW)=IBL
      WD2X=0
      GOTO 2610
CC 54
3000      SPK=60
      IF(PCT(20))SPK=61
      IF(PCT(20))SPK=13
      CALL RSPEAK(SPK)
      GOTO 2600
CC 55
4000      VERB=K
      SPK=ACTSPK(VERB)
      IF(WD2X.NE.0.AND.VERB.NE.SAY)GOTO 2800
      IF(VERB.EQ.SAY)OBJ=WD2X
      IF(OBJ.NE.0)GOTO 4090
CC 56
4080      GOTO(8010,8000,8000,8040,2009,8040,9070,9080,8000,8000,
     1    2011,9120,9130,8140,9150,8000,8000,8180,8000,8200,
     2    8000,9220,9230,8240,8250,8260,8270,8000,8000,8300,
     3    8310,8320,8000,8340,8000),VERB
CC 57
CC 58
4090      GOTO(9010,9020,9030,9040,2009,9040,9070,9080,9090,2011,
     1    2011,9120,9130,9140,9150,9160,9170,2011,9190,9190,
     2    9210,9220,9230,2011,2011,2011,9270,9280,9290,2011,
     3    2011,2011,9330,2011,9350),VERB
CC 59
CC 60
5000      OBJ=K
      IF(FIXED(K).NE.LOC.AND..NOT.HERE(K))GOTO 5100
5010      IF(WD2X.NE.0)GOTO 2800
      IF(VERB.NE.0)GOTO 5200
      IF(OBJ.EQ.OWL)GOTO 5020
      WRITE(IOPDEV,5015)WD1
5015      FORMAT(/33H WHAT DO YOU WANT TO DO WITH THE ,10A1)
      GOTO 2600
5020      SPK=208
      GOTO 2011
5100      IF(K.NE.GRATE)GOTO 5110
      IF(LOC.EQ.1.OR.LOC.EQ.4.OR.LOC.EQ.7)K=DPRSSN
      IF(LOC.GT.9.AND.LOC.LT.15)K=ENTRNC
      IF(K.NE.GRATE)GOTO 8
5110      IF(K.NE.DWARF)GOTO 5120
      DO 5112 I=1,5
      IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 5010
5112      CONTINUE
5120    IF((LIQ(0).EQ.K.AND.HERE(BOTTLE)).OR.K.EQ.LIQLOC(LOC))GOTO 5010
      IF(OBJ.NE.PLANT.OR..NOT.AT(PLANT2).OR.PROP(PLANT2).EQ.0)GOTO 5130
      OBJ=PLANT2
      GOTO 5010
5130      IF(OBJ.NE.KNIFE.OR.KNFLOC.NE.LOC)GOTO 5140
      KNFLOC=-1
      SPK=116
      GOTO 2011
5140      IF(OBJ.NE.ROD.OR..NOT.HERE(ROD2))GOTO 5190
      OBJ=ROD2
      GOTO 5010
5190      IF((VERB.EQ.FIND.OR.VERB.EQ.INVENT).AND.WD2X.EQ.0)GOTO 5010
      WRITE(IOPDEV,5199)WD1
5199      FORMAT(/10H I SEE NO ,10A1)
      GOTO 2012
5200      IF(OBJ.NE.OWL)GOTO 4090
      SPK=209
      GOTO 2011
CC 61
8      KK=KEY(LOC)
      NEWLOC=LOC
      IF(KK.EQ.0)CALL BUG(26)
      IF(K.EQ.NULL)GOTO 2
      IF(K.EQ.BACK)GOTO 20
      IF(K.EQ.LOOK)GOTO 30
      IF(K.EQ.CAVE)GOTO 40
      OLDLC2=OLDLOC
      OLDLOC=LOC
9      LL=IABS(TRAVEL(KK,3))
      IF(LL.EQ.1.OR.LL.EQ.K)GOTO 10
      IF(TRAVEL(KK,3).LT.0)GOTO 50
      KK=KK+1
      GOTO 9
10      LL=TRAVEL(KK,2)
11      NEWLOC=TRAVEL(KK,1)
      K=MOD(NEWLOC,100)
      IF(NEWLOC.LE.300)GOTO 13
      IF(PROP(K).NE.NEWLOC/100-3)GOTO 16
12      IF(TRAVEL(KK,3).LT.0)CALL BUG(25)
      KK=KK+1
      NEWLOC=TRAVEL(KK,2)
      IF(NEWLOC.EQ.LL)GOTO 12
      LL=NEWLOC
      GOTO 11
13      IF(NEWLOC.LE.100)GOTO 14
      IF(TOTING(K).OR.(NEWLOC.GT.200.AND.AT(K)))GOTO 16
      GOTO 12
14      IF(NEWLOC.NE.0.AND..NOT.PCT(NEWLOC))GOTO 12
16      NEWLOC=MOD(LL,1000)
      IF(NEWLOC.LE.300)GOTO 2
      IF(NEWLOC.LE.500)GOTO 30000
      CALL RSPEAK(NEWLOC-500)
      NEWLOC=LOC
      GOTO 2
CC 62
30000      NEWLOC=NEWLOC-300
      GOTO (30100,30200,30300,30400,30500,30600),NEWLOC
CC 63
30100      NEWLOC=99+100-LOC
      IF(HOLDNG.EQ.0.OR.(HOLDNG.EQ.1.AND.TOTING(EMRALD)))GOTO 2
      NEWLOC=LOC
      CALL RSPEAK(117)
      GOTO 2
CC 64
30200      CALL DROP(EMRALD,LOC)
      GOTO 12
CC 65
30300      IF(PROP(TROLL).NE.1)GOTO 30310
      CALL PSPEAK(TROLL,1)
      PROP(TROLL)=0
      CALL MOVE(TROLL2,0)
      CALL MOVE(TROLL2+100,0)
      CALL MOVE(TROLL,PLAC(TROLL))
      CALL MOVE(TROLL+100,FIXD(TROLL))
      CALL JUGGLE(CHASM)
      NEWLOC=LOC
      GOTO 2
30310      NEWLOC=PLAC(TROLL)+FIXD(TROLL)-LOC
      IF(PROP(TROLL).EQ.0)PROP(TROLL)=1
      IF(.NOT.TOTING(BEAR))GOTO 2
      CALL RSPEAK(162)
      PROP(CHASM)=1
      PROP(TROLL)=2
      CALL DROP(BEAR,NEWLOC)
      FIXED(BEAR)=-1
      PROP(BEAR)=3
      IF(PROP(63).LT.0)TALLY2=TALLY2+1
      OLDLC2=NEWLOC
      GOTO 99
CC 66
30400      NEWLOC=350-LOC
      IF(TOTING(VASE).OR.TOTING(BOTTLE).OR.TOTING(CAGE))GOTO 30410
      IF(TOTING(TUSK).OR.TOTING(NUGGET).OR.TOTING(CHEST))GOTO 30410
      IF(TOTING(CHALIC).OR.TOTING(SILVER).OR.TOTING(TRIDNT))GOTO 30410
      IF(TOTING(PYRAM).OR.TOTING(EGGS).OR.TOTING(CROWN))GOTO 30410
      GOTO 2
30410      NEWLOC=LOC
      CALL RSPEAK(260)
      GOTO 2
CC 67
30500      IF(PROP(48).GT.0.OR.TOTING(EGGS))GOTO 30510
      LOC=143
      PROP(48)=1
      IF(HOLDNG.LE.1)PROP(48)=3
      GOTO 2000
30510      IF(PROP(48).EQ.2)GOTO 30520
      IF(.NOT.TOTING(EGGS))GOTO 30530
      PROP(48)=2
      CALL MOVE(EGGS,0)
      CALL RSPEAK(243)
30520      LOC=143
      IF(.NOT.TOTING(44))GOTO 30525
      CALL RSPEAK(250)
      CALL MOVE(44,0)
      CALL MOVE(68,143)
30525      GOTO 2000
30530      LOC=145
      IF(.NOT.TOTING(FOOD))GOTO 30540
      CALL RSPEAK(244)
      CALL MOVE(FOOD,163)
      LOC=173
30540      DO 30550 KOB=28,MAXTRS
      KOBJ=KOB
      IF(.NOT.TOTING(KOBJ))GOTO 30550
      CALL DROP(KOBJ,143)
      IF(KOBJ.GE.50)LOC=173
30550      CONTINUE
      IF(LOC.NE.173)GOTO 30560
      CALL RSPEAK(245)
      PROP(48)=0
      GOTO 2000
30560      IF(OLDLOC.NE.145)CALL RSPEAK(246)
      PROP(48)=0
      IF(OLDLC2.NE.145)GOTO 30570
      CALL RSPEAK(248)
      GOTO 99
30570      CALL RSPEAK(247)
      GOTO 2000
CC 68
30600      DUNG0=DUNG0+1
      IF(DARK(0))GOTO 2012
      IF((DUNG0.EQ.3.OR.DUNG0.EQ.5).AND.PROP(48).NE.2)CALL RSPEAK(252)
      IF(DUNG0.EQ.4)CALL RSPEAK(253)
      IF(DUNG0.EQ.7.AND.PROP(48).NE.2)GOTO 30560
      GOTO 2012
CC 69
20      K=OLDLOC
      IF(FORCED(K))K=OLDLC2
      OLDLC2=OLDLOC
      OLDLOC=LOC
      K2=0
      IF(K.NE.LOC)GOTO 21
      CALL RSPEAK(91)
      GOTO 2
21      LL=TRAVEL(KK,2)
      IF(LL.EQ.K)GOTO 25
      IF(LL.GT.300)GOTO 22
      J=KEY(LL)
      IF(FORCED(LL).AND.TRAVEL(J,2).EQ.K)K2=KK
22      IF(TRAVEL(KK,3).LT.0)GOTO 23
      KK=KK+1
      GOTO 21
23      KK=K2
      IF(KK.NE.0)GOTO 25
      CALL RSPEAK(140)
      GOTO 2
25      K=IABS(TRAVEL(KK,3))
      KK=KEY(LOC)
      GOTO 9
CC 70
30      IF(DETAIL.LT.3)CALL RSPEAK(15)
      DETAIL=DETAIL+1
      WZDARK=.FALSE.
      ABB(LOC)=0
      GOTO 2
CC 71
40      IF(LOC.LT.8)CALL RSPEAK(57)
      IF(LOC.GE.8)CALL RSPEAK(58)
      GOTO 2
CC 72
50      SPK=12
      IF(K.GE.43.AND.K.LE.50)SPK=9
      IF(K.EQ.29.OR.K.EQ.30)SPK=9
      IF(K.EQ.7.OR.K.EQ.36.OR.K.EQ.37)SPK=10
      IF(K.EQ.11.OR.K.EQ.19)SPK=11
      IF(VERB.EQ.FIND.OR.VERB.EQ.INVENT)SPK=59
      IF(K.EQ.62.OR.K.EQ.65)SPK=42
      IF(K.EQ.17)SPK=80
      CALL RSPEAK(SPK)
      GOTO 2
CC 73
90      CALL RSPEAK(23)
      OLDLC2=LOC
CC 74
99      IF(CLOSNG)GOTO 95
      YEA=YES(NUMDIE*2+81,NUMDIE*2+82,54)
      NUMDIE=NUMDIE+1
      IF(NUMDIE.EQ.MAXDIE.OR..NOT.YEA)GOTO 20000
      PLACE(WATER)=0
      PLACE(OIL)=0
      IF(TOTING(LAMP))PROP(LAMP)=0
      LIMIT2=0
      DO 98 J=1,100
      I=101-J
      IF(.NOT.TOTING(I))GOTO 98
      K=OLDLC2
      IF(LOC.GE.178.AND.LOC.LE.186.OR.LOC.EQ.176)K=180
      IF(I.EQ.LAMP)K=1
      CALL DROP(I,K)
98      CONTINUE
      LOC=3
      OLDLOC=LOC
      GOTO 2000
CC 75
95      CALL RSPEAK(131)
      NUMDIE=NUMDIE+1
      GOTO 20000
CC 76
8000  WRITE(IOPDEV,8002)WD1
8002      FORMAT(/21H WHAT DO YOU WANT TO  ,10A1)
      OBJ=0
      GOTO 2600
CC 77
8010      IF(ATLOC(LOC).EQ.0)GOTO 8000
      IATLOC=ATLOC(LOC)
      IF(LINK(IATLOC).NE.0)GOTO 8000
      DO 8012 I=1,5
      IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 8000
8012      CONTINUE
      OBJ=ATLOC(LOC)
CC 78
9010      IF(TOTING(OBJ))GOTO 2011
      SPK=25
      IF(OBJ.EQ.PLANT.AND.PROP(PLANT).LE.0)SPK=115
      IF(OBJ.EQ.BEAR.AND.PROP(BEAR).EQ.1)SPK=169
      IF(OBJ.EQ.CHAIN.AND.PROP(BEAR).NE.0)SPK=170
      IF(OBJ.EQ.80)SPK=266
      IF(OBJ.NE.49.OR.LOC.NE.145)GOTO 9012
      CALL RSPEAK(254)
      DUNG0=0
      LOC=165
      GOTO 2000
9012      IF(FIXED(OBJ).NE.0)GOTO 2011
      IF(OBJ.NE.WATER.AND.OBJ.NE.OIL)GOTO 9017
      IF(HERE(BOTTLE).AND.LIQ(0).EQ.OBJ)GOTO 9018
      OBJ=BOTTLE
      IF(TOTING(BOTTLE).AND.PROP(BOTTLE).EQ.1)GOTO 9220
      IF(PROP(BOTTLE).NE.1)SPK=105
      IF(.NOT.TOTING(BOTTLE))SPK=104
      GOTO 2011
9018      OBJ=BOTTLE
9017      IF(HOLDNG.LT.7)GOTO 9016
      CALL RSPEAK(92)
      GOTO 2012
9016      IF(OBJ.NE.BIRD)GOTO 9014
      IF(PROP(BIRD).NE.0)GOTO 9014
      IF(.NOT.TOTING(ROD))GOTO 9013
      CALL RSPEAK(26)
      GOTO 2012
9013      IF(TOTING(CAGE))GOTO 9015
      CALL RSPEAK(27)
      GOTO 2012
9015      PROP(BIRD)=1
9014      IF((OBJ.EQ.BIRD.OR.OBJ.EQ.CAGE).AND.PROP(BIRD).NE.0)
     1CALL CARRY(BIRD+CAGE-OBJ,LOC)
      CALL CARRY(OBJ,LOC)
      K=LIQ(0)
      IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=-1
      IF(OBJ.EQ.DCMNTS)PROP(DCMNTS)=1
      GOTO 2009
CC 79
9020      IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2
      IF(.NOT.TOTING(OBJ))GOTO 2011
      IF(OBJ.NE.BIRD.OR..NOT.HERE(SNAKE))GOTO 9024
      CALL RSPEAK(30)
      IF(CLOSED)GOTO 19000
      CALL DSTROY(SNAKE)
CC 80
      PROP(SNAKE)=1
9021      K=LIQ(0)
      IF(K.EQ.OBJ)OBJ=BOTTLE
      IF(OBJ.EQ.BOTTLE.AND.K.NE.0)PLACE(K)=0
      IF(OBJ.EQ.CAGE.AND.PROP(BIRD).NE.0)CALL DROP(BIRD,LOC)
      IF(OBJ.EQ.BIRD)PROP(BIRD)=0
      CALL DROP(OBJ,LOC)
      IF(LOC.EQ.195)CALL MOVE(OBJ,163)
      IF(LOC.EQ.154)GOTO 9022
      IF(.NOT.AT(WEB))GOTO 2012
      IF(HERE(SPIDER))CALL JUGGLE(SPIDER)
      CALL JUGGLE(WEB)
      GO TO 2012
9022      LOC=41+RAN(3)+RAN(2)*28
      CALL MOVE(OBJ,LOC)
      CALL RSPEAK(263)
      NEWLOC=LOC
      IF(PLACE(ORB).NE.154)PROP(80)=1
      I=ATLOC(198)
9023       IF(I.EQ.80)GOTO 2000
      CALL MOVE(I,163)
      I=LINK(I)
      GOTO 9023
9024      IF(OBJ.NE.COINS.OR..NOT.HERE(VEND))GOTO 9025
      CALL DSTROY(COINS)
      CALL DROP(BATTER,LOC)
      CALL PSPEAK(BATTER,0)
      GOTO 2012
9025  IF(OBJ.NE.BIRD.OR.(.NOT.AT(DRAGON).AND..NOT.AT(SPIDER)))GOTO 9026
      IF(AT(DRAGON).AND.PROP(DRAGON).NE.0)GOTO 9026
      SPK=154
      IF(AT(SPIDER))SPK=213
      CALL RSPEAK(SPK)
      CALL DSTROY(BIRD)
      PROP(BIRD)=0
      IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
      GOTO 2012
9026      IF(OBJ.NE.BEAR.OR..NOT.AT(TROLL))GOTO 9027
      CALL RSPEAK(163)
      CALL MOVE(TROLL,0)
      CALL MOVE(TROLL+100,0)
      CALL MOVE(TROLL2,PLAC(TROLL))
      CALL MOVE(TROLL2+100,FIXD(TROLL))
      CALL JUGGLE(CHASM)
      PROP(TROLL)=2
      GOTO 9021
9027      IF(OBJ.NE.VASE.OR.LOC.EQ.PLAC(PILLOW))GOTO 9028
      PROP(VASE)=2
      IF(AT(PILLOW))PROP(VASE)=0
      CALL PSPEAK(VASE,PROP(VASE)+1)
      IF(PROP(VASE).NE.0)FIXED(VASE)=-1
      GOTO 9021
9028      IF(LOC.LT.176.OR.LOC.GT.186)GOTO 9029
      IF(LOC.EQ.180.OR.LOC.EQ.177)GOTO 9029
      IF(OBJ.NE.FOOD)CALL DROP(OBJ,180)
      SPK=223
      IF(OBJ.NE.FOOD)GOTO 9031
      CALL DROP(OBJ,163)
      IF(LOC.NE.182)GOTO 9031
      PROP(47)=0
      SPK=240
9031      IF(LOC.LT.180)SPK=230
      CALL RSPEAK(SPK)
      GOTO 2012
9029      CALL RSPEAK(54)
      IF(OBJ.EQ.TUSK.AND.LOC.EQ.3)CALL RSPEAK(238)
      IF(OBJ.NE.SPOON)GOTO 9021
      IF(INSC1.EQ.0)CALL RSPEAK(224)
      GO TO 9021
CC 81
9030      IF(WD2X.EQ.0)GOTO 9034
      DO 9033 IW=1,10
      WD1(IW)=WD2(IW)
9033  CONTINUE
9034  WD1X=WD2X
      I=VOCAB(WD1,-1)
      IF(I.EQ.62.OR.I.EQ.65.OR.I.EQ.71.OR.I.EQ.2025.OR.I.EQ.2032)
     1    GOTO 9035
      WRITE(IOPDEV,9032)WD1
9032      FORMAT(/8H OKAY, ",10A1,3H ". )
      GOTO 2012
9035      DO 9036 IW=1,10
9036  WD2(IW)=IBL
      WD2X=0
      OBJ=0
      GOTO 2630
CC 82
8040      SPK=28
      IF(HERE(CLAM))OBJ=CLAM
      IF(HERE(OYSTER))OBJ=OYSTER
      IF(AT(DOOR))OBJ=DOOR
      IF(AT(GRATE))OBJ=GRATE
      IF(OBJ.NE.0.AND.HERE(CHAIN))GOTO 8000
      IF(HERE(CHAIN))OBJ=CHAIN
      IF(OBJ.EQ.0)GOTO 2011
CC 83
9040      IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)GOTO 9046
      IF(OBJ.EQ.DOOR)SPK=111
      IF(OBJ.EQ.DOOR.AND.PROP(DOOR).EQ.1)SPK=54
      IF(OBJ.EQ.CAGE)SPK=32
      IF(OBJ.EQ.KEYS)SPK=55
      IF(OBJ.EQ.GRATE.OR.OBJ.EQ.CHAIN)SPK=31
      IF(SPK.NE.31.OR..NOT.HERE(KEYS))GOTO 2011
      IF(OBJ.EQ.CHAIN)GOTO 9048
      IF(.NOT.CLOSNG)GOTO 9043
      K=130
      IF(.NOT.PANIC)CLOCK2=15
      PANIC=.TRUE.
      GOTO 2010
9043      K=34+PROP(GRATE)
      PROP(GRATE)=1
      IF(VERB.EQ.LOCK)PROP(GRATE)=0
      K=K+2*PROP(GRATE)
      GOTO 2010
CC 84
9046      K=0
      IF(OBJ.EQ.OYSTER)K=1
      SPK=124+K
      IF(TOTING(OBJ))SPK=120+K
      IF(.NOT.TOTING(TRIDNT))SPK=122+K
      IF(VERB.EQ.LOCK)SPK=61
      IF(SPK.NE.124)GOTO 2011
      CALL DSTROY(CLAM)
      CALL DROP(OYSTER,LOC)
      CALL DROP(PEARL,105)
      GOTO 2011
CC 85
9048      IF(VERB.EQ.LOCK)GOTO 9049
      SPK=171
      IF(PROP(BEAR).EQ.0)SPK=41
      IF(PROP(CHAIN).EQ.0)SPK=37
      IF(SPK.NE.171)GOTO 2011
      PROP(CHAIN)=0
      FIXED(CHAIN)=0
      IF(PROP(BEAR).NE.3)PROP(BEAR)=2
      FIXED(BEAR)=2-PROP(BEAR)
      GOTO 2011
9049      SPK=172
      IF(PROP(CHAIN).NE.0)SPK=34
      IF(LOC.NE.PLAC(CHAIN))SPK=173
      IF(SPK.NE.172)GOTO 2011
      PROP(CHAIN)=2
      IF(TOTING(CHAIN))CALL DROP(CHAIN,LOC)
      FIXED(CHAIN)=-1
      GOTO 2011
CC 86
9070      IF(.NOT.HERE(LAMP))GOTO 2011
      SPK=184
      IF(LIMIT.LT.0)GOTO 2011
      PROP(LAMP)=1
      CALL RSPEAK(39)
      IF(WZDARK)GOTO 76
      GOTO 2012
CC 87
9080      IF(.NOT.HERE(LAMP))GOTO 2011
      PROP(LAMP)=0
      CALL RSPEAK(40)
      IF(DARK(0))CALL RSPEAK(16)
      GOTO 2012
CC 88
9090      IF((.NOT.TOTING(OBJ)).AND.(OBJ.NE.ROD.OR..NOT.TOTING(ROD2)))
     1SPK=29
      IF(OBJ.NE.ROD.OR..NOT.AT(FISSUR).OR..NOT.TOTING(OBJ)
     1.OR.CLOSNG)GOTO 2011
      PROP(FISSUR)=1-PROP(FISSUR)
      CALL PSPEAK(FISSUR,2-PROP(FISSUR))
      GOTO 2012
CC 89
9120      DO 9121 I=1,5
      IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2)GOTO 9122
9121      CONTINUE
      I=0
9122      IF(OBJ.NE.0)GOTO 9124
      IF(I.NE.0)OBJ=DWARF
      IF(HERE(SNAKE))OBJ=OBJ*100+SNAKE
      IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)OBJ=OBJ*100+DRAGON
      IF(AT(TROLL))OBJ=OBJ*100+TROLL
      IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)OBJ=OBJ*100+BEAR
      IF(HERE(SPIDER))OBJ=OBJ*100+SPIDER
      IF(OBJ.GT.100)GOTO 8000
      IF(OBJ.NE.0)GOTO 9124
CC 90
      IF(HERE(BIRD).AND.VERB.NE.THROW)OBJ=BIRD
CC 91
      IF(HERE(CLAM).OR.HERE(OYSTER))OBJ=100*OBJ+CLAM
      IF(OBJ.GT.100)GOTO 8000
9124      IF(OBJ.NE.BIRD)GOTO 9125
      SPK=137
      IF(CLOSED)GOTO 2011
      CALL DSTROY(BIRD)
      PROP(BIRD)=0
      IF(PLACE(SNAKE).EQ.PLAC(SNAKE))TALLY2=TALLY2+1
      SPK=45
9125      IF(OBJ.EQ.0)SPK=44
      IF(OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER)SPK=150
      IF(OBJ.EQ.SNAKE)SPK=46
      IF(OBJ.EQ.DWARF)SPK=49
      IF(OBJ.EQ.DWARF.AND.CLOSED)GOTO 19000
      IF(OBJ.EQ.DRAGON)SPK=167
      IF(OBJ.EQ.TROLL)SPK=157
      IF(OBJ.EQ.SPIDER)SPK=211
      IF(OBJ.EQ.BEAR)SPK=165+(PROP(BEAR)+1)/2
      IF(OBJ.NE.DRAGON.OR.PROP(DRAGON).NE.0)GOTO 2011
CC 92
      CALL RSPEAK(49)
      VERB=0
      OBJ=0
      CALL GETIN(WD1,WD1X,WD2,WD2X)
      IF(WD1(1)/2.NE.LLY/2)GOTO 2608
      CALL PSPEAK(DRAGON,1)
      PROP(DRAGON)=2
      PROP(RUG)=0
      K=(PLAC(DRAGON)+FIXD(DRAGON))/2
      CALL MOVE(DRAGON+100,-1)
      CALL MOVE(RUG+100,0)
      CALL MOVE(DRAGON,K)
      CALL MOVE(RUG,K)
      DO 9126 OBJ=1,100
      IDONDX=OBJ
      IF(PLACE(IDONDX).EQ.PLAC(DRAGON).OR.
     1 PLACE(IDONDX).EQ.FIXD(DRAGON))
     2 CALL MOVE(IDONDX,K)
9126      CONTINUE
      LOC=K
      K=NULL
      GOTO 8
CC 93
9130      IF(OBJ.EQ.BOTTLE.OR.OBJ.EQ.0)OBJ=LIQ(0)
      IF(OBJ.EQ.0)GOTO 8000
      IF(.NOT.TOTING(OBJ))GOTO 2011
      SPK=78
      IF(OBJ.NE.OIL.AND.OBJ.NE.WATER)GOTO 2011
      PROP(BOTTLE)=1
      PLACE(OBJ)=0
      SPK=77
      IF(.NOT.(AT(PLANT).OR.AT(DOOR)))GOTO 2011
      IF(AT(DOOR))GOTO 9132
      SPK=112
      IF(OBJ.NE.WATER)GOTO 2011
      CALL PSPEAK(PLANT,PROP(PLANT)+1)
      PROP(PLANT)=MOD(PROP(PLANT)+2,6)
      PROP(PLANT2)=PROP(PLANT)/2
      K=NULL
      GOTO 8
9132      PROP(DOOR)=0
      IF(OBJ.EQ.OIL)PROP(DOOR)=1
      SPK=113+PROP(DOOR)
      GOTO 2011
CC 94
8140      IF(.NOT.HERE(FOOD))GOTO 8000
8142      CALL MOVE(FOOD,163)
      SPK=72
      GOTO 2011
9140      IF(OBJ.EQ.FOOD)GOTO 8142
      IF(OBJ.EQ.BIRD.OR.OBJ.EQ.SNAKE.OR.OBJ.EQ.CLAM.OR.OBJ.EQ.OYSTER
     1.OR.OBJ.EQ.DWARF.OR.OBJ.EQ.DRAGON.OR.OBJ.EQ.TROLL
     2.OR.OBJ.EQ.BEAR.OR.OBJ.EQ.SPIDER)SPK=71
      GOTO 2011
CC 95
9150      IF(OBJ.EQ.0.AND.LIQLOC(LOC).NE.WATER.AND.(LIQ(0).NE.WATER
     1.OR..NOT.HERE(BOTTLE)))GOTO 8000
      IF(OBJ.NE.0.AND.OBJ.NE.WATER)SPK=110
      IF(SPK.EQ.110)GOTO 2011
      IF(LIQLOC(LOC).EQ.WATER)LIMIT2=0
      IF(TOTING(CHALIC).AND.(LOC.EQ.38.OR.LOC.EQ.113))GOTO 9155
      IF(LIQ(0).NE.WATER.OR..NOT.HERE(BOTTLE))GOTO 2011
      PROP(BOTTLE)=1
      PLACE(WATER)=0
      IF(LIMIT2.GE.800)CALL RSPEAK(72)
      LIMIT2=0
      SPK=74
      GOTO 2011
9155      YEA=YES(255,258,256)
      IF(.NOT.YEA)CALL MOVE(CHALIC,0)
      IF(.NOT.YEA)GOTO 2000
      CALL DROP(CHALIC,LOC)
      PROP(CHALIC)=1
      FIXED(CHALIC)=-1
      GOTO 2000
CC 96
9160      IF(OBJ.NE.LAMP)SPK=76
      IF(HERE(SPOON).AND.OBJ.EQ.SPOON.AND.INSC1.EQ.0)SPK=224
      GOTO 2011
CC 97
9170      IF(TOTING(ROD2).AND.OBJ.EQ.ROD.AND..NOT.TOTING(ROD))OBJ=ROD2
      IF(.NOT.TOTING(OBJ))GOTO 2011
      IF(DARK(0))GOTO 9020
      IF(OBJ.GE.50.AND.OBJ.LE.MAXTRS.AND.AT(TROLL))GOTO 9178
      IF(OBJ.EQ.FOOD.AND.HERE(BEAR))GOTO 9177
      IF(LOC.EQ.198)GOTO 9173
      IF(OBJ.NE.AXE)GOTO 9020
      DO 9171 I=1,5
CC 98
      IF(DLOC(I).EQ.LOC)GOTO 9172
9171      CONTINUE
      SPK=152
      IF(AT(DRAGON).AND.PROP(DRAGON).EQ.0)GOTO 9175
      SPK=158
      IF(AT(TROLL))GOTO 9175
      IF(HERE(BEAR).AND.PROP(BEAR).EQ.0)GOTO 9176
      IF(HERE(GIANT))GOTO 9179
      OBJ=0
      GOTO 9120
9173      IF(OBJ.EQ.VASE.OR.OBJ.EQ.CAGE.OR.OBJ.EQ.TUSK.OR.OBJ.EQ.
     1NUGGET.OR.OBJ.EQ.CHALIC.OR.OBJ.EQ.BIRD)GOTO 9020
      IF(OBJ.EQ.BOTTLE.OR.OBJ.EQ.OIL.OR.OBJ.EQ.WATER)GOTO 9020
      SPK=264
      CALL DROP(OBJ,180)
      IF(OBJ.EQ.FOOD)CALL MOVE(FOOD,163)
      THROWC=THROWC+RAN(3)+1
      IF(THROWC.LT.4.OR.PROP(80).NE.0)GO TO 2011
      CALL MOVE(ORB,180)
      PROP(80)=1
      SPK=265
      GOTO 2011
9172      SPK=48
CC 99
      IF(RAN(3).EQ.0)GOTO 9175
      DSEEN(I)=.FALSE.
      DLOC(I)=0
      SPK=47
      DKILL=DKILL+1
      IF(DKILL.EQ.1)SPK=149
9175      CALL RSPEAK(SPK)
      CALL DROP(AXE,LOC)
      K=NULL
      GOTO 8
CC100
9176      SPK=164
      CALL DROP(AXE,LOC)
      FIXED(AXE)=-1
      PROP(AXE)=1
      CALL JUGGLE(BEAR)
      GOTO 2011
CC101
9177      OBJ=BEAR
      GOTO 9210
9178      SPK=159
CC102
      CALL DROP(OBJ,0)
      CALL MOVE(TROLL,0)
      CALL MOVE(TROLL+100,0)
      CALL DROP(TROLL2,PLAC(TROLL))
      CALL DROP(TROLL2+100,FIXD(TROLL))
      CALL JUGGLE(CHASM)
      GOTO 2011
CC103
9179      CALL DROP(AXE,LOC)
      CALL RSPEAK(249)
      GOTO 99
CC104
8180      GAVEUP=YES(22,54,54)
8185      IF(GAVEUP)GOTO 20000
      GOTO 2012
CC105
9190      IF(AT(OBJ).OR.(LIQ(0).EQ.OBJ.AND.AT(BOTTLE))
     1.OR.K.EQ.LIQLOC(LOC))SPK=94
      DO 9192 I=1,5
9192      IF(DLOC(I).EQ.LOC.AND.DFLAG.GE.2.AND.OBJ.EQ.DWARF)SPK=94
      IF(CLOSED)SPK=138
      IF(TOTING(OBJ))SPK=24
      GOTO 2011
CC106
8200      SPK=98
      DO 8201 I=1,100
      IDONDX=I
      IF(IDONDX.EQ.BEAR.OR..NOT.TOTING(IDONDX))GOTO 8201
      IF(SPK.EQ.98)CALL RSPEAK(99)
      BLKLIN=.FALSE.
      CALL PSPEAK(IDONDX,-1)
      BLKLIN=.TRUE.
      SPK=0
8201      CONTINUE
      IF(TOTING(BEAR))SPK=141
      GOTO 2011
CC107
9210      IF(OBJ.NE.BIRD)GOTO 9212
      SPK=100
      GOTO 2011
9212      IF(OBJ.NE.SNAKE.AND.OBJ.NE.DRAGON.AND.OBJ.NE.TROLL
     1.AND.OBJ.NE.SPIDER)GOTO 9213
      SPK=102
      IF(OBJ.EQ.DRAGON.AND.PROP(DRAGON).NE.0)SPK=110
      IF(OBJ.EQ.TROLL)SPK=182
      IF((OBJ.NE.SNAKE.AND.OBJ.NE.SPIDER).OR.CLOSED
     1.OR..NOT.HERE(BIRD))GOTO 2011
      SPK=101
      IF(OBJ.EQ.SPIDER)SPK=212
      CALL DSTROY(BIRD)
      PROP(BIRD)=0
      IF(PROP(SNAKE).EQ.0)TALLY2=TALLY2+1
      GOTO 2011
9213      IF(OBJ.NE.DWARF)GOTO 9214
      IF(.NOT.HERE(FOOD))GOTO 2011
      SPK=103
      DFLAG=DFLAG+1
      GOTO 2011
9214      IF(OBJ.NE.BEAR)GOTO 9215
      IF(PROP(BEAR).EQ.0)SPK=102
      IF(PROP(BEAR).EQ.3)SPK=110
      IF(.NOT.HERE(FOOD))GOTO 2011
      CALL DSTROY(FOOD)
      PROP(BEAR)=1
      FIXED(AXE)=0
      PROP(AXE)=0
      SPK=168
      GOTO 2011
9215      IF(OBJ.NE.RAT.AND.OBJ*PROP(CHALIC).NE.CHALIC)GOTO 9216
      IF(.NOT.HERE(FOOD))GOTO 2011
      CALL MOVE(FOOD,163)
      PROP(47)=0
      SPK=240
      IF(OBJ.EQ.CHALIC)SPK=267
      GOTO 2011
9216      SPK=14
      GOTO 2011
CC108
9220      IF(OBJ.EQ.VASE)GOTO 9222
      IF(OBJ.EQ.CHALIC)SPK=227
      IF(OBJ.NE.0.AND.OBJ.NE.BOTTLE)GOTO 2011
      IF(OBJ.EQ.0.AND..NOT.HERE(BOTTLE))GOTO 8000
      SPK=107
      IF(LIQLOC(LOC).EQ.0)SPK=106
      IF(LIQ(0).NE.0)SPK=105
      IF(SPK.NE.107)GOTO 2011
      PROP(BOTTLE)=MOD(COND(LOC),4)/2*2
      K=LIQ(0)
      IF(TOTING(BOTTLE))PLACE(K)=-1
      IF(K.EQ.OIL)SPK=108
      GOTO 2011
9222      SPK=29
      IF(LIQLOC(LOC).EQ.0)SPK=144
      IF(LIQLOC(LOC).EQ.0.OR..NOT.TOTING(VASE))GOTO 2011
      CALL RSPEAK(145)
      PROP(VASE)=2
      FIXED(VASE)=-1
      GOTO 9024
CC109
9230      IF(PROP(ROD2).LT.0.OR..NOT.CLOSED)GOTO 2011
      BONUS=133
      IF(LOC.EQ.115)BONUS=134
      IF(HERE(ROD2))BONUS=135
      CALL RSPEAK(BONUS)
      GOTO 20000
CC110
8240      SCORNG=.TRUE.
      GOTO 20000
8241      SCORNG=.FALSE.
      WRITE(IOPDEV,8243)SCORE,MXSCOR
8243      FORMAT(/41H IF YOU WERE TO QUIT NOW, YOU WOULD SCORE,I4
     1,18H OUT OF A POSSIBLE,I4,2H .)
      GAVEUP=YES(143,54,54)
      GOTO 8185
CC111
8250      K=VOCAB(WD1,3)
      SPK=42
      IF(FOOBAR.EQ.1-K)GOTO 8252
      IF(FOOBAR.NE.0)SPK=151
      GOTO 2011
8252      FOOBAR=K
      IF(K.NE.4)GOTO 2009
      FOOBAR=0
      IF(PLACE(EGGS).EQ.PLAC(EGGS)
     1.OR.(TOTING(EGGS).AND.LOC.EQ.PLAC(EGGS)))GOTO 2011
CC112
      IF(PLACE(EGGS).EQ.0.AND.PLACE(TROLL).EQ.0.AND.PROP(TROLL).EQ.0)
     1PROP(TROLL)=1
      K=2
      IF(HERE(EGGS))K=1
      IF(LOC.EQ.PLAC(EGGS))K=0
      CALL MOVE(EGGS,PLAC(EGGS))
      CALL PSPEAK(EGGS,K)
      GOTO 2012
CC113
8260      SPK=156
      ABBNUM=10000
      DETAIL=3
      GOTO 2011
CC114
8270      IF(HERE(MAGZIN))OBJ=MAGZIN
      IF(HERE(TABLET))OBJ=OBJ*100+TABLET
      IF(HERE(MESSAG))OBJ=OBJ*100+MESSAG
      IF(HERE(DCMNTS))OBJ=DCMNTS
      IF(CLOSED.AND.TOTING(OYSTER))OBJ=OYSTER
      IF(OBJ.GT.100.OR.OBJ.EQ.0.OR.DARK(0))GOTO 8000
9270      IF(DARK(0))GOTO 5190
      IF(OBJ.EQ.MAGZIN)SPK=190
      IF(OBJ.EQ.TABLET)SPK=196
      IF(OBJ.EQ.MESSAG)SPK=191
      IF(OBJ.EQ.SPOON)SPK=225
      IF(OBJ.EQ.SPOON)INSC1=1
      IF(OBJ.EQ.DCMNTS)SPK=251
      IF(OBJ.EQ.OYSTER.AND.HINTED(2).AND.TOTING(OYSTER))SPK=194
      IF(OBJ.NE.OYSTER.OR.HINTED(2).OR..NOT.TOTING(OYSTER)
     1.OR..NOT.CLOSED)GOTO 2011
      HINTED(2)=YES(192,193,54)
      GOTO 2012
CC115
9280      IF(OBJ.EQ.MIRROR)SPK=148
      IF(OBJ.EQ.VASE.AND.PROP(VASE).EQ.0)GOTO 9282
      IF(OBJ.NE.MIRROR.OR..NOT.CLOSED)GOTO 2011
      CALL RSPEAK(197)
      GOTO 19000
9282      SPK=198
      IF(TOTING(VASE))CALL DROP(VASE,LOC)
      PROP(VASE)=2
      FIXED(VASE)=-1
      GOTO 2011
CC116
9290      IF(OBJ.NE.DWARF.OR..NOT.CLOSED)GOTO 2011
      CALL RSPEAK(199)
      GOTO 19000
CC117
8300  WRITE(IOPDEV,8302)
8302  FORMAT(52H I CAN DUMP THIS ADVENTURE SO YOU CAN RESUME LATER.    )
      IF(.NOT.YES(200,54,54))GOTO 2012
      SETUP=-1
      WRITE(OPDUMP,8303)COND,ATLOC,PLACE,FIXED,LINK,PROP,ACTSPK,CVAL,
     1DLOC,ODLOC,DOBJ,ORC,TALLY,TURNS,IWEST,LIMIT2,KNFLOC,DETAIL,NUMDIE,
     2HOLDNG,DKILL,FOOBAR,BONUS,CLOCK1,CLOCK2,TIDE,INSC1,DUNG0,THROWC,
     3LOC,OLDLOC,OLDLC2,DFLAG,ORCT,ORCT1,LIMIT,TALLY2
8303  FORMAT(18I4)
      WRITE(OPDUMP,8304)DSEEN,LMWARN,CLOSNG,PANIC,CLOSED,GAVEUP,SCORNG,
     1HINTED,WIZENT
8304  FORMAT(60L1)
      CALL MOVE(LAMP,0)
      GOTO 20000
8305      YEA=.FALSE.
      SETUP=3
      K=NULL
      WRITE(IOPDEV,8306)
8306  FORMAT(25H INPUT OF DUMPED VALUES.            )
      READ(IPDUMP,8303)COND,ATLOC,PLACE,FIXED,LINK,PROP,ACTSPK,CVAL,
     1DLOC,ODLOC,DOBJ,ORC,TALLY,TURNS,IWEST,LIMIT2,KNFLOC,DETAIL,NUMDIE,
     2HOLDNG,DKILL,FOOBAR,BONUS,CLOCK1,CLOCK2,TIDE,INSC1,DUNG0,THROWC,
     3LOC,OLDLOC,OLDLC2,DFLAG,ORCT,ORCT1,LIMIT,TALLY2
      READ(IPDUMP,8304)DSEEN,LMWARN,CLOSNG,PANIC,CLOSED,GAVEUP,SCORNG,
     1HINTED,WIZENT
C      REWIND IPDUMP
      GOTO 8
CC118
8310  WRITE(IOPDEV,8311)
8311  FORMAT(32H THE CAVE IS OPEN AT ALL HOURS             )
      GOTO 2012
CC119
8320      IF(CLOSED)GO TO 8324
      SPK=42
      IF((LOC.GE.176.AND.LOC.LE.187).OR.LOC.EQ.145.OR.(LOC.GE.154
     1.AND.LOC.LE.166))GOTO 2011
      IF(IABS(LOC-PLACE(OWL))/25.GT.RAN(5))GOTO 8321
      IF(DARK(0))GOTO 8322
      IF(MOD(COND(LOC),2).NE.0)GOTO 8321
      SPK=202
      GOTO 7402
8321      SPK=203
      GOTO 7404
8322      IF(HERE(SPIDER))GOTO 8323
      SPK=203
      IF((AT(DRAGON).AND.PROP(DRAGON).EQ.0).OR.HERE(SNAKE).OR.
     1HERE(BEAR).OR.(AT(TROLL).AND.PROP(TROLL).LT.2)
     2.OR.LOC.EQ.114)GOTO 7402
      SPK=204
      IF(HERE(OWL))SPK=207
      CALL MOVE(OWL,LOC)
8326      DO 8325 I=1,5
      IF(DLOC(I).NE.LOC)GOTO 8325
      SPK=205
      DLOC(I)=0
      ODLOC(I)=0
8325      CONTINUE
      GOTO 7404
8323      SPK=205
      CALL DSTROY(SPIDER)
      CALL MOVE(DCMNTS,LOC)
      CALL MOVE(OWL,LOC)
      CALL JUGGLE(WEB)
      GOTO 8326
8324      CALL RSPEAK(210)
      GO TO 19000
CC120
9330      IF(OBJ.EQ.HORN)GOTO 9331
      SPK=110
      GOTO 2011
9331      IF(LOC.GE.15)GOTO 9333
      SPK=237
      GOTO 2011
9333      CALL RSPEAK(232)
      IF(BITSET(LOC,3))GOTO 2012
      IF(HERE(OWL).OR.FORCED(LOC))GOTO 2012
      SPK=236
      IM=3+RAN(3)
      DO 9332 I=1,IM
      DLOC(I)=LOC
9332      ODLOC(I)=LOC
      GOTO7404
CC121
8340      SPK=234
      IF(.NOT.WIZENT)GOTO 2011
      CALL RSPEAK(235)
      READ(IOPDEV,8342)NEWLOC
8342      FORMAT(I3)
      GOTO 2
CC122
40000 IHINT=HINT-3
      GOTO (40400,40500,40600,40700,40800,40900),IHINT
CC123
40010      HINTLC(HINT)=0
      IF(.NOT.YES(HINTS(HINT,3),0,54))GOTO 2602
      WRITE(IOPDEV,40012)HINTS(HINT,2)
40012 FORMAT(/55H I AM PREPARED TO GIVE YOU A HINT, BUT IT WILL COST YOU
     1      ,I2,9H  POINTS.)
      HINTED(HINT)=YES(175,HINTS(HINT,4),54)
      IF(HINTED(HINT).AND.LIMIT.GT.30)LIMIT=LIMIT+30*HINTS(HINT,2)
40020      HINTLC(HINT)=0
40030      GOTO 2602
CC124
40400      IF(PROP(GRATE).EQ.0.AND..NOT.HERE(KEYS))GOTO 40010
      GOTO 40020
40500      IF(HERE(BIRD).AND.TOTING(ROD).AND.OBJ.EQ.BIRD)GOTO 40010
      GOTO 40030
40600      IF(HERE(SNAKE).AND..NOT.HERE(BIRD))GOTO 40010
      GOTO 40020
40700      IF(ATLOC(LOC).EQ.0.AND.ATLOC(OLDLOC).EQ.0
     1.AND.ATLOC(OLDLC2).EQ.0.AND.HOLDNG.GT.1)GOTO 40010
      GOTO 40020
40800      IF(PROP(EMRALD).NE.-1.AND.PROP(PYRAM).EQ.-1)GOTO 40010
      GOTO 40020
40900      GOTO 40010
CC125
9350      IF(OBJ.NE.CHALIC.OR.PROP(CHALIC).NE.1)GOTO 9352
      CALL RSPEAK(257)
      GOTO 20000
9352      SPK=110
      GOTO 2011
CC126
10000      PROP(GRATE)=0
      PROP(FISSUR)=0
      DO 10010 I=1,6
      DSEEN(I)=.FALSE.
10010      DLOC(I)=0
      CALL MOVE(TROLL,0)
      CALL MOVE(TROLL+100,0)
      CALL MOVE(TROLL2,PLAC(TROLL))
      CALL MOVE(TROLL2+100,FIXD(TROLL))
      CALL JUGGLE(CHASM)
      IF(PROP(BEAR).NE.3)CALL DSTROY(BEAR)
      PROP(CHAIN)=0
      FIXED(CHAIN)=0
      PROP(AXE)=0
      FIXED(AXE)=0
      CALL RSPEAK(129)
      CLOCK1=-1
      CLOSNG=.TRUE.
      GOTO 19999
CC127
11000      PROP(BOTTLE)=PUT(BOTTLE,115,1)
      PROP(PLANT)=PUT(PLANT,115,0)
      PROP(OYSTER)=PUT(OYSTER,115,0)
      PROP(LAMP)=PUT(LAMP,115,0)
      PROP(ROD)=PUT(ROD,115,0)
      PROP(DWARF)=PUT(DWARF,115,0)
      LOC=115
      OLDLOC=115
      NEWLOC=115
CC128
      FOO=PUT(GRATE,116,0)
      PROP(SNAKE)=PUT(SNAKE,116,1)
      PROP(BIRD)=PUT(BIRD,116,1)
      PROP(CAGE)=PUT(CAGE,116,0)
      PROP(ROD2)=PUT(ROD2,116,0)
      PROP(PILLOW)=PUT(PILLOW,116,0)
      PROP(MIRROR)=PUT(MIRROR,115,0)
      FIXED(MIRROR)=116
      DO 11010 I=1,100
      IDONDX=I
11010      IF(TOTING(IDONDX))CALL DSTROY(IDONDX)
      CALL RSPEAK(132)
      CLOSED=.TRUE.
      GOTO 2
CC129
12000      CALL RSPEAK(188)
      PROP(BATTER)=1
      IF(TOTING(BATTER))CALL DROP(BATTER,LOC)
      LIMIT=LIMIT+2500
      LMWARN=.FALSE.
      GOTO 19999
12200      IF(LMWARN.OR..NOT.HERE(LAMP))GOTO 19999
      LMWARN=.TRUE.
      SPK=187
      IF(PLACE(BATTER).EQ.0)SPK=183
      IF(PROP(BATTER).EQ.1)SPK=189
      CALL RSPEAK(SPK)
      GOTO 19999
12400      LIMIT=-1
      PROP(LAMP)=0
      IF(HERE(LAMP))CALL RSPEAK(184)
      GOTO 19999
12600      CALL RSPEAK(185)
      GAVEUP=.TRUE.
      GOTO 20000
CC130
13000      GOTO 20000
CC131
19000      CALL RSPEAK(136)
CC132
20000      SCORE=0
      MXSCOR=0
CC133
      DO 20010 I=50,MAXTRS
      IF(PTEXT(I).EQ.0)GOTO 20010
      K=12
      IF(I.EQ.CHEST)K=14
      IF(I.GT.CHEST)K=16
      IF(PROP(I).GE.0)SCORE=SCORE+2
      IF(PLACE(I).EQ.3.AND.PROP(I).EQ.0)SCORE=SCORE+K-2
      MXSCOR=MXSCOR+K
20010      CONTINUE
CC134
      SCORE=SCORE+(MAXDIE-NUMDIE)*10
      MXSCOR=MXSCOR+MAXDIE*10
      IF(.NOT.(SCORNG.OR.GAVEUP))SCORE=SCORE+4
      MXSCOR=MXSCOR+4
      IF(DFLAG.NE.0)SCORE=SCORE+25
      MXSCOR=MXSCOR+25
      IF(CLOSNG)SCORE=SCORE+25
      MXSCOR=MXSCOR+25
      IF(.NOT.CLOSED)GOTO 20020
      IF(BONUS.EQ.0)SCORE=SCORE+10
      IF(BONUS.EQ.135)SCORE=SCORE+25
      IF(BONUS.EQ.134)SCORE=SCORE+30
      IF(BONUS.EQ.133)SCORE=SCORE+45
20020      MXSCOR=MXSCOR+45
CC135
      IF(PLACE(MAGZIN).EQ.108)SCORE=SCORE+1
      MXSCOR=MXSCOR+1
CC136
      SCORE=SCORE+2
      MXSCOR=MXSCOR+2
CC137
      DO 20030 I=1,HNTMAX
20030      IF(HINTED(I))SCORE=SCORE-HINTS(I,2)
CC138
      IF(SCORNG)GOTO 8241
CC139
      WRITE(IOPDEV,20100)SCORE,MXSCOR,TURNS
20100      FORMAT(///12H  YOU SCORED,I4,19H  OUT OF A POSSIBLE,I4,
     18H , USING,I5,8H  TURNS.)
      DO 20200 I=1,CLSSES
      IF(CVAL(I).GE.SCORE)GOTO 20210
20200      CONTINUE
      WRITE(IOPDEV,20202)
20202      FORMAT(/30H  YOU JUST WENT OFF MY SCALE!!/)
      GOTO 25000
20210      CALL SPEAK(CTEXT(I))
      IF(I.EQ.CLSSES-1)GOTO 20220
      K=CVAL(I)+1-SCORE
      WRITE(IOPDEV,20212)K
20212      FORMAT(/44H TO ACHIEVE THE NEXT HIGHER RATING, YOU NEED,I3,
     113H  MORE POINTS  /)
      GOTO 25000
20220      WRITE(IOPDEV,20222)
20222      FORMAT(/35H TO ACHIEVE THE NEXT HIGHER RATING ,
     123H WOULD BE A NEAT TRICK!//19H  CONGRATULATIONS!!/)
25000      STOP
      END
      SUBROUTINE SPEAK(N)
      INTEGER LINES(32760)
      LOGICAL BLKLIN
      COMMON /TXTCOM/ RTEXT,LINES
      COMMON /BLKCOM/ BLKLIN
      INTEGER RTEXT(300)
      DATA LLL/2H>$/
      IOPDEV=IODATA(2)
      IF(N.EQ.0)RETURN
      IF(LINES(N+1)/2.EQ.LLL/2)RETURN
      IF(BLKLIN)WRITE(IOPDEV,2)
      K=N
1      L=IABS(LINES(K))-1
      K=K+1
      WRITE(IOPDEV,2)(LINES(I),I=K,L)
2      FORMAT(2H  ,36A2)
      K=L+1
      IF(LINES(K).GE.0)GOTO 1
      RETURN
      END
      SUBROUTINE PSPEAK(MSG,SKIP)
      INTEGER LINES(32760)
      COMMON /TXTCOM/ RTEXT,LINES
      COMMON /PTXCOM/ PTEXT
      INTEGER RTEXT(300),PTEXT(100),SKIP
      M=PTEXT(MSG)
      IF(SKIP.LT.0)GOTO 9
      ISKIP=SKIP+1
      DO 3 I=1,ISKIP
1      M=IABS(LINES(M))
      IF(LINES(M).GE.0)GOTO 1
3      CONTINUE
9      CALL SPEAK(M)
      RETURN
      END
      SUBROUTINE RSPEAK(I)
      COMMON /TXTCOM/ RTEXT,LINES
      INTEGER LINES(32760)
      INTEGER RTEXT(300)
      IF(I.NE.0)CALL SPEAK(RTEXT(I))
      RETURN
      END
      SUBROUTINE GETIN(WORD1,WORD1X,WORD2,WORD2X)
      LOGICAL BLKLIN
      COMMON/BLKCOM/BLKLIN
      INTEGER WORDS(24),WORD1(10),WORD2(10),WORD1X,WORD2X,H
      DATA IBL/1H /
      IOPDEV=IODATA(2)
      IF(BLKLIN)WRITE(IOPDEV,12)
12    FORMAT()
      DO 11 I=1,24
11    WORDS(I)=IBL
      WORD2X=0
      DO 1 I=1,10
      WORD1(I)=IBL
1     WORD2(I)=IBL
2     READ(IOPDEV,20)WORDS
20    FORMAT(30A1)
      DO 3 H=1,14
      IF(WORDS(H)/2.NE.IBL/2)GOTO 4
3     CONTINUE
      GOTO 2
4     IH=H+9
      DO 5 I=H,IH
      IF(WORDS(I)/2.EQ.IBL/2)GOTO 6
      II=I-H+1
      WORD1(II)=WORDS(I)
5      WORD1X=I-H+1
6      DO 7 J=I,24
      IF(WORDS(J)/2.EQ.IBL/2.AND.WORD2X.NE.0)GOTO 8
      IF(WORDS(J)/2.EQ.IBL/2)GOTO 7
       WORD2X=WORD2X+1
       WORD2(WORD2X)=WORDS(J)
7     CONTINUE
8     CONTINUE
       RETURN
      END
      LOGICAL FUNCTION YES(X,Y,Z)
      INTEGER X,Y,Z
      EXTERNAL RSPEAK
      LOGICAL YESX
      YES=YESX(X,Y,Z,RSPEAK)
      RETURN
      END
      LOGICAL FUNCTION YESX(X,Y,Z,SPEK)
      INTEGER X,Y,Z,REPLY
      DATA LLY/1HY/,LLN/1HN/
1      IF(X.NE.0)CALL SPEK(X)
      IOPDEV=IODATA(2)
      READ(IOPDEV,8)REPLY
  8   FORMAT(A1)
      IF(REPLY/2.EQ.LLY/2)GOTO 10
      IF(REPLY/2.EQ.LLN/2)GOTO 20
      WRITE(IOPDEV,9)
9      FORMAT(/29H  PLEASE ANSWER THE QUESTION.)
      GOTO 1
10      YESX=.TRUE.
      IF(Y.NE.0)CALL SPEK(Y)
      RETURN
20      YESX=.FALSE.
      IF(Z.NE.0)CALL SPEK(Z)
      RETURN
      END
      INTEGER FUNCTION VOCAB(ID,INIT)
      COMMON /VOCCOM/ KTAB,ATAB,TABSIZ
      INTEGER KTAB(400),ATAB(400,7),ID(10),TABSIZ
      DO 1 I=1,TABSIZ
      IF(KTAB(I).EQ.-1)GOTO 2
      IF(INIT.GE.0.AND.KTAB(I)/1000.NE.INIT)GOTO 1
      DO 4 J=1,7
      IF(ATAB(I,J)/2.NE.ID(J)/2)GOTO 1
4     CONTINUE
      GOTO 3
1      CONTINUE
      CALL BUG(21)
2      VOCAB=-1
      IF(INIT.LT.0)RETURN
      CALL BUG(5)
3      VOCAB=KTAB(I)
      IF(INIT.GE.0)VOCAB=MOD(VOCAB,1000)
      RETURN
      END
      SUBROUTINE DSTROY(IOBJ)
      CALL MOVE(IOBJ,0)
      RETURN
      END
      SUBROUTINE JUGGLE(IOBJ)
      COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG
      INTEGER ATLOC(300),LINK(200),PLACE(100),FIXED(100),HOLDNG
      I=PLACE(IOBJ)
      J=FIXED(IOBJ)
      CALL MOVE(IOBJ,I)
      CALL MOVE(IOBJ+100,J)
      RETURN
      END
      SUBROUTINE MOVE(IOBJ,WHERE)
      COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG
      INTEGER ATLOC(300),LINK(200),PLACE(100),FIXED(100),WHERE,FROM
     1,HOLDNG
      IF(IOBJ.GT.100)GOTO 1
      FROM=PLACE(IOBJ)
      GOTO 2
1      FROM=FIXED(IOBJ-100)
2      IF(FROM.GT.0.AND.FROM.LE.300)CALL CARRY(IOBJ,FROM)
      CALL DROP(IOBJ,WHERE)
      RETURN
      END
      INTEGER FUNCTION PUT(IOBJ,WHERE,PVAL)
      INTEGER WHERE,PVAL
      CALL MOVE(IOBJ,WHERE)
      PUT=(-1)-PVAL
      RETURN
      END
      SUBROUTINE CARRY(IOBJ,WHERE)
      COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG
      INTEGER ATLOC(300),LINK(200),PLACE(100),FIXED(100),WHERE,HOLDNG
      IF(IOBJ.GT.100)GOTO 5
      IF(PLACE(IOBJ).EQ.-1)RETURN
      PLACE(IOBJ)=-1
      HOLDNG=HOLDNG+1
5      IF(ATLOC(WHERE).NE.IOBJ)GOTO 6
      ATLOC(WHERE)=LINK(IOBJ)
      RETURN
6      IT=ATLOC(WHERE)
7      IF(LINK(IT).EQ.IOBJ)GOTO 8
      IT=LINK(IT)
      GOTO 7
8      LINK(IT)=LINK(IOBJ)
      RETURN
      END
      SUBROUTINE DROP(IOBJ,WHERE)
      COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG
      INTEGER ATLOC(300),LINK(200),PLACE(100),FIXED(100),WHERE,HOLDNG
      IF(IOBJ.GT.100)GOTO 1
      IF(PLACE(IOBJ).EQ.-1)HOLDNG=HOLDNG-1
      PLACE(IOBJ)=WHERE
      GOTO 2
1      FIXED(IOBJ-100)=WHERE
2      IF(WHERE.LE.0)RETURN
      LINK(IOBJ)=ATLOC(WHERE)
      ATLOC(WHERE)=IOBJ
      RETURN
      END
      INTEGER FUNCTION DISTNT(FROM,NO)
      COMMON/TRVCOM/TK,TRAVEL,KEY,COND
      INTEGER TK(20),KEY(200),TRAVEL(1000,3),COND(200),FROM,RAN
1      DISTNT=FROM
      DO 4 I=1,NO
      K=KEY(DISTNT)
      J=0
2      N=TRAVEL(K,2)
      IF(J.LE.0)GOTO 10
      IF(N.EQ.TK(J))GOTO 3
10    IF(N.GT.300.OR.N.LE.9
     1    .OR.(N.GE.176.AND.N.LE.187)
     1    .OR.COND(N).EQ.2.OR.N.EQ.FROM.OR.J.GE.20)GO TO 3
      J=J+1
      TK(J)=N
3      K=K+1
      IF(TRAVEL(K-1,3).GE.0)GO TO 2
      IF(J.EQ.0)GO TO 1
      JJ=1+RAN(J)
      DISTNT=TK(JJ)
4      CONTINUE
      RETURN
      END
      SUBROUTINE DTOT
      COMMON/PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG
      COMMON/DTOCOM/ DOBJ,DLOC,PLAC,FIXD,PROP,LOC,MAXTRS
      INTEGER ATLOC(300),LINK(200),PLACE(100),FIXED(100),HOLDNG
      INTEGER DOBJ(5),DLOC(6),PLAC(100),FIXD(100),PROP(100)
      DO 40 I=1,3
      K=DOBJ(I)
      L=DLOC(I)
      IF(K.EQ.0)GOTO 20
      IF(PLAC(K).NE.L)GOTO 10
      CALL MOVE(K,L)
      DOBJ(I)=0
10      CONTINUE
      IF(L.NE.0)GOTO 20
      IF(PLACE(K).EQ.188)CALL MOVE(K,LOC)
      IDOBJ=DOBJ(I)
      CALL PSPEAK(IDOBJ,PROP(IDOBJ))
      DOBJ(I)=0
20      IF(L.EQ.0)GOTO 40
      KH=ATLOC(L)
      KN=K
      IF(KH.EQ.0)GOTO 40
30      IF(KH.GE.100)GOTO 32
      IF(PLAC(KH).EQ.L.OR.FIXD(KH).NE.0)GOTO 32
      IF((KH.GE.4.AND.KH.LE.15).OR.KH.EQ.18.OR.KH.EQ.20)GOTO 32
      IF(KH.EQ.21.OR.KH.EQ.22.OR.KH.EQ.28.OR.KH.EQ.34)GOTO 32
      IF(KH.EQ.35.OR.KH.EQ.41)GOTO 32
      IF(KH.GT.KN)KN=KH
32      KH=LINK(KH)
      IF(KH.NE.0)GOTO 30
      IF(KN.EQ.K)GOTO 40
      DOBJ(I)=KN
      CALL MOVE(KN,188)
      IF(K.GT.0)CALL MOVE(K,L)
40      CONTINUE
      RETURN
      END
      INTEGER FUNCTION RAN(IR)
      COMMON/DTOCOM/DOBJ,DLOC,PLAC,FIXD,PROP,LOC,MAXTRS
      COMMON/TURN/TURNS,IRAN
      INTEGER DOBJ(5),DLOC(6),PLAC(100),FIXD(100),PROP(100),TURNS,R
      DATA R/0/
      R=LOC+137*MOD(TURNS,7)+IRAN
      DO 100 I=1,5
100   R=R+DOBJ(I)+DLOC(I)*7
      DO 200 I=1,7
200   R=R+PLAC(I)+PROP(I)
      IRAN=MOD(R,173)
      RAN=MOD(R,IR)
      RETURN
      END
      SUBROUTINE BUG(NUM)
      IOPDEV=IODATA(2)
      WRITE(IOPDEV,1)NUM
1      FORMAT (50H  FATAL ERROR, SEE SOURCE CODE FOR INTERPRETATION./
     1      45H  PROBABLE CAUSE: ERRONEOUS INFO IN DATABASE./
     2      14H  ERROR CODE =,I2/)
      STOP
      END
      SUBROUTINE ORCALL(ORC)
      COMMON/DTOCOM/ DOBJ,DLOC,PLAC,FIXD,PROP,LOC,MAXTRS
      INTEGER DOBJ(5),DLOC(6),PLAC(100),FIXD(100),PROP(100),ORC(5),SPK
      IF(PROP(12).NE.0.OR.ORC(1).EQ.1)GOTO 200
      SPK=229
      ORC(1)=1
      GOTO 900
200      IF(PROP(67).NE.-1.OR.ORC(2).GE.1)GOTO 300
      SPK=239
      ORC(2)=1
      GOTO 900
300      IF(PROP(9).NE.1.OR.ORC(3).GE.1)GOTO 900
      SPK=268
      ORC(3)=1
900      CALL RSPEAK(SPK)
      RETURN
      END
C
      INTEGER FUNCTION IODATA(N)
      INTEGER OPDUMP
C IPDATA, UNIT NUMBER OF INPUT DEVICE FOR DATA BASE.
       IPDATA=24
C IOPDEV, UNIT NUMBER OF DEVICE (EG TTY) AT WHICH GAME IS TO BE PLAYED.
      IOPDEV=5
C IPDUMP, INPUT DEVICE FOR PREVIOUSLY DUMPED POSITION.
      IPDUMP=22
C OPDUMP, OUTPUT DEVICE FOR DUMP OF CURRENT POSITION.
      OPDUMP=22
C DUMP FACILITIES WRITTEN TO SAVE YOUR POSITION ON PAPER TAPE.
C TO USE DISK MAY NEED TO MOD PROG AT CC117-CC118 TO SUIT SYSTEM.
      IF(N.EQ.1)IODATA=IPDATA
      IF(N.EQ.2)IODATA=IOPDEV
      IF(N.EQ.3)IODATA=IPDUMP
      IF(N.EQ.4)IODATA=OPDUMP
      RETURN
      END
