C DOWN LINE LOAD DATA FILE EDITOR (BOOEDT.FTN) C C C PAUL ELKINS C C LOS ALAMOS NATIONAL LAB. C PO BOX 1663 MS-J957 C LOS ALAMOS NM 87545 C 505 667 3502 C C C COPYRIGHT, 1984,THE REGENTS OF THE UNIVERSITY OF CALIFORNIA. C THIS SOFTWARE WAS PRODUCED UNDER A U.S. GOVERNMENT CONTRACT C (W-7405-ENG-36) BY THE LOS ALAMOS NATIONAL LABORATORY,WHICH C IS OPERATED BY THE UNIVERSITY OF CALIFORNIA FOR THE U.S. C DEPARTMENT OF ENERGY. THE U.S. GOVERNMENT IS LICENSED TO USE, C REPRODUCE, AND DISTRIBUTE THIS SOFTWARE. PERMISSION IS GRANTED C TO THE PUBLIC TO COPY AND USE THIS SOFTWARE WITHOUT CHARGE, C PROVIDED THAT THIS NOTICE AND ANY STATEMENT OF AUTHORSHIP ARE C REPRODUCED ON ALL COPIES. NEITHER THE GOVERNMENT NOR THE C UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES C ANY LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE. C C C C C******************** SPECIFICATION STATEMENTS ************************** C PROGRAM BOOEDT C IMPLICIT INTEGER(A-Z) PARAMETER NREC=256 !LAST RECORD NUMBER OFFSET(WORDS) PARAMETER RECSZ=12 !RECORD SIZE IN WORDS PARAMETER PHYADR=1 !NODE PHYSICAL ADDRESS OFFSET(BYTES) PARAMETER NODADR=7 !NODE LOGICAL ADDRESS OFFSET(BYTES) PARAMETER FNAM=8 !FILE NAME OFFSET (BYTES) PARAMETER NMAX=256 !BLOCK SIZE IN WORDS PARAMETER FNMSZ=17 !FILE NAME MAX SIZE(BYTES) C INTEGER*2 BUF(NMAX) !DISK BLOCK BUFFER WORD BYTE BUFB(NMAX*2) !DISK BLOCK BUFFER BYTE BYTE FNAME(17) !FILE NAME BUFFER TEMPORARY EQUIVALENCE (BUF(1),BUFB(1)) DATA L1/1/ !DISK LOGICAL UNIT NUMBER DATA L2/5/ !TERMINAL LOGICAL UNIT NUMBER C C*************************** PROGRAM STATEMENTS *************************** C OPEN(UNIT=L1,ACCESS='DIRECT',BLOCKSIZE=512 1,RECORDTYPE='FIXED',MAXREC=1,RECL=128,NAME='BOOT.DAT;1' 2,STATUS='UNKNOWN') BLK=1 10 WRITE(L2,100) READ(L2,101,END=90)OPT GOTO(20,30,40,50,60,90),OPT GOTO 10 C C CREATE AND ZERO FILE C 20 DO 21 I=1,NMAX 21 BUF(I)=0 BUF(NREC)=1 25 WRITE(L1'BLK)BUF GOTO 10 C C ADD A NEW RECORD C 30 PTR=(BUF(NREC)-1)*RECSZ*2+1 DO 31 I=1,6 WRITE(L2,102)I READ(L2,103)BUFB(PTR) 31 PTR=PTR+1 WRITE(L2,104) READ(L2,101)BUFB(PTR) PTR=PTR+1 WRITE(L2,105) READ(L2,114) CNT,(BUFB(I),I=PTR,PTR+FNMSZ-1) BUF(NREC)=BUF(NREC)+1 GOTO 25 C C DELETE RECORD C 40 WRITE(L2,106) READ(L2,101)REC IF(REC .GE. BUF(NREC))GOTO 40 FIRST=REC*RECSZ+1 LAST=(BUF(NREC)-1)*RECSZ DO 41 I=FIRST,LAST 41 BUF(I-RECSZ)=BUF(I) DO 42,I=LAST-RECSZ+1,LAST 42 BUF(I)=0 BUF(NREC)=BUF(NREC)-1 GOTO 25 C C EDIT RECORD C 50 WRITE(L2,107) READ(L2,101)REC IF(REC .GE. BUF(NREC))GOTO 50 FIRST=(REC-1)*RECSZ*2+1 51 WRITE(L2,108) READ(L2,101)OPT GOTO(52,54,56,58),OPT GOTO 50 52 BYTE=1 DO 53 I=FIRST,FIRST+5 !EDIT PHYSICAL ADDRESS WRITE(L2,109)BYTE,BUFB(I) READ(L2,110)CNT,TEMP BYTE=BYTE+1 53 IF(CNT .NE. 0)BUFB(I)=TEMP GOTO 51 54 WRITE(L2,111)BUFB(FIRST+NODADR-1) !EDIT NODE ADDRESS READ(L2,112) CNT,TEMP IF(CNT .NE. 0)BUFB(FIRST+NODADR-1)=TEMP GOTO 51 56 WRITE(L2,113)(BUFB(I),I=FIRST+FNAM-1,FIRST+FNAM+15) READ(L2,114) CNT,(FNAME(I),I=1,17) IF(CNT .EQ. 0)GOTO 51 DO 57 I=1,17 57 BUFB(I+FIRST+FNAM-2)=FNAME(I) GOTO 51 58 IF(BUF(NREC) .NE. 0)GOTO 25 GOTO 10 C C LIST ALL RECORDS C 60 READ(L1'BLK)BUF WRITE(L2,115) REC=1 DO 62 I=1,(BUF(NREC)-1)*RECSZ,RECSZ WRITE(L2,116) REC,(BUFB(K),K=(I*2-1),I*2-2+(RECSZ*2)) 62 REC=REC+1 GOTO 10 90 CONTINUE 100 FORMAT(' EDIT OPTIONS ',/ 1 ,' 1-CREATE',/ 2 ,' 2-ADD NEW RECORD',/ 3 ,' 3-DELETE RECORD',/ 4 ,' 4-EDIT RECORD',/ 5 ,' 5-LIST RECORDS',/ 6 ,' 6-EXIT',/ 7 ,'$ENTER OPTION ') 101 FORMAT(I3) 102 FORMAT('$ENTER PHYSICAL ADDRESS BYTE # ',I1,' ') 103 FORMAT(O3) 104 FORMAT('$ENTER LOGICAL NODE ADDRESS ') 105 FORMAT('$ENTER FILE NAME ') 106 FORMAT('$ENTER RECORD # TO DELETE ') 107 FORMAT('$ENTER RECORD # TO EDIT ') 108 FORMAT(' EDIT OPTIONS ',/ 1 ,' 1- PHYSICAL ADDRESS',/ 2 ,' 2- LOGICAL ADDRESS',/ 3 ,' 3- FILE NAME',/ 4 ,' 4- RETURN',/ 5 ,'$ENTER OPTION ') 109 FORMAT('$BYTE',I2,' =',O3,' ENTER NEW VALUE ') 110 FORMAT(Q,O3) 111 FORMAT('$LOGICAL ADDRESS=',I3,' ENTER NEW VALUE ') 112 FORMAT(Q,I3) 113 FORMAT('$FILE NAME= ',17A1,' ENTER NEW NAME ') 114 FORMAT(Q,17A1) 115 FORMAT(1X,'RECORD',5X,'PHYSICAL ADDRESS',10X,'NODE',4X 1,'FILE NAME',/) 116 FORMAT(1X,I2,6X,6(O3,1X),5X,I3,5X,17A1) END