1C GDT- GAME DEBUGGING TOOL 2C 3C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 4C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED 5C WRITTEN BY R. M. SUPNIK 6C 7C DECLARATIONS 8C 9 SUBROUTINE GDT 10 IMPLICIT INTEGER (A-Z) 11#ifdef PDP 12C 13C no debugging tool available in pdp version 14C 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" 27C 28C MISCELLANEOUS VARIABLES 29C 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" 43C 44C FUNCTIONS AND DATA 45C 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 / 63C GDT, PAGE 2 64C 65C FIRST, VALIDATE THAT THE CALLER IS AN IMPLEMENTER. 66C 67 FMAX=46 68C !SET ARRAY LIMITS. 69 SMAX=22 70C 71 IF(GDTFLG.NE.0) GO TO 2000 72C !IF OK, SKIP. 73 WRITE(OUTCH,100) 74C !NOT AN IMPLEMENTER. 75 RETURN 76C !BOOT HIM OFF 77C 78#ifdef NOCC 79100 FORMAT('You are not an authorized user.') 80#else NOCC 81100 FORMAT(' You are not an authorized user.') 82#endif NOCC 83c GDT, PAGE 2A 84C 85C HERE TO GET NEXT COMMAND 86C 872000 WRITE(OUTCH,200) 88C !OUTPUT PROMPT. 89 READ(INPCH,210) CMD 90C !GET COMMAND. 91 IF(CMD.EQ.' ') GO TO 2000 92C !IGNORE BLANKS. 93 DO 2100 I=1,CMDMAX 94C !LOOK IT UP. 95 IF(CMD.EQ.DBGCMD(I)) GO TO 2300 96C !FOUND? 97C check for lower case command, as well 98 if(cmd .eq. ldbgcm(i)) go to 2300 992100 CONTINUE 1002200 WRITE(OUTCH,220) 101C !NO, LOSE. 102 GO TO 2000 103C 104#ifdef NOCC 105200 FORMAT('GDT>',$) 106#else NOCC 107200 FORMAT(' GDT>',$) 108#endif NOCC 109210 FORMAT(A2) 110#ifdef NOCC 111220 FORMAT('?') 112#else NOCC 113220 FORMAT(' ?') 114#endif NOCC 115230 FORMAT(2I6) 116240 FORMAT(I6) 117#ifdef NOCC 118225 FORMAT('Limits: ',$) 119235 FORMAT('Entry: ',$) 120245 FORMAT('Idx,Ary: ',$) 121#else NOCC 122225 FORMAT(' Limits: ',$) 123235 FORMAT(' Entry: ',$) 124245 FORMAT(' Idx,Ary: ',$) 125#endif NOCC 126c 1272300 GO TO (2400,2500,2600,2700),ARGTYP(I)+1 128C !BRANCH ON ARG TYPE. 129 GO TO 2200 130C !ILLEGAL TYPE. 131C 1322700 WRITE(OUTCH,245) 133C !TYPE 3, REQUEST ARRAY COORDS. 134 READ(INPCH,230) J,K 135 GO TO 2400 136C 1372600 WRITE(OUTCH,225) 138C !TYPE 2, READ BOUNDS. 139 READ(INPCH,230) J,K 140 IF(K.EQ.0) K=J 141 GO TO 2400 142C 1432500 WRITE(OUTCH,235) 144C !TYPE 1, READ ENTRY NO. 145 READ(INPCH,240) J 1462400 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 151C !WHAT??? 152C GDT, PAGE 3 153C 154C DR-- DISPLAY ROOMS 155C 15610000 IF(.NOT.VALID2(J,K,RLNT)) GO TO 2200 157C !ARGS VALID? 158 WRITE(OUTCH,300) 159C !COL HDRS. 160 DO 10100 I=J,K 161 WRITE(OUTCH,310) I,(EQR(I,L),L=1,5) 16210100 CONTINUE 163 GO TO 2000 164C 165#ifdef NOCC 166300 FORMAT('RM# DESC1 EXITS ACTION VALUE FLAGS') 167310 FORMAT(I3,4(1X,I6),1X,I6) 168#else NOCC 169300 FORMAT(' RM# DESC1 EXITS ACTION VALUE FLAGS') 170310 FORMAT(1X,I3,4(1X,I6),1X,I6) 171#endif NOCC 172C 173C DO-- DISPLAY OBJECTS 174C 17511000 IF(.NOT.VALID2(J,K,OLNT)) GO TO 2200 176C !ARGS VALID? 177 WRITE(OUTCH,320) 178C !COL HDRS 179 DO 11100 I=J,K 180 WRITE(OUTCH,330) I,(EQO(I,L),L=1,14) 18111100 CONTINUE 182 GO TO 2000 183C 184#ifdef NOCC 185320 FORMAT('OB# DESC1 DESC2 DESCO ACT FLAGS1 FLAGS2 FVL TVL 186& SIZE CAPAC ROOM ADV CON READ') 187330 FORMAT(I3,3I6,I4,2I7,2I4,2I6,1X,3I4,I6) 188#else NOCC 189320 FORMAT(' OB# DESC1 DESC2 DESCO ACT FLAGS1 FLAGS2 FVL TVL 190& SIZE CAPAC ROOM ADV CON READ') 191330 FORMAT(1X,I3,3I6,I4,2I7,2I4,2I6,1X,3I4,I6) 192#endif NOCC 193C 194C DA-- DISPLAY ADVENTURERS 195C 19612000 IF(.NOT.VALID2(J,K,ALNT)) GO TO 2200 197C !ARGS VALID? 198 WRITE(OUTCH,340) 199 DO 12100 I=J,K 200 WRITE(OUTCH,350) I,(EQA(I,L),L=1,7) 20112100 CONTINUE 202 GO TO 2000 203C 204#ifdef NOCC 205340 FORMAT('AD# ROOM SCORE VEHIC OBJECT ACTION STREN FLAGS') 206350 FORMAT(I3,6(1X,I6),1X,I6) 207#else NOCC 208340 FORMAT(' AD# ROOM SCORE VEHIC OBJECT ACTION STREN FLAGS') 209350 FORMAT(1X,I3,6(1X,I6),1X,I6) 210#endif NOCC 211C 212C DC-- DISPLAY CLOCK EVENTS 213C 21413000 IF(.NOT.VALID2(J,K,CLNT)) GO TO 2200 215C !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) 21913100 CONTINUE 220 GO TO 2000 221C 222#ifdef NOCC 223360 FORMAT('CL# TICK ACTION FLAG') 224370 FORMAT(I3,1X,I6,1X,I6,5X,L1) 225#else NOCC 226360 FORMAT(' CL# TICK ACTION FLAG') 227370 FORMAT(1X,I3,1X,I6,1X,I6,5X,L1) 228#endif NOCC 229C 230C DX-- DISPLAY EXITS 231C 23214000 IF(.NOT.VALID2(J,K,XLNT)) GO TO 2200 233C !ARGS VALID? 234 WRITE(OUTCH,380) 235C !COL HDRS. 236 DO 14100 I=J,K,10 237C !TEN PER LINE. 238 L=MIN0(I+9,K) 239C !COMPUTE END OF LINE. 240 WRITE(OUTCH,390) I,L,(TRAVEL(L1),L1=I,L) 24114100 CONTINUE 242 GO TO 2000 243C 244#ifdef NOCC 245380 FORMAT(' RANGE CONTENTS') 246390 FORMAT(I3,'-',I3,3X,10I7) 247#else NOCC 248380 FORMAT(' RANGE CONTENTS') 249390 FORMAT(1X,I3,'-',I3,3X,10I7) 250#endif NOCC 251C 252C DH-- DISPLAY HACKS 253C 25415000 WRITE(OUTCH,400) THFPOS,THFFLG,THFACT,SWDACT,SWDSTA 255 GO TO 2000 256C 257#ifdef NOCC 258400 FORMAT('THFPOS=',I6,', THFFLG=',L2,',THFACT=',L2/ 259& ' SWDACT=',L2,', SWDSTA=',I2) 260#else NOCC 261400 FORMAT(' THFPOS=',I6,', THFFLG=',L2,',THFACT=',L2/ 262& ' SWDACT=',L2,', SWDSTA=',I2) 263#endif NOCC 264C 265C DL-- DISPLAY LENGTHS 266C 26716000 WRITE(OUTCH,410) RLNT,XLNT,OLNT,CLNT,VLNT,ALNT,MLNT,R2LNT, 268& MBASE,STRBIT 269 GO TO 2000 270C 271#ifdef NOCC 272410 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 276410 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 280C 281C DV-- DISPLAY VILLAINS 282C 28317000 IF(.NOT.VALID2(J,K,VLNT)) GO TO 2200 284C !ARGS VALID? 285 WRITE(OUTCH,420) 286C !COL HDRS 287 DO 17100 I=J,K 288 WRITE(OUTCH,430) I,(EQV(I,L),L=1,5) 28917100 CONTINUE 290 GO TO 2000 291C 292#ifdef NOCC 293420 FORMAT('VL# OBJECT PROB OPPS BEST MELEE') 294430 FORMAT(I3,5(1X,I6)) 295#else NOCC 296420 FORMAT(' VL# OBJECT PROB OPPS BEST MELEE') 297430 FORMAT(1X,I3,5(1X,I6)) 298#endif NOCC 299C 300C DF-- DISPLAY FLAGS 301C 30218000 IF(.NOT.VALID2(J,K,FMAX)) GO TO 2200 303C !ARGS VALID? 304 DO 18100 I=J,K 305 WRITE(OUTCH,440) I,FLAGS(I) 30618100 CONTINUE 307 GO TO 2000 308C 309#ifdef NOCC 310440 FORMAT('Flag #',I2,' = ',L1) 311#else NOCC 312440 FORMAT(' Flag #',I2,' = ',L1) 313#endif NOCC 314C 315C DS-- DISPLAY STATE 316C 31719000 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 323C 324#ifdef NOCC 325450 FORMAT('Parse vector=',3(1X,I6),1X,L6,1X,I6) 326460 FORMAT('Play vector= ',2(1X,I6),1X,L6) 327470 FORMAT('State vector=',9(1X,I6)/14X,2(1X,I6)) 328475 FORMAT('Scol vector= ',1X,I6,2(1X,I6)) 329#else NOCC 330450 FORMAT(' Parse vector=',3(1X,I6),1X,L6,1X,I6) 331460 FORMAT(' Play vector= ',2(1X,I6),1X,L6) 332470 FORMAT(' State vector=',9(1X,I6)/14X,2(1X,I6)) 333475 FORMAT(' Scol vector= ',1X,I6,2(1X,I6)) 334#endif NOCC 335C GDT, PAGE 4 336C 337C AF-- ALTER FLAGS 338C 33920000 IF(.NOT.VALID1(J,FMAX)) GO TO 2200 340C !ENTRY NO VALID? 341 WRITE(OUTCH,480) FLAGS(J) 342C !TYPE OLD, GET NEW. 343 READ(INPCH,490) FLAGS(J) 344 GO TO 2000 345C 346#ifdef NOCC 347480 FORMAT('Old=',L2,6X,'New= ',$) 348#else NOCC 349480 FORMAT(' Old=',L2,6X,'New= ',$) 350#endif NOCC 351490 FORMAT(L1) 352C 353C 21000-- HELP 354C 35521000 WRITE(OUTCH,900) 356 GO TO 2000 357C 358#ifdef NOCC 359900 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 376900 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 393C 394C NR-- NO ROBBER 395C 39622000 THFFLG=.FALSE. 397C !DISABLE ROBBER. 398 THFACT=.FALSE. 399 CALL NEWSTA(THIEF,0,0,0,0) 400C !VANISH THIEF. 401 WRITE(OUTCH,500) 402 GO TO 2000 403C 404#ifdef NOCC 405500 FORMAT('No robber.') 406#else NOCC 407500 FORMAT(' No robber.') 408#endif NOCC 409C 410C NT-- NO TROLL 411C 41223000 TROLLF=.TRUE. 413 CALL NEWSTA(TROLL,0,0,0,0) 414 WRITE(OUTCH,510) 415 GO TO 2000 416C 417#ifdef NOCC 418510 FORMAT('No troll.') 419#else NOCC 420510 FORMAT(' No troll.') 421#endif NOCC 422C 423C NC-- NO CYCLOPS 424C 42524000 CYCLOF=.TRUE. 426 CALL NEWSTA(CYCLO,0,0,0,0) 427 WRITE(OUTCH,520) 428 GO TO 2000 429C 430#ifdef NOCC 431520 FORMAT('No cyclops.') 432#else NOCC 433520 FORMAT(' No cyclops.') 434#endif NOCC 435C 436C ND-- IMMORTALITY MODE 437C 43825000 DBGFLG=1 439 WRITE(OUTCH,530) 440 GO TO 2000 441C 442#ifdef NOCC 443530 FORMAT('No deaths.') 444#else NOCC 445530 FORMAT(' No deaths.') 446#endif NOCC 447C 448C RR-- RESTORE ROBBER 449C 45026000 THFACT=.TRUE. 451 WRITE(OUTCH,540) 452 GO TO 2000 453C 454#ifdef NOCC 455540 FORMAT('Restored robber.') 456#else NOCC 457540 FORMAT(' Restored robber.') 458#endif NOCC 459C 460C RT-- RESTORE TROLL 461C 46227000 TROLLF=.FALSE. 463 CALL NEWSTA(TROLL,0,MTROL,0,0) 464 WRITE(OUTCH,550) 465 GO TO 2000 466C 467#ifdef NOCC 468550 FORMAT('Restored troll.') 469#else NOCC 470550 FORMAT(' Restored troll.') 471#endif NOCC 472C 473C RC-- RESTORE CYCLOPS 474C 47528000 CYCLOF=.FALSE. 476 MAGICF=.FALSE. 477 CALL NEWSTA(CYCLO,0,MCYCL,0,0) 478 WRITE(OUTCH,560) 479 GO TO 2000 480C 481#ifdef NOCC 482560 FORMAT('Restored cyclops.') 483#else NOCC 484560 FORMAT(' Restored cyclops.') 485#endif NOCC 486C 487C RD-- MORTAL MODE 488C 48929000 DBGFLG=0 490 WRITE(OUTCH,570) 491 GO TO 2000 492C 493#ifdef NOCC 494570 FORMAT('Restored deaths.') 495#else NOCC 496570 FORMAT(' Restored deaths.') 497#endif NOCC 498C GDT, PAGE 5 499C 500C TK-- TAKE 501C 50230000 IF(.NOT.VALID1(J,OLNT)) GO TO 2200 503C !VALID OBJECT? 504 CALL NEWSTA(J,0,0,0,WINNER) 505C !YES, TAKE OBJECT. 506 WRITE(OUTCH,580) 507C !TELL. 508 GO TO 2000 509C 510#ifdef NOCC 511580 FORMAT('Taken.') 512#else NOCC 513580 FORMAT(' Taken.') 514#endif NOCC 515C 516C EX-- GOODBYE 517C 51831000 PRSCON=1 519 RETURN 520C 521C AR-- ALTER ROOM ENTRY 522C 52332000 IF(.NOT.VALID3(J,RLNT,K,5)) GO TO 2200 524C !INDICES VALID? 525 WRITE(OUTCH,590) EQR(J,K) 526C !TYPE OLD, GET NEW. 527 READ(INPCH,600) EQR(J,K) 528 GO TO 2000 529C 530#ifdef NOCC 531590 FORMAT('Old= ',I6,6X,'New= ',$) 532#else NOCC 533590 FORMAT(' Old= ',I6,6X,'New= ',$) 534#endif NOCC 535600 FORMAT(I6) 536C 537C AO-- ALTER OBJECT ENTRY 538C 53933000 IF(.NOT.VALID3(J,OLNT,K,14)) GO TO 2200 540C !INDICES VALID? 541 WRITE(OUTCH,590) EQO(J,K) 542 READ(INPCH,600) EQO(J,K) 543 GO TO 2000 544C 545C AA-- ALTER ADVS ENTRY 546C 54734000 IF(.NOT.VALID3(J,ALNT,K,7)) GO TO 2200 548C !INDICES VALID? 549 WRITE(OUTCH,590) EQA(J,K) 550 READ(INPCH,600) EQA(J,K) 551 GO TO 2000 552C 553C AC-- ALTER CLOCK EVENTS 554C 55535000 IF(.NOT.VALID3(J,CLNT,K,3)) GO TO 2200 556C !INDICES VALID? 557 IF(K.EQ.3) GO TO 35500 558C !FLAGS ENTRY? 559 WRITE(OUTCH,590) EQC(J,K) 560 READ(INPCH,600) EQC(J,K) 561 GO TO 2000 562C 56335500 WRITE(OUTCH,480) CFLAG(J) 564 READ(INPCH,490) CFLAG(J) 565 GO TO 2000 566C GDT, PAGE 6 567C 568C AX-- ALTER EXITS 569C 57036000 IF(.NOT.VALID1(J,XLNT)) GO TO 2200 571C !ENTRY NO VALID? 572 WRITE(OUTCH,610) TRAVEL(J) 573 READ(INPCH,620) TRAVEL(J) 574 GO TO 2000 575C 576#ifdef NOCC 577610 FORMAT('Old= ',I6,6X,'New= ',$) 578#else NOCC 579610 FORMAT(' Old= ',I6,6X,'New= ',$) 580#endif NOCC 581620 FORMAT(I6) 582C 583C AV-- ALTER VILLAINS 584C 58537000 IF(.NOT.VALID3(J,VLNT,K,5)) GO TO 2200 586C !INDICES VALID? 587 WRITE(OUTCH,590) EQV(J,K) 588 READ(INPCH,600) EQV(J,K) 589 GO TO 2000 590C 591C D2-- DISPLAY ROOM2 LIST 592C 59338000 IF(.NOT.VALID2(J,K,R2LNT)) GO TO 2200 594 DO 38100 I=J,K 595 WRITE(OUTCH,630) I,RROOM2(I),OROOM2(I) 59638100 CONTINUE 597 GO TO 2000 598C 599#ifdef NOCC 600630 FORMAT('#',I2,' Room=',I6,' Obj=',I6) 601#else NOCC 602630 FORMAT(' #',I2,' Room=',I6,' Obj=',I6) 603#endif NOCC 604C 605C DN-- DISPLAY SWITCHES 606C 60739000 IF(.NOT.VALID2(J,K,SMAX)) GO TO 2200 608C !VALID? 609 DO 39100 I=J,K 610 WRITE(OUTCH,640) I,SWITCH(I) 61139100 CONTINUE 612 GO TO 2000 613C 614#ifdef NOCC 615640 FORMAT('Switch #',I2,' = ',I6) 616#else NOCC 617640 FORMAT(' Switch #',I2,' = ',I6) 618#endif NOCC 619C 620C AN-- ALTER SWITCHES 621C 62240000 IF(.NOT.VALID1(J,SMAX)) GO TO 2200 623C !VALID ENTRY? 624 WRITE(OUTCH,590) SWITCH(J) 625 READ(INPCH,600) SWITCH(J) 626 GO TO 2000 627C 628C DM-- DISPLAY MESSAGES 629C 63041000 IF(.NOT.VALID2(J,K,MLNT)) GO TO 2200 631C !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) 63641100 CONTINUE 637 GO TO 2000 638C 639#ifdef NOCC 640650 FORMAT(I3,'-',I3,3X,10(1X,I6)) 641#else NOCC 642650 FORMAT(1X,I3,'-',I3,3X,10(1X,I6)) 643#endif NOCC 644C 645C DT-- DISPLAY TEXT 646C 64742000 CALL RSPEAK(J) 648 GO TO 2000 649C 650C AH-- ALTER HERE 651C 65243000 WRITE(OUTCH,590) HERE 653 READ(INPCH,600) HERE 654 EQA(1,1)=HERE 655 GO TO 2000 656C 657C DP-- DISPLAY PARSER STATE 658C 65944000 WRITE(OUTCH,660) ORP,LASTIT,PVEC,SYN 660 GO TO 2000 661C 662#ifdef NOCC 663660 FORMAT('ORPHS= ',I7,I7,4I7/ 664& 'PV= ',I7,4I7/'SYN= ',6I7/15X,5I7) 665#else NOCC 666660 FORMAT(' ORPHS= ',I7,I7,4I7/ 667& ' PV= ',I7,4I7/' SYN= ',6I7/15X,5I7) 668#endif NOCC 669C 670C PD-- PROGRAM DETAIL DEBUG 671C 67245000 WRITE(OUTCH,610) PRSFLG 673C !TYPE OLD, GET NEW. 674 READ(INPCH,620) PRSFLG 675 GO TO 2000 676C 677C DZ-- DISPLAY PUZZLE ROOM 678C 67946000 DO 46100 I=1,64,8 680C !DISPLAY PUZZLE 681 WRITE(OUTCH,670) (CPVEC(J),J=I,I+7) 68246100 CONTINUE 683 GO TO 2000 684C 685#ifdef NOCC 686670 FORMAT(1X,8I3) 687#else NOCC 688670 FORMAT(2X,8I3) 689#endif NOCC 690C 691C AZ-- ALTER PUZZLE ROOM 692C 69347000 IF(.NOT.VALID1(J,64)) GO TO 2200 694C !VALID ENTRY? 695 WRITE(OUTCH,590) CPVEC(J) 696C !OUTPUT OLD, 697 READ(INPCH,600) CPVEC(J) 698 GO TO 2000 699C 700#endif PDP 701 END 702