A large commit.
[pdp8.git] / sw / adventure / INITAD.FT
diff --git a/sw/adventure/INITAD.FT b/sw/adventure/INITAD.FT
deleted file mode 100644 (file)
index 246fa37..0000000
+++ /dev/null
@@ -1,749 +0,0 @@
-C  ADVENTURES\r
-       SUBROUTINE INIT\r
-C\r
-C MODIFIED BY  KENT BLACKETT\r
-C              ENGINEERING SYSTEMS GROUP\r
-C              DIGITAL EQUIPMENT CORP.\r
-C              15-JUL-77\r
-C MODIFIED BY  BOB SUPNIK\r
-C              DISK ENGINEERING\r
-C              21-OCT-77\r
-C MODIFIED BY  BOB SUPNIK\r
-C              DISK ENGINEERING\r
-C              25-AUG-78\r
-C MODIFIED BY  BOB SUPNIK\r
-C              SMALL SYSTEMS\r
-C              12-NOV-78\r
-C ORIGINAL VERSION WAS FOR DECSYSTEM-10\r
-C NEXT VERSION WAS FOR FORTRAN IV-PLUS UNDER\r
-C THE IAS OPERATING SYSTEM ON THE PDP-11/70\r
-C THIS VERSION IS FOR FORTRAN IV (V01C OR LATER)\r
-C UNDER RT-11 ON *ANY* PDP-11\r
-C\r
-C\r
-C  CURRENT LIMITS:\r
-C      300 VOCABULARY WORDS (KTAB, ATAB, TABSIZ).\r
-C      150 LOCATIONS (LTEXT, STEXT, KEY, COND, ABB, ATLOC, LOCSIZ).\r
-C      100 OBJECTS (PLAC, PLACE, FIXD, FIXED, LINK (TWICE), PTEXT, PROP).\r
-C       35 "ACTION" VERBS (ACTSPK, VRBSIZ).\r
-C      205 RANDOM MESSAGES (RTEXT, RTXSIZ).\r
-C       12 DIFFERENT PLAYER CLASSIFICATIONS (CTEXT, CVAL, CLSMAX).\r
-C       20 HINTS, LESS 3 (HINTLC, HINTED, HINTS, HNTSIZ).\r
-C  THERE ARE ALSO LIMITS WHICH CANNOT BE EXCEEDED DUE TO THE STRUCTURE OF\r
-C  THE DATABASE.  (E.G., THE VOCABULARY USES N/1000 TO DETERMINE WORD TYPE,\r
-C  SO THERE CAN'T BE MORE THAN 1000 WORDS.)  THESE UPPER LIMITS ARE:\r
-C      1000 NON-SYNONYMOUS VOCABULARY WORDS\r
-C      300 LOCATIONS\r
-C      100 OBJECTS\r
-C\r
-C      IMPLICIT INTEGER (A-Z)\r
-       LOGICAL LMWARN,CLOSNG,PANIC,HINTED,\r
-     1         CLOSED,GAVEUP,SCORNG,DSEEN,BITSET\r
-C\r
-       LOGICAL WRITN\r
-       COMMON /VERSN/ VMAJ, VMIN, VEDIT\r
-       COMMON /FILES/ INDXNM, TEXTNM, SAVENM, INPTNM\r
-       COMMON /TXTCOM/ RTEXT,LINES,ASCVAR,TXTLOC,DATA\r
-       COMMON /VOCCOM/ KTAB,ATAB,TABSIZ\r
-       COMMON /PLACOM/ ATLOC,LINK,PLACE,FIXED,HOLDNG\r
-       COMMON /PTXCOM/ PTEXT\r
-       COMMON /ABBCOM/ ABB\r
-       COMMON /MISCOM/ LINUSE,TRVS,CLSSES,OLDLOC,LOC,CVAL,TK,NEWLOC,\r
-     1 KEY,PLAC,FIXD,ACTSPK,COND,HINTS,HNTMAX,PROP,TALLY,TALLY2,\r
-     2 HINTLC,CHLOC,CHLOC2,DSEEN,DFLAG,DLOC,DALTLC,KEYS,LAMP,GRATE\r
-       COMMON /MISCOM/\r
-     3 CAGE,ROD,ROD2,STEPS,BIRD,DOOR,PILLOW,SNAKE,FISSUR,TABLET,\r
-     4 CLAM,OYSTER,MAGZIN,DWARF,KNIFE,FOOD,BOTTLE,WATER,OIL,PLANT,\r
-     5 PLANT2,AXE,MIRROR,DRAGON,CHASM,TROLL,TROLL2,BEAR,MESSAG,VEND,\r
-     6 BATTER,NUGGET,COINS,CHEST,EGGS,TRIDNT,VASE,EMRALD,PYRAM\r
-       COMMON /MISCOM/\r
-     7 PEARL,RUG,CHAIN,BACK,LOOK,CAVE,NULL,ENTRNC,DPRSSN,SAY,LOCK,\r
-     8 THROW,FIND,INVENT,TURNS,LMWARN,KNFLOC,DETAIL,ABBNUM,\r
-     9 NUMDIE,MAXDIE,DKILL,FOOBAR,BONUS,CLOCK1,CLOCK2,\r
-     1 CLOSNG,PANIC,CLOSED,GAVEUP,SCORNG,ODLOC,STREAM,SPICES\r
-       COMMON /MISC2/ I,RTXSIZ,CLSMAX,LOCSIZ,CTEXT,STEXT,LTEXT,\r
-     1 SECT,TRAVEL,TRVCON,TRVLOC,TRVSIZ,TABNDX,OBJ,J,K,VERB,HNTSIZ,\r
-     2 MAXTRS,HINTED,HNTLOC,KK\r
-C\r
-       INTEGER LINES(12),DATA(78)\r
-C      The TRAVEL, TRVCON, and TRVLOC arrays are\r
-C      Packed with words 0,1,2 holding the data. Saves lots\r
-C      of wasted space at the expense of some complexity.\r
-       INTEGER TRAVEL(250), TRVCON(250), TRVLOC(250), TRVSIZ\r
-       INTEGER KTAB(300),ATAB(300),TABSIZ\r
-       INTEGER LTEXT(150),STEXT(150),KEY(150),COND(150),ABB(150),\r
-     1 ATLOC(150)\r
-       INTEGER PLAC(100),PLACE(100),FIXD(100),FIXED(100),LINK(200),\r
-     1 PTEXT(100),PROP(100),HOLDNG\r
-       INTEGER ACTSPK(35)\r
-       INTEGER RTEXT(205)\r
-       INTEGER CTEXT(12),CVAL(12)\r
-       INTEGER HINTLC(20),HINTS(20,4)\r
-       DIMENSION HINTED(20)\r
-       INTEGER TK(20),DLOC(6),ODLOC(6)\r
-       DIMENSION DSEEN(6)\r
-       INTEGER ASCVAR, TXTLOC, TRVS, CLSSES, OLDLOC\r
-       INTEGER HNTSIZ, HNTMAX, TALLY, TALLY2, CHLOC, CHLOC2, DFLAG\r
-       INTEGER DALTLC,GRATE,CAGE,ROD,ROD2,STEPS,BIRD,DOOR,PILLOW,SNAKE\r
-       INTEGER FISSUR,TABLET,CLAM,OYSTER,MAGZIN,DWARF,KNIFE,FOOD,BOTTLE\r
-       INTEGER WATER,OIL,PLANT,PLANT2,AXE,MIRROR,DRAGON,CHASM\r
-       INTEGER BEAR,MESSAG,VEND,BATTER,COINS,CHEST,EGGS,TRIDNT,VASE,EMRALD\r
-       INTEGER PYRAM,PEARL,RUG,CHAIN,BACK,LOOK,CAVE,NULL,ENTRNC,DPRSSN,SAY\r
-       INTEGER LOCK,THROW,FIND,INVENT,TURNS,KNFLOC,DETAIL,ABBNUM\r
-       INTEGER NUMDIE,MAXDIE,DKILL,FOOBAR,BONUS,CLOCK1,CLOCK2\r
-       INTEGER TROLL,TROLL2,STREAM,SPICES\r
-       INTEGER RTXSIZ,CLSMAX,LOCSIZ,SECT,TABNDX,OBJ\r
-       INTEGER VERB,HNTLOC,KK\r
-       INTEGER INDXNM(3),TEXTNM(3),SAVENM(3),INPTNM(3),CODE,NAME(3)\r
-C\r
-C\r
-C      ISHFT(NUMBER,IPOSIT)=NUMBER*(2**IPOSIT)\r
-C      BITSET(L,N)=(COND(L).AND.ISHFT(1,N)).NE.0\r
-\fC  DESCRIPTION OF THE DATABASE FORMAT\r
-C\r
-C\r
-C  THE DATA FILE CONTAINS SEVERAL SECTIONS.  EACH BEGINS WITH A LINE CONTAINING\r
-C  A NUMBER IDENTIFYING THE SECTION, AND ENDS WITH A LINE CONTAINING "-1".\r
-C\r
-C  SECTION 1: LONG FORM DESCRIPTIONS.  EACH LINE CONTAINS A LOCATION NUMBER,\r
-C      A COMMA, AND A LINE OF TEXT.  THE SET OF (NECESSARILY ADJACENT) LINES\r
-C      WHOSE NUMBERS ARE X FORM THE LONG DESCRIPTION OF LOCATION X.\r
-C  SECTION 2: SHORT FORM DESCRIPTIONS.  SAME FORMAT AS LONG FORM.  NOT ALL\r
-C      PLACES HAVE SHORT DESCRIPTIONS.\r
-C  SECTION 3: TRAVEL TABLE.  EACH LINE CONTAINS A LOCATION NUMBER (X), A SECOND\r
-C      LOCATION NUMBER (Y), AND A LIST OF MOTION NUMBERS (SEE SECTION 4).\r
-C      EACH MOTION REPRESENTS A VERB WHICH WILL GO TO Y IF CURRENTLY AT X.\r
-C      Y, IN TURN, IS INTERPRETED AS FOLLOWS.  LET M=Y/1000, N=Y MOD 1000.\r
-C              IF N<=300       IT IS THE LOCATION TO GO TO.\r
-C              IF 300<N<=500   N-300 IS USED IN A COMPUTED GOTO TO\r
-C                                      A SECTION OF SPECIAL CODE.\r
-C              IF N>500        MESSAGE N-500 FROM SECTION 6 IS PRINTED,\r
-C                                      AND HE STAYS WHEREVER HE IS.\r
-C      MEANWHILE, M SPECIFIES THE CONDITIONS ON THE MOTION.\r
-C              IF M=0          IT'S UNCONDITIONAL.\r
-C              IF 0<M<100      IT IS DONE WITH M% PROBABILITY.\r
-C              IF M=100        UNCONDITIONAL, BUT FORBIDDEN TO DWARVES.\r
-C              IF 100<M<=200   HE MUST BE CARRYING OBJECT M-100.\r
-C              IF 200<M<=300   MUST BE CARRYING OR IN SAME ROOM AS M-200.\r
-C              IF 300<M<=400   PROP(M MOD 100) MUST *NOT* BE 0.\r
-C              IF 400<M<=500   PROP(M MOD 100) MUST *NOT* BE 1.\r
-C              IF 500<M<=600   PROP(M MOD 100) MUST *NOT* BE 2, ETC.\r
-C      IF THE CONDITION (IF ANY) IS NOT MET, THEN THE NEXT *DIFFERENT*\r
-C      "DESTINATION" VALUE IS USED (UNLESS IT FAILS TO MEET *ITS* CONDITIONS,\r
-C      IN WHICH CASE THE NEXT IS FOUND, ETC.).  TYPICALLY, THE NEXT DEST WILL\r
-C      BE FOR ONE OF THE SAME VERBS, SO THAT ITS ONLY USE IS AS THE ALTERNATE\r
-C      DESTINATION FOR THOSE VERBS.  FOR INSTANCE:\r
-C              15      110022  29      31      34      35      23      43\r
-C              15      14      29\r
-C      THIS SAYS THAT, FROM LOC 15, ANY OF THE VERBS 29, 31, ETC., WILL TAKE\r
-C      HIM TO 22 IF HE'S CARRYING OBJECT 10, AND OTHERWISE WILL GO TO 14.\r
-C              11      303008  49\r
-C              11      9       50\r
-C      THIS SAYS THAT, FROM 11, 49 TAKES HIM TO 8 UNLESS PROP(3)=0, IN WHICH\r
-C      CASE HE GOES TO 9.  VERB 50 TAKES HIM TO 9 REGARDLESS OF PROP(3).\r
-C\r
-C      IN THIS IMPLEMENTATION, THE SECOND LOCATION NUMBER Y HAS BEEN\r
-C      SPLIT INTO M, CONDITIONS, AND N, LOCATION.\r
-C\r
-C  SECTION 4: VOCABULARY.  EACH LINE CONTAINS A NUMBER (N), A TAB, AND A\r
-C      FIVE-LETTER WORD.  CALL M=N/1000.  IF M=0, THEN THE WORD IS A MOTION\r
-C      VERB FOR USE IN TRAVELLING (SEE SECTION 3).  ELSE, IF M=1, THE WORD IS\r
-C      AN OBJECT.  ELSE, IF M=2, THE WORD IS AN ACTION VERB (SUCH AS "CARRY"\r
-C      OR "ATTACK").  ELSE, IF M=3, THE WORD IS A SPECIAL CASE VERB (SUCH AS\r
-C      "DIG") AND N MOD 1000 IS AN INDEX INTO SECTION 6.  OBJECTS FROM 50 TO\r
-C      (CURRENTLY, ANYWAY) 79 ARE CONSIDERED TREASURES (FOR PIRATE, CLOSEOUT).\r
-C  SECTION 5: OBJECT DESCRIPTIONS.  EACH LINE CONTAINS A NUMBER (N), A TAB,\r
-C      AND A MESSAGE.  IF N IS FROM 1 TO 100, THE MESSAGE IS THE "INVENTORY"\r
-C      MESSAGE FOR OBJECT N.  OTHERWISE, N SHOULD BE 000, 100, 200, ETC., AND\r
-C      THE MESSAGE SHOULD BE THE DESCRIPTION OF THE PRECEDING OBJECT WHEN ITS\r
-C      PROP VALUE IS N/100.  THE N/100 IS USED ONLY TO DISTINGUISH MULTIPLE\r
-C      MESSAGES FROM MULTI-LINE MESSAGES; THE PROP INFO ACTUALLY REQUIRES ALL\r
-C      MESSAGES FOR AN OBJECT TO BE PRESENT AND CONSECUTIVE.  PROPERTIES WHICH\r
-C      PRODUCE NO MESSAGE SHOULD BE GIVEN THE MESSAGE ">$<".\r
-C  SECTION 6: ARBITRARY MESSAGES.  SAME FORMAT AS SECTIONS 1, 2, AND 5, EXCEPT\r
-C      THE NUMBERS BEAR NO RELATION TO ANYTHING (EXCEPT FOR SPECIAL VERBS\r
-C      IN SECTION 4).\r
-C  SECTION 7: OBJECT LOCATIONS.  EACH LINE CONTAINS AN OBJECT NUMBER AND ITS\r
-C      INITIAL LOCATION (ZERO (OR OMITTED) IF NONE).  IF THE OBJECT IS\r
-C      IMMOVABLE, THE LOCATION IS FOLLOWED BY A "-1".  IF IT HAS TWO LOCATIONS\r
-C      (E.G. THE GRATE) THE FIRST LOCATION IS FOLLOWED WITH THE SECOND, AND\r
-C      THE OBJECT IS ASSUMED TO BE IMMOVABLE.\r
-C  SECTION 8: ACTION DEFAULTS.  EACH LINE CONTAINS AN "ACTION-VERB" NUMBER AND\r
-C      THE INDEX (IN SECTION 6) OF THE DEFAULT MESSAGE FOR THE VERB.\r
-C  SECTION 9: LIQUID ASSETS, ETC.  EACH LINE CONTAINS A NUMBER (N) AND UP TO 20\r
-C      LOCATION NUMBERS.  BIT N (WHERE 0 IS THE UNITS BIT) IS SET IN COND(LOC)\r
-C      FOR EACH LOC GIVEN.  THE COND BITS CURRENTLY ASSIGNED ARE:\r
-C              0       LIGHT\r
-C              1       IF BIT 2 IS ON: ON FOR OIL, OFF FOR WATER\r
-C              2       LIQUID ASSET, SEE BIT 1\r
-C              3       PIRATE DOESN'T GO HERE UNLESS FOLLOWING PLAYER\r
-C      OTHER BITS ARE USED TO INDICATE AREAS OF INTEREST TO "HINT" ROUTINES:\r
-C              4       TRYING TO GET INTO CAVE\r
-C              5       TRYING TO CATCH BIRD\r
-C              6       TRYING TO DEAL WITH SNAKE\r
-C              7       LOST IN MAZE\r
-C              8       PONDERING DARK ROOM\r
-C              9       AT WITT'S END\r
-C      COND(LOC) IS SET TO 2, OVERRIDING ALL OTHER BITS, IF LOC HAS FORCED\r
-C      MOTION.\r
-C  SECTION 10: CLASS MESSAGES.  EACH LINE CONTAINS A NUMBER (N), A TAB, AND A\r
-C      MESSAGE DESCRIBING A CLASSIFICATION OF PLAYER.  THE SCORING SECTION\r
-C      SELECTS THE APPROPRIATE MESSAGE, WHERE EACH MESSAGE IS CONSIDERED TO\r
-C      APPLY TO PLAYERS WHOSE SCORES ARE HIGHER THAN THE PREVIOUS N BUT NOT\r
-C      HIGHER THAN THIS N.  NOTE THAT THESE SCORES PROBABLY CHANGE WITH EVERY\r
-C      MODIFICATION (AND PARTICULARLY EXPANSION) OF THE PROGRAM.\r
-C  SECTION 11: HINTS.  EACH LINE CONTAINS A HINT NUMBER (CORRESPONDING TO A\r
-C      COND BIT, SEE SECTION 9), THE NUMBER OF TURNS HE MUST BE AT THE RIGHT\r
-C      LOC(S) BEFORE TRIGGERING THE HINT, THE POINTS DEDUCTED FOR TAKING THE\r
-C      HINT, THE MESSAGE NUMBER (SECTION 6) OF THE QUESTION, AND THE MESSAGE\r
-C      NUMBER OF THE HINT.  THESE VALUES ARE STASHED IN THE "HINTS" ARRAY.\r
-C      HNTMAX IS SET TO THE MAX HINT NUMBER (<= HNTSIZ).  NUMBERS 1-3 ARE\r
-C      UNUSABLE SINCE COND BITS ARE OTHERWISE ASSIGNED, SO 2 IS USED TO\r
-C      REMEMBER IF HE'S READ THE CLUE IN THE REPOSITORY, AND 3 IS USED TO\r
-C      REMEMBER WHETHER HE ASKED FOR INSTRUCTIONS (GETS MORE TURNS, BUT LOSES\r
-C      POINTS).\r
-C  SECTION 12: MAGIC MESSAGES. IDENTICAL TO SECTION 6 EXCEPT PUT IN A SEPARATE\r
-C      SECTION FOR EASIER REFERENCE.  MAGIC MESSAGES ARE USED BY THE STARTUP,\r
-C      MAINTENANCE MODE, AND RELATED ROUTINES.\r
-C  SECTION 0: END OF DATABASE.\r
-\fC  READ THE DATABASE IF WE HAVE NOT YET DONE SO\r
-C\r
-       ISEED=0\r
-C\r
-C FILSIZ Was 900 for RT-11 but we pack 6 records per.\r
-C\r
-       FILSIZ=150\r
-       TABSIZ=300\r
-       LOCSIZ=150\r
-       VRBSIZ=35\r
-       RTXSIZ = 205\r
-       HNTSIZ = 20\r
-       MAGSIZ = 35\r
-       TRVSIZ = 750\r
-       CLSMAX = 12\r
-C      VCNT = 0\r
-CDEBUG WRITE(4,1000)\r
-CDEBUG1000     FORMAT(' INITIALIZING...')\r
-C\r
-C FIRST, TRY TO RESTORE PRE-EXISTING COPY OF DATA BASE\r
-C\r
-       CALL USR(6,'ADVENT.IN',2,ERR)\r
-       IF (ERR .EQ. 0) GOTO 30\r
-20     CALL SIXOUT('L]OCATION OF TEXT DATABASE ([ATEXT.DA]) >',21,2)\r
-       WRITE(4,121)\r
-121    FORMAT('+',$)\r
-       READ(4,21) TEXTNM\r
-21     FORMAT(3A6)\r
-       IF (TEXTNM(1) .NE. ' ') GOTO 22\r
-       TEXTNM(1) = 'ATEXT.'\r
-       TEXTNM(2) = 'DA'\r
-       TEXTNM(3) = ' '\r
-22     CALL SIXOUT('L]OCATION OF TEXT INDEX    ([AINDX.DA]) >',21,2)\r
-       WRITE(4,121)\r
-       READ(4,21) INDXNM\r
-       IF (INDXNM(1) .NE. ' ') GOTO 23\r
-       INDXNM(1) = 'AINDX.'\r
-       INDXNM(2) = 'DA'\r
-       INDXNM(3) = ' '\r
-23     CALL SIXOUT('L]OCATION OF SAVED GAMES   ([ASAVE.DA]) >',21,2)\r
-       WRITE(4,121)\r
-       READ(4,21) SAVENM\r
-       IF (SAVENM(1) .NE. ' ') GOTO 24\r
-       SAVENM(1) = 'ASAVE.'\r
-       SAVENM(2) = 'DA'\r
-       SAVENM(3) = ' '\r
-24     CALL SIXOUT('L]OCATION OF TEXT INPUT   ([ADVENT.TX]) >',21,2)\r
-       WRITE(4,121)\r
-       READ(4,21)INPTNM\r
-       IF (INPTNM(1) .NE. ' ') GOTO 25\r
-       INPTNM(1) = 'ADVENT'\r
-       INPTNM(2) = '.TX'\r
-       INPTNM(3) = ' '\r
-25     CONTINUE\r
-\r
-       CALL USR(6, 'ADVENT.IN',3,ERR)\r
-       IF (ERR .NE. 0) WRITE(4,28)\r
-\r
-28     FORMAT(' CAN''T SAVE SETTINGS IN ADVENT.IN')\r
-       IF (ERR.NE.0) GOTO 40\r
-\r
-       WRITE(6, 29)INDXNM,TEXTNM,SAVENM,INPTNM\r
-29     FORMAT(' ADVENTURE SETUP FILE',/,\r
-     1         'INDX=',3A6,/,'TEXT=',3A6,/,'SAVE=',3A6,/,'INPT=',3A6)\r
-       CALL USR(6, 'ADVENT.IN',4,ERR)\r
-       GOTO 40\r
-\r
-30     INDXNM(1) = 'AINDX.'\r
-       INDXNM(2) = 'DA'\r
-       INDXNM(3) = ' '\r
-       TEXTNM(1) = 'ATEXT.'\r
-       TEXTNM(2) = 'DA'\r
-       TEXTNM(3) = ' '\r
-       SAVENM(1) = 'ASAVE.'\r
-       SAVENM(2) = 'DA'\r
-       SAVENM(3) = ' '\r
-       INPTNM(1) = 'ADVENT'\r
-       INPTNM(2) = '.TX'\r
-       INPTNM(3) = ' '\r
-31     CALL CHKEOF(EOF)\r
-       READ(6, 32) CODE, NAME\r
-       IF (EOF .NE. 0) GOTO 34\r
-32     FORMAT(A4,1X,3A6)\r
-       DO 33 I = 1, 3\r
-       IF (CODE .EQ. 'INDX') INDXNM(I) = NAME(I)\r
-       IF (CODE .EQ. 'TEXT') TEXTNM(I) = NAME(I)\r
-       IF (CODE .EQ. 'SAVE') SAVENM(I) = NAME(I)\r
-       IF (CODE .EQ. 'INPT') INPTNM(I) = NAME(I)\r
-33     CONTINUE\r
-       GO TO 31\r
-\r
-34     CONTINUE\r
-40     CALL RSTRGM(.FALSE.,I)\r
-       IF(I.NE.0) GO TO 10\r
-       CALL USR(8, TEXTNM, 2, ERR)\r
-C\r
-C If that can't be opened for input, gotta rebuild\r
-C\r
-       IF (ERR.NE.0) GOTO 10\r
-C\r
-C Hack to set the DEFINE FILE stuff up\r
-C\r
-       CALL SETIDL\r
-C      CALL USR(6, 'ADVENT.TX', 2, ERR)\r
-C      IF (ERR.EQ.0) GOTO 1235\r
-C      CALL SIXOUT('C]AN''T OPEN [ADVENT.TX] FOR INPUT, QUITTING!',23,0)\r
-C      STOP\r
-\r
-1235   WRITN = .FALSE.\r
-       GO TO 5000\r
-C\r
-C  CLEAR OUT THE VARIOUS TEXT-POINTER ARRAYS.  ALL TEXT IS STORED IN DISK\r
-C  FILE (RANDOM ACCESS ON UNIT 2).  THE TEXT-POINTER ARRAYS CONTAIN RECORD\r
-C  NUMBERS IN THE FILE.  STEXT(N) IS SHORT DESCRIPTION OF LOCATION N.\r
-C  LTEXT(N) IS LONG DESCRIPTION.  PTEXT(N) POINTS TO MESSAGE FOR PROP(N)=0.\r
-C  SUCCESSIVE PROP MESSAGES ARE FOUND BY CHASING POINTERS.  RTEXT CONTAINS\r
-C  SECTION 6'S STUFF.  CTEXT(N) POINTS TO A PLAYER-CLASS MESSAGE.  MTEXT IS FOR\r
-C  SECTION 12.  WE ALSO CLEAR COND.  SEE DESCRIPTION OF SECTION 9 FOR DETAILS.\r
-C\r
-       WRITN = .TRUE.\r
-10     DO 1001 I=1,TABSIZ\r
-       KTAB(I)=0\r
-       ATAB(I)=0\r
-C\r
-C A2TAB not used on the '8\r
-C      A2TAB(I)=0\r
-       IF(I.GT.100) GO TO 1990\r
-       PTEXT(I)=0\r
-       PROP(I)=0\r
-       PLAC(I)=0\r
-       PLACE(I)=0\r
-       FIXD(I)=0\r
-       FIXED(I)=0\r
-       LINK(I)=0\r
-       LINK(I+100)=0\r
-1990   IF(I.LE.RTXSIZ)RTEXT(I)=0\r
-       IF(I.LE.CLSMAX)CTEXT(I)=0\r
-C      IF(I.LE.MAGSIZ)MTEXT(I)=0\r
-       IF(I.LE.VRBSIZ)ACTSPK(I)=0\r
-       IF(I.GT.LOCSIZ)GOTO 1001\r
-       KEY(I)=0\r
-       ABB(I)=0\r
-       ATLOC(I)=0\r
-       STEXT(I)=0\r
-       LTEXT(I)=0\r
-       COND(I)=0\r
-1001   CONTINUE\r
-C\r
-       CALL USR(6, INPTNM, 2, ERR)\r
-       IF(ERR.EQ.0)GOTO 1236\r
-       CALL SIXOUT('C]AN''T OPEN ',6,2)\r
-        CALL SIXOUT(INPTNM, 9, 3)\r
-        CALL SIXOUT(' ]FOR INPUT!',6,1)\r
-       STOP\r
-1236   CALL USR(8, TEXTNM, 3, ERR)\r
-       IF (ERR.EQ.0) GOTO 1237\r
-       CALL SIXOUT('C]AN''T OPEN ',6,2)\r
-       CALL SIXOUT(TEXTNM, 9, 3)\r
-       CALL SIXOUT(' ]FOR OUTPUT',6,1)\r
-       STOP\r
-1237   DEFINE FILE 8(FILSIZ,78,U,RECORD)\r
-       RECORD = 1\r
-       ASCVAR = 1\r
-       LINUSE=1\r
-       TRVS=1\r
-       CLSSES=1\r
-C\r
-C  START NEW DATA SECTION.  ISECT IS THE SECTION NUMBER.\r
-C\r
-1002   READ(6,1003)ISECT\r
-1003   FORMAT(I5)\r
-CDEBUG WRITE(4,930)ISECT\r
-CDEBUG930      FORMAT(' NOW LOADING SECTION',I3)\r
-       OLDLOC=-1\r
-       GOTO(1100,1004,1004,1030,1040,1004,1004,1050,1060,1070,1004,\r
-     1     1080,1004) (ISECT+1)\r
-C            (0)  (1)  (2)  (3)  (4)  (5)  (6)  (7)  (8)  (9)  (10)\r
-C           (11) (12)\r
-       CALL BUG(9)\r
-C\r
-C  SECTIONS 1, 2, 5, 6, 10, 12.  READ MESSAGES AND SET UP POINTERS.\r
-C\r
-1004   READ(6,1005) LOC,LINES\r
-1005   FORMAT(I4,12A6)\r
-C      WRITE(8'ASCVAR) LOC,LINES\r
-       MULT = 13 * MOD(ASCVAR-1,6)+1\r
-       DATA(MULT) = LOC\r
-       DO 1006 I = 1,12\r
-1006   DATA(I+MULT) = LINES(I)\r
-       ASCVAR = ASCVAR + 1\r
-       IF (MOD(ASCVAR,6) .EQ. 0) WRITE(8'RECORD)DATA\r
-1007   LINUSE = ASCVAR-1\r
-       IF(LOC .EQ. -1) GO TO 1002\r
-       IF(LOC .EQ. OLDLOC) GO TO 1020\r
-       IF(ISECT.EQ.12)GOTO 1020\r
-       IF(ISECT.EQ.10)GOTO 1012\r
-       IF(ISECT.EQ.6)GOTO 1011\r
-       IF(ISECT.EQ.5)GOTO 1010\r
-       IF(ISECT.EQ.1)GOTO 1008\r
-C\r
-       IF(LOC.GT.LOCSIZ) CALL BUG(11)\r
-       STEXT(LOC)=LINUSE\r
-       GOTO 1020\r
-C\r
-1008   IF(LOC.GT.LOCSIZ) CALL BUG(11)\r
-       LTEXT(LOC)=LINUSE\r
-       GOTO 1020\r
-C\r
-1010   IF(LOC.GT.0.AND.LOC.LE.100)PTEXT(LOC)=LINUSE\r
-       GOTO 1020\r
-C\r
-1011   IF(LOC .GT. RTXSIZ) CALL BUG(6)\r
-       RTEXT(LOC)=LINUSE\r
-       GOTO 1020\r
-C\r
-1012   IF(CLSSES.GT.CLSMAX) CALL BUG(12)\r
-       CTEXT(CLSSES)=LINUSE\r
-       CVAL(CLSSES)=LOC\r
-       CLSSES=CLSSES+1\r
-C      GOTO 1020\r
-C1013\r
-C      IF(LOC.GT.MAGSIZ)CALL BUG(6)\r
-C      MTEXT(LOC)=LINUSE\r
-C\r
-1020   OLDLOC = LOC\r
-       IF(RECORD .GE. FILSIZ) CALL BUG(2)\r
-       GOTO 1004\r
-C\r
-C  THE STUFF FOR SECTION 3 IS ENCODED HERE.  EACH "FROM-LOCATION" GETS A\r
-C  CONTIGUOUS SECTION OF THE "TRAVEL" ARRAY.  EACH ENTRY IN TRAVEL IS\r
-C  KEYWORD (FROM SECTION 4, MOTION VERBS), AND IS NEGATED IF\r
-C  THIS IS THE LAST ENTRY FOR THIS LOCATION.  KEY(N) IS THE INDEX IN TRAVEL\r
-C  OF THE FIRST OPTION AT LOCATION N.\r
-C\r
-C  SPECIAL CONDITIONS ON TRAVEL ARE ENCODED IN THE CORRESPONDING\r
-C  ENTRIES OF TRVCON.  THE NEW LOCATION IS IN TRVLOC.\r
-C\r
-C\r
-1030   READ(6,1031)LOC,J,NEWLOC,TK\r
-1031   FORMAT(99I6)\r
-       IF(LOC.EQ.-1)GOTO 1002\r
-       IF(KEY(LOC).NE.0)GOTO 1033\r
-       KEY(LOC)=TRVS\r
-       GOTO 1035\r
-C1033  TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)\r
-1033   ITEMP = GETWRD(TRAVEL, TRVS-1, 0)\r
-       ITEMP=-ITEMP\r
-       CALL PUTWRD(TRAVEL, TRVS-1, ITEMP)\r
-1035   DO 1037 L=1,20\r
-       IF(TK(L).EQ.0)GOTO 1039\r
-C      TRAVEL(TRVS)=TK(L)\r
-       CALL PUTWRD(TRAVEL, TRVS, TK(L))\r
-C      TRVLOC(TRVS)=NEWLOC\r
-       CALL PUTWRD(TRVLOC, TRVS, NEWLOC)\r
-C      TRVCON(TRVS)=J\r
-       CALL PUTWRD(TRVCON, TRVS, J)\r
-       TRVS=TRVS+1\r
-       IF(TRVS.EQ.TRVSIZ)CALL BUG(3)\r
-1037   CONTINUE\r
-C1039  TRAVEL(TRVS-1)=-TRAVEL(TRVS-1)\r
-1039   ITEMP = GETWRD(TRAVEL, TRVS-1, 0)\r
-       ITEMP=-ITEMP\r
-       CALL PUTWRD(TRAVEL, TRVS-1, ITEMP)\r
-       GOTO 1030\r
-C\r
-C  HERE WE READ IN THE VOCABULARY.  KTAB(N) IS THE WORD NUMBER, ATAB(N) IS\r
-C  THE CORRESPONDING WORD.  THE -1 AT THE END OF SECTION 4 IS LEFT IN KTAB\r
-C  AS AN END-MARKER.\r
-C  OS/8 note: only reading first four characters as that's what's matched\r
-C  for vocabulary.\r
-C\r
-1040   DO 1042 TABNDX=1,TABSIZ\r
-1043   READ(6,1041)KTAB(TABNDX),ATAB(TABNDX)\r
-1041   FORMAT(I6,A4)\r
-       IF(KTAB(TABNDX).EQ.-1)GOTO 1002\r
-1042   CONTINUE\r
-       CALL BUG(4)\r
-C\r
-C  READ IN THE INITIAL LOCATIONS FOR EACH OBJECT.  ALSO THE IMMOVABILITY INFO.\r
-C  PLAC CONTAINS INITIAL LOCATIONS OF OBJECTS.  FIXD IS -1 FOR IMMOVABLE\r
-C  OBJECTS (INCLUDING THE SNAKE), OR = SECOND LOC FOR TWO-PLACED OBJECTS.\r
-C\r
-1050   READ(6,1031)IOBJ,J,K\r
-       IF(IOBJ.EQ.-1)GOTO 1002\r
-       IF(IOBJ.GT.100) CALL BUG(13)\r
-       PLAC(IOBJ)=J\r
-       FIXD(IOBJ)=K\r
-       GOTO 1050\r
-C\r
-C  READ DEFAULT MESSAGE NUMBERS FOR ACTION VERBS, STORE IN ACTSPK.\r
-C\r
-1060   READ(6,1031)VERB,J\r
-       IF(VERB.EQ.-1)GOTO 1002\r
-       IF(VERB.GT.VRBSIZ) CALL BUG(10)\r
-       ACTSPK(VERB)=J\r
-       VCNT=MAX0(VERB,VCNT)\r
-       GOTO 1060\r
-C\r
-C  READ INFO ABOUT AVAILABLE LIQUIDS AND OTHER CONDITIONS, STORE IN COND.\r
-C\r
-1070   READ(6,1031)K,TK\r
-       IF(K.EQ.-1)GOTO 1002\r
-       DO 1071 I=1,20\r
-       LOC=TK(I)\r
-       IF(LOC.EQ.0)GOTO 1070\r
-       IF (BITSET(LOC,K)) CALL BUG(8)\r
-1071   COND(LOC)=COND(LOC)+ISHFT(1,K)\r
-       GOTO 1070\r
-C\r
-C  READ DATA FOR HINTS.\r
-C\r
-1080   HNTMAX=0\r
-1081   READ(6,1031)K,TK\r
-       IF(K.EQ.-1)GOTO 1002\r
-       IF(K.LT.0.OR.K.GT.HNTSIZ)CALL BUG(7)\r
-       DO 1083 I=1,4\r
-1083   HINTS(K,I)=TK(I)\r
-       HNTMAX=MAX0(HNTMAX,K)\r
-       GOTO 1081\r
-\fC  FINISH CONSTRUCTING INTERNAL DATA FORMAT\r
-C      THEN SAVE THE RESULTS\r
-C\r
-1100   IF (MOD(ASCVAR,6) .NE. 0) WRITE(8'RECORD)DATA\r
-       CALL USR(8,TEXTNM,4,IERR)\r
-       CALL USR(8,TEXTNM,2,IERR)\r
-C\r
-C Restore the "DEFINE FILE" settings\r
-C\r
-       CALL SETIDL\r
-C1100  CALL CLOSE(1)\r
-       CALL SAVEGM(.FALSE.,I)\r
-       CONTINUE\r
-C\r
-C  HAVING READ IN THE DATABASE, CERTAIN THINGS ARE NOW CONSTRUCTED.  PROPS ARE\r
-C  SET TO ZERO.  WE FINISH SETTING UP COND BY CHECKING FOR FORCED-MOTION TRAVEL\r
-C  ENTRIES.  THE PLAC AND FIXD ARRAYS ARE USED TO SET UP ATLOC(N) AS THE FIRST\r
-C  OBJECT AT LOCATION N, AND LINK(IOBJ) AS THE NEXT OBJECT AT THE SAME LOCATION\r
-C  AS IOBJ.  (IOBJ>100 INDICATES THAT FIXED(IOBJ-100)=LOC; LINK(IOBJ) IS STILL THE\r
-C  CORRECT LINK TO USE.)  ABB IS ZEROED; IT CONTROLS WHETHER THE ABBREVIATED\r
-C  DESCRIPTION IS PRINTED.  COUNTS MOD 5 UNLESS "LOOK" IS USED.\r
-C\r
-C\r
-C  IF THE FIRST MOTION VERB IS 1 (ILLEGAL), THEN THIS IS A FORCED\r
-C  MOTION ENTRY.\r
-C\r
-5000   DO 1102 I=1,LOCSIZ\r
-       IF(LTEXT(I).EQ.0.OR.KEY(I).EQ.0)GOTO 1102\r
-       K=KEY(I)\r
-C      IF(IABS(TRAVEL(K)).EQ.1)COND(I)=2\r
-       ITEMP = GETWRD(TRAVEL, K, 0)\r
-       IF (IABS(ITEMP).EQ.1)COND(I)=2\r
-1102   CONTINUE\r
-C\r
-C  SET UP THE ATLOC AND LINK ARRAYS AS DESCRIBED ABOVE.  WE'LL USE THE DROP\r
-C  SUBROUTINE, WHICH PREFACES NEW OBJECTS ON THE LISTS.  SINCE WE WANT THINGS\r
-C  IN THE OTHER ORDER, WE'LL RUN THE LOOP BACKWARDS.  IF THE OBJECT IS IN TWO\r
-C  LOCS, WE DROP IT TWICE.  THIS ALSO SETS UP "PLACE" AND "FIXED" AS COPIES OF\r
-C  "PLAC" AND "FIXD".  ALSO, SINCE TWO-PLACED OBJECTS ARE TYPICALLY BEST\r
-C  DESCRIBED LAST, WE'LL DROP THEM FIRST.\r
-C\r
-       DO 1106 I=1,100\r
-       K=101-I\r
-       IF(FIXD(K).LE.0)GOTO 1106\r
-       CALL DROP(K+100,FIXD(K))\r
-       CALL DROP(K,PLAC(K))\r
-1106   CONTINUE\r
-C\r
-       DO 1107 I=1,100\r
-       K=101-I\r
-       FIXED(K)=FIXD(K)\r
-1107   IF(PLAC(K).NE.0.AND.FIXD(K).LE.0)CALL DROP(K,PLAC(K))\r
-C\r
-C  TREASURES, AS NOTED EARLIER, ARE OBJECTS 50 THROUGH MAXTRS (CURRENTLY 79).\r
-C  THEIR PROPS ARE INITIALLY -1, AND ARE SET TO 0 THE FIRST TIME THEY ARE\r
-C  DESCRIBED.  TALLY KEEPS TRACK OF HOW MANY ARE NOT YET FOUND, SO WE KNOW\r
-C  WHEN TO CLOSE THE CAVE.  TALLY2 COUNTS HOW MANY CAN NEVER BE FOUND (E.G. IF\r
-C  LOST BIRD OR BRIDGE).\r
-C\r
-       MAXTRS=79\r
-       TALLY=0\r
-       TALLY2=0\r
-       DO 1200 I=50,MAXTRS\r
-       IF(PTEXT(I).NE.0)PROP(I)=-1\r
-1200   TALLY=TALLY-PROP(I)\r
-C\r
-C  CLEAR THE HINT STUFF.  HINTLC(I) IS HOW LONG HE'S BEEN AT LOC WITH COND BIT\r
-C  I.  HINTED(I) IS TRUE IFF HINT I HAS BEEN USED.\r
-C\r
-       DO 1300 I=1,HNTMAX\r
-       HINTED(I)=.FALSE.\r
-1300   HINTLC(I)=0\r
-C\r
-CDEBUG WRITE(4,931)TABNDX,TABSIZ,VCNT,VRBSIZ,CLSSES,CLSMAX,\r
-CDEBUG     1   HNTMAX,HNTSIZ,TRVS,TRVSIZ,LINUSE,FILSIZ\r
-CDEBUG931      FORMAT(' USED VS MAX TABLE VALUES:'/\r
-CDEBUG     1   1X,I5,' OF ',I5,' VOCAB ENTRIES'/\r
-CDEBUG     2   1X,I5,' OF ',I5,' VERB ENTRIES'/\r
-CDEBUG     3   1X,I5,' OF ',I5,' CLASS ENTRIES'/\r
-CDEBUG     4   1X,I5,' OF ',I5,' HINT ENTRIES'/\r
-CDEBUG     5   1X,I5,' OF ',I5,' TRAVEL ENTRIES'/\r
-CDEBUG     6   1X,I5,' OF ',I5,' FILE RECORDS'/)\r
-C\r
-C  DEFINE SOME HANDY MNEMONICS.  THESE CORRESPOND TO OBJECT NUMBERS.\r
-C\r
-       KEYS=VOCAB('KEYS',1)\r
-       LAMP=VOCAB('LAMP',1)\r
-       GRATE=VOCAB('GRAT',1)\r
-       CAGE=VOCAB('CAGE',1)\r
-       ROD=VOCAB('ROD ',1)\r
-       ROD2=ROD+1\r
-       STEPS=VOCAB('STEP',1)\r
-       BIRD=VOCAB('BIRD',1)\r
-       DOOR=VOCAB('DOOR',1)\r
-       PILLOW=VOCAB('PILL',1)\r
-       SNAKE=VOCAB('SNAK',1)\r
-       FISSUR=VOCAB('FISS',1)\r
-       TABLET=VOCAB('TABL',1)\r
-       CLAM=VOCAB('CLAM',1)\r
-       OYSTER=VOCAB('OYST',1)\r
-       MAGZIN=VOCAB('MAGA',1)\r
-       DWARF=VOCAB('DWAR',1)\r
-       KNIFE=VOCAB('KNIF',1)\r
-       FOOD=VOCAB('FOOD',1)\r
-       BOTTLE=VOCAB('BOTT',1)\r
-       WATER=VOCAB('WATE',1)\r
-       OIL=VOCAB('OIL ',1)\r
-       PLANT=VOCAB('PLAN',1)\r
-       PLANT2=PLANT+1\r
-       AXE=VOCAB('AXE ',1)\r
-       MIRROR=VOCAB('MIRR',1)\r
-       DRAGON=VOCAB('DRAG',1)\r
-       CHASM=VOCAB('CHAS',1)\r
-       TROLL=VOCAB('TROL',1)\r
-       TROLL2=TROLL+1\r
-       BEAR=VOCAB('BEAR',1)\r
-       MESSAG=VOCAB('MESS',1)\r
-       VEND=VOCAB('VEND',1)\r
-       BATTER=VOCAB('BATT',1)\r
-C\r
-C  OBJECTS FROM 50 THROUGH WHATEVER ARE TREASURES.  HERE ARE A FEW.\r
-C\r
-       NUGGET=VOCAB('GOLD',1)\r
-       COINS=VOCAB('COIN',1)\r
-       CHEST=VOCAB('CHES',1)\r
-       EGGS=VOCAB('EGGS',1)\r
-       TRIDNT=VOCAB('TRID',1)\r
-       VASE=VOCAB('VASE',1)\r
-       EMRALD=VOCAB('EMER',1)\r
-       PYRAM=VOCAB('PYRA',1)\r
-       PEARL=VOCAB('PEAR',1)\r
-       RUG=VOCAB('RUG ',1)\r
-       CHAIN=VOCAB('CHAI',1)\r
-C\r
-C  THESE ARE MOTION-VERB NUMBERS.\r
-C\r
-       BACK=VOCAB('BACK',0)\r
-       LOOK=VOCAB('LOOK',0)\r
-       CAVE=VOCAB('CAVE',0)\r
-       NULL=VOCAB('NULL',0)\r
-       ENTRNC=VOCAB('ENTR',0)\r
-       DPRSSN=VOCAB('DEPR',0)\r
-       STREAM=VOCAB('STRE',0)\r
-C\r
-C  AND SOME ACTION VERBS.\r
-C\r
-       SAY=VOCAB('SAY ',2)\r
-       LOCK=VOCAB('LOCK',2)\r
-       THROW=VOCAB('THRO',2)\r
-       FIND=VOCAB('FIND',2)\r
-       INVENT=VOCAB('INVE',2)\r
-C\r
-C  INITIALISE THE DWARVES.  DLOC IS LOC OF DWARVES, HARD-WIRED IN.  ODLOC IS\r
-C  PRIOR LOC OF EACH DWARF, INITIALLY GARBAGE.  DALTLC IS ALTERNATE INITIAL LOC\r
-C  FOR DWARF, IN CASE ONE OF THEM STARTS OUT ON TOP OF THE ADVENTURER.  (NO 2\r
-C  OF THE 5 INITIAL LOCS ARE ADJACENT.)  DSEEN IS TRUE IF DWARF HAS SEEN HIM.\r
-C  DFLAG CONTROLS THE LEVEL OF ACTIVATION OF ALL THIS:\r
-C      0       NO DWARF STUFF YET (WAIT UNTIL REACHES HALL OF MISTS)\r
-C      1       REACHED HALL OF MISTS, BUT HASN'T MET FIRST DWARF\r
-C      2       MET FIRST DWARF, OTHERS START MOVING, NO KNIVES THROWN YET\r
-C      3       A KNIFE HAS BEEN THROWN (FIRST SET ALWAYS MISSES)\r
-C      3+      DWARVES ARE MAD (INCREASES THEIR ACCURACY)\r
-C  SIXTH DWARF IS SPECIAL (THE PIRATE).  HE ALWAYS STARTS AT HIS CHEST'S\r
-C  EVENTUAL LOCATION INSIDE THE MAZE.  THIS LOC IS SAVED IN CHLOC FOR REF.\r
-C  THE DEAD END IN THE OTHER MAZE HAS ITS LOC STORED IN CHLOC2.\r
-C\r
-       CHLOC=114\r
-       CHLOC2=140\r
-       DO 1700 I=1,6\r
-1700   DSEEN(I)=.FALSE.\r
-       DFLAG=0\r
-       DLOC(1)=19\r
-       DLOC(2)=27\r
-       DLOC(3)=33\r
-       DLOC(4)=44\r
-       DLOC(5)=64\r
-       DLOC(6)=CHLOC\r
-       DALTLC=18\r
-C\r
-C  OTHER RANDOM FLAGS AND COUNTERS, AS FOLLOWS:\r
-C      TURNS   TALLIES HOW MANY COMMANDS HE'S GIVEN (IGNORES YES/NO)\r
-C      LIMIT   LIFETIME OF LAMP (NOT SET HERE)\r
-C      KNFLOC  0 IF NO KNIFE HERE, LOC IF KNIFE HERE, -1 AFTER CAVEAT\r
-C      DETAIL  HOW OFTEN WE'VE SAID "NOT ALLOWED TO GIVE MORE DETAIL"\r
-C      ABBNUM  HOW OFTEN WE SHOULD PRINT NON-ABBREVIATED DESCRIPTIONS\r
-C      MAXDIE  NUMBER OF REINCARNATION MESSAGES AVAILABLE (UP TO 5)\r
-C      NUMDIE  NUMBER OF TIMES KILLED SO FAR\r
-C      HOLDNG  NUMBER OF OBJECTS BEING CARRIED\r
-C      DKILL   NUMBER OF DWARVES KILLED (UNUSED IN SCORING, NEEDED FOR MSG)\r
-C      FOOBAR  CURRENT PROGRESS IN SAYING "FEE FIE FOE FOO".\r
-C      BONUS   USED TO DETERMINE AMOUNT OF BONUS IF HE REACHES CLOSING\r
-C      CLOCK1  NUMBER OF TURNS FROM FINDING LAST TREASURE TILL CLOSING\r
-C      CLOCK2  NUMBER OF TURNS FROM FIRST WARNING TILL BLINDING FLASH\r
-C      LOGICALS WERE EXPLAINED EARLIER\r
-C\r
-       TURNS=0\r
-       LMWARN=.FALSE.\r
-       KNFLOC=0\r
-       DETAIL=0\r
-       ABBNUM=5\r
-       DO 1800 I=0,4\r
-1800   IF(RTEXT(2*I+81).NE.0)MAXDIE=I+1\r
-       NUMDIE=0\r
-       HOLDNG=0\r
-       DKILL=0\r
-       FOOBAR=0\r
-       BONUS=0\r
-       CLOCK1=30\r
-       CLOCK2=50\r
-       CLOSNG=.FALSE.\r
-       PANIC=.FALSE.\r
-       CLOSED=.FALSE.\r
-       GAVEUP=.FALSE.\r
-       SCORNG=.FALSE.\r
-C\r
-C\r
-C\r
-C  FINALLY, SINCE WE'RE CLEARLY SETTING THINGS UP FOR THE FIRST TIME...\r
-C\r
-C      PAUSE   'INIT DONE'\r
-       RETURN\r
-       END\r