[Indigo]<Rosemary>2.6>Rosemary.DF=>SwitchTypes.Mesa
Last Edited by: Spreitzer, July 2, 1984 2:20:12 pm PDT
DIRECTORY RoseTypes;
SwitchTypes: CEDAR DEFINITIONS =
BEGIN OPEN RoseTypes;
bitType: NodeType;
Bundle: PROC [bits: CARDINAL] RETURNS [NodeType];
IsSwitchType: PROC [NodeType] RETURNS [BOOLEAN];
SwitchVal: TYPE = MACHINE DEPENDENT RECORD [
s: PACKED ARRAY StrengthIndex OF Strength ← ALL[none],
val: Level ← X,
pad: [0 .. 4) ← 0];
StrengthIndex: TYPE = {q, u, d};
Strength: TYPE = {none, chargeWeak, charge, chargeStrong, driveWeak, drive, driveStrong, input};
Level: TYPE = {L, H, X};
X means completely unknown level (as opposed to meaning something between low and high).
refInput, refDriveStrong, refDrive, refDriveWeak, refChargeStrong, refCharge, refChargeWeak, refNone: REF Strength;
switchValsPerWord: INTEGER = 240/SIZE[PACKED ARRAY [0 .. 240) OF SwitchVal];
bitsPerSwitchVal: INTEGER = 16;
bitsPerSwitchValFiller: INTEGER = 16 - bitsPerSwitchVal;
SwitchValHolder: TYPE = MACHINE DEPENDENT RECORD [
fill(0:0..bitsPerSwitchValFiller-1): SwitchValFiller,
held(0:16-bitsPerSwitchVal..15): SwitchVal];
SwitchValFiller: TYPE = [0..TwoToThe[bitsPerSwitchValFiller]);
Block: PROC [a, b: Strength] RETURNS [c: Strength];
SetCapacitance: PROC [n: Node, cap: REAL];
GetCapacitance: PROC [n: Node] RETURNS [cap: REAL];
SetSizes: PROC [n: Node, currentSize, normalSize: Strength];
GetSizes: PROC [n: Node] RETURNS [currentSize, normalSize: Strength];
END.