Jump to content

Enable48BitLBA | Break the 137Gb barrier!


Recommended Posts

Version 1.1 is now available.

2006-07-13 15:19 Finished driver analysis, initial announcement

2006-07-14 10:43 Working on inserting new code

2006-07-15 09:56 First successful build :)

2006-07-15 22:03 Major change of plan

2006-07-20 18:10 Version 1.0 released

2006-07-21 04:51 Begin work on WinME version

2006-07-21 05:50 Finish WinME version

2006-07-21 06:22 Begin work on 4.10.2225

2006-07-21 06:37 Version 1.1 (4.10.2225) released

2006-07-22 07:34 Win98FE version (4.10.2001) released

2006-07-23 08:51 Win98FE version (4.10.2186) released

2006-07-29 20:05 Win98SE version (4.10.2226) released - only for replacing an existing v4.10.2226 file

2006-08-02 17:57 Win95 OSR2+ version (4.00.1111) released

2006-08-04 20:27 Win95 OSR2+ version (4.00.1119) released

For those that don't know, this is an attempt to implement 48-bit LBA support into Windows 98se's default IDE driver, enabling the use of hard drives in excess of 128Gb. This is not just another variant of Loew's "High Capacity Disk Patch" because

1] It's completely free (and of course, has no guarantee)

2] Addressing to 2048Gb is possible (limit of FAT32)

3] A large portion of driver code has been rewritten and optimised

4] LBA-48 commands implemented in separate routines instead of "patched into" existing 28-bit's code

5] Slightly increased performance over Loew's patch due to [4]

If Enable48BitLBA has worked for you, please post a link to a validation image containing the following:

1. Properties page of a drive filled past 137Gb

2. Information dialog, the results of a successful scandisk on the drive

3. System Properties -> Device Manager -> (your IDE controller) Properties -> Driver -> Driver File Details (must show ESDI_506.PDR being used)

Also specify your hardware (in particular, mobo chipset and HDD specs).

This will help to confirm that it works.

Reference: http://www.msfn.org/board/index.php?showtopic=46752

However, this current version may cause data corruption on _some_ drives w/ 48-bit LBA!!! So be extremely careful!!!
I am not responsible for any damage caused by the use of these drivers.

4102222F.ZIP

4903000F.ZIP

4102225F.ZIP

4102001F.ZIP

4102186F.ZIP

4102226F.ZIP

4001111F.ZIP

4001119F.ZIP

Edited by LLXX
Link to comment
Share on other sites


Having a little bit of a technical difficulty... the driver won't assemble! I'm getting "Out of Memory" errors from ML.

Might have to move the release date forward a bit... :(

Link to comment
Share on other sites

take your time LLXX. remember that you have to create a 48-bit LBA driver NOT just for Win98se, but also for Win98 FE and WinME. you cant just create a driver just for Win98se and ignore the other versions of Windows.

Link to comment
Share on other sites

I've solved the memory problem and it's assembling fine now...

Now I'll just need to figure out what link options were used so I can the exact binary as M$ original one (with unmodified source), then I'll start inserting the new code :)

@erpdude8 : Are there vast differences between the three versions you've mentioned? I'm only working on the one from 98se (file version 4.10.2222 - "ESDI_506 Virtual Device (Version 4.0)")

Link to comment
Share on other sites

Keep in mind that the current esdi_506.pdr for 98SE is version 4.10.0.2225. When using Norton File Compare there is 7747 differences against version 4.10.0.2222.

22191 differences between 4.10.0.2222 and 4.90.0.3000 (Win ME)

22357 differences between 4.10.0.2225 and 4.90.0.3000 (Win ME)

See below for the Windows 98 Large IDE Update which contains the current files for both 98 SE (4.10.0.2225) and FE (4.10.0.2186).

http://support.microsoft.com/kb/q243450/

http://www.microsoft.com/windows98/downloa...ide/Default.asp

Edited by eidenk
Link to comment
Share on other sites

This problem only occurs on computers that use a Phoenix BIOS and use the Phoenix BitShift translation algorithm to report the geometry of large IDE hard disks (larger than 32 GB). Your computer is not vulnerable if the BIOS uses logical block addressing (LBA) Assist translation instead of the Phoenix BitShift translation
"vulnerable"... lol. All drives must support LBA according to the ATAPI-4 Standard, so this is a moot point. The driver automatically selects LBA mode when available.
- All devices shall support LBA translation.

- If the device’s capacity is greater than or equal to one sector and less than or equal to

16,514,064 sectors the device shall support CHS translation.

- If the device’s capacity is greater than 16,514,064 sectors, then the device may support CHS

translation.

- If a device supports CHS translation, then, following a power-on or hardware reset, the CHS

translation enabled by the device shall be known as the default translation.

- If a device supports CHS translation, then a device may allow a host to use the INITIALIZE

DEVICE PARAMETERS command to select other CHS translations.

- If a device supports CHS translation, then IDENTIFY DEVICE words 1,3, and 6 shall describe

the default translation, and words 53-58 shall describe the current translation.

If a device conforms to an earlier Standard (in which case LBA support is Optional), its capacity is unlikely to exceed 32Gb in any case. I doubt there were 32Gb IDE devices being produced in 1996.

Because of this, I doubt there will be any problems encountered in using the 4.10.2222 version of ESDI_506.PDR as a base. In any case, applying the patch to a newer version should prove just as easy.

I've chosen to abandon reassembling the driver completely, as it seems to have been built with a strange Linker that is apparently not available outside of Micro$oft. Instead, it will be more similar to a complex version of the Loew patch.

Link to comment
Share on other sites

Keep in mind that the current esdi_506.pdr for 98SE is version 4.10.0.2225. When using Norton File Compare there is 7747 differences against version 4.10.0.2222.

22191 differences between 4.10.0.2222 and 4.90.0.3000 (Win ME)

22357 differences between 4.10.0.2225 and 4.90.0.3000 (Win ME)

See below for the Windows 98 Large IDE Update which contains the current files for both 98 SE (4.10.0.2225) and FE (4.10.0.2186).

http://support.microsoft.com/kb/q243450/

http://www.microsoft.com/windows98/downloa...ide/Default.asp

Let's not forget, there was also a version 4.10.2226 of esdi_506.pdr for Win98se [Q252187]. this hotfix was built for certain IBM laptops only that came bundled with pre-installed 98 SE. this version may cause startup problems (like hanging at startup before Win98se loads) on non-IBM machines.

Link to comment
Share on other sites

Does anyone know what 4.10.2223 and 4.10.2224 were for?

Anyway, I'm planning to release a fixed 4.10.2222 and do other versions when necessary.

Good point to first release a standard patch for Windows 98SE. The best would be to test on a clean Windows 98SE machine with harddiscs larger than 137 GB.

However we must not forget to test also HDD's smaller than 137 GB!

Especially HDD's <8GB and <32GB HDD's should get tested, since these use different specifications.

Link to comment
Share on other sites

Does anyone know what 4.10.2223 and 4.10.2224 were for?

Anyway, I'm planning to release a fixed 4.10.2222 and do other versions when necessary.

Esdi_506.pdr version 4.10.2223 is mentioned in MS article 239694:

http://support.microsoft.com/kb/239694/

not sure about v4.10.2224 of esdi_506.pdr

Good point to first release a standard patch for Windows 98SE. The best would be to test on a clean Windows 98SE machine with harddiscs larger than 137 GB.

However we must not forget to test also HDD's smaller than 137 GB!

Especially HDD's <8GB and <32GB HDD's should get tested, since these use different specifications.

good points hp38guser made of testing the patch on HDDs of all sizes.

Link to comment
Share on other sites

However we must not forget to test also HDD's smaller than 137 GB!

Especially HDD's <8GB and <32GB HDD's should get tested, since these use different specifications.

If I was following the original plan of fully rebuilding the driver, that would definitely be done before release. However, as the new plan of action I'm taking is not going to affect the existing code at all except for one change, I'm quite certain it will work fine at smaller sizes. Testing the new code, however, is a totally different problem.

Here's the only change to the existing code that I'll make:

LCOD:C000062E mov	 eax, [ebx+10h] ; get LBA
LCOD:C0000631 mov ecx, [esi+0BBh]
LCOD:C0000637 test byte ptr [ecx+203h], 4; LBA disabled?
LCOD:C000063E jz short use_CHS
LCOD:C0000640 test eax, 0F0000000h; >128Gb?
LCOD:C0000645 jnz short use_CHS ; ** this jump will go to the new code appended to end of section **

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...