• Please review our updated Terms and Rules here

XTIDE Universal BIOS v2.0.0 beta testing thread

The sector issue that you noticed seem to be a error from the bios I was using, the original oprom from the chuckg thread about modifing the xtide.
That BIOS is a mod based on Hargle's BIOS which doesn't support CHS addressing so that's probably why.

Block mode : Set to 0 from max 1 sectors
PIO mode : Max 1, Min cycle times: 383 ns, with IORDY -1 ns
More odd looking stuff right there.

Hope this helps in some way, and thank you very very much for your hard work.

It does, and thank you for the kind words!
 
but 441 and on do not.

This helps very much. r441 has ATA ID validation. The idea is to ignore drives that cannot identify without transfer errors. ATA-5 and later have checksum at the end of ID sector that makes the validation easy. Simpler method is used for ATA-4 and older: P-CHS-parameters must be in valid range (1...16383 Cylinders, 1...16 Heads and 1...63 Sectors Per Track).

It seems P-CHS parameters are correct so it must be the checksum that is causing problem. I suspect that your drive is detected as ATA-5 or later but it does not have checksum byte at the end of ID sector. Can you dump the ID sector (you can use IDentify Device utility from XTIDE Debugging Utilities) so I can see if that is the case?
 
I used the IDentify Device utility on the 64mb, 512mb and 2gb cards.
The 64 and 512 don't work with the 441 and up, but the 2 gb does.
But all of the cards just returned 8080 over and over again. Like this.

The card I'm currently using to test is a XTIDE Rev 1 with the chuck mod.

0000:8080 8080 8080 8080 8080 8080 8080 8080
0008:8080 8080 8080 8080 8080 8080 8080 8080
0016:8080 8080 8080 8080 8080 8080 8080 8080
0024:8080 8080 8080 8080 8080 8080 8080 8080
0032:8080 8080 8080 8080 8080 8080 8080 8080
0040:8080 8080 8080 8080 8080 8080 8080 8080
0048:8080 8080 8080 8080 8080 8080 8080 8080
0056:8080 8080 8080 8080 8080 8080 8080 8080
0064:8080 8080 8080 8080 8080 8080 8080 8080
0072:8080 8080 8080 8080 8080 8080 8080 8080
0080:8080 8080 8080 8080 8080 8080 8080 8080
0088:8080 8080 8080 8080 8080 8080 8080 8080
0096:8080 8080 8080 8080 8080 8080 8080 8080
0104:8080 8080 8080 8080 8080 8080 8080 8080
0112:8080 8080 8080 8080 8080 8080 8080 8080
0120:8080 8080 8080 8080 8080 8080 8080 8080
0128:8080 8080 8080 8080 8080 8080 8080 8080
0136:8080 8080 8080 8080 8080 8080 8080 8080
0144:8080 8080 8080 8080 8080 8080 8080 8080
0152:8080 8080 8080 8080 8080 8080 8080 8080
0160:8080 8080 8080 8080 8080 8080 8080 8080
0168:8080 8080 8080 8080 8080 8080 8080 8080
0176:8080 8080 8080 8080 8080 8080 8080 8080
0184:8080 8080 8080 8080 8080 8080 8080 8080
0192:8080 8080 8080 8080 8080 8080 8080 8080
0200:8080 8080 8080 8080 8080 8080 8080 8080
0208:8080 8080 8080 8080 8080 8080 8080 8080
0216:8080 8080 8080 8080 8080 8080 8080 8080
0224:8080 8080 8080 8080 8080 8080 8080 8080
0232:8080 8080 8080 8080 8080 8080 8080 8080
0240:8080 8080 8080 8080 8080 8080 8080 8080
0248:8080 8080 8080 8080 8080 8080 8080 8080

It's the same for all the cards.

Later,
dabone
 
Last edited:
I took a quick peek at that util in a disassembler and it looks like the I/O base address is assumed to be at 300h. Also, it probably doesn't support the "chuck mod" (which is likely the reason it fails).
 
Ok, Mod's undone and here are the results.

64MB

0000:848A 01EA 0000 0008 0000 0240 0020 0001
0008:EA00 0000 2020 2020 2020 2020 2030 3832
0016:3230 3132 3039 3830 0002 0002 0004 5664
0024:6720 312E 3138 5361 6E44 6973 6B20 5344
0032:4346 422D 3634 2020 2020 2020 2020 2020
0040:2020 2020 2020 2020 2020 2020 2020 0001
0048:0000 0200 0000 0100 0000 0001 01EA 0008
0056:0020 EA00 0001 0100 EA00 0001 0000 0000
0064:0000 0000 0000 0000 0000 0000 0000 0000
0072:0000 0000 0000 0000 0000 0000 0000 0000
0080:0000 0000 0000 0000 0000 0000 0000 0000
0088:0000 0000 0000 0000 0000 0000 0000 0000
0096:0000 0000 0000 0000 0000 0000 0000 0000
0104:0000 0000 0000 0000 0000 0000 0000 0000
0112:0000 0000 0000 0000 0000 0000 0000 0000
0120:0000 0000 0000 0000 0000 0000 0000 0000
0128:0000 0000 0000 0000 0000 0000 0000 2020
0136:2020 2020 2020 2020 2020 2030 3832 3230
0144:3132 3039 3830 0000 0000 0000 0000 0000
0152:0000 0000 0000 0000 0000 0000 0000 0000
0160:0000 0000 0000 0000 0000 0000 0000 0000
0168:0000 0000 0000 0000 0000 0000 0000 0000
0176:0000 0000 0000 0000 0000 0000 0000 0000
0184:0000 0000 0000 0000 0000 0000 0000 0000
0192:0000 0000 0000 0000 0000 0000 0000 0000
0200:0000 0000 0000 0000 0000 0000 0000 0000
0208:0000 0000 0000 0000 0000 0000 0000 0000
0216:0000 0000 0000 0000 0000 0000 0000 0000
0224:0000 0000 0000 0000 0000 0000 0000 0000
0232:0000 0000 0000 0000 0000 0000 0000 0000
0240:0000 0000 0000 0000 0000 0000 0000 0000
0248:0000 0000 0000 0000 0000 0000 0000 0000

512MB

0000:848A 03E1 0000 0010 0000 0240 003F 000F
0008:45F0 0000 2020 2020 3031 3230 3031 4231
0016:3530 3257 3039 3432 0002 0002 0004 4844
0024:5820 322E 3231 5361 6E44 6973 6B20 5344
0032:4346 422D 3531 3220 2020 2020 2020 2020
0040:2020 2020 2020 2020 2020 2020 2020 0001
0048:0000 0300 0000 0200 0000 0003 03E1 0010
0056:003F 45F0 000F 0101 45F0 000F 0000 0407
0064:0003 0078 0078 0078 0078 0000 0000 0000
0072:0000 0000 0000 0000 0000 0000 0000 0000
0080:0400 0000 0000 0000 0000 0000 0000 0000
0088:0000 0000 0000 0000 0000 0000 0000 0000
0096:0000 0000 0000 0000 0000 0000 0000 0000
0104:0000 0000 0000 0000 0000 0000 0000 0000
0112:0000 0000 0000 0000 0000 0000 0000 0000
0120:0000 0000 0000 0000 0000 0000 0000 0000
0128:0000 0000 0000 0000 0000 0000 0000 0000
0136:0000 0000 0000 0000 0000 0000 0000 0000
0144:0000 0000 0000 0000 0000 0000 0000 0000
0152:0000 0000 0000 0000 0000 0000 0000 0000
0160:0000 0000 0000 0000 0000 0000 0000 0000
0168:0000 0000 0000 0000 0000 0000 0000 0000
0176:0000 0000 0000 0000 0000 0000 0000 0000
0184:0000 0000 0000 0000 0000 0000 0000 0000
0192:0000 0000 0000 0000 0000 0000 0000 0000
0200:0000 0000 0000 0000 0000 0000 0000 0000
0208:0000 0000 0000 0000 0000 0000 0000 0000
0216:0000 0000 0000 0000 0000 0000 0000 0000
0224:0000 0000 0000 0000 0000 0000 0000 0000
0232:0000 0000 0000 0000 0000 0000 0000 0000
0240:0000 0000 0000 0000 0000 0000 0000 0000
0248:0000 0000 0000 0000 0000 0000 0000 0000

2GB

0000:848A 0F82 0000 0010 0000 0240 003F 003D
0008:0FE0 0000 2020 2020 3031 3136 3036 4132
0016:3330 3742 3032 3335 0002 0002 0004 4844
0024:5820 342E 3034 5361 6E44 6973 6B20 5344
0032:4346 482D 3230 3438 2020 2020 2020 2020
0040:2020 2020 2020 2020 2020 2020 2020 0004
0048:0000 0300 0000 0200 0000 0003 0F82 0010
0056:003F 0FE0 003D 0104 0FE0 003D 0000 0007
0064:0003 0078 0078 0078 0078 0000 0000 0000
0072:0000 0000 0000 0000 0000 0000 0000 0000
0080:0010 0000 0000 4004 4000 0000 0004 4000
0088:0000 0000 0000 0000 0000 0000 0000 0000
0096:0000 0000 0000 0000 0000 0000 0000 0000
0104:0000 0000 0000 0000 0000 0000 0000 0000
0112:0000 0000 0000 0000 0000 0000 0000 0000
0120:0000 0000 0000 0000 0000 0000 0000 0000
0128:0000 0000 0000 0000 0000 0000 0000 0000
0136:0000 0000 0000 0000 0000 0000 0000 0000
0144:0000 0000 0000 0000 0000 0000 0000 0000
0152:0000 0000 0000 0000 0000 0000 0000 0000
0160:0000 0000 0000 0000 0000 0000 0000 0000
0168:0000 0000 0000 0000 0000 0000 0000 0000
0176:0000 0000 0000 0000 0000 0000 0000 0000
0184:0000 0000 0000 0000 0000 0000 0000 0000
0192:0000 0000 0000 0000 0000 0000 0000 0000
0200:0000 0000 0000 0000 0000 0000 0000 0000
0208:0000 0000 0000 0000 0000 0000 0000 0000
0216:0000 0000 0000 0000 0000 0000 0000 0000
0224:0000 0000 0000 0000 0000 0000 0000 0000
0232:0000 0000 0000 0000 0000 0000 0000 0000
0240:0000 0000 0000 0000 0000 0000 0000 0000
0248:0000 0000 0000 0000 0000 0000 0000 0000

Later,
dabone
 
I thought the Identify Device Utility used BIOS to get the ATA ID but I was wrong. Sorry about that.

Good that you managed to get the ATA ID. WORD 80 tells the ATA version. If bit 2 is set, then drive is ATA-2 drive. If bit 3, then drive is ATA-3 and so on. Zero and FFFFh means no version info is available. The 2 GB card reports being ATA-4 and 64 MB card does not specify ATA version at all. The 512 MB card seems to have some drive specific data since 0400h would mean ATA-10 and there is no such thing.

Then I took a look at CF specification (v4) and it says WORD 80 is reserved (should be set to zero) for CF cards since they do not report ATA version. The 64MB card seems to set it to 0 as CF cards should and 2GB card seems to report the version like hard drives do. I don't know what the 512MB card reports but now I need to modify ATA ID validation code since WORD 80 cannot be assumed to hold version info or no info at all.
 
Ok, tested version 487, and the 512mb works now, but the 64mb is still not seen.


(2 and 4gb are still working fine.)


I finally got the 64mb booting, fdisk, create partition, mark active, reboot, then fdisk /mbr then format c: /s.

Later,
dabone
 
Last edited:
I built the svn this weekend and have been having trouble getting it to work. The build went well after modifying the makefile for linux, and moving Romvars.inc into the correct location. I flashed the bios successfully with an XT-IDE V1, and moved it over to my ethernet card a 3c509 and enabled the boot rom in its configuration. My goal with this setup is to have the universal BIOS break the 504 mb barrier on my 486. The drive in question is a 6.7gb seagate plugged into a promise dc-4030vl. Is this a reasonable configuration and goal?

On booting, the XT-IDE bios showed up, detected the drive and tried to boot C which has a preexisting dos partition. It failed and tried to boot A, which was also plugged into the dc-4030vl. This succeeded, and it booted to an MS-DOS installation disk, but the installer could not detect the hard disk. It was also really really slow. I tried removing my drive from the system bios to let the universal bios handle everything, but the problem remained.

Now when I remove the dc-4030vl and use my goldstar prime 2C multi-function card it exhibits different symptoms. The copyright message shows up, but it doesn't detect any drives. It zips right past the disk search like it's not looking at all. Instead I'm able to put the disk back in the system bios and it works as normal, at full speed. The only indication that it's there is the copyright message/disk search on boot.

Any idea what I'm seeing here? Should I expect this to work or am I missing something important? Should I try this on a stable version before moving to the beta?
 
I don't have any experience about promise dc-4030vl but I do have Prime 2C -based Multi I/O cards and those definitely work. The promise is VLB controller, right? They require native support (or drivers) to get full speed. Few VLB controllers have jumpers to set PIO mode. Those do not require native support or drivers.

Slow speed might be explained by 8-bit access to ROM so enable Shadow RAM from system BIOS. But first it might be best to concentrate getting the Prime 2C to work and then try the Promise. Are you sure you have AT build? (likely since the Promise detected something). The default settings should be fine.

It might be a good idea to try release version first in case something went wrong when building the BIOS.
 
I'm not quite sure what you mean by "native support". Do you mean whether the controller supports DOS natively? Or whether the XTIDE BIOS supports the controller natively? The DC-4030VL supports DOS at full speed without any drivers. It has drivers and a setup utility on ROM. Is that native support?

I will get things working with the Prime 2C and then play more with the 4030VL. I'm using the 386 BIOS if it matters. I just realized I probably have to reflash the chip to configure it for a 16-bit card.
 
If the DC-4030VL has ROM, then it has its own BIOS to control the drives connected to it. Just like you are trying to use XTIDE Universal BIOS to take control of the drives. You need to disable DC-4030VL ROM BIOS if you want to use XTIDE Universal BIOS to handle drives connected to DC-4030VL. Without native support, XTIDE Universal BIOS handles VLB and PCI controllers just like they would be standard 16-bit ISA IDE controllers. At the moment XTIDE Universal BIOS has native support for Vision QD6500 and QD6580 based VLB IDE controllers.

Most VLB IDE controllers require software support that motherboard BIOSes don't have. I believe most people never used DOS drivers for VLB Multi I/O cards (I never did). Without the drivers and BIOS support they gained nothing from using VLB instead of 16-bit ISA (unless the VLB controller had jumpers to set PIO mode).
 
Ah, I wasn't sure whether the XTIDE BIOS would replace the controller's BIOS or just the system BIOS. I was hoping it just replaced the hard disk detection part of the system bios, leaving the controller to function as if it was placed in a system with a more capable bios. If it completely takes over the card, I guess I'm not going to be getting caching while the XTIDE bios is on there. There is a driver required for accessing drives 3 & 4, I wonder if it would also enable caching in the presence of the XTIDE bios. Something for me to try.

Would you be interested in an extended loan of the DC-4030VL, for as long as it takes to add support to the universal bios? You're probably busy fixing bugs for the 2.0 release, but if you're interested in including support in v2.1 or whatever let me know.
 
Don't know if this was posted yet, but I can't get the ide_xtpl.bin to work on beta 2. The regular one works fine, ide_xtp.bin.

I have a 256kbit EEPROM and it's definitely setup correctly. It flashes without error, and can even be read without error.

Any ideas? Not that there's much that I need from it anyway.

When I try to use the large one, my POST shows "ROM ERROR E000"

EDIT: Also, holding down Control on the ide_xtp.bin BIOS, isnt skipping the routine. I have literally no way to boot to floppy, as there's not even an option in the configuration utility to set a delay unless I use the xtpl BIOS I can't even use.
 
Last edited:
Here is a small program to detect IDE controllers. Drive must be present as it is not possible to detect controller card without drive. I'll implement device and port auto detection to XTIDE Universal BIOS when the code works well enough.
The program scans for all possible ports and tries to detect if drive is connected to standard IDE Controller (multi I/O-cards etc), XTIDE rev 1, XTIDE rev 2 or modded rev 1, XT-CF or JR-IDE/ISA. It displays what it found and where.

What I'm interested to know:
  • Does detection work if there are both master and slave drives
  • Does detection work if other drive is CD-ROM-drive
  • Does detection work if there is slave drive without master
  • Does is correctly detect controller type
  • Does it detect all drives the system has

Thanks to all who wants to help.
 
My results:

Machine: XT clone with XT IDE rev1 at 300h, CF2IDE adapter, 128 MB CF as master, no slave.
Result: Controller detected as XT IDE rev1 at 300h.

Machine: XT clone with XT IDE rev1 at 300h, CF2IDE adapter, no master, 128 MB CF as slave
Result: Controller detected XT IDE rev1 at 300h.

Machine: XT clone with XT IDE rev1 at 300h, CF2IDE adapter, 128 MB CF as master, 128 MB CF as slave
Result: Controller detected as XT IDE rev1 at 300h.

Machine: XT clone with 16 bit Multi I/O in 8 bit slot at 1F0h, XTIDE Universal Bios (CF 8bit mode) in NIC ROM Socket, CF2IDE adapter, 128 MB CF as master, no slave
Result: Controller detected as Standard IDE Controller at 1F0h.

Machine: PS/2 Model 30-286 with Sound Blaster 16 IDE at 170h, XTIDE Universal Bios in NIC ROM Socket, CF2IDE adapter, 2GB Microdrive as master, no slave
Result: Controller detected as Standard IDE Controller at 170h..

Machine: ACER 486DX33 with on board IDE at 1F0h, XTIDE Universal Bios in NIC ROM Socket, 3GB IDE HDD as master, 48X CD-ROM as slave.
Result: Controller detected as Standard IDE Controller at 1F0h.


Complex test:
Machine: XT clone with:
- XT IDE rev1 at 300h, CF2IDE adapter, 128 MB CF as master, no slave. Onboard BIOS Disabled
- 16 bit Multi I/O in 8 bit slot at 1F0h, CF2IDE adapter, 128 MB CF as master, no slave. No BIOS managing this controller.
- Sound Blaster 16 IDE in 8 bit slot at 170h, CF2IDE adapter, 2GB CF as master, no slave. No BIOS managing this controller.
Results:
-XT IDE rev1 at 300h.
-Standard IDE Controller at 1F0h.
-Standard IDE Controller at 170h.

Impressive.
 
Machine: XT clone with XT-CF-Lite BIOS from James:
- XT-CF-Lite at 300h, 1024MB CF card
- XT IDE rev2 at 280h, 800MB Fujitsu HDD as master
Results:
XTIDE rev1 found at port 280h/288h
XT-CF rev 2, 3 or Lite found at port 300h/310h

As soon as I try BIOS 2.0.0B2, configure it to use two controllers matching results from idedtct, I can not boot form CF or HDD anymore. Even configuring BIOS solely for XT-CF-Lite makes it unusable. I also tried configuring it for combination XT-CF-Lite and XTIDE rev2 with no succes. And that's interesting, even the idedtct can not detect both cards then.

Both cards work when they are in the system alone and configured for port 300h. BIOS chip on XTIDE was disabled when they were both engaged.

aitotat I need help :confused:
 
IBM XT 5160, XT ide rev1 (no chuck mod) with Compact flash adapter CF-IDE40 V.E0 (B in the picture on the wiki) 4 Gb compact flash card and latest revision r504 universal bios.

When i ran idedtct the result was " No IDE Controllers Found "

I've had no problems with this setup and only upgraded to r504 today and still working great :) Will try some more IDE cards / CF adapters tomorrow.
 
When I try to use the large one, my POST shows "ROM ERROR E000"

Sounds like checksum is not correct so the BIOS on you motherboard does not initialize XTIDE Universal BIOS. I suspect that only 8k is visible or there are address conflicts. Possibly part of the 32k area you are trying to use is used by some other ROM.

EDIT: Also, holding down Control on the ide_xtp.bin BIOS, isnt skipping the routine. I have literally no way to boot to floppy, as there's not even an option in the configuration utility to set a delay unless I use the xtpl BIOS I can't even use.

It can be hard to find correct time to hold down CTRL on some systems. You do not need it to boot from floppy drive. There are hotkeys displayed on top of screen when drives are being detected. Just press drive letter key to select primary boot device. For example press A during drive detection and floppy drive A is selected as first boot device.
 
Back
Top