VOGONS


First post, by BurnedPinguin

User metadata
Rank Newbie
Rank
Newbie

After seeing many people use things like networking cards and similar in order to add XTIDE BIOSes to their computers that either lack IDE BIOSes or that have buggy IDE BIOSes, I was inspired to see if I can make a floppy diskette which would steal a little bit of conventional memory (around 8k), and copy an XTIDE BIOS there, and then boot it. After numerous attempts and in different ways, I created the XUBDisk.

The XUBDisk is a set of diskettes (360k, 720k, 1.2MB, 1.44MB) that when booted, load the XTIDE Universal BIOS which enumerates hard drives on controllers located on ports 300h (for XTIDE cards), and 1F0h+170h (for regular IDE controllers), and then boots the first located hard drive.

This is achieved by copying the XTIDE BIOS to the last 8k of conventional memory (for 640k, segment 9E00h), and then initialising it (which makes the XTIDE BIOS hook int19h), and then calling int19h. You can then remove the XUBDisk from your floppy drive and the XTIDE BIOS will remain in memory for the entire session of the computer, as the XTIDE BIOS is copied to memory.

MS-DOS will report 8k of conventional memory less than your system actually has, because the counter your system BIOS provides is decremented by 8k, and that counter is what MS-DOS reads.

The XUBDisk is useful for any instance where you need the XTIDE Universal BIOS but do not have a card to hold it in the form of an option ROM. For example, if you have an XT class machine with a dumb IDE controller, your system BIOS does not have the necessary IDE routines for it, and you can use XUBDisk every time you boot your computer in order to give it the necessary IDE routines. Or, XUBDisk can work as a form of dynamic drive overlay (DDO), in the case where your system BIOS provides IDE services but they are buggy (size limitations, LBA limitations), so you can use the XUBDisk every time you use that kind of system as well to be able to use bigger hard drives and get LBA support in MS-DOS.

XTIDE Universal BIOS licensed under GNU/GPL 2.0.
XUB Loading Bootsector (own creation) licensed under GNU/GPL 2.0. (source included for all three variants, 9 sector per track floppies, 15 sector per track floppies, 18 sector per track floppies.)

It's obviously difficult to prove with screenshots, but here's the 86Box emulator showing XUBDisk with the hard drives disabled in the system BIOS. As you can see in the first shot, the floppy disk activity light is on and reading, and then XTIDE BIOS comes up, and boots MS-DOS from the hard drive. You can also see that XTIDE Universal BIOS is loaded into segment 9E00h, which is not usually a segment reserved for option ROMs, but it is the last 8k of the 640k of conventional memory on my system.

Last edited by BurnedPinguin on 2024-02-03, 22:55. Edited 1 time in total.

Reply 1 of 10, by Nexxen

User metadata
Rank l33t
Rank
l33t

I will definitely try it!
Good job!!!

PC#1 Pentium 233 MMX - 98SE
PC#2 PIII-1Ghz - 98SE/W2K

Reply 2 of 10, by darry

User metadata
Rank l33t++
Rank
l33t++

Nice and thank you for sharing.

It is good to have an easy to use option for doing this.

[1] describes a similar way to do it manually in quite a few steps and [2] allows loading and running most any option ROM, including XTIDE, from DOS.

[1]
https://web.archive.org/web/20210815130317/ht … ROM=#post643159

[2]
https://github.com/rvalles/optromloader

Reply 3 of 10, by BurnedPinguin

User metadata
Rank Newbie
Rank
Newbie
darry wrote on 2024-01-10, 11:10:
Nice and thank you for sharing. […]
Show full quote

Nice and thank you for sharing.

It is good to have an easy to use option for doing this.

[1] describes a similar way to do it manually in quite a few steps and [2] allows loading and running most any option ROM, including XTIDE, from DOS.

[1]
https://web.archive.org/web/20210815130317/ht … ROM=#post643159

[2]
https://github.com/rvalles/optromloader

This project initially started with me making my own DOS program to load the XUB from a DOS boot disk, and that did work, however, XUB couldn't actually boot the hard drives, it always hung on booting C. I couldn't figure out why that was, and I went the roundabout way, which turned out to be much faster as it's just a boot sector (the entire code is just 65 bytes long) that copies 16 sectors from the disk into memory.

Also, my diskette could very easily be modified to boot other option ROMs, just change the size you need to steal from conventional memory in the appropriate boot sector code for your diskette type, maybe change the interrupts that get invoked depending on what your option ROM hooks, put the option ROM in place of the XUB ROM in my diskette, and it should work. But I cannot guarantee other option ROMs will work as perfectly as XUB does because I have not tested.

Reply 4 of 10, by darry

User metadata
Rank l33t++
Rank
l33t++
BurnedPinguin wrote on 2024-01-10, 11:22:
darry wrote on 2024-01-10, 11:10:
Nice and thank you for sharing. […]
Show full quote

Nice and thank you for sharing.

It is good to have an easy to use option for doing this.

[1] describes a similar way to do it manually in quite a few steps and [2] allows loading and running most any option ROM, including XTIDE, from DOS.

[1]
https://web.archive.org/web/20210815130317/ht … ROM=#post643159

[2]
https://github.com/rvalles/optromloader

This project initially started with me making my own DOS program to load the XUB from a DOS boot disk, and that did work, however, XUB couldn't actually boot the hard drives, it always hung on booting C. I couldn't figure out why that was, and I went the roundabout way, which turned out to be much faster as it's just a boot sector (the entire code is just 65 bytes long) that copies 16 sectors from the disk into memory.

Also, my diskette could very easily be modified to boot other option ROMs, just change the size you need to steal from conventional memory in the appropriate boot sector code for your diskette type, maybe change the interrupts that get invoked depending on what your option ROM hooks, put the option ROM in place of the XUB ROM in my diskette, and it should work. But I cannot guarantee other option ROMs will work as perfectly as XUB does because I have not tested.

Thank you once again for your work and for the added context . Next time I need to test XUB, I will give XUBDisk a spin .

Reply 5 of 10, by BurnedPinguin

User metadata
Rank Newbie
Rank
Newbie

New! XUBDisk version 1.1, it can now boot on XT systems.

TESTING WANTED: users of (various) XTIDE cards or XT systems with BIOS-less controllers, please report if it works for you, and if it does, with which IDE controller card you used it.

The latest ZIP has been attached to the starting POST.

Reply 6 of 10, by elsdrag00n

User metadata
Rank Newbie
Rank
Newbie

I'm really excited to try this today. I've been trying to get a CF card reader working in an old 286 Saumsung laptop that has no room for an XTIDE card. Crossing my fingers.... I'm going in!

PROGRESS!

Update: My previous issue was that I could install DOS to the CF cards I was trying, but I could never copy data, boot from, or run executables from the CF card. I could browse it with dir commands but that was it. My BIOS didn't have any way to input custom HDD parameters.

Using the 1.44mb floppy image you provided, it can detect different flash cards correctly by name. Then I'm able to hotswap the A: to a bootable dos disk, boot from that, and then head to my new C: and run programs off the CF card! YES!

Update 2: Finally got a CF card to format correctly and boot without any additional floppy disk shenanigans. Thank you *so much* for this!

The laptop is a Samsung S3600, a 286 12mhz. I'm using the Startech CF card reader from Amazon and a 64mb CF card. It's replacing a OEM 40mb mech drive.

Reply 7 of 10, by Xundi

User metadata
Rank Newbie
Rank
Newbie

Thank you very much for this project.
I was able to successfully use the 1.1 version on a 386 "Olivetti PCS 11" machine which has an Acer M5105 I/O controller integrated. (Motherboard: Olivetti
BA013)
The board's BIOS has very limited HDD support, and I wasn't able to get it recognize any CF card.
With this floppy, I can use my CF cards with the integrated controller. (For this machine, I used an IDE cable with PIN 28 - CS removed)

Reply 8 of 10, by BurnedPinguin

User metadata
Rank Newbie
Rank
Newbie

I appreciate everyone trying out the project and reporting their results.

elsdrag00n wrote on 2024-05-22, 16:48:
I'm really excited to try this today. I've been trying to get a CF card reader working in an old 286 Saumsung laptop that has n […]
Show full quote

I'm really excited to try this today. I've been trying to get a CF card reader working in an old 286 Saumsung laptop that has no room for an XTIDE card. Crossing my fingers.... I'm going in!

PROGRESS!

Update: My previous issue was that I could install DOS to the CF cards I was trying, but I could never copy data, boot from, or run executables from the CF card. I could browse it with dir commands but that was it. My BIOS didn't have any way to input custom HDD parameters.

Using the 1.44mb floppy image you provided, it can detect different flash cards correctly by name. Then I'm able to hotswap the A: to a bootable dos disk, boot from that, and then head to my new C: and run programs off the CF card! YES!

Update 2: Finally got a CF card to format correctly and boot without any additional floppy disk shenanigans. Thank you *so much* for this!

The laptop is a Samsung S3600, a 286 12mhz. I'm using the Startech CF card reader from Amazon and a 64mb CF card. It's replacing a OEM 40mb mech drive.

If you're quick enough, once the actual XTIDE BIOS starts, you can freely swap out the diskette for another one, and tell XTIDE to boot from drive A. This is because XTIDE gets loaded in memory, and once it launches, no further reading from floppy is done by XUBDisk.

Reply 9 of 10, by Gammitin

User metadata
Rank Newbie
Rank
Newbie
BurnedPinguin wrote on 2024-01-10, 10:28:
After seeing many people use things like networking cards and similar in order to add XTIDE BIOSes to their computers that eithe […]
Show full quote

After seeing many people use things like networking cards and similar in order to add XTIDE BIOSes to their computers that either lack IDE BIOSes or that have buggy IDE BIOSes, I was inspired to see if I can make a floppy diskette which would steal a little bit of conventional memory (around 8k), and copy an XTIDE BIOS there, and then boot it. After numerous attempts and in different ways, I created the XUBDisk.

The XUBDisk is a set of diskettes (360k, 720k, 1.2MB, 1.44MB) that when booted, load the XTIDE Universal BIOS which enumerates hard drives on controllers located on ports 300h (for XTIDE cards), and 1F0h+170h (for regular IDE controllers), and then boots the first located hard drive.

This is achieved by copying the XTIDE BIOS to the last 8k of conventional memory (for 640k, segment 9E00h), and then initialising it (which makes the XTIDE BIOS hook int19h), and then calling int19h. You can then remove the XUBDisk from your floppy drive and the XTIDE BIOS will remain in memory for the entire session of the computer, as the XTIDE BIOS is copied to memory.

MS-DOS will report 8k of conventional memory less than your system actually has, because the counter your system BIOS provides is decremented by 8k, and that counter is what MS-DOS reads.

The XUBDisk is useful for any instance where you need the XTIDE Universal BIOS but do not have a card to hold it in the form of an option ROM. For example, if you have an XT class machine with a dumb IDE controller, your system BIOS does not have the necessary IDE routines for it, and you can use XUBDisk every time you boot your computer in order to give it the necessary IDE routines. Or, XUBDisk can work as a form of dynamic drive overlay (DDO), in the case where your system BIOS provides IDE services but they are buggy (size limitations, LBA limitations), so you can use the XUBDisk every time you use that kind of system as well to be able to use bigger hard drives and get LBA support in MS-DOS.

XTIDE Universal BIOS licensed under GNU/GPL 2.0.
XUB Loading Bootsector (own creation) licensed under GNU/GPL 2.0. (source included for all three variants, 9 sector per track floppies, 15 sector per track floppies, 18 sector per track floppies.)

It's obviously difficult to prove with screenshots, but here's the 86Box emulator showing XUBDisk with the hard drives disabled in the system BIOS. As you can see in the first shot, the floppy disk activity light is on and reading, and then XTIDE BIOS comes up, and boots MS-DOS from the hard drive. You can also see that XTIDE Universal BIOS is loaded into segment 9E00h, which is not usually a segment reserved for option ROMs, but it is the last 8k of the 640k of conventional memory on my system.

Hi BurnedPinguin, first thank you so much for creating this, it's an amazing piece of work. I'm currently testing and having excellent results:
Pentium III
486
386
286 👍
A game changer for laptops!
https://x.com/Gammitin/status/187385493526120 … BbZx5vYZog&s=19

Reply 10 of 10, by BurnedPinguin

User metadata
Rank Newbie
Rank
Newbie
Gammitin wrote on 2025-01-08, 15:31:
Hi BurnedPinguin, first thank you so much for creating this, it's an amazing piece of work. I'm currently testing and having exc […]
Show full quote

Hi BurnedPinguin, first thank you so much for creating this, it's an amazing piece of work. I'm currently testing and having excellent results:
Pentium III
486
386
286 👍
A game changer for laptops!
https://x.com/Gammitin/status/187385493526120 … BbZx5vYZog&s=19

Absolutely, thank you for testing and spreading the word! Concerns and feedback welcome here