CacheTesterB.mesa
Last Edited by: Barth, July 30, 1984 7:39:04 pm PDT
DIRECTORY Cache, CacheTester, Dragon;
CacheTesterB: CEDAR PROGRAM
IMPORTS Cache, CacheTester
SHARES Cache, CacheTester =
BEGIN OPEN CacheTester;
Chunk1: PROC = {
OPEN value;
ThreadStart[MCommand, NEW[MCommandRec ← [slave: TRUE, wqCount: 1, wqData: [[shared: TRUE, match: TRUE, WQAddress: 00010030H, WQData0: 00600000H, WQData1: 00600001H, WQData2: 00600002H, WQData3: 00600003H],,,]]]];
C[5];
ThreadStart[MCommand, NEW[MCommandRec ← [slave: TRUE, RQ: TRUE, rqShared: TRUE, rqMatch: TRUE, RQAddress: 00010030H, RQData0: 00600000H, RQData1: 00600001H, RQData2: 00600002H, RQData3: 00600003H]]];
C[6];
ThreadStart[MCommand, NEW[MCommandRec ← [slave: TRUE, WS: TRUE, WSAddress: 00010030H, WSData: 00600004H]]];
C[2];
ThreadStart[MCommand, NEW[MCommandRec ← [slave: TRUE, RQ: TRUE, rqShared: TRUE, rqMatch: TRUE, RQAddress: 00010030H, RQData0: 00600004H, RQData1: 00600001H, RQData2: 00600002H, RQData3: 00600003H]]];
C[6];
ThreadStart[MCommand, NEW[MCommandRec ← [slave: TRUE, CF: TRUE, CFData: 00010000H]]];
C[2];
ThreadStart[PReference, NEW[PReferenceRec ← [command: Store, address: 1, data: 2, rejects: 6, fault: Dragon.Write]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, IOR: TRUE, IOAddress: 0C0H, IOData:00000002H]]];
C[8];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
ThreadStart[PReference, NEW[PReferenceRec ← [command: IOFetch, address: 0, data: 00050000H, rejects: 5]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, IOR: TRUE, IOAddress: 0, IOData: 00050000H]]];
C[8];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
ThreadStart[PReference, NEW[PReferenceRec ← [command: IOStore, address: 2, data: 00050001H, rejects: 5]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, IOW: TRUE, IOAddress: 2, IOData: 00050001H]]];
C[8];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
DoAReset[];
Check that a write single causes master to be reset.
ThreadStart[PReference, NEW[PReferenceRec ← [command: Store, address: 00010000H, data: 00000011H, rejects: 11]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, IOR: TRUE, IOAddress: 000100C0H, IOData:00020000H, RQ: TRUE, RQAddress:00020000H, RQData0: 00000001H, RQData1: 00000002H, RQData2: 00000003H, RQData3: 00000004H]]];
C[14];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
ThreadStart[PReference, NEW[PReferenceRec ← [command: Fetch, address: 00010010H, data: 00000005H, rejects: 6]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, RQ: TRUE, RQAddress:00020010H, RQData0: 00000005H, RQData1: 00000006H, RQData2: 00000007H, RQData3: 00000008H]]];
C[14];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
ThreadStart[PReference, NEW[PReferenceRec ← [command: Fetch, address: 00010020H, data: 00000009H, rejects: 6]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, RQ: TRUE, RQAddress:00020020H, RQData0: 00000009H, RQData1: 0000000AH, RQData2: 0000000BH, RQData3: 0000000CH]]];
C[14];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
ThreadStart[PReference, NEW[PReferenceRec ← [command: Fetch, address: 00010030H, data: 0000000DH, rejects: 6]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, RQ: TRUE, RQAddress:00020030H, RQData0: 0000000DH, RQData1: 0000000EH, RQData2: 0000000FH, RQData3: 00000010H]]];
C[14];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
ThreadStart[MCommand, NEW[MCommandRec ← [slave: TRUE, RQ: TRUE, rqShared: TRUE, rqMatch: TRUE, RQAddress: 00020000H, RQData0: 00000011H, RQData1: 00000002H, RQData2: 00000003H, RQData3: 00000004H]]];
C[6];
ThreadStart[MCommand, NEW[MCommandRec ← [slave: TRUE, WS: TRUE, WSAddress: 00020000H, WSData: 00200001H]]];
C[2];
ThreadStart[PReference, NEW[PReferenceRec ← [command: Fetch, address: 00010040H, data: 00000011H, rejects: 6]]];
ThreadStart[MCommand, NEW[MCommandRec ← [arb: TRUE, RQ: TRUE, RQAddress:00020040H, RQData0: 00000011H, RQData1: 00000012H, RQData2: 00000013H, RQData3: 00000014H]]];
C[14];
P[A]; drive.MCmdAB ← TRUE; MCmdAB ← NoOp; E[]; drive.MCmdAB ← FALSE; F[];
};
END.