[...]
>Also relatively popular here (Scotland) was the Amstrad PCW series, they
>ran CPM and came with a word processing package called locoscript (you
>had
>to be "loco" to use it). There was a Drive 'M' stored in memory. This was
>around 100k in size on a 256k machine.
Used one; I even programmed one. Nice machine, decently unpretentious. I even
went so far as to reverse-engineer the interface to the graphics library and
write some programs for it.
The big problem with the Z80 is not how much memory the machines have; I've
seen multi-megabyte upgrades for the PCW. The problem is the processor can't
address all that in one chunk. The Z80 has a 16-bit address bus, so it can
only address 64kB, total --- ROM, RAM, everything has to fit in there.
You *can* get around this by paging; I can imagine a system which uses 32kB
for the data segment, 31kB for the text segment (or some other combination)
plus a little bit for a syscall interface. When you call the kernel you page
out the process and page in the kernel. This isn't hard. I believe that a lot
of CP/M machines do exactly this.
Unfortunately, this requires custom hardware, and most 8-bit computers either
don't have this hardware (Spectrum 48kB) or have mutually incompatible paging
hardware (Amstrad PCW vs. Spectrum 128, anyone?).
You most likely wouldn't be able to do a port of ELKS to a generic Z80 (or
other 8-bit) machine. You'd have to port to a specific platform, and the
hardware constraints of the platform would determine much of how the port
worked. For example: a stock BBC Master has up to 16 banks of 16kB, all mapped
in to &8000. Then it has two 20kB banks that map in to &3000. Then there's
another, smaller bank that maps in to &8000 over the top of the 16kB blocks
that the kernel uses for private workspace. 0 to &3000 contains unmappable
RAM, &C000 to &F000 contains the kernel, &F000 up contains I/O ports and
kernel entry points.
How would you port ELKS to this? You could put processes in the 16kB banks; if
you were clever you could probably fit several processes into one block. What
do you do with the 20kB blocks? Or the main memory? And remember that a stock
BBC Master only comes with *4* of those 16kB banks filled with RAM. The others
are either blank or contain ROM.
Frankly, I think that porting ELKS to an 8-bitter is probably not worth it.
Too hard to make it fit, you can't generalise code so you'd have to write lots
of platform-specific stuff for each platform, and generally too big to be
useful. If you want a Unix lookalike you'd be better off designing from
scratch. That said, though, I'd love for someone to prove me wrong.
(PS. How's St.Andrews? I left two years ago...)
--
+- David Given ---------------McQ-+ "There does not now, nor will there ever,
| Work: [EMAIL PROTECTED] | exist a programming language in which it is
| Play: [EMAIL PROTECTED] | the least bit hard to write bad programs."
+- http://wired.st-and.ac.uk/~dg -+ --- Flon's Axiom