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