date and time created 91/03/14 15:26:35 by donn
[unix-history] / usr / src / contrib / dungeon / gdt.F
CommitLineData
8b22683c
KB
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