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

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

Post by Walter Macewi » Thu, 05 Aug 1993 02:17:36



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

 
 
 

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

Post by Ringo K. » Tue, 10 Aug 1993 21:34:59



>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

My client program needs to be able to communicate with the "talkd" daemon of
the unix However, I do not have the message structure that used by Sun Unix
(Sun 4.3.1).

I have the message structure for BSD (which I ftp from bsd source code),
but the message structure from BSD is for "ntalk" !!

Someone mentioned to me that there exists two version of message structure
for talkd !!  

Can anyone out there have any idea of how to locate information about it??

I try to check in the Manual and rfc but no luck.


Thanks


Department of Applied Computing
University of Tasmania at Launcestion

 
 
 

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. Belkin F5D6050 (Ver 2) on Linux?

3. sndconfig - help!

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

5. Large memory allocation problem

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

7. SCO ZIP

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

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

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

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

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