I need to run 16-bit executable on 32-bit OS

I need to run 16-bit executable on 32-bit OS

Post by Walter Macewi » Sun, 08 Aug 1993 03:19:03



(My previous posting's description seems to have its ending "?" truncated,
so I am re-posting with a new description.)

What I need is the ability to -run- existing 16-bit compiled and linked code
on a 32-bit UNIX operating system and have it interface to native UNIX code.

I have a package running on an 80286.  I want to move it to a UNIX platform,
and UnixWare is what my company would like to use.

The package DOES NOT run under DOS.  It runs on our own system which DOES
NOT use any protected mode capabilities of the 80286.  However, executables
that we load and run -are- in DOS's 16-bit ".EXE" format (the non-Windows
format).  Loading the executable into memory is not a problem.  I already
have a solution for that.  What I need to resolve is the following:

  1.  How do I tell UnixWare that the code I want it to execute is 16-bit
        code, and
  2.  How do I call 32-bit routines from the 16-bit code?

Note:  The executable is already being passed the address of a table of
service routine addresses in segment:offset format.  The executable then
uses these routine addresses for every access to system services for file,
I/O, and other operations.

BTW:  UnixWare -does- come with a product called Merge from Locus Computing
Corporation, but it does not fully meet our needs.

--

Apertus Technologies                                       (612) 828-0582
Eden Prairie, MN

 
 
 

1. I need to run 16-bit executable on 32-bit OS

(My previous posting's description seems to have its ending "?" truncated,
so I am re-posting with a new description.)

What I need is the ability to -run- existing 16-bit compiled and linked code
on a 32-bit UNIX operating system and have it interface to native UNIX code.

I have a package running on an 80286.  I want to move it to a UNIX platform,
and UnixWare is what my company would like to use.

The package DOES NOT run under DOS.  It runs on our own system which DOES
NOT use any protected mode capabilities of the 80286.  However, executables
that we load and run -are- in DOS's 16-bit ".EXE" format (the non-Windows
format).  Loading the executable into memory is not a problem.  I already
have a solution for that.  What I need to resolve is the following:

  1.  How do I tell UnixWare that the code I want it to execute is 16-bit
        code, and
  2.  How do I call 32-bit routines from the 16-bit code?

Note:  The executable is already being passed the address of a table of
service routine addresses in segment:offset format.  The executable then
uses these routine addresses for every access to system services for file,
I/O, and other operations.

BTW:  UnixWare -does- come with a product called Merge from Locus Computing
Corporation, but it does not fully meet our needs.

--

Apertus Technologies                                       (612) 828-0582
Eden Prairie, MN

2. Running AIX 4.3 application on AIX 5.0

3. How to run a 16-bit executable on a 32-bit OS?

4. flash-rom

5. SpeedStar64 on 16-bit & 32-bit modes

6. Building my first PC

7. Can't use 16-bit, 32-bit modes

8. Does any part of the standard linux kernel use I/O ports 043h 443h 843h?

9. DMA : 32-bit physical address -> 16-bit segment/offset

10. mrand48() returning 16-bit longs, instead of 32-bit

11. difference between 16-bit & 32-bit OPERATING SYSTEMS

12. Calling 16-bit PM code from 32-bit PM Kernel Driver

13. How Can we tell Solaris OS is running 32-bit or 64-bit?