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