Circuit Corner - Issue 6

Today, I'm going to open up my black book to some circuits I designed for a homebrew computer that I tinker with in my spare time. These circuits are of general utility to any fan of retrocomputing, and may be useful in general.

Bicolor LED Driver

This driver for two-pin bicolor LED's automatically decodes all three colors.
While designing the IO controller for my homebrew, I decided that it would be fun to have a front panel indicator light to show debug codes on. Inspired by the blinking light on the front of an XBox, I set out to turn an eight bit debug register into a flashing pattern of color on the console.

The idea is simple enough: a two bit, four way multiplexer controlled by a two bit clock with a period of about a quarter second reads from an eight bit register and feeds the resulting two bits to the output driver. The display itself would be nothing more than a simple two pin bicolor LED.

If you have ever made use of bicolor LED's, you have probably noticed that it is relatively easy to decode red, green and off from two digital pins. The only problem is that turning both pins on will also turn the LED off. This seems rather wasteful, since "bicolor" LED's are also capable of producing a rather passable amber.

The only problem is that, to get this color from a two pin bicolor LED (as opposed to the somewhat more convenient but generally rarer and more expensive three pin), you have to supply it a square wave. Without devoting a lot of main CPU to toggling the debug LED, a digital output port is not up to this task.

So I rigged up this little circuit. If you look closely, you may notice that the capacitatively cross-coupled transistors bear a striking resemblance to an astable multivibrator. In fact, that is exactly what it is. The two control transistors supply controllable bias to the transistor bases of an astable multivibrator, and the LED is directly driven from the oscillation transistors. When both control transistors are off, neither transistor conducts, so the LED stays off. When one or the other, but not both, control transistors is on, one of the oscillation transistors will turn on, but since the other is in cutoff, the feedback path is broken and the LED will be illuminated in a solid color. When both control transistors are on, the feedback loop is closed and the multivibrator begins to oscillate, lighting the LED up in an amber color.

The circuit works quite well in practice. The transistors can be essentially any general purpose type, as this does not stress them particularly. I use BC548B's, because they are what I have on hand. It should work fine with any transistor with a beta of 100 or more.

Microprocessor Reset Circuit

A microprocessor reset circuit, built entirely out of discretes.
There are many good microprocessor supervisors on the market today. Many are very convenient, and come in TO92's, or in tiny surface mount packages. The only problem is that they lack the old fashioned charm needed for any serious retro-themed homebrew project. If you are going to use a Z80, why use a microprocessor supervisor that is almost as complex?

So, as usual, I built one from a few transistors, a few diodes, and some passives.

This circuit, despite being a little large, is almost boringly simple. The first two transistors form a voltage comparator, comparing VCC with approximately 4VDC. When VCC is less than 4V, Q2 will saturate, holding the capacitor discharged. When VCC stabilizes, the capacitor will start charging through the 10K resistor.

Q3 acts as an emitter follower for the capacitor voltage, driving a somewhat higher gain voltage comparator at the output. While the capacitor is below the critical voltage, the system is held in reset.

The delay is a reasonable fraction of a second long. To adjust it, just swap the capacitor for something appropriate for your application. Again, use whatever transistors you have available. Something with a gain higher than 100 is strongly reccomended. I used BC548B's.