[comp.sources.games] v02i034: dungeon - game of adventure, Part01/14

games-request@tekred.UUCP (09/01/87)

Submitted by: Bill Randle <games-request@tekred.TEK.COM>
Comp.sources.games: Volume 2, Issue 34
Archive-name: dungeon/Part01

	[Well, sports fans, here it is at last: the f77 source for
	 dungeon (a.k.a. zork) for Unix machines.  There are no
	 SysV/BSD dependencies that I'm aware of.  You are on your
	 own as far as porting to other OS's, but it shouldn't be
	 too hard if you have a f77 compiler and a large address
	 space.  With some work it will run on a pdp-11 (see doc
	 and readme files).
	 I will accept requests for copies if you are missing just
	 a few pieces.  If you are missing several parts *please*
	 try a neighboring machine, a direct uucp archive site or
	 ftp archive site first.  I will be happy to send you a
	 list of archive sites if you don't have one.	-br]

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 7)."
# Contents:  README MANIFEST demons.F np1.F rindex.h
# Wrapped by billr@tekred on Tue Apr 21 10:24:23 1987
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f README -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(4053 characters\)
sed "s/^X//" >README <<'END_OF_README'
XThis is a source file distribution for the game dungeon as implemented
Xin f77 for Unix(R) systems.  It is based on the game dungeon as
Xdistributed on a DECUS tape, circa 1980.  It has been converted from
Xthe original DEC FORTRAN into something that is palatable to Unix f77.
XSee the file "History" for some revision history and credit to those
Xwhose efforts have made this possible.
X
XCheckout the Makefile and adjust it to fit your system.  The only
Xthings that should really need tweaking are the directory definitions
Xand the "-D" defines.  There is an example for both large address
Xmachines (e.g. Vax) that get the complete game and small address
Xmachines (e.g. Pdp-11) that get a modified game with minor functionality
Xmissing (to get it to fit).  Also edit the include file "files.h" if
Xnecessary.
X
XAll of the f77 files end in a '.F' extension to force f77 to invoke the
XC preprocessor for the #include files and #ifdefs.  Most of the #ifdefs
Xare for the PDP version (default non-pdp) and for debug (default off).
X
XExcept for DTEXT.DAT, all files in the distribution kit are ASCII.
XDTEXT.DAT is a binary file consisting of 76-byte fixed length records.
X
XThis has been compiled and tested on a PDP-11/44 Version 7, PDP-11/70
X2.9bsd Vax-11/785 4.3bsd and Sun-3 before the pdp and Vax sources were
Xmerged (see the file "History").  After the merge it was again tested on
Xthe Vax 11-785 4.3bsd.
X
XI/we consider my/our changes to be in the public domain.  The original
Xsource, however, is copyright.
X
X	John Gilmore, Nebula Consultants
X	hoptoad!gnu
X	11 December 1986
X
X	Bill Randle
X	Tektronix, Inc.
X	billr@tekred.TEK.COM
X	9 February 1987
X
XDungeon consists of the following files:
X
X	dmain.F			-program root
X	dgame.F			-main routine
X	dsub.F			-resident subroutines
X	dinit.F			-initialization routine
X	np.F			-parser, part 0
X	np1.F			-parser, part 1
X	np2.F			-parser, part 2
X	np3.F			-parser, part 3
X	gdt.F			-game debugging tool
X	verbs.F			-principal verbs
X	objcts.F		-principal objects
X	sverbs.F		-simple verbs
X	dverb1.F		-auxiliary verbs, part 1
X	dverb2.F		-auxiliary verbs, part 2
X	actors.F		-character processors
X	demons.F		-demon processors
X	clockr.F		-clock event processors
X	rooms.F			-room processors
X	nrooms.F		-new room processors
X	sobjs.F			-simple objects
X	nobjs.F			-new objects
X	ballop.F		-balloon processor
X	lightp.F		-light processors
X	villns.F		-villain processors
X	dso1.F			-overlaid subroutines, part 1
X	dso2.F			-overlaid subroutines, part 2
X	dso3.F			-overlaid subroutines, part 3
X	dso4.F			-overlaid subroutines, part 4
X	dso5.F			-overlaid subroutines, part 5
X	dso6.F			-overlaid subroutines, part 6
X	dso7.F			-overlaid subroutines, part 7
X	advers.h		-header file
X	clock.h			-header file
X	curxt.h			-header file
X	debug.h			-header file
X	exits.h			-header file
X	files.h			-header file for directory paths
X	flags.h			-header file
X	gamestate.h		-header file
X	io.h			-header file
X	objects.h		-header file
X	oflags.h		-header file
X	oindex.h		-header file
X	parser.h		-header file
X	puzzle.h		-header file
X	rflag.h			-header file
X	rindex.h		-header file
X	rooms.h			-header file
X	screen.h		-header file
X	state.h			-header file
X	verbs.h			-header file
X	villians.h		-header file
X	vocab.h			-header file
X	xpars.h			-header file
X	xsrch.h			-header file
X	cinit.c			-C routine to initialize game [pdp ver]
X	cio.c			-C routine for misc i/o [pdp version]
X	rtim.c			-C routines for system dependent functions
X	listen.c		-C co-process for reading keyboard [pdp]
X	cspeak.c		-C co-process for displaying messages [pdp]
X	speak.F			-lookup messages for speak process [pdp]
X	decode.c		-C routine to decode binary text file [debug]
X	dindx.dat		-initialization data base
X	dtext.dat		-main data base [binary file]
X	rtext.dat		-message index file [pdp version]
X	dungeon.sh		-shell script to invoke pdp version
X	dungeon.doc		-original documentation file
X	dungeon.6		-man page abstracted from dungeon.doc
X	Makefile		-Makefile for making pdp or vax versions
X	History			-Some revision history notes
X	PDP.doc			-Notes on the PDP-11/Unix conversion
X	README			-This file
END_OF_README
if test 4053 -ne `wc -c <README`; then
    echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f MANIFEST -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"MANIFEST\"
else
echo shar: Extracting \"MANIFEST\" \(2453 characters\)
sed "s/^X//" >MANIFEST <<'END_OF_MANIFEST'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X History                   6	
X MANIFEST                  1	This shipping list
X Makefile                  7	
X PDP.doc                   7	
X README                    1	
X README.pdp		   8
X actors.F                  6	
X advers.h                  7	
X ballop.F                  7	
X cinit.c                   7	
X cio.c                     7	
X clock.h                   4	
X clockr.F                  2	
X cspeak.c                  7	
X curxt.h                   7	
X debug.h                   7	
X decode.c                  7	
X demons.F                  1	
X dgame.F                   6	
X dinit.F                   5	
X dindx.dat		   8
X dmain.F                   6	
X dso1.F                    7	
X dso2.F                    5	
X dso3.F                    7	
X dso4.F                    7	
X dso5.F                    7	
X dso6.F                    7	
X dso7.F                    7	
X dsub.F                    5	
X dtext.aa		   9
X dtext.ab		  10
X dtext.ac		  11
X dtext.ad		  12
X dtext.ae		  13
X dtext.af		  14
X dungeon.6                 5	
X dungeon.doc               2	
X dungeon.sh                7	
X dverb1.F                  6	
X dverb2.F                  4	
X exits.h                   7	
X files.h                   7	
X flags.h                   7	
X gamestate.h               7	
X gdt.F                     4	
X io.h                      7	
X lex.c                     4	
X lightp.F                  7	
X listen.c                  7	
X maketxt.sh		  14
X mindex.h                  7	
X nobjs.F                   4	
X np.F                      6	
X np1.F                     1	
X np2.F                     6	
X np3.F                     5	
X nrooms.F                  6	
X objcts.F                  3	
X objects.h                 5	
X oflags.h                  6	
X oindex.h                  7	
X parser.h                  7	
X puzzle.h                  7	
X rflag.h                   7	
X rindex.h                  1	
X rooms.F                   3	
X rooms.h                   7	
X rtext.dat                 5	
X rtim.c                    7	
X screen.h                  7	
X sobjs.F                   3	
X speak.F                   6	
X state.h                   7	
X sverbs.F                  4	
X verbs.F                   2	
X verbs.h                   3	
X villians.h                7	
X villns.F                  3	
X vocab.h                   7	
X xpars.h                   7	
X xsrch.h                   7	
END_OF_MANIFEST
if test 2453 -ne `wc -c <MANIFEST`; then
    echo shar: \"MANIFEST\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f demons.F -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"demons.F\"
else
echo shar: Extracting \"demons.F\" \(9279 characters\)
sed "s/^X//" >demons.F <<'END_OF_demons.F'
XC FIGHTD- INTERMOVE FIGHT DEMON
XC
XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
XC WRITTEN BY R. M. SUPNIK
XC
XC DECLARATIONS
XC
X	SUBROUTINE FIGHTD
X	IMPLICIT INTEGER (A-Z)
X	LOGICAL PROB,OAPPLI
X#include "parser.h"
X#include "gamestate.h"
X#include "objects.h"
X#include "oflags.h"
X#include "oindex.h"
X#include "villians.h"
X#include "advers.h"
X#include "verbs.h"
X#include "flags.h"
XC
X	LOGICAL F
XC
XC FUNCTIONS AND DATA
XC
X	DATA ROUT/1/
XC FIGHTD, PAGE 2
XC
X	DO 2400 I=1,VLNT
XC						!LOOP THRU VILLAINS.
X	  VOPPS(I)=0
XC						!CLEAR OPPONENT SLOT.
X	  OBJ=VILLNS(I)
XC						!GET OBJECT NO.
X	  RA=OACTIO(OBJ)
XC						!GET HIS ACTION.
X	  IF(HERE.NE.OROOM(OBJ)) GO TO 2200
XC						!ADVENTURER STILL HERE?
X	  IF((OBJ.EQ.THIEF).AND.THFENF) GO TO 2400
XC						!THIEF ENGROSSED?
X	  IF(OCAPAC(OBJ).GE.0) GO TO 2050
XC						!YES, VILL AWAKE?
X	  IF((VPROB(I).EQ.0).OR..NOT.PROB(VPROB(I),VPROB(I)))
X&		GO TO 2025
X	  OCAPAC(OBJ)=IABS(OCAPAC(OBJ))
X	  VPROB(I)=0
X	  IF(RA.EQ.0) GO TO 2400
XC						!ANYTHING TO DO?
X	  PRSA=INXW
XC						!YES, WAKE HIM UP.
X	  F=OAPPLI(RA,0)
X	  GO TO 2400
XC						!NOTHING ELSE HAPPENS.
XC
X2025	  VPROB(I)=VPROB(I)+10
XC						!INCREASE WAKEUP PROB.
X	  GO TO 2400
XC						!NOTHING ELSE.
XC
X2050	  IF((and(OFLAG2(OBJ),FITEBT)).EQ.0) GO TO 2100
X	  VOPPS(I)=OBJ
XC						!FIGHTING, SET UP OPP.
X	  GO TO 2400
XC
X2100	  IF(RA.EQ.0) GO TO 2400
XC						!NOT FIGHTING,
X	  PRSA=FRSTQW
XC						!SET UP PROBABILITY
X	  IF(.NOT.OAPPLI(RA,0)) GO TO 2400
XC						!OF FIGHTING.
X	  OFLAG2(OBJ)=or(OFLAG2(OBJ),FITEBT)
X	  VOPPS(I)=OBJ
XC						!SET UP OPP.
X	  GO TO 2400
XC
X2200	  IF((and(OFLAG2(OBJ),FITEBT).EQ.0).OR.(RA.EQ.0))
X&		GO TO 2300
X	  PRSA=FIGHTW
XC						!HAVE A FIGHT.
X	  F=OAPPLI(RA,0)
X2300	  IF(OBJ.EQ.THIEF) THFENF=.FALSE.
XC						!TURN OFF ENGROSSED.
X	  AFLAG(PLAYER)=and(AFLAG(PLAYER), not(ASTAG))
X	  OFLAG2(OBJ)=and(OFLAG2(OBJ), not(STAGBT+FITEBT))
X	  IF((OCAPAC(OBJ).GE.0).OR.(RA.EQ.0))
X&		GO TO 2400
X	  PRSA=INXW
XC						!WAKE HIM UP.
X	  F=OAPPLI(RA,0)
X	  OCAPAC(OBJ)=IABS(OCAPAC(OBJ))
X2400	CONTINUE
XC FIGHTD, PAGE 3
XC
XC NOW DO ACTUAL COUNTERBLOWS.
XC
X	OUT=0
XC						!ASSUME HERO OK.
X2600	DO 2700 I=1,VLNT
XC						!LOOP THRU OPPS.
X	  J=VOPPS(I)
X	  IF(J.EQ.0) GO TO 2700
XC						!SLOT EMPTY?
X	  PRSCON=1
XC						!STOP CMD STREAM.
X	  RA=OACTIO(J)
X	  IF(RA.EQ.0) GO TO 2650
XC						!VILLAIN ACTION?
X	  PRSA=FIGHTW
XC						!SEE IF
X	  IF(OAPPLI(RA,0)) GO TO 2700
XC						!SPECIAL ACTION.
X2650	  RES=BLOW(PLAYER,J,VMELEE(I),.FALSE.,OUT)
XC						!STRIKE BLOW.
X	  IF(RES.LT.0) RETURN
XC						!IF HERO DEAD, EXIT.
X	  IF(RES.EQ.ROUT) OUT=2+RND(3)
XC						!IF HERO OUT, SET FLG.
X2700	CONTINUE
X	OUT=OUT-1
XC						!DECREMENT OUT COUNT.
X	IF(OUT.GT.0) GO TO 2600
XC						!IF STILL OUT, GO AGAIN.
X	RETURN
XC
X	END
XC BLOW- STRIKE BLOW
XC
XC DECLARATIONS
XC
X	INTEGER FUNCTION BLOW(H,V,RMK,HFLG,OUT)
X	IMPLICIT INTEGER (A-Z)
X	LOGICAL HFLG,OAPPLI,PROB
X	INTEGER DEF1R(3),DEF2R(4),DEF3R(5)
X	INTEGER RVECTR(66),RSTATE(45)
X#include "gamestate.h"
XC
XC PARSE VECTOR
XC
X	LOGICAL PRSWON
X#include "parser.h"
XC
XC MISCELLANEOUS VARIABLES
XC
X	COMMON /STAR/ MBASE,STRBIT
X#include "objects.h"
X#include "oflags.h"
XC
X#include "clock.h"
X
X#include "advers.h"
X#include "verbs.h"
XC
X	LOGICAL F
XC
XC FUNCTIONS AND DATA
XC
X	DATA RMISS/0/,ROUT/1/,RKILL/2/,RLIGHT/3/
X	DATA RSER/4/,RSTAG/5/,RLOSE/6/,RHES/7/,RSIT/8/
X	DATA DEF1R/1,2,3/
X	DATA DEF2R/13,23,24,25/
X	DATA DEF3R/35,36,46,47,57/
XC
X	DATA RVECTR/0,0,0,0,5,5,1,1,2,2,2,2,
X&		0,0,0,0,0,5,5,3,3,1,
X&		0,0,0,5,5,3,3,3,1,2,2,2,
X&		0,0,0,0,0,5,5,3,3,4,4,
X&		0,0,0,5,5,3,3,3,4,4,4,
X&		0,5,5,3,3,3,3,4,4,4/
X	DATA RSTATE/5000,3005,3008,4011,3015,3018,1021,0,0,
X&		5022,3027,3030,4033,3037,3040,1043,0,0,
X&		4044,2048,4050,4054,5058,4063,4067,3071,1074,
X&		4075,1079,4080,4084,4088,4092,4096,4100,1104,
X&		4105,2109,4111,4115,4119,4123,4127,3131,3134/
XC BLOW, PAGE 3
XC
X	RA=OACTIO(V)
XC						!GET VILLAIN ACTION,
X	DV=ODESC2(V)
XC						!DESCRIPTION.
X	BLOW=RMISS
XC						!ASSUME NO RESULT.
X#ifdef debug
X	PRINT 10,H,V,RMK,HFLG,OUT
X10	FORMAT(' BLOW 10-- ',3I7,L7,I7)
X#endif debug
X	IF(.NOT.HFLG) GO TO 1000
XC						!HERO STRIKING BLOW?
XC
XC HERO IS ATTACKER, VILLAIN IS DEFENDER.
XC
X	PBLOSE=10
XC						!BAD LK PROB.
X	OFLAG2(V)=or(OFLAG2(V),FITEBT)
X	IF(and(AFLAG(H),ASTAG).EQ.0) GO TO 100
X	CALL RSPEAK(591)
XC						!YES, CANT FIGHT.
X	AFLAG(H)=and(AFLAG(H), not(ASTAG))
X	RETURN
XC
X100	ATT=FIGHTS(H,.TRUE.)
XC						!GET HIS STRENGTH.
X	OA=ATT
X	DEF=VILSTR(V)
XC						!GET VILL STRENGTH.
X	OD=DEF
X	DWEAP=0
XC						!ASSUME NO WEAPON.
X	DO 200 I=1,OLNT
XC						!SEARCH VILLAIN.
X	  IF((OCAN(I).EQ.V).AND.(and(OFLAG2(I),WEAPBT).NE.0))
X&		DWEAP=I
X200	CONTINUE
X	IF(V.EQ.AOBJ(PLAYER)) GO TO 300
XC						!KILLING SELF?
X	IF(DEF.NE.0) GO TO 2000
XC						!DEFENDER ALIVE?
X	CALL RSPSUB(592,DV)
XC						!VILLAIN DEAD.
X	RETURN
XC
X300	CALL JIGSUP(593)
XC						!KILLING SELF.
X	RETURN
XC
XC VILLAIN IS ATTACKER, HERO IS DEFENDER.
XC
X1000	PBLOSE=50
XC						!BAD LK PROB.
X	AFLAG(H)=and(AFLAG(H),not(ASTAG))
X	IF(and(OFLAG2(V),STAGBT).EQ.0) GO TO 1200
X	OFLAG2(V)=and(OFLAG2(V), not(STAGBT))
X	CALL RSPSUB(594,DV)
XC						!DESCRIBE.
X	RETURN
XC
X1200	ATT=VILSTR(V)
XC						!SET UP ATT, DEF.
X	OA=ATT
X	DEF=FIGHTS(H,.TRUE.)
X	IF(DEF.LE.0) RETURN
XC						!DONT ALLOW DEAD DEF.
X	OD=FIGHTS(H,.FALSE.)
X	DWEAP=IABS(FWIM(0,WEAPBT,0,0,H,.TRUE.))
XC						!FIND A WEAPON.
XC BLOW, PAGE 4
XC
XC PARTIES ARE NOW EQUIPPED.  DEF CANNOT BE ZERO.
XC ATT MUST BE > 0.
XC
X2000	CONTINUE
X#ifdef debug
X	PRINT 2050,ATT,OA,DEF,OD,DWEAP
X2050	FORMAT(' BLOW 2050-- ',5I7)
X#endif debug
X	IF(DEF.GT.0) GO TO 2100
XC						!DEF ALIVE?
X	RES=RKILL
X	IF(HFLG) CALL RSPSUB(595,DV)
XC						!DEADER.
X	GO TO 3000
XC
X2100	IF(DEF-2) 2200,2300,2400
XC						!DEF <2,=2,>2
X2200	ATT=MIN0(ATT,3)
XC						!SCALE ATT.
X	TBL=DEF1R(ATT)
XC						!CHOOSE TABLE.
X	GO TO 2500
XC
X2300	ATT=MIN0(ATT,4)
XC						!SCALE ATT.
X	TBL=DEF2R(ATT)
XC						!CHOOSE TABLE.
X	GO TO 2500
XC
X2400	ATT=ATT-DEF
XC						!SCALE ATT.
X	ATT=MIN0(2,MAX0(-2,ATT))+3
X	TBL=DEF3R(ATT)
XC
X2500	RES=RVECTR(TBL+RND(10))
XC						!GET RESULT.
X	IF(OUT.EQ.0) GO TO 2600
XC						!WAS HE OUT?
X	IF(RES.EQ.RSTAG) GO TO 2550
XC						!YES, STAG--> HES.
X	RES=RSIT
XC						!OTHERWISE, SITTING.
X	GO TO 2600
X2550	RES=RHES
X2600	IF((RES.EQ.RSTAG).AND.(DWEAP.NE.0).AND.PROB(25,PBLOSE))
X&		RES=RLOSE
XC
X	MI=RSTATE(((RMK-1)*9)+RES+1)
XC						!CHOOSE TABLE ENTRY.
X	IF(MI.EQ.0) GO TO 3000
X	I=(MOD(MI,1000)+RND(MI/1000))+MBASE+1
X	J=DV
X	IF(.NOT.HFLG .AND.(DWEAP.NE.0)) J=ODESC2(DWEAP)
X#ifdef debug
X	PRINT 2650,RES,MI,I,J,MBASE
X2650	FORMAT(' BLOW 2650-- ',5I7)
X#endif debug
X	CALL RSPSUB(I,J)
XC						!PRESENT RESULT.
XC BLOW, PAGE 5
XC
XC NOW APPLY RESULT
XC
X3000	GO TO (4000,3100,3200,3300,3400,3500,3600,4000,3200),RES+1
XC
X3100	IF(HFLG) DEF=-DEF
XC						!UNCONSCIOUS.
X	GO TO 4000
XC
X3200	DEF=0
XC						!KILLED OR SITTING DUCK.
X	GO TO 4000
XC
X3300	DEF=MAX0(0,DEF-1)
XC						!LIGHT WOUND.
X	GO TO 4000
XC
X3400	DEF=MAX0(0,DEF-2)
XC						!SERIOUS WOUND.
X	GO TO 4000
XC
X3500	IF(HFLG) GO TO 3550
XC						!STAGGERED.
X	AFLAG(H)=or(AFLAG(H),ASTAG)
X	GO TO 4000
XC
X3550	OFLAG2(V)=or(OFLAG2(V),STAGBT)
X	GO TO 4000
XC
X3600	CALL NEWSTA(DWEAP,0,HERE,0,0)
XC						!LOSE WEAPON.
X	DWEAP=0
X	IF(HFLG) GO TO 4000
XC						!IF HERO, DONE.
X	DWEAP=IABS(FWIM(0,WEAPBT,0,0,H,.TRUE.))
XC						!GET NEW.
X	IF(DWEAP.NE.0) CALL RSPSUB(605,ODESC2(DWEAP))
XC BLOW, PAGE 6
XC
X4000	BLOW=RES
XC						!RETURN RESULT.
X	IF(.NOT.HFLG) GO TO 4500
XC						!HERO?
X	OCAPAC(V)=DEF
XC						!STORE NEW CAPACITY.
X	IF(DEF.NE.0) GO TO 4100
XC						!DEAD?
X	OFLAG2(V)=and(OFLAG2(V), not(FITEBT))
X	CALL RSPSUB(572,DV)
XC						!HE DIES.
X	CALL NEWSTA(V,0,0,0,0)
XC						!MAKE HIM DISAPPEAR.
X	IF(RA.EQ.0) RETURN
XC						!IF NX TO DO, EXIT.
X	PRSA=DEADXW
XC						!LET HIM KNOW.
X	F=OAPPLI(RA,0)
X	RETURN
XC
X4100	IF((RES.NE.ROUT).OR.(RA.EQ.0)) RETURN
X	PRSA=OUTXW
XC						!LET HIM BE OUT.
X	F=OAPPLI(RA,0)
X	RETURN
XC
X4500	ASTREN(H)=-10000
XC						!ASSUME DEAD.
X	IF(DEF.NE.0) ASTREN(H)=DEF-OD
X	IF(DEF.GE.OD) GO TO 4600
X	CTICK(CEVCUR)=30
X	CFLAG(CEVCUR)=.TRUE.
X4600	IF(FIGHTS(H,.TRUE.).GT.0) RETURN
X	ASTREN(H)=1-FIGHTS(H,.FALSE.)
XC						!HE'S DEAD.
X	CALL JIGSUP(596)
X	BLOW=-1
X	RETURN
XC
X	END
XC SWORDD- SWORD INTERMOVE DEMON
XC
XC DECLARATIONS
XC
X	SUBROUTINE SWORDD
X	IMPLICIT INTEGER(A-Z)
X	LOGICAL INFEST,FINDXT
X#include "gamestate.h"
X#include "curxt.h"
X#include "xsrch.h"
X#include "objects.h"
X#include "oindex.h"
X#include "villians.h"
X#include "advers.h"
XC SWORDD, PAGE 2
XC
X	IF(OADV(SWORD).NE.PLAYER) GO TO 500
XC						!HOLDING SWORD?
X	NG=2
XC						!ASSUME VILL CLOSE.
X	IF(INFEST(HERE)) GO TO 300
XC						!VILL HERE?
X	NG=1
X	DO 200 I=XMIN,XMAX,XMIN
XC						!NO, SEARCH ROOMS.
X	  IF(.NOT.FINDXT(I,HERE)) GO TO 200
XC						!ROOM THAT WAY?
X	  GO TO (50,200,50,50),XTYPE
XC						!SEE IF ROOM AT ALL.
X50	  IF(INFEST(XROOM1)) GO TO 300
XC						!CHECK ROOM.
X200	CONTINUE
X	NG=0
XC						!NO GLOW.
XC
X300	IF(NG.EQ.SWDSTA) RETURN
XC						!ANY STATE CHANGE?
X	CALL RSPEAK(NG+495)
XC						!YES, TELL NEW STATE.
X	SWDSTA=NG
X	RETURN
XC
X500	SWDACT=.FALSE.
XC						!DROPPED SWORD,
X	RETURN
XC						!DISABLE DEMON.
X	END
XC INFEST-	SUBROUTINE TO TEST FOR INFESTED ROOM
XC
XC DECLARATIONS
XC
X	LOGICAL FUNCTION INFEST(R)
X	IMPLICIT INTEGER(A-Z)
XC
XC ROOMS
X#include "rindex.h"
X#include "objects.h"
X#include "oindex.h"
X#include "villians.h"
X#include "flags.h"
XC
X	IF(.NOT.ENDGMF) INFEST=(OROOM(CYCLO).EQ.R).OR.
X&		(OROOM(TROLL).EQ.R).OR.
X&		((OROOM(THIEF).EQ.R).AND.THFACT)
X	IF(ENDGMF) INFEST=(R.EQ.MRG).OR.(R.EQ.MRGE).OR.
X&		(R.EQ.MRGW).OR.
X&		((R.EQ.INMIR).AND.(MLOC.EQ.MRG))
X	RETURN
X	END
END_OF_demons.F
if test 9279 -ne `wc -c <demons.F`; then
    echo shar: \"demons.F\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f np1.F -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"np1.F\"
else
echo shar: Extracting \"np1.F\" \(36982 characters\)
sed "s/^X//" >np1.F <<'END_OF_np1.F'
XC SPARSE-	START OF PARSE
XC
XC COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
XC ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
XC WRITTEN BY R. M. SUPNIK
XC
XC DECLARATIONS
XC
XC THIS ROUTINE DETAILS ON BIT 2 OF PRSFLG
XC
X	INTEGER  FUNCTION  SPARSE(LBUF,LLNT,VBFLAG)
X	IMPLICIT INTEGER(A-Z)
X	INTEGER  LBUF(40)
X	LOGICAL  LIT,OTEST,VBFLAG
X#include "parser.h"
X#include "gamestate.h"
X#include "debug.h"
X#include "objects.h"
X#include "oindex.h"
X#include "advers.h"
X#include "verbs.h"
X#include "vocab.h"
XC SPARSE, PAGE 2
XC
XC FUNCTIONS AND DATA
XC
X	OTEST(R)=(R.GT.0).AND.(R.LT.R50MIN)
XC
XC   THE FOLLOWING DATA STATEMENT ORIGINALLY WAS:
XC
XC	DATA R50MIN/1RA/,R50WAL/3RWAL/
XC
X	DATA R50MIN/1600/,R50WAL/36852/
XC
XC BUZZ WORDS--	IGNORED IN SYNTACTIC PROCESSING
XC
XC   THE FOLLOWING DATA STATEMENT WAS CONVERTED FROM:
XC
XC	DATA BVOC/3RAND,0,2RBY,0,2RIS,0,1RA,0,
XC&		2RAN,0,3RTHE,0,3RRUN,0,2RGO,0,3RPRO,3RCEE,0,0/
XC
X	DATA BVOC/2164,0,4200,0,15160,0,1600,0,
X&		2160,0,32325,0,29654,0,11800,0,26335,5005,0,0/
XC
XC
XC PREPOSITIONS--	MAPS PREPOSITIONS TO INDICES
XC
XC   THE FOLLOWING DATA STATEMENT WAS CONVERTED FROM:
XC
XC	DATA PVOC/3ROVE,1RR,1,3RWIT,1RH,2,3RUSI,2RNG,2,3RTHR,3ROUG,2,
XC&		2RAT,0,3,2RTO,0,4,2RIN,0,5,3RINS,3RIDE,5,3RINT,1RO,5,
XC&		3RDOW,1RN,6,2RUP,0,7,3RUND,2RER,8,2ROF,0,9,2RON,0,10,
XC&		3ROFF,0,11/
XC
X	DATA PVOC/24885,28800,1,37180,12800,2,34369,22680,2,
X&		32338,24847,2,2400,0,3,32600,0,4,14960,0,5,
X&		14979,14565,5,14980,0,5,7023,22400,6,34240,0,7,
X&		34164,8720,8,24240,0,9,24560,0,10,24246,0,11/
XC
XC
XC DIRECTIONS--	MAPS DIRECTIONS TO INDICES
XC
XC   THE FOLLOWING DATA STATEMENT WAS CONVERTED FROM:
XC
XC	DATA DVOC/1RN,0,"2000,3RNOR,2RTH,"2000,1RS,0,"12000,
XC&	 1RE,0,"6000,3REAS,1RT,"6000,1RW,0,"16000,3RWES,1RT,"16000,
XC&	 2RSE,0,"10000,2RSW,0,"14000,
XC&	 2RNE,0,"4000,2RNW,0,"20000,
XC&	 1RU,0,"22000,2RUP,0,"22000,1RD,0,"24000,3RDOW,1RN,"24000,
XC&	 3RLAU,3RNCH,"26000,3RLAN,1RD,"30000,3RENT,2RER,"32000,
XC&	 3REXI,1RT,"34000,3ROUT,0,"34000,3RLEA,2RVE,"34000,
XC&	 3RTRA,3RVEL,"36000,3RSOU,2RTH,"12000,
XC&	 2RIN,0,"32000,
XC&	 3RCRO,2RSS,"36000/
XC
X	DATA DVOC/22400,0,o"2000",23018,32320,o"2000",30400,0,o"12000",
X&		8000,0,o"6000",8059,32000,o"6000",36800,0,o"16000",
X&		37019,32000,o"16000",30600,0,o"10000",31320,0,o"14000",
X&		22600,0,o"4000",23320,0,o"20000",
X&		33600,0,o"22000",34240,0,o"22000",6400,0,o"24000",
X&		7023,22400,o"24000",19261,22528,o"26000",
X&		19254,6400,o"30000",8580,8720,o"32000",
X&		8969,32000,o"34000",24860,0,o"34000",
X&		19401,35400,o"34000",32721,35412,o"36000",
X&		31021,32320,o"12000",14960,0,o"32000",
X&		5535,31160,o"36000"/
XC
XC
XC SPARSE, PAGE 3
XC
XC ADJECTIVES--	MAPS ADJECTIVES TO OBJECT NUMBERS
XC
XC EACH ENTRY IS VARIABLE LENGTH AND CONSISTS OF A TWO WORD
XC ADJECTIVE IN RADIX-50 FOLLOWED BY ONE OR MORE OBJECT NUMBERS.
XC NOTE THAT ADJECTIVES CAN BE DISTINGUISHED FROM OBJECTS AS
XC FOLLOWS-- ALL ADJECTIVES ARE .GE. 1RA (1600), WHILE ALL OBJECTS
XC ARE .LE. OLNT (255 MAX).
XC
XC   THE DATA STATEMENT BELOW WAS CONVERTED FROM:
XC
XC	DATA AVOC1/3RBRO,2RWN,1,81,3RELO,3RNGA,1,3RHOT,0,3,3RPEP,3RPER,3,
XC&	 3RVIT,3RREO,4,3RJAD,1RE,6,3RHUG,1RE,8,3RENO,3RRMO,8,122,
XC&	 3RTRO,3RPHY,9,3RCLE,2RAR,10,3RLAR,2RGE,12,26,47,95,96,123,
XC&	 133,135,146,147,150,176,3RNAS,2RTY,13,3RELV,3RISH,14,
XC&	 3RBRA,2RSS,15,16,46,156,
XC&	 3RBRO,3RKEN,16,22,92,113,155,158,3RORI,3RENT,17,
XC&	 3RBLO,3RODY,20,3RRUS,2RTY,21,3RBUR,3RNED,22,
XC&	 3RDEA,1RD,22,3ROLD,0,25,41,44,45,3RLEA,3RTHE,25,
XC&	 3RPLA,3RTIN,26,3RPEA,2RRL,27,
XC&	 3RMOB,1RY,31,3RCRY,3RSTA,32,126,
XC&	 3RGOL,1RD,33,85,104,157,158,188,
XC&	 3RIVO,2RRY,34,3RSAP,3RPHI,37,3RWOO,3RDEN,38,67,136,137,
XC&	 165,173,174,175,3RWOO,1RD,38,67,136,137,165,173,174,175,
XC&	 3RSTE,2REL,39,125,189,
XC&	 3RDEN,3RTED,39,3RFAN,2RCY,40,3RANC,3RIEN,41,44,
XC&	 3RSMA,2RLL,5,46,52,53,89,102,103,153,187,
XC&	 3RBLA,2RCK,47,162,3RTOU,1RR,49,
XC&	 3RVIS,3RCOU,55,3RVIC,3RIOU,62,
XC&	 3RGLA,2RSS,10,126,132,3RTRA,1RP,66/
XC
XC
X	DATA AVOC1/3935,37360,1,81,8495,22681,1,13420,0,3,25816,25818,3,
X&	 35580,29015,4,16044,8000,6,13647,8000,8,8575,29335,8,122,
X&	 32735,25945,9,5285,2320,10,19258,11400,12,26,47,95,96,123,
X&	 133,135,146,147,150,176,22459,33000,13,8502,15168,14,
X&	 3921,31160,15,16,46,156,
X&	 3935,17814,16,22,92,113,155,158,24729,8580,17,
X&	 3695,24185,20,29659,33000,21,4058,22604,22,
X&	 6601,6400,22,24484,0,25,41,44,45,19401,32325,25,
X&	 26081,32374,26,25801,29280,27,
X&	 21402,40000,31,5545,31201,32,126,
X&	 11812,6400,33,85,104,157,158,188,
X&	 15295,29800,34,30456,25929,37,37415,6614,38,67,136,137,
X&	 165,173,174,175,37415,6400,38,67,136,137,165,173,174,175,
X&	 31205,8480,39,125,189,
X&	 6614,32204,39,9654,5800,40,2163,14614,41,44,
X&	 30921,19680,5,46,52,53,89,102,103,153,187,
X&	 3681,5240,47,162,32621,28800,49,
X&	 35579,5421,55,35563,15021,62,
X&	 11681,31160,10,126,132,32721,25600,66/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA AVOC2/3RFRO,2RNT,68,3RSTO,2RNE,69,150,214,3RMAN,3RGLE,72,
XC&	 3RRED,0,79,94,140,161,170,171,3RYEL,3RLOW,80,159,
XC&	 3RBLU,1RE,82,112,114,141,
XC&	 3RVAM,3RPIR,83,3RMAG,2RIC,90,
XC&	 3RSEA,3RWOR,90,3RTAN,0,91,3RSHA,2RRP,92,
XC&	 3RWIC,3RKER,98,3RCLO,2RTH,100,
XC&	 3RBRA,3RIDE,101,
XC&	 3RGAU,2RDY,108,3RSQU,3RARE,109,127,3RCLA,1RY,109,
XC&	 3RSHI,2RNY,110,3RTHI,1RN,110,
XC&	 3RGRE,2REN,115,143,3RPUR,3RPLE,116,3RWHI,2RTE,117,147,160,
XC&	 3RMAR,3RBLE,119,3RCOK,1RE,121,3REMP,2RTY,121,
XC&	 3RROU,2RND,128,3RTRI,3RANG,129,
XC&	2 3RRAR,1RE,134,3ROBL,3RONG,135,3REAT,3R$ME,138,
XC&	 3REAT,2RME,138,3RORA,3RNGE,139,3RECC,1RH,141/
XC
XC
X	DATA AVOC2/10335,23200,68,31215,22600,69,150,214,20854,11685,72,
X&		29004,0,79,94,140,161,170,171,40212,19823,80,159,
X&		3701,8000,82,112,114,141,
X&		35253,25978,83,20847,14520,90,
X&		30601,37418,90,32054,0,91,30721,29440,92,
X&		37163,17818,98,5295,32320,100,
X&		3921,14565,101,
X&		11261,7400,108,31101,2325,109,127,5281,4000,109,
X&		30729,23400,110,32329,22400,110,
X&		11925,8560,115,143,26458,26085,116,
X&		37129,32200,117,147,160,
X&		20858,3685,119,5411,8000,121,8536,33000,121,
X&		29421,22560,128,32729,2167,129,
X&		28858,8000,134,24092,24567,135,8060,43725,138,
X&		8060,21000,138,24721,22685,139,8123,12800,141/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA AVOC3/3RROC,2RKY,147,3RSHE,2RER,147,
XC&	 3R200,0,148,3RNEA,1RT,148,3RSHI,3RMME,151,
XC&	 3RZUR,3RICH,152,3RBIR,2RDS,153,154,155,
XC&	 3RENC,3RRUS,154,155,3RBEA,3RUTI,156,3RCLO,3RCKW,157,158,
XC&	 3RMEC,3RHAN,157,158,
XC&	 3RMAH,3ROGA,163,3RPIN,1RE,164,3RLON,1RG,166,
XC&	 3RCEN,3RTER,166,3RSHO,2RRT,167,1RT,0,168,
XC&	 3RCOM,3RPAS,169,211,3RBRO,3RNZE,172,3RCEL,1RL,174,175,
XC&	 3RLOC,3RKED,174,3RSUN,0,177,
XC&	 3RBAR,1RE,200,3RSON,1RG,203,
XC&	 3RNOR,2RTH,205,3RNOR,3RTHE,205,3RSOU,2RTH,206,
XC&	 3RSOU,3RTHE,206,3REAS,1RT,207,3REAS,3RTER,207,
XC&	 3RWES,1RT,208,3RWES,3RTER,208,3RDUN,3RGEO,215/
XC
XC
X	DATA AVOC3/29403,18600,147,30725,8720,147,
X&		52430,0,148,22601,32000,148,30729,21325,151,
X&		42458,14528,152,3578,7160,153,154,155,
X&		8563,29659,154,155,3401,34409,156,5295,5263,157,158,
X&		21003,12854,157,158,
X&		20848,24281,163,25974,8000,164,19814,11200,166,
X&		5014,32218,166,30735,29600,167,32000,0,168,
X&		5413,25659,169,211,3935,23445,172,5012,19200,174,175,
X&		19803,17804,174,31254,0,177,
X&		3258,8000,200,31014,11200,203,
X&		23018,32320,205,23018,32325,205,31021,32320,206,
X&		31021,32325,206,8059,32000,207,8059,32218,207,
X&		37019,32000,208,37019,32218,208,7254,11415,215/
XC
XC
XC
X	DATA AVOCND/-1/
XC SPARSE, PAGE 4
XC
XC VERBS--	MAPS VERBS TO SYNTAX SLOTS
XC
XC EACH ENTRY IS VARIABLE LENGTH AND CONSISTS OF ONE OR MORE
XC TWO WORD VERBS IN RADIX-50 FOLLOWED BY A SYNTAX WORD COUNT
XC FOLLOWED BY ONE OR MORE SYNTAXES.  NOTE THAT VERBS CAN BE
XC DISTINGUISHED FROM WORD COUNTS AS FOLLOWS--
XC ALL VERBS ARE .GE. 1RA (1600), WHILE ALL SYNTAX WORD COUNTS
XC ARE .LE. 255.
XC
XC SYNTAX ENTRIES CONSIST OF A FLAG WORD FOLLOWED BY 0, 1, OR 2
XC OBJECT DESCRIPTIONS.  THE FLAG WORD HAS THE FOLLOWING FORMAT--
XC
XC BIT <14>	IF 1, SYNTAX INCLUDES DIRECT OBJECT
XC BIT <13>	IF 1, SYNTAX INCLUDES INDIRECT OBJECT
XC BIT <12>	IF 1, DIRECT OBJECT IS IMPLICIT (STANDARD FORM)
XC BIT <11>	IF 1, DIRECT AND INDIRECT OBJECT MUST BE SWAPPED
XC			AFTER SYNTAX PROCESSING
XC BIT <10>	IF 1, THIS IS DEFAULT SYNTAX FOR ORPHANERY
XC BITS <8:0>	VERB NUMBER FOR VAPPLI
XC
XC OBJECT DESCRIPTIONS CONSIST OF A FLAG WORD AND TWO FWIM WORDS.
XC THE FLAG WORD HAS THE FOLLOWING FORMAT--
XC
XC BIT <14>	IF 1, SEARCH ADVENTURER FOR OBJECT
XC BIT <13>	IF 1, SEARCH ROOM FOR OBJECT
XC BIT <12>	IF 1, PARSER WILL TRY TO TAKE OBJECT
XC BIT <11>	IF 1, ADVENTURER MUST HAVE OBJECT
XC BIT <10>	IF 1, QUALIFYING BITS (NORMALLY -1,-1) ARE SAME
XC			AS FWIM BITS
XC BIT <9>	IF 1, OBJECT MUST BE REACHABLE
XC BITS <8:0>	PREPOSITION NUMBER FOR SYNMCH
XC
XC THE FWIM WORDS HAVE THE SAME FORMAT AS THE TWO OBJECT FLAG WORDS.
XC
XC NOTE THAT BITS 12 AND 11 OF OBJECT DESCRIPTIONS ACTUALLY HAVE
XC FOUR DISTINCT STATES--
XC
XC	BIT 12	BIT 11	MDLDESC		INTERPRETATION
XC	------	------	-------		---------------
XC
XC	  0	  0	 --		NO PARSER ACTION
XC	  0	  1	 HAVE		ADVENTURER MUST HAVE OBJECT
XC	  1	  0	 TRY		TRY TO TAKE, DONT CARE IF FAIL
XC	  1	  1	 TAKE		TRY TO TAKE, CARE IF FAIL
XC
XC SPARSE, PAGE 5
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC1/3RBRI,2REF,1,70,3RVER,3RBOS,1,71,
XC&	 3RSUP,3RERB,1,72,3RSTA,1RY,1,73,3RVER,3RSIO,1,74,
XC&	 3RSWI,1RM,3RBAT,2RHE,3RWAD,1RE,1,75,3RGER,3RONI,1,76,
XC&	 3RULY,3RSSE,3RODY,3RSSE,1,77,
XC&	 3RWEL,1RL,1,78,3RPRA,1RY,1,79,3RTRE,3RASU,1,80,
XC&	 3RTEM,3RPLE,1,81,3RBLA,2RST,1,82,3RSCO,2RRE,1,83,
XC&	 1RQ,0,3RQUI,1RT,1,84,3RHEL,1RP,1,40,3RINF,1RO,1,41,
XC&	 3RHIS,3RTOR,3RUPD,3RATE,1,42,3RBAC,1RK,1,43,
XC&	 3RSIG,1RH,3RMUM,3RBLE,1,44/
XC
XC
X	DATA VVOC1/3929,8240,1,70,35418,3819,1,71,
X&		31256,8722,1,72,31201,40000,1,73,35418,30775,1,74,
X&		31329,20800,3260,13000,36844,8000,1,75,11418,24569,1,76,
X&		34105,31165,24185,31165,1,77,
X&		37012,19200,1,78,26321,40000,1,79,32725,2381,1,80,
X&		32213,26085,1,81,3681,31200,1,82,30535,29000,1,83,
X&		27200,0,28049,32000,1,84,13012,25600,1,40,
X&		14966,24000,1,41,
X&		13179,32618,34244,2405,1,42,3243,17600,1,43,
X&		30767,12800,21653,3685,1,44/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC1A/3RCHO,2RMP,3RLOS,1RE,3RBAR,1RF,1,45,
XC&	 3RDUN,3RGEO,1,46,3RFRO,3RBOZ,1,47,3RFOO,0,3RBLE,3RTCH,
XC&	 3RBAR,0,1,48,3RREP,3RENT,1,49,3RHOU,1RS,3RSCH,3REDU,1,50,
XC&	 3RWIN,0,1,51,3RYEL,1RL,3RSCR,3REAM,3RSHO,2RUT,1,52,
XC&	 3RHOP,0,3RSKI,1RP,1,53,3RFUC,1RK,3RSHI,1RT,3RDAM,1RN,
XC&	 3RCUR,2RSE,1,54,3RZOR,1RK,1,55,3RGRA,3RNIT,1,"50070,
XC&	 3RSAV,1RE,1,149,3RRES,3RTOR,1,150,3RTIM,1RE,1,90,
XC&	 3RDIA,3RGNO,1,94,3REXO,3RRCI,1,105,3RINV,3RENT,
XC&	 1RI,0,1,133,3RWAI,1RT,1,128,
XC&	 3RINC,3RANT,1,95,3RANS,3RWER,1,96/
XC
XC
XC
X	DATA VVOC1A/5135,21440,19819,8000,3258,9600,1,45,
X&		7254,11415,1,46,10335,3826,1,47,10215,0,3685,32128,
X&		3258,0,1,48,29016,8580,1,49,13421,29560,30528,8181,1,50,
X&		37174,0,1,51,40212,19200,30538,8053,30735,34400,1,52,
X&		13416,0,30849,25600,1,53,
X&		10443,17600,30729,32000,6453,22400,5658,30600,1,54,
X&		42218,17600,1,55,11921,22780,1,o"50070",
X&		30462,8000,1,149,29019,32618,1,150,32373,8000,1,90,
X&		6761,11775,1,94,8975,28929,1,105,14982,8580,
X&		14400,0,1,133,36849,32000,1,128,
X&		14963,2180,1,95,2179,37018,1,96/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC1B/3RAGA,2RIN,1,57,3RNOO,2RBJ,1,58,
XC&	 3RBUG,0,3RGRI,2RPE,3RCOM,3RPLA,1,59,
XC&	 3RFEA,3RTUR,3RCOM,3RMEN,3RSUG,3RGES,3RIDE,1RA,1,60,
XC&	 3RROO,1RM,1,65,3ROBJ,3RECT,1,66,3RRNA,2RME,1,67/
XC
XC
XC
X	DATA VVOC1B/1881,14960,1,57,23015,3600,1,58,
X&		4047,0,11929,25800,5413,26081,1,59,
X&		9801,32858,5413,21014,31247,11419,14565,1600,1,60,
X&		29415,20800,1,65,24090,8140,1,66,29361,21000,1,67/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC2/3RDEF,3RLAT,1,"50147,
XC&	 3RDES,3RCRI,3RWHA,1RT,3REXA,3RMIN,1,"50170,
XC&	 3RFIL,1RL,11,"60206,"61000,"200,0,"61002,"400,0,
XC&		"40206,"61000,"200,0,
XC&	 3RFIN,1RD,3RSEE,1RK,3RWHE,2RRE,3RSEE,0,4,"40177,"60000,-1,-1,
XC&	 3RFOL,3RLOW,2,"125,"50125,
XC&	 3RKIC,1RK,3RBIT,1RE,3RTAU,2RNT,1,"50153,3RLOW,2RER,1,"50156,
XC&	 3RPUS,1RH,3RPRE,2RSS,1,"50160,3RRIN,1RG,3RPEA,1RL,1,"50127,
XC&	 3RRUB,0,3RCAR,3RESS,3RTOU,2RCH,3RFON,3RDLE,1,"50157,
XC&	 3RSHA,2RKE,1,"50171,3RSPI,1RN,1,"50201,
XC&	 3RUNT,2RIE,3RFRE,1RE,1,"50161,3RWAL,1RK,9,"50216,
XC&		"40126,"61002,-1,-1,"40126,"61005,-1,-1/
XC
XC
XC
X	DATA VVOC2/6606,19260,1,o"50147",
X&		6619,5529,37121,32000,8961,21174,1,o"50170",
X&		9972,19200,11,
X&			o"60206",o"61000",o"200",0,o"61002",o"400",0,
X&			o"40206",o"61000",o"200",0,
X&		9974,6400,30605,17600,37125,29000,30605,0,4,
X&			o"40177",o"60000",-1,-1,
X&		10212,19823,2,o"125",o"50125",
X&		17963,17600,3580,8000,32061,23200,1,o"50153",
X&		19823,8720,1,o"50156",
X&		26459,12800,26325,31160,1,o"50160",
X&		29174,11200,25801,19200,1,o"50127",
X&		29642,0,4858,8779,32621,5120,10214,6885,1,o"50157",
X&		30721,17800,1,o"50171",31049,22400,1,o"50201",
X&		34180,14600,10325,8000,1,o"50161",
X&		36852,17600,9,o"50216",o"40126",o"61002",-1,-1,
X&			o"40126",o"61005",-1,-1/
XC
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC3/3RATT,3RACK,3RFIG,2RHT,3RINJ,3RURE,3RHIT,0,3RHUR,1RT,
XC&		7,"60215,"21000,0,"200,"44002,0,"1000,
XC&	 3RBOA,2RRD,4,"40202,"21000,0,"2,
XC&	 3RBRU,2RSH,3RCLE,2RAN,5,"52130,"70130,"61002,-1,-1,
XC&	 3RBUR,1RN,3RIGN,3RITE,3RINC,3RINE,7,"60211,"61000,"20,0,
XC&		"64002,"10,0,
XC&	 3RCLI,2RMB,12,"40235,"20007,0,"4000,
XC&		"40236,"20006,0,"4000,"40234,"20000,0,"4000,
XC&	 3RCLO,2RSE,4,"40176,"61000,"10200,0,
XC&	 3RDIG,0,4,"40131,"44002,"4,0,
XC&	 3RDIS,3REMB,4,"40203,"20000,0,"2,
XC&	 3RDRI,2RNK,3RIMB,3RIBE,3RSWA,3RLLO,4,"40210,"61000,"400,0,
XC&	 3RDRO,1RP,3RREL,3REAS,11,"42221,"41000,-1,-1,
XC&		"60221,"41000,-1,-1,"61005,-1,-1,
XC&	 3REAT,0,3RCON,3RSUM,3RGOB,3RBLE,3RMUN,2RCH,3RTAS,2RTE,
XC&		4,"40207,"75000,"2000,0,
XC&	 3REXT,3RING,3RDOU,2RSE,4,"40174,"75000,"100,0/
XC
XC
X	DATA VVOC3/2420,1731,9967,13600,14970,34325,13180,0,13658,32000,
X&			7,o"60215",o"21000",0,o"200",o"44002",0,o"1000",
X&		3801,28960,4,o"40202",o"21000",0,o"2",
X&		3941,30720,5285,2160,5,o"52130",o"70130",o"61002",-1,-1,
X&		4058,22400,14694,15205,14963,14965,
X&			7,o"60211",o"61000",o"20",0,o"64002",o"10",0,
X&		5289,20880,12,o"40235",o"20007",0,o"4000",o"40236",
X&			o"20006",0,o"4000",o"40234",o"20000",0,o"4000",
X&		5295,30600,4,o"40176",o"61000",o"10200",0,
X&		6767,0,4,o"40131",o"44002",o"4",0,
X&		6779,8522,4,o"40203",o"20000",0,o"2",
X&		7129,22840,14922,14485,31321,19695,
X&			4,o"40210",o"61000",o"400",0,
X&		7135,25600,29012,8059,11,o"42221",o"41000",-1,-1,
X&			o"60221",o"41000",-1,-1,o"61005",-1,-1,
X&		8060,0,5414,31253,11802,3685,21654,5120,32059,32200,
X&			4,o"40207",o"75000",o"2000",0,
X&		8980,14967,7021,30600,4,o"40174",o"75000",o"100",0/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC4/3RGIV,1RE,3RHAN,1RD,3RDON,3RATE,11,"72222,"21004,
XC&		"40,0,"64222,"21000,"40,0,"61000,-1,-1,
XC&	 3RHEL,2RLO,2RHI,0,2,"2227,"50227,
XC&	 3RBLO,1RW,15,"62146,"61007,-1,-1,"61002,"4,0,
XC&		"40160,"61007,-1,-1,"40165,"61005,-1,-1,
XC&	 3RINF,3RLAT,4,"70146,"61002,"4,0,
XC&	 3RJUM,1RP,3RLEA,1RP,5,"133,"40133,"61001,-1,-1,
XC&	 3RKIL,1RL,3RMUR,3RDER,3RSLA,1RY,3RSTA,1RB,3RDIS,3RPAT,
XC&		7,"60213,"21000,0,"200,
XC&		"44002,0,"1000,
XC&	 3RKNO,2RCK,3RRAP,0,12,"42166,"61003,-1,-1,
XC&		"40166,"61012,-1,-1,"40215,"23006,"40,0,
XC&	 3RLIG,2RHT,11,"42173,"75000,"100,0,
XC&		"60211,"61000,"100,0,"54002,"10,0,
XC&	 3RLOC,1RK,4,"40134,"20000,-1,-1/
XC
XC
XC
X	DATA VVOC4/11582,8000,12854,6400,7014,2405,11,o"72222",o"21004",
X&			o"40",0,o"64222",o"21000",o"40",
X&			0,o"61000",-1,-1,
X&		13012,19800,13160,0,2,o"2227",o"50227",
X&		3695,36800,15,o"62146",o"61007",-1,-1,o"61002",o"4",0,
X&			o"40160",o"61007",-1,-1,o"40165",o"61005",-1,-1,
X&		14966,19260,4,o"70146",o"61002",o"4",0,
X&		16853,25600,19401,25600,
X&			5,o"133",o"40133",o"61001",-1,-1,
X&		17972,19200,21658,6618,30881,40000,31201,3200,
X&			6779,25660,7,o"60213",o"21000",0,o"200",
X&			o"44002",0,o"1000",
X&		18175,5240,28856,0,12,o"42166",o"61003",-1,-1,o"40166",
X&			o"61012",-1,-1,o"40215",o"23006",o"40",0,
X&		19567,13600,11,o"42173",o"75000",o"100",0,o"60211",
X&			o"61000",o"100",0,o"54002",o"10",0,
X&		19803,17600,4,o"40134",o"20000",-1,-1/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC5/3RLOO,1RK,1RL,0,3RSTA,2RRE,3RGAZ,1RE,
XC&		13,"167,"40167,"60003,-1,-1,
XC&		"40231,"61010,-1,-1,"40230,"60005,-1,-1,
XC&	 3RMEL,1RT,3RLIQ,3RUIF,4,"70145,"61002,"10,0,
XC&	 3RMOV,1RE,4,"40172,"20000,-1,-1,
XC&	 3RPUL,1RL,3RTUG,0,8,"42172,"21000,-1,-1,
XC&		"40172,"21012,-1,-1,
XC&	 3RMUN,1RG,3RHAC,1RK,3RFRO,1RB,3RDAM,3RAGE,
XC&		5,"52212,"70212,"44002,-1,-1,
XC&	 3ROPE,1RN,11,"42175,"61000,"10200,0,
XC&		"60175,"61000,"10200,0,"54002,"4,"1000,
XC&	 3RPIC,1RK,4,"40204,"61007,"20000,"40,
XC&	 3RPLU,1RG,3RGLU,1RE,3RPAT,2RCH,4,"70152,"61002,-1,-1,
XC&	 3RPOK,1RE,3RBRE,2RAK,3RJAB,0,7,"60212,"21000,0,"200,
XC&		"44002,0,"1000,
XC&	 3RPOU,1RR,3RSPI,2RLL,11,"42223,"42000,"400,0,
XC&		"60223,"42000,"400,0,"60005,-1,-1,
XC&		3RPUM,1RP,4,"60232,"60007,-1,-1/
XC
XC
XC
X	DATA VVOC5/19815,17600,19200,0,31201,29000,11266,8000,
X&			13,o"167",o"40167",o"60003",-1,-1,
X&			o"40231",o"61010",-1,-1,o"40230",o"60005",-1,-1,
X&		21012,32000,19577,33966,4,o"70145",o"61002",o"10",0,
X&		21422,8000,4,o"40172",o"20000",-1,-1,
X&		26452,19200,32847,0,8,o"42172",o"21000",-1,-1,
X&			o"40172",o"21012",-1,-1,
X&		21654,11200,12843,17600,10335,3200,6453,1885,
X&			5,o"52212",o"70212",o"44002",-1,-1,
X&		24645,22400,11,o"42175",o"61000",o"10200",0,o"60175",
X&			o"61000",o"10200",0,o"54002",o"4",o"1000",
X&		25963,17600,4,o"40204",o"61007",o"20000",o"40",
X&		26101,11200,11701,8000,25660,5120,
X&			4,o"70152",o"61002",-1,-1,
X&		26211,8000,3925,2040,16042,0,7,o"60212",o"21000",
X&			0,o"200",o"44002",0,o"1000",
X&		26221,28800,31049,19680,11,o"42223",o"42000",o"400",0,
X&			o"60223",o"42000",o"400",0,o"60005",-1,-1,
X&		26453,25600,4,o"60232",o"60007",-1,-1/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC6/3RPUT,0,3RINS,3RERT,3RSTU,2RFF,3RPLA,2RCE,
XC&		8,"72220,"61005,-1,-1,
XC&		"40221,"61006,-1,-1,
XC&	 3RRAI,2RSE,3RLIF,1RT,5,"52155,"40155,"61007,-1,-1,
XC&	 3RREA,1RD,3RSKI,1RM,11,"42144,"71000,"40000,0,
XC&		"60144,"71000,"40000,0,"61002,-1,-1,
XC&	 3RSTR,3RIKE,12,"60215,"23000,"40,0,
XC&		"44002,0,"1000,"42215,"23000,"40,0,"50173,
XC&	 3RSWI,2RNG,3RTHR,3RUST,7,"60214,"44000,0,"1000,
XC&		"21003,0,"200,
XC&	 3RTAK,1RE,3RGET,0,3RHOL,1RD,3RCAR,2RRY,3RREM,3ROVE,
XC&		4,"40204,"61000,"20000,"40,
XC&	 3RTEL,1RL,3RCOM,3RMAN,3RREQ,3RUES,4,"40217,"20000,0,"2000,
XC&	 3RTHR,2ROW,3RHUR,1RL,3RCHU,2RCK,14,"60224,"44000,-1,-1,
XC&		"21003,"40,0,"60224,"44000,-1,-1,"21002,"40,0/
XC
XC
XC
X	DATA VVOC6/26460,0,14979,8740,31221,9840,26081,5000,
X&			8,o"72220",o"61005",-1,-1,
X&			o"40221",o"61006",-1,-1,
X&		28849,30600,19566,32000,
X&			5,o"52155",o"40155",o"61007",-1,-1,
X&		29001,6400,30849,20800,11,o"42144",o"71000",o"40000",0,
X&			o"60144",o"71000",o"40000",0,o"61002",-1,-1,
X&		31218,14845,12,o"60215",o"23000",o"40",0,o"44002",
X&			0,o"1000",o"42215",o"23000",o"40",0,o"50173",
X&		31329,22680,32338,34380,7,o"60214",o"44000",0,o"1000",
X&			o"21003",0,o"200",
X&		32051,8000,11420,0,13412,6400,4858,29800,29013,24885,
X&			4,o"40204",o"61000",o"20000",o"40",
X&		32212,19200,5413,20854,29017,33819,
X&			4,o"40217",o"20000",0,o"2000",
X&		32338,24920,13658,19200,5141,5240,14,o"60224",o"44000",
X&			-1,-1,o"21003",o"40",0,o"60224",o"44000",
X&			-1,-1,o"21002",o"40",0/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA VVOC7/3RTIE,0,3RFAS,3RTEN,11,"70162,"61004,-1,-1,
XC&		"60163,"21000,"40,0,"65002,"4,0,
XC&	 3RTUR,1RN,3RSET,0,22,"62164,"61000,"2,0,
XC&		"64002,"4,0,
XC&		"40173,"75012,"100,0,"40174,"75013,"100,0,
XC&		"60237,"61000,"2,0,"20004,-1,-1,
XC&	 3RUNL,3ROCK,7,"60135,"21000,-1,-1,
XC&		"74002,"4,0,
XC&	 3RWAK,1RE,3RSUR,3RPRI,3RALA,2RRM,3RSTA,3RRTL,
XC&		8,"42150,"20000,"40,0,
XC&		"40150,"20007,"40,0,
XC&	 3RWAV,1RE,3RFLA,3RUNT,3RBRA,3RNDI,4,"40154,"40000,-1,-1,
XC&	 3RWIN,1RD,5,"50233,"40233,"61007,-1,-1/
XC
XC
XC
X	DATA VVOC7/32365,0,9659,32214,11,o"70162",o"61004",-1,-1,
X&		o"60163",o"21000",o"40",0,o"65002",o"4",0,
X&	 32858,22400,30620,0,22,o"62164",o"61000",o"2",0,
X&		o"64002",o"4",0,
X&		o"40173",o"75012",o"100",0,o"40174",o"75013",o"100",0,
X&		o"60237",o"61000",o"2",0,o"20004",-1,-1,
X&	 34172,24131,7,o"60135",o"21000",-1,-1,
X&		o"74002",o"4",0,
X&	 36851,8000,31258,26329,2081,29320,31201,29612,
X&		8,o"42150",o"20000",o"40",0,
X&		o"40150",o"20007",o"40",0,
X&	 36862,8000,10081,34180,3921,22569,4,o"40154",o"40000",-1,-1,
X&	 37174,6400,5,o"50233",o"40233",o"61007",-1,-1/
XC
XC
X	DATA VVOCND/-1/
XC SPARSE, PAGE 6
XC
XC OBJECTS--	MAPS OBJECTS TO OBJECT INDICES
XC
XC SAME FORMAT AS AVOC.
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC1/3RBAG,0,1,25,100,3RSAC,1RK,1,3RGAR,3RLIC,2,
XC&	 3RCLO,2RVE,2,3RFOO,1RD,3,3RSAN,3RDWI,3,3RLUN,2RCH,3,
XC&	 3RDIN,3RNER,3,
XC&	 3RGUN,1RK,4,55,3RPIE,2RCE,4,143,186,3RSLA,1RG,4,3RCOA,1RL,5,
XC&	 3RPIL,1RE,5,38,78,87,88,122,3RHEA,1RP,5,
XC&	 3RFIG,3RURI,6,
XC&	 3RMAC,3RHIN,7,3RPDP,2R10,7,3RPDP,2R11,7,3RDRY,2RER,7,
XC&	 3RLID,0,7,3RDIA,3RMON,8,3RCAS,1RE,9,123,3RBOT,3RTLE,10,121,
XC&	 3RCON,3RTAI,10,3RWAT,2RER,11,209,3RQUA,3RNTI,11,209,
XC&	 3RLIQ,3RUID,11,209,3RH2O,0,11,209,
XC&	 3RROP,1RE,12,101,3RHEM,1RP,12,3RCOI,1RL,12,110,
XC&	 3RKNI,2RFE,13,21,3RBLA,2RDE,13,14,3RSWO,2RRD,14,3RORC,3RHRI,14,
XC&	 3RGLA,3RMDR,14,3RLAM,1RP,15,16,22,3RLAN,3RTER,15,16,22,
XC&	 3RRUG,0,17,3RCAR,3RPET,17,
XC&	 3RLEA,3RVES,18,3RLEA,1RF,18,3RTRO,2RLL,19,
XC&	 3RAXE,0,20,3RDIN,3RNER,3/
XC
XC
X	DATA OVOC1/3247,0,1,25,100,30443,17600,1,11258,19563,2,
X&	 5295,35400,2,10215,6400,3,30454,7329,3,20054,5120,3,
X&	 6774,22618,3,
X&	 12054,17600,4,55,25965,5000,4,143,186,30881,11200,4,5401,19200,5,
X&	 25972,8000,5,38,78,87,88,122,13001,25600,5,
X&	 9967,34329,6,
X&	 20843,13174,7,25776,50800,7,25776,50840,7,7145,8720,7,
X&	 19564,0,7,6761,21414,8,4859,8000,9,123,3820,32485,10,121,
X&	 5414,32049,10,36860,8720,11,209,28041,23209,11,209,
X&	 19577,33964,11,209,14095,0,11,209,
X&	 29416,8000,12,101, 13013,25600,12,5409,19200,12,110,
X&	 18169,9800,13,21,3681,6600,13,14,31335,28960,14,24723,13529,14,
X&	 11681,20978,14,19253,25600,15,16,22,19254,32218,15,16,22,
X&	 29647,0,17,4858,25820,17,
X&	 19401,35419,18,19401,9600,18,32735,19680,19,
X&	 2565,0,20,6774,22618,3/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC2/3RKEY,1RS,23,3RKEY,0,23,
XC&	 3RSET,0,23,3RBON,2RES,24,3RSKE,3RLET,24,3RBOD,1RY,24,73,
XC&	 3RCOI,2RNS,25,3RBAR,0,26,165,168,
XC&	 3RNEC,3RKLA,27,3RPEA,3RRLS,27,3RMIR,3RROR,28,29,212,
XC&	 3RICE,0,30,3RMAS,1RS,30,3RGLA,3RCIE,30,3RRUB,1RY,31,
XC&	 3RTRI,3RDEN,32,3RFOR,1RK,32,3RCOF,3RFIN,33,3RCAS,3RKET,33,
XC&	 3RTOR,2RCH,34,3RCAG,1RE,35,36,124,125,3RDUM,3RBWA,35,36,
XC&	 3RBAS,3RKET,35,36,98,113,3RBRA,3RCEL,37,
XC&	 3RJEW,2REL,37,3RTIM,3RBER,38,3RBOX,0,39,53,105,3RSTR,3RADI,40,
XC&	 3RVIO,3RLIN,40,3RENG,3RRAV,41,3RINS,3RCRI,41,44,3RGHO,2RST,42,
XC&	 3RSPI,3RRIT,42,3RFIE,2RND,42,3RGRA,2RIL,43,3RPRA,3RYER,44,47,
XC&	 3RTRU,2RNK,45,3RCHE,2RST,45,3RBEL,1RL,46,
XC&	 3RBOO,1RK,47,49,114,115,116,117,3RBIB,2RLE,47/
XC
XC
X	DATA OVOC2/17825,30400,23,17825,0,23,
X&	 30620,0,23,3814,8760,24,30845,19420,24,3804,40000,24,73,
X&	 5409,23160,25,3258,0,26,165,168,
X&	 22603,18081,27,25801,29299,27,21178,29418,28,29,212,
X&	 14525,0,30,20859,30400,30,11681,5165,30,29642,40000,31,
X&	 32729,6614,32,10218,17600,32,5406,9974,33,4859,17820,33,
X&	 32618,5120,34,4847,8000,35,36,124,125,7253,4121,35,36,
X&	 3259,17820,35,36,98,113,3921,5012,37,
X&	 16223,8480,37,32373,3418,38,3824,0,39,53,105,31218,1769,40,
X&	 35575,19574,40,8567,28862,41,14979,5529,41,44,11535,31200,42,
X&	 31049,29180,42,9965,22560,42,11921,14880,43,26321,40218,44,47,
X&	 32741,22840,45,5125,31200,45,3412,19200,46,
X&	 3815,17600,47,49,114,115,116,117,3562,19400,47/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC3/3RGOO,3RDBO,47,3RCAN,3RDLE,48,3RPAI,1RR,48,
XC&	 3RGUI,3RDEB,49,
XC&	 3RGUI,2RDE,49,3RPAP,2RER,50,122,143,186,3RNEW,3RSPA,50,
XC&	 3RISS,2RUE,50,3RREP,3RORT,50,3RMAG,3RAZI,50,3RNEW,1RS,50,
XC&	 3RMAT,3RCHB,51,
XC&	 3RMAT,2RCH,51,3RMAT,3RCHE,51,3RADV,3RERT,52,3RPAM,3RPHL,52,
XC&	 3RLEA,3RFLE,52,3RBOO,3RKLE,52,3RMAI,3RLBO,53,
XC&	 3RTUB,1RE,54,3RTOO,3RTHP,54,3RPUT,2RTY,55,3RMAT,3RERI,55,
XC&	 3RGLU,1RE,55,3RWRE,3RNCH,56,3RSCR,3REWD,57,
XC&	 3RCYC,3RLOP,58,3RMON,3RSTE,58,3RCHA,3RLIC,59,3RCUP,0,59,
XC&	 3RGOB,3RLET,59,3RPAI,3RNTI,60,149,3RART,0,60,149,
XC&	 3RCAN,3RVAS,60,3RPIC,3RTUR,60,3RWOR,1RK,60,
XC&	 3RMAS,3RTER,60,215,3RTHI,2REF,61,3RROB,3RBER,61,
XC&	 3RCRI,3RMIN,61,3RBAN,3RDIT,61,3RCRO,2ROK,61,3RGEN,1RT,61,
XC&	 3RGEN,3RTLE,61,3RMAN,0,61,3RTHU,1RG,61,
XC&	 3RBAG,3RMAN,61,3RSTI,3RLLE,62/
XC
XC
X	DATA OVOC3/11815,6495,47,4854,6885,48,25649,28800,48,
X&	 12049,6602,49,
X&	 12049,6600,49,256656,8720,50,122,143,186,22623,31041,50,
X&	 15179,33800,50,29016,24740,50,20847,2649,50,22623,30400,50,
X&	 20860,5122,51,
X&	 20860,5120,51,20860,5125,51,1782,8740,52,25653,25932,52,
X&	 19401,10085,52,3815,18085,52,20849,19295,53,
X&	 32842,8000,54,32615,32336,54,26460,33000,55,20860,8729,55,
X&	 11701,8000,55,37525,22528,56,30538,8924,57,
X&	 5803,19816,58,21414,31205,58,5121,19563,59,5656,0,59,
X&	 11802,19420,59,25649,23209,60,149,2340,0,60,149,
X&	 4854,35259,60,25963,32858,60,37418,17600,60,
X&	 20859,32218,60,215,32329,8240,61,29402,3418,61,
X&	 5529,21175,61,3254,6780,61,5535,24440,61,11414,32000,61,
X&	 11414,32485,61,20854,0,61,32341,11200,61,
X&	 3247,20854,61,31209,19685,62/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC4/3RWIN,3RDOW,63,3RBOL,1RT,64,3RNUT,0,64,
XC&	 3RGRA,2RTE,65,3RGRA,3RTIN,65,3RDOO,1RR,66,67,68,69,
XC&	 164,172,173,174,175,189,3RTRA,3RPDO,66,
XC&	 3RTRA,3RP$D,66,3RSWI,3RTCH,70,76,79,80,81,82,170,
XC&	 3RHEA,1RD,71,120,3RCOR,3RPSE,72,73,3RBOD,3RIES,73,
XC&	 3RDAM,0,74,3RGAT,2RES,74,76,3RGAT,1RE,74,76,
XC&	 3RFCD,0,74,3RRAI,1RL,75,3RRAI,3RLIN,75,
XC&	 3RBUT,3RTON,76,79,80,81,82,127,128,129,170,176,
XC&	 3RBUB,3RBLE,77,3RLEA,1RK,78,3RDRI,1RP,78,
XC&	 3RHOL,1RE,78,107,
XC&	 3RBAT,0,83,3RRAI,3RNBO,84,
XC&	 3RPOT,0,85,3RSTA,3RTUE,86,3RSCU,3RLPT,86,3RROC,1RK,86,
XC&	 3RBOA,1RT,87,88,90,3RPLA,3RSTI,87,88,
XC&	 3RPUM,1RP,89/
XC
XC
X	DATA OVOC4/37174,7023,63,3812,32000,64,23260,0,64,
X&	 11921,32200,65,11921,32374,65,7015,28800,66,67,68,69,
X&	 164,172,173,174,175,189,32721,25775,66,
X&	 32721,26684,66,31329,32128,70,76,79,80,81,82,170,
X&	 13001,6400,71,120,5418,26365,72,73,3804,14619,73,
X&	 6453,0,74,11260,8760,74,76,11260,8000,74,76,
X&	 9724,0,74,28849,19200,75,28849,19574,75,
X&	 4060,32614,76,79,80,81,82,127,128,129,170,176,
X&	 4042,3685,77,19401,17600,78,7129,25600,78,
X&	 13412,8000,78,107,
X&	 3260,0,83,28849,22495,84,
X&	 26220,0,85,31201,32845,86,30541,19860,86,29403,17600,86,
X&	 3801,32000,87,88,90,26081,31209,87,88,
X&	 26453,25600,89/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC5/3RAIR,3RPUM,89,3RAIR,3R$PU,89,3RLAB,2REL,91,112,
XC&	 3RFIN,3REPR,91,3RSTI,2RCK,92,3RBAR,3RREL,93,3RBUO,1RY,94,
XC&	 3REME,3RRAL,95,3RSHO,3RVEL,96,3RGUA,2RNO,97,3RCRA,1RP,97,
XC&	 3RSHI,1RT,97,3RHUN,1RK,97,3RBAL,3RLOO,98,113,
XC&	 3RREC,3REPT,99,3RWIR,1RE,101,110,
XC&	 3RHOO,1RK,102,103,3RZOR,3RKMI,104,148,3RCOI,1RN,104,
XC&	 3RSAF,1RE,105,3RCAR,1RD,106,188,3RNOT,1RE,106,186,
XC&	 3RSLO,1RT,107,187,3RCRO,2RWN,108,3RBRI,2RCK,109,
XC&	 3RFUS,1RE,110,3RGNO,2RME,111,152,
XC&	 3RSTA,2RMP,118,
XC&	 3RTOM,1RB,119,3RCRY,2RPT,119,3RGRA,2RVE,119,3RHEA,2RDS,120,
XC&	 3RPOL,2RES,120,3RIMP,3RLEM,120/
XC
XC
X	DATA OVOC5/1978,26453,89,1978,43861,89,19242,8480,91,112,
X&	 9974,8658,91,31209,5240,92,3258,29012,93,4055,40000,94,
X&	 8525,28852,95,30735,35412,96,12041,23000,97,5521,25600,97,
X&	 30729,32000,97,13654,17600,97,3252,19815,98,113,
X&	 29003,8660,99,37178,8000,101,110,
X&	 13415,17600,102,103,42218,18129,104,148,5409,22400,104,
X&	 30446,8000,105,4858,6400,106,188,23020,8000,106,186,
X&	 30895,32000,107,187,5535,37360,108,3929,5240,109,
X&	 10459,8000,110,11775,21000,111,152,
X&	 31201,21440,118,
X&	 32613,3200,119,5545,26400,119,11921,35400,119,13001,7160,120,
X&	 26212,8760,120,14936,19413,120/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC6/3RLOS,3RERS,120,3RCOK,2RES,121,
XC&	 3RLIS,3RTIN,122,3RSTA,2RCK,122,
XC&	 3RPRI,3RNTO,122,
XC&	 3RSPH,3RERE,126,3RBAL,1RL,126,
XC&	 3RETC,3RHIN,130,131,
XC&	 3RWAL,2RLS,130,131,198,205,206,207,208,3RWAL,1RL,
XC&	 130,131,159,160,161,162,163,164,198,205,206,207,208,
XC&	 3RFLA,2RSK,132,3RPOO,1RL,133,3RSEW,3RAGE,133,
XC&	 3RTIN,0,134,3RSAF,3RFRO,134,3RSPI,3RCES,134,3RTAB,2RLE,135,
XC&	 3RPOS,1RT,136,166,167,3RPOS,2RTS,136,3RBUC,3RKET,137,
XC&	 3RCAK,1RE,138,139,140,141,3RICI,2RNG,139,140,141,
XC&	 3RROB,2ROT,142,3RROB,2RBY,142,
XC&	 3RC3P,1RO,142,3RR2D,1R2,142/
XC
XC
X	DATA OVOC6/19819,8739,120,5411,8760,121,
X&	 19579,32374,122,31201,5240,122,
X&	 26329,23215,122,
X&	 31048,8725,126,3252,19200,126,
X&	 8803,13174,130,131,
X&	 36852,19960,130,131,198,205,206,207,208,36852,19200,
X&	 130,131,159,160,161,162,163,164,198,205,206,207,208,
X&	 10081,30840,132,26215,19200,133,30623,1885,133,
X&	 32374,0,134,30446,10335,134,31049,5019,134,32042,19400,135,
X&	 26219,32000,136,166,167,26219,32760,136,4043,17820,137,
X&	 4851,8000,138,139,140,141,14529,22680,139,140,141,
X&	 29402,24800,142,29402,4200,142,
X&	 6136,24000,142,30084,51200,142/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC6A/3RPAN,2REL,159,160,161,162,163,164,213,
XC&	 3RPOL,1RE,166,167,3RTBA,1RR,168,3RT$B,2RAR,168,
XC&	 3RARR,2ROW,169,3RPOI,2RNT,169,3RBEA,1RM,171,
XC&	 3RDIA,1RL,177,3RSUN,3RDIA,177,1R1,0,178,
XC&	 3RONE,0,178,1R2,0,179,3RTWO,0,179,1R3,0,180,
XC&	 3RTHR,2REE,180,1R4,0,181,3RFOU,1RR,181,1R5,0,182,
XC&	 3RFIV,1RE,182,1R6,0,183,3RSIX,0,183,1R7,0,184,
XC&	 3RSEV,2REN,184,1R8,0,185,3REIG,2RHT,185,
XC&	 3RWAR,3RNIN,186,3RSLI,1RT,187,
XC&	 2RIT,0,192,3RTHA,1RT,192,3RTHI,1RS,192/
XC
XC
X	DATA OVOC6A/25654,8480,159,160,161,162,163,164,213,
X&	 26212,8000,166,167,32081,28800,168,33082,2320,168,
X&	 2338,24920,169,26209,23200,169,3401,20800,171,
X&	 6761,19200,177,31254,6761,177,49600,0,178,
X&	 24565,0,178,51200,0,179,32935,0,179,52800,0,180,
X&	 32338,8200,180,54400,0,181,10221,28800,181,56000,0,182,
X&	 9982,8000,182,57600,0,183,30784,0,183,59200,0,184,
X&	 30622,8560,184,60800,0,185,8367,13600,185,
X&	 36858,22774,186,30889,32000,187,
X&	 15200,0,192,32321,32000,192,32329,30400,192/
XC
XC
XC   THE FOLLOWING DATA STATEMENT WAS ORIGINALLY:
XC
XC	DATA OVOC7/2RME,0,193,3RMYS,3RELF,193,3RCRE,3RTIN,193,
XC&	 3RALL,0,194,3REVE,3RRYT,194,
XC&	 3RTRE,3RASU,195,3RVAL,3RUAB,195,3RSAI,3RLOR,196,3RTEE,2RTH,197,
XC&	 3RGRU,1RE,199,3RHAN,1RD,200,3RHAN,2RDS,200,
XC&	 3RLUN,2RGS,201,3RAIR,0,201,3RAVI,3RATO,202,
XC&	 3RFLY,2RER,202,3RTRE,1RE,144,145,204,
XC&	 3RCLI,2RFF,146,147,3RLED,2RGE,146,147,3RPOR,3RTRA,149,
XC&	 3RSTA,2RCK,148,3RBIL,2RLS,148,
XC&	 3RVAU,2RLT,150,3RCUB,1RE,150,3RLET,3RTER,67,150,
XC&	 3RCUR,3RTAI,151,3RLIG,2RHT,151,3RNES,1RT,153,
XC&	 3REGG,0,154,155,3RBAU,3RBLE,156,3RCAN,3RARY,157,158,
XC&	 3RBIR,1RD,203,3RSON,3RGBI,203,
XC&	 3RGUA,2RRD,210,3RGUA,3RRDI,210,3RROS,1RE,211,
XC&	 3RSTR,3RUCT,212,3RCHA,3RNNE,214,
XC&	 3RKEE,3RPER,215,3RLAD,3RDER,216/
XC
XC
X	DATA OVOC7/21000,0,193,21819,8486,193,5525,32374,193,
X&	 2092,0,194,8885,29820,194,
X&	 32725,2381,195,35252,33642,195,30449,19818,196,32205,32320,197,
X&	 11941,8000,199,12854,6400,200,12854,7160,200,
X&	 20054,11960,201,1978,0,201,2489,2415,202,
X&	 10105,8720,202,32725,8000,144,145,204,
X&	 5289,9840,146,147,19404,11400,146,147,26218,32721,149,
X&	 31201,5240,148,3572,19960,148,
X&	 35261,20000,150,5642,8000,150,19420,32218,67,150,
X&	 5658,32049,151,19567,13600,151,22619,32000,153,
X&	 8287,0,154,155,3261,3685,156,4854,2345,157,158,
X&	 3578,6400,203,31014,11289,203,
X&	 12041,28960,210,12041,28969,210,29419,8000,211,
X&	 31218,33740,212,5121,22965,214,
X&	 17805,25818,215,19244,6618,216/
XC
XC
X	DATA OVOCND/-1/
XC SPARSE, PAGE 7
XC
XC SET UP FOR PARSING
XC
X	SPARSE=-1
XC						!ASSUME PARSE FAILS.
X	ADJ=0
XC						!CLEAR PARTS HOLDERS.
X	ACT=0
X	PREP=0
X	PPTR=0
X	O1=0
X	O2=0
X	P1=0
X	P2=0
X#ifdef debug
X	DFLAG=and(PRSFLG,4).NE.0
X#endif
XC
X	BUZLNT=20
X	PRPLNT=48
X	DIRLNT=75
XC SPARSE, PAGE 8
XC
XC NOW LOOP OVER INPUT BUFFER OF LEXICAL TOKENS.
XC
X	DO 1000 I=1,LLNT,2
XC						!TWO WORDS/TOKEN.
X	  LBUF1=LBUF(I)
XC						!GET CURRENT TOKEN.
X	  LBUF2=LBUF(I+1)
X#ifdef debug
X	  write(0,*) 'lbuf1=',lbuf1,' lbuf2=',lbuf2
X#endif
X	  IF(LBUF1.EQ.0) GO TO 1500
XC						!END OF BUFFER?
XC
XC CHECK FOR BUZZ WORD
XC
X	  DO 50 J=1,BUZLNT,2
X	    IF((LBUF1.EQ.BVOC(J)).AND.(LBUF2.EQ.BVOC(J+1)))
X&		GO TO 1000
X50	  CONTINUE
XC
XC CHECK FOR ACTION OR DIRECTION
XC
X	  IF(ACT.NE.0) GO TO 75
XC						!GOT ACTION ALREADY?
X	  J=1
XC						!CHECK FOR ACTION.
X125	  IF((LBUF1.EQ.VVOC(J)).AND.(LBUF2.EQ.VVOC(J+1)))
X&		GO TO 3000
X150	  J=J+2
XC						!ADV TO NEXT SYNONYM.
X	  IF(.NOT.OTEST(VVOC(J))) GO TO 125
XC						!ANOTHER VERB?
X	  J=J+VVOC(J)+1
XC						!NO, ADVANCE OVER SYNTAX.
X	  IF(VVOC(J).NE.-1) GO TO 125
XC						!TABLE DONE?
XC
X75	  IF((ACT.NE.0).AND.((VVOC(ACT).NE.R50WAL).OR.
X&		(PREP.NE.0))) GO TO 200
X	  DO 100 J=1,DIRLNT,3
XC						!THEN CHK FOR DIR.
X	    IF((LBUF1.EQ.DVOC(J)).AND.(LBUF2.EQ.DVOC(J+1)))
X&		GO TO 2000
X100	  CONTINUE
XC
XC NOT AN ACTION, CHECK FOR PREPOSITION, ADJECTIVE, OR OBJECT.
XC
X200	  DO 250 J=1,PRPLNT,3
XC						!LOOK FOR PREPOSITION.
X	    IF((LBUF1.EQ.PVOC(J)).AND.(LBUF2.EQ.PVOC(J+1)))
X&		GO TO 4000
X250	  CONTINUE
XC
X	  J=1
XC						!LOOK FOR ADJECTIVE.
X300	  IF((LBUF1.EQ.AVOC(J)).AND.(LBUF2.EQ.AVOC(J+1)))
X&		GO TO 5000
X	  J=J+1
X325	  J=J+1
XC						!ADVANCE TO NEXT ENTRY.
X	  IF(OTEST(AVOC(J))) GO TO 325
XC						!A RADIX 50 CONSTANT?
X	  IF(AVOC(J).NE.-1) GO TO 300
XC						!POSSIBLY, END TABLE?
XC
X	  J=1
XC						!LOOK FOR OBJECT.
X450	  IF((LBUF1.EQ.OVOC(J)).AND.(LBUF2.EQ.OVOC(J+1)))
X&		GO TO 600
X	  J=J+1
X500	  J=J+1
X	  IF(OTEST(OVOC(J))) GO TO 500
X	  IF(OVOC(J).NE.-1) GO TO 450
XC
XC NOT RECOGNIZABLE
XC
X	  IF(VBFLAG) CALL RSPEAK(601)
X	  RETURN
XC SPARSE, PAGE 9
XC
XC OBJECT PROCESSING (CONTINUATION OF DO LOOP ON PREV PAGE)
XC
X600	  OBJ=GETOBJ(J,ADJ,0)
XC						!IDENTIFY OBJECT.
X#ifdef debug
X	  IF(DFLAG) PRINT 60,J,OBJ
X60	  FORMAT(' SPARSE- OBJ AT ',I6,'  OBJ= ',I6)
X#endif
X	  IF(OBJ.LE.0) GO TO 6000
XC						!IF LE, COULDNT.
X	  IF(OBJ.NE.ITOBJ) GO TO 650
XC						!"IT"?
X	  OBJ=GETOBJ(0,0,LASTIT)
XC						!FIND LAST.
X	  IF(OBJ.LE.0) GO TO 6000
XC						!IF LE, COULDNT.
XC
X650	  IF(PREP.EQ.9) GO TO 8000
XC						!"OF" OBJ?
X	  IF(PPTR.EQ.2) GO TO 7000
XC						!TOO MANY OBJS?
X	  PPTR=PPTR+1
X	  OBJVEC(PPTR)=OBJ
XC						!STUFF INTO VECTOR.
X	  PRPVEC(PPTR)=PREP
X700	  PREP=0
X	  ADJ=0
XC Go to end of do loop (moved "1000 CONTINUE" to end of module, to avoid
XC complaints about people jumping back into the doloop.)
X	  GOTO 1000
XC SPARSE, PAGE 10
XC
XC SPECIAL PARSE PROCESSORS
XC
XC 2000--	DIRECTION
XC
X2000	PRSA=WALKW
X	PRSO=DVOC(J+2)
X	SPARSE=1
X#ifdef debug
X	IF(DFLAG) PRINT 10,J
X10	FORMAT(' SPARSE- DIR AT ',I6)
X#endif debug
X	RETURN
XC
XC 3000--	ACTION
XC
X3000	ACT=J
X	OACT=0
X#ifdef debug
X	IF(DFLAG) PRINT 20,J
X20	FORMAT(' SPARSE- ACT AT ',I6)
X	if(dflag) write(0,*) "count=",vvoc(j+2)," vnr=",vvoc(j+3)
X#endif
X	GO TO 1000
XC
XC 4000--	PREPOSITION
XC
X4000	IF(PREP.NE.0) GO TO 4500
X	PREP=PVOC(J+2)
X	ADJ=0
X#ifdef debug
X	IF(DFLAG) PRINT 30,J
X30	FORMAT(' SPARSE- PREP AT ',I6)
X#endif debug
X	GO TO 1000
XC
X4500	IF(VBFLAG) CALL RSPEAK(616)
X	RETURN
XC
XC 5000--	ADJECTIVE
XC
X5000	ADJ=J
X	J=(and(ONAME,OFLAG))
X#ifdef debug
X	IF(DFLAG) PRINT 40,ADJ,J
X40	FORMAT(' SPARSE- ADJ AT ',I6,' ORPHAN= ',I6)
X#endif debug
X	IF((J.NE.0).AND.(I.GE.LLNT)) GO TO 600
X	GO TO 1000
XC
XC 6000--	UNIDENTIFIABLE OBJECT (INDEX INTO OVOC IS J)
XC
X6000	IF(OBJ.LT.0) GO TO 6100
X	I=579
X	IF(LIT(HERE)) I=618
X	IF(VBFLAG) CALL RSPEAK(I)
X	RETURN
XC
X6100	IF(OBJ.NE.-10000) GO TO 6200
X	IF(VBFLAG) CALL RSPSUB(620,ODESC2(AVEHIC(WINNER)))
X	RETURN
XC
X6200	IF(VBFLAG) CALL RSPEAK(619)
X	IF(ACT.EQ.0) ACT=(and(OFLAG,OACT))
X	CALL ORPHAN(-1,ACT,O1,PREP,J)
X	RETURN
XC
XC 7000--	TOO MANY OBJECTS.
XC
X7000	IF(VBFLAG) CALL RSPEAK(617)
X	RETURN
XC
XC 8000--	RANDOMNESS FOR "OF" WORDS
XC
X8000	IF(OBJVEC(PPTR).EQ.OBJ) GO TO 700
X	IF(VBFLAG) CALL RSPEAK(601)
X	RETURN
XC
XC End of do-loop.
XC
X1000	CONTINUE
XC						!AT LAST.
XC
XC NOW SOME MISC CLEANUP -- We fell out of the do-loop
XC
X1500	IF(ACT.EQ.0) ACT=(and(OFLAG,OACT))
X	IF(ACT.EQ.0) GO TO 9000
XC						!IF STILL NONE, PUNT.
X	IF(ADJ.NE.0) GO TO 10000
XC						!IF DANGLING ADJ, PUNT.
XC
X	IF((OFLAG.NE.0).AND.(OPREP.NE.0).AND.(PREP.EQ.0).AND.
X&		(O1.NE.0).AND.(O2.EQ.0).AND.(ACT.EQ.OACT))
X&		GO TO 11000
XC
X	SPARSE=0
XC						!PARSE SUCCEEDS.
X	IF(PREP.EQ.0) GO TO 1750
XC						!IF DANGLING PREP,
X	IF((PPTR.EQ.0).OR.(PRPVEC(PPTR).NE.0))
X&		GO TO 12000
X	PRPVEC(PPTR)=PREP
XC						!CVT TO 'PICK UP FROB'.
XC
XC 1750--	RETURN A RESULT
XC
X1750	CONTINUE
XC						!WIN.
X#ifdef debug
X	IF(DFLAG) PRINT 70,ACT,O1,O2,P1,P2
X70	FORMAT(' SPARSE RESULTS- ',5I7)
X	if(dflag) write(0,*) "sparse=",sparse
X#endif
X	RETURN
XC						!LOSE.
XC
XC 9000--	NO ACTION, PUNT
XC
X9000	IF(O1.EQ.0) GO TO 10000
XC						!ANY DIRECT OBJECT?
X	IF(VBFLAG) CALL RSPSUB(621,ODESC2(O1))
XC						!WHAT TO DO?
X	CALL ORPHAN(-1,0,O1,0,0)
X	RETURN
XC
XC 10000--	TOTAL CHOMP
XC
X10000	IF(VBFLAG) CALL RSPEAK(622)
XC						!HUH?
X	RETURN
XC
XC 11000--	ORPHAN PREPOSITION.  CONDITIONS ARE
XC		O1.NE.0, O2=0, PREP=0, ACT=OACT
XC
X11000	IF(OSLOT.NE.0) GO TO 11500
XC						!ORPHAN OBJECT?
X	P1=OPREP
XC						!NO, JUST USE PREP.
X	GO TO 1750
XC
X11500	O2=O1
XC						!YES, USE AS DIRECT OBJ.
X	P2=OPREP
X	O1=OSLOT
X	P1=0
X	GO TO 1750
XC
XC 12000--	TRUE HANGING PREPOSITION.
XC		ORPHAN FOR LATER.
XC
X12000	CALL ORPHAN(-1,ACT,0,PREP,0)
XC						!ORPHAN PREP.
X	GO TO 1750
XC
X	END
END_OF_np1.F
if test 36982 -ne `wc -c <np1.F`; then
    echo shar: \"np1.F\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f rindex.h -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"rindex.h\"
else
echo shar: Extracting \"rindex.h\" \(836 characters\)
sed "s/^X//" >rindex.h <<'END_OF_rindex.h'
XC
X	COMMON /RINDEX/ WHOUS,LROOM,CELLA
X	COMMON /RINDEX/ MTROL,MAZE1
X	COMMON /RINDEX/ MGRAT,MAZ15
X	COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
X	COMMON /RINDEX/ STREA,EGYPT,ECHOR
X	COMMON /RINDEX/ TSHAF
X	COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
X	COMMON /RINDEX/ CAROU
X	COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
X	COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
X	COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
X	COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
X	COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
X	COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
X	COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
X	COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
X	COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
X	COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
X	COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
X	COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
END_OF_rindex.h
if test 836 -ne `wc -c <rindex.h`; then
    echo shar: \"rindex.h\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of archive 1 \(of 7\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 7 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0