I assembled and debugged one channel of my vector generator, and wrote some of the firmware to drive it. I have unfortunately NOT finished building the second channel, though I got <fingers separation=”10mm”>this</fingers> close.
Would you believe <fingers separation=”20mm”>this</fingers> close?
I’m going to try to blame my not having made more progress on the local electronics store being closed today, so I wasn’t able to get a 74HC04 I need (or any other 74HC inverting gate). However, that’s a flimsy excuse since I should have anticipated the need for it, and I haven’t completely finished wiring the second channel.
I’m going to consider it a qualified success anyhow. Analog electronics isn’t really my forte, but I was able to analyze the operation of the original Ciarcia vector generator (“Make Your Next Peripheral a Real Eye Opener”, BYTE, November 1976, based on Hal Chamberlin’s earlier design published in the first three issues of The Computer Hobbyist, 1974-1975) to the point where I understand how it works, and was able to update the design in simple ways for construction with more modern ICs. I did get one channel (half of a minimum vector generator) built and debugged, and test firmware written.
I also got Dave Kruglinski’s 8080 Space War game from the October 1977 BYTE to assemble with a cross-assembler. As originally written, it used a point-plot display, rather than vector. I intended to modify it to talk to the vector generator but have not yet done that.
- Firmware source code (github repository)
- Dave Kruglinski’s Space War source code (github repository)
I’d like to thank Richard Ottosen, Scot Anderson, and John Doran for advice and support on this project.
I added a 10 microsecond delay after loading the DAC, and adjusted R108. Now the ramps endpoints are full scale, and the positive and negative ramps are reasonably symmetric.
After correcting a few wiring errors, the single-channel vector generator works, though it needs some calibration. I have the vector generator on my test bench with the Silicon Labs EFM32WG starter kit (ARM Cortex-M4F microcontroller) running the firmware, and a mixed-signal oscilloscope on the floor showing waveforms. I’ve taken photos of the oscilloscope showing full scale (±0.5V) vectors, rising and falling. The rising ramp starts around -0.5V as expected, but doesn’t make it quite all the way to +0.5V, so I need to either tweak the R108 pot (ramp rate) or adjust the pulse width controlling analog switch T2. The falling ramp only starts from about +0.3V, and I’m not sure why. When I check everything statically the full DAC swing does drive the output to ±0.5V.
Now it’s time to wire up the Y axis, and maybe Z (intensity). Z isn’t necessary for basic functionality, but would be nice to have. I may skip it for now. Once I have Y going, I can put the scope in X-Y mode and see real vectors.
It’s also time to start thinking about laying out a PCB. The breadboard prototype was laid out for ease of assembly and debug, not for signal integrity, so a lot of noise is getting into it.
Bench power supply reports 3.3V@3mA, +12V@18mA, -12V@53mA. Found and fixed a wiring error. With DAC output near 0V, output of first opamp, unipolar to bipolar shifter, is -1.0V, as intended.
Next step: hook up SPI to microcontroller. I’ll be using an Energy Micro Wonder Gecko (ARM Cortex-M4F) starter kit. I need to write some test firmware to manually adjust the SPI DAC output, using the capacitive sensing slider of the starter kit, and to pulse the analog switch enables using the buttons of the starter kit. The pulse width of the second analog switch needs to be precisely timed, so I’ll use a hardware timer.
I’ve wired one of the vector generator channels on a breadboard, and took two photos. It’s ready for testing, but at the moment I can’t find enough test leads to wire up the breadboard to my three-output bench power supply (HP E3631A), so I’ll have to kludge something up tomorrow. Continue reading
Since my HP 1350A and 1351A vector generators are not working, and I don’t have time to fix them for RetroChallenge, I’m building a simple vector generator from scratch. The design is a slightly updated version of Steve Ciarcia’s design in “Make Your Next Peripheral a Real Eye Opener” from the November 1976 issue of BYTE magazine, which was a simplified version of Hal Chamberlin’s design from the first three issues of The Computer Hobbyist in 1974-1975. Continue reading
I hooked up two analog signal generators to the XY inputs of the HP 1338A Tri-Color XY display to display a Lissajou curve as a test of the inputs, and posted a video. Continue reading
I’ve checked the basic functionality of the HP 1338A Tri-Color XY display using only its front panel controls, and posted a video.
I have an HP 9830A desktop computer, circa 1972, which runs BASIC using a custom bit-serial processor built out of TTL, with an architecture similar to the HP 2116 minicomputer. I’m planning to use the 9830A in my RetroChallenge entry, but it was configured with insufficient RAM, and I’ve now upgraded it from 3520 bytes available to 11,712 bytes. Continue reading
For RC2015/07, I’m going to hook up an old vector display (the retro part) to a modern microcontroller and either write a new game for it or port an old one. Vector displays were used on computers from the 1950s through the 1980s, and are perhaps most known to the public as the type of display used in Atari’s Asteroids arcade game. In the 20th century, vector displays offered sharper images for line art than did the raster displays which became more common starting in the 1970s.
I’ll use one of two different HP vector display systems, a 1338A tri-color beam penetration display with analog inputs, or a 1345A monochrome display with a built-in display controller with a parallel digital interface.
The 1338A is particularly interesting because the beam penetration tube allows for green, yellow, and red to be displayed (but unfortunately not blue), but with the same sharpness found in monochrome vector displays. More typical color vector displays, such as those used in later Atari games including Tempest, use a normal color CRT with a shadow mask, so the vectors wind up being fuzzy and composed of discrete dots.
For the 1338A, I could build my own interface, or use an HP 1350A or 1351A Graphics Translator, which provide a vector generator with an IEEE-488 (aka GPIB or HP-IB) interface.