]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/zebra/mqg/mzmove.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / zebra / mqg / mzmove.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 MZMOVE
11
12C- Garbage collector - memory move
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 / 4HMZMO, 4HVE /
22#endif
23#if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
24 DATA NAMESR / 6HMZMOVE /
25#endif
26#if !defined(CERNLIB_QTRHOLL)
27 CHARACTER NAMESR*8
28 PARAMETER (NAMESR = 'MZMOVE ')
29#endif
30
31#include "zebra/q_jbit.inc"
32
33
34#include "zebra/qtrace.inc"
35
36C--------------- UPDATE DIVISION TABLES
37#if defined(CERNLIB_QDEVZE)
38 IF (NQDEVZ.GE.11) WRITE (IQLOG,9821) LQMTA,LQMTE
39 9821 FORMAT (1X/' DEVZE MZMOVE, Update division tables, LQMTA/LQMTE='
40 F,2I12)
41#endif
42
43 LMT = LQMTA
44
45 23 JDIV = LQ(LMT)
46 IACT = LQ(LMT+1)
47 NSHF = LQ(LMT+2)
48 IF (IACT.EQ.4) GO TO 26
49 IF (IACT.NE.3) GO TO 31
50
51C---- Division with garbage collection
52C-- New start adr
53
54 L = LQ(LMT+3)
55 LT = LQ(LMT+5) + LQRTA
56 N = LQ(LT+2)
57 LQSTA(KQT+JDIV) = L + N
58
59C-- New end adr
60
61 L = LQ(LMT+4)
62 LT = LQ(LMT+6) + LQRTA - 4
63 N = LQ(LT+2)
64 LQEND(KQT+JDIV) = L + N
65 GO TO 36
66
67C---- Wiped division
68
69 26 MODE = JBIT (IQMODE(KQT+JDIV),1)
70 IF (MODE.NE.0) GO TO 28
71
72C-- Division mode forward
73
74 LQSTA(KQT+JDIV) = LQSTA(KQT+JDIV) + NSHF
75 GO TO 29
76
77C-- Division mode reverse
78
79 28 LQSTA(KQT+JDIV) = LQEND(KQT+JDIV) + NSHF
80 29 LQEND(KQT+JDIV) = LQSTA(KQT+JDIV)
81 GO TO 36
82
83C---- Inactive division
84
85 31 IF (NSHF.EQ.0) GO TO 37
86 LQSTA(KQT+JDIV) = LQSTA(KQT+JDIV) + NSHF
87 LQEND(KQT+JDIV) = LQEND(KQT+JDIV) + NSHF
88 36 CONTINUE
89#if defined(CERNLIB_QDEVZE)
90 IF (NQDEVZ.GE.11)
91 +WRITE (IQLOG,9836) JDIV,LQSTA(KQT+JDIV),LQEND(KQT+JDIV)
92 9836 FORMAT (16X,'JDIV / LQSTA / LQEND =',I4,2I8)
93#endif
94 37 LMT = LMT + 8
95 IF (LMT.LT.LQMTE) GO TO 23
96 IF (NQNOOP.NE.0) GO TO 999
97
98C--------------- MEMORY MOVE
99#if defined(CERNLIB_QDEVZE)
100 IF (NQDEVZ.GE.11) WRITE (IQLOG,9861) LQTA,LQTE
101 9861 FORMAT (1X/' DEVZE MZMOVE, Execute memory move, LQTA/LQTE=',2I12)
102#endif
103 IF (LQTE.LE.LQTA) GO TO 999
104
105 LTF = LQTA
106
107 61 NREL = LQ(LTF+2)
108 IF (NREL) 64, 68, 71
109
110C-- Left squeeze
111
112 64 LOLD = LQ(LTF)
113 LNEW = LOLD + NREL
114 NW = LQ(LTF+1) - LOLD
115 IF (NW.EQ.0) GO TO 68
116 CALL UCOPY (LQ(KQS+LOLD),LQ(KQS+LNEW),NW)
117#if defined(CERNLIB_QDEVZE)
118 IF (NQDEVZ.GE.11) WRITE (IQLOG,9865) LOLD, LNEW, NW
119 9865 FORMAT (16X,'Copy From / To / N=',3I8)
120#endif
121 68 LTF = LTF + 4
122 IF (LTF.NE.LQTE) GO TO 61
123 GO TO 999
124
125C---- Right squeeze
126
127 71 LTFN = LTF
128 72 LTFN = LTFN + 4
129 IF (LTFN.EQ.LQTE) GO TO 76
130 IF (LQ(LTFN+2).GT.0) GO TO 72
131 76 LTR = LTFN
132
133C-- Execute in reverse
134
135 81 LTR = LTR - 4
136 LOLD = LQ(LTR)
137 NW = LQ(LTR+1) - LOLD
138 IF (NW.EQ.0) GO TO 88
139 LNEW = LOLD + LQ(LTR+2)
140 CALL UCOPY2 (LQ(KQS+LOLD),LQ(KQS+LNEW),NW)
141#if defined(CERNLIB_QDEVZE)
142 IF (NQDEVZ.GE.11) WRITE (IQLOG,9887) LOLD, LNEW, NW
143 9887 FORMAT (16X,'Copy2 From / To / N=',3I8)
144#endif
145 88 IF (LTR.NE.LTF) GO TO 81
146 LTF = LTFN
147 IF (LTF.NE.LQTE) GO TO 61
148#include "zebra/qtrace99.inc"
149 RETURN
150 END
151* ==================================================
152#include "zebra/qcardl.inc"