DIRECTORY Buttons, ChoiceButtons, Core, CoreFlat, HashTable, IO, PlotGraph, Ports, Rosemary, ViewerClasses;

RosemaryUser: CEDAR DEFINITIONS = BEGIN

ROPE: TYPE = Core.ROPE;
DisplayViewer: PROC [simulation: Rosemary.Simulation, cellType: Core.CellType, name: ROPE _ NIL, displayWires: CoreFlat.FlatWires _ NIL, graphWires: CoreFlat.FlatWires _ NIL] RETURNS [handle: RoseDisplay];

LogSettle: PROC [handle: RoseDisplay, time: INT];

UpdateDisplay: PROC [handle: RoseDisplay];

InitializeDeltas: PROC [handle: RoseDisplay];

RecordDelta: PROC [handle: RoseDisplay, wire: Rosemary.RoseWire, time: INT];

DeltaFinished: PROC [handle: RoseDisplay, time: INT];

WireTimeValue: PROC [handle: RoseDisplay, flatWire: CoreFlat.FlatWire, time: INT] RETURNS [value: Ports.LevelSequence];

TestProcedureViewer: PROC [cellType: Core.CellType, testButtons: LIST OF ROPE, name: ROPE _ NIL, displayWires: CoreFlat.FlatWires _ NIL, graphWires: CoreFlat.FlatWires _ NIL, cutSet: CoreFlat.CutSet _ NIL, historySize: NAT _ 0, steady: BOOL _ FALSE, recordDeltas: BOOL _ TRUE] RETURNS [tester: Tester];

StartTest: PROC [tester: Tester];

SetProceedUntil: PROC [tester: Tester, count: INT];

RegisterTestProc: PROC [name: ROPE, proc: TestProc];

TestProc: TYPE = PROC [cellType: Core.CellType, p: Ports.Port, Eval: PROC [memory: BOOL _ TRUE]];

DisplayPortLeafWires: PROC [root: Core.CellType, flatCell: CoreFlat.FlatCellTypeRec _ CoreFlat.rootCellType] RETURNS [displayWires: CoreFlat.FlatWires];

AddWireToPlot: PROC [handle: RoseDisplay, wire: CoreFlat.FlatWire] RETURNS [msg: Core.ROPE _ NIL];

RemoveWireFromPlot: PROC [handle: RoseDisplay, wire: CoreFlat.FlatWire] RETURNS [found: BOOL _ FALSE];

Tester: TYPE = REF TesterRec;
TesterRec: TYPE = RECORD [
intermediatePort: Ports.Port _ NIL,
runState: ViewerClasses.Viewer _ NIL,
evalsSinceStart: ViewerClasses.Viewer _ NIL,
evalSinceStartCount: INT,
proceedUntil: ViewerClasses.Viewer _ NIL,
evalUntil: INT,
historyTrigger: ViewerClasses.Viewer _ NIL,
historyTriggerCount: INT,
currentStatePoint: NAT _ 0,
displayedStatePoint: NAT _ 0,
validStates: NAT _ 0,
historySize: NAT _ 0,
testVectorBuffer: Rosemary.PortSequence _ NIL,
proceed: CONDITION,
testStarted: BOOL _ FALSE,
waiting: BOOL _ FALSE,
abort: BOOL _ FALSE,
interrupt: BOOL _ FALSE,
singleEval: BOOL _ FALSE,
testButtonList: LIST OF Buttons.Button,
currentTestProc: ROPE _ NIL,
display: RoseDisplay _ NIL,
steadyInit: BOOL _  TRUE,
recordDeltas: BOOL _  TRUE];

RoseDisplay: TYPE = REF RoseDisplayRec;
RoseDisplayRec: TYPE = RECORD [
name: Core.ROPE _ NIL,
cellType: Core.CellType,
simulation: Rosemary.Simulation,
displayWires: LIST OF ChoiceButtons.PromptDataRef _ NIL,
tsin: IO.STREAM _ NIL,
tsout: IO.STREAM _ NIL,
path: ViewerClasses.Viewer _ NIL,
currentWire: ViewerClasses.Viewer _ NIL,
plot: PlotGraph.Plot _ NIL,
ps: IO.STREAM _ NIL,
psLock: BOOL _ FALSE,
psWait: CONDITION,
psHash: HashTable.Table _ NIL,
lastValidTime: INT _ -1,
wDir: REF ANY _ NIL,
logChanges: BOOL _ FALSE,
cutSet: CoreFlat.CutSet _ NIL];

END.

��r��RosemaryUser.mesa
Copyright c 1985, 1986 by Xerox Corporation.  All rights reserved.
Barth, February 17, 1987 10:58:08 am PST
Bertrand Serlet October 17, 1986 10:03:12 pm PDT
Client Controlled Simulations
Same as Rosemary.Settle but pays attention to the log button and records changes.
Resets the initial state of all the wires to the current state.
Must be called from a Rosemary.UpdateProc if plotting is to be used.
Says that data is valid up to time.
Gets the value of the wire.  May raise Rosemary.NotInstantiated.
Test Procedure Simulations
Wire Display
Data Structures
Not intended to be understood by clients.

Ê¥��˜�codešœ™Kšœ
Ïmœ7™BK™(K™0—K˜�šÏk	œ4žœ,˜kK˜�—KšÏnœžœžœž˜'K˜�Kšžœžœžœ˜head™šŸ
œžœBžœžœ%žœ#žœžœ˜ÍJ˜�—šŸ	œžœžœ˜1J™QJ˜�—šŸ
œžœ˜*J˜�—šŸœžœ˜-J™?J˜�—šŸœžœ6žœ˜LJšœD™DJ˜�—šŸ
œžœžœ˜5J™#J˜�—šŸ
œžœ:žœžœ˜wKšœ@™@K˜�——™š Ÿœžœ(žœžœžœžœžœ%žœ#žœžœžœžœžœžœžœžœ˜®K˜�—šŸ	œžœ˜!J˜�—šŸœžœžœ˜3J˜�—šŸœžœžœ˜4J˜�—š
œ
žœžœ*Ÿœžœ	žœžœ˜aK˜�——™šŸœžœSžœ$˜˜K˜�—š
Ÿ
œžœ0žœžœžœ˜bK˜�—š
Ÿœžœ0žœ	žœžœ˜fK˜�——™K™)K™�Kšœžœžœ˜procšœžœžœ˜Kšœžœ˜#Jšœ!žœ˜%Jšœ(žœ˜,Jšœžœ˜Jšœ%žœ˜)Jšœžœ˜Jšœ'žœ˜+Jšœžœ˜Jšœžœ˜Jšœžœ˜Jšœ
žœ˜Jšœ
žœ˜Jšœ*žœ˜.Jšœ	ž	œ˜Jšœ
žœžœ˜Jšœ	žœžœ˜Jšœžœžœ˜Jšœžœžœ˜Jšœžœžœ˜Jšœžœžœ˜'Kšœžœžœ˜Kšœžœ˜Kšœžœžœ˜Kšœžœžœ˜K˜�—Jšœ
žœžœ˜'šœžœžœ˜Jšœžœžœ˜Kšœ˜Jšœ ˜ Jšœžœžœžœ˜8Kšœžœžœžœ˜Kšœžœžœžœ˜Kšœžœ˜!Kšœ$žœ˜(Kšœžœ˜Kšœžœžœžœ˜Jšœžœžœ˜Jšœž	œ˜Jšœžœ˜Kšœžœ˜Kšœžœžœž˜Kšœžœžœ˜Kšœžœ˜J˜�——Jšžœ˜J˜�—�…—����Ì��ã��