• Stars
    star
    230
  • Rank 173,089 (Top 4 %)
  • Language
    Python
  • License
    BSD 3-Clause "New...
  • Created over 15 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Emulate 6502-based microcomputer systems in Python

Py65

Py65 provides tools for simulating hardware based on 6502-like microprocessors. It has the following goals:

  • 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.
  • Enable simulations to be created for systems where it might have otherwise not been practical, such as homebuilt computers.
  • Rigorously unit test all of the components. While the tools provided by Py65 may not always be perfect, their behavior is verified through tests so unexpected results are minimized.

Installation

Py65 packages are available on the Python Package Index (PyPI). You download them from there or you can use pip to automatically install or upgrade Py65:

$ pip install -U py65

Devices

The following devices are simulated at this time:

  • mpu6502 simulates the original NMOS 6502 microprocessor from MOS 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).
  • mpu65org16 simulates the 65Org16, a 6502-like microprocessor with a 16-bit data bus and 32-bit address bus. This microprocessor is a project of the 6502.org community and a Verilog core for it has been implemented.

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.
  • Simple assemble and disassemble capability, including support for labels and labels with offsets.

Contributors

These people are responsible for Py65:

  • Mike Naberezny is the original author of Py65 and is the primary maintainer.
  • Oscar Lindberg started the 65C02 simulation module and contributed greatly to its implementation.
  • Ed Spittles wrote the 65Org16 simulation module and provided many useful issue reports and patches.
  • David Beazley did the initial port of Py65 to Python 3.
  • Alessandro Gatti added support for breakpoints in the monitor.
  • Mario Keller added support for configuring getc/putc and fixed bugs in command line option parsing.

More Repositories

1

supervisor_twiddler

Manipulate Supervisor's runtime configuration and state
Python
110
star
2

vwradio

Reverse engineering Volkswagen car radios
Assembly
86
star
3

supervisor_cache

Cache arbitrary data directly inside a Supervisor instance.
Python
12
star
4

f2mc8dump

Dump internal ROM from Cypress (Fujitsu) F2MC-8L microcontrollers
Python
12
star
5

k0dasm

Renesas (NEC) 78K0 disassembler
Python
11
star
6

f2mc8dasm

Cypress (Fujitsu) F2MC-8 disassembler
Python
9
star
7

cmd

Reverse engineering Creative Micro Designs (CMD) products for C64/128
7
star
8

redundant12v

Rackmount Redundant 12V Power Supply
Assembly
6
star
9

softbox

Reverse engineering the SSE SoftBox, a CP/M system for Commodore PET/CBM computers
Assembly
6
star
10

interpod

Reverse engineering the Interpod, a CBM IEC to IEEE-488 bridge device
Assembly
6
star
11

k0emu

Renesas (NEC) 78K0 emulator
Python
6
star
12

clcd

Commodore LCD Partial KERNAL ROM Disassembly
Assembly
5
star
13

tdms

Ruby library to read files in NI TDMS format
Ruby
5
star
14

vc1541dos

Reverse engineering the VC-1541-DOS/80 option ROM for PET/CBM computers
Assembly
5
star
15

z-ram

Reverse engineering the Z-RAM, a CP/M system for Commodore PET/CBM computers
3
star
16

m740dasm

Renesas (Mitsubishi) 740 disassembler
Python
3
star
17

ace

Craig Bruce's ACE operating system (C64/128) source reformatted for the ACME assembler.
C
3
star
18

pedisk2

Reverse engineering the CGRS Microtech PEDISK II disk system for Commodore PET/CBM computers
Assembly
3
star
19

cbmscripts

Scripts for working with Commodore disk images
Python
3
star
20

language-f2mc8

Atom syntax highlighting for F2MC-8 assembly language
2
star
21

mxlock

Replace locking key switches with momentary switches
Assembly
2
star
22

fc5025

Unsupported fork of the FC-5025 software
C
1
star
23

victor9000-z80

Reverse engineering the Z80 CP/M card for ACT Sirius 1 and Victor 9000
Assembly
1
star
24

pcg6500

Reverse engineering the HAL PCG-6500 graphics board for Commodore PET/CBM computers
1
star
25

keychip

Reverse engineering the Keychip ROM for Commodore PET
Assembly
1
star