lib6502-jit/README.lib6502

137 lines
4.7 KiB
Plaintext

lib6502 - 6502 Microprocessor Emulator
Version: 1.0
WHAT IF I'M TOO LAZY TO READ 'README'S?
make
make install
more examples/README
WHAT IS LIB6502?
lib6502 is a library that emulates the 6502 microprocessor. It
comes with a small 'shell', run6502, that can execute 6502 programs
from the command line.
lib6502 is distributed under the MIT license: it is non-infectious
and will not make your projects contagious to others the instant you
choose to use lib6502 in them. See the file COPYING for details.
WHERE IS THE LATEST SOURCE CODE?
Source code for lib6502 is available from the author's home page at
'http://piumarta.com/software'. You can download the most recent
release or use Subversion to get the very latest sources.
WHERE IS THE DOCUMENTATION?
Manual pages for run6502 and lib6502 (and all the functions it
exports) should be available once it is installed. Each includes a
short 'examples' section. Use the 'man' command to read them.
Your best place to start looking for documentation on the 6502
itself is 'http://6502.org'. A google search of the web will also
turn up vast quantities of information about (and programs for) the
6502.
HOW DO I INSTALL IT?
It's not really big enough to warrant the whole 'configure' thing.
Any system with an ANSI compiler and C library should be able to
compile it out of the box. After unpacking the archive, just type:
make
to build it. If the compiler blows up immediately, edit the
Makefile and play with the '-g' and '-O' flags and then try again.
If you really can't make the compiler happy you've found a bug (read
the next section but one). Otherwise, if you want it put it
somewhere more permanent then type:
make install
(as root) to install it. It goes into /usr/local by default; if you
want it elsewhere then set PREFIX in the make command. For example:
make install PREFIX=/usr
will put everything under '/usr'.
When you get bored with it, go back to the source directory and
type:
make uninstall
(with the same PREFIX you specified during the install, if
necessary.)
WHAT CAN I DO WITH IT?
See the file EXAMPLES for some suggestions (all of them polite).
If that leaves you wanting more, read the source for run6502 -- it
exercises just about every feature in lib6502.
HOW DO I REPORT PROBLEMS?^W^WCONTACT THE ORIGINAL AUTHOR?
[If you wish to get in touch with the author of lib6502, this is the
address to use. Since lib6502-jit is based on lib6502 but has been
heavily modified, please do *not* report problems to this address;
use the address in README instead. -- Steve]
Send e-mail to the author at: firstName (at) lastName (dot) com
(For suitable values of firstName and lastName, see the last section
of this file.)
If you're still confused, contact him at: http://piumarta.com
HOW CAN I HELP?
Use it. Find bugs. Fix bugs. Make it faster. Evangelism: spread
it to as many other projects as possible, especially those that
might be using a slower emulator! Read the manual pages to see
what's considered missing, then add it, then send it in.
(One thing that would be be really handy, and isn't mentioned in the
manual pages, is a test suite. Figure out how to test every mode in
every instruction with every possible combination of operand values
and condition codes and verify the behaviour is correct. Then write
it down in the form of a program and send it in. If it's a
self-contained program that runs once to completion then we can
probably find some real hardware to test against the test suite.)
If you know how to write software that emulates peripheral hardware
devices, google up some details on the popular 6502-based
microcomputers (Acorn, Commodore, etc.) and add some serious system
emulation to run6502. Make it all pluggable (think dynamic
libraries over an 'agnostic' core), so we can change machines at the
flip of a (command-line) switch. (The callback mechanism in lib6502
was designed with this kind of 'pluggable hardware emulation' in
mind.)
WHO WROTE THIS STUFF, AND WHY?
lib6502 was written by Ian Piumarta.
While writing ccg (an entirely different project that creates
runtime assemblers for dynamic code generators) he decided to
include support for an 8-bit microprocessor, just for fun. He chose
the 6502 because it was used in the first computer he owned and
programmed (an Ohio Scientific Superboard II, when he was 14) as
well as the second (an Acorn 'BBC Model B', about four years later).
lib6502 started as a 'glorified switch statement' that ran some
small test programs spewed into memory by ccg, but rapidly got out
of control over the course of a weekend. You're looking at the
result.