VOGONS


First post, by Oerg866

User metadata
Rank Member
Rank
Member

Hi,

this is IVXWAIT, a MS-DOS program for Motherboards with a PIIX3 to set 8- and 16-Bit ISA I/O recovery cycles (or wait states if you want to call it that).

It can help fix ISA devices such as OPL3 malfunctioning due to timing issues.

Screenshots:

unknown.png
unknown.png

Download Source / Binary here

Backstory:

I had a problem the other day .

My Cyrix PC's sound card's OPL3 (It's a YMF719-based card) would misbehave with a few programs (Adlib Tracker 2, HSC Tracker), but work just fine with most games and other software. The misbehaving software would only emit garbage noises, if anything. Under Windows 95, they would produce silence unless tabbed-out.

Check the clips if you're interested:

Clip 1 from Reality Adlib Tracker (Works)
Clip 2 from Adlib Tracker 2 (Broken, WARNING, EXTREMELY LOUD!!!)

Tiido and I shared the opinion that this is a timing problem, probably caused by lack of wait states after the I/Os and the software being too optimistic.

Problem: My ECS P5VX-Be does not have a BIOS option to set this up - oops! Thankfully the ISA Bridge has a public datasheet (here).

The I/O recovery timer is cofigured using register 0x4C in function 0 of the PCI device (PCI\VEN_8086&DEV_7000). So I thought, why not write a tool to configure this? Maybe it fixes my problem, and if not, at least I learned something new!

I had never written code to access PCI devices before, so this was an interesting challenge, fueled by the fact that I wanted to do this in Real Mode with a contemporary compiler (in this case Borland Turbo C++ 3.0). Most, if not all of these lack any semblence of understanding that something like a 386 even exists (it's the 90s, ffs!), so doing the required 32-bit I/O to acces PCI config space is a no-go. So I had to do this using inline assembly and manually placed opcodes (using "db").

It's hacky, but I think it's cool and hey, after setting 8-Bit recovery time to 6 clock cycles using my new tool, Adlib Tracker finally works perfectly!

Clip 3 from Adlib Tracker 2 (Works)

Reply 3 of 5, by pentiumspeed

User metadata
Rank l33t
Rank
l33t
Oerg866 wrote on 2023-07-26, 10:18:

Here's a new version that supports more Intel and a few SiS chipsets.

https://github.com/oerg866/isawait/releases/tag/1.0

Need to list all the supported chipsets please. Be specific and informative.

Cheers,

Great Northern aka Canada.

Reply 4 of 5, by Oerg866

User metadata
Rank Member
Rank
Member

Or you could read the readme, which lists them!

[…]
Show full quote
ISAWAIT
(C) 2022-2023 Eric Voirin (oerg866)
ISAWAIT is a DOS program to change and set the ISA I/O Recovery Timing.

This program exists because some boards, such as ECS P5VX-Be have BIOSes which sets this up with an optimistic default and have no option in the BIOS to change this.

As of now, it supports the following chipsets:

Vendor ID Device ID Name
8086 112E Intel PIIX
8086 7000 Intel PIIX3
8086 7110 Intel PIIX4(E)
1039 5113 SiS 5113
1039 0008 SiS 559x

Reply 5 of 5, by pentiumspeed

User metadata
Rank l33t
Rank
l33t

That better, this helps us to decide whatever to download it when you know have a chipset is supported on this.

Cheers,

Great Northern aka Canada.