DynaSeer.mesa 
Copyright © 1986 by Xerox Corporation. All rights reserved.
Last Edited by: Louis Monier September 18, 1986 12:47:35 pm PDT
DIRECTORY
Random, Rope;
DynaSeer: CEDAR DEFINITIONS = BEGIN
Theory
We create a typical history of n transactions on the Dynabus.
Types and Constants
ROPE: TYPE = Rope.ROPE;
Opcode: TYPE = {RBRqst, RBRply, WBRqst, WBRply, WSRqst, WSRply, NoOp};
Cycle: TYPE = REF CycleRec;
CycleRec: TYPE = RECORD [
addessCyle: BOOL, -- {Data, Address}
data: INT,  -- 64 bits
master: INT,
cycleNumber: INT
];
Packet, History: TYPE = REF HistoryRec;
HistoryRec: TYPE = RECORD [
SEQUENCE size: NAT OF Cycle
];
DeviceID: TYPE = [0..10];
Length: TYPE = {Zero, Two, Five};
Priority: TYPE = {DisplayLP, CacheRq, IORq, DisplayHP, MemRply, CacheRply};
RequestGrant: TYPE = RECORD[
length: Length ← Zero,  -- written by the device (Zero means not requesting)
pr: Priority ← DisplayLP, -- written by the device
intendedCycle: Cycle ← NIL,  
granted: BOOLTRUE]; -- written by the arbiter
Device: TYPE = REF DeviceRec;
DeviceRec: TYPE = RECORD [
state: REF,
cycle: CycleProc
];
CycleProc: TYPE = PROC [cycle: Cycle];
requests: ARRAY DeviceID OF RequestGrant;
Basic operations
CreateCycle: PROC [opcode: Opcode, owner: INT, requestTime: INT] RETURNS [Cycle];
BusOpToHistory: PROC [busOp: BusOp] RETURNS [h: History];
ConcatHistories: PROC [h0, h1: History] RETURNS [h: History];
CreateHistory: PROC [timeLimit: INT] RETURNS [history: History ← NIL];
END.