CircuitRewind wrote on 2025-02-07, 05:00:
clb wrote on 2025-02-06, 19:17:
Uploaded a fixed test program now that adds 5 NOP commands after an I/O write, before issuing the next I/O read: https://github.com/juj/crt_terminator/commit/ … 2cfc9ae5R75-R79 . That fixes the test on my 286.
Nope, still lots of "232" in every single returned value.
Hey CircuitRewind,
we now spent the weekend triaging the issue on a new series of motherboards (two XTs, one 286, one 386 with integrated graphics similar to the AST Bravo that you have). After stress testing, we did find some very interesting things, and uploaded a new firmware DV1000-2025.2.9 now, which is available here: https://github.com/juj/crt_terminator/tree/ma … n/firmware/dist
Firmware update instructions are available here: https://oummg.com/manual/#firmware_update
Important: With the new firmware DV1000-2025.2.9, the jumper J1 should be set to 1-2 for normal operation. (The jumper J1 now affects the ISA I/O base address for PALTEST.EXE diagnostics run, and 2-3 is recommended to only be used if issues with 1-2 mode occur - you can give both a test run in PALTEST.EXE)
The attachment j1_set_to_state_12.jpg is no longer available
Here is a more detailed report of our findings, for the curious:
1. Uncovered and fixed a timing issue where CRT Terminator might fail to observe an ISA bus write, if the ISA AEN signal would go high within a single bus clock cycle from the ISA bus IOW signal resetting high.
The attachment iow_aen.png is no longer available
After a number of logic trace captures, we identified a programming error in CRT Terminator firmware, where the IOW and AEN signals were buffered incorrectly. If the motherboard would produce one clock cycle or less time between the two signals changing, CRT Terminator might incorrectly discard the ISA bus write request altogether. This issue was reproduced on a 16MHz 386SX machine with an integrated graphics card, similar to the integrated graphics setup on your system.
This issue was fixed in the DV1000-2025.2.9 firmware, and stress tested on six different motherboards to make sure that CRT Terminator will now correctly buffer the IOW and AEN signals without this issue. We hold hope that this might have been the very bug that your system was experiencing.
2. Added support for detecting ISA I/O bus conflicts.
In a previous comment, a root cause of ISA I/O bus conflicts was hypothesized. A new feature was added to CRT Terminator firmware to allow the card to detect if bus conflicts might occur during the PALTEST.EXE program runtime. New tests were added to the program to report if any other device might attempt to communicate in I/O address area 120h - 12Fh during the test run. Please check out the latest PALTEST.zip build at https://github.com/juj/crt_terminator/tree/main/DOS/bin
If rerunning PALTEST.EXE reports failures during any of the "read/write conflict" tests, try flipping jumper J1 (IOADDR) to state 2-3 (to relocate CRT Terminator from ISA I/O 120h-12Fh to 160h-16Fh), and rerun PALTEST.EXE to see if it helps. If flipping the jumper fixes the test runs to pass, then the root cause strongly looks like an ISA I/O conflict with another device.
If there are inconclusive suspicions of the issue being an ISA I/O bus conflict, the CRTT.EXE config tool has gained two new features to make CRT Terminator disable its 8bpp palette support, and/or disable the ISA I/O address range altogether to make it run in fully "passive" mode, disabling any CRTT->PC communication. This can help troubleshoot the root cause of the original palette flickering, if that still persists in the new firmware. CRTT.EXE can be downloaded in the same repository where PALTEST.EXE resides: https://github.com/juj/crt_terminator/tree/main/DOS
3. Revised ISA DATA and ADDRESS sampling logic to not rely so closely on ISA IOW cycle bus hold times.
In the latest screenshot you sent, we observed that all ISA bus writes failed on the CRT Terminator. While the original failures (where the failures were periodically recurring) look very much like could be caused by the fixed issue 1. above, we were not able to reproduce this complete failure mode of all tests in PALTEST.EXE failing, except by unseating the CRT Terminator card altogether. If this error persists, double check if CRT Terminator might have gotten unseated in the ISA slot, and try other ISA slot. (I know you mention you did try this already, though I was wondering if that was before removing other ISA cards, and unseating other ISA cards might have bumped CRT Terminator loose as well)
Ignoring "unseated card" guess, one hypothesis we had here is with respect to ISA bus DATA and ADDRESS signal timings. The data sheets for ISA bus timing logic mentions that the hold time for DATA and ADDRESS should be long enough to allow these signals to be sampled during IOW low->high edge. In some of traces that we see, this timing is cutting quite close. So we hypothesized whether on your affected system the timings could be skewed just enough so that the hold times do not match.
To guard against this, we added a bit of paranoia handling and revised the DATA and ADDRESS line sampling logic on CRT Terminator to not rely so closely to the specified hold times, but rather the signals are sampled a bit closer to the middle/center of the IOW cycle. If skew or jitter might be the culprit, then this change should help the issue on the new firmware.
Additionally, a self-diagnostics mechanism was added to CRT Terminator HUD to be able to time and report information about the ISA DATA and ADDRESS lines setup and hold with respect to the IOW bus.
If errors persist, if you would be able to make a screenshot or a video while running the command "PALTEST.EXE 15" (i.e. with cmdline argument number 15) while the Developer HUD is open. That will make CRT Terminator self-diagnose the bus timings on the card to see if something uncommon is happening there. A good spot to capture a screenshot will be at the following point:
The attachment PALTEST_15.png is no longer available
with three distinct debug numbers showing on the first line of the HUD (in this case 5, 8 and -0). Those can give a clue for whether there might be something uniquely different occurring on this specific PC.
In summary, we hope that the fixes we did in the new firmware should help things along. I know the description above is a bit much, though hopefully CRT Terminator will start to work just by flashing the new firmware and doing nothing else. In case it doesn't, it would be helpful if you can give another PC a go, and see if it is any different there.
Apologies for all the troubleshooting cycles. Naturally if the card doesn't cooperate even after all these changes, the next steps can be to return the card for our physical inspection to see if there is something wrong in the assembly, and in that case, shipping a new one, or refunding are of course possibilities as well. In such an event, please shoot an email directly at oummgr@gmail.com so we can figure out the next steps.