pill_6502/README.md

44 lines
2.4 KiB
Markdown

# pill\_6502: emulated 8-bit 6502 CPU and 6850 ACIA for STM32F103 blue pill
[![CircleCI](https://circleci.com/gh/satoshinm/pill_6502.svg?style=svg)](https://circleci.com/gh/satoshinm/pill_6502)
[6502](https://en.wikipedia.org/wiki/MOS_Technology_6502) 8-bit CPU and
[6850](http://www.cpcwiki.eu/imgs/3/3f/MC6850.pdf) ACIA emulator for the
[STM32F103](https://www.reddit.com/r/stm32f103/) [blue pill](http://wiki.stm32duino.com/index.php?title=Blue_Pill)
microcontroller boards and similar. Turn your modern micro into a retrocomputing processor.
To build, run `make`, to install, flash `src/pill_6502.bin` to the blue pill.
Prebuilt binaries are available from [CircleCI](https://circleci.com/gh/satoshinm/pill_6502/).
Connect the board to your computer using USB, this will reset the CPU
and a virtual serial port should appear (e.g., `/dev/cu.usbmodem6502`),
connect using GNU Screen, and you should see the output from the emulated
ACIA communication interface chip. Type to send to the ACIA.
![screenshot](https://user-images.githubusercontent.com/26856618/34910886-d1869f5e-f872-11e7-8dd9-e034348619dd.png)
Special commands built-in, not passed to the ACIA and 6502:
| Keystroke | Action |
| --------- | ------ |
| ^V | Show `pill_6502` version |
| ^P | Pause/resume 6502 processor execution |
| ^R | Reset the 6502 processor (also reset on USB reset) |
| ^E | Local echo toggle, off by default |
| ^T | Show clock ticks, instruction count, and frequency since last ^T |
| ^G | Show help |
Intended to be somewhat compatible with [Grant Searle's Simple6502](http://searle.hostei.com/grant/6502/Simple6502.html),
and includes the Microsoft OSI BASIC ROM by default (C) Microsoft 1977. Other ROMs can be loaded
by replacing `ROM.HEX` and rebuilding. Memory map:
| Start | End | Usage |
| ------ | ------ | ----- |
| 0x0000 | 0x3fff | 16KB internal RAM |
| 0x4000 | 0x9fff | (unused) |
| 0xa000 | 0xbfff | 6850 ACIA serial comm interface, emulated connecting to USB CDC-ACM virtual serial port |
| 0xc000 | 0xffff | 16KB internal ROM |
Thanks to Mike Chambers for the [fake6502](http://rubbermallet.org/fake6502.c) processor emulation core.
For implementation notes see blog post *[pill_6502: 8-bit 6502 CPU and 6850 ACIA emulation on the STM32 blue pill to run Microsoft BASIC from 1977](https://satoshinm.github.io/blog/180113_stm32_6502_pill_6502_8_bit_6502_cpu_and_6850_acia_emulation_on_the_stm32_blue_pill_to_run_microsoft_basic_from_1977.html)*.