<> <> <> <> <> <> <<>> DIRECTORY PrincOps USING [aRCLK, aSETMP, PageCount, PageNumber, RealPageNumber, zMISC]; ProcessorFace: CEDAR DEFINITIONS = BEGIN <> Go: PROC; <> <> <<>> InitializeCleanup: PROC; <> <> SetMP: PROC [CARDINAL] = TRUSTED MACHINE CODE { PrincOps.zMISC, PrincOps.aSETMP }; <> <> <> ProcessorID: TYPE = PRIVATE RECORD [a, b, c: WORD]; NullProcessorID: ProcessorID = [0, 0, 0]; processorID: READONLY ProcessorID; <> <> <> dedicatedRealMemory: READONLY PrincOps.PageCount; <> <<>> firstSpecialRealPage: PrincOps.RealPageNumber; specialRealPages: PrincOps.PageCount; <> <> GetNextAvailableVM: PROC [page: PrincOps.PageNumber] RETURNS [firstPage: PrincOps.PageNumber, count: PrincOps.PageCount]; <> <> useLongMapOps: READONLY BOOL; < real memory is limited to 1 megaword. ProcessorFace is (perhaps) not the right place for this, but it must be somewhere that can't fault and is available to both BootFile and VMInternal.>> <> <> GreenwichMeanTime: TYPE = LONG CARDINAL; gmtEpoch: LONG CARDINAL = 2114294400; <<(67years*365daysPerYear+16leapDays)*24hoursPerDay*60minutesPerHour*60secondsPerMinute>> GetGreenwichMeanTime: PROC RETURNS [GreenwichMeanTime]; <> <> <<>> SetGreenwichMeanTime: PROC [GreenwichMeanTime]; <> <> <> GetClockPulses: PROC RETURNS [LONG CARDINAL] = TRUSTED MACHINE CODE { <> PrincOps.zMISC, PrincOps.aRCLK; }; microsecondsPerHundredPulses: READONLY CARDINAL; -- max error is .33% <> reservedNakedNotifyMask: READONLY WORD; <> <> <> millisecondsPerTick: READONLY CARDINAL; <> BootButton: PROC; <> <<>> PowerOff: PROC [returnIfDisabled: BOOL _ FALSE]; <> <<>> DisablePowerOff: PROC; <> <<>> EnablePowerOff: PROC; <> <<>> SetAutomaticPowerOn: PROC [gmt: GreenwichMeanTime, externalEvent: BOOL]; <> <<>> ResetAutomaticPowerOn: PROC; <> <<>> END.