Subject: A possible problem with a dos emulator...need help
To: netbsd-ports <netbsd-ports@sun-lamp.cs.berkeley.edu>
From: Brett Lymn <blymn@awadi.com.AU>
List: netbsd-ports
Date: 03/18/1994 19:26:07
Hello,
        When I get the time I am hacking away at a dos emulator.  It
has come time to seriously think about implementation issues for the
emulator itself.  One thing that has me worried at the moment (not the
only thing...;-) is the fact that the DOS land is going to occupy the
bottom 1Meg of the emulator address space.  I can see some problems
with this:

1) The unix exit code of the process will be overwritten by the DOS
stuff

2) I think the first couple of pages of the process are protected so
that dereferencing a null pointer will produce a SIGSEGV.

My current thinking is that I can spelunk the crt0.c to make a special
one for the emulator so that the exit code is shifted to above the
1Meg+64K magic limit that DOS knows about.  Linux dosemu got around
the problem by using the shared libraries and linking their code to an
address about the Magic Barrier (tm) - if I used 'current could I do
the same trick?  I would prefer this to hacking crt0 because it is an
ugly hack (hey, IMHO running MS-DOS is pretty ugly :-).  If I can use
the shared libraries to fix the MB (tm) how can I do this?

As for point 2, I am not sure how I can get around this.  I must have
these pages r/w as DOS will insist on it.


Please tell me I am worrying about nothing ;-)  if not any
suggestions/pointers?

-- 
Brett Lymn, Computer Systems Administrator, AWA Defence Industries
===============================================================================
"Where a calculator on the ENIAC is equipped with 18,000 vaccuum tubes
and weighs 30 tons, computers in the future may have only 1,000 vaccuum
tubes and perhaps weigh 1 1/2 tons."
                -- Popular Mechanics, March 1949

------------------------------------------------------------------------------