DIRECTORY BootFile USING [Location], Commander USING [CommandProc, Register], DeviceCleanup USING [Perform], GermSwap USING [InLoad, Switches], PrincOpsUtils USING [DisableInterrupts], SystemVersion USING [machineType], VMBacking USING [RecoverRealMemory]; PupEtherBoot: CEDAR PROGRAM IMPORTS Commander, DeviceCleanup, GermSwap, PrincOpsUtils, SystemVersion, VMBacking = { Create: Commander.CommandProc = { bootFileNumber: CARDINAL _ GetBootFileNumber[]; switches: GermSwap.Switches; -- defaults location: BootFile.Location _ [ deviceType: ethernet, deviceOrdinal: 0, vp: ethernet [bootFileNumber: bootFileNumber, net: 0, host: 0] ]; switches[l] _ TRUE; switches[f] _ TRUE; TRUSTED { PrincOpsUtils.DisableInterrupts[]; -- make it hold still first VMBacking.RecoverRealMemory[]; -- so that the germ can find it for the next guy. DeviceCleanup.Perform[turnOff]; GermSwap.InLoad[NIL, NIL, 0, @location, switches]; }; }; DontKnowAboutThisTypeOfMachine: ERROR = CODE; GetBootFileNumber: PROC RETURNS [CARDINAL] = { SELECT SystemVersion.machineType FROM dorado => RETURN[45103B]; -- BasicCedarDorado.boot dandelion => RETURN[5200B];-- BasicCedarDLion20.pb ENDCASE => ERROR DontKnowAboutThisTypeOfMachine; }; Commander.Register["PupEtherBoot", Create, "Pup Etherboot this machine."]; }. ΜPupEtherBoot.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Hal Murray, May 24, 1986 11:55:38 pm PDT Check /Indigo/Portola/BootDirectory.txt or /Dexter//Dexter.txt for more info. ΚΒ˜šœ™Icodešœ Οmœ1™Kšœ‘1˜PKšœ˜Kšœžœžœ˜2K˜Jšœ˜J˜—Jšœ žœžœ˜-šŸœžœžœžœ˜.JšœM™Mšžœž˜%Jšœ žœ"˜2Jšœ žœ˜2Jšžœžœ ˜0—Jšœ˜J˜—K˜šœJ˜JJ˜—Jšœ˜J˜J˜J˜——…—œ