<> <> DIRECTORY Rope; ChipTest: CEDAR DEFINITIONS = BEGIN <> Byte: TYPE = [0..377B]; Channel: TYPE = [0..119]; ByteIndex: TYPE = [0..LAST[Channel]/8]; WordIndex: TYPE = [0..LAST[Channel]/16]; ChannelVec: TYPE = PACKED ARRAY Channel OF BOOL _ ALL[FALSE]; ChannelVecRef: TYPE = REF READONLY ChannelVec _ NIL; RWChannelVecRef: TYPE = REF ChannelVec _ NIL; trues, falses: ChannelVecRef; ChannelByteVec: TYPE = PACKED ARRAY ByteIndex OF Byte _ ALL[0]; ChannelWordVec: TYPE = PACKED ARRAY WordIndex OF WORD _ ALL[0]; NSec: TYPE = INT; TesterOb: TYPE = RECORD [ d, a, b: RWChannelVecRef _ NIL, writeR: PROC [ t: Tester, reg, value: WORD ] _ NIL, flush: PROC [ t: Tester ] _ NIL, readI: PROC [ t: Tester ] RETURNS [ ChannelVec ] _ NIL, data: REF]; Tester: TYPE = REF TesterOb; <<>> Initialize: PROC [t: Tester, aToB, aToI: NSec _ 100]; PutABDelay, PutAIDelay: PROC [ t: Tester, d: NSec ]; PutDisables, PutABuf, PutBBuf: PROC [ t: Tester, p: ChannelVecRef, makeBufWindow: BOOL _ FALSE ] RETURNS [ window: Tester ]; GetDisables, GetABuf, GetBBuf, GetIBuf: PROC [ t: Tester ] RETURNS [ ChannelVecRef ]; Step: PROC [ t: Tester ]; CheckResult: TYPE = RECORD [checkId: NAT, window: Tester]; CheckI: PROC [ t: Tester, expected: ChannelVecRef, mask: ChannelVecRef _ NIL, makeBufWindow: BOOL _ FALSE ] RETURNS [CheckResult]; CheckFailure: ERROR [ checkId: CARDINAL, mask, expected, was: ChannelVecRef, errChannel: Channel ]; IllegalOp: ERROR; <> OpenTester: PROC [ server: Rope.ROPE _ NIL -- NIL means this machine -- ] RETURNS [ Tester ]; <<>> <> <> OpenBuffer: PROC [ base: Tester _ NIL ] RETURNS [ Tester ]; ExecuteBuffer: PROC [ t: Tester ]; <> DIP: PROC [pin: [1..120], size: [1..120] _ 120, pin1: [1..60] _ 1] RETURNS [Channel]; DIP8: PROC [pin: [1..8]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 8]]}; DIP14: PROC [pin: [1..14]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 14]]}; DIP16: PROC [pin: [1..16]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 16]]}; DIP20: PROC [pin: [1..20]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 20]]}; DIP22: PROC [pin: [1..22]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 22]]}; DIP24: PROC [pin: [1..24]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 24]]}; DIP28: PROC [pin: [1..28]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 28]]}; DIP40: PROC [pin: [1..40]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 40]]}; DIP48: PROC [pin: [1..48]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 48]]}; DIP64: PROC [pin: [1..64]] RETURNS [Channel] = INLINE {RETURN[DIP[pin, 64]]}; StaggeredDIP64: PROC [pin: [1..64]] RETURNS [Channel]; Leadless84: PROC [pin: [1..84]] RETURNS [Channel]; PinGridArray132: PROC [pin: [1..132]] RETURNS [Channel]; END.