home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume2 / dungeon / part04 / gdt.F < prev    next >
Text File  |  1987-09-01  |  12KB  |  543 lines

  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 ldbgcmd(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 ldbgcmd/'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. 100    FORMAT(' You are not an authorized user.')
  79. c GDT, PAGE 2A
  80. C
  81. C HERE TO GET NEXT COMMAND
  82. C
  83. 2000    WRITE(OUTCH,200)
  84. C                        !OUTPUT PROMPT.
  85.     READ(INPCH,210) CMD
  86. C                        !GET COMMAND.
  87.     IF(CMD.EQ.'  ') GO TO 2000
  88. C                        !IGNORE BLANKS.
  89.     DO 2100 I=1,CMDMAX
  90. C                        !LOOK IT UP.
  91.       IF(CMD.EQ.DBGCMD(I)) GO TO 2300
  92. C                        !FOUND?
  93. C      check for lower case command, as well
  94.       if(cmd .eq. ldbgcmd(i)) go to 2300
  95. 2100    CONTINUE
  96. 2200    WRITE(OUTCH,220)
  97. C                        !NO, LOSE.
  98.     GO TO 2000
  99. C
  100. 200    FORMAT(' GDT>',$)
  101. 210    FORMAT(A2)
  102. 220    FORMAT(' ?')
  103. 230    FORMAT(2I6)
  104. 240    FORMAT(I6)
  105. 225    FORMAT(' Limits:   ',$)
  106. 235    FORMAT(' Entry:    ',$)
  107. 245    FORMAT(' Idx,Ary:  ',$)
  108. c
  109. 2300    GO TO (2400,2500,2600,2700),ARGTYP(I)+1
  110. C                        !BRANCH ON ARG TYPE.
  111.     GO TO 2200
  112. C                        !ILLEGAL TYPE.
  113. C
  114. 2700    WRITE(OUTCH,245)
  115. C                        !TYPE 3, REQUEST ARRAY COORDS.
  116.     READ(INPCH,230) J,K
  117.     GO TO 2400
  118. C
  119. 2600    WRITE(OUTCH,225)
  120. C                        !TYPE 2, READ BOUNDS.
  121.     READ(INPCH,230) J,K
  122.     IF(K.EQ.0) K=J
  123.     GO TO 2400
  124. C
  125. 2500    WRITE(OUTCH,235)
  126. C                        !TYPE 1, READ ENTRY NO.
  127.     READ(INPCH,240) J
  128. 2400    GO TO (10000,11000,12000,13000,14000,15000,16000,17000,18000,
  129. &     19000,20000,21000,22000,23000,24000,25000,26000,27000,28000,
  130. &     29000,30000,31000,32000,33000,34000,35000,36000,37000,38000,
  131. &     39000,40000,41000,42000,43000,44000,45000,46000,47000),I
  132.     GO TO 2200
  133. C                        !WHAT???
  134. C GDT, PAGE 3
  135. C
  136. C DR-- DISPLAY ROOMS
  137. C
  138. 10000    IF(.NOT.VALID2(J,K,RLNT)) GO TO 2200
  139. C                        !ARGS VALID?
  140.     WRITE(OUTCH,300)
  141. C                        !COL HDRS.
  142.     DO 10100 I=J,K
  143.       WRITE(OUTCH,310) I,(EQR(I,L),L=1,5)
  144. 10100    CONTINUE
  145.     GO TO 2000
  146. C
  147. 300    FORMAT(' RM#  DESC1  EXITS ACTION  VALUE  FLAGS')
  148. 310    FORMAT(1X,I3,4(1X,I6),1X,I6)
  149. C
  150. C DO-- DISPLAY OBJECTS
  151. C
  152. 11000    IF(.NOT.VALID2(J,K,OLNT)) GO TO 2200
  153. C                        !ARGS VALID?
  154.     WRITE(OUTCH,320)
  155. C                        !COL HDRS
  156.     DO 11100 I=J,K
  157.       WRITE(OUTCH,330) I,(EQO(I,L),L=1,14)
  158. 11100    CONTINUE
  159.     GO TO 2000
  160. C
  161. 320    FORMAT(' OB# DESC1 DESC2 DESCO ACT FLAGS1 FLAGS2 FVL TVL
  162. &      SIZE CAPAC ROOM ADV CON  READ')
  163. 330    FORMAT(1X,I3,3I6,I4,2I7,2I4,2I6,1X,3I4,I6)
  164. C
  165. C DA-- DISPLAY ADVENTURERS
  166. C
  167. 12000    IF(.NOT.VALID2(J,K,ALNT)) GO TO 2200
  168. C                        !ARGS VALID?
  169.     WRITE(OUTCH,340)
  170.     DO 12100 I=J,K
  171.       WRITE(OUTCH,350) I,(EQA(I,L),L=1,7)
  172. 12100    CONTINUE
  173.     GO TO 2000
  174. C
  175. 340    FORMAT(' AD#   ROOM  SCORE  VEHIC OBJECT ACTION  STREN  FLAGS')
  176. 350    FORMAT(1X,I3,6(1X,I6),1X,I6)
  177. C
  178. C DC-- DISPLAY CLOCK EVENTS
  179. C
  180. 13000    IF(.NOT.VALID2(J,K,CLNT)) GO TO 2200
  181. C                        !ARGS VALID?
  182.     WRITE(OUTCH,360)
  183.     DO 13100 I=J,K
  184.       WRITE(OUTCH,370) I,(EQC(I,L),L=1,2),CFLAG(I)
  185. 13100    CONTINUE
  186.     GO TO 2000
  187. C
  188. 360    FORMAT(' CL#   TICK ACTION  FLAG')
  189. 370    FORMAT(1X,I3,1X,I6,1X,I6,5X,L1)
  190. C
  191. C DX-- DISPLAY EXITS
  192. C
  193. 14000    IF(.NOT.VALID2(J,K,XLNT)) GO TO 2200
  194. C                        !ARGS VALID?
  195.     WRITE(OUTCH,380)
  196. C                        !COL HDRS.
  197.     DO 14100 I=J,K,10
  198. C                        !TEN PER LINE.
  199.       L=MIN0(I+9,K)
  200. C                        !COMPUTE END OF LINE.
  201.       WRITE(OUTCH,390) I,L,(TRAVEL(L1),L1=I,L)
  202. 14100    CONTINUE
  203.     GO TO 2000
  204. C
  205. 380    FORMAT('   RANGE   CONTENTS')
  206. 390    FORMAT(1X,I3,'-',I3,3X,10I7)
  207. C
  208. C DH-- DISPLAY HACKS
  209. C
  210. 15000    WRITE(OUTCH,400) THFPOS,THFFLG,THFACT,SWDACT,SWDSTA
  211.     GO TO 2000
  212. C
  213. 400    FORMAT(' THFPOS=',I6,', THFFLG=',L2,',THFACT=',L2/
  214. &    ' SWDACT=',L2,', SWDSTA=',I2)
  215. C
  216. C DL-- DISPLAY LENGTHS
  217. C
  218. 16000    WRITE(OUTCH,410) RLNT,XLNT,OLNT,CLNT,VLNT,ALNT,MLNT,R2LNT,
  219. &        MBASE,STRBIT
  220.     GO TO 2000
  221. C
  222. 410    FORMAT(' R=',I6,', X=',I6,', O=',I6,', C=',I6/
  223. &    ' V=',I6,', A=',I6,', M=',I6,', R2=',I5/
  224. &    ' MBASE=',I6,', STRBIT=',I6)
  225. C
  226. C DV-- DISPLAY VILLAINS
  227. C
  228. 17000    IF(.NOT.VALID2(J,K,VLNT)) GO TO 2200
  229. C                        !ARGS VALID?
  230.     WRITE(OUTCH,420)
  231. C                        !COL HDRS
  232.     DO 17100 I=J,K
  233.       WRITE(OUTCH,430) I,(EQV(I,L),L=1,5)
  234. 17100    CONTINUE
  235.     GO TO 2000
  236. C
  237. 420    FORMAT(' VL# OBJECT   PROB   OPPS   BEST  MELEE')
  238. 430    FORMAT(1X,I3,5(1X,I6))
  239. C
  240. C DF-- DISPLAY FLAGS
  241. C
  242. 18000    IF(.NOT.VALID2(J,K,FMAX)) GO TO 2200
  243. C                        !ARGS VALID?
  244.     DO 18100 I=J,K
  245.       WRITE(OUTCH,440) I,FLAGS(I)
  246. 18100    CONTINUE
  247.     GO TO 2000
  248. C
  249. 440    FORMAT(' Flag #',I2,' = ',L1)
  250. C
  251. C DS-- DISPLAY STATE
  252. C
  253. 19000    WRITE(OUTCH,450) PRSA,PRSO,PRSI,PRSWON,PRSCON
  254.     WRITE(OUTCH,460) WINNER,HERE,TELFLG
  255.     WRITE(OUTCH,470) MOVES,DEATHS,RWSCOR,MXSCOR,MXLOAD,LTSHFT,BLOC,
  256. &        MUNGRM,HS,EGSCOR,EGMXSC
  257.     WRITE(OUTCH,475) FROMDR,SCOLRM,SCOLAC
  258.     GO TO 2000
  259. C
  260. 450    FORMAT(' Parse vector=',3(1X,I6),1X,L6,1X,I6)
  261. 460    FORMAT(' Play vector= ',2(1X,I6),1X,L6)
  262. 470    FORMAT(' State vector=',9(1X,I6)/14X,2(1X,I6))
  263. 475    FORMAT(' Scol vector= ',1X,I6,2(1X,I6))
  264. C GDT, PAGE 4
  265. C
  266. C AF-- ALTER FLAGS
  267. C
  268. 20000    IF(.NOT.VALID1(J,FMAX)) GO TO 2200
  269. C                        !ENTRY NO VALID?
  270.     WRITE(OUTCH,480) FLAGS(J)
  271. C                        !TYPE OLD, GET NEW.
  272.     READ(INPCH,490) FLAGS(J)
  273.     GO TO 2000
  274. C
  275. 480    FORMAT(' Old=',L2,6X,'New= ',$)
  276. 490    FORMAT(L1)
  277. C
  278. C 21000-- HELP
  279. C
  280. 21000    WRITE(OUTCH,900)
  281.     GO TO 2000
  282. C
  283. 900    FORMAT(' Valid commands are:'/' AA- Alter ADVS'/
  284. &    ' AC- Alter CEVENT'/' AF- Alter FINDEX'/' AH- Alter HERE'/
  285. &    ' AN- Alter switches'/' AO- Alter OBJCTS'/' AR- Alter ROOMS'/
  286. &    ' AV- Alter VILLS'/' AX- Alter EXITS'/
  287. &    ' AZ- Alter PUZZLE'/' DA- Display ADVS'/
  288. &    ' DC- Display CEVENT'/' DF- Display FINDEX'/' DH- Display HACKS'/
  289. &    ' DL- Display lengths'/' DM- Display RTEXT'/
  290. &    ' DN- Display switches'/
  291. &    ' DO- Display OBJCTS'/' DP- Display parser'/
  292. &    ' DR- Display ROOMS'/' DS- Display state'/' DT- Display text'/
  293. &    ' DV- Display VILLS'/' DX- Display EXITS'/' DZ- Display PUZZLE'/
  294. &    ' D2- Display ROOM2'/' EX- Exit'/' HE- Type this message'/
  295. &    ' NC- No cyclops'/' ND- No deaths'/' NR- No robber'/
  296. &    ' NT- No troll'/' PD- Program detail'/
  297. &    ' RC- Restore cyclops'/' RD- Restore deaths'/
  298. &    ' RR- Restore robber'/' RT- Restore troll'/' TK- Take.')
  299. C
  300. C NR-- NO ROBBER
  301. C
  302. 22000    THFFLG=.FALSE.
  303. C                        !DISABLE ROBBER.
  304.     THFACT=.FALSE.
  305.     CALL NEWSTA(THIEF,0,0,0,0)
  306. C                        !VANISH THIEF.
  307.     WRITE(OUTCH,500)
  308.     GO TO 2000
  309. C
  310. 500    FORMAT(' No robber.')
  311. C
  312. C NT-- NO TROLL
  313. C
  314. 23000    TROLLF=.TRUE.
  315.     CALL NEWSTA(TROLL,0,0,0,0)
  316.     WRITE(OUTCH,510)
  317.     GO TO 2000
  318. C
  319. 510    FORMAT(' No troll.')
  320. C
  321. C NC-- NO CYCLOPS
  322. C
  323. 24000    CYCLOF=.TRUE.
  324.     CALL NEWSTA(CYCLO,0,0,0,0)
  325.     WRITE(OUTCH,520)
  326.     GO TO 2000
  327. C
  328. 520    FORMAT(' No cyclops.')
  329. C
  330. C ND-- IMMORTALITY MODE
  331. C
  332. 25000    DBGFLG=1
  333.     WRITE(OUTCH,530)
  334.     GO TO 2000
  335. C
  336. 530    FORMAT(' No deaths.')
  337. C
  338. C RR-- RESTORE ROBBER
  339. C
  340. 26000    THFACT=.TRUE.
  341.     WRITE(OUTCH,540)
  342.     GO TO 2000
  343. C
  344. 540    FORMAT(' Restored robber.')
  345. C
  346. C RT-- RESTORE TROLL
  347. C
  348. 27000    TROLLF=.FALSE.
  349.     CALL NEWSTA(TROLL,0,MTROL,0,0)
  350.     WRITE(OUTCH,550)
  351.     GO TO 2000
  352. C
  353. 550    FORMAT(' Restored troll.')
  354. C
  355. C RC-- RESTORE CYCLOPS
  356. C
  357. 28000    CYCLOF=.FALSE.
  358.     MAGICF=.FALSE.
  359.     CALL NEWSTA(CYCLO,0,MCYCL,0,0)
  360.     WRITE(OUTCH,560)
  361.     GO TO 2000
  362. C
  363. 560    FORMAT(' Restored cyclops.')
  364. C
  365. C RD-- MORTAL MODE
  366. C
  367. 29000    DBGFLG=0
  368.     WRITE(OUTCH,570)
  369.     GO TO 2000
  370. C
  371. 570    FORMAT(' Restored deaths.')
  372. C GDT, PAGE 5
  373. C
  374. C TK-- TAKE
  375. C
  376. 30000    IF(.NOT.VALID1(J,OLNT)) GO TO 2200
  377. C                        !VALID OBJECT?
  378.     CALL NEWSTA(J,0,0,0,WINNER)
  379. C                        !YES, TAKE OBJECT.
  380.     WRITE(OUTCH,580)
  381. C                        !TELL.
  382.     GO TO 2000
  383. C
  384. 580    FORMAT(' Taken.')
  385. C
  386. C EX-- GOODBYE
  387. C
  388. 31000    PRSCON=1
  389.     RETURN
  390. C
  391. C AR--    ALTER ROOM ENTRY
  392. C
  393. 32000    IF(.NOT.VALID3(J,RLNT,K,5)) GO TO 2200
  394. C                        !INDICES VALID?
  395.     WRITE(OUTCH,590) EQR(J,K)
  396. C                        !TYPE OLD, GET NEW.
  397.     READ(INPCH,600) EQR(J,K)
  398.     GO TO 2000
  399. C
  400. 590    FORMAT(' Old= ',I6,6X,'New= ',$)
  401. 600    FORMAT(I6)
  402. C
  403. C AO-- ALTER OBJECT ENTRY
  404. C
  405. 33000    IF(.NOT.VALID3(J,OLNT,K,14)) GO TO 2200
  406. C                        !INDICES VALID?
  407.     WRITE(OUTCH,590) EQO(J,K)
  408.     READ(INPCH,600) EQO(J,K)
  409.     GO TO 2000
  410. C
  411. C AA-- ALTER ADVS ENTRY
  412. C
  413. 34000    IF(.NOT.VALID3(J,ALNT,K,7)) GO TO 2200
  414. C                        !INDICES VALID?
  415.     WRITE(OUTCH,590) EQA(J,K)
  416.     READ(INPCH,600) EQA(J,K)
  417.     GO TO 2000
  418. C
  419. C AC-- ALTER CLOCK EVENTS
  420. C
  421. 35000    IF(.NOT.VALID3(J,CLNT,K,3)) GO TO 2200
  422. C                        !INDICES VALID?
  423.     IF(K.EQ.3) GO TO 35500
  424. C                        !FLAGS ENTRY?
  425.     WRITE(OUTCH,590) EQC(J,K)
  426.     READ(INPCH,600) EQC(J,K)
  427.     GO TO 2000
  428. C
  429. 35500    WRITE(OUTCH,480) CFLAG(J)
  430.     READ(INPCH,490) CFLAG(J)
  431.     GO TO 2000
  432. C GDT, PAGE 6
  433. C
  434. C AX-- ALTER EXITS
  435. C
  436. 36000    IF(.NOT.VALID1(J,XLNT)) GO TO 2200
  437. C                        !ENTRY NO VALID?
  438.     WRITE(OUTCH,610) TRAVEL(J)
  439.     READ(INPCH,620) TRAVEL(J)
  440.     GO TO 2000
  441. C
  442. 610    FORMAT(' Old= ',I6,6X,'New= ',$)
  443. 620    FORMAT(I6)
  444. C
  445. C AV-- ALTER VILLAINS
  446. C
  447. 37000    IF(.NOT.VALID3(J,VLNT,K,5)) GO TO 2200
  448. C                        !INDICES VALID?
  449.     WRITE(OUTCH,590) EQV(J,K)
  450.     READ(INPCH,600) EQV(J,K)
  451.     GO TO 2000
  452. C
  453. C D2-- DISPLAY ROOM2 LIST
  454. C
  455. 38000    IF(.NOT.VALID2(J,K,R2LNT)) GO TO 2200
  456.     DO 38100 I=J,K
  457.       WRITE(OUTCH,630) I,RROOM2(I),OROOM2(I)
  458. 38100    CONTINUE
  459.     GO TO 2000
  460. C
  461. 630    FORMAT(' #',I2,'   Room=',I6,'   Obj=',I6)
  462. C
  463. C DN-- DISPLAY SWITCHES
  464. C
  465. 39000    IF(.NOT.VALID2(J,K,SMAX)) GO TO 2200
  466. C                        !VALID?
  467.     DO 39100 I=J,K
  468.       WRITE(OUTCH,640) I,SWITCH(I)
  469. 39100    CONTINUE
  470.     GO TO 2000
  471. C
  472. 640    FORMAT(' Switch #',I2,' = ',I6)
  473. C
  474. C AN-- ALTER SWITCHES
  475. C
  476. 40000    IF(.NOT.VALID1(J,SMAX)) GO TO 2200
  477. C                        !VALID ENTRY?
  478.     WRITE(OUTCH,590) SWITCH(J)
  479.     READ(INPCH,600) SWITCH(J)
  480.     GO TO 2000
  481. C
  482. C DM-- DISPLAY MESSAGES
  483. C
  484. 41000    IF(.NOT.VALID2(J,K,MLNT)) GO TO 2200
  485. C                        !VALID LIMITS?
  486.     WRITE(OUTCH,380)
  487.     DO 41100 I=J,K,10
  488.       L=MIN0(I+9,K)
  489.       WRITE(OUTCH,650) I,L,(RTEXT(L1),L1=I,L)
  490. 41100    CONTINUE
  491.     GO TO 2000
  492. C
  493. 650    FORMAT(1X,I3,'-',I3,3X,10(1X,I6))
  494. C
  495. C DT-- DISPLAY TEXT
  496. C
  497. 42000    CALL RSPEAK(J)
  498.     GO TO 2000
  499. C
  500. C AH--    ALTER HERE
  501. C
  502. 43000    WRITE(OUTCH,590) HERE
  503.     READ(INPCH,600) HERE
  504.     EQA(1,1)=HERE
  505.     GO TO 2000
  506. C
  507. C DP--    DISPLAY PARSER STATE
  508. C
  509. 44000    WRITE(OUTCH,660) ORP,LASTIT,PVEC,SYN
  510.     GO TO 2000
  511. C
  512. 660    FORMAT(' ORPHS= ',I7,I7,4I7/
  513. &    ' PV=    ',I7,4I7/' SYN=   ',6I7/15X,5I7)
  514. C
  515. C PD--    PROGRAM DETAIL DEBUG
  516. C
  517. 45000    WRITE(OUTCH,610) PRSFLG
  518. C                        !TYPE OLD, GET NEW.
  519.     READ(INPCH,620) PRSFLG
  520.     GO TO 2000
  521. C
  522. C DZ--    DISPLAY PUZZLE ROOM
  523. C
  524. 46000    DO 46100 I=1,64,8
  525. C                        !DISPLAY PUZZLE
  526.       WRITE(OUTCH,670) (CPVEC(J),J=I,I+7)
  527. 46100    CONTINUE
  528.     GO TO 2000
  529. C
  530. 670    FORMAT(2X,8I3)
  531. C
  532. C AZ--    ALTER PUZZLE ROOM
  533. C
  534. 47000    IF(.NOT.VALID1(J,64)) GO TO 2200
  535. C                        !VALID ENTRY?
  536.     WRITE(OUTCH,590) CPVEC(J)
  537. C                        !OUTPUT OLD,
  538.     READ(INPCH,600) CPVEC(J)
  539.     GO TO 2000
  540. C
  541. #endif PDP
  542.     END
  543.