VOGONS


First post, by Xtrapol8er

User metadata
Rank Newbie
Rank
Newbie

I received an old 486 PC as a Christmas present, and I've been having a bunch of problems with trying to get it to boot from any IDE devices. (First post here, so please be nice. I'm kind of clueless.)

At first, I tried booting it from a compact flash card adapter and an industrial CF card, which would only make the computer hang on boot. As per this old thread, this was perhaps a problem with the BIOS not liking IDE-CF adapters, which checked out since my computer (an old Packard Bell) does indeed have a Phoenix BIOS from the right time period (1992-3). However, when I put a real hard disk into the machine, a 1.2 GB Seagate ST31277A, it is detected, but MS-DOS setup always fails at 99% when attempting to copy COMMAND.COM.

If I boot from a floppy disk to see what happened, the files are on the disk and I can list them, but trying to read or write anything from the disk fails with a drive not ready error. These same symptoms occurred when I tried to use the IDE-CF adapter connected to a dedicated IDE controller card rather than using the motherboard IDE, which is why I switched to a real hard drive. I know that the hard drive's geometry is correct as per IDEINFO.EXE, and it matches up with the C/H/S numbers printed on the drive (2482/16/63). I do need to put the geometry in manually every time, since there is no drive auto-detection. I am aware of drive size limitations of the time, but I was under the impression that limiting you drive's size wouldn't break booting from it, it would just not allow you to access the whole thing. Either way, the motherboard allows me to put in up to 9999 cylinders, and saves it to the CMOS that way too.

At this point, I'm ready to call it quits and write this whole thing off as a failure, but I figured I would post here to see if anybody could offer any insight.

If it helps, the motherboard has the exact same layout as this Packard Bell PB400 and is likely very similar, the only difference being that it has more onboard RAM.

Reply 1 of 12, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

First I would make sure the drive is truly wiped and gets partitioned, an MBR written, etc. in the machine where it is going to run and not elsewhere.

You might try setting the BIOS to 1024/16/63 instead of anything higher, and disable LBA, multi sector, and any autodetection stuff - that might even fix the CF card

If all else fails you should be able to use translation software like OnTrack (which was officially blessed as legal abandonware by the company that made it) or EZ-Drive. That greatly cuts out any BIOS IDE support

If you do Linux you could try one of those old two-floppy Linux distros like SmallLinux to boot and try accessing the HDD through the IDE support in the kernel without any cooperation from the BIOS, to make sure it isn't a hardware issue.

Reply 2 of 12, by Xtrapol8er

User metadata
Rank Newbie
Rank
Newbie

Thanks for the advice. I've tried running fdisk /mbr on both the CF card and the hard drive, but in both cases it doesn't seem to help. The BIOS is dead simple, so there isn't any LBA or autodetection settings to speak of. I just tried limiting the size of the hard drive to 504 MB, but it just failed to copy COMMAND.COM again. I can try OnTrack or EZ-Drive, I'll let you know if they work any better.

Reply 3 of 12, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

Good luck
https://www.philscomputerlab.com/ontrack-disk-manager.html
Don't forget to set boot order in BIOS (if available) to C: then A:. The little stub of OnTrack code must load from C: first even if you want to boot from floppy

Reply 4 of 12, by Horun

User metadata
Rank l33t++
Rank
l33t++
Xtrapol8er wrote on 2024-01-22, 23:17:

I know that the hard drive's geometry is correct as per IDEINFO.EXE, and it matches up with the C/H/S numbers printed on the drive (2482/16/63). I do need to put the geometry in manually every time, since there is no drive auto-detection.

Can you explain ? You should only have to enter it once in BIOS and save then exit. If it is not saving it then it could be dead/missing cmos battery or the bios does not like those numbers.
If you jumper the drive to <540 it should change the C/H/S to something like 1023/16/63 (527Mb AKA 504Mb) so that it "appears" less than 540Mb.

Hate posting a reply and then have to edit it because it made no sense 😁 First computer was an IBM 3270 workstation with CGA monitor. Stuff: https://archive.org/details/@horun

Reply 5 of 12, by davidrg

User metadata
Rank Member
Rank
Member

Sounds rather similar to the issues someone else was having with a DECpc LPv 466d2 - that machine was from 1993, has a Phoenix BIOS, and also ran into issues copying command.com while installing MS-DOS. I gave my slightly newer one a quick test with a CF card adapter and a random 1GB CF card and while DOS installed fine, the machine would crash trying to boot from it, while another much older 256MB CF card booted just fine.

So I guess these older Phoenix BIOSes are just a bit problematic when it comes to CF cards. If OnTrack doesn't fix the issue I guess it might be worth trying to find some 90s/early 2000s CF cards, or maybe a SCSI card and a SCSI drive emulator like BlueSCSI

Reply 6 of 12, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie
davidrg wrote on 2024-01-23, 03:48:

Sounds rather similar to the issues someone else was having with a DECpc LPv 466d2 - that machine was from 1993, has a Phoenix BIOS, and also ran into issues copying command.com while installing MS-DOS. I gave my slightly newer one a quick test with a CF card adapter and a random 1GB CF card and while DOS installed fine, the machine would crash trying to boot from it, while another much older 256MB CF card booted just fine.

So I guess these older Phoenix BIOSes are just a bit problematic when it comes to CF cards. If OnTrack doesn't fix the issue I guess it might be worth trying to find some 90s/early 2000s CF cards, or maybe a SCSI card and a SCSI drive emulator like BlueSCSI

If it gets to that point, an Ethernet card with XT-IDE BIOS on it as the boot ROM should bypass all issues without having to go to SCSI.
Hang in there OP, one way or another it will work, no reason to "write this whole thing off as a failure"

Reply 7 of 12, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
Xtrapol8er wrote on 2024-01-22, 23:17:

At first, I tried booting it from a compact flash card adapter and an industrial CF card, which would only make the computer hang on boot. As per this old thread, this was perhaps a problem with the BIOS not liking IDE-CF adapters, which checked out since my computer (an old Packard Bell) does indeed have a Phoenix BIOS from the right time period (1992-3). However, when I put a real hard disk into the machine, a 1.2 GB Seagate ST31277A, it is detected, but MS-DOS setup always fails at 99% when attempting to copy COMMAND.COM.

Your BIOS can't see a IDE-CF adapter. An IDE to CF adapter is simply a device that connects the wires from a 40 pins IDE + 4 pin Molex to a single 50 pin CF connector. There's no logic there, just wires, occasionally some voltage conversion, but ultimately nothing visible to the BIOS or OS. Your CF is just another IDE storage device with a funny pin out.

The problem sounds like your computer has trouble with larger IDE drives. There's a lot of different possible spots for old an BIOS to choke on a newer IDE so it's not surprising that the BIOS might work with a drive < 512MB, fail a little with a drive < 2GB and fail completely with a drive > 2GB. Sometimes the limit is 8GB . Sometimes it's 30GB. Sometimes it's 128GB. I've tried to lay out some of the pain points here.

The simplest thing to do is set your drive to "type 1" in the bios and use a drive overlay like EZ Drive 9.09wto replace your BIOS's int 13 handle after bootup. You just need to have a working floppy drive. That works like 97% of the time.

XUB (XTide Universal BIOS) is also a very good option, but takes a little bigger investment in hardware if you don't have a spare rom burner and card with an option ROM slot. That works like 99% of the time.

The only thing that works 100% of the time is sticking with drives <= 512MB.

Reply 8 of 12, by exiled350

User metadata
Rank Newbie
Rank
Newbie

I fought with the same 99% command.com problem for weeks. Tried different disks, different sources for disk images, different compact flash cards. What ended up fixing it in the end was to flash XT-IDE to an eprom and drop it into an Ethernet card I had for the system. Worked perfectly after that.

Reply 9 of 12, by Xtrapol8er

User metadata
Rank Newbie
Rank
Newbie

I just booted Linux from a floppy disk (thanks for the suggestion jakethompson1), and it saw the hard drive perfectly with no issues. I was able to copy to and from the drive with no cryptic errors, which pretty much tells me that the problem is definitely in the BIOS somewhere. I don't already have any hard disks smaller than 512 MB, so I suppose my next step is to install some overlay software. I'll let you know if I have any issues with that, but thanks for the help. I assume that OnTrack or EZ-Drive do some fiddling with the partition table, so I can't just mount the drive on a modern computer to transfer files, but I do have CDs, and I was thinking of buying a network card later anyway, and I could use something like mTCP. An XT-IDE BIOS might be in my future, but I've spent far too much of my own money on this at this point, so I think I'll stick with just a network card.

Reply 10 of 12, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
Xtrapol8er wrote on 2024-01-23, 22:21:

I just booted Linux from a floppy disk (thanks for the suggestion jakethompson1), and it saw the hard drive perfectly with no issues. I was able to copy to and from the drive with no cryptic errors, which pretty much tells me that the problem is definitely in the BIOS somewhere. I don't already have any hard disks smaller than 512 MB, so I suppose my next step is to install some overlay software. I'll let you know if I have any issues with that, but thanks for the help. I assume that OnTrack or EZ-Drive do some fiddling with the partition table, so I can't just mount the drive on a modern computer to transfer files, but I do have CDs, and I was thinking of buying a network card later anyway, and I could use something like mTCP. An XT-IDE BIOS might be in my future, but I've spent far too much of my own money on this at this point, so I think I'll stick with just a network card.

EZ drive 9.09 should make partitions that are visible if you take the drive to a computer that supports LBA addressing, but it will erase the drive when you install it.

Reply 11 of 12, by wierd_w

User metadata
Rank Member
Rank
Member

If you can get XT-IDE on a nic, that is really a better option. However, EZ-Drive should work fine as well.

As for "The BIOS hangs when a CF-IDE is present", it is important to stress that those are straight up EIDE, and not OG ATA-1, like those old BIOSes expect. There were special rate/geometry limiting jumpers on period accurate drives larger than 512mb, which limited/changed the way the drives communicated.

CF-IDE adapters lack this functionality.

This is not really an issue with the controller, (as PIO-4 is usually readily attainable on CF-IDE and pals, and in some cases, multiword DMA-2) and totally a limitation of the BIOS' implementation of software interrupt 13.

This is solved with either a new bios, an option rom that takes over (XT-IDE), or a DDO that gobbles some RAM for a software defined int13h handler. (Or, with an OS that does proper 32bit disk access, like Linux, and ignores the BIOS completely.)

It is ENTIRELY possible to get past the "It makes the system hang!!" nonsense with some cleverness, such as XT-IDE, by telling the system bios that "No drive is present", preventing the scan that causes the hang-- the option rom then takes over, probes the IDE chain, and sets up the drive and int13 handler.

Tertiary IDE controllers (like found on an SB16) can also be used if a suitable option ROM that does this pre-boot enumeration and setup in the disk registers is used.

Reply 12 of 12, by douglar

User metadata
Rank Oldbie
Rank
Oldbie
wierd_w wrote on 2024-01-24, 07:39:

As for "The BIOS hangs when a CF-IDE is present", it is important to stress that those are straight up EIDE, and not OG ATA-1, like those old BIOSes expect. There were special rate/geometry limiting jumpers on period accurate drives larger than 512mb, which limited/changed the way the drives communicated.

CF-IDE adapters lack this functionality.

Nice post but I think you are confusing ATA1 with ATA-0, and just to repeat, CF-IDE adapters don't have any more functionality than a 40 to 44pin converter. All of the functionality is in the IDE drive firmware and controller. CF's have been in production for the last 25 years, so there's a lot of different CF functionality out there. I wouldn't want to lump them into a single category any more than I'd lump all IDE drives into a single category.

Here's the timeline I follow:

  • IDE was what existed before July 1994, which was later renamed to "ATA-0". It supported CHS addressing up to 512MB (Cylinders <= 1023, Heads <= 16, Sectors/Track <= 63). These BIOS might let you enter larger values in the BIOS drive table, but they wouldn't function correctly assuming your computer didn't just crash immediately. Sometimes ATA-0 BIOS or ATA-0 drives support LBA, but it is LBA22 addressing and this is often more of a problem than a feature since LBA22 never really caught hold in the market and is more just a protocol trap if the drive or BIOS mistakes the offer of LBA22 communication for LBA28 or 48. LBA28 or LBA48 support can be added to these systems (in most cases) with a drive overlay or an option ROM like XUB (XtIDE Universal BIOS).
  • ATA-1 (aka ATA or AT-Attachment) was current from July 1994 to May 1996. ATA-1 BIOS sometimes supported ECHS up to 2GB using Cylinder values up to 4095 but Cylinder values > 1023 were not supported in DOS before MS DOS 7.1 (aka Win95 OSR2) which was a separate problem that prevented FDISK from seeing the entire drive. Between ATA-1 to ATA4, BIOS often supported LBA28 with varying levels of success when paired with modern drives. Sometimes old BIOS won't work with newer drives if LBA is enabled.
  • ATA-2 (aka EIDE, Fast ATA, Ultra ATA ) was current from May 1996 to Feb 1997. ATA-2 BIOS usually supported ECHS with a limit somewhere between 4GB and 8GB. This is the age of "My PC doesn't auto-detect the drive the same way as your PC". I taped lots of sticky notes on drives during this period so I could move the drive to a new computer and keep the same CHS settings. ECHS addressing maxed out at C<=1023, H<=255, S<=63.
  • ATA-3 was current from Feb 1997 to Aug 1999. ATA-3 BIOS usually supported drives up to 32GB (C<=65535, H<=255, S<=63) . The larger cylinder values could now be used because systems with larger drives had moved past the 1023 cylinder limit of DOS 6.22 or Win95 RTM. LBA28 was getting pretty stable by this point for drives between 8GB and 32GB. This is when the Max cylinder jumpers I remember started to show up in drives, because some BIOS would perform erratically if a drive reported Cylinders >65535. Also, I noticed that old drives don't work in systems from this period or newer if the system tries to talk LBA to the drive. This problem has a distinctive, highly alarming "clang clang clang" sound as the drive heads get slammed around
    The drives sound like they are dying, but it reality they just didn't understand modern LBA. The first CF devices came out during this period and ATAPI started getting wide spread.
  • ATA-4 (aka Ultra ATA/33) came out in Aug 1999 and these BIOS usually worked well up to 128GB with LBA-28. Burning CD-ROM disks using ATAPI devices was mostly reliable at this point if UDMA was enabled. ATA-1 through ATA-4 was a period where I find the most unexpected IDE issues when I try to mix parts from different time periods together, and often it's very specific to the combination of device & firmware & bios. I'm starting to appreciate the "no smarts" VLB controllers that had jumpers to set the ATA speed because you know what is going on and you don't have to guess about what sort of interaction the BIOS is having with the drive firmware.
  • ATA-5 (aka Ultra ATA/66, UDMA/66 ) came out in Sept 2001. 80 conductor IDE cables were introduced. UDMA/66 made IDE devices very competitive with contemporary SCSI for most desktop uses.
  • ATA-6 (aka Ultra ATA/100) came out in 2002. ATA-6 supported drives > 128GB using LBA-48. IDE started getting integrated farther into the PC chipsets because it was theoretically faster than the PCI bus.
  • ATA-7 (aka Ultra ATA/133, SATA/150) came out in 2003 and Sata 2 followed in 2004 (Sata-300) adding more speed and NCQ.
  • ATA-8 came out in 2008. It added TRIM and performance features for hard drives with solid state caches. Sata 3 (Sata-600) came out about the same time with NCQ that worked and then SATA 3.1 showed up soon after with TRIM support. At some point around 2008, new devices began dropping CHS addressing and only worked with LBA addressing. This means you might not be able to mount that 1990's drive with your new USB-PATA bridge, or you need to add an option rom with LBA support to your 386 to make that Sata device with the PATA bridge visible.
  • Compact Flash 6.0 came out in 2010 and had support for ATA/167 but that never made it into the PC world because everything had gone SATA by this point. I think TRIM became an optional feature for CF's as well at this time.

I list the time period that the BIOS's supported the standards. BIOS implementations were usually conservative and waited until the standard was released. They still had their share of bugs, but it wasn't because they came out early. On the other hand, it was not uncommon for storage devices to try to get a jump on "the next best thing", and sometimes they guessed wrong. It's not uncommon to see a list of "known problematic" drives inside old drivers and firmware, trying to work around these incompatibilities on a case by case basis.

-Edits- I'm done editing (well, not really)
-Edits- I blurred together ATA-5 and ATA-6, I fixed it