Windows 95 Compatibility

I tried to run Eternity on windows 95B.
I downloaded msvc80.dll which is needed and then encountered importations error problems. here they are and How I fixed them:

Eternity-r979

msvc80.DLL [Version 8.00.50727.42]:
GetLongPathNameW -> GetFullPathNameW
IsDebuggerPresent -> FreeConsole

ETERNITY.EXE:
IsDebuggerPresent -> FreeConsole
InterlockedCompareExchange -> CreateFileA
At offset 0x9D8D5 : 53 56 57 FF 15 18 E0 49 00 -> 89 D8 F0 0F B1 37 90 90 90

That is, replace:
push ebx
push esi
push edi
Call dword ptr [InterlockedCompareExchange]

With:
mov eax, ebx
lock cmpxchg [edi], esi

With all the above fix, now eternity works like a charm on Win95.
I see now there are more recent versions, Those kind of fix should work too.
|-| EDIT |-|
With latest relese (fixed it this morning)
ETERNITY.EXE-r1163 :
At ofset 0x9FDD5
53 56 57 FF 15 18 10 4A 00 -> 89 D8 F0 0F B1 37 90 90 90

And other modifications are same.

This makes Eternity to run on Windows NT 3.51 Too
However, having no VooDoo III and no SBPCI Drivers for NT3.51, I must run ee Windowed in SuperVGA (800x600-16colors) and without sounds and it looks bad.

Share this post


Link to post
Csonicgo said:

I'm sure this would help win98's issues as well.

This is why there are two different releases for Win32. The version built with Visual Studio 6.0 runs on Win9x out of the zip without modification.

Newer compilers don't allow building for Win9x compatibility. SVN builds by Gez are built with Visual Studio 2005, which I think is friendly down to Win98SE. The "Win32 Plus" release version was built with Visual Studio 2008 which will not allow programs to execute on anything older than Windows 2000.

Share this post


Link to post

Will this be fixed or will I have to Hex Edit every time I update?
One should not to merge Win95 and Win98 in Win9x, because none of the still in devloppement Ports that I tested worked directly on Win95, wen they did on 98, Exept Chocolate-Doom which even works on NT3.51, without modifications.

Share this post


Link to post

This cannot be fixed because the newer MS compilers are no longer compatible with Windows 95 and the SVN build maintainers don't have a compiler that still can create executables that will work with it.

So yes, you'll either have to hex edit each version or upgrade your OS.

Share this post


Link to post

If you are requesting an up-to-date Win95-compatible build I could create one, but this would not be a regular thing because I simply don't have the time or resources to do nightly SVN builds on top of all the other stuff I keep busy with. This is why we have Gez, who graciously takes the time to do this with the tools he has at his disposal.

But what Graf says is correct. The problem functions you are changing are being called by code that is outside of the Eternity code (ie. crt0 or other objects that have been linked into the EXE). I can't fix it by simply changing something in Eternity, because we don't call any of these functions directly.

Share this post


Link to post

You guys might want to check out KernelEx. It does things to Windows 98 to enable stuff that's been compiled specifically for newer Windows. It's how I'm posting from FireFox 3.6.3 on Windows 98, for instance.

If it does what it takes, then you could just recommend installing it before trying to install the corresponding source port.

Share this post


Link to post

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