MDADefs.mesa
Copyright © 1986 by Xerox Corporation. All rights reserved.
Willie-Sue, April 30, 1986 4:34:24 pm PDT
definitions for MicroD, ONLY for Dorado Model 1
taken from MDadefs.d - used for assign assignment pass only
DIRECTORY
MDDefs USING [DoradoPageSize, OneBit];
MDADefs: CEDAR DEFINITIONS =
BEGIN
SubPageSize: CARDINAL = 16;
pageGlobalMax: CARDINAL = 1;
Assignment: TYPE = RECORD[real, imag: CARDINAL];
DoradoPage: TYPE = REF DoradoPageRec;
DoradoPageRec: TYPE = MACHINE DEPENDENT RECORD[
used(0): CARDINAL,  -- number of words used
global(1): CARDINAL,  -- number of Globals
ifuEntry(2): CARDINAL, -- number of IFU entries
slow(3): BOOL,  -- for rings, true if any bits set in BT, or global or IFUE non-zero
absPage(4): CARDINAL,
bt(5): Pbt -- bit table for allocated words
];
pbtLength: CARDINAL = MDDefs.DoradoPageSize;
Pbt: TYPE = REF PbtRec;
PbtRec: TYPE = PACKED ARRAY [0..pbtLength) OF BOOL;
parallel type to allow easy manipulation of the bitTable part of the record
XDoradoPage: TYPE = REF XDoradoPageRec;
XDoradoPageRec: TYPE = MACHINE DEPENDENT RECORD[
used(0): CARDINAL,  -- number of words used
global(1): CARDINAL,  -- number of Globals
ifuEntry(2): CARDINAL, -- number of IFU entries
slow(3): BOOL,  -- for rings, true if any bits set in BT, or global or IFUE non-zero
absPage(4): CARDINAL,
bt(5): Xbt -- bit table for allocated words
];
xbtWords: CARDINAL = MDDefs.DoradoPageSize/16;
Xbt: TYPE = REF XbtRec;
XbtRec: TYPE = ARRAY [0..xbtWords) OF WORD;
SubPageHeader: TYPE = MACHINE DEPENDENT RECORD[
aLists(0: 0..0): MDDefs.OneBit,  -- true if any +1 lists
spn1(0: 1..7): [0..177B] ← 0,   -- subpage number +1, or 0
length(0: 8..15): [0..377B] ← 0   -- number of instructions
];
SubPage: TYPE = LONG POINTER TO SubPageRec;
SubPageRec: TYPE = RECORD[
subPageHeader: SubPageHeader,
data: ARRAY [0..MDDefs.DoradoPageSize) OF WORD-- addresses
];
manifest [ lIbuf = maxPageSize+lSubPageHd*(maxPageSize/2)+1 ] // Must have at least 2 instructions in a subpage, +1 for final 0
lWBuf: CARDINAL = MDDefs.DoradoPageSize + (MDDefs.DoradoPageSize/2) + 1;
WorkingBuffer: TYPE = LONG POINTER TO CARDINAL;
END.