C INIT-- DUNGEON INITIALIZATION SUBROUTINE LOGICAL FUNCTION INIT(X) IMPLICIT INTEGER (A-Z) LOGICAL PROTCT INTEGER LINE(39),SDIR(15),CDIR(15) LOGICAL PRSWON COMMON /PRSVEC/ PRSA,PRSI,PRSO,PRSWON,PRSCON COMMON /ORPHS/ OFLAG,OACT,OSLOT,OPREP,ONAME COMMON /LAST/ LASTIT LOGICAL TELFLG COMMON /PLAY/ WINNER,HERE,TELFLG COMMON /STATE/ MOVES,DEATHS,RWSCOR,MXSCOR,MXLOAD, 1 LTSHFT,BLOC,MUNGRM,HS,EGSCOR,EGMXSC COMMON /SCREEN/ FROMDR,SCOLRM,SCOLAC COMMON /RMSG/ MLNT,RTEXT(1050) COMMON /STAR/ MBASE,STRBIT COMMON /VERS/ VMAJ,VMIN,VEDIT COMMON /TIME/ PLTIME,SHOUR,SMIN,SSEC COMMON /CHAN/ INPCH,OUTCH,DBCH COMMON /DEBUG/ DBGFLG,PRSFLG,GDTFLG COMMON /HYPER/ HFACTR COMMON /ROOMS/ RLNT,RDESC2,RDESC1(200),REXIT(200), 1 RACTIO(200),RVAL(200),RFLAG(200) INTEGER RRAND(200) EQUIVALENCE (RVAL,RRAND) COMMON /RFLAG/ RSEEN,RLIGHT,RLAND,RWATER,RAIR, 1 RSACRD,RFILL,RMUNG,RBUCK,RHOUSE,RNWALL,REND COMMON /RINDEX/ WHOUS,LROOM,CELLA COMMON /RINDEX/ MTROL,MAZE1 COMMON /RINDEX/ MGRAT,MAZ15 COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER COMMON /RINDEX/ STREA,EGYPT,ECHOR COMMON /RINDEX/ TSHAF COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC COMMON /RINDEX/ CAROU COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4 COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL COMMON /RINDEX/ CPANT,CPOUT,CPUZZ COMMON /EXITS/ XLNT,TRAVEL(900) COMMON /CURXT/ XTYPE,XROOM1,XSTRNG,XACTIO,XOBJ EQUIVALENCE (XFLAG,XOBJ) COMMON /XPARS/ XRMASK,XDMASK,XFMASK,XFSHFT,XASHFT, 1 XELNT(4),XNORM,XNO,XCOND,XDOOR,XLFLAG COMMON /OBJCTS/ OLNT,ODESC1(220),ODESC2(220),ODESCO(220), 1 OACTIO(220),OFLAG1(220),OFLAG2(220),OFVAL(220), 2 OTVAL(220),OSIZE(220),OCAPAC(220),OROOM(220), 3 OADV(220),OCAN(220),OREAD(220) COMMON /OROOM2/ R2LNT,O2(20),R2(20) COMMON /OINDEX/ GARLI,FOOD,GUNK,COAL,MACHI,DIAMO,TCASE,BOTTL COMMON /OINDEX/ WATER,ROPE,KNIFE,SWORD,LAMP,BLAMP,RUG COMMON /OINDEX/ LEAVE,TROLL,AXE COMMON /OINDEX/ RKNIF,KEYS,ICE,BAR COMMON /OINDEX/ COFFI,TORCH,TBASK,FBASK,IRBOX COMMON /OINDEX/ GHOST,TRUNK,BELL,BOOK,CANDL COMMON /OINDEX/ MATCH,TUBE,PUTTY,WRENC,SCREW,CYCLO,CHALI COMMON /OINDEX/ THIEF,STILL,WINDO,GRATE,DOOR COMMON /OINDEX/ HPOLE,LEAK,RBUTT,RAILI COMMON /OINDEX/ POT,STATU,IBOAT,DBOAT,PUMP,RBOAT COMMON /OINDEX/ STICK,BUOY,SHOVE,BALLO,RECEP,GUANO COMMON /OINDEX/ BROPE,HOOK1,HOOK2,SAFE,SSLOT,BRICK,FUSE COMMON /OINDEX/ GNOME,BLABE,DBALL,TOMB COMMON /OINDEX/ LCASE,CAGE,RCAGE,SPHER,SQBUT COMMON /OINDEX/ FLASK,POOL,SAFFR,BUCKE,ECAKE,ORICE,RDICE,BLICE COMMON /OINDEX/ ROBOT,FTREE,BILLS,PORTR,SCOL,ZGNOM COMMON /OINDEX/ EGG,BEGG,BAUBL,CANAR,BCANA COMMON /OINDEX/ YLWAL,RDWAL,PINDR,RBEAM COMMON /OINDEX/ ODOOR,QDOOR,CDOOR,NUM1,NUM8 COMMON /OINDEX/ WARNI,CSLIT,GCARD,STLDR COMMON /OINDEX/ HANDS,WALL,LUNGS,SAILO,AVIAT,TEETH COMMON /OINDEX/ ITOBJ,EVERY,VALUA,OPLAY,WNORT,GWATE,MASTER LOGICAL*1 CFLAG COMMON /CEVENT/ CLNT,CTICK(25),CACTIO(25),CFLAG(25) LOGICAL THFFLG,SWDACT,THFACT COMMON /HACK/ THFPOS,THFFLG,THFACT,SWDACT,SWDSTA COMMON /VILL/ VLNT,VILLNS(4),VPROB(4),VOPPS(4),VBEST(4),VMELEE(4) COMMON /ADVS/ ALNT,AROOM(4),ASCORE(4),AVEHIC(4), 1 AOBJ(4),AACTIO(4),ASTREN(4),AFLAG(4) COMMON /AINDEX/ PLAYER,AROBOT,AMASTR LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF, 1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF, 2 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF, 3 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF, 4 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF, 5 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF, 6 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF, 7 FOLLWF,SPELLF,CPOUTF,CPUSHF COMMON /FINDEX/ BTIEF,BINFF COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP COMMON /FINDEX/ MDIR,MLOC,POLEUF COMMON /FINDEX/ QUESNO,NQATT,CORRCT COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE LOGICAL*1 FLAGS(46) INTEGER SWITCH(22) EQUIVALENCE (FLAGS(1),TROLLF) EQUIVALENCE (SWITCH(1),BTIEF) DATA SDIR/'N ','NE','E ','SE','S ','SW','W ','NW', 1'U ','D ','LA','LN','EN','EX','CR'/ DATA CDIR/"2000,"4000,"6000,"10000,"12000,"14000,"16000, 1"20000, 2"22000,"24000,"26000,"30000,"32000,"34000,"36000/ IF(PROTCT(X)) GO TO 10000 TYPE 10100 10100 FORMAT(' There appears before you a threatening figure clad 1 all over'/' in heavy black armor. His legs seem like the 2 massive trunk'/' of the oak tree. His broad shoulders and 3 helmeted head loom'/' high over your own puny frame, and 4 you realize that his powerful'/' arms could easily crush the 5 very life from your body. There'/' hangs from his belt a 6 veritable arsenal of deadly weapons:'/' sword, mace, ball 7 and chain, dagger, lance, and trident.'/' He speaks with a 8 commanding voice:'//20X,'"You shall not pass."'//' As 9 he grabs you by the neck all grows dim about you.') CALL EXIT 10000 INIT=.FALSE. MMAX=1050 OMAX=220 RMAX=200 VMAX=4 AMAX=4 CMAX=25 FMAX=46 SMAX=22 XMAX=900 R2MAX=20 DIRMAX=15 MLNT=0 OLNT=0 RLNT=0 VLNT=0 ALNT=0 CLNT=0 XLNT=1 R2LNT=0 LTSHFT=10 MXSCOR=LTSHFT EGSCOR=0 EGMXSC=0 MXLOAD=100 RWSCOR=0 DEATHS=0 MOVES=0 PLTIME=0 MUNGRM=0 HS=0 PRSA=0 PRSI=0 PRSO=0 PRSCON=1 OFLAG=0 OACT=0 OSLOT=0 OPREP=0 ONAME=0 THFFLG=.FALSE. THFACT=.TRUE. SWDACT=.FALSE. SWDSTA=0 RECNO=1 MBASE=0 INPCH=5 OUTCH=5 DBCH=2 DO 5 I=1,CMAX CFLAG(I)=.FALSE. CTICK(I)=0 CACTIO(I)=0 5 CONTINUE DO 10 I=1,FMAX FLAGS(I)=.FALSE. 10 CONTINUE BUOYF=.TRUE. EGYPTF=.TRUE. CAGETF=.TRUE. MR1F=.TRUE. MR2F=.TRUE. FOLLWF=.TRUE. DO 12 I=1,SMAX SWITCH(I)=0 12 CONTINUE ORMTCH=4 LCELL=1 PNUMB=1 MDIR=270 MLOC=MRB CPHERE=10 DO 15 I=1,R2MAX R2(I)=0 O2(I)=0 15 CONTINUE DO 20 I=1,XMAX TRAVEL(I)=0 20 CONTINUE DO 30 I=1,VMAX VOPPS(I)=0 VPROB(I)=0 VILLNS(I)=0 VBEST(I)=0 VMELEE(I)=0 30 CONTINUE DO 40 I=1,OMAX ODESC1(I)=0 ODESC2(I)=0 ODESCO(I)=0 OREAD(I)=0 OACTIO(I)=0 OFLAG1(I)=0 OFLAG2(I)=0 OFVAL(I)=0 OTVAL(I)=0 OSIZE(I)=0 OCAPAC(I)=0 OCAN(I)=0 OADV(I)=0 OROOM(I)=0 40 CONTINUE RDESC2=0 DO 50 I=1,RMAX RDESC1(I)=0 RACTIO(I)=0 RFLAG(I)=0 RVAL(I)=0 REXIT(I)=0 50 CONTINUE DO 60 I=1,MMAX RTEXT(I)=0 60 CONTINUE DO 70 I=1,AMAX AROOM(I)=0 ASCORE(I)=0 AVEHIC(I)=0 AOBJ(I)=0 AACTIO(I)=0 ASTREN(I)=0 AFLAG(I)=0 70 CONTINUE DBGFLG=0 PRSFLG=0 GDTFLG=0 FROMDR=0 SCOLRM=0 SCOLAC=0 OPEN(UNIT=1,NAME='SY:[1,377]DINDX.BIN',TYPE='OLD',READONLY, 1 SHARED,FORM='UNFORMATTED',ACCESS='SEQUENTIAL',ERR=75) READ(1) I,J,K IF((I.NE.VMAJ).OR.(J.NE.VMIN)) 1 GO TO 170 OPEN(UNIT=DBCH,NAME='SY:[1,377]DTEXT.BIN',TYPE='OLD',READONLY, 1 SHARED,FORM='UNFORMATTED',ACCESS='DIRECT', 2 RECORDSIZE=20,DISPOSE='SAVE',ERR=170) D TYPE 150 D150 FORMAT(' RESTORING FROM "DINDX.BIN"') READ(1) MXSCOR,STRBIT,EGMXSC READ(1) RLNT,RDESC2,RDESC1,REXIT,RACTIO,RVAL,RFLAG READ(1) XLNT,TRAVEL READ(1) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2, 1 OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN, 2 OREAD READ(1) R2LNT,O2,R2 READ(1) CLNT,CTICK,CACTIO,CFLAG READ(1) VLNT,VILLNS,VPROB,VOPPS,VBEST,VMELEE READ(1) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG READ(1) MBASE,MLNT,RTEXT CLOSE(UNIT=1,DISPOSE='SAVE') GO TO 1025 170 CLOSE(UNIT=1,DISPOSE='SAVE') 75 OPEN (UNIT=1,NAME='SY:[1,377]DTEXT.TXT',TYPE='OLD',READONLY,ERR=1900) OPEN (UNIT=DBCH,NAME='SY:[1,377]DTEXT.BIN',TYPE='UNKNOWN', 1 FORM='UNFORMATTED',ACCESS='DIRECT',RECORDSIZE=20, 2 DISPOSE='SAVE',INITIALSIZE=500,ERR=1950) TYPE 185 185 FORMAT(' CREATING NEW DATA FILES') 80 READ (1,90) I,LINE 90 FORMAT(I5,39A2) IF(I.EQ.0) GO TO 80 IF(I.LT.0) GO TO 1000 D TYPE 125,I D125 FORMAT(' INITIALIZING SECTION #',I4) IF(I.LE.8) GO TO 100 GO TO (400,500,600,700,800,900,950),(I-8) CALL BUG(12,I) 100 PREVJ=0 110 READ(1,90) J,LINE IF(J.EQ.0) GO TO 110 IF(J.LT.0) GO TO 80 IF(J.EQ.PREVJ) GO TO 300 GO TO (210,220,230,240,250,260,270,280),I CALL BUG(12,I) 210 IF(J.GT.MMAX) CALL BUG(13,J) IF(RTEXT(J).NE.0) CALL BUG(14,J) RTEXT(J)=-RECNO MLNT=MAX0(MLNT,J) MBASE=MAX0(MBASE,J) GO TO 300 220 K=J+MBASE IF(K.GT.MMAX) CALL BUG(13,K) IF(RTEXT(K).NE.0) CALL BUG(14,K) RTEXT(K)=-RECNO MLNT=MAX0(MLNT,K) GO TO 300 230 IF(J.GT.RMAX) CALL BUG(15,J) IF(RDESC1(J).NE.0) CALL BUG(16,J) RDESC1(J)=-RECNO GO TO 300 240 IF(J.GT.RMAX) CALL BUG(17,J) IF(RDESC2.EQ.0) RDESC2=-RECNO+1 GO TO 300 250 IF(J.GT.OMAX) CALL BUG(19,J) IF(ODESC1(J).NE.0) CALL BUG(20,J) ODESC1(J)=-RECNO GO TO 300 260 IF(J.GT.OMAX) CALL BUG(21,J) IF(ODESC2(J).NE.0) CALL BUG(22,J) ODESC2(J)=-RECNO GO TO 300 270 IF(J.GT.OMAX) CALL BUG(23,J) IF(ODESCO(J).NE.0) CALL BUG(24,J) ODESCO(J)=-RECNO GO TO 300 280 IF(J.GT.OMAX) CALL BUG(25,J) IF(OREAD(J).NE.0) CALL BUG(26,J) OREAD(J)=-RECNO GO TO 300 300 WRITE(DBCH'RECNO) J,LINE RECNO=RECNO+1 PREVJ=J GO TO 110 400 READ(1,90) J,LINE IF(J.LT.0) GO TO 80 IF(J.EQ.0) GO TO 400 IF(J.GT.RMAX) CALL BUG(28,J) RLNT=MAX0(RLNT,J) READ(1,425) RACTIO(J),RVAL(J),RFLAG(J) 425 FORMAT(2I6,O7) IF((RFLAG(J).AND.REND).EQ.0) 1 MXSCOR=MXSCOR+RVAL(J) IF((RFLAG(J).AND.REND).NE.0) 1 EGMXSC=EGMXSC+RVAL(J) PREVX=0 405 READ(1,415) DIR,XTYPE,XROOM1 415 FORMAT(A2,2I6) IF(DIR.EQ.' ') GO TO 400 DO 410 K=1,DIRMAX IF(DIR.EQ.SDIR(K)) GO TO 420 410 CONTINUE CALL BUG(29,DIR) 420 IF((XTYPE.LE.0).OR.(XTYPE.GT.(XFMASK+1))) CALL BUG(30,XTYPE) IF(XROOM1.GT.RMAX) CALL BUG(31,XROOM1) IF(REXIT(J).EQ.0) REXIT(J)=XLNT IF((XLNT+XELNT(XTYPE)).GT.XMAX) CALL BUG(32,XLNT) TRAVEL(XLNT)=CDIR(K)+((XTYPE-1)*XFSHFT)+XROOM1+XLFLAG IF(PREVX.NE.0) TRAVEL(PREVX)=TRAVEL(PREVX)-XLFLAG GO TO (480,470,460,450),XTYPE CALL BUG(30,XTYPE) 450 READ(1,455) XOBJ,XACTIO,LINE 455 FORMAT(2I6,39A2) IF((XOBJ.LE.0).OR.(XOBJ.GT.OMAX)) CALL BUG(34,XOBJ) GO TO 468 460 READ(1,465) XOBJ,XACTIO,LINE 465 FORMAT(2I6,39A2) IF((XOBJ.LE.0).OR.(XOBJ.GT.FMAX)) CALL BUG(35,XOBJ) 468 TRAVEL(XLNT+2)=(XACTIO*XASHFT)+XOBJ GO TO 478 470 READ(1,475) LINE 475 FORMAT(39A2) 478 IF(LINE(1).EQ.' ') GO TO 480 WRITE(DBCH'RECNO) RECNO,LINE TRAVEL(XLNT+1)=-RECNO RECNO=RECNO+1 480 PREVX=XLNT XLNT=XLNT+XELNT(XTYPE) GO TO 405 600 STRBIT=OLNT 500 READ(1,90) J,LINE IF(J.LT.0) GO TO 80 IF(J.EQ.0) GO TO 500 IF(J.GT.OMAX) CALL BUG(27,J) OLNT=MAX0(OLNT,J) READ(1,560) OROOM(J),OCAN(J),OACTIO(J),OFLAG1(J), 1 OFLAG2(J),OFVAL(J),OTVAL(J),OSIZE(J),OCAPAC(J) 560 FORMAT(3I6,2O7,4I6) IF(OROOM(J).LT.0) 1 OROOM(J)=IABS(OROOM(J))*HFACTR MXSCOR=MXSCOR+OFVAL(J)+OTVAL(J) GO TO 500 700 READ(1,710) J,K,L,LINE 710 FORMAT(3I5,39A2) IF(J.LT.0) GO TO 80 IF(J.EQ.0) GO TO 700 VLNT=VLNT+1 IF(VLNT.GT.VMAX) CALL BUG(36,VLNT) VILLNS(VLNT)=J VBEST(VLNT)=K VMELEE(VLNT)=L GO TO 700 800 READ(1,90) J,LINE IF(J.LT.0) GO TO 80 IF(J.EQ.0) GO TO 800 IF(J.GT.CMAX) CALL BUG(37,J) CLNT=MAX0(CLNT,J) READ(1,890) CACTIO(J),CTICK(J),CFLAG(J) 890 FORMAT(2I6,L2) GO TO 800 900 READ(1,90) J,LINE IF(J.LT.0) GO TO 80 IF(J.EQ.0) GO TO 900 IF(J.GT.AMAX) CALL BUG(38,J) ALNT=MAX0(ALNT,J) READ(1,990) AROOM(J),AOBJ(J),AACTIO(J),ASTREN(J) 990 FORMAT(4I6) GO TO 900 950 READ(1,955) J,K,LINE 955 FORMAT(2I5,39A2) IF(J.LT.0) GO TO 80 IF(J.EQ.0) GO TO 950 R2LNT=R2LNT+1 IF(R2LNT.GT.R2MAX) CALL BUG(33,R2LNT) O2(R2LNT)=J R2(R2LNT)=K GO TO 950 1000 J=-1 WRITE(DBCH'RECNO) J,LINE RECNO=RECNO+1 CLOSE (UNIT=1,DISPOSE='SAVE') OPEN (UNIT=1,NAME='SY:[1,377]DINDX.BIN',TYPE='NEW', 1 FORM='UNFORMATTED',ACCESS='SEQUENTIAL',ERR=1025) D TYPE 1005 D1005 FORMAT(' CREATING NEW "DINDX.BIN"') WRITE(1) VMAJ,VMIN,VEDIT WRITE(1) MXSCOR,STRBIT,EGMXSC WRITE(1) RLNT,RDESC2,RDESC1,REXIT,RACTIO,RVAL,RFLAG WRITE(1) XLNT,TRAVEL WRITE(1) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2, 1 OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN, 2 OREAD WRITE(1) R2LNT,O2,R2 WRITE(1) CLNT,CTICK,CACTIO,CFLAG WRITE(1) VLNT,VILLNS,VPROB,VOPPS,VBEST,VMELEE WRITE(1) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG WRITE(1) MBASE,MLNT,RTEXT CLOSE (UNIT=1,DISPOSE='SAVE') 1025 CONTINUE CALL ITIME(SHOUR,SMIN,SSEC) CALL IDATE(I,J,K) CALL INIRND(I.OR.J.OR.K,SHOUR.OR.SMIN.OR.SSEC) WINNER=PLAYER THFPOS=OROOM(THIEF) BLOC=OROOM(BALLO) HERE=AROOM(WINNER) LASTIT=AOBJ(PLAYER) INIT=.TRUE. D TYPE 1050,RLNT,RMAX,XLNT,XMAX,OLNT,OMAX,MLNT,MMAX, D 1 VLNT,VMAX,ALNT,AMAX,CLNT,CMAX,R2LNT,R2MAX D1050 FORMAT(' USED:'/1X,I5,' OF',I5,' ROOMS'/ D 11X,I5,' OF',I5,' EXITS'/ D 21X,I5,' OF',I5,' OBJECTS'/ D 31X,I5,' OF',I5,' MESSAGES'/ D 41X,I5,' OF',I5,' VILLAINS'/ D 51X,I5,' OF',I5,' ADVENTURERS'/ D 61X,I5,' OF',I5,' CLOCK EVENTS'/ D 71X,I5,' OF',I5,' ROOM2 SLOTS') D TYPE 1150,MXSCOR,EGMXSC,RECNO,RDESC2,MBASE,STRBIT D1150 FORMAT(' MAX SCORE=',I5/' EG SCORE=',I5/ D 1' MAX RECNO=',I5/' RDESC2 BASE=',I5/ D 1' MELEE START=',I5/' STAR MASK=',I7) D PAUSE 1 RETURN 1900 TYPE 910 TYPE 980 RETURN 1950 TYPE 960 TYPE 980 RETURN 910 FORMAT(' I can''t open "DTEXT.TXT".') 960 FORMAT(' I can''t open "DTEXT.BIN".') 980 FORMAT(' Suddenly a sinister, wraithlike figure appears before 1 you'/' seeming to float in the air. In a low, sorrowful voice 2 he says,'/' "Alas, the very nature of the world has changed, 3 and the dungeon'/' cannot be found. All must now pass away." 4 Raising his oaken staff'/' in farewell, he fades into the 5 spreading darkness. In his place'/' appears a tastefully 6 lettered sign reading:'//23X,'INITIALIZATION FAILURE'// 7' The darkness becomes all encompassing, and your vision fails.') END C PROTCT-- CHECK FOR USER VIOLATION C C THIS ROUTINE SHOULD BE MODIFIED IF YOU WISH TO ADD SYSTEM C DEPENDANT PROTECTION AGAINST ABUSE. C C AT THE MOMENT, PLAY IS PERMITTED UDER ALL CIRCUMSTANCES. C LOGICAL FUNCTION PROTCT(X) IMPLICIT INTEGER(A-Z) C PROTCT=.TRUE. RETURN END