Annotation of 43BSDReno/games/dungeon/dinit.F, revision 1.1

1.1     ! root        1: #include "files.h"
        !             2: 
        !             3: #ifndef INDXFILE
        !             4: #define INDXFILE '/usr/games/lib/dunlib/dindx.dat'
        !             5: #endif
        !             6: #ifndef TEXTFILE
        !             7: #define TEXTFILE '/usr/games/lib/dunlib/dtext.dat'
        !             8: #endif
        !             9: #ifndef WIZARDID
        !            10: #define WIZARDID 0
        !            11: #endif
        !            12: 
        !            13: C INIT-- DUNGEON INITIALIZATION SUBROUTINE
        !            14: C
        !            15: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
        !            16: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
        !            17: C WRITTEN BY R. M. SUPNIK
        !            18: C
        !            19: C DECLARATIONS
        !            20: C
        !            21:        LOGICAL FUNCTION INIT(X)
        !            22:        IMPLICIT INTEGER (A-Z)
        !            23: #ifndef PDP
        !            24:        LOGICAL PROTCT
        !            25:        INTEGER DATARR(3)
        !            26: #endif PDP
        !            27: #include "parser.h"
        !            28: #include "gamestate.h"
        !            29: #include "state.h"
        !            30: #include "screen.h"
        !            31: #include "mindex.h"
        !            32: C
        !            33: C MISCELLANEOUS VARIABLES
        !            34: C
        !            35:        COMMON /STAR/ MBASE,STRBIT
        !            36:        COMMON /VERS/ VMAJ,VMIN,VEDIT
        !            37:        COMMON /TIME/ PLTIME,SHOUR,SMIN,SSEC
        !            38: #include "io.h"
        !            39: #include "debug.h"
        !            40:        COMMON /HYPER/ HFACTR
        !            41: #include "rooms.h"
        !            42: #include "rflag.h"
        !            43: #include "rindex.h"
        !            44: #include "exits.h"
        !            45: #include "curxt.h"
        !            46: #include "xpars.h"
        !            47: #include "objects.h"
        !            48: #include "oindex.h"
        !            49: #include "clock.h"
        !            50: #include "villians.h"
        !            51: #include "advers.h"
        !            52: #include "flags.h"
        !            53: C INIT, PAGE 2
        !            54: C
        !            55: #ifndef PDP
        !            56: #ifdef SYSV
        !            57: C make output unbuffered
        !            58:        call unbuf
        !            59: C
        !            60: #endif
        !            61: C FIRST CHECK FOR PROTECTION VIOLATION
        !            62: C
        !            63:        IF(PROTCT(X)) GO TO 10000
        !            64: C                                              !PROTECTION VIOLATION?
        !            65:        PRINT 10100
        !            66: #ifdef NOCC
        !            67: 10100  FORMAT('There appears before you a threatening figure clad '
        !            68: &      'all over'/'in heavy black armor.  His legs seem like the '
        !            69: &      'massive trunk'/'of the oak tree.  His broad shoulders and '
        !            70: &      'helmeted head loom'/'high over your own puny frame, and '
        !            71: &      'you realize that his powerful'/'arms could easily crush the '
        !            72: &      'very life from your body.  There'/'hangs from his belt a '
        !            73: &      'veritable arsenal of deadly weapons:'/'sword, mace, ball '
        !            74: &      'and chain, dagger, lance, and trident.'/'He speaks with a '
        !            75: &      'commanding voice:'//20X,'"You shall not pass."'//'As '
        !            76: &      'he grabs you by the neck all grows dim about you.')
        !            77: #else NOCC
        !            78: 10100  FORMAT(' There appears before you a threatening figure clad '
        !            79: &      'all over'/' in heavy black armor.  His legs seem like the '
        !            80: &      'massive trunk'/' of the oak tree.  His broad shoulders and '
        !            81: &      'helmeted head loom'/' high over your own puny frame, and '
        !            82: &      'you realize that his powerful'/' arms could easily crush the '
        !            83: &      'very life from your body.  There'/' hangs from his belt a '
        !            84: &      'veritable arsenal of deadly weapons:'/' sword, mace, ball '
        !            85: &      'and chain, dagger, lance, and trident.'/' He speaks with a '
        !            86: &      'commanding voice:'//20X,'"You shall not pass."'//' As '
        !            87: &      'he grabs you by the neck all grows dim about you.')
        !            88: #endif NOCC
        !            89:        CALL EXIT
        !            90: #endif PDP
        !            91: C
        !            92: C NOW START INITIALIZATION PROPER
        !            93: C
        !            94: #ifdef PDP
        !            95: C
        !            96: C   Note: arrays FLAGS & SWITCH are initialized in the following
        !            97: C           DATA statements, instead of using DO loops and assignments
        !            98: C           as used before.  This saves some code space.
        !            99: C
        !           100:        DATA FLAGS/.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
        !           101: &                 .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
        !           102: &                 .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
        !           103: &                  .TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.TRUE.,
        !           104: &                 .FALSE.,.FALSE.,.FALSE.,.TRUE.,.FALSE.,.FALSE.,
        !           105: &                 .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,
        !           106: &                 .FALSE.,.FALSE.,.FALSE.,.TRUE.,.TRUE.,.FALSE.,
        !           107: &                  .TRUE.,.FALSE.,.FALSE.,.FALSE./
        !           108: C
        !           109:        DATA SWITCH/0,0,0,0,0,0,0,0,0,
        !           110: &                  4,0,270,0,0,0,0,0,
        !           111: &                  1,1,0,0,10/
        !           112: C
        !           113: C   Note: SWITCH(13) or MLOC is initialized equal to MRB later.
        !           114: C
        !           115: C
        !           116:        DATA LTSHFT/10/
        !           117:        DATA EGSCOR/0/
        !           118:        DATA EGMXSC/0/
        !           119:        DATA MXLOAD/100/
        !           120:        DATA RWSCOR/0/
        !           121:        DATA DEATHS/0/
        !           122:        DATA MOVES/0/
        !           123:        DATA PLTIME/0/
        !           124:        DATA MUNGRM/0/
        !           125:        DATA HS/0/
        !           126:        DATA PRSA/0/
        !           127:        DATA PRSI/0/
        !           128:        DATA PRSO/0/
        !           129:        DATA PRSCON/1/
        !           130:        DATA OFLAG/0/
        !           131:        DATA OACT/0/
        !           132:        DATA OSLOT/0/
        !           133:        DATA OPREP/0/
        !           134:        DATA ONAME/0/
        !           135:        DATA THFFLG/.FALSE./
        !           136:        DATA THFACT/.TRUE./
        !           137:        DATA SWDACT/.FALSE./
        !           138:        DATA SWDSTA/0/
        !           139: C
        !           140:        DATA RECNO/1/
        !           141:        DATA MBASE/0/
        !           142:        DATA INPCH/5/
        !           143:        DATA OUTCH/5/
        !           144:        DATA DBCH/2/
        !           145: C
        !           146: C INIT, PAGE 3
        !           147: C
        !           148: C
        !           149:        DATA DBGFLG/0/
        !           150:        DATA PRSFLG/0/
        !           151:        DATA GDTFLG/0/
        !           152: C
        !           153:        FROMDR=0
        !           154:        SCOLRM=0
        !           155:        SCOLAC=0
        !           156:        INIT=.FALSE.            
        !           157:        MLOC=MRB
        !           158: C
        !           159: C INIT, PAGE 4
        !           160: C
        !           161: C NOW RESTORE FROM EXISTING INDEX FILE.
        !           162: C
        !           163:        call intrd(i)
        !           164:        call intrd(j)
        !           165:        call intrd(k)
        !           166:        IF((I.NE.VMAJ).OR.(J.NE.VMIN))
        !           167: &              GO TO 1925                      
        !           168: C
        !           169:        call intrd(MXSCOR)
        !           170:        call intrd(STRBIT)
        !           171:        call intrd(EGMXSC)
        !           172: C
        !           173:        call intrd(RLNT)
        !           174:        call intrd(RDESC2)
        !           175:        call aryrd(200,RDESC1)
        !           176:        call aryrd(200,REXIT)
        !           177:        call aryrd(200,RACTIO)
        !           178:        call aryrd(200,RVAL)
        !           179:        call aryrd(200,RFLAG)
        !           180: C
        !           181:        call intrd(XLNT)
        !           182:        call aryrd(900,TRAVEL)
        !           183:        call intrd(OLNT)
        !           184:        call aryrd(220,ODESC1)
        !           185:        call aryrd(220,ODESC2)
        !           186:        call aryrd(220,ODESCO)
        !           187:        call aryrd(220,OACTIO)
        !           188:        call aryrd(220,OFLAG1)
        !           189:        call aryrd(220,OFLAG2)
        !           190:        call aryrd(220,OFVAL)
        !           191:        call aryrd(220,OTVAL)
        !           192:        call aryrd(220,OSIZE)
        !           193:        call aryrd(220,OCAPAC)
        !           194:        call aryrd(220,OROOM)
        !           195:        call aryrd(220,OADV)
        !           196:        call aryrd(220,OCAN)
        !           197:        call aryrd(220,OREAD)
        !           198: C
        !           199:        call intrd(R2LNT)
        !           200:        call aryrd(20,OROOM2)
        !           201:        call aryrd(20,RROOM2)
        !           202: C
        !           203:        call intrd(CLNT)
        !           204:        call aryrd(25,CTICK)
        !           205:        call aryrd(25,CACTIO)
        !           206: C
        !           207:        do 990 i=1,25
        !           208:        cflag(i)=.TRUE.
        !           209:        call logrd(j)
        !           210:        if(j.EQ.0) CFLAG(i)=.FALSE.
        !           211: 990    continue
        !           212: C
        !           213:        call intrd(VLNT)
        !           214:        call aryrd(4,VILLNS)
        !           215:        call aryrd(4,VPROB)
        !           216:        call aryrd(4,VOPPS)
        !           217:        call aryrd(4,VBEST)
        !           218:        call aryrd(4,VMELEE)
        !           219: C
        !           220:        call intrd(ALNT)
        !           221:        call aryrd(4,AROOM)
        !           222:        call aryrd(4,ASCORE)
        !           223:        call aryrd(4,AVEHIC)
        !           224:        call aryrd(4,AOBJ)
        !           225:        call aryrd(4,AACTIO)
        !           226:        call aryrd(4,ASTREN)
        !           227:        call aryrd(4,AFLAG)
        !           228: C
        !           229:        call intrd(MBASE)
        !           230:        call intrd(MLNT)
        !           231: C
        !           232: C   The RTEXT array is not used here, and isn't read (it's used
        !           233: C   in "speak.F")
        !           234: C
        !           235:        call initnd
        !           236: C
        !           237: C INIT, PAGE 5
        !           238: C
        !           239: C THE INTERNAL DATA BASE IS NOW ESTABLISHED.
        !           240: C SET UP TO PLAY THE GAME.
        !           241: C
        !           242: 1025   CALL ITIME(SHOUR,SMIN,SSEC)             
        !           243:        CALL INIRND(or(SHOUR,or(SMIN,SSEC)))
        !           244: C
        !           245:        WINNER=PLAYER
        !           246:        LASTIT=AOBJ(PLAYER)
        !           247:        HERE=AROOM(WINNER)
        !           248:        THFPOS=OROOM(THIEF)
        !           249:        BLOC=OROOM(BALLO)
        !           250:        INIT=.TRUE.
        !           251: #ifdef debug
        !           252: C
        !           253: C      Normally, PRSFLG is setable in gdt to allow seeing various
        !           254: C      parse results.  Since the pdp version does not have gdt,
        !           255: C      PRSFLG is set to show full debugging info when debug is enabled.
        !           256: C
        !           257:        PRSFLG=65535
        !           258: #endif debug
        !           259: C
        !           260: C
        !           261:        RETURN
        !           262: C INIT, PAGE 6
        !           263: C
        !           264: C ERRORS-- INIT FAILS.
        !           265: C
        !           266: 1925   continue
        !           267:        END
        !           268: #else PDP
        !           269: 10000  INIT=.FALSE.
        !           270: C                                              !ASSUME INIT FAILS.
        !           271:        MMAX=1050
        !           272: C                                              !SET UP ARRAY LIMITS.
        !           273:        OMAX=220
        !           274:        RMAX=200
        !           275:        VMAX=4
        !           276:        AMAX=4
        !           277:        CMAX=25
        !           278:        FMAX=46
        !           279:        SMAX=22
        !           280:        XMAX=900
        !           281:        R2MAX=20
        !           282:        DIRMAX=15
        !           283: C
        !           284:        MLNT=0
        !           285: C                                              !INIT ARRAY COUNTERS.
        !           286:        OLNT=0
        !           287:        RLNT=0
        !           288:        VLNT=0
        !           289:        ALNT=0
        !           290:        CLNT=0
        !           291:        XLNT=1
        !           292:        R2LNT=0
        !           293: C
        !           294:        LTSHFT=10
        !           295: C                                              !SET UP STATE VARIABLES.
        !           296:        MXSCOR=LTSHFT
        !           297:        EGSCOR=0
        !           298:        EGMXSC=0
        !           299:        MXLOAD=100
        !           300:        RWSCOR=0
        !           301:        DEATHS=0
        !           302:        MOVES=0
        !           303:        PLTIME=0
        !           304:        MUNGRM=0
        !           305:        HS=0
        !           306:        PRSA=0
        !           307: C                                              !CLEAR PARSE VECTOR.
        !           308:        PRSI=0
        !           309:        PRSO=0
        !           310:        PRSCON=1
        !           311:        OFLAG=0
        !           312: C                                              !CLEAR ORPHANS.
        !           313:        OACT=0
        !           314:        OSLOT=0
        !           315:        OPREP=0
        !           316:        ONAME=0
        !           317:        THFFLG=.FALSE.
        !           318: C                                              !THIEF NOT INTRODUCED BUT
        !           319:        THFACT=.TRUE.
        !           320: C                                              !IS ACTIVE.
        !           321:        SWDACT=.FALSE.
        !           322: C                                              !SWORD IS INACTIVE.
        !           323:        SWDSTA=0
        !           324: C                                              !SWORD IS OFF.
        !           325: C
        !           326:        RECNO=1
        !           327: C                                              !INIT DB FILE POINTER.
        !           328:        MBASE=0
        !           329: C                                              !INIT MELEE BASE.
        !           330: C   LOGICAL UNIT NRS: 5=STDIN, 6=STDOUT
        !           331:        INPCH=5
        !           332: C                                              !TTY INPUT
        !           333:        OUTCH=6
        !           334:        DBCH=2
        !           335: C                                              !DATA BASE.
        !           336: C INIT, PAGE 3
        !           337: C
        !           338: C INIT ALL ARRAYS.
        !           339: C
        !           340:        DO 5 I=1,CMAX
        !           341: C                                              !CLEAR CLOCK EVENTS
        !           342:          CFLAG(I)=.FALSE.
        !           343:          CTICK(I)=0
        !           344:          CACTIO(I)=0
        !           345: 5      CONTINUE
        !           346: C
        !           347:        DO 10 I=1,FMAX
        !           348: C                                              !CLEAR FLAGS.
        !           349:          FLAGS(I)=.FALSE.
        !           350: 10     CONTINUE
        !           351:        BUOYF=.TRUE.
        !           352: C                                              !SOME START AS TRUE.
        !           353:        EGYPTF=.TRUE.
        !           354:        CAGETF=.TRUE.
        !           355:        MR1F=.TRUE.
        !           356:        MR2F=.TRUE.
        !           357:        FOLLWF=.TRUE.
        !           358:        DO 12 I=1,SMAX
        !           359: C                                              !CLEAR SWITCHES.
        !           360:          SWITCH(I)=0
        !           361: 12     CONTINUE
        !           362:        ORMTCH=4
        !           363: C                                              !NUMBER OF MATCHES.
        !           364:        LCELL=1
        !           365:        PNUMB=1
        !           366:        MDIR=270
        !           367:        MLOC=MRB
        !           368:        CPHERE=10
        !           369: C
        !           370:        DO 15 I=1,R2MAX
        !           371: C                                              !CLEAR ROOM 2 ARRAY.
        !           372:          RROOM2(I)=0
        !           373:          OROOM2(I)=0
        !           374: 15     CONTINUE
        !           375: C
        !           376:        DO 20 I=1,XMAX
        !           377: C                                              !CLEAR TRAVEL ARRAY.
        !           378:          TRAVEL(I)=0
        !           379: 20     CONTINUE
        !           380: C
        !           381:        DO 30 I=1,VMAX
        !           382: C                                              !CLEAR VILLAINS ARRAYS.
        !           383:          VOPPS(I)=0
        !           384:          VPROB(I)=0
        !           385:          VILLNS(I)=0
        !           386:          VBEST(I)=0
        !           387:          VMELEE(I)=0
        !           388: 30     CONTINUE
        !           389: C
        !           390:        DO 40 I=1,OMAX
        !           391: C                                              !CLEAR OBJECT ARRAYS.
        !           392:          ODESC1(I)=0
        !           393:          ODESC2(I)=0
        !           394:          ODESCO(I)=0
        !           395:          OREAD(I)=0
        !           396:          OACTIO(I)=0
        !           397:          OFLAG1(I)=0
        !           398:          OFLAG2(I)=0
        !           399:          OFVAL(I)=0
        !           400:          OTVAL(I)=0
        !           401:          OSIZE(I)=0
        !           402:          OCAPAC(I)=0
        !           403:          OCAN(I)=0
        !           404:          OADV(I)=0
        !           405:          OROOM(I)=0
        !           406: 40     CONTINUE
        !           407: C
        !           408:        RDESC2=0
        !           409: C                                              !CLEAR DESC BASE PTR.
        !           410:        DO 50 I=1,RMAX
        !           411: C                                              !CLEAR ROOM ARRAYS.
        !           412:          RDESC1(I)=0
        !           413:          RACTIO(I)=0
        !           414:          RFLAG(I)=0
        !           415:          RVAL(I)=0
        !           416:          REXIT(I)=0
        !           417: 50     CONTINUE
        !           418: C
        !           419:        DO 60 I=1,MMAX
        !           420: C                                              !CLEAR MESSAGE DIRECTORY.
        !           421:          RTEXT(I)=0
        !           422: 60     CONTINUE
        !           423: C
        !           424:        DO 70 I=1,AMAX
        !           425: C                                              !CLEAR ADVENTURER'S ARRAYS.
        !           426:          AROOM(I)=0
        !           427:          ASCORE(I)=0
        !           428:          AVEHIC(I)=0
        !           429:          AOBJ(I)=0
        !           430:          AACTIO(I)=0
        !           431:          ASTREN(I)=0
        !           432:          AFLAG(I)=0
        !           433: 70     CONTINUE
        !           434: C
        !           435:        DBGFLG=0
        !           436:        PRSFLG=0
        !           437:        GDTFLG=0
        !           438: C
        !           439: C allow setting gdtflg true if user id matches wizard id
        !           440: C this way, the wizard doesn't have to recompile to use gdt
        !           441: C
        !           442:        if (getuid() .eq. WIZARDID) gdtflg=1
        !           443: C
        !           444:        FROMDR=0
        !           445: C                                              !INIT SCOL GOODIES.
        !           446:        SCOLRM=0
        !           447:        SCOLAC=0
        !           448: C INIT, PAGE 4
        !           449: C
        !           450: C NOW RESTORE FROM EXISTING INDEX FILE.
        !           451: C
        !           452:        OPEN(UNIT=1,file=INDXFILE,status='OLD',
        !           453: #ifdef XELOS
        !           454: &              FORM='FORMATTED',ACCESS='SEQUENTIAL',ERR=1900,recl=1)
        !           455: #else
        !           456: &              FORM='FORMATTED',ACCESS='SEQUENTIAL',ERR=1900)
        !           457: #endif
        !           458:        rewind(unit=1, err=1900)
        !           459:        READ(1,130) I,J,K
        !           460: C                                              !GET VERSION.
        !           461:        IF((I.NE.VMAJ).OR.(J.NE.VMIN))
        !           462: &              GO TO 1925
        !           463: 
        !           464:        OPEN(UNIT=DBCH,file=TEXTFILE,status='OLD',
        !           465: &              FORM='UNFORMATTED',ACCESS='DIRECT',
        !           466: &              recl=76,ERR=1950)
        !           467:        rewind(unit=dbch, err=1950)
        !           468: 
        !           469: #ifdef debug
        !           470:        PRINT 150
        !           471: #ifdef NOCC
        !           472: 150    FORMAT('RESTORING FROM "dindx.dat"')
        !           473: #else NOCC
        !           474: 150    FORMAT(' RESTORING FROM "dindx.dat"')
        !           475: #endif NOCC
        !           476: #endif debug
        !           477:        READ(1,130) MXSCOR,STRBIT,EGMXSC
        !           478:        READ(1,130) RLNT,RDESC2,RDESC1,REXIT,RACTIO,RVAL,RFLAG
        !           479:        READ(1,130) XLNT,TRAVEL
        !           480:        READ(1,130) OLNT,ODESC1,ODESC2,ODESCO,OACTIO,OFLAG1,OFLAG2,
        !           481: &              OFVAL,OTVAL,OSIZE,OCAPAC,OROOM,OADV,OCAN,
        !           482: &              OREAD
        !           483:        READ(1,130) R2LNT,OROOM2,RROOM2
        !           484:        READ(1,130) CLNT,CTICK,CACTIO
        !           485:        READ(1,135) CFLAG
        !           486:        READ(1,130) VLNT,VILLNS,VPROB,VOPPS,VBEST,VMELEE
        !           487:        READ(1,130) ALNT,AROOM,ASCORE,AVEHIC,AOBJ,AACTIO,ASTREN,AFLAG
        !           488:        READ(1,130) MBASE,MLNT,RTEXT
        !           489: C
        !           490:        CLOSE(1)
        !           491:        GO TO 1025
        !           492: C                                              !INIT DONE.
        !           493: C
        !           494: C 130  FORMAT(I8)
        !           495: 130    FORMAT(I6)
        !           496: 135    FORMAT(L4)
        !           497: C INIT, PAGE 5
        !           498: C
        !           499: C THE INTERNAL DATA BASE IS NOW ESTABLISHED.
        !           500: C SET UP TO PLAY THE GAME.
        !           501: C
        !           502: 1025   CALL ITIME(SHOUR,SMIN,SSEC)
        !           503: C                                              !GET TIME AND DATE.
        !           504: C      CALL IDATE(I,J,K)
        !           505:        CALL IDATE(DATARR(1))
        !           506:        CALL INIRND(or(DATARR(1),or(DATARR(2),DATARR(3))),
        !           507: &              or(SHOUR,or(SMIN,SSEC)))
        !           508: C
        !           509:        WINNER=PLAYER
        !           510:        LASTIT=AOBJ(PLAYER)
        !           511:        HERE=AROOM(WINNER)
        !           512:        THFPOS=OROOM(THIEF)
        !           513:        BLOC=OROOM(BALLO)
        !           514:        INIT=.TRUE.
        !           515: C
        !           516: #ifdef debug
        !           517:        PRINT 1050,RLNT,RMAX,XLNT,XMAX,OLNT,OMAX,MLNT,MMAX,
        !           518: &        VLNT,VMAX,ALNT,AMAX,CLNT,CMAX,R2LNT,R2MAX
        !           519: #ifdef NOCC
        !           520: 1050   FORMAT('USED:'/I5,' OF',I5,' ROOMS'/
        !           521: &        I5,' OF',I5,' EXITS'/
        !           522: &        I5,' OF',I5,' OBJECTS'/
        !           523: &        I5,' OF',I5,' MESSAGES'/
        !           524: &        I5,' OF',I5,' VILLAINS'/
        !           525: &        I5,' OF',I5,' ADVENTURERS'/
        !           526: &        I5,' OF',I5,' CLOCK EVENTS'/
        !           527: &        I5,' OF',I5,' ROOM2 SLOTS')
        !           528: #else NOCC
        !           529: 1050   FORMAT(' USED:'/1X,I5,' OF',I5,' ROOMS'/
        !           530: &        1X,I5,' OF',I5,' EXITS'/
        !           531: &        1X,I5,' OF',I5,' OBJECTS'/
        !           532: &        1X,I5,' OF',I5,' MESSAGES'/
        !           533: &        1X,I5,' OF',I5,' VILLAINS'/
        !           534: &        1X,I5,' OF',I5,' ADVENTURERS'/
        !           535: &        1X,I5,' OF',I5,' CLOCK EVENTS'/
        !           536: &        1X,I5,' OF',I5,' ROOM2 SLOTS')
        !           537: #endif NOCC
        !           538:        PRINT 1150,MXSCOR,EGMXSC,RECNO,RDESC2,MBASE,STRBIT
        !           539: #ifdef NOCC
        !           540: 1150   FORMAT('MAX SCORE=',I5/'EG SCORE=',I5/
        !           541: &        'MAX RECNO=',I5/'RDESC2 BASE=',I5/
        !           542: &        'MELEE START=',I5/'STAR MASK=',I7)
        !           543: #else NOCC
        !           544: 1150   FORMAT(' MAX SCORE=',I5/' EG SCORE=',I5/
        !           545: &        ' MAX RECNO=',I5/' RDESC2 BASE=',I5/
        !           546: &        ' MELEE START=',I5/' STAR MASK=',I7)
        !           547: #endif NOCC
        !           548:        PAUSE 1
        !           549: #endif debug
        !           550: C
        !           551:        RETURN
        !           552: C INIT, PAGE 6
        !           553: C
        !           554: C ERRORS-- INIT FAILS.
        !           555: C
        !           556: 1900   PRINT 910
        !           557:        PRINT 980
        !           558:        RETURN
        !           559: 1925   PRINT 920,I,J,K,VMAJ,VMIN,VEDIT
        !           560:        PRINT 980
        !           561:        RETURN
        !           562: 1950   PRINT 960
        !           563:        PRINT 980
        !           564:        RETURN
        !           565: #ifdef NOCC
        !           566: 910    FORMAT('I can''t open ',INDXFILE,'.')
        !           567: 920    FORMAT('"dindx.dat" is version ',I1,'.',I1,A1,'.'/
        !           568: &              'I require version ',I1,'.',I1,A1,'.')
        !           569: 960    FORMAT('I can''t open ',TEXTFILE,'.')
        !           570: 980    FORMAT('Suddenly a sinister, wraithlike figure appears before '
        !           571: &      'you,'/'seeming to float in the air.  In a low, sorrowful voice'
        !           572: &      ' he says,'/'"Alas, the very nature of the world has changed, '
        !           573: &      'and the dungeon'/'cannot be found.  All must now pass away."'
        !           574: &      '  Raising his oaken staff'/'in farewell, he fades into the '
        !           575: &      'spreading darkness.  In his place'/'appears a tastefully '
        !           576: &      'lettered sign reading:'//23X,'INITIALIZATION FAILURE'//
        !           577: &      'The darkness becomes all encompassing, and your vision fails.')
        !           578: #else NOCC
        !           579: 910    FORMAT(' I can''t open ',INDXFILE,'.')
        !           580: 920    FORMAT(' "dindx.dat" is version ',I1,'.',I1,A1,'.'/
        !           581: &              ' I require version ',I1,'.',I1,A1,'.')
        !           582: 960    FORMAT(' I can''t open ',TEXTFILE,'.')
        !           583: 980    FORMAT(' Suddenly a sinister, wraithlike figure appears before '
        !           584: &      'you,'/' seeming to float in the air.  In a low, sorrowful voice'
        !           585: &      ' he says,'/' "Alas, the very nature of the world has changed, '
        !           586: &      'and the dungeon'/' cannot be found.  All must now pass away."'
        !           587: &      '  Raising his oaken staff'/' in farewell, he fades into the '
        !           588: &      'spreading darkness.  In his place'/' appears a tastefully '
        !           589: &      'lettered sign reading:'//23X,'INITIALIZATION FAILURE'//
        !           590: &      ' The darkness becomes all encompassing, and your vision fails.')
        !           591: #endif NOCC
        !           592: C
        !           593:        END
        !           594: C PROTCT-- CHECK FOR USER VIOLATION
        !           595: C
        !           596: C THIS ROUTINE SHOULD BE MODIFIED IF YOU WISH TO ADD SYSTEM
        !           597: C DEPENDANT PROTECTION AGAINST ABUSE.
        !           598: C
        !           599: C AT THE MOMENT, PLAY IS PERMITTED UNDER ALL CIRCUMSTANCES.
        !           600: C
        !           601:        LOGICAL FUNCTION PROTCT(X)
        !           602:        IMPLICIT INTEGER(A-Z)
        !           603: C
        !           604:        PROTCT=.TRUE.
        !           605:        RETURN
        !           606:        END
        !           607: #endif PDP

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.