Vector graphics with Arduino and a 'scope

I always fall for vector graphics - here, via the PiDP-11 mail list, is a project to build your own auto-refreshing vector display unit:

and here’s part 2:


Ah – point plotting XY displays, the genuine Spacewar stuff!

Small note regarding text displays (compare part 2): Drawing speeds were limited by the overshooting and ringing suppression circuits (coils had to cool down) as the beam was travelling (potentially) rather fast from one dot location to the next. Therefore, in order to save plotting locations and time, fonts usually consisted of a dot matrix with variable spacing between the dots for size/scale. In most cases, I know of (all DEC), these were 7 x 5 character matrices with an optional flag to drop the matrix by a unit (in order to achieve descenders for lower-case characters, making these effectively 8 x 5). The kind of characters shown in the post images would be seen only on true vector displays.
(However, the SAGE displays featured some neat, solid characters, but I don’t know much about the technology by which these were drawn,)


Great articles! Really helpful! I did have started to recreate a vectrex console, I love it, but it’s extremely rare here on Argentina. I have imagined a kind of “distributed system” that emulates the parts that I don’t have, like the 6809 processor and their cartridges. I have finished a primitive 6809 emulator running on Arduino, but I have needed to freeze the project until to have more time. Now I’m focused on the restoration of a Monroe OC8820 machine, the next one probably should be the diy vectrex.

1 Like

I’m not sure about the internals of the Vectrex, but this Arduino project looks like it has a rather simple approach to vectors: it actually plots a series of points and lets the 'scope slew from one point to the next. It then uses refresh rate to control brightness. I think the gold standard is to build hardware which slews from one point to the next at a controlled rate, for straight lines of constant brightness between points, and taking into account that the slew in X might need to be a very different rate from the slew in Y. (Edit: or maybe not… maybe any discrepancy is not noticeable.)

There’s a great write up by Jed Margolin at
The Secret Life of Vector Generators
(“During my time at Atari/Atari Games I worked on several XY games. This article represents what I know about Vector Generators. This is the companion piece to The Secret Life of XY Monitors.”)

Atari used Binary Rate Multipliers (BRMs). A BRM is a counter that divides the input clock by a digital number. Although the pulses it produces are not guaranteed to be evenly distributed through the counting cycle they will be close enough for our purpose.

The BRM used by Atari was the 7497. The 7497 is a 6-bit BRM. Two 7497s were chained together to produce a 12-bit BRM.

Part way through the run of Asteroids, we used up the world’s supply of 7497s and TI (the only manufacturer) did not have them on their schedule to make more for several months. Rather than shut down the production of Asteroids, Howard Delman designed a daughter board with small-scale ICs to replace the 7497s.

1 Like

Hola Ale ! Greetings from a neighbor also in Argentina ! If you want to emulate a 6809, you can take the FPGA approach with a cheap Altera Cyclone II breakout board (from the usual suspects in China .-). Here´s the link of a project (derived form Grant Searle´s original Z80 and 6502 systems), if you want to give it a try. I built and customized two of them and work great.

Abrazo, JL.


¡Gracias JL! ¡bienvenido!
It’s something that I have queued into my “todo” list, another option that I have considered it’s the usage of a DSP to take advantage of their inner DAC.