• Aucun résultat trouvé

file WriteImage[]; AdjustBcd[bcdseg];

N/A
N/A
Protected

Academic year: 2022

Partager "file WriteImage[]; AdjustBcd[bcdseg];"

Copied!
2
0
0

Texte intégral

(1)

BuildNucleus.mesa 2-Sep-78 12:43:04

-- file BuildNucleus.Mesa

-- last edited by Sandman, May 10, 1978 2:39 PM DIRECTORY

AltoDefs: FROM "altodefs", BCdDefs: FROM "bcddefs",

BootCacheDefs: FROM "BootCacheDefs", BootmesaDefs: FROM "bootmesadefs", CommanderDefs: FROM "commanderdefs", ControlDefs: FROM "controldefs", FakeSegDefs: FROM "fakesegdefs", IODefs: FROM "iodefs",

TimeDefs: FROM "timedefs", SegmentDefs: FROM "segmentdefs", StringDefs: FROM "stringdefs";

DEFINITIONS FROM BootmesaDefs;

BuildNucleus: PROGRAM

IMPORTS BootmesaDefs. CommanderDefs, FakeSegDefs, IODefs, BootCacheDefs, SegmentDefs, StringDefs, TimeDefs

EXPORTS BootmesaDefs • BEGIN

FrameHandle: TYPE • ControlDefs.FrameHandle;

GlobalFrameHandle: TYPE· ControlDefs.GlobalFrameHandle;

name: STRING ~ [40];

Initialize: PROCEDURE •

BEGIN OPEN TimeDefs, IODefs;

timeofbuilding: STRING ~ [18J;

version: BcdDefs.VersionStamp ~ InitializeBootmesa[10,name];

AppendDayTime[timeofbuilding,UnpackDT[version.time]];

timeofbu;lding.length ~ timeofbuilding.length - 3;

WriteChar[CR];

WriteString[name]: WriteString[".Image -- ItJ: WriteLine[timeofbuilding];

SetExtraFrames[];

RETURN END;

loadstateseg. initloadstateseg: FakeSegDefs.FakeSegmentHandle;

bcdseg: FakeSegDefs.FakeSegmentHandle;

RunCode: PROCEDURE •

BEGIN OPEN SegmentDefs. BootmesaDefs;

SwaplnRes;dentCode[]:

FakeSegDefs.FakeSwapln[initloadstateseg];

FakeSegDefs.FakeSwapln[loadstatesegJ:

FakeSegDefs.FakeSwapIn[bcdseg]:

SwaplnUserCode[]:

TurnOffStartTrap[]:

InitializeImage[]:

DeclareBootCommand[bcO];

DeclareSegments[];

DeclareVMBounds[FakeSegOefs.GetVMBounds[]];

-- now we can write the image file WriteImage[];

AdjustBcd[bcdseg];

DeclareLoadStateParameters[loadstateseg. init1oadstateseg. bcdseg];

DeclareBootCommand[bcl];

Un1ockUserCode[]:

OeclareOpenFiles[]: -- lookup all requested files Oec1areBootCommand[bc2]:

XFER[dest: WartFrame[]]:

RETURN END:

SwapInResidentCode: PROCEDURE • BEGIN OPEN FakeSegOefs:

codeseg: FakeSegmentHandle ~ NIL:

SwapInModule:

PROCEDURE [frame: ControlOefs.Globa1FrameHandle] RETURNS [BOOLEAN] • BEGIN

Page 1

(2)

BuildNucleus.mesa Z-Sep-78 lZ:43:04

cseg: FakeSegmentHandle ~ BootCacheDefs.READ[8frame.codesegment]:

IF cseg

*

codeseg THEN SwapInFrame[frame]:

IF codeseg • NIL THEN codeseg ~ cseg:

RETURN[FALSE]

END:

[] ~ BootmesaDefs.EnumerateResidentModules[SwapInModule]:

END:

GetFrames: PROCEDURE • BEGIN OPEN SegmentDefs:

s: STRING ~ [40]:

StringDefs.AppendString[s.name]:

StringDefs.AppendString[s.".bcd"]:

[loadstateseg. initloadstateseg. bcdseg] ~ Load[s]:

SwapIn[bcdseg.LinkZ]:

InitUtilities[FileSegmentAddress[bcdseg.Link2]]:

BootmesaDefs.LookUpResidentModules[]:

END:

Find: PUBLIC PROCEDURE [module: STRING] RETURNS [frame: GlobalFrameHandle] • BEGIN

frame ~ Frame[module]:

IF frame· ControlDefs.NullGlobalFrame THEN BEGIN OPEN IODefs:

WriteString["Can't find module "]:

WriteString[module]:

SIGNAL BootAbort:

END:

END:

BuildMesa: PROCEDURE • BEGIN

OpenSource[name]: . ParseInput[]:

Initialize[]:

GetFrames[]:

RunCode[]:

CloseSource[]:

END:

-- main body code

BuildSystem: PROCEDURE en: STRING] • BEGIN

name. length ~ 0:

StringOefs.AppendString[name.n]:

BuildMesa[ I

IOOefs.Rubout

.>

RETRY:

BootAbort ->

BEGIN

END;

IODefs.WriteLine[" Bootmesa aborted. Type any character to exit"]:

[] ~ IODefs.ReadChar[]:

CONTINUE END]:

CommanderDefs.AddCommand["Build". LOOPHOLE[BuildSystem], l].params[O] ..

[type: string, prompt: "System Name"];

END ...

Page Z

Références

Documents relatifs

Set the unvisited vertex with the smallest distane (from the initial node) as the.. The algorithm begins by

The structure of this paper is as follows. The class of systems considered and some preliminary definitions are given in Section 2. Our symbolic approach, which is based on the

Dans cette étude, nous avons proposé deux nouveaux modèle s analytiques performants basés sur la théorie d’ordre élevé à deux variables pour l’analyse de comportement

Les donn´ ees lues du fichier doivent ˆ etre enregistr´ ees dans une liste de la classe. Cette classe doit avoir 3 champs : une liste poids W, un seuil theta et une sortie

In summary, the generalized anti-frame rule ( GAF ) can be used to state that, under certain conditions, certain properties (such as the value of certain variables) are preserved

In the third section we prove that three closure operators on an open frame coincide; one of these derives from the adjoint pair relating opens and frame

cept of perfect homomorphisms to the study of perfect-injectives and Gleason envelope in the category of completely regular frames.. For general background on frames,

In 1941, Frame [5] and Stewart [15] independently proposed algorithms which achieve the same numbers of moves for the k-peg Tower of Hanoi problem with k ≥ 4 pegs.. Klavˇzar et