VOGONS


First post, by Deunan

User metadata
Rank l33t
Rank
l33t

This is the mobo in question: https://stason.org/TULARC/pc/motherboards/U/U … OPTI-386WB.html

I bought it cheap as not working, surely enough there was some battery corrosion but nothing serious. I cleaned it and replaced the external battery pin header and keyboard socket but all in all it'd work as-is if not for a broken trace (A4 line to the BIOS ROM) that somebody had probably gouged with a screwdriver. It works fine now, well except if any NPU (co-processor) is installed. BTW this mobo uses semi-permanent CPU clock of 33MHz that would require replacing the clock generator to get something different.

With NPU in socket funny things happpen, depending on what CPU is installed:
* Intel 386DX [CHIP ID: 0308, should be D2 stepping] - works fine
* Cyrix 486DLC - works fine
* TI 486SXL - works fine
* TI 486DLC - will POST but hangs on any x87 instruction that requires the CPU to monitor BUSY signal
* AMD 386DX [CHIP ID: 0305, should be D0 stepping] - hangs on POST unless I disable numeric processor detection in BIOS, will still hang on any app trying to use or even detect one

Very rarely the AMD/TI chips that hang will boot (I lost count of tries, many) and/or let me run x87 code. Might hang eventually though and will never finish Quake timedemo.
I looked at the signals between NPU and CPU, most are directly connected but some pass through the chipset. When the hangs occurs the NPU BUSY# output is 0V, so active, so that's what hangs the CPU but it shouldn't be a permanent state. I suspect the CPU (or more likely the chipset) is not properly driving bus signals on previous x87 instruction - perhaps the NPU has not received all data so it waits for that to complete? It looks like some sort of timing issue between CPU, NPU and then chipset.

Ah, and it's not the BIOS either. Mobo came with 05/05/91 version, tried 07/07/91 one that I had to hack because someone dumped it via software like NSSI and didn't disable shadowing, so it's modified and the checksum doesn't match. Tried MR BIOS as well, looks nice but same story, and neither one has HDD auto-detection or 486DLC support so I'm sticking with the original ROM chip for looks.

My question is has anyone had a problem like this? I've tried several different co-processors (Intel, Cyrix, IIT), doesn't change anything, only the CPU makes a difference. All these CPUs work fine, even at higher speeds (40MHz) with all these NPUs in another, newer mobo. And I have two of the AMD chips (sadly both are the same stepping) so it's not just an issue with a single chip - although one of those seems to boot more frequently then the other. I guess I can look for a different stepping AMD CPU but that costs money so I figured I'd ask here first.

Reply 1 of 3, by Deksor

User metadata
Rank l33t
Rank
l33t

Not sure if that can help, but we've got that board on ultimateretro with pictures https://www.ultimateretro.net/en/motherboards/1481
And we also have one bios. I don't remember how it was dumped however (may be worth to check that it's allright).

Trying to identify old hardware ? Visit The retro web - Project's thread The Retro Web project - a stason.org/TH99 alternative

Reply 2 of 3, by Deunan

User metadata
Rank l33t
Rank
l33t

My mobo looks different to the pictures, it's a perfect match for the drawing on TULARC - that being said there's a couple of clones with that name (the only thing written on the PCB is "386WB" behind ISA slots). You'll be happy to know the BIOS image on Ultimate Retro has correct cheksum, looks properly dumped. It's a 05/05/91 with a dozen or so bytes different to mine so I'm not expecting anything. Will test it later though.

In the meantime the plot thickens:
* AMD D0-step CPUs do usually boot with Intel 387DX, and my own benchmarks seem to run fine, will re-test with Quake to be sure
* AMD D0-step did boot twice with Cyrix FasMath, didn't test more yet (only so many hours in a day)
* TI 486DLC seems to actually work properly with Cyrix FasMath, but I only tested for the obvious hangs, no proper benchmarks were run
* seems I didn't test the combination of TI 486DLC with Intel 387DX, need to do that later as well

I have a B1 step of Intel 386DX but it's a 16MHz rated CPU, it'll only work for some 10s or so on 33MHz clock (and only on first boot when cold), then system becomes too unstable to run anything, or even boot. But I did manage to run a simple freeze-or-not test on x87 detection code and it didn't. Curious, one would think if a timing bug exists in D0 stepping, it would also affect earlier models. Maybe it's D0-specific? I mean Intel went through D0 and D1 before D2 became the final stepping of 386, they surely had a reason to re-spin the D series twice.

Reply 3 of 3, by Deunan

User metadata
Rank l33t
Rank
l33t

Another update, hopefully this helps someone with similar issues.

While doing DLC/SXL chip tests I was using active cooling not to stress them, and then re-used the setup for some 386DX chips. That was a mistake, it made a difference in the results because it seems this is indeed a timing issue between CPU, NPU and the chipset and the temperature does affect things. I had to re-do some of the test to verify this, here's the results:

Am386DX/DXL-33 [0305] - no cooling (~45C):
* Intel A80387DX-33
some apps work but Landmark and Quake hang
* IIT 3C87-40 / IIT ITT 4C87DLC-40
BIOS will usually freeze at POST on math co-processor detection code
* Cyrix CX-83D87-40-GP FASMATH
Landmark FPU score is unstable (you can watch the bar jump in realtime), Quake freezes, my own test shows glitched values

Am386DX/DXL-33 [0305] - active cooling (heatsink+fan):
* Intel A80387DX-33
everything works OK
* IIT 3C87-40 / IIT ITT 4C87DLC-40
kinda works, but not stable
* Cyrix CX-83D87-40-GP FASMATH
Landmark works, Quake will exhibit geometry glitches

Intel A80386DX-16 [0308] (33MHz) - no cooling (~50C):
* Intel A80387DX-33
everything works OK
* IIT 3C87-40 / IIT ITT 4C87DLC-40
everything works OK
* Cyrix CX-83D87-40-GP FASMATH
Landmark and Quake hang right away but it has to be noted this is overclocked CPU, so this is not conclusive

Cyrix Cx486DLC-40GP [0421] (33MHz) - (L1 -m-) no cooling (~60C):
* Intel A80387DX-33
everything works OK
* IIT 3C87-40 / IIT ITT 4C87DLC-40
everything works OK
* Cyrix CX-83D87-40-GP FASMATH
everything works OK

TI 486 SXL-40 [0421] (33MHz) - (L1 -m-) with heatsink (~55C):
* Intel A80387DX-33
everything works OK
* IIT 3C87-40 / IIT ITT 4C87DLC-40
everything works OK
* Cyrix CX-83D87-40-GP FASMATH
everything works OK

TI TX486DLC/E-33GA [0421] - (L1 -m-) no cooling (~65C):
* Intel A80387DX-33
Landmark FPU score is unstable, Quake hangs, so do eventually my own benchmark programs
* IIT 3C87-40 / IIT ITT 4C87DLC-40
all code trying to use NPU will hang the CPU bus, might even freeze at POST
* Cyrix CX-83D87-40-GP FASMATH
Landmark FPU score is unstable and it hangs eventually, Quake hangs

TI TX486DLC/E-33GA [0421] - (L1 -m-) with heatsink (~55C):
* Intel A80387DX-33
Landmark looks OK-ish but Quake still hangs, my own benchmark programs do seem to work OK
* IIT 3C87-40 / IIT ITT 4C87DLC-40
all code trying to use NPU will hang the CPU bus, sometimes a program will work for a bit though
* Cyrix CX-83D87-40-GP FASMATH
Landmark FPU score is unstable, Quake hangs

I should have another (ULSI brand) NPU in a week or two, might test this one as well. In general I would not run SXL chip without any sort of heatsink so that one was tested with it, other chips don't get that hot on their own. I would also not mount any sort of cooling, even passive heatsink, on a 386DX. And keep in mind this was all tested in free air, not in a closed case.

Cyrix chip is problem-free, and I would still put a heatsink on it at the very least if it was to end up in a case. So is TI SXL with heatsink, although for 40MHz bus and closed case I would probably consider a fan as well. Usually I do run it with both even during tests just to avoid stressing and heat cycling everything (it also doesn't help that the usual mobo for testing 386 CPUs that I use had the on-board PQFP 386DX and chipset right next to each other and that tends to really build heat up in that one spot).

Intel D2 stepping seems problem free except with Cyrix FasMath but that can be due to the overclock. Curiously all the chips that worked perfectly are 40MHz rated, running in 33MHz system. I wonder if there's anything to it. Chips rated at 33MHz or less gave me trouble - but only if the co-processor is installed. I didn't notice any instability in Doom tests or otherwise, and I did try less aggresive cache and DRAM timings.