Anders Nielsen's Eight-Bit 65uino Gets MOS Technology's Classic CPU Talking to Modern I2C Devices
A vintage-style eight-bit SBC in the shape of an Arduino Uno, this compact creation can now talk I2C to interface with a range of gadgets.
Vintage computing enthusiast Anders Nielsen has pulled some new tricks out of the venerable MOS Technology 6502 processor, convincing it to talk to modern hardware peripherals over an I2C bus through software bit-banging — and has proven it works on a compact single-board computer (SBC) implementation.
"[You] can get 6502-based computers like these to play along with I2C devices like screens, accelerometers, temperature sensors, and thousands of other gadgets," Nielsen explains of his latest project. "Back in the '70s most additions to a [MOS] 6502, [Motorola] 6800, or [Intel] 8080-based system would interface straight to the eight-bit data bus, along with a few address pins, [but] none of the gadgets I have here seem to have more than a few pins."
That's because said gadgets are I2C peripherals — the Inter-Integrated Circuit bus, invented back in 1981 and still in use today. The MOS 6502 which serves as the focal point for Nielsen's latest project, though, was designed by MOS Technology back in 1971, a full decade before I2C. The solution to a lack of hardware I2C bus: implementing it in software, running on the 6502 itself and "bit-banging" the pins.
To prove the concept, Nielsen has turned to his 65uino — a 6502-based educational microcomputer platform on a compact PCB designed to mimic the footprint of the popular Arduino Uno board. "Inspired by my 6502-based 'Single Breadboard Computer' that seemingly does the impossible by squeezing a whole 6502-based computer onto a single breadboard," Nielsen wrote at the time, "this project takes the concept one step further by successfully squeezing all the required components into an Arduino-compatible form factor."
While the initial result is somewhat underwhelming — "a screen full of random dots," Nielsen says of his program's output when connected to an I2C display, "since the RAM in the display doesn't initialize to any particular value by itself and we're not writing anything to it yet, [so] the display simply shows the random data in the framebuffer RAM," — it can form the basis of functional drivers to interface a broad range of I2C devices with MOS 6502 and similar eight-bit systems in the future, with Nielsen teasing a forthcoming video showing the display in use as a text output device.
Nielsen's full video is reproduced above and on his YouTube channel, while the hardware design files and sample projects for the 65uino can be found on GitHub under the Creative Commons Attribution-NonCommercial 4.0 license.