DIRECTORY MicrocodeDefs: FROM "MicrocodeDefs", MiscDefs: FROM "MiscDefs" USING [DestroyFakeModule], Mopcodes: FROM "Mopcodes" USING [zMISC], SegmentDefs: FROM "SegmentDefs"; MicrocodeLoader: PROGRAM IMPORTS MicrocodeDefs, MiscDefs, SegmentDefs EXPORTS MicrocodeDefs = BEGIN InitMicrocode: PUBLIC PROCEDURE = BEGIN IF SegmentDefs.GetMemoryConfig[].AltoType = D0 THEN LoadRam[MicrocodeDefs.MicrocodeImage,TRUE]; END; LoadRamAndJump: PROCEDURE [LONG POINTER, BOOLEAN] = MACHINE CODE BEGIN Mopcodes.zMISC,3; END; LoadRam: PUBLIC PROCEDURE [microcode: PROGRAM,andJump: BOOLEAN _ FALSE] = BEGIN uImageFile: SegmentDefs.FileSegmentHandle; uCode: LONG POINTER; offset: CARDINAL; debug: BOOLEAN _ TRUE; [uImageFile,offset] _ MiscDefs.DestroyFakeModule[LOOPHOLE[microcode]]; SegmentDefs.SwapIn[uImageFile]; uCode _ SegmentDefs.FileSegmentAddress[uImageFile]+offset; debug _ FALSE; LoadRamAndJump[uCode,andJump]; SegmentDefs.Unlock[uImageFile]; SegmentDefs.SwapOut[uImageFile]; END; z18591l3008(635)\f1 279b1B1b13B130b15B84b7B --execute microcode load when this module is STARTed InitMicrocode[]; END. \f1