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



Back to : LoadState.mesa_Sep78.pdf | Home

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


-- LoadState.mesa
-- Last Modified by Sandman, May 12, 1978 2:34 PM
DIRECTORY
AltoFileDefs: FROM "altofiledefs" USING [eofDA],
InlineDefs: FROM "inlinedefs" USING [COPY],
LoadStateDefs: FROM "loadstatedefs" USING [
BcdAddress, BcdArrayLength, ConfigGFI, ConfigIndex, ConfigNull,
EnumerationDirection, FileSegmentHandle, GFTIndex, LoadState,
LoadStateGFT, Relocation],
MiscDefs: FROM "miscdefs" USING [SetBlock, Zero],
NucleusDefs: FROM "nucleusdefs",
SDDefs: FROM "sddefs" USING [SD,'sGFTLength],
SegmentDefs: FROM "segmentdefs" USING [
FileHandle, FileHint, FileSegmentAddress, GetFileFP, InsertFile,
NewFileSegment, Read, SwapIn, SwapOut, Unlock],
SystemDefs: FROM "systemdefs" USING [AllocateHeapNode, FreeHeapNode];
DEFINITIONS FROM LoadStateDefs;
LoadState: PROGRAM [state, initstate, bcdseg: FileSegmentHandle]
IMPORTS MiscDefs, SegmentDefs, SystemDefs
EXPORTS LoadStateDefs, NucleusDefs = PUBLIC
BEGIN
loadstate: LoadState;
gft: LoadStateGFT;
nbcds: ConfigIndex;
LoadStateFull: ERROR = CODE;
InputLoadState: PROCEDURE RETURNS [ConfigIndex] c
BEGIN OPEN SegmentDefs;
i: GFTIndex;
SwapIn[state];
loadstate ~ FileSegmentAddress[state];
gft ~ DESCRIPTOR[@loadstate.gft, SDDefs.SD[SDDefs.sGFTLength]];/
nbcds ~ 0;
fOR i IN [O .. LENGTH[gft]) DO
IF gft[i].config # ConfigNull THEN nbcds ~ MAX[nbcds, gft[i].config];
ENDLOOP;
nbcas ~ nbcds + 1;
RETURN[nbcds]
END;
UpdateLoadState: PROCEDURE [
bcd: ConfigIndex, bcdseg: FileSegmentHandle, unresolved, exports: BOOLEAN] =
BEGIN OPEN SegmentDefs;
IF bcd )= LAST[ConfigIndex] THEN ERROR LoadStateFull:
loadstate.bcds[bcd] ~
[fp:, da:, base: bcdseg.base, unresolved: unresolved,
fill:, exports: exports, pages: bcdseg.pages];
loadstate.bcds[bcd].da ~ WITH s: bcdseg SELECT FROM
disk =) s.hint.da,
ENDCASE =) AltofileDefs.eofDA:
GetfileFP[bcdseg.file, @loadstate.bcds[bcd].fp];
nbcds ~ nbcds + 1;
END;
RemoveConfig: PUBLIC PROCEDURE [rel: Relocation, config: ConfigIndex]