16-bit Windows Program Support

Here you can discuss ReactOS related topics.

Moderator: Moderator Team

EmuandCo
Developer
Posts: 4323
Joined: Sun Nov 28, 2004 7:52 pm
Location: Germany, Bavaria, Steinfeld
Contact:

Re: 16-bit Windows Program Support

Post by EmuandCo » Tue Aug 02, 2016 9:14 pm

*cooling down a bit* (After stressful work day, rereading my posts....)

Listen... as I already said and many others, too.... we are working on it and yes Win2003 runs 16 bit stuff, same we will be able to do sooner or later and even in a maybe future 64 bit port of ROS we will be able to. A thing Windows can not do at all. But not now and not sure when exactly...

Btw, IRC is a special .... case. Feel free to come back and just ignore sarcasm which is a everyday thing there.
Image
ReactOS is still in alpha stage, meaning it is not feature-complete and is recommended only for evaluation and testing purposes.

Z98
Release Engineer
Posts: 3379
Joined: Tue May 02, 2006 8:16 pm
Contact:

Re: 16-bit Windows Program Support

Post by Z98 » Tue Aug 02, 2016 9:52 pm

Your points were answered multiple times, Vincent. And yet you keep repeating them. This creates the impression that you either did not understand previous responses or you're ignoring them. If you don't understand, ask questions. If you do understand, there is no need to keep repeating requests.

Blackcrack
Posts: 1808
Joined: Tue Dec 20, 2005 12:55 pm
Contact:

Re: 16-bit Windows Program Support

Post by Blackcrack » Wed Aug 03, 2016 8:41 am

hey, this want we all and you not the only.
:mrgreen:

best regards
Blacky

it2pivincent
Posts: 29
Joined: Wed Jul 20, 2016 10:26 pm

Re: 16-bit Windows Program Support

Post by it2pivincent » Wed Aug 03, 2016 11:29 am

Okay, I will wait for Win16 support. I might help test the new versions of ReactOS that contains this feature.

PurpleGurl
Posts: 1777
Joined: Fri Aug 07, 2009 5:11 am
Location: USA

Re: 16-bit Windows Program Support

Post by PurpleGurl » Thu Aug 04, 2016 4:38 am

Or test with parts you borrow from Windows and see what breaks. Then that could highlight things the project might need to fix, even if they don't add the parts that you want.

EmuandCo
Developer
Posts: 4323
Joined: Sun Nov 28, 2004 7:52 pm
Location: Germany, Bavaria, Steinfeld
Contact:

Re: 16-bit Windows Program Support

Post by EmuandCo » Thu Aug 04, 2016 8:58 am

Which parts you mean? You can't just throw Win3.1 in there and you have what we need. Win16 means NTVDM and a big bunch of wrappers around the 32 bit counterparts for the 16 bit apps to use.
Image
ReactOS is still in alpha stage, meaning it is not feature-complete and is recommended only for evaluation and testing purposes.

PurpleGurl
Posts: 1777
Joined: Fri Aug 07, 2009 5:11 am
Location: USA

Re: 16-bit Windows Program Support

Post by PurpleGurl » Thu Aug 04, 2016 8:59 pm

From XP or 2003. Use their components to see if they run. Why would I want to stick 16-bit parts in a 32-bit OS with nothing to make them work in between? I'm no developer, but I'm certainly not that stupid. You can use 16-bit code in 2000-XP, and likely 32-bit versions of Vista and 7, so why not try their components? And thus if 2003 parts won't work in ROS, then we have trouble. We might not want to implement everything that 2003 does, but in the cases where we don't, others can test 2003 parts. If they won't work, then the problem is elsewhere, and something that likely will need fixing.

raijinzrael
Posts: 10
Joined: Thu Jul 19, 2012 2:39 pm

Re: 16-bit Windows Program Support

Post by raijinzrael » Sat Aug 06, 2016 6:51 am

PurpleGurl wrote:From XP or 2003. Use their components to see if they run. Why would I want to stick 16-bit parts in a 32-bit OS with nothing to make them work in between? I'm no developer, but I'm certainly not that stupid. You can use 16-bit code in 2000-XP, and likely 32-bit versions of Vista and 7, so why not try their components? And thus if 2003 parts won't work in ROS, then we have trouble. We might not want to implement everything that 2003 does, but in the cases where we don't, others can test 2003 parts. If they won't work, then the problem is elsewhere, and something that likely will need fixing.
Well... the problem with this procedure is that, different to common win32 libraries you can swap more or less sucessful, KRNL386, USER and GDI are tied directly to WoWEXEC engine, and WoWEXEC is deeply tied to MS NTVDM. Because the lach of official clean documentation, ROS VDM follows a different implementation model, and is almost nothing like MSVDM, except for some functions. Then you can't just take WoWEXEC and make NTVDM load it, that wouldn't work. Reversing original NTVDM would involve RE, for what ReactOS doesn't have spare devs to make it clean (One who wants to dirt himself for the sake of writting the documents to implement the model, and the legal stuff to sign it as a valid clean room implementation). That's why ReactOS decided to follow a different approvach for when time comes to implement Win16 support, and this is the reason why MS WoWEXEC will never work in ROS, and why ROS can swap Win16 core DLLs with Windows.

There's a similar case for the rest of the DLLs, which are just thunks for Win32 counterparts. Thunked DLLs only will work with the binary-equal originals from where them were derived, so them will not work with ROS Win32 DLLs.

raijinzrael
Posts: 10
Joined: Thu Jul 19, 2012 2:39 pm

Re: 16-bit Windows Program Support

Post by raijinzrael » Sat Aug 06, 2016 6:51 am

PurpleGurl wrote:From XP or 2003. Use their components to see if they run. Why would I want to stick 16-bit parts in a 32-bit OS with nothing to make them work in between? I'm no developer, but I'm certainly not that stupid. You can use 16-bit code in 2000-XP, and likely 32-bit versions of Vista and 7, so why not try their components? And thus if 2003 parts won't work in ROS, then we have trouble. We might not want to implement everything that 2003 does, but in the cases where we don't, others can test 2003 parts. If they won't work, then the problem is elsewhere, and something that likely will need fixing.
Well... the problem with this procedure is that, different to common win32 libraries you can swap more or less sucessful, KRNL386, USER and GDI are tied directly to WoWEXEC engine, and WoWEXEC is deeply tied to MS NTVDM. Because the lach of official clean documentation, ROS VDM follows a different implementation model, and is almost nothing like MSVDM, except for some functions. Then you can't just take WoWEXEC and make NTVDM load it, that wouldn't work. Reversing original NTVDM would involve RE, for what ReactOS doesn't have spare devs to make it clean (One who wants to dirt himself for the sake of writting the documents to implement the model, and the legal stuff to sign it as a valid clean room implementation). That's why ReactOS decided to follow a different approvach for when time comes to implement Win16 support, and this is the reason why MS WoWEXEC will never work in ROS, and why ROS can swap Win16 core DLLs with Windows.

There's a similar case for the rest of the DLLs, which are just thunks for Win32 counterparts. Thunked DLLs only will work with the binary-equal originals from where them were derived, so them will not work with ROS Win32 DLLs.

EmuandCo
Developer
Posts: 4323
Joined: Sun Nov 28, 2004 7:52 pm
Location: Germany, Bavaria, Steinfeld
Contact:

Re: 16-bit Windows Program Support

Post by EmuandCo » Sat Aug 06, 2016 8:20 am

Plain Wrong. One of the main tests we do is use ROS dlls and put em in Win2003 checking if dll xyz is the culprit for Bug xyz. And this works vice versa. You forgot that ROS aims to be binary compatible, right? WOW16 != WOWEXEC btw, and yes we have a lil different approach of NTVDM by using a CPU emulation to support 16 bit apps on 64 bit ROS in the future, too. But the rest is close to the original up to NOW. Not sure if that will be the case forever.
Image
ReactOS is still in alpha stage, meaning it is not feature-complete and is recommended only for evaluation and testing purposes.

Forever Winter
Posts: 131
Joined: Sun Oct 20, 2013 6:50 am

Re: 16-bit Windows Program Support

Post by Forever Winter » Sat Aug 06, 2016 9:36 pm

raijinzrael wrote: KRNL386, USER and GDI are tied directly to WoWEXEC engine, and WoWEXEC is deeply tied to MS NTVDM. Because the lach of official clean documentation, ROS VDM follows a different implementation model, and is almost nothing like MSVDM, except for some functions. Then you can't just take WoWEXEC and make NTVDM load it, that wouldn't work.
What do you mean with WoWEXEC engine? wowexec is the Win16 shell, the equivalent of progman under a "real" Windows 3.1. It's main task is to start the programs the user wants to run.
Why should NTVDM load wowexec? You don't even need wowexec, it can be replaced by whatever Win16 application you like with just minimal loss of functionality.
raijinzrael wrote: Reversing original NTVDM would involve RE, for what ReactOS doesn't have spare devs to make it clean (One who wants to dirt himself for the sake of writting the documents to implement the model, and the legal stuff to sign it as a valid clean room implementation).
I guess you must reverse engineer the Windows NTVDM anyway, since otherwise it would be incompatible to software that calls BOPs of Microsoft's NTVDM.
raijinzrael wrote: That's why ReactOS decided to follow a different approvach for when time comes to implement Win16 support, and this is the reason why MS WoWEXEC will never work in ROS, and why ROS can swap Win16 core DLLs with Windows.
It is basically a PC emulator that runs DOS in it and in case of Win16, runs a Windows 3.1 on top of that DOS system. I don't see why this shouldn't work under ReactOS.
raijinzrael wrote: There's a similar case for the rest of the DLLs, which are just thunks for Win32 counterparts. Thunked DLLs only will work with the binary-equal originals from where them were derived, so them will not work with ROS Win32 DLLs.
As a note, not all of the Win16 libraries are thunked to Win32. Examples are toolhelp.dll, ctl3d.dll and win87em.dll. They are taken as is from Windows 3.1 since it just wouldn't make sence to thunk
them up to Win32.

raijinzrael
Posts: 10
Joined: Thu Jul 19, 2012 2:39 pm

Re: 16-bit Windows Program Support

Post by raijinzrael » Sun Aug 07, 2016 7:07 pm

What do you mean with WoWEXEC engine?
I mean WoW32.dll and WoWEXEC.exe, the main Win16 core for NT VDM. All KRNL386 logic and some USER and GDI calls lowlevel calls are replaced by BOPs which end in these modules..
...WoWEXEC is the Win16 shell, the equivalent of progman under a "real" Windows 3.1. It's main task is to start the programs the user wants to run.
You clearly don't have clue what youre saying. And isn't a replacement of Progman. Check the execution chain. Is NTVDM > WoWEXEC> KRNL386 > Your Win16 App, not NTVDM > KRNL386 > WoWEXEC > your App. Also, WoWEXEC is a 16bit executable, which BOPs calls from KRNL386 and DPMI clients to WoW32.dll, which is a 32bit special VDD plugged intro NTVDM.
Why should NTVDM load wowexec? You don't even need wowexec, it can be replaced by whatever Win16 application you like with just minimal loss of functionality.
Do you have a way to back your claims? RE maybe? A document? Debugging testing? Because what i'm saying is backed on Undocumented DOS from Andrew Schulman and the few MSDN who barely document how the thing actually works. And you don't really need any doc to do a small test and see how KRNL386 will fail to load if any of NTVDM, WoWEXEC or WoW32.dll are replaced by any random stuff or are missing.
I guess you must reverse engineer the Windows NTVDM anyway, since otherwise it would be incompatible to software that calls BOPs of Microsoft's NTVDM.
NTVDM main core developer, Aandrejevic, already expressed his negative to RE and do what MS did with NTVDM, and his desire to pursue another different approvach to implement DOS/Win16 support. This means any functionality who depends in exact behavior of MS NTVDM internals which not work. This is the case of WoWEXEC/WoW32.dll, on which NTVDM versions of KRNL386/USER/GDI depend on.

Note that this doesn't affect 3rd party non-MS VDDs who BOP intro NTVDM, because the calls which are used by these VDDs are public, documented, and already implemented in ROS NTVDM... but you need more than just these and even more for WoWEXEC/WoW32, and by extension, NTVDM versions of KRNL386/GDI/USER.
It is basically a PC emulator that runs DOS in it and in case of Win16, runs a Windows 3.1 on top of that DOS system. I don't see why this shouldn't work under ReactOS.
Yes and no. Isn't a PC emulator, but an emulator specifically made and tuned to run specific NTVDM tailored versions of DOS and Win31. You can also verify this. Just take NTIO/NTDOS and KRNL386/GDI/USER from any NTVDM distribution, and compare them to their actual release counterparts, DOS5 IO.sys/MSDOS.sys and Win3.0 KRNL386/GDI/USER. You will see how different them are.
As a note, not all of the Win16 libraries are thunked to Win32. Examples are toolhelp.dll, ctl3d.dll and win87em.dll. They are taken as is from Windows 3.1 since it just wouldn't make sence to thunk
them up to Win32.
You already said it. The ones who matter, the Win16 core ones, are all them only thunks, with exception of KRNL386/USER/GDI, which are complete, but heavily modified versions, specifically made to run inside NTVDM and the environment which WoWEXEC provides.

Forever Winter
Posts: 131
Joined: Sun Oct 20, 2013 6:50 am

Re: 16-bit Windows Program Support

Post by Forever Winter » Sun Aug 07, 2016 11:36 pm

Could you clarify what you mean when you say wowexec? I have the feeling that you say wowexec, but in fact mean wow. Otherwise parts of your post don't make sense because they are
technically imposible. Anyway, wowexec is just a part of wow, namely the Win16 shell that replaces progman from an unmodified Windows 3.1. And as such, it has the the same purpose
as progman under Windows 3.1, and that is to start the programs the user wants to run. As for the needed wow versions of krnl386 and co, this was the subject of the post from PurpleGurl.
Of course you need them and if the system is compatible enough, you can take the ones from Windows. If it is not, you get compatibility problems sooner or later, because there is probably
software out there that uses it. You could also assume that no Win16 program will ever call any dos function or uses similar stuff, handle them as pure 16-bit protected mode programs and
do the Win16 emulation without any dos stuff and ntvdm at all. However, you will loose a big part of compatibility to Windows 3.1.

As for the pc emulator, providing machanisms to let software that runs in the emulator communicate with the host and execute code on it doesn't make it less a pc emulator than any other
one. And the ability to load dos straight from the system files instead of booting from a disk doesn't do either.

As for your request to back my claims that you don't even need wowexec, why don't you just try it yourself? Take progman from Windows 3.1, replace wowexec with it and start any Win16 app.
Instead of the started application, you will now see progman, which can be used to start other Win16 programs. As for ntvdm and wow32, I don't see where I have mentioned to replace them.
And yes, it shouldn't be a surprise that you can't execute krnl386 if you replace the emulator it runs in with another random program. But as said, I can't remember where I have claimed anything
like this.

As for the reverse engineering of ntvdm, this was meant in regard to buildin BOPs, not to ones from third party components. This wasn't meant as a call to anyone to do it. Anyway, it will effect
compatibility with software that doesn't come from the ReactOS team.

However, I don't see the connection to wowexec.

Aeneas
Posts: 465
Joined: Sat Oct 10, 2009 10:09 pm

Re: 16-bit Windows Program Support

Post by Aeneas » Thu Aug 11, 2016 8:02 pm

Ahemmm... on a related note: does anything of Qemu / Virtualbox / DOSBOX run on ReactOS "well enough"? :) Because if it does, one can also emulate stuff.

Personally... I don't care about the 16-bit-stuff. One has to make somewhere a "cut". A "cut" for a more and more irrelevant platform looks pretty acceptable to me. (Yes, there is nostalgia. But that is not a good enough reason to waste scant resources.)

Konata
Posts: 391
Joined: Sun Apr 20, 2014 8:54 pm

Re: 16-bit Windows Program Support

Post by Konata » Thu Aug 11, 2016 11:01 pm

Aeneas wrote:Ahemmm... on a related note: does anything of Qemu / Virtualbox / DOSBOX run on ReactOS "well enough"? :) Because if it does, one can also emulate stuff.

Personally... I don't care about the 16-bit-stuff. One has to make somewhere a "cut". A "cut" for a more and more irrelevant platform looks pretty acceptable to me. (Yes, there is nostalgia. But that is not a good enough reason to waste scant resources.)
I fully agree with you, but ReactOS developers are contributors, not hired staff. So it's really not possible to waste resources, since everything is donated. If they want to use their free time to improve the DOS support then it's their choice.

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Bing [Bot] and 3 guests