DIRECTORY DM, DMProcessorModel, DMPBusModel; DMProcessorModelImpl: CEDAR PROGRAM IMPORTS DM, DMPBusModel EXPORTS DMProcessorModel = BEGIN OPEN DMProcessorModel; Create: PUBLIC PROC [commandList: LIST OF ProcessorCommand _ NIL, pbus: DM.Component] RETURNS [processor: DM.Component] = { processor _ NEW [DM.ComponentRec _ [ action: [Reset, PhA, EvPhA, PhB, EvPhB], history: NIL, componentType: $Processor, subComponents: NIL, specific: NEW [ProcessorSpecificRec _ [commandList: commandList, pbus: pbus]]]] }; EmptyCommandList: PUBLIC SIGNAL = CODE; PhA: DM.ActionProc = { ps: ProcessorSpecific _ NARROW[component.specific]; IF ps.commandList = NIL THEN SIGNAL EmptyCommandList[]; DMPBusModel.DrCmd[ps.pbus, ps.commandList.first.cmd]; DMPBusModel.DrData[ps.pbus, ps.commandList.first.adrs] }; EvPhA: DM.ActionProc = { }; PhB: DM.ActionProc = { ps: ProcessorSpecific _ NARROW[component.specific]; IF ps.commandList.first.cmd = Store THEN DMPBusModel.DrData[ps.pbus, ps.commandList.first.data] }; EvPhB: DM.ActionProc = { ps: ProcessorSpecific _ NARROW[component.specific]; IF DMPBusModel.Reject[ps.pbus] THEN component.history _ DM.ConsHistory[EvPhB, ps.commandList.first, component.history] ELSE { IF ps.commandList.first.cmd = Fetch THEN ps.commandList.first.data _ DMPBusModel.Data[ps.pbus]; component.history _ DM.ConsHistory[EvPhB, ps.commandList.first, component.history]; ps.commandList _ ps.commandList.rest }; }; Reset: DM.ActionProc = { }; END. ’DMProcessorModelImpl.mesa Written By: Jean Vuillemin and Pradeep Sindhu Last Edited By: Pradeep Sindhu September 2, 1985 10:41:20 pm PDT Κ|˜šœ™J™-J™@—J™codešΟk ˜ Kšœ˜Kšœ˜Kšœ ˜ K˜—šΟbœ˜#Kšœœ ˜Kšœœœ˜7K˜•StartOfExpansionS -- [cache: CacheModels.Cache, addr: DragOpsCross.Word, fromJump: BOOL _ FALSE] -- šΟnœœœœœœœ œ œ˜{šœ œœ˜$Kšœ(˜(Kšœ œ˜ K˜Kšœœ˜Kšœ œB˜O—K˜—K˜Kšžœœœœ˜'K˜šžœœ˜Kšœœ˜3Kšœœœœ˜7Kšœ5˜5Kšœ6˜6K˜K˜—šžœœ˜K˜K˜—šžœœ˜Kšœœ˜3šœ!˜#Kšœ7˜;—K˜K˜—šžœœ˜Kšœœ˜3šœ˜Kšœœ<˜Wšœ˜šœ!˜#Kšœ7˜;—Kšœœ=˜SKšœ$˜$K˜——K˜K˜—šžœœ˜K˜—K˜Kšœ˜—J™—…—ΆΔ