[...]
>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                           

Reply via email to