DIRECTORY Basics, 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}; refInput, refDriveStrong, refDrive, refDriveWeak, refChargeStrong, refCharge, refChargeWeak, refNone: REF Strength; switchValsPerWord: INTEGER = 480/SIZE[PACKED ARRAY [0 .. 480) OF SwitchVal]; bitsPerSwitchVal: INTEGER = 16; bitsPerSwitchValFiller: INTEGER = Basics.bitsPerWord - bitsPerSwitchVal; wordsPerSwitchValPort: INTEGER = (bitsPerSwitchVal + bitsPerSwitchValFiller) / Basics.bitsPerWord; SwitchValHolder: TYPE = MACHINE DEPENDENT RECORD [ held(0:Basics.bitsPerWord-bitsPerSwitchVal..Basics.bitsPerWord-1): 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. J[Indigo]2.6>Rosemary.DF=>SwitchTypes.Mesa Last Edited by: Spreitzer, January 12, 1985 1:30:24 pm PST X means completely unknown level (as opposed to meaning something between low and high). 480 is GCD [Floor[32/1], Floor[32/2], Floor[32/3], ... Floor[32/32]]. fill(0:0..bitsPerSwitchValFiller-1): SwitchValFiller, Κ– "cedar" style˜J™3J™:J˜IcodešΟk œ˜K˜KšΠbx œœ œ˜ K˜Kšœœ ˜K˜K˜K˜KšΟnœœœœ ˜1K˜KšŸ œœ œœ˜0K˜š œ œœ œœ˜,Kš œœœœ œ˜6Kšœ œ˜Kšœ˜—K˜Kšœœ ˜ K˜Kšœ œR˜`K˜š œœœœœ˜K™X—K˜Kšœfœ ˜sK˜š œœœœœ œ ˜LK™E—K˜Kšœœ˜Kšœœ)˜HK˜KšœœD˜bK˜š œœœ œœ˜2Kšœ5™5KšœN˜N—K˜Kšœœ)˜>K˜KšŸœœœ˜3K˜KšŸœœœ˜*KšŸœœ œœ˜3K˜KšŸœœ.˜