Subj : Multi-platform EXE?
To   : Don Guy
From : Jonathan de Boyne Pollard
Date : Thu Sep 13 2001 06:38 am

DG> LOADDSKF.EXE appears to run as a native process, regardless of whether
DG> it is launched from a DOS or and OS/2 command prompt.  Is it possible
DG> to duplicate this with Borland C++ 1.0?

Yes, in two ways:

The first requires the OS/2 1.x Developers' Toolkit (as I recall).  You BIND a
DOS stub loader program and family API library onto the OS/2 program.  The stub
loader program, when executed, loads the executable proper into memory, binding
the calls to the OS/2 system API to the family API library, which translates
them into DOS system API calls.

The second involves linking two separate programs, one for DOS and one for
OS/2, and using the former as the stub executable in the latter.

In either case you'll need a replacement for Borland's C library, of course.
You won't be able to use the one that Borland supplies, since that uses the DOS
system API and not the Family API.  Many years ago, because I didn't have the
OS/2 1.x Developers' Toolkit, I wrote a replacement 16-bit library that used
the Family API, which I used, in combination with Borland C++ 3.x for DOS and a
Family API to DOS API shim library that I wrote, to create version 1.0 of my
Command Line Utilites.  I never released the C library to the general public,
because Borland came out with a proper 32-bit Borland C++ for OS/2 and it was
no longer worth the time and the effort to do so.  (I did release the Family
API library that I wrote.)

Why do you want to create a bound executable anyway ?  I urge you to not
encourage the continued use of DOS by making more DOS programs.  Encourage the
use of OS/2 instead.  Make a native OS/2 program and have done with it.

� JdeBP �

--- FleetStreet 1.22 NR
* Origin: JdeBP's point, using Squish <yuk!> (2:257/609.3)