]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/rz/rzins.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / rz / rzins.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.2 1996/04/24 17:26:55 mclareni
6* Extend the include file cleanup to dzebra, rz and tq, and also add
7* dependencies in some cases.
8*
9* Revision 1.1.1.1 1996/03/06 10:47:24 mclareni
10* Zebra
11*
12*
13#include "zebra/pilot.h"
14 SUBROUTINE RZINS(IXDIVP,LSUPP,JBIASP,LBANK)
15*
16************************************************************************
17*
18* To read a data structure and make relocation
19*
20* Called by RZIN
21*
22* Author : J.Zoll/R.Brun/B.Holl
23* Written : 09.05.86
24* Last mod: 20.01.93 RB bug fix in call to MZIOCR
25*
26************************************************************************
27#include "zebra/zmach.inc"
28#include "zebra/mqsys.inc"
29#include "zebra/mzct.inc"
30#include "zebra/mzioc.inc"
31#include "zebra/mzcn.inc"
32#include "zebra/fzci.inc"
33#include "zebra/fzcseg.inc"
34#include "zebra/fzcocc.inc"
35#include "zebra/rzclun.inc"
36 DIMENSION IXDIVP(9),LSUPP(9),JBIASP(9),IDUM(3)
37 EQUIVALENCE (IOPTR,IQUEST(95))
38*
39*-----------------------------------------------------------------------
40*
41
42#if !defined(CERNLIB_FQXISN)
43#include "zebra/q_jbyt.inc"
44#endif
45
46 IXDIVI = IXDIVP(1)
47 JRETCD = 0
48 JERROR = 0
49 NQOCC = 0
50 NQSEG = 0
51*
52* Read header
53*
54 CALL RZREAD(NWTABI,3,1,1)
55 IF(IQUEST(1).NE.0) GO TO 99
56 NWIOI = 0
57 NWUHI = 0
58 NWUHCI = 0
59 NWUMXI = 0
60 NWTXI = 0
61 NWSEGI = 0
62*
63* Get store / divison
64*
65 CALL MZSDIV(IXDIVI,7)
66 IF(JQDIVI.EQ.0) JQDIVI=2
67*
68 IF(LBANK.NE.0.AND.IOPTR.NE.0)THEN
69 NLINK=IQ(KQS+LBANK-3)
70 NWK =NWBKI-10-NLINK
71 IF(IQ(KQS+LBANK-1).LT.NWK)GO TO 91
72#if !defined(CERNLIB_FQXISN)
73 IF(IMODEX.GT.0)THEN
74 CALL MZIOCR(LQ(KQS+LBANK-NLINK-1))
75 IF(IQUEST(1).LT.0)GO TO 99
76 IQUEST(1)=0
77 ENDIF
78#endif
79 CALL RZREAD(IQ(KQS+LBANK+1),NWK,NWTABI+14+NLINK,0)
80 GO TO 99
81 ENDIF
82*
83* Read memory occupation table
84*
85 LQSYSR(KQT+1)=LSUPP(1)
86 CALL FZIMTB
87 IF(JRETCD.EQ.3)GO TO 91
88 CALL RZREAD(LQ(LQTA+NWTABI),NWTABI,4,1)
89 IF(IQUEST(1).NE.0) GO TO 99
90*
91* Read the data
92*
93 LSTA = LQ(LQMTA+3)
94 LEND = LQ(LQMTA+4)
95#if !defined(CERNLIB_FQXISN)
96 IF(IMODEX.LE.0)GO TO 30
97*
98* in eXchange mode
99*
100 LIN = LSTA
101 NWR = NWTABI+4
102 10 CONTINUE
103 CALL RZREAD(LQ(KQS+LIN),1,NWR,1)
104 IF(IQUEST(1).NE.0)GO TO 99
105 NWR = NWR+1
106 IWD = LQ(KQS+LIN)
107 NST = JBYT(IWD,1,16)-12
108 IF(NST.LT.0)GO TO 20
109*
110* True bank
111*
112 IQLN = LIN
113 IQLS = LIN + NST + 1
114 IF(IQLS+8.GE.LEND)GO TO 92
115 MFO(1) = 1
116 MFO(2) = NST + 2
117 MFO(3) = 2
118 MFO(4) = 2
119 MFO(5) = 5
120 MFO(6) = 1
121 MFO(7) = 1
122 MFO(8) = -1
123 JFOEND = 8
124 NWFOTT = NST+9
125 NWFODN = 0
126 CALL RZREAD(LQ(KQS+LIN+1),NST+9,NWR,0)
127 IF(IQUEST(1).NE.0)GO TO 99
128 NWR = NWR+NST+9
129 IQNIO = JBYT(IQ(KQS+IQLS),19,4)
130 IQNL = IQ(KQS+IQLS-3)
131 IQND = IQ(KQS+IQLS-1)
132 IF(IQNIO+IQNL.NE.NST)GO TO 92
133 LIN = IQLS + IQND + 9
134 IF(IQND.GT.0)THEN
135 IF(LIN.GT.LEND)GO TO 92
136 CALL MZIOCR(LQ(KQS+IQLN))
137 IF(IQUEST(1).LT.0)GO TO 99
138 IQUEST(1)=0
139 CALL RZREAD(IQ(KQS+IQLS+1),IQND,NWR,0)
140 IF(IQUEST(1).NE.0)GO TO 99
141 NWR = NWR+IQND
142 ENDIF
143 IF(LIN.LT.LEND)GO TO 10
144 GO TO 40
145*
146* Short dead region
147*
148 20 NWD = JBYT(IWD,17,IQDROP-17)
149 IF(NWD.EQ.0.OR.NWD.NE.NST+12)GO TO 92
150 IF(JBYT(IWD,IQDROP,IQBITW-IQDROP).NE.1)GO TO 92
151 LIN = LIN + NWD
152 IF(LIN.LT.LEND)GO TO 10
153 GO TO 40
154#endif
155*
156* in native mode
157*
158 30 NWR = LEND - LSTA
159 CALL RZREAD(LQ(KQS+LSTA),NWR,NWTABI+4,0)
160 IF(IQUEST(1).NE.0) GO TO 99
161
162*
163* Relocation
164*
165 40 CONTINUE
166 CALL FZIREL
167 IF(JRETCD.NE.0)GO TO 93
168*
169* Link structure and return
170*
171 JB=JBIASP(1)
172 IF(JB.GE.2)THEN
173 LSUPP(1)=LENTRI
174 ELSE
175 LSUPP(1)=LQSYSR(KQT+1)
176 CALL ZSHUNT(IXDIVI,LENTRI,LSUPP,JB,1)
177 ENDIF
178*
179 IQUEST(1) = 0
180 IQUEST(11) = IEVFLI
181 IQUEST(12) = 0
182 IQUEST(13) = LENTRI
183 IQUEST(14) = NWBKI
184 GO TO 99
185*
186* Not enough space
187*
188
189 91 IQUEST(11)= -2
190 IQUEST(1) = 1
191 GO TO 99
192*
193* Inconsistent bank material
194*
195 92 IQUEST(11)= -3
196 IQUEST(1) = 1
197 GO TO 99
198*
199* Bad data
200*
201
202 93 IQUEST(11)= -3
203 IQUEST(1) = 1
204
205 99 RETURN
206 END