]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/mqg/mztabf.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / mqg / mztabf.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/03/06 10:47:20 mclareni
6* Zebra
7*
8*
9#include "zebra/pilot.h"
10 SUBROUTINE MZTABF
11
12C- Finalize Link Relocation table
13
14#include "zebra/zstate.inc"
15#include "zebra/zunit.inc"
16#include "zebra/mqsys.inc"
17#include "zebra/mzct.inc"
18C-------------- End CDE --------------
19#if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
20 DIMENSION NAMESR(2)
21 DATA NAMESR / 4HMZTA, 4HBF /
22#endif
23#if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
24 DATA NAMESR / 6HMZTABF /
25#endif
26#if !defined(CERNLIB_QTRHOLL)
27 CHARACTER NAMESR*8
28 PARAMETER (NAMESR = 'MZTABF ')
29#endif
30
31#include "zebra/q_jbit.inc"
32
33
34#include "zebra/qtrace.inc"
35
36 LMT = LQMTA
37 NCOLL = 0
38 NGARB = 0
39 NQNOOP = 0
40 LFIXLO = NQLINK + 1
41
42C---- Truncate initial inactive division entries
43
44 21 JDIV = LQ(LMT)
45 IACT = LQ(LMT+1)
46 IF (IACT.EQ.4) GO TO 26
47 IF (IACT.GE.2) GO TO 28
48
49 IF (IACT.GE.0) LFIXLO=LQEND(KQT+JDIV)
50
51 LMT = LMT + 8
52 IF (LMT.LT.LQMTE) GO TO 21
53 NQNOOP = -7
54 IF (NQDVMV.EQ.0) GO TO 81
55 NQNOOP = 7
56 GO TO 81
57
58C-- First active division is wipe
59
60 26 IF (LQ(LMT+9).NE.4) GO TO 28
61 IF (LMT+8.GE.LQMTE) GO TO 28
62 LMT = LMT + 8
63 GO TO 26
64
65C-- First active division has garb. coll. or shift
66
67 28 LFIR = LMT
68 LQTA = LQRTA + LQ(LMT+5)
69
70C-------- Loop remaining divisions
71
72 31 IACT = LQ(LMT+1)
73 NSHF = LQ(LMT+2)
74 LTU = LQRTA + LQ(LMT+5)
75 IF (IACT.EQ.4) GO TO 71
76 IF (IACT.EQ.3) GO TO 61
77 IF (IACT.EQ.2) GO TO 41
78 IF (IACT.LT.0) GO TO 79
79 NCOLL = NCOLL + 1
80 IF (NCOLL.NE.1) GO TO 79
81 LCOLL = LMT
82 GO TO 79
83
84C------ Inactive division with shift
85
86 41 IF (NCOLL+NGARB.LT.2) GO TO 49
87
88C---- Squeeze out useless entries
89
90 43 LCOLE = LMT - 8
91 LT = LQ(LCOLE+5)
92 LTF = LQ(LCOLL+5)
93 N = LT - LTF
94
95C-- Shift active start of the table
96
97 NW = LQRTA + LTF+1 - LQTA
98 CALL UCOPY2 (LQ(LQTA),LQ(LQTA+N),NW)
99 LQTA = LQTA + N
100 NCOLL = 0
101 IF (IACT.EQ.4) GO TO 71
102 IF (IACT.EQ.3) GO TO 61
103
104 49 LQ(LTU+2) = NSHF
105 GO TO 77
106
107C---- Garbage collection division
108
109 61 IF (NCOLL+NGARB.GE.2) GO TO 43
110 JDIV = LQ(LMT)
111 LT = LTU
112 LTE = LQRTA + LQ(LMT+6)
113 MODE = JBIT (IQMODE(KQT+JDIV),1)
114 IF (MODE.NE.0) GO TO 65
115
116C-- Calculate relocation constants for forward mode
117
118 NCUM = NSHF
119 GO TO 66
120
121C-- Calculate relocation constants for reverse mode
122
123 65 NCUM = LQ(LMT+7) + NSHF
124 66 LQ(LT+2) = NCUM
125 NCUM = NCUM - (LQ(LT+4)-LQ(LT+1))
126 LT = LT + 4
127 IF (LT.LT.LTE) GO TO 66
128 NGARB = -64
129 GO TO 77
130
131C-- Wipe division
132
133 71 IF (NCOLL+NGARB.GE.2) GO TO 43
134 77 NCOLL = 0
135
136C-- End of loop, set table termination
137
138 79 LMT = LMT + 8
139 IF (LMT.LT.LQMTE) GO TO 31
140 LQ(LQTA-1) = LFIXLO
141
142 IF (NCOLL.EQ.0) GO TO 81
143 LQTE = LQRTA + LQ(LCOLL+5)
144
145 81 CONTINUE
146#if defined(CERNLIB_QDEVZE)
147 IF (NQDEVZ.LT.11) GO TO 999
148 WRITE (IQLOG,9881) LQMTA,LQMTE
149 9881 FORMAT (1X/' DEVZE MZTABF, Memory Occupation Table,'
150 F,' LQMTA,LQMTE= ',2I8/16X,
151 F' DIV ACT NWS LFBK LLBK+1 JFE JLE FREE')
152
153 WRITE (IQLOG,9882) (LQ(J),J=LQMTA,LQMTE-1)
154 9882 FORMAT (16X,2I4,6I8)
155
156 WRITE (IQLOG,9883) LQRTA,LQTA,LQTE,LFIXLO
157 9883 FORMAT (1H0,15X,'Link Relocation Table,'
158 F,' LQRTA,LQTA,LQTE= ',3I8
159 F/16X,' LOC L LE NREL BG'
160 F/30X,I8)
161
162 IF (LQTE.LE.LQTA) GO TO 85
163 I = LQRTA
164 JA = LQTA - I
165 JE = LQTE - I - 1
166 WRITE (IQLOG,9884) (J,LQ(I+J),LQ(I+J+1),LQ(I+J+2),LQ(I+J+3),
167 + J=JA,JE,4)
168 9884 FORMAT (16X,I6,3I8,I4)
169
170 85 WRITE (IQLOG,9885) LQ(LQTE)
171 9885 FORMAT (22X,I8)
172#endif
173#include "zebra/qtrace99.inc"
174 RETURN
175 END
176* ==================================================
177#include "zebra/qcardl.inc"