* * $Id$ * * $Log$ * Revision 1.2 1996/04/24 17:26:55 mclareni * Extend the include file cleanup to dzebra, rz and tq, and also add * dependencies in some cases. * * Revision 1.1.1.1 1996/03/06 10:47:24 mclareni * Zebra * * #include "zebra/pilot.h" SUBROUTINE RZINS(IXDIVP,LSUPP,JBIASP,LBANK) * ************************************************************************ * * To read a data structure and make relocation * * Called by RZIN * * Author : J.Zoll/R.Brun/B.Holl * Written : 09.05.86 * Last mod: 20.01.93 RB bug fix in call to MZIOCR * ************************************************************************ #include "zebra/zmach.inc" #include "zebra/mqsys.inc" #include "zebra/mzct.inc" #include "zebra/mzioc.inc" #include "zebra/mzcn.inc" #include "zebra/fzci.inc" #include "zebra/fzcseg.inc" #include "zebra/fzcocc.inc" #include "zebra/rzclun.inc" DIMENSION IXDIVP(9),LSUPP(9),JBIASP(9),IDUM(3) EQUIVALENCE (IOPTR,IQUEST(95)) * *----------------------------------------------------------------------- * #if !defined(CERNLIB_FQXISN) #include "zebra/q_jbyt.inc" #endif IXDIVI = IXDIVP(1) JRETCD = 0 JERROR = 0 NQOCC = 0 NQSEG = 0 * * Read header * CALL RZREAD(NWTABI,3,1,1) IF(IQUEST(1).NE.0) GO TO 99 NWIOI = 0 NWUHI = 0 NWUHCI = 0 NWUMXI = 0 NWTXI = 0 NWSEGI = 0 * * Get store / divison * CALL MZSDIV(IXDIVI,7) IF(JQDIVI.EQ.0) JQDIVI=2 * IF(LBANK.NE.0.AND.IOPTR.NE.0)THEN NLINK=IQ(KQS+LBANK-3) NWK =NWBKI-10-NLINK IF(IQ(KQS+LBANK-1).LT.NWK)GO TO 91 #if !defined(CERNLIB_FQXISN) IF(IMODEX.GT.0)THEN CALL MZIOCR(LQ(KQS+LBANK-NLINK-1)) IF(IQUEST(1).LT.0)GO TO 99 IQUEST(1)=0 ENDIF #endif CALL RZREAD(IQ(KQS+LBANK+1),NWK,NWTABI+14+NLINK,0) GO TO 99 ENDIF * * Read memory occupation table * LQSYSR(KQT+1)=LSUPP(1) CALL FZIMTB IF(JRETCD.EQ.3)GO TO 91 CALL RZREAD(LQ(LQTA+NWTABI),NWTABI,4,1) IF(IQUEST(1).NE.0) GO TO 99 * * Read the data * LSTA = LQ(LQMTA+3) LEND = LQ(LQMTA+4) #if !defined(CERNLIB_FQXISN) IF(IMODEX.LE.0)GO TO 30 * * in eXchange mode * LIN = LSTA NWR = NWTABI+4 10 CONTINUE CALL RZREAD(LQ(KQS+LIN),1,NWR,1) IF(IQUEST(1).NE.0)GO TO 99 NWR = NWR+1 IWD = LQ(KQS+LIN) NST = JBYT(IWD,1,16)-12 IF(NST.LT.0)GO TO 20 * * True bank * IQLN = LIN IQLS = LIN + NST + 1 IF(IQLS+8.GE.LEND)GO TO 92 MFO(1) = 1 MFO(2) = NST + 2 MFO(3) = 2 MFO(4) = 2 MFO(5) = 5 MFO(6) = 1 MFO(7) = 1 MFO(8) = -1 JFOEND = 8 NWFOTT = NST+9 NWFODN = 0 CALL RZREAD(LQ(KQS+LIN+1),NST+9,NWR,0) IF(IQUEST(1).NE.0)GO TO 99 NWR = NWR+NST+9 IQNIO = JBYT(IQ(KQS+IQLS),19,4) IQNL = IQ(KQS+IQLS-3) IQND = IQ(KQS+IQLS-1) IF(IQNIO+IQNL.NE.NST)GO TO 92 LIN = IQLS + IQND + 9 IF(IQND.GT.0)THEN IF(LIN.GT.LEND)GO TO 92 CALL MZIOCR(LQ(KQS+IQLN)) IF(IQUEST(1).LT.0)GO TO 99 IQUEST(1)=0 CALL RZREAD(IQ(KQS+IQLS+1),IQND,NWR,0) IF(IQUEST(1).NE.0)GO TO 99 NWR = NWR+IQND ENDIF IF(LIN.LT.LEND)GO TO 10 GO TO 40 * * Short dead region * 20 NWD = JBYT(IWD,17,IQDROP-17) IF(NWD.EQ.0.OR.NWD.NE.NST+12)GO TO 92 IF(JBYT(IWD,IQDROP,IQBITW-IQDROP).NE.1)GO TO 92 LIN = LIN + NWD IF(LIN.LT.LEND)GO TO 10 GO TO 40 #endif * * in native mode * 30 NWR = LEND - LSTA CALL RZREAD(LQ(KQS+LSTA),NWR,NWTABI+4,0) IF(IQUEST(1).NE.0) GO TO 99 * * Relocation * 40 CONTINUE CALL FZIREL IF(JRETCD.NE.0)GO TO 93 * * Link structure and return * JB=JBIASP(1) IF(JB.GE.2)THEN LSUPP(1)=LENTRI ELSE LSUPP(1)=LQSYSR(KQT+1) CALL ZSHUNT(IXDIVI,LENTRI,LSUPP,JB,1) ENDIF * IQUEST(1) = 0 IQUEST(11) = IEVFLI IQUEST(12) = 0 IQUEST(13) = LENTRI IQUEST(14) = NWBKI GO TO 99 * * Not enough space * 91 IQUEST(11)= -2 IQUEST(1) = 1 GO TO 99 * * Inconsistent bank material * 92 IQUEST(11)= -3 IQUEST(1) = 1 GO TO 99 * * Bad data * 93 IQUEST(11)= -3 IQUEST(1) = 1 99 RETURN END