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