Annotation of 43BSDReno/games/dungeon/gdt.F, revision 1.1.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.