e0test: check-exchange acceptance stage for edit 6; record RC1 first-light

After the flip leaves counters over threshold, the tool now sends a
CheckRequest (ACKing every status frame) — edit-6 chips must repaint
and re-render the E0 readout; 04000000 marks a pre-rc1 chip. Analysis
records the stock-chip archaeology (stock also leaves 04000000, but the
ungated E0 readout papered over it in period — our fixes exposed it)
and RC1's below-threshold first-light PASS (version+check -> F0).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-19 16:29:16 -05:00
co-authored by Claude Fable 5
parent 2ef632a1c2
commit 83341f1ec0
2 changed files with 34 additions and 4 deletions
+20 -1
View File
@@ -125,8 +125,10 @@ internal static class E0Test
{
if (--frameCountdown > 0) continue;
repliesSeen++;
if (ackMode == AckMode.Immediate && !ackSent)
if (ackMode == AckMode.Immediate)
{
// ACK every completed frame (check replies
// arrive as several 0x85 frames in a row).
ackSent = true;
respond = 0xFC;
}
@@ -204,6 +206,23 @@ internal static class E0Test
for (int k = 0; k < flipEvents && ok; k++)
ok = await RunEvent(AckMode.Never, "flip");
if (ok)
{
// Edit-6 acceptance (rc1/RIO4.3 chips): a CheckRequest self-test
// must repaint the display afterwards — F0000000 when healthy,
// or the E0 readout when counters are over threshold (they are
// now, after the flip). Chips without edit 6 show 04000000 here.
PhaseReset(AckMode.Immediate, 0x85, 4); // check replies: cmd+2+ck
await transport.WriteAsync(new byte[] { 0x80, 0x00 }, CancellationToken.None);
byte[] chk = await Collect(4000, _ => false); // self-test ~1-2s, lamps flash
int checkReplies = Count(chk, 0x85);
Console.WriteLine($"[check ] CheckRequest sent: self-test ran (lamps flash), {checkReplies} status frame(s).");
Console.WriteLine($" Edit-6 chips repaint, then re-render the over-threshold E0 readout.");
Console.WriteLine($" >>> DISPLAY SHOULD NOW READ: {Expected(cycles, teardowns)} (may run one higher in the last pair;");
Console.WriteLine($" 04000000 here = no edit 6 on this chip) <<<");
await Task.Delay(3000);
}
Console.WriteLine();
Console.WriteLine("== done ==");
Console.WriteLine($" final predicted counters: $3184=${cycles:X2} $3185=${teardowns:X2} -> display {Expected(cycles, teardowns)}");