Homebrew Programming With Diodes


Diode matrices were one of the first methods of implementing some sort of read only memory for the very first electronic computers, and even today they can be found buried deep in the IPs of ASICs and other devices that need some form of write-once memory. For the longest time, [Rick] has wanted to build a ROM out of a few hundred diodes, and he’s finally accomplished his goal. Even better, his diode matrix circuit is actually functional: it’s a 64-byte ROM for an Atari 2600 containing an extremely simple demo program.

[Rick] connected a ton of 1N60 diodes along a grid, corresponding to the data and address lines to the 2600’s CPU. At each intersection, the data lines were either unconnected, or tied together with a diode. Pulling an address line high or low ([Rick] hasn’t posted a schematic) pulls the data line to the same voltage if a diode is connected. Repeat this eight times for each byte, and you have possibly the most primitive form of read only memory.

As for the demo [Rick] coded up with diodes? It displays a rainbow of colors with a black rectangle that can be moved across the screen with the joystick. Video below.

18 thoughts on “Homebrew Programming With Diodes

    1. Frankly it looks like he has done a pretty good job, please elaborate on your improved scheme–he has the vertical crossbars done with busses, and only the horisontal done with pretty short wires; I doubt that he could get a tighter density even with a dual layer PCB

      1. For starters, I would have used stripboard http://en.wikipedia.org/wiki/Stripboard#mediaviewer/File:Stripboard.jpg so you can make the rows without wires. Only solder in one side of the diode, and then use a bare piece of wire to solder the colums on the component side.

        Alternatively, mount the diodes vertically, and put another piece of stripboard across, sandwiching the diodes between the two pieces of stripboard. This will be very dense (100 bits per square inch), but obviously not suitable for modification afterwards.

  1. Why 1N60 Schottsky diodes? Would any diode, like the 1N4001 do the trick? What I mean is, why did you choose 1N60’s?

    Why not use SMT circuit/board? IIRC there’s a few protoype SMT boards available out there. Pack more into the same space. A quick Google shows a couple of white sheets for 1N60’s in a SMD package so I guess they’re available somewhere.

    1. If the diodes are used to program the zeroes (which makes sense with most decoder chips), a standard diode will have a bit too much voltage drop to meet the spec for a TTL low level.
      In spite of that, I got away with it when I made a similar circuit in the late ’70s.
      Mine was a three byte ROM, to insert a JMP instruction on the bus of an 8080 computer at startup, so the EPROM could be at a higher address than the reset vector.

    2. IN4001 is a rectifier diode. It has huge capacitance because it is for higher current (1A) and for rectifying *slow* AC like 60Hz. You wouldn’t even want that for a switch mode power supply at hundreds of kHz let alone digital stuff at MHz.

      You might want to use small signal *switching diodes* like those 1N914/1N4148 or schottky diode for applications like this.

  2. This refresh my mind with my first logic project (based on DTL chips) : a 1024 bits ROM build with diodes and containing a morse message for an Ham beacon. 45 years ago…

  3. Random thought of the day: I remember reading something about traffic light controllers using a diode card for the conflict monitor. If two perpendicular streets both show a green light due to a failure on the controller, the conflict monitor uses diodes to detect this, cuts out the normal controller and goes to a flasher circuit that shows flashing red on one side and yellow on the other.

    If somebody can make sense of this, congratulations:

    actual card:


Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.