Friday 12 June 2020

VGA Text Terminals - an almost off-the-shelf solution.


When working with vintage computing equipment, one of the big issues is communicating with the system. Traditionally a video terminal is used - anything from a glass teletype to a 'smart' terminal.

It is all well and good to be able to use your laptop or desktop computer as a terminal, but it ties up resources and, somehow, doesn't feel quite right.

My trusty Televideo 950 terminal (circa 1985) finally bit the dust a few years back, and I didn't have any spare gate array chips left to resurrect it once again - coupled with a fading display tube, I had to sadly wave my old friend goodbye.

Ditto the ADDS Consul 880 and the unbranded amber screen terminal I also had.

Time to build a custom terminal.

My first attempt used an Arduino and a 3.5" Graphical LCD. It was good enough as a proof of concept, but the major issue was scaling up to a decent size of display.

Since I was only interested in text mode, I tried using a 48*8 text display LCD. Better visibility, but not enough space on the screen for the desired data.

The project was put on the back burner for a couple of years.

Then I happened upon a particular library designed to create a serial terminal with a VGA output - a graphics and text terminal. What's more, the library would emulate the essential functions of a VT52/VT100 terminal (the gold standard for basic smart terminals), and would allow me to use software written to take advantage of my old TV950 terminal.

What made it even better is that it would take advantage of the vast number of spare PS/2 interface keyboards I have in the bottom of my wardrobe, (where else would you keep your spare keyboards?)

I copied the circuit diagram into my choice of electronics CAD program, downloaded the library and ordered the parts (an ESP32 development module).

After putting the parts together (on a breadboard) and connecting a VGA screen, I switched on.

Success.

Almost.

The keyboard refused to be acknowledged. I could send data to the display, but nothing was coming back. Fiddling about, I found that the keyboard was swamping the esp32 interface, locking up that part of the firmware. A couple of diodes fixed that, but there was still nothing reliable coming out of the chip. It turned out that the self-same problem was occurring with the TTL serial interface, and a similar solution fixed it.

A fairly universal terminal controller fits comfortably on a 100mm square double-sided PCB. The circuit design is still undergoing some refinement and the firmware is undergoing some modification in order to handle additional features of the keyboard.

As it stands, the controller is expected to fit inside am extruded aluminium enclosure with front and back panels to suit. Given a secondary project (a custom PS/2 keyboard controller for a POS keyboard I own), it is possible that the terminal will eventually end up embedded inside the keyboard housing.


Features:

As standard:
  • PS/2 keyboard
  • TTL/RS232 serial interface (switch selectable)
  • VGA output
  • Dual power source - 5V or 12V
Under development:
  • 8 status LEDs (one tied to the sounder output)
  • Audio alert (simple sounder circuit)
  • Firmware defined keyboard translation (F-keys etc)
Other possible features will need to wait for a later version.


References:

 FabGL Library:    Website -  http://www.fabglib.org                                              

GIT Hub -       https://github.com/fdivitto/fabgl                               



 Circuit Design: Under Development    VGAMT TRM v1.05 Terminal Mainboard Circuit    

Gerber files for the PCB will follow. Eventually.