About one year ago I noticed that some sellers on popular Chinese auction site offer quite cheap MOS6502 chips. Initially I suspected nothing more than broken or counterfeit parts, but out of curiosity I decided to order couple of them anyway. I was pleasantly surprised when my package finally arrived one month later - initial experiments performed on a breadboard confirmed that those parts are in fact genuine MOS6502 microprocessors.
So, I decided to use them for something useful. Most obvious idea was to develop own 8-bit retro computer. In fact this project is still in development, but it is not what I want to describe today. Meanwhile idea of another side-project came to my mind. I began to wonder what would Arduino look like if it had been created thirty years ago. Simply speaking - I wanted to build a maker board composed mostly of retro parts.
To achieve this goal, I slightly modified existing project of my computer CPU board. I decided to use CMOS version of the main chip (WDC65C02). Layout of an address space was also modified to fit requirements of a microcontroller. Much more space was dedicated for EPROM than for RAM. It looks as follows:
- 8kB of RAM memory
- 8kB of I/O address space
- 8kB of electrically erasable EEPROM memory for configuration storage etc.
- 8kB of additional EPROM memory (not used at this point)
- 32kB of main EPROM memory for program and data
Device is clocked by 4MHz integrated quartz oscillator. DS1232 chip provide on-power-reset and watchdog functionality. There is also basic output port (74HCT373) with two LEDs attached. With just few lines of assembly code I was able to blink them alternately.
Blinking LEDs is nice, but of course that kind of a device needs some kind of human interface to be useful. So the next stage was to build kind of a "shield board" containing HD44780 display and couple of buttons. In fact it is very easy to interface that kind of a display with an old CPU - it was designed to communicate with system directly, using system bus. Buttons are connected to own input port (74HCT245).
Boards are stacked on top of each other and connected with ribbon cable. My idea is to create more of them, for specific applications (clock, remote sensor etc.) and then use that antique technology for something useful.
Software part of this project was mostly written in C and then compiled with CC65. For some libraries I used pure 6502 assembly.