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; PreSimple: PROC [cell: Cell, reallyCopy: BOOL _ TRUE]; 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. 0RoseRun.mesa Last Edited by: Spreitzer, October 9, 1984 1:53:46 pm 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. NewToOld: PROC [cell: Cell]; Copies newIO to oldIO The right way to prepare for calling an EvalSimple. Copies newIO to oldIO, and on specials sets UD to [none, none] and Val from node. 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. Called as if it were the cell's evalSimple: may read and modify newIO, affecting simple and special ports. 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™9Icode˜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˜šŸ œœœœ˜6K™3K™QK™.—K˜šŸ œœ@œœ˜dK™=K™IK˜š Ÿ œœœœ œœ˜GK™jK™T——K˜š ŸœœDœœœ˜]K™cK˜Kšœ œœ˜#šœœœ˜Kšœœœ˜(—K˜šŸœœHœ˜oK˜Kš œ œœœœœ˜=Kšœœ%˜;K˜Kšœ"œœ˜0——K˜šŸœœœœœœœœœœœ˜ZK™'—K˜šŸœœœœ˜DKšœ]™]—K˜Kšœ˜—…—¨ ½