nc100em v1.0 - an svgalib-based Amstrad NC100 emulator
 xnc100em - an NC100 emulator for X
 tnc100em - an NC100 emulator for ttys

Z80 emulation from `xz80', copyright (C) 1994 Ian Collier.
nc100em changes (C) 1995-1996,1999 Russell Marks.


This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


ROM issues
----------

The `pdrom.bin' provided here (written by me) is a public domain
replacement ROM which is capable of booting ZCN (my free CP/M-like OS
for the NC100), context saving and restoring, and nothing else -
perfect for ZCN, but useless if you want to run the ROM software. (ZCN
should be available from ftp.nvg.unit.no in /pub/cpc/nc100.)

No Amstrad code is involved if you run ZCN using the PD ROM, so
there's no need to own an NC100 to do that.

However, if you own an NC100, you should be able to copy the original
Amstrad ROM for your own personal use with the emulator (which is
capable of running the ROM software) using `romdump' (see the README
in the romdump directory), but it's up to you to correctly observe
copyright law. I'm no lawyer.

It's probably not worth it, IMHO. The ROM software's mostly pretty
cack anyway. ;-)


Roadmap
-------

The COPYING file contains a copy of the GPL described above.

The NEWS file describes the changes made since the last version - so
if you're upgrading from 0.1, be sure to read that.

ChangeLog is similar to NEWS, but more hacker-orientated. :-)


Description
-----------

`nc100em' is an Amstrad NC100 emulator. It supports both the ROM
software and my free CP/M-like replacement OS `ZCN'. There are
actually three separate versions:

- nc100em, which runs under svgalib on a Linux console;

- xnc100em, which runs under X;

- tnc100em, which runs on any tty (but only works with ZCN).

nc100em obviously requires Linux. xnc100em should work on any
POSIX-ish Unix box with X, though I've only tested it under Linux.
tnc100em should run on anything xnc100em runs on, except it doesn't
need X. :-)

Associated programs also included are `makememcard', a simple shell
script to make a blank memory card image, and `zcntools', an
mtools-like set of utils for reading/writing memory card images in ZCN
format.


Installation
------------

You'll need an ANSI C compiler. `gcc' is fine - so should most other
compilers be, these days.

Check/edit the Makefile first - if you're compiling the X version, you
may need to change XROOT, for example, and if you have a reasonably
fast machine you might want to use SCALE=2 to make the X version's
display bigger. (You'll need to be running X in at least 1024x768 for
a SCALE=2 window to fit onscreen, though!)

Then do one of these:

- `make', to make all versions.
- `make vga', to make only the svgalib version.
- `make text', to make only the text version.
- `make x', to make only the X version.

And (as root) do `make install', which installs any programs compiled.

`z80.c' will take a little while to compile (about two minutes on my
486 - remember them? :-)), and the gcc process gets pretty big. Don't
worry about this, it's simply because of the mind-bending - and above
all, fast - way the Z80 emulator works.

See the man page (when installed) for details of how to setup nc100em,
how to use it, etc.


History
-------

I decided to write a NC100 emulator on February 26th 1996. For some
reason. :-)

Thanks to the GNU GPL, I could use Ian Collier's Z80 emulator from
xz80, a ZX Spectrum emulator for X, and replace the X and Spectrum
support code with that for svgalib and the NC100, as I did with my
ZX81 emulator Z81. (I did the X and tty versions later.) And here I am
writing the README the following evening (again). This is an argument
for open source. :-)

I give Ian the main author credit for nc100em, as the Z80 emulation is
much harder to do than emulating the NC100's hardware etc. However,
any correspondence regarding nc100em should be to me, as Ian hasn't
had anything else to do with it and may not appreciate being hassled
by NC100 fans. :-)


(Lack of?) Future developments
------------------------------

While I'm unlikely to do much (if any) hacking on nc100em in future -
it's a fairly pointless hack, really - feel free to try and prod me
into making it better, if you want. :-)

One improvement I would *very* much like to make, however, is to add
some sort of NC200 support. Since I don't have an NC200 and I'm
semi-interested in getting ZCN (or some variant of it) to run
reasonably on NC200s, an NC200 emulator would be very useful indeed.
If you have an NC200 or technical details on the machine, and feel
like helping with this process (what I mainly need is info about the
machine, but if you want to help with coding that's cool too :-)),
then please contact me.


Contacting me
-------------

You can email me at rus@forfree.at but since I'm not on the net, mail
received there is just posted to me at regular intervals by a friend
(and similarly I post responses back to be emailed). It could take as
long as six weeks for you to get a response - if that's a problem,
then you could write to me directly instead (more hassle, but usually
quicker).

You can write to me at:
		Russell Marks,
		3 Rapley Close,
		Camberley,
		Surrey,
		GU15 4ER,
		United Kingdom.


Share and enjoy! 

-Rus.
