5 * Revision 1.2 1996/04/18 16:10:50 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:14 mclareni
12 #include "zebra/pilot.h"
15 C- Construct table of material to be output,
16 C- called from FZOUT, RZOUT, MZCOPY
18 #include "zebra/zlimit.inc"
19 #include "zebra/mqsys.inc"
20 #include "zebra/eqlqf.inc"
21 #include "zebra/mzcn.inc"
22 #include "zebra/mzct.inc"
23 #include "zebra/fzcx.inc"
24 #include "zebra/fzcseg.inc"
25 C-------------- End CDE --------------
26 EQUIVALENCE (LMT,LQMTB), (LS,IQLS), (LNX,IQNX)
27 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
29 DATA NAMESR / 4HFZOT, 4HAB /
31 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
32 DATA NAMESR / 6HFZOTAB /
34 #if !defined(CERNLIB_QTRHOLL)
36 PARAMETER (NAMESR = 'FZOTAB ')
39 #include "zebra/q_jbit.inc"
40 #include "zebra/q_jbyt.inc"
41 #include "zebra/q_sbit0.inc"
44 #include "zebra/qtrace.inc"
57 CALL MZCHLS (-7,LENTRX)
58 IF (IQFOUL.NE.0) GO TO 911
59 IF (JBIT(IQ(KQS+LENTRX),IQDROP).NE.0) GO TO 911
61 IF (IOPTXD.NE.0) GO TO 301
62 IF (IOPTXS.EQ.0) GO TO 201
64 C---- Single bank output
77 C-------------------------------------------------
78 C- d/s defined by LENTRX
79 C-------------------------------------------------
81 201 IF (IOPTXM.EQ.0) THEN
83 CALL MZMARK (IXDIVX,LENTRX,'.',0,0)
85 CALL MZMARK (IXDIVX,LENTRX,'L',0,0)
89 LIMLOW = LQLIML - IQ(KQS+LQLIML-3) - JBYT(IQ(KQS+LQLIML),19,4) - 1
90 LIMHI = LQLIMH + IQ(KQS+LQLIMH-1) + 9
92 C---- Memory occupation table
96 C-- First division concerned
98 226 IF (LIMLOW.LT.LQ(LQMTA+4)) GO TO 227
102 C-- Last division concerned
106 228 IF (LIMHI.LE.LQ(LMT+4)) GO TO 229
110 229 LQ(LMT+4) = LIMHI
113 C---- Relocation table
119 232 IF (LQ(LMT+1).LT.0) GO TO 249
130 IF (LN.GE.LQMTC2) GO TO 247
131 #if defined(CERNLIB_QDEBUG)
133 IF (IQFOUL.NE.0) GO TO 912
135 #if !defined(CERNLIB_QDEBUG)
136 NST = JBYT(LQ(KQS+LN),1,16) - 11
139 LNX = LS + IQ(KQS+LS-1) + 9
145 NEW = JBIT(IQ(KQS+LS),IQMARK)
146 IF (NEW.EQ.1) IQ(KQS+LS)= MSBIT0 (IQ(KQS+LS),IQMARK)
147 IF (NEW.EQ.MODE) GO TO 235
148 IF (NEW.EQ.0) GO TO 244
150 C-- Start of a live group
153 IF (LQTE.LT.LQRTE) GO TO 234
155 IF (IQPART.LE.0) GO TO 234
158 C-- Start of a dead group
160 244 NWDIV = NWDIV + (LN - LQ(LQTE))
167 247 IF (MODE.EQ.0) GO TO 248
168 NWDIV = NWDIV + (LN - LQ(LQTE))
172 C-- Add to segment table
174 248 IF (NWDIV.EQ.0) GO TO 249
175 NWBKX = NWBKX + NWDIV
177 IQSEGH(1,NQSEG) = IQDN1(KQT+JDIV)
178 IQSEGH(2,NQSEG) = IQDN2(KQT+JDIV)
179 IQSEGD(NQSEG) = NWDIV
181 C-- Step to next division
184 IF (LMT.LT.LQMTE) GO TO 232
187 C------ Not enough space, garbage collection
189 261 IF (JFLGAX.NE.0) GO TO 264
191 LQSYSR(KQT+1) = LENTRX
192 IXGARB = MZIXCO (IXDIVX,21,22,23)
193 IXGARB = MZIXCO (IXGARB,24,0,0)
194 CALL MZGARB (IXGARB,0)
195 LENTRX = LQSYSR(KQT+1)
198 264 IF (JFLGAX.GE.2) GO TO 913
200 IF (JQSTOR.EQ.0) GO TO 913
201 IXGARB = MZIXCO (21,22,23,24)
202 CALL MZGARB (IXGARB,0)
203 CALL MZSDIV (IXDIVX,0)
204 269 IF (MODTBX.EQ.0) GO TO 101
208 C-------------------------------------------------
209 C- complete divisions
210 C-------------------------------------------------
212 301 MQDVGA = MZDVAC (IXDIVX)
216 IF (IOPTXI.EQ.0) GO TO 321
218 C---- Immediate dump of divisions
220 305 IF (LQ(LMT+1).NE.3) GO TO 307
221 NWDIV = LQ(LMT+4) - LQ(LMT+3)
222 NWBKX = NWBKX + NWDIV
224 LQ(LQTE+1) = LQ(LMT+4)
227 C-- Add to segment table
231 IQSEGH(1,NQSEG) = IQDN1(KQT+JDIV)
232 IQSEGH(2,NQSEG) = IQDN2(KQT+JDIV)
233 IQSEGD(NQSEG) = NWDIV
235 IF (LMT.LT.LQMTE) GO TO 305
238 C---- Filtered dump of divisions
244 332 IF (LQ(LMT+1).NE.3) GO TO 349
255 IF (LN.GE.LQMTC2) GO TO 347
256 #if defined(CERNLIB_QDEBUG)
258 IF (IQFOUL.NE.0) GO TO 912
260 #if !defined(CERNLIB_QDEBUG)
261 NST = JBYT(LQ(KQS+LN),1,16) - 11
264 LNX = LS + IQ(KQS+LS-1) + 9
270 NEW = JBIT(IQ(KQS+LS),IQDROP)
271 IF (NEW.EQ.0) GO TO 336
272 IF (MODE.NE.0) GO TO 335
275 C-- Inspect structural links of live bank
277 336 K = LS - IQ(KQS+LS-2) - 1
279 IF (K.GT.LS) GO TO 340
281 IF (L.EQ.0) GO TO 337
282 IF (JBIT(IQ(KQS+L),IQDROP).EQ.0) GO TO 337
285 IF (L.EQ.0) GO TO 339
286 IF (JBIT(IQ(KQS+L),IQDROP).NE.0) GO TO 338
288 IF (KD.NE.K) GO TO 337
295 340 IF (MODE.EQ.0) GO TO 335
297 C-- Start of a live group
300 IF (LQTE.LT.LQRTE) GO TO 334
302 IF (IQPART.LE.0) GO TO 334
305 C-- Start of a dead group
307 344 NWDIV = NWDIV + (LN - LQ(LQTE))
314 347 IF (MODE.NE.0) GO TO 348
315 NWDIV = NWDIV + (LN - LQ(LQTE))
319 C-- Add to segment table
321 348 IF (NWDIV.EQ.0) GO TO 349
322 NWBKX = NWBKX + NWDIV
324 IQSEGH(1,NQSEG) = IQDN1(KQT+JDIV)
325 IQSEGH(2,NQSEG) = IQDN2(KQT+JDIV)
326 IQSEGD(NQSEG) = NWDIV
328 C-- Step to next division
331 IF (LMT.LT.LQMTE) GO TO 332
335 IF (NQSEG.EQ.1) NQSEG=0
339 C-------------------------------------------------
341 C-------------------------------------------------
354 971 IF (MODTBX.EQ.0) THEN
355 IF (IOPTXP.EQ.0) CALL ZTELL (IQUEST(2),1)
359 #include "zebra/qtrace99.inc"
362 * ==================================================
363 #include "zebra/qcardl.inc"