6502 Home Computer

A homebuilt MOS 6502 based microcomputer system

This is a description of my attempt to build a simple microcomputer system with an 8-bit MOS 6502 CPU or one of its derivatives that was used in many popular home computers of the 1970s and 1980s like the Commodore 64 1) or the Apple II . This project was started in September 2014 and finished in January 2015. Above you can see an image of the final product. This is no in-depth tutorial on how to build a 6502 based computer system. It is more like a developer diary, which describes the evolution of the system design over time from the first simple support circuits to the complete product.

I've often kicked off this project, but haven't completed it until now, because i knew that it would take quite some effort. The idea was to design a computer like the Commodore C64 (which was my second computer after a Sinclair ZX81 ) from scratch, using mostly only parts that were available when this computer was manufactured. But to make things simpler, instead of the video output i opted for an LCD display and instead of dynamic RAM i'm using static RAM. Keep in mind: The 6502 is not like an Atmel AVR CPU which is used in the famous Arduino boards. It does not contain any RAM, ROM or IO units. Each of these must be added as separate chips before you finally get a usable computer system. In addition you're also confronted with a much more complicated software development process.

However the LCD display made it possible to build a mobile computer, powered by a LiPo battery. So in the end this computer is more of a mix of a C64 and an Epson HX-20 . The only thing that is currently missing to make it really usable is an SD card slot for storing programs and data.

Although I'm using mostly original parts, my development tools represent the current standard. In the 70s/80s a computer DIYer could only dream of high-bandwidth digital oscilloscopes, logic analyzers, modern PCB design software and 3D Printers. Most circuits were hand wired and the system software was written in assembler and often converted to machine code with pencil and paper. Today software development is done with great IDEs and cross-compilation on a separate Linux system. So today it still takes quite some time to build such a computer, but only a fraction of the time that would have been needed back then. 

On the following pages I describe the project development in a chronological order. Every step adds some more components and functionality to the system, describes the changes to the schematic and printed circuit board layout and shows the progress of the built hardware and software.

If you want to know the nitty-gritty details of how a 6502 CPU, RAM, ROM and IO devices work and how they communicate with each other, you should consult some of the many books and articles that are available on the internet. For starters I added some links at the end of this intro. In each part of this article you may find links to additional information on the specific topic.

1) The C64 was actually equipped with a MOS 6510 CPU , which was a slightly modified and enhanced version of the 6502. The 6510 for example had some additional IO pins that were used for memory bank switching and tape recording.

Contents

Part 1: Clock generation

Part 2: Reset circuit

Part 3: The microprocessor

Part 4: EEPROM and a first program

Part 5: ACIA (Serial interface): Hello World!

Part 6: RAM

Part 7: Monitor program

Part 8: VIA (Ports and Timers): Blinking LED

Part 9: LCD Display

Part 10: Keyboard

Part 11: Interrupts

Part 12: SID (Sound)

Part 13: Printed Circuit Board

Part 14: Case

Part 15: Software Development

Part 16: BASIC Interpreter

Part 17: Final Notes

GitHub

Github octocat The 6502 Home Computer source code and hardware design is hosted at GitHub:

https://github.com/grappendorf/homecomputer-6502

Literature and other 6502 web sites

Rodnay Zaks, Programming the 6502

The C64 circuit schematic as an example for 6502 based homecomputer system

The C64 Service manual contains some descriptions of the C64 circuit

6502 Primer by Garth Wilson

Chris Ward's 6502 computer

The Elements of Computing Systems (Noam Nisan, Shimon Schocken)

6502.org list of homebuilt 6502 computers