| MemBurnin.burdock, HGM, 23-Apr-85 18:17:22 |

| Setup for 1 board.  Quits after 100 errors.  Output to MemBurnin.log. |


Boot[];
Load[MemTest];


		CP[00, 0]! sticky ← FFFF;
		
errorCount=	CP[00, 0]! errorCount ← 0;
passCount=	CP[01, 0]! passCount ← 0;

lowBank=	CP[03, 0]! lowBank ← 0;
highBank=	CP[04, 0]! highBank ← 7;

address=	CP[07, 0]! $address;
expected=	CP[08, 0]! expected;
found=		CP[09, 0]! found;
		CP[0A, 0]! found2;
		CP[0B, 0]! found3;
diff=		CP[0C, 0]! diff ← 0;
picked=		CP[0D, 0]! picked ← 0;
dropped=	CP[0E, 0]! dropped ← 0;

toCommand=	CP[10, 0]! toCommand ← 0;
toData=		CP[11, 0]! toData ← 0;
toAddr=		CP[12, 0]! $toAddr ← 0;

pc=		CP[00, 2]! .TPC 0;
reason=		CP[01, 2]! reason;

Break[DataMismatchButNoParityError];
Break[DataMismatchAndParityError];
Break[MesaIntIsProbablyAParityError];
Break[AnotherGoodPass];			| reason = 1 |
Break[AnotherHundredGoodPasses];	| reason = 2 |

OpenToAppend["MemBurnin.log"];
WriteTime[];
Write["  Start of Memory burnin test.  LowBank = "];
WriteLoc[lowBank];
Write[", HighBank = "];
WriteLoc[highBank];
WriteLine["."];
WriteLine[];
Close[];
SetMP[passCount];

Loop:
  Continue[0];
  SetMP[passCount];
  IF reason = 1 { GOTO[Loop]; };
  OpenToAppend["MemBurnin.log"];
  IF reason = 2 {
    WriteTime[];
    WriteLine["  Another hundred good passes."];
    Close[];
    GOTO[Loop]; };
  IF errorCount = 1 {WriteLine["                   Err Pass    Addr  Exp  Fnd Diff Pick Drop   Cmd Data ToAddr  Reason"];};
  WriteTime[];
  WriteLoc[errorCount, 4];
  WriteLoc[passCount, 5];
  WriteLoc[address, 8];
  WriteLoc[expected, 5];
  WriteLoc[found, 5];
  WriteLoc[diff, 5];
  WriteLoc[picked, 5];
  WriteLoc[dropped, 5];
  WriteLoc[toCommand, 6];
  WriteLoc[toData, 5];
  WriteLoc[toAddr, 7];
  Write["  "];
  WriteLoc[pc];
  WriteLine[];
  Close[];
  IF errorCount < 100 {GOTO[Loop];};