]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/zebra/mqg/mztabr.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / mqg / mztabr.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.2  1996/04/18 16:12:48  mclareni
6 * Incorporate changes from J.Zoll for version 3.77
7 *
8 * Revision 1.1.1.1  1996/03/06 10:47:20  mclareni
9 * Zebra
10 *
11 *
12 #include "zebra/pilot.h"
13       SUBROUTINE MZTABR
14
15 C-    Create link reloctation table,
16 C-    driven by the Memory Occupation table
17
18 #include "zebra/zstate.inc"
19 #include "zebra/zunit.inc"
20 #include "zebra/mqsys.inc"
21 #include "zebra/mzct.inc"
22 C--------------    End CDE                             --------------
23       EQUIVALENCE (LMT,LQMTB)
24 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
25       DIMENSION    NAMESR(2)
26       DATA  NAMESR / 4HMZTA, 4HBR   /
27 #endif
28 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
29       DATA  NAMESR / 6HMZTABR /
30 #endif
31 #if !defined(CERNLIB_QTRHOLL)
32       CHARACTER    NAMESR*8
33       PARAMETER   (NAMESR = 'MZTABR  ')
34 #endif
35
36 #include "zebra/q_sbit0.inc"
37 #include "zebra/q_sbit1.inc"
38
39
40 #include "zebra/qtrace.inc"
41
42
43       IF (LQMTBR.NE.0)             GO TO 81
44       LQTA  = LQRTA + 2
45       LQTE  = LQTA
46       LMT   = LQMTA
47
48 C-------           Loop for division in the Mem. Occ. table
49
50       LQ(LQTA-1) = NQLINK + 1
51
52    41 JDIV = LQ(LMT)
53       LQ(LMT+5) = LQTE - LQRTA
54
55    42 LQ(LQTE)   = LQ(LMT+3)
56       LQ(LQTE+1) = LQ(LMT+4)
57       LQ(LQTE+2) = 0
58       LQ(LQTE+3) = 0
59
60       IACT = LQ(LMT+1)
61       IF (IACT.EQ.3)               GO TO 61
62       IF (IACT.EQ.-1)              GO TO 78
63       IF (IACT.EQ.4)               GO TO 56
64       IF (LQ(LMT+6).EQ.-3)         GO TO 45
65       LQTE  = LQTE  + 4
66       GO TO 78
67
68    45 LQ(LMT+6) = 0
69       LQ(LMT+1) = 3
70       MQDVAC = MSBIT1 (MQDVAC,JDIV)
71       GO TO 42
72
73 C----              Division for wipe
74
75    56 LQ(LMT+7) = LQ(LMT+4) - LQ(LMT+3)
76       GO TO 78
77
78 C----              Division with garbage collection
79
80    61 IF (IQPART.NE.0)             GO TO 66
81       LQTC1  = LQTE
82       LQTC2  = LQRTE - (LQMTE-LMT)/2
83       IF (LQTC1.GE.LQTC2)          GO TO 65
84
85       LQMTC1 = LQ(LMT+3)
86       LQMTC2 = LQ(LMT+4)
87
88       CALL MZTABC
89       NQFREE = NQFREE + NQFRTC
90       IF (NQLIVE.EQ.0)             GO TO 64
91       IF (IQPART.NE.0)  LQMTBR=LMT
92       IF (NQFRTC.EQ.0)             GO TO 67
93
94       LQ(LMT+6) = LQTE - LQRTA
95       LQ(LMT+7) = NQFRTC
96       GO TO 78
97
98 C--                Division is all dead
99
100    64 LQTE = LQTC1
101       LQ(LMT+1) = 4
102       GO TO 42
103
104 C--                Division has no dead banks
105
106    65 LQMTBR = LMT
107       IQPART = 7
108    66 LQ(LMT+6) = -3
109       LQTE  = LQTE  + 4
110    67 LQ(LMT+1) = 2
111       IF (LQ(LMT+2).EQ.0)  THEN
112           LQ(LMT+1) = 0
113           MQDVAC = MSBIT0 (MQDVAC,JDIV)
114         ENDIF
115
116    78 LMT = LMT + 8
117       IF (LMT.LT.LQMTE)            GO TO 41
118       JDIV   = LQ(LMT)
119       LQ(LQTE) = LQSTA(KQT+JDIV)
120
121 #if defined(CERNLIB_QDEVZE)
122       IF (NQDEVZ.GE.11)
123      +WRITE (IQLOG,9879) LQMTA,LQMTE,LQRTA,LQTA,LQTE,LQRTE
124  9879 FORMAT (' DEVZE MZTABR,  LQMTA,LQMTE,LQRTA,LQTA,LQTE,LQRTE= '
125      F,6I8)
126 #endif
127
128 #include "zebra/qtrace99.inc"
129       RETURN
130
131 C------            Re-start table building
132
133    81 LMT    = LQMTBR
134       LQMTBR = 0
135       IQPART = 0
136       JDIV   = LQ(LMT)
137       MQDVAC = MSBIT1 (MQDVAC,JDIV)
138
139 #if defined(CERNLIB_QPRINT)
140       WRITE (IQLOG, 9882)
141  9882 FORMAT (1X/' MZTABR!! !!!!****  re-entry with LQMTBR non-zero',
142      F'****!!!!'/1X)
143 #endif
144
145       JWAY = LQ(LMT+6)
146       IF (JWAY.EQ.-3)  THEN
147           LQTE = LQ(LMT+5)
148           GO TO 45
149         ENDIF
150
151       LQTE   = JWAY - 4
152       LQMTC1 = LQ(LQTE)
153       LQMTC2 = LQ(LQTE+1)
154       LQTC1  = LQTE
155       LQTC2  = LQRTE - (LQMTE-LMT)/2
156
157       CALL MZTABC
158       LQ(LMT+6) = LQTE - LQRTA
159       LQ(LMT+7) = LQ(LMT+7) + NQFRTC
160       GO TO 78
161       END
162 *      ==================================================
163 #include "zebra/qcardl.inc"