3

I have a 80 GB PATA HDD (2003 Western Digital Caviar WD800 LBA) which is not recognized by my very old computer (Pentium 2 / Asus P2L97 motherboard).

I thought it was due to the partitioning of the disk but probably this is due to the BIOS limiting the HDD size, as suggested here.

This disc is the result of a backup of only 3.2 GB so I can reduce its size to 4 GB

I found the motherboard manual and set the MODE to LBA or AUTO, as suggested I tried to enter a custom drive type in BIOS and max out all three values for cylinders, heads, and sectors per track:

cylinders, heads, and sectors per track

I tried different values: 785/128/63 (3241MB), 8192/16/63 (4228MB), 394/255/63 (3240MB), but without success:

without success

I was looking for a drive overlay and downloaded Data LifeGuard Tools (WD) but it is an executable to launch from an Windows OS.

Do you have any suggestions for getting the HDD recognized by the BIOS? or an idea to install the drive overlay on the MBR of the HDD from SystemRescue?

EDIT: I updated the BIOS to the last version (it was hard to find a floppy disk that works) with this result:

result

That seems good but the computer crashes on the following screen without an error message::

enter image description here

EDIT: As before, in BIOS, I'm trying :

  • to use auto detectes geometry and auto/LBA mode
  • to force the HDD type in BIOS and set the TYPE to User and MODE to LBA or AUTO but without succes
  • to swith "ECP DMA Select" from "3" to "disabled" with same "error" (LBA, UDMA 2)
  • to swith "Parallel Port Mode" from "ECP + EPP" to "Normal" with same "error" (LBA, UDMA 2)
  • to swith "IDE Ultra DMA" from "Auto" to "disable" with different "error" (LBA, MODE 4)

enter image description here

I also plugged the HDD into another computer: auto-detection in BIOS is OK enter image description here

I will try to run OnTrack Disk Manager 9.57

12
  • 2
    One limit for BIOS to understand disks is about 33.8 GB. If your BIOS does not understand drives larger than that then your disk might have a jumper to limit the drive to below 33.8 GB. Check for a BIOS update or try using a drive overlay manager. What exact disk drive model it is?
    – Justme
    Jun 2 at 18:53
  • @Justme Where did this one come from? Jun 3 at 7:56
  • 2
    @user3840170 Short explanation is that BIOS fails to understand disks that would equate to having a geometry of more than 65535 cylinders which does not fit into a 16-bit result, as 65535*16*63 is 33.822 GB (31.499 GiB).
    – Justme
    Jun 3 at 8:34
  • 1
    Unrelated, but how did you make these pixel-perfect screenshots of BIOS screens? Is this some frame-grabber that records from VGA output?
    – Jonathan
    Jun 7 at 7:25
  • 3
    Don't force user geometry. Just use auto detectes geometry and auto/LBA mode.
    – Justme
    Jun 8 at 16:22

4 Answers 4

10

You need a BIOS update. Version 1009 from November 1999 already fixes it according to release notes. It is the final official BIOS version and newer beta releases exist, but must be chosen carefully based on your exact motherboard hardware version/revision type.

1
  • 1
    Thanks Justme. I upgraded the BIOS to version 1009 but that did not solved the problem. I edited my first post. Jun 8 at 16:03
4

Solved by reducing the HDD capacity to 33.82GB with OnTrack Disk Manager 9.57 on floppy disk (Advanced option > Maintenance Option > Utilities > Set Drive Size).

enter image description here

It works! (I have another problem now, probably with MBR or MPT but the HDD is well detected by the BIOS)

enter image description here

Thank you all.

5
  • Can you increase the capacity back to a higher value, or do you not want to bother any more? I wonder if now the magic threshold is 65536 MB… Jun 11 at 9:04
  • Also, what’s ‘MPT’? Jun 11 at 10:34
  • @user3840170 MPT = Master Partition Table MPT Jun 12 at 11:47
  • @user3840170 I don't know, I'll try that but in fact I'll probably have to reduce the size of the HDD to only 3.2 GB, same as the old one, in order to "copy" the old CHS to be able to boot (FAT32 with CHS adressing). Jun 12 at 11:57
  • Nobody calls them that. It’s almost always just ‘MBR’, both for the boot sector code and the partition table next to it. As for partitioning geometry problems, see the question I linked above. Jun 12 at 21:24
4

With the upgraded BIOS, the asker’s computer seems to have locked up in a pretty curious moment. This gave me an idea what might be the cause, so I decided to take a stab at disassembling the BIOS to confirm it.

The following is an annotated disassembly of a fragment of the decompressed BIOS, version 1009, at real mode address E000:8B09. This code executes when printing the device listing right before handing control to the bootloader.

        ; BX = number of cylinders
        ; AX = number of heads
        ; CX = number of sectors per track

        shl         cx, 2                              ; E000:8B09  C1E102
        mul         cx                                 ; E000:8B0C  F7E1
        mul         bx                                 ; E000:8B0E  F7E3
        pop         bx                                 ; E000:8B10  5B
        pop         ds                                 ; E000:8B11  1F

        ; DX:AX = cylinders × heads × sectors × 4
        ; divide by 7812, which is approximately 4 000 000 ÷ 512

        mov         cx, 7812                           ; E000:8B12  B9841E
        div         cx                                 ; E000:8B15  F7F1

        ; print the value
        ; this sets up a ROP gadget to invoke a near-call routine
        ; at F000:1B26 from segment E000
        mov         word ptr [bp + 0x9c], ax           ; E000:8B17  89869C00
        push        seg .cont                          ; E000:8B1B  6800E0
        push        .cont                              ; E000:8B1E  682C8B
        push        thunk_retf     ; F000:EC31 -> RETF ; E000:8B21  6831EC
        push        print_u16                          ; E000:8B24  68261B
        jmp         far thunk_retn ; F000:EC30 -> RET  ; E000:8B27  EA30EC00F0
.cont:

        ; print the unit
        mov         si, s_MB       ; E000:877C -> "MB" ; E000:8B2C  BE7C87
        call        print_str                          ; E000:8B2F  E81003
        ret                                            ; E000:8B32  C3

The above code takes the logical disk geometry as detected or configured in the BIOS and multiplies the coordinates together to obtain a count of sectors times 4. That value is then divided by 7812 (almost exactly the number of sectors in one SI megabyte) to obtain the number of megabytes. The division instruction at E000:8B15 takes the dividend from the 32-bit register pair DX:AX (where the multiplication instruction put it) and returns the quotient in the 16-bit register AX. If the quotient happens not to fit within 16 bits, the divide instruction triggers a #DE (divide error) exception, more commonly known for being triggered when attempting to divide by zero. Since the BIOS had not installed a meaningful divide error handler by that moment, the boot process hangs.

A pretty silly issue. But it suggests two avenues to remedy, neither requiring a disk overlay:

  • If you’d be willing to risk an upgrade to a beta version of the BIOS, version 1010.004 (both the LM78 and non-LM78 variant, whatever that may refer to) has this problem fixed. Equivalent code in that version uses a 32-bit division instruction, which cannot overflow.
  • Without flashing the BIOS, it may be possible to work around this issue by manually shrinking the geometry. Enter BIOS setup and manually configure a geometry of 7967 cylinders, 255 heads and 63 sectors per track; you may need to force CHS mode (‘NORMAL’) as well. Avoid using the auto-detection procedure, or entering larger values, as that may lock up the BIOS setup program; if necessary, perform this configuration after resetting the RTC NVRAM (removing and re-inserting the battery) and/or with the disk plugged out. The landing zone I would have left where it would be otherwise, at cylinder 9728; I am not sure what is the best value here, or if it even matters for a (relatively) modern drive.
3

If installation is your issue, OnTrack Disk Manager 9.57 is available as a bootable disk image. You could just boot your Pentium 2 off its install disk and let it do the rest.

Alternatively, if you insist on Data LifeGuard Tools, the EZ-Drive/Data LifeGuard Tools page on the same site doesn't explicitly say it, but you could see if any of the English-language offerings are more suitable to your needs.

Finally, if you've got a suitable Windows (eg. one of the Windows XP testing images that used to be offered on modern.ie before Microsoft EOLed earlier versions of Internet Explorer), you could mount a floppy drive or disk image as A: in a PC emulator/virtual machine manager and create an install disk that way... assuming that Wine doesn't offer a translation of the relevant APIs and none of the relevant disk image generators are DOS EXEs that'll work in something like DOSBox-X.

2
  • Thank you. I tried OnTrack Disk Manager 9.57 on floppy disk, but the loading software fails with no clear message[1]. I found this software on Hiren boot CD v10.1 with different issue[2]. I will look for a PC with windows XP. [1]: i.stack.imgur.com/IJ4fm.jpg [2]: i.stack.imgur.com/ZBlcW.jpg Jun 2 at 18:49
  • 1
    I was already on Linux by the time I heard of Hiren boot CD, but that error looks like it's saying "none of the drivers we installed made the CD's contents visible". (Just as a BIOS-bootable drive has a boot sector, the El Torito extension to ISO 9660 has a mode where a floppy image is used like a Linux distro's initramfs. That then needs to load a driver for the CD to see the rest of it... and that error suggests that your BIOS is successfully mapping the CD's boot image as an emulated floppy but then it's not finding the body of the CD due to bad BIOS settings.)
    – ssokolow
    Jun 2 at 21:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.