<> <> <> DIRECTORY IMSTester: CEDAR DEFINITIONS = BEGIN <> <> <> <> ROPE: TYPE = Rope.ROPE; NSec: TYPE = INT; Groups: TYPE = LIST OF Group; Group: TYPE = REF GroupRec; GroupRec: TYPE = RECORD [ name: ROPE, type: GroupType, channelCount: [0..32], channels: Channels, format: FormatType, delay: NSec, width: NSec, hiDrive: REAL, loDrive: REAL, posPolarity: BOOL, sample: NSec, threshold: REAL, values: Values]; GroupType: TYPE = {Force, Timing, Compare, Acquire, Power}; Channels: TYPE = ARRAY [0..32) OF Channel; Channel: TYPE = RECORD [ slot: Slot, podChannel: PodChannel]; Slot: TYPE = [1..48]; -- Each card slot in the IMS mainframes is numbered starting with the master and continuing with the slaves. PodChannel: TYPE = [0..19); -- 0..7 = A0-A7, 8..15 = B0-B7, 16 = AT, 17 = BT, 18 = V0 FormatType: TYPE = {NRZ, DNRZ, RZ, R1, RC, RI}; Values: TYPE = REF ValuesRec; ValuesRec: TYPE; Sequence: TYPE = [0..196607]; <> Error: SIGNAL [msg: ROPE]; Diagnose: PROC [extended: BOOL _ TRUE]; <> Initialize: PROC; <> DefineGroups: PROC [groups: Groups]; <> SetCyclePeriod: PROC [period: NSec]; PV, PutValue: PROC [group: Group, sequence: Sequence, value: LONG CARDINAL _ 0, mask: LONG CARDINAL _ 0]; <> LoadPattern: PROC [groups: Groups]; Start: PROC; Stop: PROC; Wait: PROC; -- waits for HALT instruction to be executed END.