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

1.1     ! root        1: C GDT- GAME DEBUGGING TOOL
        !             2: C
        !             3: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
        !             4: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
        !             5: C WRITTEN BY R. M. SUPNIK
        !             6: C
        !             7: C DECLARATIONS
        !             8: C
        !             9:        SUBROUTINE GDT
        !            10:        IMPLICIT INTEGER (A-Z)
        !            11: #ifdef PDP
        !            12: C
        !            13: C      no debugging tool available in pdp version
        !            14: C
        !            15:        call nogdt
        !            16:        return
        !            17: #else
        !            18:        CHARACTER*2 DBGCMD(38),CMD
        !            19:        INTEGER ARGTYP(38)
        !            20:        LOGICAL VALID1,VALID2,VALID3
        !            21:        character*2 ldbgcm(38)
        !            22: #include "parser.h"
        !            23: #include "gamestate.h"
        !            24: #include "state.h"
        !            25: #include "screen.h"
        !            26: #include "puzzle.h"
        !            27: C
        !            28: C MISCELLANEOUS VARIABLES
        !            29: C
        !            30:        COMMON /STAR/ MBASE,STRBIT
        !            31: #include "io.h"
        !            32: #include "mindex.h"
        !            33: #include "debug.h"
        !            34: #include "rooms.h"
        !            35: #include "rindex.h"
        !            36: #include "exits.h"
        !            37: #include "objects.h"
        !            38: #include "oindex.h"
        !            39: #include "clock.h"
        !            40: #include "villians.h"
        !            41: #include "advers.h"
        !            42: #include "flags.h"
        !            43: C
        !            44: C FUNCTIONS AND DATA
        !            45: C
        !            46:        VALID1(A1,L1)=(A1.GT.0).AND.(A1.LE.L1)
        !            47:        VALID2(A1,A2,L1)=VALID1(A1,L1).AND.VALID1(A2,L1).AND.
        !            48: &              (A1.LE.A2)
        !            49:        VALID3(A1,L1,A2,L2)=VALID1(A1,L1).AND.VALID1(A2,L2)
        !            50:        DATA CMDMAX/38/
        !            51:        DATA DBGCMD/'DR','DO','DA','DC','DX','DH','DL','DV','DF','DS',
        !            52: &              'AF','HE','NR','NT','NC','ND','RR','RT','RC','RD',
        !            53: &              'TK','EX','AR','AO','AA','AC','AX','AV','D2','DN',
        !            54: &              'AN','DM','DT','AH','DP','PD','DZ','AZ'/
        !            55:        DATA ldbgcm/'dr','do','da','dc','dx','dh','dl','dv','df','ds',
        !            56: &              'af','he','nr','nt','nc','nd','rr','rt','rc','rd',
        !            57: &              'tk','ex','ar','ao','aa','ac','ax','av','d2','dn',
        !            58: &              'an','dm','dt','ah','dp','pd','dz','az'/
        !            59:        DATA ARGTYP/  2 ,  2 ,  2 ,  2 ,  2 ,  0 ,  0 ,  2 ,  2 ,  0 ,
        !            60: &                1 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,  0 ,
        !            61: &                1 ,  0 ,  3 ,  3 ,  3 ,  3 ,  1 ,  3 ,  2 ,  2 ,
        !            62: &                1 ,  2 ,  1 ,  0 ,  0 ,  0 ,  0 ,  1 /
        !            63: C GDT, PAGE 2
        !            64: C
        !            65: C FIRST, VALIDATE THAT THE CALLER IS AN IMPLEMENTER.
        !            66: C
        !            67:        FMAX=46
        !            68: C                                              !SET ARRAY LIMITS.
        !            69:        SMAX=22
        !            70: C
        !            71:        IF(GDTFLG.NE.0) GO TO 2000
        !            72: C                                              !IF OK, SKIP.
        !            73:        WRITE(OUTCH,100)
        !            74: C                                              !NOT AN IMPLEMENTER.
        !            75:        RETURN
        !            76: C                                              !BOOT HIM OFF
        !            77: C
        !            78: #ifdef NOCC
        !            79: 100    FORMAT('You are not an authorized user.')
        !            80: #else NOCC
        !            81: 100    FORMAT(' You are not an authorized user.')
        !            82: #endif NOCC
        !            83: c GDT, PAGE 2A
        !            84: C
        !            85: C HERE TO GET NEXT COMMAND
        !            86: C
        !            87: 2000   WRITE(OUTCH,200)
        !            88: C                                              !OUTPUT PROMPT.
        !            89:        READ(INPCH,210) CMD
        !            90: C                                              !GET COMMAND.
        !            91:        IF(CMD.EQ.'  ') GO TO 2000
        !            92: C                                              !IGNORE BLANKS.
        !            93:        DO 2100 I=1,CMDMAX
        !            94: C                                              !LOOK IT UP.
        !            95:          IF(CMD.EQ.DBGCMD(I)) GO TO 2300
        !            96: C                                              !FOUND?
        !            97: C        check for lower case command, as well
        !            98:          if(cmd .eq. ldbgcm(i)) go to 2300
        !            99: 2100   CONTINUE
        !           100: 2200   WRITE(OUTCH,220)
        !           101: C                                              !NO, LOSE.
        !           102:        GO TO 2000
        !           103: C
        !           104: #ifdef NOCC
        !           105: 200    FORMAT('GDT>',$)
        !           106: #else NOCC
        !           107: 200    FORMAT(' GDT>',$)
        !           108: #endif NOCC
        !           109: 210    FORMAT(A2)
        !           110: #ifdef NOCC
        !           111: 220    FORMAT('?')
        !           112: #else NOCC
        !           113: 220    FORMAT(' ?')
        !           114: #endif NOCC
        !           115: 230    FORMAT(2I6)
        !           116: 240    FORMAT(I6)
        !           117: #ifdef NOCC
        !           118: 225    FORMAT('Limits:   ',$)
        !           119: 235    FORMAT('Entry:    ',$)
        !           120: 245    FORMAT('Idx,Ary:  ',$)
        !           121: #else NOCC
        !           122: 225    FORMAT(' Limits:   ',$)
        !           123: 235    FORMAT(' Entry:    ',$)
        !           124: 245    FORMAT(' Idx,Ary:  ',$)
        !           125: #endif NOCC
        !           126: c
        !           127: 2300   GO TO (2400,2500,2600,2700),ARGTYP(I)+1
        !           128: C                                              !BRANCH ON ARG TYPE.
        !           129:        GO TO 2200
        !           130: C                                              !ILLEGAL TYPE.
        !           131: C
        !           132: 2700   WRITE(OUTCH,245)
        !           133: C                                              !TYPE 3, REQUEST ARRAY COORDS.
        !           134:        READ(INPCH,230) J,K
        !           135:        GO TO 2400
        !           136: C
        !           137: 2600   WRITE(OUTCH,225)
        !           138: C                                              !TYPE 2, READ BOUNDS.
        !           139:        READ(INPCH,230) J,K
        !           140:        IF(K.EQ.0) K=J
        !           141:        GO TO 2400
        !           142: C
        !           143: 2500   WRITE(OUTCH,235)
        !           144: C                                              !TYPE 1, READ ENTRY NO.
        !           145:        READ(INPCH,240) J
        !           146: 2400   GO TO (10000,11000,12000,13000,14000,15000,16000,17000,18000,
        !           147: &       19000,20000,21000,22000,23000,24000,25000,26000,27000,28000,
        !           148: &       29000,30000,31000,32000,33000,34000,35000,36000,37000,38000,
        !           149: &       39000,40000,41000,42000,43000,44000,45000,46000,47000),I
        !           150:        GO TO 2200
        !           151: C                                              !WHAT???
        !           152: C GDT, PAGE 3
        !           153: C
        !           154: C DR-- DISPLAY ROOMS
        !           155: C
        !           156: 10000  IF(.NOT.VALID2(J,K,RLNT)) GO TO 2200
        !           157: C                                              !ARGS VALID?
        !           158:        WRITE(OUTCH,300)
        !           159: C                                              !COL HDRS.
        !           160:        DO 10100 I=J,K
        !           161:          WRITE(OUTCH,310) I,(EQR(I,L),L=1,5)
        !           162: 10100  CONTINUE
        !           163:        GO TO 2000
        !           164: C
        !           165: #ifdef NOCC
        !           166: 300    FORMAT('RM#  DESC1  EXITS ACTION  VALUE  FLAGS')
        !           167: 310    FORMAT(I3,4(1X,I6),1X,I6)
        !           168: #else NOCC
        !           169: 300    FORMAT(' RM#  DESC1  EXITS ACTION  VALUE  FLAGS')
        !           170: 310    FORMAT(1X,I3,4(1X,I6),1X,I6)
        !           171: #endif NOCC
        !           172: C
        !           173: C DO-- DISPLAY OBJECTS
        !           174: C
        !           175: 11000  IF(.NOT.VALID2(J,K,OLNT)) GO TO 2200
        !           176: C                                              !ARGS VALID?
        !           177:        WRITE(OUTCH,320)
        !           178: C                                              !COL HDRS
        !           179:        DO 11100 I=J,K
        !           180:          WRITE(OUTCH,330) I,(EQO(I,L),L=1,14)
        !           181: 11100  CONTINUE
        !           182:        GO TO 2000
        !           183: C
        !           184: #ifdef NOCC
        !           185: 320    FORMAT('OB# DESC1 DESC2 DESCO ACT FLAGS1 FLAGS2 FVL TVL
        !           186: &        SIZE CAPAC ROOM ADV CON  READ')
        !           187: 330    FORMAT(I3,3I6,I4,2I7,2I4,2I6,1X,3I4,I6)
        !           188: #else NOCC
        !           189: 320    FORMAT(' OB# DESC1 DESC2 DESCO ACT FLAGS1 FLAGS2 FVL TVL
        !           190: &        SIZE CAPAC ROOM ADV CON  READ')
        !           191: 330    FORMAT(1X,I3,3I6,I4,2I7,2I4,2I6,1X,3I4,I6)
        !           192: #endif NOCC
        !           193: C
        !           194: C DA-- DISPLAY ADVENTURERS
        !           195: C
        !           196: 12000  IF(.NOT.VALID2(J,K,ALNT)) GO TO 2200
        !           197: C                                              !ARGS VALID?
        !           198:        WRITE(OUTCH,340)
        !           199:        DO 12100 I=J,K
        !           200:          WRITE(OUTCH,350) I,(EQA(I,L),L=1,7)
        !           201: 12100  CONTINUE
        !           202:        GO TO 2000
        !           203: C
        !           204: #ifdef NOCC
        !           205: 340    FORMAT('AD#   ROOM  SCORE  VEHIC OBJECT ACTION  STREN  FLAGS')
        !           206: 350    FORMAT(I3,6(1X,I6),1X,I6)
        !           207: #else NOCC
        !           208: 340    FORMAT(' AD#   ROOM  SCORE  VEHIC OBJECT ACTION  STREN  FLAGS')
        !           209: 350    FORMAT(1X,I3,6(1X,I6),1X,I6)
        !           210: #endif NOCC
        !           211: C
        !           212: C DC-- DISPLAY CLOCK EVENTS
        !           213: C
        !           214: 13000  IF(.NOT.VALID2(J,K,CLNT)) GO TO 2200
        !           215: C                                              !ARGS VALID?
        !           216:        WRITE(OUTCH,360)
        !           217:        DO 13100 I=J,K
        !           218:          WRITE(OUTCH,370) I,(EQC(I,L),L=1,2),CFLAG(I)
        !           219: 13100  CONTINUE
        !           220:        GO TO 2000
        !           221: C
        !           222: #ifdef NOCC
        !           223: 360    FORMAT('CL#   TICK ACTION  FLAG')
        !           224: 370    FORMAT(I3,1X,I6,1X,I6,5X,L1)
        !           225: #else NOCC
        !           226: 360    FORMAT(' CL#   TICK ACTION  FLAG')
        !           227: 370    FORMAT(1X,I3,1X,I6,1X,I6,5X,L1)
        !           228: #endif NOCC
        !           229: C
        !           230: C DX-- DISPLAY EXITS
        !           231: C
        !           232: 14000  IF(.NOT.VALID2(J,K,XLNT)) GO TO 2200
        !           233: C                                              !ARGS VALID?
        !           234:        WRITE(OUTCH,380)
        !           235: C                                              !COL HDRS.
        !           236:        DO 14100 I=J,K,10
        !           237: C                                              !TEN PER LINE.
        !           238:          L=MIN0(I+9,K)
        !           239: C                                              !COMPUTE END OF LINE.
        !           240:          WRITE(OUTCH,390) I,L,(TRAVEL(L1),L1=I,L)
        !           241: 14100  CONTINUE
        !           242:        GO TO 2000
        !           243: C
        !           244: #ifdef NOCC
        !           245: 380    FORMAT('  RANGE   CONTENTS')
        !           246: 390    FORMAT(I3,'-',I3,3X,10I7)
        !           247: #else NOCC
        !           248: 380    FORMAT('   RANGE   CONTENTS')
        !           249: 390    FORMAT(1X,I3,'-',I3,3X,10I7)
        !           250: #endif NOCC
        !           251: C
        !           252: C DH-- DISPLAY HACKS
        !           253: C
        !           254: 15000  WRITE(OUTCH,400) THFPOS,THFFLG,THFACT,SWDACT,SWDSTA
        !           255:        GO TO 2000
        !           256: C
        !           257: #ifdef NOCC
        !           258: 400    FORMAT('THFPOS=',I6,', THFFLG=',L2,',THFACT=',L2/
        !           259: &      ' SWDACT=',L2,', SWDSTA=',I2)
        !           260: #else NOCC
        !           261: 400    FORMAT(' THFPOS=',I6,', THFFLG=',L2,',THFACT=',L2/
        !           262: &      ' SWDACT=',L2,', SWDSTA=',I2)
        !           263: #endif NOCC
        !           264: C
        !           265: C DL-- DISPLAY LENGTHS
        !           266: C
        !           267: 16000  WRITE(OUTCH,410) RLNT,XLNT,OLNT,CLNT,VLNT,ALNT,MLNT,R2LNT,
        !           268: &              MBASE,STRBIT
        !           269:        GO TO 2000
        !           270: C
        !           271: #ifdef NOCC
        !           272: 410    FORMAT('R=',I6,', X=',I6,', O=',I6,', C=',I6/
        !           273: &      'V=',I6,', A=',I6,', M=',I6,', R2=',I5/
        !           274: &      'MBASE=',I6,', STRBIT=',I6)
        !           275: #else NOCC
        !           276: 410    FORMAT(' R=',I6,', X=',I6,', O=',I6,', C=',I6/
        !           277: &      ' V=',I6,', A=',I6,', M=',I6,', R2=',I5/
        !           278: &      ' MBASE=',I6,', STRBIT=',I6)
        !           279: #endif NOCC
        !           280: C
        !           281: C DV-- DISPLAY VILLAINS
        !           282: C
        !           283: 17000  IF(.NOT.VALID2(J,K,VLNT)) GO TO 2200
        !           284: C                                              !ARGS VALID?
        !           285:        WRITE(OUTCH,420)
        !           286: C                                              !COL HDRS
        !           287:        DO 17100 I=J,K
        !           288:          WRITE(OUTCH,430) I,(EQV(I,L),L=1,5)
        !           289: 17100  CONTINUE
        !           290:        GO TO 2000
        !           291: C
        !           292: #ifdef NOCC
        !           293: 420    FORMAT('VL# OBJECT   PROB   OPPS   BEST  MELEE')
        !           294: 430    FORMAT(I3,5(1X,I6))
        !           295: #else NOCC
        !           296: 420    FORMAT(' VL# OBJECT   PROB   OPPS   BEST  MELEE')
        !           297: 430    FORMAT(1X,I3,5(1X,I6))
        !           298: #endif NOCC
        !           299: C
        !           300: C DF-- DISPLAY FLAGS
        !           301: C
        !           302: 18000  IF(.NOT.VALID2(J,K,FMAX)) GO TO 2200
        !           303: C                                              !ARGS VALID?
        !           304:        DO 18100 I=J,K
        !           305:          WRITE(OUTCH,440) I,FLAGS(I)
        !           306: 18100  CONTINUE
        !           307:        GO TO 2000
        !           308: C
        !           309: #ifdef NOCC
        !           310: 440    FORMAT('Flag #',I2,' = ',L1)
        !           311: #else NOCC
        !           312: 440    FORMAT(' Flag #',I2,' = ',L1)
        !           313: #endif NOCC
        !           314: C
        !           315: C DS-- DISPLAY STATE
        !           316: C
        !           317: 19000  WRITE(OUTCH,450) PRSA,PRSO,PRSI,PRSWON,PRSCON
        !           318:        WRITE(OUTCH,460) WINNER,HERE,TELFLG
        !           319:        WRITE(OUTCH,470) MOVES,DEATHS,RWSCOR,MXSCOR,MXLOAD,LTSHFT,BLOC,
        !           320: &              MUNGRM,HS,EGSCOR,EGMXSC
        !           321:        WRITE(OUTCH,475) FROMDR,SCOLRM,SCOLAC
        !           322:        GO TO 2000
        !           323: C
        !           324: #ifdef NOCC
        !           325: 450    FORMAT('Parse vector=',3(1X,I6),1X,L6,1X,I6)
        !           326: 460    FORMAT('Play vector= ',2(1X,I6),1X,L6)
        !           327: 470    FORMAT('State vector=',9(1X,I6)/14X,2(1X,I6))
        !           328: 475    FORMAT('Scol vector= ',1X,I6,2(1X,I6))
        !           329: #else NOCC
        !           330: 450    FORMAT(' Parse vector=',3(1X,I6),1X,L6,1X,I6)
        !           331: 460    FORMAT(' Play vector= ',2(1X,I6),1X,L6)
        !           332: 470    FORMAT(' State vector=',9(1X,I6)/14X,2(1X,I6))
        !           333: 475    FORMAT(' Scol vector= ',1X,I6,2(1X,I6))
        !           334: #endif NOCC
        !           335: C GDT, PAGE 4
        !           336: C
        !           337: C AF-- ALTER FLAGS
        !           338: C
        !           339: 20000  IF(.NOT.VALID1(J,FMAX)) GO TO 2200
        !           340: C                                              !ENTRY NO VALID?
        !           341:        WRITE(OUTCH,480) FLAGS(J)
        !           342: C                                              !TYPE OLD, GET NEW.
        !           343:        READ(INPCH,490) FLAGS(J)
        !           344:        GO TO 2000
        !           345: C
        !           346: #ifdef NOCC
        !           347: 480    FORMAT('Old=',L2,6X,'New= ',$)
        !           348: #else NOCC
        !           349: 480    FORMAT(' Old=',L2,6X,'New= ',$)
        !           350: #endif NOCC
        !           351: 490    FORMAT(L1)
        !           352: C
        !           353: C 21000-- HELP
        !           354: C
        !           355: 21000  WRITE(OUTCH,900)
        !           356:        GO TO 2000
        !           357: C
        !           358: #ifdef NOCC
        !           359: 900    FORMAT('Valid commands are:'/'AA- Alter ADVS'/
        !           360: &      'AC- Alter CEVENT'/'AF- Alter FINDEX'/'AH- Alter HERE'/
        !           361: &      'AN- Alter switches'/'AO- Alter OBJCTS'/'AR- Alter ROOMS'/
        !           362: &      'AV- Alter VILLS'/'AX- Alter EXITS'/
        !           363: &      'AZ- Alter PUZZLE'/'DA- Display ADVS'/
        !           364: &      'DC- Display CEVENT'/'DF- Display FINDEX'/'DH- Display HACKS'/
        !           365: &      'DL- Display lengths'/'DM- Display RTEXT'/
        !           366: &      'DN- Display switches'/
        !           367: &      'DO- Display OBJCTS'/'DP- Display parser'/
        !           368: &      'DR- Display ROOMS'/'DS- Display state'/'DT- Display text'/
        !           369: &      'DV- Display VILLS'/'DX- Display EXITS'/'DZ- Display PUZZLE'/
        !           370: &      'D2- Display ROOM2'/'EX- Exit'/'HE- Type this message'/
        !           371: &      'NC- No cyclops'/'ND- No deaths'/'NR- No robber'/
        !           372: &      'NT- No troll'/'PD- Program detail'/
        !           373: &      'RC- Restore cyclops'/'RD- Restore deaths'/
        !           374: &      'RR- Restore robber'/'RT- Restore troll'/'TK- Take.')
        !           375: #else NOCC
        !           376: 900    FORMAT(' Valid commands are:'/' AA- Alter ADVS'/
        !           377: &      ' AC- Alter CEVENT'/' AF- Alter FINDEX'/' AH- Alter HERE'/
        !           378: &      ' AN- Alter switches'/' AO- Alter OBJCTS'/' AR- Alter ROOMS'/
        !           379: &      ' AV- Alter VILLS'/' AX- Alter EXITS'/
        !           380: &      ' AZ- Alter PUZZLE'/' DA- Display ADVS'/
        !           381: &      ' DC- Display CEVENT'/' DF- Display FINDEX'/' DH- Display HACKS'/
        !           382: &      ' DL- Display lengths'/' DM- Display RTEXT'/
        !           383: &      ' DN- Display switches'/
        !           384: &      ' DO- Display OBJCTS'/' DP- Display parser'/
        !           385: &      ' DR- Display ROOMS'/' DS- Display state'/' DT- Display text'/
        !           386: &      ' DV- Display VILLS'/' DX- Display EXITS'/' DZ- Display PUZZLE'/
        !           387: &      ' D2- Display ROOM2'/' EX- Exit'/' HE- Type this message'/
        !           388: &      ' NC- No cyclops'/' ND- No deaths'/' NR- No robber'/
        !           389: &      ' NT- No troll'/' PD- Program detail'/
        !           390: &      ' RC- Restore cyclops'/' RD- Restore deaths'/
        !           391: &      ' RR- Restore robber'/' RT- Restore troll'/' TK- Take.')
        !           392: #endif NOCC
        !           393: C
        !           394: C NR-- NO ROBBER
        !           395: C
        !           396: 22000  THFFLG=.FALSE.
        !           397: C                                              !DISABLE ROBBER.
        !           398:        THFACT=.FALSE.
        !           399:        CALL NEWSTA(THIEF,0,0,0,0)
        !           400: C                                              !VANISH THIEF.
        !           401:        WRITE(OUTCH,500)
        !           402:        GO TO 2000
        !           403: C
        !           404: #ifdef NOCC
        !           405: 500    FORMAT('No robber.')
        !           406: #else NOCC
        !           407: 500    FORMAT(' No robber.')
        !           408: #endif NOCC
        !           409: C
        !           410: C NT-- NO TROLL
        !           411: C
        !           412: 23000  TROLLF=.TRUE.
        !           413:        CALL NEWSTA(TROLL,0,0,0,0)
        !           414:        WRITE(OUTCH,510)
        !           415:        GO TO 2000
        !           416: C
        !           417: #ifdef NOCC
        !           418: 510    FORMAT('No troll.')
        !           419: #else NOCC
        !           420: 510    FORMAT(' No troll.')
        !           421: #endif NOCC
        !           422: C
        !           423: C NC-- NO CYCLOPS
        !           424: C
        !           425: 24000  CYCLOF=.TRUE.
        !           426:        CALL NEWSTA(CYCLO,0,0,0,0)
        !           427:        WRITE(OUTCH,520)
        !           428:        GO TO 2000
        !           429: C
        !           430: #ifdef NOCC
        !           431: 520    FORMAT('No cyclops.')
        !           432: #else NOCC
        !           433: 520    FORMAT(' No cyclops.')
        !           434: #endif NOCC
        !           435: C
        !           436: C ND-- IMMORTALITY MODE
        !           437: C
        !           438: 25000  DBGFLG=1
        !           439:        WRITE(OUTCH,530)
        !           440:        GO TO 2000
        !           441: C
        !           442: #ifdef NOCC
        !           443: 530    FORMAT('No deaths.')
        !           444: #else NOCC
        !           445: 530    FORMAT(' No deaths.')
        !           446: #endif NOCC
        !           447: C
        !           448: C RR-- RESTORE ROBBER
        !           449: C
        !           450: 26000  THFACT=.TRUE.
        !           451:        WRITE(OUTCH,540)
        !           452:        GO TO 2000
        !           453: C
        !           454: #ifdef NOCC
        !           455: 540    FORMAT('Restored robber.')
        !           456: #else NOCC
        !           457: 540    FORMAT(' Restored robber.')
        !           458: #endif NOCC
        !           459: C
        !           460: C RT-- RESTORE TROLL
        !           461: C
        !           462: 27000  TROLLF=.FALSE.
        !           463:        CALL NEWSTA(TROLL,0,MTROL,0,0)
        !           464:        WRITE(OUTCH,550)
        !           465:        GO TO 2000
        !           466: C
        !           467: #ifdef NOCC
        !           468: 550    FORMAT('Restored troll.')
        !           469: #else NOCC
        !           470: 550    FORMAT(' Restored troll.')
        !           471: #endif NOCC
        !           472: C
        !           473: C RC-- RESTORE CYCLOPS
        !           474: C
        !           475: 28000  CYCLOF=.FALSE.
        !           476:        MAGICF=.FALSE.
        !           477:        CALL NEWSTA(CYCLO,0,MCYCL,0,0)
        !           478:        WRITE(OUTCH,560)
        !           479:        GO TO 2000
        !           480: C
        !           481: #ifdef NOCC
        !           482: 560    FORMAT('Restored cyclops.')
        !           483: #else NOCC
        !           484: 560    FORMAT(' Restored cyclops.')
        !           485: #endif NOCC
        !           486: C
        !           487: C RD-- MORTAL MODE
        !           488: C
        !           489: 29000  DBGFLG=0
        !           490:        WRITE(OUTCH,570)
        !           491:        GO TO 2000
        !           492: C
        !           493: #ifdef NOCC
        !           494: 570    FORMAT('Restored deaths.')
        !           495: #else NOCC
        !           496: 570    FORMAT(' Restored deaths.')
        !           497: #endif NOCC
        !           498: C GDT, PAGE 5
        !           499: C
        !           500: C TK-- TAKE
        !           501: C
        !           502: 30000  IF(.NOT.VALID1(J,OLNT)) GO TO 2200
        !           503: C                                              !VALID OBJECT?
        !           504:        CALL NEWSTA(J,0,0,0,WINNER)
        !           505: C                                              !YES, TAKE OBJECT.
        !           506:        WRITE(OUTCH,580)
        !           507: C                                              !TELL.
        !           508:        GO TO 2000
        !           509: C
        !           510: #ifdef NOCC
        !           511: 580    FORMAT('Taken.')
        !           512: #else NOCC
        !           513: 580    FORMAT(' Taken.')
        !           514: #endif NOCC
        !           515: C
        !           516: C EX-- GOODBYE
        !           517: C
        !           518: 31000  PRSCON=1
        !           519:        RETURN
        !           520: C
        !           521: C AR-- ALTER ROOM ENTRY
        !           522: C
        !           523: 32000  IF(.NOT.VALID3(J,RLNT,K,5)) GO TO 2200
        !           524: C                                              !INDICES VALID?
        !           525:        WRITE(OUTCH,590) EQR(J,K)
        !           526: C                                              !TYPE OLD, GET NEW.
        !           527:        READ(INPCH,600) EQR(J,K)
        !           528:        GO TO 2000
        !           529: C
        !           530: #ifdef NOCC
        !           531: 590    FORMAT('Old= ',I6,6X,'New= ',$)
        !           532: #else NOCC
        !           533: 590    FORMAT(' Old= ',I6,6X,'New= ',$)
        !           534: #endif NOCC
        !           535: 600    FORMAT(I6)
        !           536: C
        !           537: C AO-- ALTER OBJECT ENTRY
        !           538: C
        !           539: 33000  IF(.NOT.VALID3(J,OLNT,K,14)) GO TO 2200
        !           540: C                                              !INDICES VALID?
        !           541:        WRITE(OUTCH,590) EQO(J,K)
        !           542:        READ(INPCH,600) EQO(J,K)
        !           543:        GO TO 2000
        !           544: C
        !           545: C AA-- ALTER ADVS ENTRY
        !           546: C
        !           547: 34000  IF(.NOT.VALID3(J,ALNT,K,7)) GO TO 2200
        !           548: C                                              !INDICES VALID?
        !           549:        WRITE(OUTCH,590) EQA(J,K)
        !           550:        READ(INPCH,600) EQA(J,K)
        !           551:        GO TO 2000
        !           552: C
        !           553: C AC-- ALTER CLOCK EVENTS
        !           554: C
        !           555: 35000  IF(.NOT.VALID3(J,CLNT,K,3)) GO TO 2200
        !           556: C                                              !INDICES VALID?
        !           557:        IF(K.EQ.3) GO TO 35500
        !           558: C                                              !FLAGS ENTRY?
        !           559:        WRITE(OUTCH,590) EQC(J,K)
        !           560:        READ(INPCH,600) EQC(J,K)
        !           561:        GO TO 2000
        !           562: C
        !           563: 35500  WRITE(OUTCH,480) CFLAG(J)
        !           564:        READ(INPCH,490) CFLAG(J)
        !           565:        GO TO 2000
        !           566: C GDT, PAGE 6
        !           567: C
        !           568: C AX-- ALTER EXITS
        !           569: C
        !           570: 36000  IF(.NOT.VALID1(J,XLNT)) GO TO 2200
        !           571: C                                              !ENTRY NO VALID?
        !           572:        WRITE(OUTCH,610) TRAVEL(J)
        !           573:        READ(INPCH,620) TRAVEL(J)
        !           574:        GO TO 2000
        !           575: C
        !           576: #ifdef NOCC
        !           577: 610    FORMAT('Old= ',I6,6X,'New= ',$)
        !           578: #else NOCC
        !           579: 610    FORMAT(' Old= ',I6,6X,'New= ',$)
        !           580: #endif NOCC
        !           581: 620    FORMAT(I6)
        !           582: C
        !           583: C AV-- ALTER VILLAINS
        !           584: C
        !           585: 37000  IF(.NOT.VALID3(J,VLNT,K,5)) GO TO 2200
        !           586: C                                              !INDICES VALID?
        !           587:        WRITE(OUTCH,590) EQV(J,K)
        !           588:        READ(INPCH,600) EQV(J,K)
        !           589:        GO TO 2000
        !           590: C
        !           591: C D2-- DISPLAY ROOM2 LIST
        !           592: C
        !           593: 38000  IF(.NOT.VALID2(J,K,R2LNT)) GO TO 2200
        !           594:        DO 38100 I=J,K
        !           595:          WRITE(OUTCH,630) I,RROOM2(I),OROOM2(I)
        !           596: 38100  CONTINUE
        !           597:        GO TO 2000
        !           598: C
        !           599: #ifdef NOCC
        !           600: 630    FORMAT('#',I2,'   Room=',I6,'   Obj=',I6)
        !           601: #else NOCC
        !           602: 630    FORMAT(' #',I2,'   Room=',I6,'   Obj=',I6)
        !           603: #endif NOCC
        !           604: C
        !           605: C DN-- DISPLAY SWITCHES
        !           606: C
        !           607: 39000  IF(.NOT.VALID2(J,K,SMAX)) GO TO 2200
        !           608: C                                              !VALID?
        !           609:        DO 39100 I=J,K
        !           610:          WRITE(OUTCH,640) I,SWITCH(I)
        !           611: 39100  CONTINUE
        !           612:        GO TO 2000
        !           613: C
        !           614: #ifdef NOCC
        !           615: 640    FORMAT('Switch #',I2,' = ',I6)
        !           616: #else NOCC
        !           617: 640    FORMAT(' Switch #',I2,' = ',I6)
        !           618: #endif NOCC
        !           619: C
        !           620: C AN-- ALTER SWITCHES
        !           621: C
        !           622: 40000  IF(.NOT.VALID1(J,SMAX)) GO TO 2200
        !           623: C                                              !VALID ENTRY?
        !           624:        WRITE(OUTCH,590) SWITCH(J)
        !           625:        READ(INPCH,600) SWITCH(J)
        !           626:        GO TO 2000
        !           627: C
        !           628: C DM-- DISPLAY MESSAGES
        !           629: C
        !           630: 41000  IF(.NOT.VALID2(J,K,MLNT)) GO TO 2200
        !           631: C                                              !VALID LIMITS?
        !           632:        WRITE(OUTCH,380)
        !           633:        DO 41100 I=J,K,10
        !           634:          L=MIN0(I+9,K)
        !           635:          WRITE(OUTCH,650) I,L,(RTEXT(L1),L1=I,L)
        !           636: 41100  CONTINUE
        !           637:        GO TO 2000
        !           638: C
        !           639: #ifdef NOCC
        !           640: 650    FORMAT(I3,'-',I3,3X,10(1X,I6))
        !           641: #else NOCC
        !           642: 650    FORMAT(1X,I3,'-',I3,3X,10(1X,I6))
        !           643: #endif NOCC
        !           644: C
        !           645: C DT-- DISPLAY TEXT
        !           646: C
        !           647: 42000  CALL RSPEAK(J)
        !           648:        GO TO 2000
        !           649: C
        !           650: C AH-- ALTER HERE
        !           651: C
        !           652: 43000  WRITE(OUTCH,590) HERE
        !           653:        READ(INPCH,600) HERE
        !           654:        EQA(1,1)=HERE
        !           655:        GO TO 2000
        !           656: C
        !           657: C DP-- DISPLAY PARSER STATE
        !           658: C
        !           659: 44000  WRITE(OUTCH,660) ORP,LASTIT,PVEC,SYN
        !           660:        GO TO 2000
        !           661: C
        !           662: #ifdef NOCC
        !           663: 660    FORMAT('ORPHS= ',I7,I7,4I7/
        !           664: &      'PV=    ',I7,4I7/'SYN=   ',6I7/15X,5I7)
        !           665: #else NOCC
        !           666: 660    FORMAT(' ORPHS= ',I7,I7,4I7/
        !           667: &      ' PV=    ',I7,4I7/' SYN=   ',6I7/15X,5I7)
        !           668: #endif NOCC
        !           669: C
        !           670: C PD-- PROGRAM DETAIL DEBUG
        !           671: C
        !           672: 45000  WRITE(OUTCH,610) PRSFLG
        !           673: C                                              !TYPE OLD, GET NEW.
        !           674:        READ(INPCH,620) PRSFLG
        !           675:        GO TO 2000
        !           676: C
        !           677: C DZ-- DISPLAY PUZZLE ROOM
        !           678: C
        !           679: 46000  DO 46100 I=1,64,8
        !           680: C                                              !DISPLAY PUZZLE
        !           681:          WRITE(OUTCH,670) (CPVEC(J),J=I,I+7)
        !           682: 46100  CONTINUE
        !           683:        GO TO 2000
        !           684: C
        !           685: #ifdef NOCC
        !           686: 670    FORMAT(1X,8I3)
        !           687: #else NOCC
        !           688: 670    FORMAT(2X,8I3)
        !           689: #endif NOCC
        !           690: C
        !           691: C AZ-- ALTER PUZZLE ROOM
        !           692: C
        !           693: 47000  IF(.NOT.VALID1(J,64)) GO TO 2200
        !           694: C                                              !VALID ENTRY?
        !           695:        WRITE(OUTCH,590) CPVEC(J)
        !           696: C                                              !OUTPUT OLD,
        !           697:        READ(INPCH,600) CPVEC(J)
        !           698:        GO TO 2000
        !           699: C
        !           700: #endif PDP
        !           701:        END

unix.superglobalmegacorp.com

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