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