]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 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" |