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.

Attachments

  • Filename
    xubdisk.zip
    File size
    36.72 KiB
    Downloads
    28 downloads
    File comment
    XUBDisk v1.1
    File license
    GPL-2.0-or-later
  • Filename
    xubdisk.zip
    File size
    38.1 KiB
    Downloads
    34 downloads
    File comment
    XUBDisk v1.0
    File license
    GPL-2.0-or-later
  • image (5).png
    Filename
    image (5).png
    File size
    17.06 KiB
    Views
    564 views
    File comment
    Floppy loading XTIDE into RAM
    File license
    Public domain
  • image (6).png
    Filename
    image (6).png
    File size
    18.94 KiB
    Views
    564 views
    File comment
    XTIDE's INT19h routine
    File license
    Public domain
  • image (7).png
    Filename
    image (7).png
    File size
    19.32 KiB
    Views
    564 views
    File comment
    DOS booted
    File license
    Public domain
Last edited by BurnedPinguin on 2024-02-03, 22:55. Edited 1 time in total.

Reply 2 of 5, 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 5, 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 5, 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 5, 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.