]> git.uio.no Git - u/mrichter/AliRoot.git/blob - 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
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
12 C-    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"
18 C--------------    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
36 C---------------   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
51 C----              Division with garbage collection
52 C--                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
59 C--                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
67 C----              Wiped division
68
69    26 MODE = JBIT (IQMODE(KQT+JDIV),1)
70       IF (MODE.NE.0)               GO TO 28
71
72 C--                Division mode forward
73
74       LQSTA(KQT+JDIV) = LQSTA(KQT+JDIV) + NSHF
75       GO TO 29
76
77 C--                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
83 C----              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
98 C---------------   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
110 C--                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
125 C----              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
133 C--                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"