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; SlotRef: TYPE = REF Slot; PerturbNode: PROC [node: Node, agitator: Slot, evenIfInput: BOOL _ FALSE]; UpdateCurrent: PROC [node: Node, bbTable: PrincOps.BitBltTablePtr, agitator: Slot]; ValueChanged: PROC [node: Node]; Delayed: PROC [n: Node] RETURNS [delayed: BOOL]; ScheduleCell: PROC [Cell]; PreSimple: PROC [cell: Cell, reallyCopy: BOOL _ TRUE]; AllowToModify: PROC [cell: Cell, modifier: CellProc, blindly, mayRescheduleSelf: BOOLEAN _ FALSE]; Test: PROC [sim: Simulation, 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, May 6, 1985 5:24:18 pm PDT To suspend all running, set this; when sampled, Stop will be raised. Events $ChangeEarly, $ChangeLate, $Perturbed, $Found, $NewNodeQ, and $NewNodeUD have: watched: Node, arg: SlotRef (which "caused" event; may be NIL or nilSlot). PerturbPort: PROC [cell: Cell, portIndex: PortIndex, evenIfInput: BOOL _ FALSE]; Recomputes simple node value. Assumes cells linked in proper strength sets. To be called after the user tweaks a node value. The right way to prepare for calling an EvalSimple. Copies newIO to oldIO. Setting reallyCopy to FALSE inhibits the copy. Arrange to call modifier as if it were the cell's evalSimple. If blindly, then don't differentiate --- all ports are assumed to change. 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™5Icode˜KšΟk œœE˜QK˜KšΠbxœœ œ˜K˜Kšœœ ˜K˜KšΟnœœ˜K˜KšŸœœœ˜:šŸœœœ˜=K˜Kšœ œ#˜1—K˜šœœ˜K™D—K˜Kšœ œœ˜˜Kšœ ™ —K˜KšŸ œœ+œœ˜JKšŸ œœ1œœ™PK˜šŸ œœ@˜SK™L—K˜šŸ œœ˜ K™0—K˜KšŸœœ œ œ˜0K˜KšŸ œœ˜K˜šŸ œœœœ˜6K™3K™K™.—K˜šŸ œœ>œœ˜bK™=K™I—K˜š Ÿœœ/œœœ˜HK™cK˜Kšœ œœ˜#šœœœ˜Kšœœœ˜(—K˜šŸœœHœ˜oK˜Kš œ œœœœœ˜=Kšœœ%˜;K˜Kšœ"œœ˜0——K˜šŸœœœœœœœœœœœ˜ZK™'—K˜šŸœœœœ˜DKšœ]™]—K˜Kšœ˜—…—ͺ ,