A 6502/65C02 virtual machine
Go to file
Ariejan de Vroom 5382c807c7 Create CODE_OF_CONDUCT.md 2015-08-13 16:03:57 +02:00
Godeps Use Godep to manage dependencies properly 2015-04-09 09:19:49 +02:00
rom Remove old prototype code. 2014-08-12 20:58:07 +02:00
test Add ROM Memory 2014-08-17 16:20:30 +02:00
.gitignore Initial commit of the i6502 emulator. 2014-08-07 09:15:41 +02:00
.travis.yml Update travis config 2015-04-09 09:11:50 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2015-08-13 16:03:57 +02:00
Guardfile Add Guardfile for continuious testing 2014-08-13 11:49:33 +02:00
LICENSE Add README and LICENSE 2014-08-07 09:26:03 +02:00
README.md Add link to go docs 2014-08-29 14:22:39 +02:00
acia6551.go Properly test ACIA 6551 output channel 2014-08-29 13:49:08 +02:00
acia6551_test.go Update testify assert methods 2015-04-09 09:20:04 +02:00
address_bus.go Iterate over pointers instead of copies. 2015-04-08 16:56:35 -05:00
address_bus_test.go Update testify assert methods 2015-04-09 09:20:04 +02:00
cpu.go Add tests for cpu/acia integration 2014-08-19 22:01:41 +02:00
cpu_status.go Implement remaining opcodes; tests 2014-08-16 10:37:56 +02:00
cpu_test.go Update testify assert methods 2015-04-09 09:20:04 +02:00
doc.go Add docs for AddressBus; minor refactorings 2014-08-17 13:07:22 +02:00
instruction.go Add more documentation 2014-08-17 15:53:35 +02:00
memory.go Update Memory interface 2014-08-19 16:49:48 +02:00
opcodes.go Fix OpType attribute ordering 2014-08-17 15:57:12 +02:00
ram.go Update Memory interface 2014-08-19 16:49:48 +02:00
ram_test.go Update testify assert methods 2015-04-09 09:20:04 +02:00
rom.go Test and implement Memory interface explicitly. 2014-08-21 10:02:38 +02:00
rom_test.go Update testify assert methods 2015-04-09 09:20:04 +02:00

README.md

i6502 - A 6502 Emulator

Build Status Go Docs

This is an emulator of the i6502 hardward project I'm doing.

It's written in Golang and comes fully tested.

WebsiteDocumentation

Background

The MOS 6502 Microprocessor has been around sinc 1975 and is used in many popular systems, like the Apple II, Atari 2600, Commodore 64 and the Nintendo Entertainment System (NES).

It features an 8-bit accumulator and ALU, two 8-bit index registers and a 16-bit memory bus, allowing the processor to access up to 64kB of memory.

I/O is mapped to memory, meaning that both RAM, ROM and I/O are addressed over the same 16-bit address bus.

Because of it's simple and elegant design and the plethora of information available about this microprocessor, the 6502 is very useful for learning and hobby projects.

The 65C02 is a updated version of the 6502. It includes some bug fixes and new instructions. The goal is for i6502 to fully support the 65C02 as well.

What's included in the emulator?

  • 6502 Microprocessor, fully tested
  • 16-bit address bus, with attachable memory
  • RAM Memory
  • 6551 Asynchronous Communications Interface Adapter (ACIA)

What's not (yet) included?

  • Proper Golang packaging and documentation
  • 65C02 support
  • Roms
  • I/O (VIA 6522)
  • Batteries

Getting started

Although this package contains everything you need, there is not single 'emulator' program yet. The CPU, address bus and RAM components are all available to you, but documentation is still lacking.

For now, you can checkout the project, and run the tests.

go get github.com/ariejan/i6502
cd $GOPATH/src/github.com/ariejan/i6502
go get -t
go test

License

This project is licensed under the MIT, see LICENSE for full details.

Contributors

Special thanks to the awesome folk at http://forum.6502.org for their support and shared knowledge.