Commit | Line | Data |
---|---|---|
8b22683c KB |
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 |