+++ /dev/null
-C SAVE/RESTORE PROCESSOR\r
-C\r
-C WRITTEN BY BOB SUPNIK\r
-C DISK ENGINEERING\r
-C 25-AUG-78\r
-C\r
-C CURRENT LIMITS:\r
-C 750 TRAVEL OPTIONS (TRAVEL, TRVSIZ).\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
- SUBROUTINE RSTRGM(F1,F2)\r
- LOGICAL F1\r
- INTEGER F2\r
-C IMPLICIT INTEGER (A-Z)\r
- LOGICAL LMWARN,CLOSNG,PANIC,HINTED,\r
- 1 CLOSED,GAVEUP,SCORNG,DSEEN\r
-C\r
- COMMON /VERSN/ VMAJ, VMIN, VEDIT\r
- INTEGER VMAJ, VMIN, VEDIT\r
- COMMON /FILES/ INDXNM, TEXTNM, SAVENM\r
- INTEGER INDXNM(3), TEXTNM(3), SAVENM(3)\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
- COMMON /MISC3/ATTACK,DTOTAL,OLDLC2,LIMIT,MXSCOR,SCORE,\r
- 1 STICK,WZDARK\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,EMRALD\r
- INTEGER BEAR,MESSAG,VEND,BATTER,COINS,CHEST,EGGS,TRIDNT,VASE\r
- INTEGER PYRAM,PEARL,RUG,CHAIN,BACK,LOOK,CAVE,NULL,ENTRNC,DPRSSN\r
- INTEGER LOCK,THROW,FIND,INVENT,TURNS,KNFLOC,DETAIL,ABBNUM,SAY\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 ATTACK,DTOTAL,OLDLC2,LIMIT,MXSCOR,SCORE,STICK,WZDARK\r
-C\r
-C USR call - FORTRAN unit, filename, operation, error flag\r
-C Operation is 2, open input; 3 open output; 4 close output.\r
-C Calling "CLOSE" on an input file causes it to be deleted!\r
-C\r
- IF (.NOT. F1) GOTO 10\r
-C\r
-C Attempt to restore saved database\r
-C\r
- CALL USR(7, SAVENM, 2, IERR)\r
- IF (IERR.NE.0) GOTO 60\r
- GOTO 20\r
-C\r
-C Attempt to restore initial database\r
-C\r
-10 CALL USR(7, INDXNM, 2, IERR)\r
- IF (IERR.EQ.0) GOTO 20\r
- F2=-1\r
- RETURN\r
-C\r
-20 READ(7) I1,I2,I3\r
- IF((I1.NE.VMAJ).OR.(I2.NE.VMIN)) GO TO 50\r
- READ(7) RTEXT,KTAB,ATAB\r
- READ(7) ATLOC,LINK,PLACE,FIXED,HOLDNG\r
- READ(7) PTEXT,ABB,LINUSE,TRVS,CLSSES\r
- READ(7) OLDLOC,LOC,CVAL,NEWLOC,KEY\r
- READ(7) PLAC,FIXD,ACTSPK,COND,HINTS\r
- READ(7) HNTMAX,PROP,TALLY,TALLY2,HINTLC\r
- READ(7) CHLOC,CHLOC2,DSEEN,DFLAG,DLOC,DALTLC\r
- READ(7) TURNS,LMWARN,KNFLOC,DETAIL,ABBNUM\r
- READ(7) NUMDIE,MAXDIE,DKILL,FOOBAR,BONUS\r
- READ(7) CLOCK1,CLOCK2,CLOSNG,PANIC,CLOSED\r
- READ(7) GAVEUP,SCORNG,ODLOC,CTEXT,STEXT,LTEXT\r
- READ(7) TRAVEL,TRVCON,TRVLOC,MAXTRS,HINTED,HNTLOC\r
- READ(7) ATTACK,DTOTAL,OLDLC2,LIMIT,MXSCOR,SCORE,STICK,WZDARK\r
-C\r
-C CLOSNG = 0\r
- IF(F1) CALL SIXOUT('R]ESTORED.@',5,0)\r
- F2=0\r
- RETURN\r
-50 IF(F1) CALL SIXOUT('F]ILE IS OBSOLETE, [RESTORE] FAILS.',18,0)\r
- F2=-1\r
- RETURN\r
-60 CALL SIXOUT('C]AN''T OPEN SAVE FILE, [RESTORE] FAILS.', 22, 0)\r
- F2=-1\r
- RETURN\r
- END\r