-- Temporary implementation of Booting.mesa. Permanent one will subsume SnapshotImpl -- BootingImpl.mesa -- Andrew Birrell February 6, 1983 1:10 pm DIRECTORY Booting, MicrocodeBooting USING[ BootSpecificMicrocode, GetBootFileNumber ], Snapshot USING[ InLoad, OutLoad ], TemporaryBooting USING[ BootButton, BootFromFile, BootFromPhysicalVolume, BootFromVolume, InstallPhysicalVolumeBootFile, InstallVolumeBootFile, MakeBootable ], Volume USING[ ID, systemID ]; BootingImpl: CEDAR PROGRAM IMPORTS MicrocodeBooting, Snapshot, TemporaryBooting, Volume EXPORTS Booting = BEGIN Boot: PUBLIC PROC[boot: Booting.Bootee, switches: Booting.Switches, outload: Booting.BootFile] = TRUSTED BEGIN Vol: PROC[volume: Volume.ID] RETURNS[Volume.ID] = CHECKED INLINE { RETURN[ IF volume = Booting.nullVolume THEN Volume.systemID ELSE volume] }; IF outload # Booting.nullBootFile THEN BEGIN inLoaded: BOOL = Snapshot.OutLoad[file: outload.file, firstPage: outload.firstPage]; IF inLoaded THEN RETURN; END; WITH b: boot SELECT FROM bootButton => TemporaryBooting.BootButton[switches]; microcode => MicrocodeBooting.BootSpecificMicrocode[b.bfn]; physical => TemporaryBooting.BootFromPhysicalVolume[Vol[b.volume], switches]; logical => TemporaryBooting.BootFromVolume[Vol[b.volume], switches]; file => TemporaryBooting.BootFromFile[b.file.file, b.file.firstPage, switches]; inload => Snapshot.InLoad[pMicrocode: NIL, pGerm: NIL, countGerm: 0, file: b.file.file, firstPage: b.file.firstPage, switches: switches]; ENDCASE => ERROR; ERROR -- can't get here -- END; GetBootFileNumber: PUBLIC PROC[type: Booting.MicrocodeType] RETURNS[Booting.BootFileNumber] = TRUSTED { RETURN[ MicrocodeBooting.GetBootFileNumber[type] ] }; MakeBootable: PUBLIC PROC[file: Booting.BootFile] = TRUSTED { TemporaryBooting.MakeBootable[file: file.file, firstPage: file.firstPage] }; InstallVolumeBootFile: PUBLIC PROC[file: Booting.BootFile] = TRUSTED { TemporaryBooting.InstallVolumeBootFile[file: file.file, firstPage: file.firstPage] }; InstallPhysicalVolumeBootFile: PUBLIC PROC[file: Booting.BootFile] = TRUSTED { TemporaryBooting.InstallPhysicalVolumeBootFile[file: file.file, firstPage: file.firstPage] }; END. Ę*˜Jš‚Īc•œĪk œžœ9žœ&žœ”žœžœžœžœžœ6žœ žœĪnœžœžœPžœžœŸœžœžœžœžœžœžœžœžœžœžœžœ"žœžœžœNžœ žœžœ žœžœ žœžœ“žœ žœsžœžœžœœžœŸœžœžœžœžœžœ1Ÿ œžœžœžœSŸœžœžœžœ\Ÿœžœžœžœdžœ˜ī—…—ō "