Sponsored
by the OS/2 Supersite
The Win32-OS/2 ProjectWeb page by Timur TabiLast Updated: March 16, 1998 Mirror sites: http://www.maschek.com/win32-os2 (Germany) http://win32os2.home.pages.de (Germany) http://www.sdg.ml.org/win32os2/ (Sweden) . |
Support OS/2Get a bumper sticker! |
Note to current URL-Minder users: YOU ARE NOT GETTING FALSE UPDATE
NOTICES. I occasionally make very minor updates to this page without
changing the date on the top.
If you don't know what OS/2 is, or if you would just like more information on OS/2, please check out my New OS/2 User Web Page.
This software is available for free to all users.
There is also a transcript from a V.O.I.C.E. IRC question-and-answer chat session with Peter Fitzsimmons and Timur Tabi. A lot of frequently asked questions were posted and answered during this session, so you may find answers to your questions there. The transcript was edited by Chris Wenham of OS/2 e-Zine.
The was another V.O.I.C.E.
IRC question-and-answer session with Peter, Sander, and Timur on Monday,
March 9th.
1. Please download the current release before doing anything else. Try the converter yourself first. If it doesn't work, then we can talk. Do not email us your results. Read the section titled "How to report bugs" to learn what to do next.
2. Don't tell us about software we can download ourselves. We're only interested in commercial software that has to be purchased.
3. Don't ask us what software we want - that's completely missing the point. The idea is for YOU to send US software that YOU want to have converted. Look at the Win95/NT software that YOU NEED TO USE under OS/2, and pick from that list. We don't want suggestions. We don't want advice.
4. 99% of all Windows 95/NT software WILL NOT WORK. In fact, the majority of the small apps that come with Windows 95/NT will not work either. And not only that, but of all the apps that do work, 99% of them already have native OS/2 equivalents that work better. So why are you wasting your time converting Notepad or Calc?
5. Because the converter is so immature, we ask that you wait until the public releases can convert your app so that it runs at least part-way. It is way to early for us to consider the average Win32 application. We will be releasing updates about once a month - eventually your application will work, to some extent. Until then, please do not make any offers.
6. DO NOT EMAIL US ANY SOFTWARE.
We are accepting donations of Windows 95/NT software. Our intention is that you purchase an application and have it shipped to us. We need to have a full blown legal copy of the application, because we will need all manuals and we may also need to contact the vendor's technical support. Without a full legal copy of the application, we will not have all the resources we need to convert it.
IMPORTANT NOTE: We make no guarantees whatsoever that we will be able to convert your application. All we are offering is to include your application in our test suite. We will be aware of the problems, but we make no promises that we will be able to fix them. Our goal is to be able to convert every Windows 95/NT application, but there are limits, and we know that there are some Windows 95/NT applications that we will never be able to convert.
The team member who will accept your donation will depend on what kind
of application and where you live. First determine if any of the team members
is working on the appropriate area. If no one qualifies, then send it to
the nearest team member.
Team Member | Category of Application or Location |
Joel Troster | All MIDI applications. |
Sander van Leeuwen | Any general apps from those in Europe, and any Glide-based games (no D3D!) from anywhere |
Kevin Laughbaum | All OpenGL applications |
Chris McKillop | Any general apps from those in Canada, and the US if Timur gets overloaded. |
Timur Tabi | Any general apps from those in the United States |
Felix Maschek | Any communications (serial I/O) apps from those in Europe |
Submitted Software | Team Member | Status |
Finale 97 (Coda Music Technology) | Joel Troster | being tested |
Cakewalk 5 (Cakewalk) | Joel Troster | offered, not yet submitted |
Mathcad 7 (Mathsoft) | Timur Tabi | offered, not yet submitted |
Grapher for Windows (Golden Software) | Timur Tabi | offered, not yet submitted |
Surfer for Windows (Golden Software) | Timur Tabi | offered, not yet submitted |
Once you have converted all of your .EXE's and DLL's with pe2lx, all you need to do is run them under OS/2. Since you need Open32 for this to work, you must have OS/2 Warp 4, or Warp 3 with at least FixPack 26 applied. Also, if you have applied Warp 4 FixPack 3, you must either apply the os2krnl fix on top of that, or apply FixPack 4 or later. Also, there seems to be some debate as to whether Warp Server Advanced SMP can be used, as some have reported that the Warp Server/Warp 3 FixPacks do not add Open32 support to Warp Server, yet others say that the support can be manually added.
You will need to install the application under a real copy of Windows 95 or NT, and you can only run the converter under OS/2. This means that you will need to have Windows 95/NT and OS/2 installed on the same machine, and that you will need to be able to access your Windows 95/NT partition from your OS/2 partition. In order to do this, you will need an OS/2 IFS driver that will allow OS/2 to properly read from the Windows 95/NT partition. You can look in the /pub/os2/system/drivers/filesys directory on hobbes to find IFS drivers for VFAT and NTFS.
But before you post .... scan the newsgroup to see if your bug or question has already been posted. Even better, use Deja News to search the comp.os.os2.bugs newsgroup. Click here to start a search on DejaNews of the comp.os.os2.bugs newsgroup. Not only is this proper etiquette, but it keeps you from looking like an idiot.
You can also check out Win32-OS/2 Application Compatibility Resource web page. This page is NOT maintained by any of us - it is completely independent so we do not claim any responsibility for its content. However, it is usually a better bug list than this page.
On a side note, the fact that pe2lx.exe works is usually not of any value. All the conversion process does is to create an OS/2 EXE. The real trick is in loading the EXE into memory and getting it work. There are only three cases when pe2lx.exe will not work:
Known bug | Current Status or Comments |
pe2lx can't convert EXE's generated with a Borland compiler (or something like that). | We'll fix this soon or later |
SYS2070 or SYS0127 when trying to run a converted EXE | This means that the EXE is trying to use a function in one of the supplemental DLL's that is not yet implemented. |
Application | Comments |
Quake II | Yes (including sound). Full screen on a 3Dfx Voodoo card (same speed as in NT), and Windowed (software rendering) on any system (slower than in NT) - see screen shot |
GLide (VooDoo 3D Library) | Yes, including most demos from 3Dfx's web site |
Freecell, Reversi, Notepad | Convert just fine, although some run better than others. For some apps, only the Win95 version will work, for others only the WinNT version will work. See screen shot |
Windows Calculator | Works almost - no borders, difficult to close |
Freecell | Only the version from Win32s 1.25 (whatever that means) appears to work, although there are some color problems |
Solitaire | Only the version on NT SP3 appears to work |
GDI demo | Converts just fine - see screen shot |
Rasmol | Freeware molecule viewer - converts just fine. See http://klaatu.oit.umass.edu/microbio/rasmol/ |
MFC Samples | Some of the simple MFC samples |
Tealpaint database | Reported to work fine |
WinHelp 32 4.10.1691 | Works on some help files, not all |
There are three prime areas of current development:
Resources. Resources are GUI items like icons, menus, translatable
strings, etc. They are stored inside the .EXE or .DLL. Open32
requires that all resources be in OS/2 format, so pe2lx must also translate
the resources from Windows format to OS/2 format.
Resource Type | Status |
bit maps | working |
accelerators | working |
cursors | working |
menus | working |
dialog boxes | working |
icons | working |
strings | Win32 supports numeric and text string ID's, whereas OS/2 supports only numeric ID's, so a stub function in kernel32.dll does the translation. |
version | version.dll is needed to read these resources, but it's not implemented yet. Fortunately, very few apps use this resource |
DLL Name | Purpose/Function | Status |
advapi32 | Registry and security apis (among others) | Approx. 20% (most of the registry API's). The other 80% is for the NT security API's, which will not be supported. |
gdi32 | All the GDI (graphics) API's | 77% |
kernel32 | Kernel apis (file system, memory, threads, events, etc.) and console API's | 60% complete. Console API's are now available. UPDATED! |
ole32 | OLE and OLE2 | All stubs - just enough functionality to get an app thinking that OLE is available (needed for some apps). |
user32 | Window apis (create/manipulate windows, dialogs, menus, etc.) | 72% |
shell32 | GUI extensions, drag 'n drop, shell extensions in Win95/NT, all sorts of weird things like loading resources from other exes/dlls. | Less than 5% |
version | Versioning API. (used to extract info from the version resource most win32 exe's contain) | All stubs |
winmm | Multimedia API's | 50%. Wave-out is working. Wave-In, Mixer, and MIDI Mapper are all stubs. MIDI In/Out is partially available only on Warp 4 with RTMIDI. midiStream is not done. Aux is 90% complete. UPDATED! |
ddraw | DirectDraw | 25%. Partially implemented - enough to run a DirectX SDK animated donut sample. |
comctl32 | Common GUI controls, like buttons, toolbar, image lists, notebooks, etc. | This DLL must be converted by you. The version that comes with Win95 does not work, but the updated version from Microsoft does. Please use this version instead. |
comdlg | Common dialog boxes (file open/save, print, palette, find, etc.) | Completely implemented using Open32. |
dsound | DirectSound | All stubs |
winspool | Called winspool.drv in real Windows. | Only one function is implemented |
winsock | TCP/IP sockets support | 90%. 6 more functions until 1.1 compatitble, 2.0 support is next UPDATED! |
capi2032 | CAPI 2.0 ISDN API | 100%. |
tapi32 | Telephony API | All stubs. |
mpr | Network stuff | All stubs. |
netapi | Network stuff | All stubs. |
opengl32 | OpenGL API | 80% stubs, 15% fully implemented, 5% not yet implemented |
In particular:
Win32 is the name of an API (Application Programming Interface) that both Win95 and WinNT support. API's are used by programmers. An API is a collection of services that an operating system provides for applications to use. Most applications are written to a specific API for a specific operating system. Since both Win95 and WinNT support the Win32 API (with minor differences), it's very easy to write an application that works on both Win95 and WinNT at the same time. An application which runs on Win95 and WinNT is called a Win32 application.
The name given for the Win32 API as implemented under OS/2 is Open32. Open32 is not the complete Win32 API - many functions are missing. The biggest software vendor who uses Open32 is Lotus - all of their new OS/2 applications use the Open32 API extensively.
There are several versions of Win32s. The most recent is version 1.30. Unfortunately, Win-OS/2 only supports Win32s 1.25. This means that there are a number of Windows 3.1 applications which will not work under OS/2 simply because they need a higher level of Win32s.
Solitaire
and GDI demo (1024 x 768 x 256)
Some key differences are:
To do this, supplemental DLL's are provided. These DLL's contain not only those API functions that are not in Open32, but they can also contain replacements for those functions that are in Open32 but do not work correctly.
In addition, these DLL's can also contain pre-processing for some Open32 API's. For instance, a particular Open32 API could perhaps implement only a portion of the functionality of its Win32 counterpart. The stub function in the supplemental DLL could perform the missing task and then call upon the Open32 DLL to handle the rest.
The stub functions in the supplemental DLL's all have a prefix of "OS2" (although they are not exported as such). The reason for this is that the converted EXE must link not only to all of the supplemental DLL's, but also to the Open32 DLL (PMWINX.DLL), because PMWINX.DLL does most of the real work (after all, it is an implementation of the Win32 API). All functions must have unique names, so if PMWINX.DLL has a function called "ReadFile", there cannot be a function with that same name in the any of the supplemental DLL's, because then OS/2 wouldn't know which version to use when the application calls "ReadFile". So when pe2lx converts the EXE to OS/2 format, it also changes all of the API names. "ReadFile" becomes "OS2ReadFile".
There are three different categories of Open32 API's:
Name | Location | Email Address | Accomplishments and Current/Future Work |
Timur Tabi | Austin, TX | timur@io.com | Maintainer of web site. Spoke at Warpstock. |
Jochen Schaeuble | Germany | jochen@Herrenberg.netsurf.de | Maintainer of mirror-web site |
Sander van Leeuwen | Delft, the Netherlands | sandervl@xs4all.nl | Almost everything (pe2lx + dll's) |
Peter Fitzsimmons | Mississauga, Ontario, Canada | pfitz@ican.net | API utilities, development environment and help with pe2lx, user32, kernel32. |
Christophe M. Vallat | miodrag@mygale.org | Registry API's. | |
Saxon Joseph Hyde Jones | saxon@gpu.srv.ualberta.ca | temporarily unavailable | |
Vince Vielhaber | Oxford, MI | vev@michvhf.com | Winsock |
Kevin Laughbaum | Houston, TX | klaughbaum@utsi.com | OpenGL |
Chris McKillop | Waterloo, Ontario, Canada | cdmckill@engmail.uwaterloo.ca | Build environment |
Joel Troster | Ontario, Canada | jtroster@ibm.net | MIDI support |
Patrick Haller | Germany | haller@zebra.fh-weingarten.de | Console API's |
Felix Maschek | Ammersbek, Germany | felix@maschek.com | Serial I/O, maintainer of mirror-web site |