2009-06-03 23:01:06 +00:00
|
|
|
# Py65
|
|
|
|
|
2009-09-04 05:36:02 +00:00
|
|
|
Py65 provides tools for simulating hardware based on 6502-like
|
|
|
|
microprocessors. It has the following goals:
|
2009-06-03 23:01:06 +00:00
|
|
|
|
|
|
|
- Focus on ease of use and modularity rather than performance. Py65 is
|
|
|
|
written in the Python programming language for productivity, while
|
|
|
|
similar programs are written in C for performance.
|
|
|
|
|
2012-01-01 23:22:19 +00:00
|
|
|
- Enable simulations to be created for systems where it might have
|
|
|
|
otherwise not been practical, such as homebuilt computers.
|
2009-06-03 23:01:06 +00:00
|
|
|
|
|
|
|
- Rigorously unit test all of the components. While the tools provided
|
2012-01-01 23:22:19 +00:00
|
|
|
by Py65 may not always be perfect, their behavior is verified through
|
2009-06-03 23:01:06 +00:00
|
|
|
tests so unexpected results are minimized.
|
2012-01-01 23:22:19 +00:00
|
|
|
|
2009-06-03 23:01:06 +00:00
|
|
|
## Installation
|
2012-01-01 23:22:19 +00:00
|
|
|
|
|
|
|
Py65 packages are [available](http://pypi.python.org/pypi/py65) on the
|
|
|
|
Python Package Index (PyPI). You download them from there or you can
|
2009-06-03 23:01:06 +00:00
|
|
|
use `easy_install` to automatically install or upgrade Py65:
|
|
|
|
|
|
|
|
$ easy_install -U py65
|
|
|
|
|
|
|
|
## Devices
|
|
|
|
|
|
|
|
The following devices are simulated at this time:
|
|
|
|
|
2009-09-04 05:36:02 +00:00
|
|
|
- `mpu6502` simulates the original NMOS 6502 microprocessor from MOS
|
2009-06-03 23:01:06 +00:00
|
|
|
Technology, later known as Commodore Semiconductor Group (CSG). At this
|
|
|
|
time, all of the documented opcodes are supported. Support for the
|
|
|
|
illegal opcodes is planned for the future.
|
|
|
|
|
|
|
|
- `mpu65c02` simulates a generic CMOS 65C02 microprocessor. There were
|
|
|
|
several 65C02 versions from various manufacturers, some with more opcodes
|
|
|
|
than others. This simulation is based on the W65C02S from the Western
|
|
|
|
Design Center (WDC).
|
|
|
|
|
2012-01-11 19:07:16 +00:00
|
|
|
- `mpu65org16` simulates the 65Org16, a 6502-like microprocessor with a 16-bit
|
2012-01-01 23:22:19 +00:00
|
|
|
data bus and 32-bit address bus. This microprocessor is a project of the
|
|
|
|
[6502.org community](http://forum.6502.org/viewtopic.php?t=1824) and a
|
|
|
|
[Verilog core](https://github.com/BigEd/verilog-6502/wiki) for it has been
|
|
|
|
implemented.
|
|
|
|
|
2009-06-03 23:01:06 +00:00
|
|
|
## Monitor
|
|
|
|
|
|
|
|
Py65 includes a console-based machine language monitor (sometimes also called
|
|
|
|
a debugger). This program, `py65mon`, allows you to interact with the
|
|
|
|
simulations that you build. Its features include:
|
|
|
|
|
|
|
|
- Commands that are largely compatible with those used in the monitor of
|
|
|
|
the popular VICE emulator for Commodore computers.
|
|
|
|
|
|
|
|
- Ability to load, dump, and fill memory.
|
|
|
|
|
2012-01-01 23:22:19 +00:00
|
|
|
- Simple assemble and disassemble capability, including support for labels
|
2009-06-03 23:01:06 +00:00
|
|
|
and labels with offsets.
|
|
|
|
|
|
|
|
## Documentation
|
|
|
|
|
|
|
|
Py65 documentation is written using [Sphinx](http://sphinx.pocoo.org/) and is
|
2011-03-27 18:28:43 +00:00
|
|
|
published to [http://py65.readthedocs.org/](http://py65.readthedocs.org/)
|
2009-06-03 23:01:06 +00:00
|
|
|
|
|
|
|
## Contributors
|
|
|
|
|
|
|
|
These people are responsible for Py65:
|
|
|
|
|
2012-02-02 02:05:40 +00:00
|
|
|
- [Mike Naberezny](https://github.com/mnaberez) is the original author of
|
2009-06-03 23:01:06 +00:00
|
|
|
Py65 and is the primary maintainer.
|
2009-08-10 21:08:34 +00:00
|
|
|
|
2012-02-02 02:05:40 +00:00
|
|
|
- [Oscar Lindberg](https://github.com/offe) started the 65C02 simulation
|
2012-01-01 23:22:19 +00:00
|
|
|
module and contributed greatly to its implementation.
|
|
|
|
|
2012-02-02 02:05:40 +00:00
|
|
|
- [Ed Spittles](https://github.com/biged) wrote the 65Org16 simulation module
|
2012-01-01 23:22:19 +00:00
|
|
|
and provided many useful issue reports and patches.
|
2012-02-02 02:05:40 +00:00
|
|
|
|
|
|
|
- [David Beazley](https://github.com/dabeaz) did the initial port of Py65 to
|
|
|
|
Python 3.
|