RayeR wrote on Yesterday, 17:14:
I focused a bit on the refresh you told...
In datasheet I can see that 4Mx4 DRAMs usually have 2 048-Cycle Refresh in 32 ms for TMS417400A
So I tried to watch A10 an A9 lines on SIMM socket. I put CPU in HLT so it wouldn't be disturbed by memory access from BIOS/DOS.
That's a good way to test the refresh pattern.
RayeR wrote on Yesterday, 17:14:
Then I can clearly see 15us pulses. One setting matters - hidden refresh. If enabled, then A10 goes to 0 all the time and refresh pulses are only at A9. When disabled, there are pulses at both pins.
With hidden refresh enabled, the address pins do no longer matter. So with hidden refresh enabled, you should be fine no matter what the board does, because hidden refresh is a variant of CBR (CAS before RAS) refresh, which can be performed in parallel with a useful memory access. The idea of hidden refresh is that on the last cycle that hits a page, you negate /RAS right after asserting /CAS. Asserting /CAS will put the final nibble of data into the output latches while negating /RAS allows you to assert /RAS again with /CAS still active, which will trigger a CBR refresh and refresh the "next row that is due" using a row counter integrated into the memory chip. You should verify whether your chipset actually does CBR refresh with hidden refresh enabled. You can scope /RAS and /CAS on your two channels, and check whether /CAS goes low first, as required for CBR.
Furthermore, if A10 pulses high on every refresh with hidden refresh disabled, this is a problem. you expect 16ms of refresh cycles with A10 being low (no pulses, if your system has A10 low while it is idle) followed by 10ms of refresh cycles with A10 being high (during the refresh cycle, so you will see pulses). If A10 is high on every refresh cycle for standard /RAS-only refresh, only the "upper half" of the RAM will be refreshed. I assume that hidden refresh disabled causes /RAS-only refresh (no pulses on /CAS at all).
I had no issues using 3-chip 4-MByte SIMMs on a TOPCAT 80386SX board, so either you are having really bad luck with the chipsets you tried, or your modules behave strange.
Regarding the NMI/parity issue: You should check whether your SIMMs are nonconformant and bridge parity in (pin 29) to parity out (pin 26). This is typically not an issue on 486 boards, as 486 processors use bidirectional parity pins and have the parity comparator integrated in the processor, whereas 386 boards might connect the output of an 9-bit parity generator permanently to "parity in", while "parity out" is gated as 9th input to the parity generator only on read cycles, in which the output of the parity generator is used as NMI signal. Feeding back the parity generator output to its input through a bridge on the SIMM during read cycles can cause invalid behaviour. Nonconformant SIMMs bridging pin 29 to 26 would be a perfect explanation why they refuse to work in mostly anything before chipsets that support 486 processors.