SUBROUTINE CHANGE (BLK) C C ROBERT WATSON C CISCO, INC. C (918)665-2110 C 4135 S. 100TH E. AVE. C TULSA OK 74145 C C THIS PROGRAM HAS BEEN DONATED TO THE PUBLIC DOMAIN C AND IS NOT TO BE COPYRIGHTED. C INTEGER*4 IBEG, PC, IWD INTEGER*2 BLK(256), Q, IWDDUM(2), 1 LOIWD, HIIWD, PCDUM(2), 2 HIPC, LOPC BYTE IN, Z, LOC(6), 1 MAC(6), B, F, 2 BDUM(2), RAD(3) EQUIVALENCE (IWD,IWDDUM(1)), (IWDDUM(1),LOIWD), 1 (IWDDUM(2),HIIWD), (PC,PCDUM(1)), 2 (PCDUM(1),LOPC), (PCDUM(2),HIPC), 3 (IDUM,BDUM(1)) Z = .TRUE. 100 IN = .FALSE. B = ' ' 150 WRITE (5,200) 200 FORMAT (/,' ENTER OCTAL ADDRESS OF WORD TO BE CHANGED',/, 1 ' OR RETURN TO CHANGE MODES ',$) READ (5,250,END=800,ERR=100) Q, IBEG 250 FORMAT (Q,O6) IF (Q .LE. 0) GO TO 600 IF ((IBEG.AND.1) .EQ. 0) GO TO 255 WRITE (5,256) 7 256 FORMAT (/,' WORD ADDRESS MUST BE EVEN',A1) GO TO 150 255 CALL INIT (BLK, ISUB, IBEG, IREC, PC) IN = .TRUE. PC = IBEG 260 WRITE (5,300) 300 FORMAT (/,' RETURN TO VIEW NEXT WORD',/, 1 ' ENTER ''I'' TO INSERT NEW CONTENTS',/, 2 ' ENTER ''N'' TO GO TO NEW LOCATION',/, 3 ' ENTER ''X'' TO CHANGE MODES',/) 400 CALL OCTL (LOPC, LOC, Z) CALL OCTL (BLK(ISUB), MAC, Z) 490 WRITE (5,500) LOC, MAC 500 FORMAT (X,6A1,2X,6A1,2X,$) READ (5,501,ERR=260,END=800) Q, B 501 FORMAT (Q,A1) IF (Q .LE. 0) GO TO 560 IF (B .EQ. 'N') GO TO 600 IF (B .EQ. 'X') GO TO 600 IF (B .EQ. 'I') GO TO 503 WRITE (5,502) 7 502 FORMAT (/,' ???',A1,/) GO TO 490 503 WRITE (5,504) 504 FORMAT (/,' ENTER NEW CONTENTS AS ASCII, OCTAL WORD,', 1 ' OR RAD50',/,' (A, O, OR R)? ',$) READ (5,505,END=800) F 505 FORMAT (A1) IF (F.NE.'A' .AND. F.NE.'O' .AND. F.NE.'R') GO TO 503 IF (F .NE. 'A') GO TO 508 WRITE (5,506) 506 FORMAT (/,' ENTER TWO ASCII CHARACTERS: ',$) READ (5,507,END=800) BDUM 507 FORMAT (2A1) BLK(ISUB) = IDUM GO TO 550 508 IF (F .EQ. 'R') GO TO 512 509 WRITE (5,510) 510 FORMAT (/,' ENTER ONE TO SIX OCTAL DIGITS: ',$) READ (5,511,ERR=509,END=800) IWD 511 FORMAT (O6) BLK(ISUB) = LOIWD GO TO 550 512 WRITE (5,513) 513 FORMAT (/,' ENTER THREE RAD50 CHARACTERS: ',$) READ (5,514,END=800) RAD 514 FORMAT (3A1) N = IRAD50 (3, RAD, LOIWD) IF (N .NE. 3) GO TO 512 BLK(ISUB) = LOIWD 550 WRITE (5,555) 555 FORMAT (' ') 560 PC = PC + 2 ISUB = ISUB + 1 IF (ISUB .LE. 256) GO TO 400 WRITE (1'IREC) BLK IREC = IREC + 1 CALL FILL (BLK, IREC, ISUB, PC) GO TO 400 600 IF (IN) WRITE (1'IREC) BLK IF (B .EQ. 'N') GO TO 100 700 RETURN 800 STOP END