[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Another New Hardware Thought



Tristan Mumford wrote:

It may be a little OT, but the Amiga 500 multitasked really well and it
didn't have an MMU. All that's needed for pre-emptive multitasking
generically speaking is a CPU that has half decent interrupt support.

If, by that, you mean a compact, easily save process state, then I
agree--though memory protection is a definite plus.

The problem with the 6502 is that pages 0 and 1 are intrinsically part
of the process state (and even more for the Apple II), so a fast process
switch is not possible without 1) restrictive rules on processes sharing
page 0 and the stack space, or 2) an MMU-like way to remap pages very
quickly.

As for the virtual memory issue. It's possible to have virtual memory on an
MMU-less machine. It's just somewhat less elegant. No matter whether it's
software or hardware driven it still requires an OS that supports it. So
while it would be nice, it would probably need it's own OS to take
advantage of it.

Or an application that implements it for its own purposes.

I've written several BASIC apps that "page" buffers in and out of memory
as needed--in fact ProDOS sparse binary files are great for operating
in a large virtual data space (the "B" parameter is your friend ;-).

My "MIDI Compiler" (linked from the CrateSynth paper) is a good example
of a BASIC application that processes an unlimited length input file
consisting of many concatenated segments that must be merged, and
producing many potentially large output streams.

The input file is read in a random, paged way as streams are merged,
and the output streams are written into one large, sparse file that is
copied to separate output files after compilation is complete.  The
result is that only two files are open, even though dozens of "virtual"
files are being processed.

The Applesoft code to manage this "data paging" is quite simple and
compact, and is shared by all input and output streams.

Appleworks is an example of an application that does "segment-oriented"
data paging that is quite straightforward and relatively fast, though
for some reason it was only implemented for RAM-based devices and never
extended to disks.

-michael

NadaNet file server for Apple II computers!
Home page:  http://members.aol.com/MJMahon/

"The wastebasket is our most important design
tool--and it's seriously underused."