FTN4,L
      PROGRAM INSTL() 
     $,  92070-16090  REV. 1941  790911 
C     NAME:   INSTL 
C     SOURCE: 92070-18090 
C     RELOC:  92070-16090 
C     PGMR:   WWL 
C 
C 
C  **************************************************************** 
C  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS      * 
C  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
C  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
C  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
C  **************************************************************** 
C 
C 
      IMPLICIT INTEGER (A-Z)
      INTEGER OBUF(512) 
      COMMON /BOOTX/OBUF
      INTEGER DCB(144),BUF(128) 
      INTEGER DVP(8),SNAM(10),SYNAM(10),BOTNAM(10),TEMP(10) 
      DATA A/40400B/,BOTNAM/2HBO,2HOT,2HEX/ 
C 
C 
C 
      CALL GETST (BUF,-80,IB) 
      LOG=LOGLU(ISES) 
      IF (IB .GT. 0) GO TO 40 
   20 WRITE(LOG,30) 
   30 FORMAT(" ENTER SNAP FILE, SYSTEM FILE, BOOT FILE, AND LU.") 
      CALL REIO (1,LOG+400B,BUF,-80)
      CALL ABREG (IA,IB)
      IF (IB .EQ. 0) GO TO 20 
C 
   40 IV=1
      CALL NAMR (SNAM,BUF,IB,IV)
      CALL NAMR (SYNAM,BUF,IB,IV) 
      CALL NAMR (TEMP,BUF,IB,IV)
      IF (TEMP(1) .EQ. 0) GO TO 55
      DO 50 I=1,10
      BOTNAM(I)=TEMP(I) 
   50 CONTINUE
C 
   55 CALL NAMR (TEMP,BUF,IB,IV)
      IF (TEMP(1) .EQ. 0) GO TO 20
      LU=TEMP(1)
C 
C     FIRST OPEN SNAP FILE & FIND LU TABLE
C 
      CALL OPEN (DCB,IER,SNAM,0,SNAM(5),SNAM(6))
      IF (IER .GE. 0) GO TO 100 
   60 WRITE(LOG,70)IER,(SNAM(I),I=1,3)
   70 FORMAT(" FMGR",I6," ON ",3A2) 
      GO TO 900 
  100 CALL READF (DCB,IER,BUF,128,LEN)
      IF (IER .NE. 0) GO TO 60
      IF (LEN .LT. 0) GO TO 60
      IF (BUF(2) .NE. 2H$L) GO TO 100 
      IF (BUF(3) .NE. 2HUT) GO TO 100 
      IF (IAND(BUF(4),177400B) .NE. A) GO TO 100
C 
C     FOUND THE LU TABLE SYMBOL 
C 
      SLUT=BUF(6) 
      REC=(SLUT/128)+1
      OFSET=MOD(SLUT,128)+1 
C 
C     NOW CLOSE THE SNAP FILE, OPEN THE SYSTEM FILE, AND
C       FIND THE DVT FOR THIS LU
C 
      CALL CLOSE (DCB)
      CALL OPEN (DCB,IER,SYNAM,0,SYNAM(5),SYNAM(6)) 
      IF (IER .GE. 0) GO TO 150 
  120 WRITE(LOG,70)IER,(SYNAM(I),I=1,3) 
      GO TO 900 
C 
  150 CALL READF (DCB,IER,BUF,128,LEN,REC)
      IF (IER .NE. 0) GO TO 120 
      DVTA=BUF(OFSET)+LU
      REC=DVTA/128+1
      OFSET=MOD(DVTA,128) 
C 
      CALL READF (DCB,IER,BUF,128,LEN,REC)
      IF (IER .NE. 0) GO TO 120 
      CALL FDVT (BUF,OFSET,REC1,OFST1,6)
      CALL FDVT (BUF,OFSET,REC2,OFST2,23) 
      CALL READF (DCB,IER,BUF,128,LEN,REC1) 
      IF (IER .NE. 0) GO TO 120 
      TYPE=IAND(BUF(OFST1),37400B)/256
      IF ((TYPE .GE. 30B) .AND. (TYPE .LE. 37B)) GO TO 200
      WRITE(LOG,190)LU
  190 FORMAT(" LU",I4," IS NOT A DISC LU.") 
      GO TO 900 
C 
  200 N=1 
  300 CALL READF (DCB,IER,BUF,128,LEN,REC2) 
      IF (IER .NE. 0) GO TO 120 
      DO 320 I=N,8
      IF (OFST2 .GT. 128) GO TO 330 
      DVP(I)=BUF(OFST2) 
      OFST2=OFST2+1 
  320 CONTINUE
      GO TO 350 
C 
C     GO HERE IF SOME OF THE PARMS ARE IN NEXT RECORD 
C 
  330 N=I 
      REC2=REC2+1 
      OFST2=1 
      GO TO 300 
C 
C     GOT'EM ALL. NOW CLOSE SYSTEM FILE.
C 
  350 CALL CLOSE (DCB)
C 
      OBUF(7)=DVP(1)
      OBUF(8)=DVP(2)
      OBUF(9)=DVP(3)
      OBUF(10)=DVP(4) 
      OBUF(11)=DVP(5) 
      OBUF(12)=DVP(6) 
      OBUF(13)=DVP(7) 
      OBUF(14)=DVP(8) 
C 
C     NOW OPEN BOOT FILE. IF NOT THERE, CREATE IT.
C 
      CALL OPEN (DCB,IER,BOTNAM,0,BOTNAM(5),BOTNAM(6))
      IF (IER .EQ. -6) GO TO 450
      IF (IER .GE. 0) GO TO 500 
  400 WRITE(LOG,70)IER,(BOTNAM(I),I=1,3)
      GO TO 900 
C 
  450 CALL CREAT (DCB,IER,BOTNAM,4,1,BOTNAM(5),BOTNAM(6)) 
      IF (IER .LT. 0) GO TO 400 
      GO TO 550 
C 
  500 IF (IER .EQ. 1) GO TO 520 
      WRITE(LOG,510)
  510 FORMAT(" BOOT FILE NOT TYPE 1.")
      GO TO 900 
C 
  520 CALL LOCF (DCB,IER,REC1,IRB,I,SIZE) 
      IF (SIZE .GE. 8) GO TO 550
      WRITE(LOG,530)
  530 FORMAT(" FILE NOT >= 4 BLOCKS.")
      GO TO 900 
C 
  550 CALL WRITF (DCB,IER,OBUF,512) 
      IF (IER .NE. 0) GO TO 400 
      WRITE(LOG,590)(BOTNAM(I),I=1,3) 
  590 FORMAT(" INSTL END. ",3A2," IS YOUR BOOT EXTENSION FILE."/
     $" WARNING: BOOT FILE MUST BE AT CYL 0, SECTOR 0.")
C 
  900 CALL CLOSE (DCB)
C 
      END 
C 
      SUBROUTINE FDVT (BUF,OFSET,REC,OFST1,NTRY)
      INTEGER BUF(128),REC,OFSET,OFST1,DVTA 
C 
      DVTA=BUF(OFSET) 
      REC=DVTA/128+1
      OFST1=MOD(DVTA,128)+NTRY
   10 IF (OFST1 .LE. 128) RETURN
      REC=REC+1 
      OFST1=OFST1-128 
      GO TO 10
      END 
      END$
                                                                                                                                        