DIRECTORY IO, List, OrderedSymbolTableRef, PrincOps, Rope, RoseEvents, RoseTypes; RoseRun: CEDAR DEFINITIONS = BEGIN OPEN RoseTypes; Run: PROC [sim: Simulation]; Next: PROC [sim: Simulation] RETURNS [stepType: StepType]; StepSim: PROC [sim: Simulation] RETURNS [stepType: StepType]; StepType: TYPE = {noStep, switchStep, otherStep}; stop: BOOLEAN; ActivityReport: TYPE = REF ActivityReportRep; ActivityReportRep: TYPE = RECORD [ node: Node, socket: Socket]; FindExteriorVicinity: PROC [cell: Cell, index: CARDINAL, evenIfInput: BOOL _ FALSE]; PerturbNode: PROC [node: Node, within: Cell, evenIfInput: BOOL _ FALSE]; PerturbPort: PROC [cell: Cell, index: CARDINAL, evenIfInput: BOOL _ FALSE]; ValueChanged: PROC [node: Node]; ScheduleCell: PROC [Cell]; StrEvals: EvalProcs; StrMirrorEvals: EvalProcs; NewToOld: PROC [cell: Cell]; AllowToModify: PROC [cell: Cell, modifier: ModifyProc, blindly, mayRescheduleSelf: BOOLEAN _ FALSE]; ModifyProc: TYPE = PROC [cell: Cell] RETURNS [subtle: BOOLEAN _ FALSE]; Test: PROC [sim: Simulation, cth: CellTestHandle, parms: TestParms, testData: REF ANY _ NIL]; TestParms: TYPE = REF TestParmsRep; TestParmsRep: TYPE = RECORD [ stopBefore, stopAfter: BOOLEAN _ FALSE]; Eval: PROC [handle: CellTestHandle, returnAfter: ReturnAfter _ returnWhenSettled] RETURNS [happened: StepType]; ReturnAfter: TYPE = PACKED ARRAY MaskableStepType OF BOOLEAN; MaskableStepType: TYPE = StepType[switchStep .. otherStep]; returnWhenSettled: ReturnAfter = [FALSE, FALSE]; DisableableStop: PROC [proc: UNSAFE PROC ANY RETURNS ANY, msg: ROPE, data: REF ANY _ NIL]; DisableThisStop: PROC [fh: PrincOps.FrameHandle] RETURNS [ok: BOOL]; END. ¬RoseRun.mesa Last Edited by: Spreitzer, August 16, 1984 11:48:48 am PDT To suspend all running, set this; when sampled, Stop will be raised. Watching events $SimpleChanged, $NewSpecialSwitchInstructions, or $SwitchChanged (watched = NIL), recieve an ActivityReport as arg. Copies newIO to oldIO This is the right way to alter newIO for random (i.e., other than normal evaluation) reasons. Copies newIO into oldIO, then calls modifier, then cleans up; If blindly, then newIO not copied into oldIO, and all ports are assumed to change. allowed to modify cell's output entries in newIO. needn't first copy into oldIO. Setting subtle forces the cell to be scheduled even if no changes detected in newIO. Calls the Cell's Test proc, possibly surrounded by SIGNAL Stop["About to eval/Just eval'ed", cell]. Raises RoseTypes.Stop, unless disabled. Disables Raising RoseTypes.Stop from PC where DisableableStop.proc is called, in stack of fh. ΚΙ˜Jšœ ™ J™:Icode˜KšΟk œœE˜QK˜KšΠbxœœ œ˜K˜Kšœœ ˜K˜KšΟnœœ˜K˜KšŸœœœ˜:šŸœœœ˜=K˜Kšœ œ#˜1—K˜šœœ˜K™D—K˜Kšœœœ˜-šœœœ˜"K˜ Kšœ˜K˜Kšœƒ™ƒ—K˜Kš Ÿœœœœœ˜TK˜KšŸ œœ)œœ˜HKš Ÿ œœœœœ˜KK˜KšŸ œœ˜ K˜KšŸ œœ˜K˜K˜K˜K˜šŸœœ˜K™—K˜šŸ œœ@œœ˜dK™]K™=K™RK˜š Ÿ œœœœ œœ˜GK™1K™K™T——K˜š ŸœœDœœœ˜]K™cK˜Kšœ œœ˜#šœœœ˜Kšœœœ˜(—K˜šŸœœHœ˜oK˜Kš œ œœœœœ˜=Kšœœ%˜;K˜Kšœ"œœ˜0——K˜šŸœœœœœœœœœœœ˜ZK™'—K˜šŸœœœœ˜DKšœ]™]—K˜Kšœ˜—…—Ž