The Modern Retrocomputer: An Arduino Driven 6845 CRT Controller

[MmmmFloorPie] revived an old project to create the retro mashup of a 6845 CRT controller and a modern Arduino Uno. When it comes to chips, the Motorola 6845 is the great granddaddy of Cathode Ray Tube (CRT) interfaces. It was used in the IBM Monochrome display adapter, the Hercules graphics controller, CGA, Apple II terminal cards, and a host of other microcomputer and terminal systems.

Way back in 1989, [MmmmFloorPie] was a senior in college. His capstone project was a 68000 based computer which could record and playback audio, as well as display waveforms on a CRT. The CRT in question was ordered from a classified add in Popular Science magazine. It was a bare tube, so the heavy cardboard box it shipped in was repurposed as a case.

Fast forward to today, and  [MmmmFloorPie] wanted to power up his old project. The 68000 board was dead, and he wasn’t up to debugging the hundreds of point to point soldered connections. The CRT interface was a separate board including the 6845 and 32 KByte of RAM. It would only take a bit of hacking to bring that up. But what would replace the microprocessor?

[MmmmFloorPie]  decided to bit bang the 68000 bus with an Arduino Uno. The Uno doesn’t have enough I/O pins to drive a full address data busses, so 74LS574 tri-state flip-flops were used to latch the address data. As one might imagine, the entire system was much slower than running a real 68000. When limiting his video RAM writes to the vertical retrace period, the screen shown at the top of this post took a full 40 seconds to display. Too slow for any practical use, but good enough to prove the system worked. We’re hoping that [MmmmFloorPie] is inspired to bring the rest of his classic homebrew computer back to life!

There’s more information on this hack over at Reddit. Interested in classic video controllers? check out this post about the death of VGA, or learn how to do 3D graphics on an LCD with an Arduino.

Source link

Leave a Reply

Your email address will not be published. Required fields are marked *