NQSTOR number of the latest store initialized
(NQSTOR = 0, 1, ..., 15) set to -1 by MZEBRA
NQOFFT(J+1) table off-set KQT for store J, J=0,1,...,NQSTOR
NQOFFS(J+1) store off-set KQS for store J, = LQSTOR - LQASTO
NQALLO(J+1) allocation status of store J:
= 0: normal, this store belongs to the running
process for exclusive use
-1: store disconnected
-2: read-only store attached by MZATTM
-3: store attached by MZATTM
NQIAM process identifier, currently zero and unused
LQATAB = LOCF(IQTABV(0))
absolute adress-1 of the store control table
for the primary store
LQASTO = LOCF(LQ(0))
absolute adress-1 of the general store base
LQBTIS = LQATAB - LQASTO
off-set for the primary table to the store base
LQWKTB adr of the Zebra working area IQWKTB rel. to /ZEBQ/,
ie. LQ(LQWKTB) is word IQWKTB(1)
NQWKTB size of IQWKTB available to MQ, NORMALLY = 2560
may be reduced temporarily by FQ
NQWKTT total size of IQWKTB, = 2560
LQWKFZ adr of the FZ work area in IQWKTB rel. to /ZEBQ/
MQKEYS(3) check on MZEBRA initialization already done
NQINIT initialization status
NQTSYS size of each system table
= LOCF(IQDN2(21)) - LOCF(IQTABV(1))
NQM99 unused
NQPERM = zero: normal, error exit to ZFATAL
= 1: permit error return
(used at the moment only in NZNEED for MZGAR1)
NQFATA number of words to be printed from IQUEST on fatal
error termination; zero during normal operation
NQCASE fatal error case; zero during normal operation
NQTRAC number of active trace words
MQTRAC(44) ZEBRA internal trace words
When a particular store is selected by the user, and if it changes, these numbers are collected into here for easy access. Also, the parameters relevant for the division whose free reserve space has been calculated last, are kept in here.
JQSTOR number of the current store
KQT table off-set for the current store
KQS store off-set for the current store
JQDIVI number of the current division
JQDIVR division whose free space has last been calculated
JQKIND = JBYT (IQKIND(JQDIVR),21,4)
JQMODE = JBIT (IQMODE(JQDIVR),1)
JQDIVN neighbour division of division JQDIVR at the moving end
JQSHAR = JQDIVN if the two divisions share the same reserve area
= zero otherwise
JQSHR1 = forward division sharing the reserve area with JQDIVI
JQSHR2 = reverse division sharing the reserve area with JQDIVI
NQRESV free space available to division JQDIVR
IQCUR(1->12) this vector receives a copy of IQTABV(1->12),
see just below
primary current store
IQTABV IQCUR
(1) LQPSTO LQSTOR = LOCF(LQ(@0)), absolute adr-1 of store
(2) NQPFEN NQFEND number of fence words preceding the store
(3) NQPSTR NQSTRU number of structural permanent links
(4) NQPREF NQREF number of permanent links
(5) NQPLK NQLINK number of permanent + working space links
(6) NQPMIN NQMINR minimum size of the reserve area
(7) LQP2E LQ2END minimum value of LQEND(2)
(8) JQPDVL JQDVLL last low division
(9) JQPDVS JQDVSY system division, also: first high division
(10) NQPLOG NQLOGL log level for this store
(11) NQPNAM(2) NQSNAM(2) printing name of the store
(13) IQTABV(13) lowest possible origin-adr for the store
(14) IQTABV(14) highest possible origin-adr for the store
(15) IQTABV(15) initial allocation to last division created
(16) IQTABV(16) table-offset J of the table, if contained in store
ie. LQ(@J+1) is the first word of the table, unless
J = 0: the table is not contained in the store
This table exists for each store in the 'system table' at the end of the space provided for the store by the user in the call to MZSTOR, except for the primary store when it is held in /MZCC/.
For a particular store JQSTOR, acces to a particular number,
say IQTABV(J), is via
KQT = NQOFFT(JQSTOR+1)
IVAL = IQTABV(KQT+J)
ie. by off-setting to the store control table for the primary store.
In the following we give simply the structure of this primary
store control table; exactly the same structure is repeated in every
store control table.
IQTABV(16) store parameters, see the separate IQTABV vector
description on the previous page
LQSYSS( ) store system links, see the separate LQSYS vector
LQSYSR( ) descriptions on the next page
LQSTA(21) start adr of division J, J=1,2,...20
LQSTA(21) is end-of-store+1
LQEND(20) end+1 adr of division J
NQDMAX(20) maximum size of division J
IQMODE(20) mode of the division J
bit 1 = 0 / 1 division forward / reverse
IQKIND(20) kind of the division J
JBYT(IQKIND(J),21,4)= 1 user short-range division
2 user long-range division
4 package division
8 system division
JBIT(IQKIND,J) = 1, other bits 1 to 20 are zero
IQRCU(20) division bits: 'references to' are active, globals unfolded
IQRTO(20) division bits: 'references to' are active
IQRNO(20) division bits: 'references to' are permitted (mask)
NQDINI(20) initial size of division J
NQDWIP(20) number of times 'wipe' executed
NQDGAU(20) number of times user garbage collection
NQDGAF(20) number of times forced garbage collection for no space
NQDPSH(20) number of times 'push' executed with relocation pass
NQDRED(20) number of times 'reduced'
NQDSIZ(20) maximum size of the division seen
IQDN1(20) chars 1:4
IQND2(20) 5:8 of the printing name of the division
Primary store only:
KQFT such that LQFSTA(1) is LQSTA(KQFT+1) (=342 at present)
LQFSTA(21) used in MZCOPY
The vectors LQSYSS and LQSYSR are the system link areas attached to each store. Their words are reserved as follows:
1 : system bank holding the link area descriptions 2 LQMST : working link for MQ 3 LQT : TZ package support link 4 LQFS : FZ package support link 5 LQFORM: MZFORM format d/s support link 7 LQRS : RZ package support link 10 LQZEP : ZEP support link
1 + 2 : 2 working links for MZ 4 LQFF: FZ, last control-bank retrieved 5 LQFI: FZ, control-bank for current input unit 6 LQFX: FZ, control-bank for current output unit 7 LQRRF: RZ package working link
This table, one for each store,
is held in a bank in the system division of the store;
its address is L = LQSYSS(KQT+1).
The table contains one entry of 5 words for each link area as follows:
word 1: LLA for LQ(@LLA) being the first word,
2: LLAE for LQ(@LLAE-1) being the last word of the area
3: bits 1-15: number of structural links
bit 31 = 0 if permanent link area
= 1 if temporary link area
4: characters 1:4
5: 5:8 of the printing name of the area
The first entry of the table describes the permanent links plus the working space links of the store; this area may be of length zero. The second entry describes the system links contained in the store control table for this store. Further entries appear in the order in which they have been created by either MZLINK or MZLINT.
The table as a whole in the bank at L is as follows:
IQ(L+1) NWU active size of the table of n entries,
NWU = 5*n + 1
entry 1
+2) LLA = 1
+3) LLE = 1 + NQLINK
+4) number of permanent structural links
+5) 4HQWSP
+6) blank
entry 2
+7) LLA = LOCF(LQSYSS(KQT+1)) - LQSTOR
+8) LLE = LLA + number of system links
+9) number of structural system links
+10) 4HQLAS
+11) 4HYST
entry 3
+12) LLA = LOCF(first word) - LQSTOR
... ...
entry i
IQ(L+5i-3) LLA for entry i
... ...