I just found a small package in my post box. When I opened it, I found a fully assembled PIC-based VT100 emulator board for use with my low-power microcontroller projects.
Just to set the scene, this is a follow-on from a previous column I wrote about a VT100 Emulator-on-a-Chip for Arduinos Et Al.
For any younger readers who aren’t VT100-aware, the VT100 was a cathode ray tube (CRT)-based video terminal that was introduced by the Digital Equipment Corporation (DEC) way back in the mists of time we used to call 1978.
The VT100 wasn’t a computer per se – it was just an input/output device that would be connected to a host computer. Having said this, it did contain an 8-bit Intel 8080 processor that could handle special features like reverse video, invisible text (don’t ask), auto-wrap, and so forth.
The great thing about the VT100 was that it supported ANSI escape sequences that allowed you to do things like specify the x,y location of the cursor on the screen, turn reverse video on or off, make the cursor a flashing underline or a flashing block, etc.
The reason I’m waffling on about this here is that a lot of my hobby projects are based on low-power microcontrollers (MCUs), like 8-bit Arduino Nanos, Unos, and Megas running at a measly 16MHz. In many cases, I would like my projects to display text on a screen (not my PC), and a VT100 terminal would be perfect.
The problem is that, although they look great, CRT-based terminals are big, bulky, and hard to find. By comparison, liquid crystal display (LCD) devices are small, light, and ubiquitous.
So, I have an Arduino on the one hand and an LCD display on the other. What I want is a VT100 emulator that goes between them. The idea is that the Arduino could use its UART interface to output ANSI escape sequences and text. Meanwhile, the VT100 emulator would accept this textual data, pretend to be a VT100 terminal, and generate the signals required to drive the LDC display.
VT100 emulator on a chip
Initially I was wondering if we could create something ourselves, but then I ran across a project that was originally published in the July 2014 issue of Silicon Chip magazine. This little rascal, which was created by Geoff Graham, is a complete ASCII VT100-compatible terminal that is based on a single Microchip PIC MCU.
I must admit that I was completely blown away when I saw this. It’s perfect for what I want. It accepts an ASCII text stream from a UART on an Arduino or other MCU, and it outputs VGA or composite video to drive the display of your choice.
I immediately ordered a PCB and pre-programmed PIC from the magazine. At the same time, I emailed my chum, Joe Farr, in England saying, “look at this,” because Joe creates a lot of hobby projects also.
What really blew me away was when I received an email from Joe a couple of days later saying that he had redesigned the board. It seems that Joe couldn’t get Geoff’s Gerber files to load correctly in his PCB package, so he decided to start again.
Apart from anything else, this gave Joe the opportunity to change various component footprints to suit what he already had or what he could easily get hold of. In particular, the original video connector was hard to source (I recall reading this on various websites), so Joe replaced it with a later version.
Joe also made a couple of other changes. Whilst there was a low-current 3.3V regulator on board, he decided to make provision for a higher-power variant. To that end, Joe added a DC barrel connector and a bridge rectifier with smoothing capacitors and a 5V regulator. As a result, Joe’s version can be powered by a 7V to 30V AC or DC source (a heatsink will be required for the 5V regulator if the input voltage exceeds around 7V). Knowing that I prefer to use a regulated 5V supply, Joe also provided a header that allows me to push 5V straight in.
Joe also took the opportunity to add taps on the board so that the 3.3V and 5V can be easily accessed to help drive other circuits. Furthermore, he added three jumpers that allow easier selection of the RGB colour used for the VGA connector. While he was at it, Joe changed the design to make use of some surface mount components, and he also took the opportunity to reposition some of the connectors to better suit some of his future needs.
I just found a small package in my post box. When I opened it, I found a fully assembled version of Joe’s board. I just took a picture as shown below.
Joe very kindly provided the full Gerber file set that he used to build this board, and he says I can make these files available to you if you decide to make one for yourself. As soon as I get this little scamp connected to an appropriate display, I will post another blog with some more pictures.