VOGONS


First post, by darry

User metadata
Rank l33t++
Rank
l33t++

While I am waiting for orders to arrive, I thought about a sit project : adding an XT-IDE option ROM to my P3B-F's BIOS .

I start out with the Tualatin patched P3BF_Noa.BIN BIOS and XTIDE_Universal_BIOS_v2.0.0_beta3.zip

I have configured the IDE_ATL.BIN file using xtidecfg.com (using auto config)

Then I run CBROM P3BF_Noa.BIN /isa IDE_ATL.BIN D000:0
(I have tried CBROM 2.07 2.15 2.20 1.82)
Then I flash using the AFLASH utility

My issue at this poingt is that the XT-IDE splash screen does not appear at boot .

Am I missing a step ?

Last edited by darry on 2020-05-21, 01:03. Edited 1 time in total.

Reply 4 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++

I also tried to add the option ROM to the last unmodified beta Asus BIOS, with the same results .

PCI controllers with a BIOS work, so I guess a PCI option ROM would work. Too bad the XTIDE is meant for ISA option ROMs only . I wonder if it would be just a matter of adding a header with the PCI device ID of an onboard device to an XTIDE ROM for it to work as a PCI option ROM or if major modifications (or a rewrite) would be required .

Reply 5 of 16, by DenizOezmen

User metadata
Rank Member
Rank
Member

I don't think the P3B-F has any code to unpack an ISA option ROM from within the system BIOS. All related code seems to be searching for specific modules (microcode, full screen logo, Award extension ROM, ...). There is the embedded Symbios SCSI BIOS, which gets loaded as a PCI option ROM, though only if a device with id 1000:0001, 1000:0005 or 1000:0006 is registered in PCI configuration space (if I see this correctly).

Not sure which address the ROM is loaded to, though. Seems like C000:0, C400:0, C800:0 and so on up to FC00:0 are candidates?

Reply 6 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++
DenizOezmen wrote on 2020-05-20, 16:30:

I don't think the P3B-F has any code to unpack an ISA option ROM from within the system BIOS. All related code seems to be searching for specific modules (microcode, full screen logo, Award extension ROM, ...). There is the embedded Symbios SCSI BIOS, which gets loaded as a PCI option ROM, though only if a device with id 1000:0001, 1000:0005 or 1000:0006 is registered in PCI configuration space (if I see this correctly).

Not sure which address the ROM is loaded to, though. Seems like C000:0, C400:0, C800:0 and so on up to FC00:0 are candidates?

I have tried specifying D000:0 and D800:0 in CBROM as well as not specifying anything . I did not go so far as checking whether the ISA ROM actually got loaded to memory . Having only floppy drives and an unformated HDD on this machine limit the scope of the tests I've been motivated to run so far . I will check and report back .
By the way, I am practically a complete newb as far as this is concerned . In other words, I know just enough to be dangerous, but not enough to fully realize what I'm doing .

Reply 7 of 16, by DenizOezmen

User metadata
Rank Member
Rank
Member
darry wrote on 2020-05-20, 17:10:

I have tried specifying D000:0 and D800:0 in CBROM as well as not specifying anything . I did not go so far as checking whether the ISA ROM actually got loaded to memory . Having only floppy drives and an unformated HDD on this machine limit the scope of the tests I've been motivated to run so far . I will check and report back .
By the way, I am practically a complete newb as far as this is concerned . In other words, I know just enough to be dangerous, but not enough to fully realize what I'm doing .

I don't think it is getting loaded at all. When you add a module to an Award BIOS via CBROM, it is compressed and flagged with a type (depending on the switch you choose). That's how CBROM knows what kind of modules are contained in a BIOS image. Some types found in the P3B-F's BIOS are 40010000 (Microcode), 40020000 (EPA logo), 40030000 (ACPI table) and a few more. ISA option ROMS are added with a type of 40Axaaaa, where aaaa is (optionally?) the target memory address of the module.

During boot, the main BIOS will look through the modules, uncompress them and place them into their desired spot in memory. However, the P3B-F's main BIOS code only looks for the types of modules it knows about (see above), and modules of the type 40Axaaaa are unfortunately not among those, so they stay compressed and "hidden away".

Just for fun, I decided to try and patch out the code that queries the PCI configuration space in search of a Symbios adapter and replace the Symbios ROM module with an XT-IDE module to see whether it would load. To my surprise, it did right away (see photo). Unfortunately, I have no idea whether it actually works or not, since I have even less drives to test it with than you have. 😉

Attachments

Reply 8 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++
DenizOezmen wrote on 2020-05-20, 18:24:
I don't think it is getting loaded at all. When you add a module to an Award BIOS via CBROM, it is compressed and flagged with a […]
Show full quote
darry wrote on 2020-05-20, 17:10:

I have tried specifying D000:0 and D800:0 in CBROM as well as not specifying anything . I did not go so far as checking whether the ISA ROM actually got loaded to memory . Having only floppy drives and an unformated HDD on this machine limit the scope of the tests I've been motivated to run so far . I will check and report back .
By the way, I am practically a complete newb as far as this is concerned . In other words, I know just enough to be dangerous, but not enough to fully realize what I'm doing .

I don't think it is getting loaded at all. When you add a module to an Award BIOS via CBROM, it is compressed and flagged with a type (depending on the switch you choose). That's how CBROM knows what kind of modules are contained in a BIOS image. Some types found in the P3B-F's BIOS are 40010000 (Microcode), 40020000 (EPA logo), 40030000 (ACPI table) and a few more. ISA option ROMS are added with a type of 40Axaaaa, where aaaa is (optionally?) the target memory address of the module.

During boot, the main BIOS will look through the modules, uncompress them and place them into their desired spot in memory. However, the P3B-F's main BIOS code only looks for the types of modules it knows about (see above), and modules of the type 40Axaaaa are unfortunately not among those, so they stay compressed and "hidden away".

Just for fun, I decided to try and patch out the code that queries the PCI configuration space in search of a Symbios adapter and replace the Symbios ROM module with an XT-IDE module to see whether it would load. To my surprise, it did right away (see photo). Unfortunately, I have no idea whether it actually works or not, since I have even less drives to test it with than you have. 😉

Cool. That's really encouraging, thank you . If it's not too much of a hassle for you, could you share a copy of the P3BF_NOA.BIN BIOS with the Symbios PCI ID check removed and with the actual Symbios BIOS module removed, so I could experiment with adding various versions of the XTIDE BIOS using CBROM (and the NCR switch)?

Attachments

  • Filename
    P3BF_Noa.zip
    File size
    155.55 KiB
    Downloads
    98 downloads
    File license
    Fair use/fair dealing exception

Reply 9 of 16, by DenizOezmen

User metadata
Rank Member
Rank
Member
darry wrote on 2020-05-20, 19:15:

Cool. That's really encouraging, thank you . If it's not too much of a hassle for you, could you share a copy of the P3BF_NOA.BIN BIOS with the Symbios PCI ID check removed and with the actual Symbios BIOS module removed, so I could experiment with adding various versions of the XTIDE BIOS using CBROM (and the NCR switch)?

Sure, here you go. I could get my board to post with it, so it should hopefully be safe to use. (Though the usual caveats regarding flashing apply, naturally.) For the sake of completeness, I have included the BIOS image I used to do the first test. It is based on the modified BIOS I posted over here.

In any case, you will need to use the "/hpc" switch (not "/ncr") of CBROM to add the module, otherwise the type will not be correct.

By the way: It should even be possible to enable/disable the new module with the setup menu's Symbios option.

Attachments

  • Filename
    P3BF_Noa_no_Symbios.zip
    File size
    278.75 KiB
    Downloads
    76 downloads
    File license
    Fair use/fair dealing exception

Reply 10 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++
DenizOezmen wrote on 2020-05-20, 20:09:
Sure, here you go. I could get my board to post with it, so it should hopefully be safe to use. (Though the usual caveats regard […]
Show full quote
darry wrote on 2020-05-20, 19:15:

Cool. That's really encouraging, thank you . If it's not too much of a hassle for you, could you share a copy of the P3BF_NOA.BIN BIOS with the Symbios PCI ID check removed and with the actual Symbios BIOS module removed, so I could experiment with adding various versions of the XTIDE BIOS using CBROM (and the NCR switch)?

Sure, here you go. I could get my board to post with it, so it should hopefully be safe to use. (Though the usual caveats regarding flashing apply, naturally.) For the sake of completeness, I have included the BIOS image I used to do the first test. It is based on the modified BIOS I posted over here.

In any case, you will need to use the "/hpc" switch (not "/ncr") of CBROM to add the module, otherwise the type will not be correct.

By the way: It should even be possible to enable/disable the new module with the setup menu's Symbios option.

Thank you very much for this !
Here are some observations when using IDE_386L.BIN from build R602 (XTIDE 2.X based) from here --> http://www.xtideuniversalbios.org/binaries/:
- Enabling/Disabling Symbios SCSI BIOS actually allows toggling the XTIDE option ROM
- When XTIDE is active, even if enabled only on one port, boot from CD or DVD is non-functional . Disabling the XTIDE option ROM allows normal CD/DVD booting
- A 40GB IDE drive that was partitioned and formatted on an ICH2 IDE controller was both accessible and bootable through XTIDE .

- Having no native IDE 137GB drives , I used a Jmicron JMD330 and tried, one after the other, a 1TB Seagate SATA drive and a Samsung 860EVO 500GB SSD that :
a) both work fine on ICH2 and Promise Ultra133 TX2 (both support LBA48, as confirmed in practice and by RLOEW's 48BITLBA.EXE) using the previously mentioned JMD330 and are also accessible via E-SATA on Intel AHCI controller
b) both drives are recognized by the XTIDE BIOS at full capacity, but neither boots successfully and neither is accessible when booting from a DOS 7.1 floppy .
c) However, if partitioned and formatted in DOS 7.1 on the XTIDE BIOS, both drives are bootable and formatted partitions are accessible (this occurs whether LBA or auto mode is chosen in XTIDECFG config utility).
d) Both drives fail RLOEW's 48BITLBA.EXE check when managed by the XTIDE BIOS, but pass Intel's 48lbachk.exe

Having said all this, my impression is that the issues experienced with drive access and bootability as well as the LBA48 failures are due to limitations or issues with XTIDE and not the unorthodox way of loading it .
Specifically, the documentation here --> https://code.google.com/archive/p/xtideuniver … ual_v2_0_0.wiki leads me to believe there may still be some issues, at least with LBA48 implementation .

"Important if you are upgrading from any previous XTIDE Universal BIOS version
The v2.0.0 beta 2 and later versions, like most other BIOSes, adheres to the Phoenix Enhanced Disk Drive Specification. The older v1.x.x versions and v2.0.0 beta 1 do NOT - they may generate different L-CHS parameters for many drives. If you move a drive handled by a v1.x.x or v2.0.0 beta 1 BIOS to another system or upgrade to v2.x.x you risk data corruption if different L-CHS parameters are used."

Unless R602 does not adhere to the Phoenix Enhanced Disk Drive Specification . It's a bit difficult to track versions, IMHO . EDIT : Splash screen says 2.0.0 Beta 3

P.S. According to http://www.vcfed.org/forum/showthread.php?297 … -testing-thread , LBA48 should be implemented, in theory .

DISCLAIMER : I am no expert in disk sector translation matters, so my interpretation may be completely off track .

EDIT: Belatedly noticed an inconsistency in layout that was confusing . Corrected it .

Attachments

  • Filename
    48lbachk.exe
    File size
    33.07 KiB
    Downloads
    88 downloads
    File comment
    Intel LBA48 test utility
    File license
    Fair use/fair dealing exception
  • Filename
    48BITLBA.EXE
    File size
    12.37 KiB
    Downloads
    76 downloads
    File comment
    RLOEW's LBA48 test utility
    File license
    Fair use/fair dealing exception
Last edited by darry on 2020-10-20, 01:12. Edited 1 time in total.

Reply 11 of 16, by DenizOezmen

User metadata
Rank Member
Rank
Member

Thanks for sharing your results!
I'm not an expert on LBA48, so I can't really comment on that one. The observation that enabling XT-IDE disables CD-ROM boot makes sense, though. If XT-IDE takes on the role of boot manager, but does not implement El Torito booting (and does not somehow pass back control to the system BIOS), nothing of the sort will happen.

Reply 12 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++

EDIT: I may have spoken too soon . I'm getting weird behavior in Windows 98 SE, among which slow performance, the absence of the IDE drive in device manager/disk drives (and hence inability enable DMA mode). I tried rloew's patch to ESDI_506.PDR (instead of BHDD) but saw no change .

---------------------------------------------------------------------------------------------

EDIT2 2021-08-01: As pointed out by _Krille_ , I was indeed in "MS-DOS compatibility mode" . I somehow managed to not bother checking . I was under the impression that this issue had been worked around a while back, apparently I was either wrong or the fix is not enabled by default in the prebuilt binary .

Anyway, as a workaround to this quirk in ESDI_506.PDR (AFAIU), I switched the HDD to the secondary controller, which allowed native mode to work, but I was unable to successfully enable DMA mode until I switched to a Marvell based SATA to IDE converter (from the JMicron one I was using). This allowed DMA mode to be enabled. However, boot up time still seems subjectively slow . HDTACH (with advanced size detection enabled) stalls non fatally (i.e. can be terminated by Ctrl-Alt-Del) . Running HDTACH without advanced size detection enabled works, but gives a read speed of about 3 Megabytes per second !

To be extra sure that this was not due to me having borked the Windows 98 SE installation with all my previous putzing around with enabling DMA (before switching to the Marvell controller), I restored a backup onto another drive (250 GB Samsung 860 EVO) and got the same results .

Maybe I am still hitting some kind of incompatibility due to the SATA to IDE converter, so I will try to dig out an LBA48 (>127GB) native IDE drive and give that a shot

Breaking news : Sisoft Sandra 99 drive benchmark completed after what seems like an eternity . Sequential read and write are about 2.3MB/sec and4MB, respectively . I also tried ATTO and results were underwhelming as well (2 -3 MB/second) .

---------------------------------------------------------------------------------------------

I just tried r614 of XTIDE on the P3B-F and was able to successfully switch my 1TB SATA drive from my SIL3114 (which I removed from the machine) to the onboard IDE without formatting !

Additionally, both 48lback.exe and 48bitlba.exe detect my system as 48-bit LBA capable .

Finally I was able to successfully boot into Windows 98 SE and run scandisk (version from Bhdd31.zip ) on the 127GB boot partition and the second 127GB partition of the 1TB disk (rest is currently unpartitioned) .

I am attaching this XTIDE enhanced P3B-F BIOS here .

Filename
p3bxtide.zip
File size
155.82 KiB
Downloads
74 downloads
File license
Fair use/fair dealing exception

It is based on p3bf1084_20210711.zip ( download/file.php?id=114299 ) from Modified BIOSes for ASUS P3B-F, P3V4X, P3V133, CUBX, CUBX-E/L and P3C-E and IDE_386L.BIN version build R614 from https://www.xtideuniversalbios.org/binaries/

Disclaimer : this BIOS image has been tested by me on exactly one machine with no issue, but as is always the case with any BIOS flash procedure may go wrong . If that was to be the case using flashing the BIOS externally or sourcing a pre-flashed BIOS chip might be required .

Last edited by darry on 2021-08-04, 01:47. Edited 2 times in total.

Reply 13 of 16, by _Krille_

User metadata
Rank Newbie
Rank
Newbie
darry wrote on 2021-07-29, 23:13:

EDIT: I may have spoken too soon . I'm getting weird behavior in Windows 98 SE, among which slow performance, the absence of the IDE drive in device manager/disk drives (and hence inability enable DMA mode). I tried rloew's patch to ESDI_506.PDR (instead of BHDD) but saw no change .

Is it running in "MS-DOS compatibility mode"? If so, you probably need to add a dummy drive to the system BIOS configuration.

Reply 14 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++
_Krille_ wrote on 2021-07-31, 17:48:
darry wrote on 2021-07-29, 23:13:

EDIT: I may have spoken too soon . I'm getting weird behavior in Windows 98 SE, among which slow performance, the absence of the IDE drive in device manager/disk drives (and hence inability enable DMA mode). I tried rloew's patch to ESDI_506.PDR (instead of BHDD) but saw no change .

Is it running in "MS-DOS compatibility mode"? If so, you probably need to add a dummy drive to the system BIOS configuration.

Yep, it was in "MS-DOS compatibility mode" . I somehow managed to not bother checking . I was under the impression that this issue had been worked around a while back, apparently I was either wrong or the fix is not enabled by default in the prebuilt binary . Thanks for the heads-up on that .

This is, unfortunately, not the end of issues .

I will update my previous post with more info .

Reply 15 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++

Good news, it works, maybe !

I got it to work at decent speeds .
I got it to work with DMA enabled on the JMicron SATA IDE adapter as well as with the Marvell one .
It works on both my SSD and mechanical drive (I tried one at a time).

The solution (tentatively):
I found an alternative to to using a patched ESDI_506.PDR that solves the read performance issue and apparently works with >127GB drives : iaa23_multi.exe (Intel Application Accelerator 2.3) .
Apparently, there is very little online about doing this : https://msfn.org/board/topic/46752-137gb-limi … #comment-506342 and https://msfn.org/board/topic/182066-ide-sata- … m-under-win-98/ . Apparently, this is not supposed to work, but I've written gigabytes of data above the 240GB mark and have not seen corruption yet . Tests are ongoing . This solves the read performance issue (getting over 30MB/second now).

As for the write performance issue, enabling write caching (EDIT: the write caching internal to the drive, which XTIDE explicitly disable by default) in the XTIDE config utility solves the problem (getting over 21 MB/second now in ATTO). Are there risks, side effects, bugs, etc ? I do not know yet .

As for the JMicron SATA to IDE working in DMA mode, I am not sure what fixed it . Using IAA, enabling write caching, both ? I really don't know yet .

Further tests are forthcoming .
--------------------------------
EDIT : According to this https://web.archive.org/web/20050212023710/ht … b/CS-009299.htm and especially this https://web.archive.org/web/20070104113357/ht … b/cs-009304.htm , in addition to the IAA , the bios must support LBA48 for >137GB drives to work under Windows 9x , AFAIU .

Until recently, there was no PIIX4E based IDE controller with 48-bit LBA BIOS support . XTIDE changed that. Consequently, I doubt IAA on 440BX was ever tested for LBA48 support in that specific scenario, but I could be utterly and completely wrong .

Reply 16 of 16, by darry

User metadata
Rank l33t++
Rank
l33t++

Some good news all around .

- On a 1 TB drive, I have 3 primary partitions of 120GB each and I filled each of them within 300MB of being full and ran Windows scandisk (from BHDD31.ZIP) on each of them with absolutely zero errors !
- I experimented with Intel Application Accelerator management utility and got it to run on my P3B-F . Even patching the hardware check in the Installshield installer was trivially easy .

First, some screenshots (can't remember which of these are from my 1TB mechanical drive or my 250GB SATA drive, except for the first one, obviously) :

IAA console :

Filename
iaa_23.png
File size
8.26 KiB
Downloads
No downloads
File license
Public domain

Write caching disabled in XTIDE :

atto_piix4e_nowc.png
Filename
atto_piix4e_nowc.png
File size
7.72 KiB
Views
2381 views
File license
Public domain

Write caching enabled in XTIDE :

atto_piix4e_wc.png
Filename
atto_piix4e_wc.png
File size
7.73 KiB
Views
2381 views
File license
Public domain
hdtach_wc_no_advanced_size.png
Filename
hdtach_wc_no_advanced_size.png
File size
6.83 KiB
Views
2381 views
File license
Public domain

Now the BIOS I am using (same as previous one in thread except with write caching enabled) :

Filename
P3B_WC.zip
File size
156.12 KiB
Downloads
70 downloads
File license
Fair use/fair dealing exception

To install the driver in iaa23_multi.exe , you need to
a) Download it from somewhere
b) Extract it with 7-ZIP or whatever else you like
c) Extract the data1.cab using Universal Extractor (or your favorite Installshield decompressor)
d) Rename W98_PIIX to W98_PIIX.INF (presumably you could use WME_PIIX or W2K_PIIX if you were using one of those OSes, it I have not tested that)
e) Install the driver from device manager by pointing to the folder containing W98_PIIX.INF and reboot when prompted (ignore the missing .cat signature files when prompted).
f) Optionally, install IAA itself. To do this :
f1) Use a hex editor (I like XVI32) to replace all text strings from 2421 --> 7111 in setup.inx
f2) Run setup.exe and install IAA. Reboot when prompted .