next up previous contents
Next: License Up: MOSS ``A Soft Blanket Previous: Contents

Introduction

MOSS is new DOS extender primarily targeted for people who must write DOS programs for some reason or another, but want to have as little to do with DOS as possible. (Like us, for example.) To this end, MOSS is primarily intended for cross-development from ``real'' OS's rather than for native development under DOS. MOSS's remote source-level debugging support makes it especially convenient to write DOS programs if you have a DOS test machine sitting next to a Un*x-compatible development machine. Furthermore, MOSS's API attempts to hide much of the ugliness of DOS under a Un*x/POSIX veneer, for example by providing POSIX-like file I/O, POSIX signals for intercepting processor exceptions and hardware interrupts, POSIX mmap() for mapping device memory such as the video buffer, etc.

We (Sleepless Software) created MOSS for a variety of reasons. One was pragmatic: we had a large Linux program needing to be ported to DOS, and none of the existing DOS extenders (commercial or free) really suited our purposes. They either (a) did not allow unencumbered, royalty-free use with commercial applications, (b) would have required too much porting effort on our part, or (c) did not have good enough cross-development support.

Another reason we created MOSS was to exercise the flexibility of the Flux OS toolkit currently under development at the University of Utah, from which a great deal of MOSS's code is derived. This toolkit is a collection of infrastructure and reusable code for fast and flexible development of operating systems. Since a DOS extender is really just a kind of mini-operating system (though perhaps of a rather unusual variety), we decided that creating a DOS extender based on this toolkit would be a good experiment to see how much functionality could be shared and reused even between such diverse environments. We believe we have succeeded quite well in this experiment: more than 50% of the code implementing MOSS itself is generic code shared by other OS's and OS-like programs that the Flux project has developed, and almost all of the C library is taken directly, unmodified, from FreeBSD. For more information on the Flux project and the Flux OS toolkit, see our web pages at `http://www.cs.utah.edu/projects/flux/'.




next up previous contents
Next: License Up: MOSS ``A Soft Blanket Previous: Contents

Bryan Ford