X-Y Monitor and Vector Generator

february 2009 (in progress)


I bought a small vector monitor (probably from the '70s or early '80s) in January 2009, and have been working on an AVR-based vector generator that can be used to draw pictures on it.

Unlike a normal CRT, the beam in a vector monitor (also called an X-Y monitor) does not continuously scan across and down the screen. Instead, its horizontal position, vertical position, and intensity are controlled directly by input voltages. This allows one to display perfectly smooth lines and curves, with no pixelation.

Early arcade games like Asteroids, Battle Zone, and Tempest used X-Y monitors; my ultimate goal is to create a vector-based game console, possibly with wireframe 3D capability.

The driver circuit uses an Analog Devices AD7805 to generate the X, Y, and intensity voltages. The AD7805 is a quad 10-bit digital-to-analog converter, with a 1.5µs settling time, capable of a maximum 667kHz update rate. It's an expensive part, but it's very accurate.


The first version of the circuit worked by plotting individual points, and used Bresenham's line algorithm to render lines. Unfortunately, this technique is only good for simple graphics. The microcontroller took 2.5 microseconds to plot each point; for a line stretching across the full width of the screen with 10-bit accuracy, this would take over 2500 microseconds! (2.5 ms) With a refresh rate of 30 Hz, only a few lines could be drawn without flicker. Using 8-bit precision resulting in faster draw speed, but lines appeared jagged and there were gaps between points. (See above.)

Yes, the font I programmed is meant to resemble the font used on the giant displays in WarGames.

The version I am currently working on is completely analog—the microcontroller will use the DAC to generate beam velocities, which will then be fed into linear ramp generators driven by high-speed op amps. This is proving to be a challenge, since any analog circuit, especially one on a breadboard, is basically an open invitation for noise. I'm currently taking a break from this project, but I will return to it in the future.


Photo gallery is on Flickr.


This is an ongoing project, I'll post schematics in the future.