Mon Apr 8 19:50:01 2002
I have compiled (not run, and yes, I know there is a difference) and
linked the mainline e3 sources against the primitive x86 runtime
support package (such as it is). I have downloaded and run the
resulting executable (which, as I said, included the e3 object, but
didn't jump to any entry points). The executable is still within
acceptable size limits (640K DOS type limits).
I have not run any really significant portion of the e3 code on the
bare iron. Before I can do that, I need to do some MMU work in the
runtime support package (in order to have a 128MB continuous block of
address space to map onto the existing in-memory band pages).
Most of the problems I had dealt with C++ stream I/O. I had to fake
up a portion of the library. I also ifdefed some formatted
printf-based I/O stuff and used stream stuff instead. I also disabled
some speculative interpretation of lispm Q pointer contents as
characters because it used ctype (and I was in a hurry). I also
ifdefed out some unneeded include files (at least they're unneeded on
my linux box) in order to try to minimize the number of things I had
to fake up.
I also separated out the band loader from the band proper because I
suspect I'll just want to remap the band in situ after Etherboot has
loaded it. We might want to do something similar with mmap and
copy-on-write and mprotect (do we need to have a read-barrier?) on
Although I rebuilt the "normal" e3 (i.e., the one you get when you
type "make" in the top-level e3 directory) and ran it successfully (as
near as I could tell from the diagnostic printouts), I will probably
check a little harder to make sure I haven't really screwed up
anything and then commit the stuff ASAP.
==== John Morrison
==== MAK Technologies Inc.
==== 185 Alewife Brook Parkway, Cambridge, MA 02138
==== vox:617-876-8085 x115