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.

11 thoughts on “The Modern Retrocomputer: An Arduino Driven 6845 CRT Controller

  1. So if I understand correctly, modern electronics can do in 40seconds what a 30 year old processor can do in a split second? Ahhh… progress… therefore I can imagine that someone will post that this would be a candidate for “fail of the week”.

    But it is good to see that the old CRT is shining again, well done.

    1. If he stepped up from the ATmega328p to a ATmeag664 or ATmega2560 then he would have enough pins to run it straight off the micro and be much faster. The chip he used is 20MIPs and would likely be faster than the original 68000.

  2. Obviously one could write firmware for a modern micro running at an appropriate speed to replace the 6800 at speed. That being said his goal was to just get the display system running. An Arduino apparently was the easiest solution just to make it display something. It’s called Hack A Day, not devise a complete practical solution a day. He hacked what he HaD!

    1. Actually the Acorn Atom used the https://en.m.wikipedia.org/wiki/Motorola_6847

      Not the 6845. The 6847 is a more limited chip, only capable of a text /block graphics mode and combinations of colours / resolutions up to 256×192 and 6K. For example, 128x192x4 colours are possible (6Kb) or 128x96x2 colours = 1.5Kb. It was used in a few other machines, e.g. The Dragon 32.

      The BBC micro used a 6845 though, hence its support for much more versatile video up to 640×200.

      1. The two ICs were quite different. The 6847 was intended for a specific use, and thus limited, while the 6845 was a more general controller, with wider potential. You needed more hardware with the latter, but you could configure it endlessly, so it could generate all kinds of sync frequencies, and thus saw wide use.

        Michael

  3. Ah, memories!
    I veroboarded a 6847 display, and wrote the machine code (entered in hex from a serial terminal, no assembler) for a Signetics 2650 system probably 35 years ago! Then did a board using a 6545, not the 6845, for a 6502 core based system. It was a lot of fun,
    My 2650 system had an S100 memory board that had 88 chips to give me a massive 11KB of RAM.
    Boy, how things have changed!

  4. I too used to play with a 6847. I found if you left the input pins Unterminated in the bread board and stuck in a few wires sticking up in the air like a thermin you could get a field of charachters on the screen that would change in swirling patterns as you ran your hands over the flying leads. Very cool effect. Then a few days later I found all the parts in an anti static bag and a missing bread board. Somebody needed to use it for actual work. Have they no love of the arts?!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.