Firmware: RIOv4_2_patched_31250.bin — wedge fix + SCI retuned to 31250 baud
make_patch.py gains --baud31250: one byte beyond the wedge patch — the SCI init operand at $D62B ($30 -> $02). BAUD $30 = /13 prescale, /1 divider (2MHz E / 208 = 9615); $02 = /1, /4 -> 31250 exactly, 3.3x faster. The init write also confirms the 8MHz crystal, which is why 19200/38400 are unreachable and why 62500/125k are left alone pending an ISR cycle count. - 24 bytes changed vs original (sha256 9f866cf3...); re-disassembly diff vs the classic patched image shows exactly the one operand line, and the classic build still reproduces 3fc8170c... (script regression-safe). - PC side: SerialPortTransport takes an optional baudRate (default 9600, runtime untouched); RioSerialMonitor + --mash accept --baud 31250. - Caveats documented in README/ANALYSIS: non-standard rate (FTDI-class adapters only, no 16550s); native games still speak 9600 so this chip is bench/RIOJoy-only; validate the wedge patch at 9600 first. 275 tests green; mash --selftest regression unchanged (FAIL/exit-1). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,7 @@ internal static class MashTest
|
||||
bool lampEcho = true;
|
||||
double wedgeSec = 2.0;
|
||||
bool selftest = false;
|
||||
int baud = 9600;
|
||||
|
||||
var positional = new List<string>();
|
||||
for (int i = 0; i < args.Length; i++)
|
||||
@@ -63,6 +64,8 @@ internal static class MashTest
|
||||
case "--label" when i + 1 < args.Length: label = args[++i]; break;
|
||||
case "--wedge" when i + 1 < args.Length && double.TryParse(args[i + 1], out double w):
|
||||
wedgeSec = w; i++; break;
|
||||
case "--baud" when i + 1 < args.Length && int.TryParse(args[i + 1], out int b):
|
||||
baud = b; i++; break;
|
||||
default: positional.Add(args[i]); break;
|
||||
}
|
||||
}
|
||||
@@ -96,7 +99,7 @@ internal static class MashTest
|
||||
lock (gate) { Console.WriteLine(msg); logFile.WriteLine(msg); }
|
||||
}
|
||||
|
||||
Raw($"== RIO mash test :: {port} @ 9600 8N1, {seconds}s, chip label '{label}' ==");
|
||||
Raw($"== RIO mash test :: {port} @ {baud} 8N1, {seconds}s, chip label '{label}' ==");
|
||||
Raw($" lamp echo {(lampEcho ? "ON (drives reply/lamp collisions)" : "OFF")}, " +
|
||||
$"wedge threshold {wedgeSec:F1}s, app auto-recovery DISABLED");
|
||||
Raw($" log: {Path.GetFullPath(logPath)}");
|
||||
@@ -104,7 +107,7 @@ internal static class MashTest
|
||||
IRioTransport transport;
|
||||
try
|
||||
{
|
||||
transport = selftest ? new SelftestTransport() : new SerialPortTransport(port);
|
||||
transport = selftest ? new SelftestTransport() : new SerialPortTransport(port, baud);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user