This is the third release of my BBC Micro emulator for UNIX and X11.

The code is known to compile and run on Linux (Slackware 2.1) and on
Sparc Solaris 2.5. If it works on any other systems, please let me know.
If you need to make changes to get it to work, please tell me that, too.

NOTE:  The trap values used for entry to the emulated file system have
changed since v0.2 to allow the original values to be properly implemented
as on the chip.  The new values used are ones which hang the original
6502 and so it should not be necessary to change things again.  It does
mean that ROMs patched to work with v0.2 will need to be changed again,
though.  pch/pch.c has been updated to do this.

See the files in the doc directory for further information, including
installation instructions.


What has been implemented
=========================

All of the instruction set of a standard 6502 CPU.  Illegal/undocumented
opcodes on the NMOS 6502 and changes for the CMOS R65C02 and R65C12 are
also implemented.

The 6522 VIA implementation is almost complete.  The emulation of the
system VIA is sufficient to provide clock interrupts and keyboard handling
for the OS.

The CRTC, Serial ULA and display implementation is complete enough to
provide a reasonable emulation of the display.  X11 fonts for all the
teletext characters are provided.

The keyboard handling is pretty much there, but not quite perfect as the
Beeb has a somewhat non-standard keyboard layout compared with most I've
used.  See doc/Keyboard for more information on this.

There are two disk emulations.  Documentation on the formats are in the
doc/DiskEmulation file.

Paged ROMs/RAM are supported.

There is a snapshot format for saving the complete machine state.  See
doc/SnapshotFormat for the specification of the snapshot format.  This is
due for a complete rewrite Real Soon Now(tm).

A very much alpha sound implementation is included for VoxWare under
Linux.  Support for non-standard shape/size screens is there but not
perfect.

All bitmapped graphics MODEs are supported.


What isn't supported
====================

Serial IO, the ADC, Econet, the FRED and JIM memory-mapped IO pages,
the Tube and User VIA are pretty much all ignored.


Installation
============

See the doc/Installation file.


Running xbeeb
=============

To start as if from power-up, just :

	$ xbeeb

or if you want to run a snapshot :

	$ xbeeb <snapshot-name>

For details of all the command line options, see the doc/Options file.


General Comments
================

The code is somewhat ugly -- I started out writing clean modular code
and found that there was just no way I could get anything approaching
the performance I wanted, so I gave up.

Performance is now roughly the same as that of the original machine
on my 486DX2 Linux machine though it does vary somewhat depending on
the type of program -- possibly the fastest I've seen is about twice
the speed of a Beeb, going down to around two thirds of the speed.

I use 4-character tab settings in vi.  If you read the code using
8-character tab settings, it will look even worse than it already does.

Please mail any comments, suggestions, whatever, to

Work: james@corp.netcom.net.uk
Play: james@hermione.demon.co.uk
http://www.netcom.net.uk/~james/
