5 * Revision 1.2 1996/04/18 16:11:16 mclareni
6 * Incorporate changes from J.Zoll for version 3.77
8 * Revision 1.1.1.1 1996/03/06 10:47:20 mclareni
12 #include "zebra/pilot.h"
13 SUBROUTINE MZATTM (IXSTOP,CHNAME
14 +, MEMOR,LSTAP,NWMP,NWEXP,CHOPT,ITABLE)
16 C- Attach flat memory as a Zebra store region, user called
18 #include "zebra/zbcd.inc"
19 #include "zebra/zstate.inc"
20 #include "zebra/zunit.inc"
21 #include "zebra/mqsys.inc"
22 C-------------- End CDE --------------
23 DIMENSION IXSTOP(9),MEMOR(99),LSTAP(9),NWMP(9),NWEXP(9)
25 CHARACTER *(*) CHNAME,CHOPT
26 #if (defined(CERNLIB_QTRHOLL))&&(!defined(CERNLIB_A6M))
28 DATA NAMESR / 4HMZAT, 4HTM /
30 #if (defined(CERNLIB_QTRHOLL))&&(defined(CERNLIB_A6M))
31 DATA NAMESR / 6HMZATTM /
33 #if !defined(CERNLIB_QTRHOLL)
35 PARAMETER (NAMESR = 'MZATTM ')
38 #include "zebra/q_sbit1.inc"
39 #include "zebra/q_shiftl.inc"
40 #include "zebra/q_locf.inc"
43 #include "zebra/qtrace.inc"
49 CALL UOPTC (CHOPT,'QIR',IQUEST)
54 LASTOR = LOCF(MEMOR(1)) - 1
57 C------ Reset size of an existing read-only store
59 IF (IXSTOR.EQ.0) GO TO 21
60 CALL MZSDIV (IXSTOR,0)
61 IF (NQALLO(JQSTOR).GE.0) GO TO 91
62 IF (NQALLO(JQSTOR).LT.-3) GO TO 92
63 IF (IREI.NE.0) GO TO 24
64 IF (NQALLO(JQSTOR).EQ.-1) GO TO 92
67 C------ Initialize an new read-only store
69 21 JQSTOR = NQSTOR + 1
70 IF (NQSTOR) 93, 24, 22
71 22 JQSTOR = IUFIND (-1,NQALLO(2),1,NQSTOR)
72 24 CALL VZERO (KQT,25)
74 C-- Printing name of store
78 N = MIN (8, LEN(CHNAME))
79 IF (N.NE.0) CALL UCTOH (CHNAME,NQSNAM,4,N)
84 IF (LOGQ.NE.0) NQLOGL=-2
86 C-- Calculate table off-set
88 LOCT = LOCF (ITABLE(1)) - 1
91 #if defined(CERNLIB_QPRINT)
94 WRITE (IQLOG,9021) JQSTOR,NQSNAM(1),NQSNAM(2)
95 +, LASTOR,LOCT,LASTOR,LOCT,KQS,KQT,KQS,KQT
97 9021 FORMAT (1X/' MZATTM. Attach Memory as Store',I3,' in ',2A4,
98 F/10X,'with Store/Table at absolute adrs',2I12
100 #if (defined(CERNLIB_QPRINT))&&(!defined(CERNLIB_HEX))
101 F/40X,'OCT',2(1X,O11)/40X,'OCT',2(1X,O11)
103 #if (defined(CERNLIB_QPRINT))&&(defined(CERNLIB_HEX))
104 F/40X,'HEX',2(1X,Z11)/40X,'HEX',2(1X,Z11)
106 #if defined(CERNLIB_QPRINT)
107 F/30X,'relative adrs',2I12)
110 IF (JQSTOR.GE.16) GO TO 94
112 C---- Initialize divisions 1 + 2 + system
114 NQOFFT(JQSTOR+1) = KQT
115 CALL VZERO (IQTABV(KQT+1),NQTSYS)
116 CALL VBLANK (IQDN1(KQT+1), 40)
120 IQDN1(KQT+20) = IQLETT(19)
121 IQDN1(KQT+2) = IQLETT(4)
123 IQKIND(KQT+1) = MSBIT1 (1,21)
124 IQDN1(KQT+1) = NQSNAM(1)
125 IQDN2(KQT+1) = NQSNAM(2)
127 CALL UCOPY (IQCUR,IQTABV(KQT+1),16)
130 IF (IXSTOR.EQ.0) THEN
131 IXSTOP(1) = ISHFTL (JQSTOR,26)
134 IF (JQSTOR.GT.NQSTOR) NQSTOR = JQSTOR
135 NQALLO(JQSTOR) = -3 + IONL
137 C------ Set size of the store
140 KQS = LQSTOR - LQASTO
141 NQOFFS(JQSTOR+1) = KQS
142 IQTABV(KQT+1) = LQSTOR
145 LEND20 = LEND1 + NWEX
147 NQDMAX(KQT+1) = NWMEM + NWEX
150 LQSTA(KQT+2) = LEND20
151 LQEND(KQT+2) = LEND20
152 LQSTA(KQT+20) = LEND20
153 LQEND(KQT+20) = LEND20
154 LQSTA(KQT+21) = LEND20
155 #if defined(CERNLIB_QDEBPRI)
157 + WRITE (IQLOG,9089) JQSTOR,NQSNAM(1),NQSNAM(2),LASTOR
159 9089 FORMAT (' MZATTM- Store',I3,' in ',2A4,' at adr',I12
160 F/10X,'Memory starting at LSTA=',I8,' with',2I8,' words.')
163 #include "zebra/qtrace99.inc"
166 C------ Error conditions
168 94 NQCASE = NQCASE + 1
169 93 NQCASE = NQCASE + 1
170 92 NQCASE = NQCASE + 1
171 91 NQCASE = NQCASE + 1
173 IQUEST(11) = NQSNAM(1)
174 IQUEST(12) = NQSNAM(2)
178 #include "zebra/qtofatal.inc"
180 * ==================================================
181 #include "zebra/qcardl.inc"