VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

I notice that when setting the Onboard Triton IDE to:
- None, it sets the primary and secondary channel BARs to legacy ports. BAR4 is set to FF91h.
- Primary, it sets the primary channel BARs to the secondary channel ports. Other BARs are in the FFxx range descending.
- Secondary, it sets the primary channel BARs to the primary channel ports. Other BARs are in the FFxx range descending.
- Both, it sets all the BARs to the FFxx range descending.

Anyone knows exactly what the purpose of that Onboard Triton IDE setting in the BIOS of the i430fx is?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 5, by superfury

User metadata
Rank l33t++
Rank
l33t++

When I use the i440fx on the other hand, I don't see it setting the BARs to said values for those settings.
Instead, I see the registers 40-43 be set instead? This gives the following settings:
BARs being set to descending e801,8401,e001,d801,d401.
- Disable, primary=0, secondary=0
- Primary, primary=8122h, secondary=0h
- Secondary, primary=0122h, secondary=8122h
- Both, primary=8122h, secondary=8122h
So there, bit 15 of the primary and secondary seem to indicate it's to use onboard instead?

Edit: So, for now, I've done the following:
- Both channels have (if not located on the primary/secondary location) a backend that uses the onboard channels. This ensures compatibility with the i430fx way of handling the onboard IDE channels.
- If the highest bits of the PCI registers 41/43 (bit 7 of said registers) have been set on the i440fx, said channel is enabled in the BIOS settings, thus mapping said channel to the respective onboard IDE channel.
- Apparently, on the i440fx the PCI IDE BAR values for BARs 0-3 should be ignored, as they're invalid to use.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 2 of 5, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. The i430fx has some weird configuration alright:
- Selecting disabled, it selects both on the PCI controller (1F0/3F0 primary base,170/370 secondary base).
- Selecting primary, it selects 170 secondary for the primary channel.
- Selecting secondary, it selects 1F0 primary for the primary channel.
- Selecting both, it selects none (all BAR registers in the high range).

It almost looks like the i430fx has some 2-bit switch reversed somehow?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 3 of 5, by superfury

User metadata
Rank l33t++
Rank
l33t++

Hmmm... Anyone knows how a Triton I checks the PCI BARs for validity? Is it just writing ones and reading back, negating and adding 1? Or is there more at play here?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 4 of 5, by Stiletto

User metadata
Rank l33t++
Rank
l33t++

superfury, at the suggestion of another poster, as your original question is not specific to emulation, I moved this thread to Marvin -> General Old Hardware, so that you might get more eyes on it from hardware owners.

That said, I suggest you take actual emulation development discussion about it to another thread, perhaps your primary emulator development thread.

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen

Stiletto

Reply 5 of 5, by superfury

User metadata
Rank l33t++
Rank
l33t++

OK. Just looked at the documentation again after noticing issues with Windows 2000 booting using the new PCI handling of the i440fx.
It looks like the bit I used to enable the onboard mapping (for the Triton PCI IDE) actually just modifies it to use PCI mapping instead of ISA mapping(ISA meaning 1f0/3f0 (primary) and 170/370 (secondary) mapping for the controllers) if enabled?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io