// IfsInit.decl -- temporary storage used only during IFS initialization
// Copyright Xerox Corporation 1979, 1980, 1981

// Last modified May 4, 1981  7:01 PM by Taft

// The ISB is data passed around among the initialization modules.
// It is destroyed by FreeStackEvent, which is executed as soon
// as contexts start running.  The ISB replaces a lot of statics
// used only during initialization that would otherwise waste
// resident storage (to say nothing of filling up Bldr's dictionary).

//----------------------------------------------------------------------------
structure ISB:	// Initialization Storage Block
//----------------------------------------------------------------------------
[
// init-time parameters -- kept here so they can be patched easily
lenBigZone word
bigZoneIncr word
lenSmallZone word
smallZoneIncr word

// global switches
creatingPrimary word
verifyTree word
maxBanksXM word
enableMiscServers word

// other storage
bigZoneBot word
cfaIFSSwap word 8  // = lCFA
relocTable word
initStart word
stkBase word
stkLength word
numOverlays word
oD word
lenOD word

// resident PC values put in layout vector by Bldr
pcX word	// "X/Q" -- start of resident code movable to XM
pcL word	// "L/Q" -- start of resident Leaf code
pcI word	// "I/Q" -- start of resident initialization

residentCodeXM word  // true iff resident code was actually moved to XM
xepTable word	// -> table of pointers to XM Entry Point statics

pinnedOverlays↑0,9 word  // overlay numbers of overlays to be pinned in memory

runFileCreated word 2	// Time at which Ifs.run was created
]
manifest lenISB = size ISB/16