• Please review our updated Terms and Rules here

XTIDE Universal BIOS

I have some good news and bad news.

Bad news first. I'm not ready to release next version this week or even next week. I found a problem that took a lot of time to figure out.

I decided to test polling mode on a 286 with 16-bit IDE controller. I had Quantum ProDrive LPS 340A connected to it (340 MB drive). It had worked fine all this time with and without IRQs enabled but now it had occasional timeouts after i disabled interrupts. I assumed that there was a bug in RC3. I did a lot of testing and results were the same all the time: no problems with IRQs enabled but timeouts in polling mode (this resulted in bad sectors when formatting). This was the only drive with problems on polling mode and it happened on XT clone as well. Then i finally remembered that i hadn't implemented block mode transfers when i last tested that drive in polling mode. All problems disappeared after i disabled block mode. Now i know why block mode can be disabled on many BIOSes. The drive itself had a buggy block mode implementation since it worked only when interrupts were enabled.

Some good news too:
I tested XTIDE Universal BIOS with Sound Blaster 16 (CT2290) and it works just like any 16-bit IDE controller. No problems at all. Other sound cards with IDE should work too (not sure about PnP sound cards).

Next version won't be RC3. It will be v1.1.0. There are so many improvements that i cannot call it 1.0.0 anymore. I will also release source codes. Any recommendations about what open source license i should use?
 
I recommend LGPL, it's GPL-compatible but less restrictive on you.

I assume that when you tried it on the SB16 you mean that you replaced the ROM chip on the SB16? Does it still function as a soundblaster? That'd be a fantastic thing to do if so.. :p If you mean that you just plop an XT-IDE card or card with the BIOS into the system and it takes over SB16 IDE control that's even cooler. You could solve some problems I'm having if either of these is the case..
 
There is no ROM on the Sound Blaster that would be mapped to system address space. I used XTIDE and XTIDE Universal BIOS was configured for tertiary IDE port that the SB16 uses by default. XTIDE is not required since the BIOS ROM can be placed to some other card like on a network card.
 
I tried the second custom build that you made for me. Now ASPI can load just fine, but the drive connected to the XTIDE is showing "Not ready reading drive D". I noticed in the BIOS options that it was set to "32 bit" mode by default, but I also remember you mentioned last time not to play with any of the settings. I did try "16 bit" mode just for the hell of it, but that didn't work either.
 
Last edited:
Now ASPI can load just fine
Very good that at least something got better.

but the drive connected to the XTIDE is showing "Not ready reading drive D".
Where does it show that? When you try to boot from it or when you have booted from SCSI drive and try to access IDE drive from DOS? Does it show properly on boot menu (correct size etc.)?

I noticed in the BIOS options that it was set to "32 bit" mode by default, but I also remember you mentioned last time not to play with any of the settings. I did try "16 bit" mode just for the hell of it, but that didn't work either.
Old idecfg displays it wrong since i now use different values.
 
The boot menu seems to display both drives properly.

With SCSI at D800 and XTIDE at DC00, it doesn't seem to matter which drive I select to boot from, it will boot from the SCSI drive either way, in both cases displaying the "not ready" message for drive D (xtide).
With SCSI at D800 and XTIDE at D000, the system boots to the IDE drive regardless of what is selected in the menu, only the SCSI drive is still accessible as drive D.
 
I am using whatever came on my revision 1 XT-IDE (Hargle's last '09 BIOS I suspect). It's working ok but could be faster. Should I upgrade/change to the Universal BIOS?

I haven't tried it, but is there any way to get the XT-IDE to work with a 750GB HDD? I suspect drive overlays are required?
 
With SCSI at D800 and XTIDE at DC00, it doesn't seem to matter which drive I select to boot from, it will boot from the SCSI drive either way, in both cases displaying the "not ready" message for drive D (xtide).
With SCSI at D800 and XTIDE at D000, the system boots to the IDE drive regardless of what is selected in the menu, only the SCSI drive is still accessible as drive D.

Drive swapping was disabled to minimize conflicts with SCSI swapping. Here is scsitest3. It is the same as the previous but now drive swapping and interrupts (IRQ 14) are enabled. I'd like to know what changes.
 
so the XT-IDE bios supports tertiary ide controllers aswell?

It supports up to 5 controllers at any port. v1.0.0_RC2 supports dual port 8-bit transfers (XTIDE) and normal 16-bit transfers. v1.1.0 is going to support 32-bit transfers for VLB and PCI controllers and single port 8-bit transfers.
 
This custom BIOS behaves exactly as the previous one, except in the case where the XTIDE BIOS loads prior to the SCSI BIOS, it now reads "error" and refuses to boot when you select the SCSI disk from the boot menu.
 
Finally time to release XTIDE Universal BIOS v1.1.0 (first stable release).
Changes since v1.0.0_RC2:
  • Lite and full operating modes
  • Diagnostic cylinder no longer has to be reserved
  • Slave drives again work without master present
  • 32-bit transfers for VLB and PCI IDE controllers
  • 16- and 32-bit transfers are enabled on all builds
  • Boot menu hotkeys for all drives
  • Drive swapping is handled separately for floppy and hard disk drives so it is now possible to install DOS to any hard disk from any floppy drive
  • INT 13h,AH=15h return value in DL now longer gets corrupted by drive swapping
  • Rewritten drive detection and lots of code cleaning
  • Longer timeout when detecting first drive
  • Minimum number of floppy drives can be specified if autodetection fails
  • Maybe other changes that i have forgotten
XTIDE Universal BIOS v1.1.0 configuration and flashing program (idecfg.com)
  • Now works as a generic EEPROM flasher
  • Improvements to configuration menus
  • SDP can be completely disabled

The zip file now has readme.txt with some sort of documentation. Don't expect new features any time soon. I'll fix bugs if any are found but now i just want to play some old games.

Source codes will be released real soon. First i need to find out how to get them to Google code or SourceForge.
 
Here are some changes that i forgot to mention:
  • CHS parameters can now be specified by user (works like on the old BIOSes where you had to set the parameters manually)
  • Simple and system boot loaders can be used instead of boot menu
  • Detects full size for LBA48 drives

I'm going to use google code to host the project and GPL would probably be the best license. Should i use v2 or v3 of the GPL?
 
[snip]
Should i use v2 or v3 of the GPL?

Hi! Excellent work! Thanks! I suggest GPL v2 as it is far less problematic IMO. GPL v3 overreached and introduced a bunch of unnecessary problems. You may want to consider the BSD licence since it is very flexible and can be distributed as GPL but not necessarily vice versa.

Thanks and have a nice day!

Andrew Lynch
 
I can send sources to anyone that wants it as long as any modifications will be send back to me. XTIDE Universal BIOS is written in 100% Assembly using Nasm syntax. It compiles with Nasm and Yasm (i recommend Nasm since Yasm has a buggy CPU directive).

Can you tell me what version of NASM you use?

Thanks, Bill
 
Back
Top