Win32s on Windows 3.0!

Discuss MS-DOS, Windows 1, 2 and 3.
Locked
WinPC

Win32s on Windows 3.0!

Post by WinPC »

Yes, you guessed it, I finally have installed Win32s on Windows 3.0!

How I did it:
Well, I first installed Win32s on Windows 3.1 Final Beta Release (the earliest version of Windows to accept it without modifications to the core system files), and over time continued to an earlier release which ran Win32s after some trial and error of tracing the system files that needed to be replaced, while keeping the rest.

Finally, I applied the same fixes to Windows 3.00a, and then installed Win32s from there. Win32 applications now worked perfectly after adding in COMMDLG.DLL, DDEML.DLL, OLECLI.DLL, and OLESVR.DLL.

So far, here are all of the files that need to be replaced or added in:

Code: Select all

LZEXPAND.DLL (Version 3.10.061d; Windows 3.1 Final Beta Release)
VER.DLL      (Version 3.10.061d; Windows 3.1 Final Beta Release)
WIN.INI      (Modifications required to prevent Windows from hanging on startup)
SYSTEM.INI   (Modifications required to prevent Windows from hanging on startup)
GDI.EXE      (Version 3.10.061d; Windows 3.1 Final Beta Release)
USER.EXE     (Version 3.10.061d; Windows 3.1 Final Beta Release)
KRNL386.EXE  (Version 3.10.061d; Windows 3.1 Final Beta Release)
SHELL.DLL    (Version 3.10.061d; Windows 3.1 Final Beta Release; this is to prevent Windows from hanging when select the About dialog box)
COMMDLG.DLL  (Version 3.10.026)
DDEML.DLL    (Version 3.10.026)
OLECLI.DLL   (Version 3.10.026)
OLESVR.DLL   (Version 3.10.026)
CPWIN386.CPL (Version 3.10.061d, Windows 3.1 Final Beta Release; note that this file is included to prevent Windows from displaying an error message on startup about the 386 Enhanced Mode control panel
While certain core system files must be replaced for Win32s to install and run, the rest of the Windows 3.0 files are kept, including all of the .DRV files.

By the way, here are some screenshots for everyone to look at:
Image

Image

Image

Image

This is what happens when trying to select the "Select Game" option after having already started a previous game:
Image

Image

Image

Image

Image

Image

Image

Image

The "Select Game" option works fine when no previous game is already started:
Image

The About dialog box is the same from Windows 3.1 Final Beta Release; this is due to the fact that this particular version of SHELL.DLL is copied to prevent Windows from hanging when opening the About dialog box, as well as to provide any necessary services to whatever Win32 applications that may need them.

Image

roytam1
Posts: 735
Joined: Mon Nov 03, 2008 6:15 am

Re: Win32s on Windows 3.0!

Post by roytam1 »

oh great!
thats fun.

but since GDI.EXE, USER.EXE, KRNL386.EXE are replaced with 3.10.061d, the situation is Windows 3.10.061d kernel with 3.0 drivers and userland.
Last edited by roytam1 on Tue Feb 25, 2014 2:09 pm, edited 2 times in total.

Wheatley
User avatar
Donator
Posts: 1839
Joined: Thu Oct 25, 2012 8:19 pm
Location: shell32.dll

Re: Win32s on Windows 3.0!

Post by Wheatley »

It's not really 3.0 anymore after replacing those files is it?
Windows Defender for great justice! Bugs are an international trading company. I need to defeat the anti-debugging and obfuscation methods. It wasn't for Intel's absurd ability to load in ie6. Why even waste time with people in an envelope?

WinPC

Re: Win32s on Windows 3.0!

Post by WinPC »

Wheatley wrote:It's not really 3.0 anymore after replacing those files is it?
Well, it has the updated Windows 3.1 Final Beta Release kernel files (such as WIN386.EXE), but the rest of the files are still the same, including all of the device drivers.

This was basically a test to see which operating system is the lowest capable of running Win32s (theoretically), and with the earliest files possible.

DJ Deedahx
User avatar
Donator
Posts: 479
Joined: Sun Sep 08, 2013 8:56 pm

Re: Win32s on Windows 3.0!

Post by DJ Deedahx »

Wow, interesting job you've got there, WinPC.

One suggestion I should make, however: it is good if you upload a pack of the patched files so that the abandonware tester (from a novice user's point of view) doesn't have to go through a time-consuming tutorial.
DDX — 86Box Staff/Power User & YouTube Channel Manager

Betatester
User avatar
Posts: 25
Joined: Sat Mar 01, 2014 5:57 am
Location: Somewhere...
Contact:

Re: Win32s on Windows 3.0!

Post by Betatester »

Isn't it kind of weird how FreeCell was pretty much unchanged until Windows Vista? That was about 15 years (wow).
Is back... for now. I'll be active on the BA Wiki, where the "Windows Changelog Collection" might make a bit of a comeback, too.

DJ Deedahx
User avatar
Donator
Posts: 479
Joined: Sun Sep 08, 2013 8:56 pm

Re: Win32s on Windows 3.0!

Post by DJ Deedahx »

Betatester wrote:Isn't it kind of weird how FreeCell was pretty much unchanged until Windows Vista? That was about 15 years (wow).
I know, Freecell still remained quite the same in Windows 2000/XP.

(It was first included with Windows NT 3.1, however.)
DDX — 86Box Staff/Power User & YouTube Channel Manager

WindozeNT
User avatar
Posts: 27
Joined: Sun Apr 13, 2014 1:13 am
Location: Texas
Contact:

Re: Win32s on Windows 3.0!

Post by WindozeNT »

what's in the 3.1 kernel that Win32s needs that the 3.0 kernel doesn't have?
Founder of WindozeNT Software and creator of OpenSmash

WinPC

Re: Win32s on Windows 3.0!

Post by WinPC »

WindozeNT wrote:what's in the 3.1 kernel that Win32s needs that the 3.0 kernel doesn't have?
Most likely, Win32s calls functions that existed in Windows 3.1 but not in Windows 3.0. For example, when I tried using the version of WIN386.EXE from Windows 3.0, all I would get would a flashing cursor and then being returned to the desktop (probably because it sees the Win32 program as being an MS-DOS program, or at least cannot handle the executable file format).

The KRNL386.EXE, GDI.EXE, and USER.EXE were also replaced with later versions, and if I remember correctly, Win32 programs didn't work even when using the later versions of these files on an earlier version of WIN386.EXE; either that, or the later versions of these files simply didn't load using the earlier version of WIN386.EXE.

The .DLL files are added to provide the necessary API services from Windows 3.1 (such as the "Common Dialog Box" and so on). In that case, I used the earliest versions possible that worked with Win32s (since this experiment was basically to see what would be the lowest possible Windows installation to run Win32s).

WindozeNT
User avatar
Posts: 27
Joined: Sun Apr 13, 2014 1:13 am
Location: Texas
Contact:

Re: Win32s on Windows 3.0!

Post by WindozeNT »

WinPC wrote:
WindozeNT wrote:what's in the 3.1 kernel that Win32s needs that the 3.0 kernel doesn't have?
Most likely, Win32s calls functions that existed in Windows 3.1 but not in Windows 3.0. For example, when I tried using the version of WIN386.EXE from Windows 3.0, all I would get would a flashing cursor and then being returned to the desktop (probably because it sees the Win32 program as being an MS-DOS program, or at least cannot handle the executable file format).

The KRNL386.EXE, GDI.EXE, and USER.EXE were also replaced with later versions, and if I remember correctly, Win32 programs didn't work even when using the later versions of these files on an earlier version of WIN386.EXE; either that, or the later versions of these files simply didn't load using the earlier version of WIN386.EXE.

The .DLL files are added to provide the necessary API services from Windows 3.1 (such as the "Common Dialog Box" and so on). In that case, I used the earliest versions possible that worked with Win32s (since this experiment was basically to see what would be the lowest possible Windows installation to run Win32s).
Yeah, that sounds like 3.1-specific functions in the kernel. It might be possible to have 3.1 functions callable on a 3.0 kernel by using something similar to KernelEx that can hook API calls and fill in for unsupported APIs (or the long way: rewriting Win32s from scratch). What happens when you try only replacing WIN386.EXE (without GDI.EXE and USER.EXE)?
Founder of WindozeNT Software and creator of OpenSmash

WinPC

Re: Win32s on Windows 3.0!

Post by WinPC »

WindozeNT wrote:
WinPC wrote:
WindozeNT wrote:what's in the 3.1 kernel that Win32s needs that the 3.0 kernel doesn't have?
Most likely, Win32s calls functions that existed in Windows 3.1 but not in Windows 3.0. For example, when I tried using the version of WIN386.EXE from Windows 3.0, all I would get would a flashing cursor and then being returned to the desktop (probably because it sees the Win32 program as being an MS-DOS program, or at least cannot handle the executable file format).

The KRNL386.EXE, GDI.EXE, and USER.EXE were also replaced with later versions, and if I remember correctly, Win32 programs didn't work even when using the later versions of these files on an earlier version of WIN386.EXE; either that, or the later versions of these files simply didn't load using the earlier version of WIN386.EXE.

The .DLL files are added to provide the necessary API services from Windows 3.1 (such as the "Common Dialog Box" and so on). In that case, I used the earliest versions possible that worked with Win32s (since this experiment was basically to see what would be the lowest possible Windows installation to run Win32s).
Yeah, that sounds like 3.1-specific functions in the kernel. It might be possible to have 3.1 functions callable on a 3.0 kernel by using something similar to KernelEx that can hook API calls and fill in for unsupported APIs (or the long way: rewriting Win32s from scratch). What happens when you try only replacing WIN386.EXE (without GDI.EXE and USER.EXE)?
This project aims to use the lowest official system files from Microsoft, not fan-made replacements (as in, the lowest unmodified system files that actually came out of Microsoft itself).

Also, from what I remember, replacing just the WIN386.EXE alone didn't work, since there were problems that also existed in KRNL386.EXE.

WindozeNT
User avatar
Posts: 27
Joined: Sun Apr 13, 2014 1:13 am
Location: Texas
Contact:

Re: Win32s on Windows 3.0!

Post by WindozeNT »

WinPC wrote:
WindozeNT wrote:
WinPC wrote:
WindozeNT wrote:what's in the 3.1 kernel that Win32s needs that the 3.0 kernel doesn't have?
Most likely, Win32s calls functions that existed in Windows 3.1 but not in Windows 3.0. For example, when I tried using the version of WIN386.EXE from Windows 3.0, all I would get would a flashing cursor and then being returned to the desktop (probably because it sees the Win32 program as being an MS-DOS program, or at least cannot handle the executable file format).

The KRNL386.EXE, GDI.EXE, and USER.EXE were also replaced with later versions, and if I remember correctly, Win32 programs didn't work even when using the later versions of these files on an earlier version of WIN386.EXE; either that, or the later versions of these files simply didn't load using the earlier version of WIN386.EXE.

The .DLL files are added to provide the necessary API services from Windows 3.1 (such as the "Common Dialog Box" and so on). In that case, I used the earliest versions possible that worked with Win32s (since this experiment was basically to see what would be the lowest possible Windows installation to run Win32s).
Yeah, that sounds like 3.1-specific functions in the kernel. It might be possible to have 3.1 functions callable on a 3.0 kernel by using something similar to KernelEx that can hook API calls and fill in for unsupported APIs (or the long way: rewriting Win32s from scratch). What happens when you try only replacing WIN386.EXE (without GDI.EXE and USER.EXE)?
This project aims to use the lowest official system files from Microsoft, not fan-made replacements (as in, the lowest unmodified system files that actually came out of Microsoft itself).

Also, from what I remember, replacing just the WIN386.EXE alone didn't work, since there were problems that also existed in KRNL386.EXE.
Ohderp. KRNL386.EXE was what I meant.
Founder of WindozeNT Software and creator of OpenSmash

AlphaBeta
User avatar
Donator
Posts: 2439
Joined: Sun Aug 12, 2012 4:33 pm
Location: Czechia

Re: Win32s on Windows 3.0!

Post by AlphaBeta »

I have to agree with Wheatley, what have you made is simply 061d with 3.0 apps and drivers. Not to distract you from more research though. :)

Of course that replacing WIN386.EXE won't work, it's a DPI server. ;)
AlphaBeta, stop brainwashing me immediately!

Image

Joet BERNARD
User avatar
Posts: 288
Joined: Wed Nov 25, 2020 7:27 pm
Location: Tours, France
Contact:

Re: Win32s on Windows 3.0!

Post by Joet BERNARD »

What exactly are the changes to be made ?
French only
Home of Signé JARB
My hardware collection not totally up to date...
My NEW Discord server

Darkstar
User avatar
Donator
Posts: 1212
Joined: Fri May 14, 2010 1:29 pm
Location: Southern Germany

Re: Win32s on Windows 3.0!

Post by Darkstar »

Wow, this thread is over 6 years old and the original poster doesn't seem to be a BA member anymore (notice how it doesn't show the usual "contact", "posts", etc under the username)

I doubt you'll get more info than what is in this thread
I upload stuff to archive.org from time to time. See here for everything that doesn't fit BA

x010
Staff
Posts: 1311
Joined: Thu Jun 13, 2013 4:46 pm
Location: Leaderboard
Contact:

Re: Win32s on Windows 3.0!

Post by x010 »

Joet BERNARD wrote:
Tue Dec 08, 2020 1:58 pm
What exactly are the changes to be made ?
Darkstar is correct, please read the forum rules.

Locked

Locked