]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/mq/mzlint.F
Added protection. In case IROT=0 the address Q(LQ(JROTM-IROT)) should not
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / mq / mzlint.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.2 1996/04/18 16:11:40 mclareni
6* Incorporate changes from J.Zoll for version 3.77
7*
8* Revision 1.1.1.1 1996/03/06 10:47:18 mclareni
9* Zebra
10*
11*
12#include "zebra/pilot.h"
13 SUBROUTINE MZLINT (IXSTOR,CHNAME,LAREA,LREF,LREFL)
14
15C- Set permanent link area, user called
16
17#include "zebra/zbcd.inc"
18#include "zebra/zstate.inc"
19#include "zebra/zunit.inc"
20#include "zebra/zvfaut.inc"
21#include "zebra/mqsys.inc"
22C-------------- End CDE --------------
23 DIMENSION LAREA(9),LREF(9),LREFL(9),NAME(2)
24 CHARACTER *(*) CHNAME
25#if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
26 DIMENSION NAMESR(2)
27 DATA NAMESR / 4HMZLI, 4HNT /
28#endif
29#if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
30 DATA NAMESR / 6HMZLINT /
31#endif
32#if !defined(CERNLIB_QTRHOLL)
33 CHARACTER NAMESR*8
34 PARAMETER (NAMESR = 'MZLINT ')
35#endif
36
37#include "zebra/q_jbyt.inc"
38#include "zebra/q_sbit1.inc"
39#include "zebra/q_locf.inc"
40
41
42#include "zebra/qtrace.inc"
43
44#include "zebra/qstore.inc"
45#if defined(CERNLIB_QDEBUG)
46 IF (IQVSTA.NE.0) CALL ZVAUTX
47#endif
48
49 LSYS = LQSYSS(KQT+1)
50 NWTAB = IQ(KQS+LSYS+1)
51 LOCAR = LOCF (LAREA(1)) - LQSTOR
52#if defined(CERNLIB_APOLLO)
53 LOCAR = RSHFT (IADDR(LAREA(1)),2) - LQSTOR
54#endif
55 JDES = LAREA(2)
56 IF (JDES.LT.11) GO TO 21
57 IF (JDES.GE.NWTAB) GO TO 21
58 LSTO = LSYS + JDES
59 IF (IQ(KQS+LSTO+1).NE.LOCAR) GO TO 21
60 NL = IQ(KQS+LSTO+2) - LOCAR
61#if defined(CERNLIB_QDEBPRI)
62 IF (NQLOGL.LT.2) GO TO 19
63 WRITE (IQLOG,9018) IQ(KQS+LSTO+4),IQ(KQS+LSTO+5),JQSTOR
64 9018 FORMAT (1X/' MZLINT- Re-Init of Link Area ',2A4,' for Store',I3)
65#endif
66
67C-- Set link area active
68
69 19 LAREA(1) = 7
70 CALL VZERO (LAREA(3),NL-2)
71#include "zebra/qtrace99.inc"
72 RETURN
73
74C------ Initialize for the first time
75
76 21 IF (NWTAB+5.GT.IQ(KQS+LSYS-1)) THEN
77 JQDIVI = JQDVSY
78 CALL MZPUSH (-7,LSYS,0,100,'I')
79 LQSYSS(KQT+1) = LSYS
80 ENDIF
81
82 LSTO = LSYS + NWTAB
83 LOCR = LOCF (LREF(1)) - LQSTOR
84 LOCRL = LOCF (LREFL(1)) - LQSTOR
85#if defined(CERNLIB_APOLLO)
86 LOCR = RSHFT (IADDR(LREF(1)),2) - LQSTOR
87 LOCRL = RSHFT (IADDR(LREFL(1)),2) - LQSTOR
88#endif
89 NS = LOCR - LOCAR
90 NL = LOCRL+1 - LOCAR
91 IF (NL.EQ.1) THEN
92 NS = NS + 1
93 NL = NS
94 ENDIF
95
96 LOCARE = LOCAR + NL
97 MODAR = MSBIT1 (NS,31)
98
99 NAME(1) = IQBLAN
100 NAME(2) = IQBLAN
101 N = MIN (8, LEN(CHNAME))
102 IF (N.NE.0) CALL UCTOH (CHNAME,NAME,4,N)
103
104 IQ(KQS+LSTO+1) = LOCAR
105 IQ(KQS+LSTO+2) = LOCARE
106 IQ(KQS+LSTO+3) = MODAR
107 IQ(KQS+LSTO+4) = NAME(1)
108 IQ(KQS+LSTO+5) = NAME(2)
109
110C-- Range of possible values for an origin-link
111
112 IQTABV(KQT+13) = MIN (IQTABV(KQT+13), LOCAR+2)
113 IQTABV(KQT+14) = MAX (IQTABV(KQT+14), LOCARE)
114
115 NSM2 = NS - 2
116 NLM2 = NL - 2
117#if defined(CERNLIB_QPRINT)
118 IF (NQLOGL.GE.1)
119 +WRITE (IQLOG,9039) NAME,JQSTOR,NLM2,NSM2
120 9039 FORMAT (1X/' MZLINT. Initialize Link Area ',2A4,' for Store'
121 F,I3,' NL/NS=',2I6)
122
123#endif
124#if defined(CERNLIB_QDEBUG)
125
126C---- Check valid parameters
127
128 IF (LOCR .LT.LOCAR) GO TO 91
129 IF (LOCRL.LT.LOCAR) GO TO 91
130 IF (NL.LT.NS) GO TO 91
131
132C------ Check overlap with existing stores
133
134 KLA = KQS + LOCAR
135 KLE = KQS + LOCARE
136
137#endif
138#if defined(CERNLIB_QDEVZE)
139 IF (NQDEVZ.GE.7)
140 +WRITE (IQLOG,9841) 4*LQSTOR, 4*LQATAB, 4*LQBTIS, 4*KLA
141 +, LQSTOR,LQATAB, LQBTIS,KLA
142 +, LQSTOR,LQATAB, LQBTIS,KLA
143 9841 FORMAT (1X/' DEVZE MZLINT. ',17X,'LQSTOR',17X,'LQATAB',
144 F17X,'LQBTIS',20X,'KLA'
145#endif
146#if (defined(CERNLIB_QDEVZE))&&(!defined(CERNLIB_HEX))
147 F/10X,'4* OCT',4O23/13X,'OCT',4O23/13X,'DEC',4I23)
148#endif
149#if (defined(CERNLIB_QDEVZE))&&(defined(CERNLIB_HEX))
150 F/10X,'4* HEX',4Z23/13X,'HEX',4Z23/13X,'DEC',4I23)
151#endif
152#if defined(CERNLIB_QDEVZE)
153 IF (NQDEVZ.GE.7) WRITE (IQLOG,9842) KLA,KLE
154 9842 FORMAT (16X,' KLA/KLE=',2I10)
155#endif
156#if defined(CERNLIB_QDEBUG)
157
158 DO 47 JSTO=1,NQSTOR+1
159 IF (NQALLO(JSTO).NE.0) GO TO 47
160 JT = NQOFFT(JSTO)
161 JS = NQOFFS(JSTO)
162 JSA = JS - IQTABV(JT+2) + 1
163 JSE = JS + LQSTA(JT+21) + 1
164 JTA = JT + LQBTIS + 1
165 JTE = JTA + NQTSYS
166
167#endif
168#if defined(CERNLIB_QDEVZE)
169 IF (NQDEVZ.GE.7) WRITE (IQLOG,9843) JTA,JTE, JSA,JSE
170 9843 FORMAT (16X,' JTA/JTE=',2I10,' JSA/JSE=',2I10)
171#endif
172#if defined(CERNLIB_QDEBUG)
173
174 IF (KLE.GT.JTA .AND. KLA.LT.JTE) GO TO 92
175 IF (KLE.GT.JSA .AND. KLA.LT.JSE) GO TO 93
176
177C-- Check overlap with existing link areas
178
179 L = JS+ LQSYSS(JT+1)
180 N = IQ(L+1)
181 IF (N.LT.12) GO TO 47
182
183 DO 44 J=12,N,5
184 JLA = JS + IQ(L+J)
185 JLE = JS + IQ(L+J+1)
186
187#endif
188#if defined(CERNLIB_QDEVZE)
189 IF (NQDEVZ.GE.7) WRITE (IQLOG,9844) JLA,JLE
190 9844 FORMAT (16X,' JLA/JLE=',2I10)
191#endif
192#if defined(CERNLIB_QDEBUG)
193
194 IF (KLE.GT.JLA .AND. KLA.LT.JLE) GO TO 94
195 44 CONTINUE
196 47 CONTINUE
197#endif
198
199C-- Success, register new link area
200
201 LAREA(2) = NWTAB
202 IQ(KQS+LSYS+1) = NWTAB + 5
203 GO TO 19
204
205C------ Error conditions
206
207 94 NQCASE = 1
208 NQFATA = 4
209 IQUEST(21) = IQ(L+J+3)
210 IQUEST(22) = IQ(L+J+4)
211 IQUEST(23) = JLA + LQSTOR
212 IQUEST(24) = LAREA(2)
213
214 93 NQCASE = NQCASE + 1
215 92 NQCASE = NQCASE + 1
216 NQFATA = NQFATA + 3
217 IQUEST(18) = JSTO - 1
218 IQUEST(19) = NQPNAM(JT+1)
219 IQUEST(20) = NQPNAM(JT+2)
220
221 91 NQCASE = NQCASE + 1
222 NQFATA = NQFATA + 7
223 IQUEST(11) = NAME(1)
224 IQUEST(12) = NAME(2)
225 IQUEST(13) = LOCAR + LQSTOR
226 IQUEST(14) = LOCR + LQSTOR
227 IQUEST(15) = LOCRL + LQSTOR
228 IQUEST(16) = NSM2
229 IQUEST(17) = NLM2
230#include "zebra/qtofatal.inc"
231 END
232* ==================================================
233#include "zebra/qcardl.inc"