-- Lowest level interface to booting facilities -- Booting.mesa -- Andrew Birrell February 6, 1983 11:58 am DIRECTORY MicrocodeBooting USING[ BootFileNumber, MicrocodeType, nullBootFileNumber ], File USING[ Capability, nullCapability, PageNumber ], TemporaryBooting USING[ defaultSwitches, Switches ], Volume USING[ ID, nullID ]; Booting: CEDAR DEFINITIONS = BEGIN -- Beware: clients should not call this interface directly if running in a world that contains the Cedar abstract machine implementation. In that case, use AMBooting. Otherwise, you will fail to cause an outload if you're running in a world-swap debugger. MicrocodeType: TYPE = MicrocodeBooting.MicrocodeType; -- = { altoMesa, lisp, smalltalk76, smalltalk80, pilotMesa, cedarMesa } BootFileNumber: TYPE = MicrocodeBooting.BootFileNumber; BootFile: TYPE = RECORD[file: File.Capability, firstPage: File.PageNumber _ 0]; Switches: TYPE = TemporaryBooting.Switches; defaultSwitches: TemporaryBooting.Switches = TemporaryBooting.defaultSwitches; nullMicrocode: BootFileNumber = MicrocodeBooting.nullBootFileNumber; nullBootFile: BootFile = [file: File.nullCapability]; nullVolume: Volume.ID = Volume.nullID; Bootee: TYPE = RECORD[ SELECT type: * FROM bootButton => NULL, microcode => [ bfn: BootFileNumber _ nullMicrocode ], physical => [ volume: Volume.ID _ nullVolume ], logical => [ volume: Volume.ID _ nullVolume ], file => [ file: BootFile ], inload => [ file: BootFile ], ENDCASE ]; Boot: PROC[boot: Bootee, switches: Switches _ defaultSwitches, outload: BootFile _ nullBootFile]; -- Performs boot. -- If "outload" is not null, first outloads to specified place. Note that in this case, this procedure is a subroutine - it will return after the corresponding inload. -- "switches" is ignored by some variants. (Today, "bootButton" and "microcode".) -- Variant "bootButton" emulates pressing the physical boot button -- Variant "microcode" boots new microcode. Default will use installed disk microcode. -- Variant "physical" boots from the physical volume containg "volume" -- Variant "logical" boots from the specified logical volume. -- Variant "inload" inloads the specified outload file -- Defaulted volume means the current system volume. -- Variant "file" boots from the specified file. GetBootFileNumber: PROC[MicrocodeType] RETURNS[BootFileNumber]; -- Returns the BootFileNumber of the specified microcode for this machine and (in the case of pilotMesa or cedarMesa) for the release of Pilot currently running on this machine. Returns nullBootFileNumber if no such microcode is known to exist. MakeBootable: PROC[BootFile]; -- Prepares a file for booting by installing links in its labels. This must be called after writing the file and before booting it. InstallVolumeBootFile: PROC[BootFile]; -- Set up the file as the one gaining control when the containing (logical) volume is booted InstallPhysicalVolumeBootFile: PROC[BootFile]; -- Set up the file as the one gaining control when the containing (logical) volume is booted. END.