Giter Club home page Giter Club logo

stm6502's Introduction

stm6502 is a (currently NMOS) 6502 CPU simulator for the
STMicroelectronics STM32F4-Discovery evalutation board, a neat little
product with a 168MHz Cortex-M4 processor, 128 kB of RAM, and 1 MB of
Flash rom... for under $20. (See your favourite electronics retailer
and http://www.st.com/internet/evalboard/product/252419.jsp for more
details.) And unlike that Tivo-ized PIC32 rubbish, you can hack on it
with a wholly free development system on a wholly GNU system, without
Corporate wankers having final control on what you do or how you do it.

*** Prerequisites

To run this, you will need:

	A STM32F4-Discovery (I bought mine for just under $20 from
	au.element14.com, aka Farnell, aka Newark.)

	A rs232 level converter with breakout connectors, that is
	happy with 3.0v levels.

...and install the software from:

	https://github.com/esden/summon-arm-toolchain
	https://github.com/texane/stlink
	http://libopencm3.org
	cc65.org's cc65

This is a OMG INFECTED GPL V3 licenced system, based on software from:

	https://github.com/charliesome/6502 (although heavily modified)

	Jim Butterfield's supermon (via
	http://www.ffd2.com/fridge/programs/supermon.s)

	The content under 6502code is under various free distribution
	permissions.

*** Getting started

Connect the rs232 level converter's Tx line to the Disco's PA2 GPIO
pin, the Rx to PA3, and its ground to a GND (and possibly Vcc as
well). Set up a terminal program to 115200 baud 8N1. On my GNU
development system, I find it easiest to do this in another window:

	cu -l ttyUSB0 -115200 --nostop -e -o

Start up stlink's st-util:

	./st-util fu bar

(Watch the output from this to spot any problems.)
Use arm-*-gdb to load the stm6502.elf file into the Disco:

	$ arm-none-eabi-gdb
	gdb> load stm6502.elf
	(I usually have to press 'reset' on the Disco at this point
	for the next command to work consistently.)
	gdb> run

..and then over in your terminal program, you should see a happy
little 6502 system waiting for you or your code-downloading scripts.
For code development, I find it easiest to have an RFC2217 server
controlling the serial port, and then using a Python script to blast
supermon ":xxxx xx xx xx xx xx" lines down the connection. It also
convienent to load memory with gdb ("load 6502code/figforth.o
0x20000000"), provided the binary can be munged into the correct
object format.

Once the STM32F4 board is programmed, it will just need to be powered
through its main USB connection to start up the 6502 system.

*** Simulated 6502 notes

The system comes up with 64kB of pure unrefined RAM, with a hacked
copy of Jim Butterfield's supermon copied in from $F800, although that
can be overwritten later. Character output is written to $FFF0, and
input by reading the same address. There are no other devices at this
point, although mass storage on SD Cards is something I'm looking at.

BCD arithmetic has yet to be implimented.

The intention (of my branch, at least) is to have a generic 6502
system to test code on, not to simulate any particular hardware.

--
Chris Baird,, <[email protected]>

stm6502's People

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.