Emulator: parity-safe EMU8000 sample counter -- AWEUTIL runs; wire the
VGL_LABS cockpit test suite as pod-launch 'test' mode The WC hang, root-caused in three layers (each necessary): 1. WC was rendered-samples + 100ms-capped interpolation; AWEUTIL's poll storm (~550k port-ops/s) starved the render thread of awe_lock, so the clock crawled ~90x slow. Fixed: free-running host-clock derivation + a fairness gate so the render thread can always take the lock. 2. Free-running at true 44.1kHz still failed: trapped port reads cost ~30us -- MORE than one 22.7us tick -- so consecutive reads skipped counter values, and AWEUTIL's WaitUntilWC (decoded at COM offset 0x5F42) exits only on EQUALITY with a target tick: skipped value = missed target = 1.49s wrap penalty, or forever. 3. Advancing +1 per read still failed: WaitUntilWC reads WC TWICE per iteration, so its equality sample saw only every 2nd value -- wrong parity = infinite loop. Final semantics: during a poll storm the counter advances once per FOUR reads (every value observable by all of AWEUTIL's loop shapes; its 8192-unchanged-reads dead-clock bailout never trips), and resyncs to true wall time after any 50ms idle gap. Result: the full stock TEST.BAT (DIAGNOSE + AWEUTIL /S on both cards) completes in seconds. Also: pod-launch 'test' mode -> vwetest.conf (stock TEST.BAT -> TSTALL), DOSBox window defaults to 900,600 in test mode (the DOS screen is the suite's UI), VWE_AWE_LOG gains storm bursts with guest cs:ip + caller and rare-read tracing (the instrumentation that cracked this). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,7 @@ layout is fixed at `postinstall` time, so a typical call is just `pod-launch bt`
|
||||
|---|---|---|
|
||||
| `bt` | BattleTech, networked cockpit (`net_loop.conf`, looped) | wired |
|
||||
| `rp` | Red Planet, networked cockpit (`net_rp.conf`, looped) | wired |
|
||||
| `test` | VGL_LABS factory cockpit test suite (`vwetest.conf` → `C:\VWETEST` → `TSTALL.EXE`): RIO, plasma, audio, video/Division calibration, Munga-net. DOSBox window defaults to 900,600 (the DOS screen is the suite's UI) | wired |
|
||||
| `review` | mission-review PLAYBACK of `last.spl` | recognized, exits 3 (DOS arg TBD) |
|
||||
| `test-plasma` | plasma-display diagnostic | recognized, exits 3 |
|
||||
| `reset-rio` | RIO reset diagnostic | recognized, exits 3 |
|
||||
|
||||
Reference in New Issue
Block a user