\documentstyle{letter}


\address{
Michael B. Parker, MIT '89 \\
|\\
East Campus - Mun. 303 \\
3 Ames Street \\
Cambridge, MA 02139 \\
(617) 225-6303
}

\begin{document}

\begin{letter}{
Byte Magazine \\
|\\
One Phoenix Mill Lane \\
Peterborough, NH 03458 \\
(603) 924-9281
}

\opening{Dear Byte Editors,---DRAFT Rel: 0.1, Ver: 12/3/87.  NOT OFFICIAL}

I am a MIT student and one of your regular subscribers.  I enjoy your
magazine because it is one of the few I feel which has really informed me,
and has shown me interesting ideas and fields in computer science.

I have come to admire Byte, and look forward to its arrival each
month.  I dare say it seems your magazine often has the content of
``Transactions of the ACM'' without the impersonal formality!

Byte has taught me a lot.  And now that I have gained a toe-hold on
the field (perhaps a ``foot'' after I am graduated!), I feel it would
be fair if I try to likewise help out its other readers...

For the past year and a half I have been designing a distributed
operating system for personal computers, with the novel basis of
associative, distributed shared-memory.  It has proved a very
challenging and educational task, and in writing it on the IBM PC
I've had to implement several important programming abstractions.  It
occurred to me that many of my programs and discoveries would be
useful to your reading audience.  So I got to thinking what could I do
for them...

I could write occasional, short articles about basic computer science
concepts, especially those not often found in the personal computer
world.  Each article would talk about a basic computer science
concept (like resource management in a multitasking environment).
The article would also include (perhaps via BIX) a useful working
program module (along with sample uses) which would illustrate the
concept and which the reader could include in his or her own code.
The articles may also rely on the concepts developed in previous
articles, allowing the reader to incrementally build powerful,
modular systems and encouraging a regular readership.  They would
contain ``academia'' high-level computer science
concepts (which often get forgotten in the rush of the mini and
micro world), but with real-world implementations that the reader can
get his/her hands on and play with and incorporate in his/her
programs.  -- A sort of {\em Circuit Cellar for Software}.

{\center * * *}

For the most part, I plan to implement the concepts in ``C''
as ``C'' is widely portable throughout the personal computer and
mini/mainframe world.  The code will be well-commented and designed
with the modern programming methodologies\footnote{Procedural and
data ``clusters'', modular decomposition, systematic naming, etc.}
which I have learned at MIT.  Though the emphasis will be on
generality, the ``C'' programs will provide both informative and useful
examples.


I am currently designing my own operating system for use on PC's,
however I find most PC operating systems (and even Berkeley UNIX, with
its lack of shared memory) do not provide the software support I need
to test my designs.  I'm having to design my own multitasking
environment that's both powerful and portable between systems.  So one
series of three articles I would like to do for you includes:

\begin{itemize}
	\item	``Building A Multitasking Environment: \\
		{\em\#1 --  Switching Contexts}''

	\item	``Building A Multitasking Environment: \\
		{\em\#2 -- Organizing a Task Force}''

	\item	``Building A Multitasking Environment: \\
		{\em\#3 -- Managing Resources}''
\end{itemize}

By the time the reader has completed this series, he/she will have
{\em built} a C programming environment which provides, under either
MS-DOS or UNIX, many of the features of Microsoft's upcoming OS/2
(namely multitasking, interprocess communication, and resource
management).\footnote{Though not at all meant to be a replacement or
substitute for OS/2.} I would speculate these concepts are fairly new
to many personal computer users and programmers.  Not knowing, PC
users have devised hacks (such as Terminate-but-Stay-Resident (TSR)
programs) which approach the same effect, but much less cleanly and
effectively.  With the recent release of the Macintosh MultiFinder and
Microsoft's upcoming OS/2, however, there will soon be a large need to
know about programming life in a multitasking environment.  My
articles would aim to help satisfy this need.

Enclosed is the article on switching contexts.  It should give you a
feeling about what this series and possible future articles would be
like.

If you decide to publish the article, I {\em ask} three things of you:

\begin{enumerate}

	\item That you preserve the copyrights on the article and program files as
worded (except, of course, for minor corrections for legal precision).

	\item That you include in your publication at least the listings of
the major program files ({/em mpthd.h, mpthd.c, mpsem.h, mpsig.h}),
and, space permitting, others as {/em mpbug.h, mpbug.c,} and {/em
mpmisc.h}.\footnote{I know you don't like to list code in your
magazine, but the point of these articles is actually {\em
implementing} usually just talked-about high-level concepts.  The
article won't track well without the listings.}

	\item That you make this article and program files available to the
public on BIX.

\end{enumerate}

In exchange, I would not release the article to any other commercial
publications or media.

I know this is a lot to ask, but the terms not unnegotiable.  I would
like to see your readers and the public get a good context switch.
And I should like to get published.  It would make me feel I've
accomplished something {\em for myself} in this field.

If you agree to the three things I ask (I'd appreciate it), you may
have the article to publish for free.  Or whatever you feel is fair.

Please call or send me your comments \& thoughts.  I admire your
efforts and hope I can be of service.


\end{letter}


\signature{Mike Parker \\
	MIT - 1989
}


\end{document}








