VOGONS


List of VLB IDE Controllers

Topic actions

Reply 300 of 328, 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 328, 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 328, 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 328, 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 328, 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 328, 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

Reply 306 of 328, by evasive

User metadata
Rank Oldbie
Rank
Oldbie

with matching cards you mean they are exact clones and should be merged into one entry?

Reply 307 of 328, by douglar

User metadata
Rank l33t
Rank
l33t
evasive wrote on 2025-12-23, 08:03:

with matching cards you mean they are exact clones and should be merged into one entry?

They are not exact copies. I was trying to find a way to distinguish the cards that were made by promise from the clones that had "promise-like" part numbers but are clones. TH99 tended to lump them all together.

Reply 308 of 328, by evasive

User metadata
Rank Oldbie
Rank
Oldbie

TH99/MTL only had manuals, never actual hardware. I think they got fed up with it and decided to "let's call them all Promise"

Reply 309 of 328, by Danger Manfred

User metadata
Rank Member
Rank
Member

Might be a tad difficult, but could anyone tell me if this VLB IDE controller: https://theretroweb.com/expansioncards/s/longshine-lcs-6924 with a Promise (PTI) PDC20230C chip
will improve performance over the integrated VLB IDE controller of this motherboard: https://theretroweb.com/motherboards/s/ecs-um4981-aio-ver.-1 (a UMC UM8672F)?
The way I understand it, the UM8672F is already internally connected via VLB, so with the bus being the same, it comes down to the features of both chips.
Is that correct so far?
But even if so, I could not find documentation on these two, to tell which one might be faster.

Reply 310 of 328, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
Danger Manfred wrote on 2025-12-31, 09:52:
Might be a tad difficult, but could anyone tell me if this VLB IDE controller: https://theretroweb.com/expansioncards/s/longshin […]
Show full quote

Might be a tad difficult, but could anyone tell me if this VLB IDE controller: https://theretroweb.com/expansioncards/s/longshine-lcs-6924 with a Promise (PTI) PDC20230C chip
will improve performance over the integrated VLB IDE controller of this motherboard: https://theretroweb.com/motherboards/s/ecs-um4981-aio-ver.-1 (a UMC UM8672F)?
The way I understand it, the UM8672F is already internally connected via VLB, so with the bus being the same, it comes down to the features of both chips.
Is that correct so far?
But even if so, I could not find documentation on these two, to tell which one might be faster.

To take the full speed from your UM8672F chip you need BIOS extension or load proper driver(s) for it - https://vogonsdrivers.com/getfile.php?fileid= … &menustate=71,0

2300KB/s - without driver
4500KB/s - with driver

I use :11 speed switch in drivers option
DEVICE = C:\UM8672.SYS /D0:11

Need help? Begin with photo and model of your hardware 😉

Reply 311 of 328, by Danger Manfred

User metadata
Rank Member
Rank
Member
Babasha wrote on 2025-12-31, 11:09:
To take the full speed from your UM8672F chip you need BIOS extension or load proper driver(s) for it - https://vogonsdrivers.co […]
Show full quote

To take the full speed from your UM8672F chip you need BIOS extension or load proper driver(s) for it - https://vogonsdrivers.com/getfile.php?fileid= … &menustate=71,0

2300KB/s - without driver
4500KB/s - with driver

I use :11 speed switch in drivers option
DEVICE = C:\UM8672.SYS /D0:11

Thanks for pointing towards the drivers - I knew I was going to need them, but would still have had to search for them.

But the main question remaining is: does it make any sense at all to use the Promise-based dedicated IO controller?

Reply 312 of 328, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
Danger Manfred wrote on 2025-12-31, 13:00:
Babasha wrote on 2025-12-31, 11:09:
To take the full speed from your UM8672F chip you need BIOS extension or load proper driver(s) for it - https://vogonsdrivers.co […]
Show full quote

To take the full speed from your UM8672F chip you need BIOS extension or load proper driver(s) for it - https://vogonsdrivers.com/getfile.php?fileid= … &menustate=71,0

2300KB/s - without driver
4500KB/s - with driver

I use :11 speed switch in drivers option
DEVICE = C:\UM8672.SYS /D0:11

Thanks for pointing towards the drivers - I knew I was going to need them, but would still have had to search for them.

But the main question remaining is: does it make any sense at all to use the Promise-based dedicated IO controller?

SPEEDSYS screenshots of Promise 20230 VLB are here - VLB IDE cache controllers, benchmark
As you can see buffered and linear speed just 1700KB/s (typical value for 16bit ttansfers)
My UMC UM8276F gives me up to 4500KB/s (with card BIOS or DOS driver that switch card to 32bit VLB mode).

Need help? Begin with photo and model of your hardware 😉

Reply 313 of 328, by douglar

User metadata
Rank l33t
Rank
l33t
Babasha wrote on 2025-12-31, 13:16:
SPEEDSYS screenshots of Promise 20230 VLB are here - VLB IDE cache controllers, benchmark As you can see buffered and linear s […]
Show full quote
Danger Manfred wrote on 2025-12-31, 13:00:
Babasha wrote on 2025-12-31, 11:09:
To take the full speed from your UM8672F chip you need BIOS extension or load proper driver(s) for it - https://vogonsdrivers.co […]
Show full quote

To take the full speed from your UM8672F chip you need BIOS extension or load proper driver(s) for it - https://vogonsdrivers.com/getfile.php?fileid= … &menustate=71,0

2300KB/s - without driver
4500KB/s - with driver

I use :11 speed switch in drivers option
DEVICE = C:\UM8672.SYS /D0:11

Thanks for pointing towards the drivers - I knew I was going to need them, but would still have had to search for them.

But the main question remaining is: does it make any sense at all to use the Promise-based dedicated IO controller?

SPEEDSYS screenshots of Promise 20230 VLB are here - VLB IDE cache controllers, benchmark
As you can see buffered and linear speed just 1700KB/s (typical value for 16bit ttansfers)
My UMC UM8276F gives me up to 4500KB/s (with card BIOS or DOS driver that switch card to 32bit VLB mode).

I'll put together some UM8672F benchmarks today

First a couple quick notes about storage benchmarking--

  • Older controllers often have jumpers to manually set the speeds.
  • Hard to reach PIO 3 or PIO 4 speeds without a card and a driver that supports IORDY
  • Performance depends on a combination of driver, controller, and storage device working together. One controller isn't necessarily the fastest for all storage devices.
  • In DOS, your driver is going to be your BIOS, an option ROM or a driver loaded in the config.sys
  • Most DOS VLB storage drivers allow for a lot of different switches. Different storage devices can perform better with different driver switches.

Here are my promise 20230C & 20630c benchmarks from earlier in this thread--

The attachment promise.jpg is no longer available

Notes:

  • XUB = XTide Universal BIOS with the 386 large build
  • Used the Promise VG4 v3.3 driver. https://www.vogonsdrivers.com/getfile.php?fileid=2076
  • I tested the MrBIOS settings for 32 bit block mode and it didn't seem to change anything.
  • D0:DA is the IORDY mode
  • The Promise 20630c supports MWDMA2 ATA transfer modes between the drive and controller with the D0:M8 switch, but it doesn't support DMA from the 20630 chip to the CPU

Reply 314 of 328, by douglar

User metadata
Rank l33t
Rank
l33t

I started looking for new ways to make the testing easier, and then I lost track of time, and didn't get back the the bench marking.

I started filling out a UMC grid.

Notes:

  • I started doing a 16 GB Liteon Msata device because it does multi-sector transfers and it's a good test to see if the drivers work with LBA
  • Upgraded to XUB 632 https://xtideuniversalbios.org/changeset/632/ … deuniversalbios
  • I played around with the UMC 2.2 BIOS Rom. https://www.vogonsdrivers.com/getfile.php?fileid=2275 Didn't find a way to force the faster speeds like Babasha showed for the DOS driver
  • There is a performance difference if I load the UMC 2.1 driver with XUB vs w/o, even when I specify the same D0:11 speed.
  • Not sure how I missed it in the past, but MR BIOS 1.60 allows for 4 different drive modes 0-3, where 0 = original, 1 = poll, 2 = block, 3 = 32 bit block. There's some speed differences between 0 and 3. That's all I tested.
  • My old Sintechi SD bridge was in use in a different system, so I pulled out my spare adapter that was new-in-plastic. To my surprise, the firmware on the new one was 1.4. I'd only seen 1.2 and 1.3 in the past. I have to wonder if this fixes any of the known Sintechi issues, like LBA48 partition corruption.

I'll try to add the others tomorrow--

The attachment umc.png is no longer available

ps - Here are my test cards--
UM82C871F - https://theretroweb.com/expansioncards/s/sili … nc-old-name-abi
UM85C418F -- https://theretroweb.com/expansioncards/s/gain … d-cardex-vl-1av
UM8672F - https://theretroweb.com/expansioncards/s/unkn … 3295umv-a-ver-1

p.p.s. None of my UMC cards support IORDY aka IOCHRDY
I also have a UM8672F based PT-627a that has a spot for a IOCHRDY jumper, but the pins were never put in. Might be time to get out the soldering iron to see what happens

Last edited by douglar on 2025-12-31, 21:53. Edited 1 time in total.

Reply 317 of 328, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie

IOCHRDY is enabled
Speed set by jumpers default and enabled thru driver up to 11
My storage device is cheap chinnese CF-IDE adapter and unnamed 256MB CF card 😀

Need help? Begin with photo and model of your hardware 😉

Reply 318 of 328, by douglar

User metadata
Rank l33t
Rank
l33t
Babasha wrote on 2025-12-31, 23:24:

IOCHRDY is enabled

I was hoping we would see faster results with IOCHRDY enabled. IOCHRDY can unlock faster xfer modes on some controllers.

Here’s how I interpret speedsys results:
under 1500KB/s =>bios shadowing is off or IDE device is really slow
1500 - 2500KB/s => PIO1
3000 - 5500 KB/s => PIO2
6000 - 11000 KB/s => PIO3 or PIO4.
PIO4 performance can overlap with PIO3 when ready waits burden the system.

So maybe the answer here is that the UMC controller chips don’t do PIO3 or PIO4 even though some cards support IOCHRDY.

ADI/2, CMD, QDI, Promise and maybe SIS look like they can do PIO3 or 4.

Reply 319 of 328, by Babasha

User metadata
Rank Oldbie
Rank
Oldbie
douglar wrote on 2026-01-01, 18:13:
I was hoping we would see faster results with IOCHRDY enabled. IOCHRDY can unlock faster xfer modes on some controllers. […]
Show full quote
Babasha wrote on 2025-12-31, 23:24:

IOCHRDY is enabled

I was hoping we would see faster results with IOCHRDY enabled. IOCHRDY can unlock faster xfer modes on some controllers.

Here’s how I interpret speedsys results:
under 1500KB/s =>bios shadowing is off or IDE device is really slow
1500 - 2500KB/s => PIO1
3000 - 5500 KB/s => PIO2
6000 - 11000 KB/s => PIO3 or PIO4.
PIO4 performance can overlap with PIO3 when ready waits burden the system.

So maybe the answer here is that the UMC controller chips don’t do PIO3 or PIO4 even though some cards support IOCHRDY.

ADI/2, CMD, QDI, Promise and maybe SIS look like they can do PIO3 or 4.

I use my UM8672F with very strange VIP motherboard Spring Circle SF586 and i dont know how fast it can be with more compatible motherboards)))

Need help? Begin with photo and model of your hardware 😉