Jump to content

Enable48BitLBA | Break the 137Gb barrier!


Recommended Posts


I already fixed 4.00.1119 a long time ago, it's here.

When I examined the patch, I first looked at extra code added between 00001E54 and 00001FFF. I was unable to find the instructions that are needed to set the 16-bit sector count correctly. Closer examination revealed that they are there indeed, but they "replace" the 8 NOP instructions that, in the original driver, were placed between commands sending data to two different HDC registers. I assume those 8 NOPs had been put there for a good reason. It is common code and may be executed immaterial whether the drive uses CHS translation, 28-bit LBA or 48-bit LBA. So LLXX's statement that there are no differences for < 128 GiBytes is not correct!! There are some NOP instructions between sending the higher and lower bytes of the sector count, but I am not sure they are necessary.
At first, I was wondering about the NOPs as well, thinking that they'd presumably be for I/O delay purposes, but as the original code does not have any other instances of I/O instructions separated by so many NOPs, I decided to ignore them, and the code of the patched version ended up having delays between the OUTs in any case. The driver works fine without them anyway.

My driver does send an extra zero to the sector count register, and this is not needed for LBA28 commands, but is for the LBA48, and at the time I couldn't think of a better place to put it. Yes, this does decrease performance for non-48bitLBA commands, but the additional ~30ns delay is unlikely to be noticeable as the actual command execution time is much greater.

Link to comment
Share on other sites

Hello everybody.

I've been following the topic with great interest throughout the threads, as I'm a Win98SE addict. I would hate to hijack this thread though, so I'll only say this: if anybody feels able/willing to help me, please PM or IM me. My problem is that the BIOS wouldn't see the whole capacity of the HDD (only sees 136GB out of 160GB) and there's no other place I can get help from - neither from the manufacturer (replies like "mobo's been out of phase long ago") nor from the guys at Wim's BIOS board. Any details in private, to spare the thread from off-topics.

Thank you in advance, and most of all thank you LLXX for your excellent work.

Link to comment
Share on other sites

Hello everybody.

I've been following the topic with great interest throughout the threads, as I'm a Win98SE addict. I would hate to hijack this thread though, so I'll only say this: if anybody feels able/willing to help me, please PM or IM me. My problem is that the BIOS wouldn't see the whole capacity of the HDD (only sees 136GB out of 160GB) and there's no other place I can get help from - neither from the manufacturer (replies like "mobo's been out of phase long ago") nor from the guys at Wim's BIOS board. Any details in private, to spare the thread from off-topics.

Thank you in advance, and most of all thank you LLXX for your excellent work.

About the only thing you could do then, is get a PCI IDE controller that has 137GB+ support (LBA 48bit). This patch is designed for systems where this hurtle is no longer an issue, but the OS's native support for LBA 48-bit is non-existant, hence the issue at hand.

Link to comment
Share on other sites

Here's a discussion that should offer all the needed details. What I was thinking about is a BIOS mod - nothing more, nothing less.

Any commercial solution is out of discussion. I'd rather set up a Linux partition in the unusable space (which is what I most likely will do anyway).

Edited by Drugwash
Link to comment
Share on other sites

Are you referring to Petr's post or the "wrong gender assumption" one above? :P

If it's the latter, I apologize - I only found out after posting there. I will correct it. :blushing:

As for Petr's post, I couldn't say, because he didn't mention what the respective BIOS reported and furthermore, I haven't tried to install anything on that HDD yet. It's brand new and I'm still trying to find the proper solution, which includes trading it in with a smaller 120GB one that would have no problems with the BIOS.

As far as I've read in all threads around that deal with this, all Win9x versions rely on the BIOS' report regarding HDD capacity, unlike NT versions. So I assumed (correctly, probably) that even with the driver patch installed, any Win9x installed on that HDD would mess the primary boot partition if it would have to deal with anything beyond 137GB.

The weird thing is that the BIOS is an AWARD 6.00PG which - at least theoretically - should support 48bit LBA, so I thought it might be an easy job to find a possible bug in it and patch it accordingly. Unfortunately, I'm no specialist so I can't say how hard it would be to do that, or if at all possible. It may even be a SiS630 chipset limitation. :unsure:

So if no BIOS patching would be possible, I might settle for a partitioning scheme as follows:

1. 30GB FAT32 - Win98SE

2. 30GB FAT32 - Win2003

3. 30GB FAT32 - data

4. 30GB NTFS - data

5. 40GB (EXT or whatever) Ubuntu Linux

I hope the above will work with no problems.

(This board has a weird way of formatting the posts when smileys are involved. Every CR adds and etra LF or something; it's probably an ANSI-Unicode thing, since I'm using Win98SE. I had to edit the post text in notepad and paste it back.)

Link to comment
Share on other sites

I was referring to Petr's post... where he used a BIOS that did not support 48bit LBA and it worked fine.

The BIOS shows as 8Gb, but Windows will use the information stored in the MBR. With some partitioners it is possible to create partitions manually and ignore BIOS information, or you can use a disk editor to do it.

Link to comment
Share on other sites

What about some older pc's with Bios's that only report 64GB but you've got an 80GB drive? I just got an Intel SE440BX that's like that. Windows sees and uses the whole drive that I FDISK'd and formated in one big partition. To be certain, I first used the Western Digital cd to prepare the drive. When I noticed it hadn't installed the On-Track thing I figured they must know what they're doing and went and prepared it normally with a 98SE startup floppy.

My old HP Pavilion 4430 also did that. Bios would show 64GB max, but larger hard drives worked fine. Not past the 137GB Windows driver limit mind you, but up to that was fine.

It seems similar to the "cosmetic" error in the Microsoft format program that doesn't report the correct size until it's finished formatting.

So are these bios's actually providing the full drive access and the size reported error is cosmetic? Or will we run into problems when we use the sectors larger than 64GB?

Inquring minds want to know.

Link to comment
Share on other sites

Windows uses the partition sizes that are reported in the MBR, I can demonstrate this by using disk editor to change the size of the partition to something that exceeds the physical capacity of the disk (e.g. 1.5 terabytes) and then viewing the drive properties under Windows.

Maybe I'll post a screenshot of that on my next boot to DOS...

Link to comment
Share on other sites

So, what reports the partition sizes to the MBR? The Bios? If so, then the Bios is showing me 64,440 (something like that) but the MBR somehow knows there are 80GB's there (or, 74 some odd thousand MB).

See what I'm saying? The Bios shows me a total as if it has the 64GB limit, but then FDISK, format, and Windows wind up using and seeing the whole thing.

These old 1997-1999 Bios's seem to behave this way. But is there really a 64GB limit if Windows seems to be operating correctly with using and seeing the whole drive? I figure if there was a real limit then the WD disk would have installed the On-Track Bios to be able to access the whole drive, but this wasn't done and doesn't seem to be needed.

I have one board that did have the 8GB limit, a Chaintech 9ESA. The WD cd installed the EZ-BIOS automatically when it prepared the drive.

Now, in both of my systems that only show up to 64GB in the Bios they both had Bios updates. But neither mentioned anything about dealing with Logical Block Addressing. Maybe they did somehow fix this but that fix only shows the 64GB even though it will report more to the MBR (like the Windows format command).

So, just a cosmetic thing?

Link to comment
Share on other sites

OK LLXX, thanks for some clarifications. So, to get things straight once and for all: if I partition that HDD as described in post #158 with the exception that partition #5 would be FAT32 (not necessarily, as there is possibility to access Linux partitions under Windows) and I would use your patched driver in Win98SE, would I be able to access partition #5 from within Win98SE without any problems whatsoever?

I just need to be 101% sure about this before starting messing with the HDD.

[EDIT]

Oh and Eck, you might wanna check Wim's BIOS forum board I linked to in post #156, as there's chance you might find patched BIOSes for your boards. Check the users' signatures, they'll lead you to a page with patched BIOSes. If you can't find your boards listed, you can make a request in the appropriate forum.

Edited by Drugwash
Link to comment
Share on other sites

Thank you for making it possible, LLXX! Great work! :yes: I've got one question though - I've read everything here but I'm only more confused about it: I'm using Win98SE 4.10.2222 A, my original .pdr was v.2222; should I use your 1.0 (2222) or 1.1 (2225) version? Is 2225 your newer version of the 2222 or is it your patch of Microsoft's newer 2225 version? Am I making some terrible mistake using the patched v.2225 instead of my old v.2222 .pdr ?

Thanks,

Max

Link to comment
Share on other sites

OK LLXX, thanks for some clarifications. So, to get things straight once and for all: if I partition that HDD as described in post #158 with the exception that partition #5 would be FAT32 (not necessarily, as there is possibility to access Linux partitions under Windows) and I would use your patched driver in Win98SE, would I be able to access partition #5 from within Win98SE without any problems whatsoever?

I just need to be 101% sure about this before starting messing with the HDD.

Well with an AWARD BIOS Revision 6 your mobo must be a fairly recent one. I have got this BIOS on my Abit NF7S v2 and the patched esdi 506.pdr works like a charm above 137GB in the fourth primary partition under windows ME with my 200GB Western Digital Caviar drive.

If you are in doubt, do like me, change your master drive for a sub 137 GB one and use your big one as slave. Then install the patched esdi and experiment.

I think that it is not possible to create more than 4 primary FAT32 partitions under Windows 98SE. If you want to have 5 partitions, I think you'll need to create extended partitions within one of the four primaries.

Someone will correct me if I am wrong about the latter.

Edited by eidenk
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...