next up previous contents index
Next: Relocation Tables Up: Internal technical details Previous: Internal technical details

Master Tables

Master parameters of the process in /MZCA/

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

Current store / division: in /MZCB/

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

220/221 vector

     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

Store control table

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

224 system link vectors: in /MZCC/

The vectors LQSYSS and LQSYSR are the system link areas attached to each store. Their words are reserved as follows:

structural: 225

   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

reference: 226

   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

Table of Link Areas

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
             ...   ...



next up previous contents index
Next: Relocation Tables Up: Internal technical details Previous: Internal technical details


Janne Saarela
Mon May 15 08:34:47 METDST 1995