Text preview for : Resident.mesa_Sep78.pdf part of xerox Resident.mesa Sep78 xerox mesa 4.0_1978 listing Mesa_4_System Resident.mesa_Sep78.pdf



Back to : Resident.mesa_Sep78.pdf | Home

Resident.mesa 2-Sep-78 13:58:17 Page 1



-- Resident.Mesa: edited by Sandman on Jul 25, 1978 8:41 AM
DIRECTORY
AllocDefs: FROM "allocdefs" USING [AllocInfo, MakeSwappedIn],
AltoDefs: FROM "altodefs" USING [PageSize],
BootDefs: FROM "bootdefs",
ControlDefs: FROM "controldefs" USING [
ATPreg, AV, AVItem, Control Link, EntryVectorItem, EPRange, FrameHandle,
FrameVec, Free, GetReturnLink, GFT, GFTIndex, GFTItem, GlobalFrameHandle,
LargeReturnSlot. Lreg, MainBodyIndex, MaxAllocSlot, NullFrame.
NullGlobalFrame, OTPreg, Port. ProcDesc. SD, SetReturnFrame,
SetReturnLink, SpecialReturnSlot, StateVector, WDCreg, XTPreg, XTSreg],
CoreSwapDefs: FROM "coreswapdefs" USING [
ExternalStateVector, PuntInfo, SVPointer].
FrameDefs: FROM "framedefs",
ImageDefs: FROM "imagedefs" USING [AbortMesa, PuntMesa].
InlineDefs: FROM "inlinedefs" USING [BITAND, BITOR],
KeyDefs: FROM "keydefs" USING [Keys],
Mopcodes: FROM "mopcodes" USING [zKFCB, zPOP, zSTARTIO],
NovaOps: FROM "novaops" USING [NovaInLd, NovaOutLd],
NucleusDefs: FROM "nucleusdefs",
ProcessDefs: FROM "processdefs" USING [
ActiveWord, CV, DisableInterrupts, DisableTimeout, EnableInterrupts,
Enter, Fork, GetPriority, ParityLevel, Priority, ReEnter, SetPriority,
Wait, WakeupsWaiting],
SDDefs: FROM "sddefs" USING [
sAllocTrap, SD, sInterrupt, sIOResetBits, sProcessBreakpoint, sXferTrap],
SegmentDefs: FROM "segmentdefs" USING [
AddressFromPage, DataSegmentAddress, DataSegmentHandle, DefaultBase,
DeleteDataSegment, FileSegmentHandle, NewFrameSegment, Unlock],
TrapDefs: FROM "trapdefs" USING [
TraceNext, TraceOff, TrapParameter, TrapStatus]:
DEFINITIONS FROM AltoDefs, ControlDefs:
Resident: PROGRAM
IMPORTS AllocDefs, ProcessDefs, SegmentDefs
EXPORTS BootDefs, FrameDefs, NucleusDefs, TrapDefs
SHARES ProcessDefs =
BEGIN
-- allocation of frame space
LargeFrameSlot: CARDINAL = 12:
FrameSize: PUBLIC PROCEDURE [fsi: CARDINAL] RETURNS [CARDINAL] =
BEGIN
RETURN[IF fsi >= LENGTH[FrameVec] THEN fsi ELSE FrameVec[fsi]]
END:
pgft: TYPE = POINTER TO ARRAY [0 .. 0) OF GFTItem:
ItemPointer: TYPE = POINTER TO ControlDefs.AVltem:
FrameSegment: TYPE = MACHINE DEPENDENT RECORD [
segment: SegmentDefs.DataSegmentHandle,
link: POINTER TO FrameSegment,
size, fsi: CARDINAL];

-- maintain a list of all new "permanent" frame segments:
SegHeader: PUBLIC TYPE = RECORD [
seg: SegmentDefs.DataSegmentHandle. link: pSegHeader];
pSegHeader: PUBLIC TYPE = POINTER TO SegHeader:
SegListHead: PUBLIC pSegHeader