• Please review our updated Terms and Rules here

Sergey's 8-Bit FDC + XT-IDE

mudmin

Experienced Member
Joined
Jan 5, 2022
Messages
91
Hi, I have Sergey's card and an XT-IDE in my 486 system. It doesn't seem to matter if I configure drives 3 and 4 on the second FDC or the first, it appears as though it's trying to make my 3rd drive Drive C, which is preventing my XT-IDE from booting. The documentation seems to suggest that newer versions of DOS (I'm using 6.22) will deal with this automatically, but mine is not. It works fine with only 2 drives configured (no matter where I configure them).

Any thoughts?
 
To give a little more context, I've tried this in about half a dozen machines now and I can get all 8 drives working, but never with a hard drive of any kind, which makes it pretty useless to me.
I have to be missing something obvious. I've tried every combo of FDC 1 and 2 and DMAs and rom addresses but the third drive is always C, replacing my hard drive.

I've been a massive fan of this card in theory and I'm the one who sent it in to hackaday for this https://hackaday.com/2022/07/25/up-close-and-personal-with-an-8x-floppy-controller/ but so far, I'm just plain stuck.
 
I've had a similar issue - I've had luck bringing up the XT-IDE boot menu, arrowing to a different drive, then back to the hard drive.
If I just enter on the hard drive without first moving off and back on, it doesn't work.
It seems to boot then, assigning floppies to A,B,D,E, etc.
This is all from memory, haven't used it lately
 
Thanks for that. I will give that a shot. I need to see if there are options for that boot menu, mine zips past it pretty quickly.
 
I've had a similar issue - I've had luck bringing up the XT-IDE boot menu, arrowing to a different drive, then back to the hard drive.
If I just enter on the hard drive without first moving off and back on, it doesn't work.
It seems to boot then, assigning floppies to A,B,D,E, etc.
This is all from memory, haven't used it lately
Sounds like a bug in XUB. Can someone please verify if it still exists in the latest revision? BTW, what exactly do you mean when you say "it doesn't work"?
 
In my case it tries to boot to the third floppy drive as if it's the hard drive.
 
Please excuse my ignorance. latest version of what?
I will add that there is a separate set of bugs with the FD Bios where it wouldn't even boot in an 8088 machine until it was rolled back to 2.4
 
I'm guessing you mean XUB but I don't know what that is.
 
I'm guessing you mean XUB but I don't know what that is.
Yes, XTIDE Universal BIOS. It doesn't have to be the very latest revision. I just want to make sure you guys aren't talking about some old ass version from 2013.
 
Oh sorry. Yeah. If mine isn't the latest, it's the second to latest. Plus I've used 2 cards. One I just got off ebay and one I built and flashed myself.
 
Oh sorry. Yeah. If mine isn't the latest, it's the second to latest. Plus I've used 2 cards. One I just got off ebay and one I built and flashed myself.
So it says r624 on boot?
In my case it tries to boot to the third floppy drive as if it's the hard drive.
You mean it's drive C:? If so, that is by design, IIRC. If you have 4 floppy drives then the BIOS will "name" them A to D even though drives C and D will be given different drive letters in DOS. This is because older DOS versions does the same whereas newer DOS versions always assigns drive letter C to the first harddrive and the remaining floppy drives will come after the last harddrive.
 
Last edited:
I will have to check the r624 part.

As far as the other part. That's my issue. Sergey's documentation says
  • It roughtly corresponds to DOS drive letters - drive 0 = A:, drive 1 = B:, drives' letter assignments after drive B: depend on the DOS version. Newer DOS versions, use C: and following letters for hard drive partitions, and place any remaining floppy drives after hard drive letters. For example, on systems with four floppy drives and two HDD partitions, the drives will be assigned as following: A: - floppy drive 0, B: - floppy drive 1, C: - HDD partition 1, D: - HDD partition 2, E: - floppy drive 2, F: - floppy drive 3
What's a "newer" dos version. I'm using DOS 6.22 and getting the behavior he says should not happen. I've confirmed this behavior on 4 motherboards and had a second person with the card confirm on their 286.
So that's kind of my foundational question. Do I need some "newer" version of dos than 6.22 or is there some other issue going on?
 
Sounds like a bug in XUB. Can someone please verify if it still exists in the latest revision? BTW, what exactly do you mean when you say "it doesn't work"?
OK - so I got a chance to run a few tests -

486SX system
Blue Lava 8-bit card with XUB r625 IDE_XT.BIN
Monster Floppy card with Floppy bios 2.6
4x 3.5" floppies configured for 4 drives (2x on 1st controller, 2x on 2nd controller)

Floppy-2.6-test-cfg.png

Default settings - it tries to boot the Drive 2 floppy. It fails even if there is a good diskette. If there is a diskette in 0 and 2 - it accesses both for some reason.

Each of these work for me to get it to boot off the CF hard drive

- press E when the XUB header appears - then it boots the CF "E" drive as C:
OR
- change the Boot Settings -> Number of Floppy Drives from Auto to 4
OR
- Boot Settings -> Default boot drive - change from 80h to 82h

ALSO I tried configuring the Floppy Bios for 8 drives

java_p5S7PGYp9k.png

With 8 drives - Each of these work for me to get it to boot off the CF hard drive

- press I when the XUB header appears - then it boots the CF "E" drive as C:
OR
- Boot Settings -> Default boot drive - change from 80h to 86h

YMMV

Thanks,

Matt
 
Whoa. Thanks for this. So these boot settings...
OR
- change the Boot Settings -> Number of Floppy Drives from Auto to 4
OR
- Boot Settings -> Default boot drive - change from 80h to 82h
They're on xub right?
 
Whoa. Thanks for this. So these boot settings...
OR
- change the Boot Settings -> Number of Floppy Drives from Auto to 4
OR
- Boot Settings -> Default boot drive - change from 80h to 82h
They're on xub right?
Yes - you need to re-flash it after changing settings
Use the XTIDECFG program
 
I will have to check the r624 part.

As far as the other part. That's my issue. Sergey's documentation says

What's a "newer" dos version. I'm using DOS 6.22 and getting the behavior he says should not happen. I've confirmed this behavior on 4 motherboards and had a second person with the card confirm on their 286.
So that's kind of my foundational question. Do I need some "newer" version of dos than 6.22 or is there some other issue going on?
Do not confuse the drives assignment in BIOS (as used by the boot loader) with the DOS drive letters.
BIOS uses numbers 0-7Fh for floppy drives (that is 128 of them theoretically!), and it uses numbers 80h and above for hard drives. Note, actual hard drives, not hard drive partitions. BIOS does not know or care about partitions.
If you use it together with XUP, I recommend that XUP BIOS extension would be initialized after the Multi-Floppy BIOS extension. I am not sure if XUP has problems with having more than 2 floppy drives though...
 
OK - so I got a chance to run a few tests -

486SX system
Blue Lava 8-bit card with XUB r625 IDE_XT.BIN
Monster Floppy card with Floppy bios 2.6
4x 3.5" floppies configured for 4 drives (2x on 1st controller, 2x on 2nd controller)

View attachment 1253628

Default settings - it tries to boot the Drive 2 floppy. It fails even if there is a good diskette. If there is a diskette in 0 and 2 - it accesses both for some reason.

Each of these work for me to get it to boot off the CF hard drive

- press E when the XUB header appears - then it boots the CF "E" drive as C:
OR
- change the Boot Settings -> Number of Floppy Drives from Auto to 4
OR
- Boot Settings -> Default boot drive - change from 80h to 82h

ALSO I tried configuring the Floppy Bios for 8 drives

View attachment 1253629

With 8 drives - Each of these work for me to get it to boot off the CF hard drive

- press I when the XUB header appears - then it boots the CF "E" drive as C:
OR
- Boot Settings -> Default boot drive - change from 80h to 86h

YMMV

Thanks,

Matt
This behavior seems to happen due to the way XUP enumerates the drives for the IPL (initial program loader/boot) purposes is different from the way DOS enumerates drives. It might be a bug or a feature... I'll let Krille decide ;)

The MS-DOS (at least version 6.22 of it), assigns drive letters as follows:
  • A: and B: to the first two floppy drives. If only one drive present, it will be assigned both A: and B: letters... so that it is possible to emulate working with two floppy drives, e.g. copying files from floppy to another floppy
  • Next come HDD primary partitions - of the first HDD, second HDD, etc.
  • After that follow logical drives in extended partitions
  • Next, DOS puts remaining floppy drives
  • CD/DVD ROMs come after that
  • And the rest of the letters can be used for network drives, e.g., if using Microsoft Network client
XUP has a different approach. It assigns the drive letters for the boot menu sequentially, starting from floppy drives, and followed by the hard drives. XUP also does not care about HDD partitions, obviously (expected).
That is if you have 4 floppy drives, XUP will use letters A: - D: for the floppy drives, and the first HDD will have letter E:.
It does seem to skip the "Number of Floppy Drives", before it considers a drive to be an HDD. That is, for example, if you have 2 floppy drives and an HDD, and the "Number of Floppy Drives" is configured to 4, it will still "allocate" letter A: - D: for floppy drives, and your HDD will have letter E:, with letters C: and D: being unused.

Regardless, looking at the code (FloppyDrive.asm, FloppyDrive_GetCountToAX) should correctly detect the number of floppy drives in the system. It will help, of course, if the floppy BIOS would be initialized prior to XUP, so it will return the correct number of floppy drives...

As to your observations:
1. "press E when the XUB header appears - then it boots the CF "E" drive as C:" - With the default settings (I assume the default of "Number of Floppy Drives" is 2), XUP IPL thinks that A: and B: are floppy drives, and the rest are HDDs... and as a result it tries to boot from drive C:, which is actually your floppy drive 2, and then from the floppy drive 0:. Hitting E:, would cause it to boot from the 4th drive (counting from 0), that is your HDD.
2. "change the Boot Settings -> Number of Floppy Drives from Auto to 4". My guess is that during the XUP initialization, Multi-Floppy BIOS was not yet installed, and therefore by default XUP was using 2 drives. Setting that to 4 makes XUP to boot from the 4th drive (counting from zero)
3. "Boot Settings -> Default boot drive - change from 80h to 82h". This is a rather weird... But perhaps XUP tries to reconstruct the BIOS drive number from the letter, and still assumes that C: will be the first HDD.

Without looking to much at XUP code, I don't know why it cares that much about floppy drive numbers at all. I'd think, all it has to do is to add more hard drives, that would use drive numbers 80h and above.
For the boot purpose, it is probably OK to assume that C: is the first HDD, D: is the second HDD, and A: and B: are the first and the second floppy drives respectively. If there is a need to support booting from more floppy drives, it could enumerate these after the hard drives. Not sure how much of the code modification that would entail.
 
Back
Top