VOGONS


List of VLB IDE Controllers

Topic actions

Reply 300 of 305, by davidrg

User metadata
Rank Member
Rank
Member
Babasha wrote on 2025-11-10, 13:54:

Pictures and BIOS attached 😀

Have a nice day))))

One of these! I got three new in box from somewhere around 20 years back. Scanned the manual and put it on The Retro Web a year or two back, but IIRC the driver disk in the box I opened had gone bad and the was missing from the second one I had handy. Sometime I'll have to try and find the third one to see if it has a readable driver disk in it.

Reply 301 of 305, by Disruptor

User metadata
Rank Oldbie
Rank
Oldbie
Babasha wrote on 2025-11-10, 13:54:

Pictures and BIOS attached 😀

Have a nice day))))

Ok, it seems like this BIOS is on theretroweb now too. Thank you.

mkarcher is examining this BIOS now in my VL computer.
As far as we can see now it may make problems with 40 MHz FSB Cyrix processors.

EXP 4044 GREEN BIOS Ver 1.1
Intel 33 ... works
Intel 33 @ 40 ... works
Intel DX2 66 ... works
Cyrix 40 @ 33 ... works
Cyrix 40 ... hangs
Cyrix DX2 80 @ 66 ... works
Cyrix DX2 80 ... hangs
AMD DX4 120 @ 66 ... works
AMD DX4 120 @ 100 ... works
AMD DX4 120 @ 80 ... chip not found
AMD DX4 120 ... chip not found

Timing changes did not make it better.

ST3660A with BIOS buffered read 4950 kB/s
ST3660A without BIOS buffered read 4166 kB/s

That BIOS fakes seek times.
And it looks like our board / that BIOS sometimes says "chip not found" after warm boot, probably during disc access.

mkarcher had more analysis:
Contra: The BIOS shadows its driver and parameter part into conventional RAM, taking 4 kB out of it.
Pro: The routines do 32 bit read to the VL bus. The BIOS area can be mapped as UMB with EMM386, it is no longer needed after shadowing itself.
Summary: BIOS enables 32 bit reads on the VL bus instead of 16 bit reads on the VL bus. The BIOS programs disk speeds up to ~ PIO 3.

I will verify this and try a faster disk soon.

Reply 302 of 305, by mkarcher

User metadata
Rank l33t
Rank
l33t

I reverse engineered the complete initialization code of the BIOS. We started the test of different processors, because I noticed the BIOS contains a processor clock determination function that doesn't check for Cx486 before assuming specific clock cycle counts, so I suspected that function might misbehave with Cyrix processors.

Deeper analysis showed that this function is used to chose one of two parameter sets in the BIOS (actually, the BIOS also contains a third set, which is never used), and it likely is meant to measure the internal CPU clock assuming Intel/AMD timings. If that clock is above 35MHz, the "FSB50 parameter set" is activated; if that clock is lower, the "FSB33 parameter set" is activated. I suspect the third set is a "FSB25 parameter set". The function is implemented quite straight-forward, and the only risk of that function is an integer overflow on division (which will crash the system) if an Intel-equivalent clock exceeding 320MHz is determined. I am quite confident that this is not our issue here.

I strongly suspect the actual issue is marginal timing/signal quality on the VL bus, although I don't quite understand how this could end up in a system that is blocked during POST, but still responds to interrupts (NumLock can be toggled, after 16 keypresses, the keyboard interrupt starts beeping). I'm trying to trace execution of the POST using a logic analyzer clipped to the BIOS chip with L1 disabled in Setup, hoping that I can observe at what point things go wrong.

I am not impressed by some aspects of the coding style of that BIOS. For example, that BIOS uses the classic I/O delay pattern, which IIIRC was already used by IBM in the 5150 BIOS: Place one or multiple copies of JMP $+2 between two port I/O instructions to ensure that the prefetch queue is flushed and re-filled via the front-side bus, which makes back-to-back I/O cycles impossible and provides plenty of recovery time for the accessed resource. This scheme is efficient and effective, but only up to the 80386! Given the pattern "OUT dx, al; JMP $+2; JMP $+2; IN al,dx", the 486 may put the value to be written to that port into its four-stage write buffer, continue executing the "JMP $+2" instructions from L1 cache (without any FSB cycles), and then block on the "IN al, dx" instruction until the write buffer drained. As soon as the write buffer drained, the IN cycle is executed back-to-back with the posted OUT cycle, entirely defeating the purpose of this pattern to prevent back-to-back I/O cycles. I don't expect this pattern is the cause issues I am observing, but seeing this pattern in code specifically targeted to 486 systems (it's a VL controller BIOS!) feels kind of nauseating.

EDIT: I hooked up the logic analyzer to the ROM (which obviously involved re-inserting the VL card another time), swapped the processor back to the Cx486DX2, and now the system works perfectly even at 2*40MHz = 80MHz. Also, the BIOS starts up with a message "Press F5 to skip BIOS installation, or other keys to continue" which is supposed to have a 1 second timeout. That timeout didn't work properly yesterday, but it does today. The timeout is based on polling for a key 500 times with a 2ms delay between attempts; the delay is based on observing the toggling of bit 4 in port 61h, which is supposed to happen at 32kHz, derived from the RAM refresh timer that triggers at 64kHz. With the system working properly now, I tested that "slow refresh" in the chipset options does not affect the rate of that bit, the "divide-by-4" circuit to generate a lower refresh rate is obviously located further down the processing pipeline. The timeout misbehaving yesterday (even with processors listed as "works") points to serious issues on the mainboard - possibly a marginal Opti 82C802 system controller chip. The "beep" for the PC speaker works fine, so we know the PIT works and the 14MHz clock is present. Yet the VLB I/O controller "press F5" time-out based on another PIT output did not work. So definitely take the list of working CPUs with a big grain of salt.

Reply 303 of 305, by douglar

User metadata
Rank l33t
Rank
l33t

Thanks for the detailed explanation. That was very interesting to me. I experienced a very short F5 delay on my opti 495sx motherboard w/ mrbios 1.6 and an AMD 133 cpu.

Does XTide Universal Bios take a better approach to PIO in the 386l build? Is that code in ide_readwrite.asm?

Reply 304 of 305, by evasive

User metadata
Rank Oldbie
Rank
Oldbie
douglar wrote on 2025-11-09, 16:41:
Anyone ever see a Compass Labs 3201 before? The BIOS is from Promise, and the layout looks like a https://theretroweb.com/expan […]
Show full quote

Anyone ever see a Compass Labs 3201 before? The BIOS is from Promise, and the layout looks like a https://theretroweb.com/expansioncards/s/dtk-pti-245 , but the fab date is 6 weeks older than any promise PDC 20230B chip I've seen. Maybe PDC 20230A?

The attachment CompasLabs.jpg is no longer available

The BIOS reads:

Compass VLB-100 32-bit IDE BIOS (V0.8) (C)1993 PROMISE TECHNOLOGY

Edit -- I marked it down as a DC2000VL-2 for now--

this?
https://theretroweb.com/expansioncards/s/prom … se-dc2000-ver-2

Reply 305 of 305, by douglar

User metadata
Rank l33t
Rank
l33t
evasive wrote on 2025-11-26, 11:11:
douglar wrote on 2025-11-09, 16:41:
Anyone ever see a Compass Labs 3201 before? The BIOS is from Promise, and the layout looks like a https://theretroweb.com/expan […]
Show full quote

Anyone ever see a Compass Labs 3201 before? The BIOS is from Promise, and the layout looks like a https://theretroweb.com/expansioncards/s/dtk-pti-245 , but the fab date is 6 weeks older than any promise PDC 20230B chip I've seen. Maybe PDC 20230A?

The attachment CompasLabs.jpg is no longer available

The BIOS reads:

Compass VLB-100 32-bit IDE BIOS (V0.8) (C)1993 PROMISE TECHNOLOGY

Edit -- I marked it down as a DC2000VL-2 for now--

this?
https://theretroweb.com/expansioncards/s/prom … se-dc2000-ver-2

I’m trying to sort out what is going on with those boards.
1) There were a bunch of exact copies of the board sold by no name companies that have "DC2000" like model numbers that TH99 labeled as promise branded boards
2) There are at least two other exact copies sold by other venders that sold the same board but with a different fccid

I was working on it about 10 days ago. I’ll get it sorted out this weekend.

Edit My guess based on FCCID submissions is that there was a DC2000a that was the original.

  • used the PDC20230b chip
  • JP2 for
  • JP3 for all other config
  • JP5 for ROM address ( if the optional rom socket is populated )
  • JP6 for IDE speed
  • JP7 for LED
  • No game port

Here's the list of matching cards some are from TH99 some are from early TRW days--
https://theretroweb.com/expansioncards/s/prom … se-dc2000-ver-1
https://theretroweb.com/expansioncards/s/prom … se-dc2000-ver-2
https://theretroweb.com/expansioncards/s/promise-dc2000vl-3
https://theretroweb.com/expansioncards/s/prom … pti-dc2000vl-2a
https://theretroweb.com/expansioncards/s/promise-dc2000a-vl (schematic that looks like a TH99 copy paste error)
https://theretroweb.com/expansioncards/s/dtk-pti-245
https://theretroweb.com/expansioncards/s/fic-mio-v

Here a very similar but slightly different cards:
https://theretroweb.com/expansioncards/s/promise-dc4000 (jumpers labeled differently )
https://theretroweb.com/expansioncards/s/promise-dc2000c-vl