The COSMAC Elf Microcomputer

Membership Card manual cover

For me and you and the 1802

Once upon a time, microcomputers were simple and easy to understand. So simple in fact that a kid like me, with no computer experience whatsoever, could actually understand them, build them, program them, and put them to work in his very own projects!

The COSMAC 1802 was created in the 1970's at the dawn of the microcomputer revolution, by Joseph Weisbecker of RCA Corporation. It used their new CMOS fabrication process, which had very low power consumption, very high noise immunity, and was very simple to use. It was intended for military and aerospace; applications too tough for other microcomputers to survive.

But Joe was a hacker at heart. He wrote a series of articles starting in the August 1976 issue of Popular Electronics magazine called "Build the COSMAC ELF". It described a simple low-cost computer, using the 1802 microprocessor. At the time, microcomputer systems cost hundreds to thousands of dollars. (Hmm... they still do today!) But Weisbecker's ELF cost less than $100! Yet, it was an honest-to-goodness real live computer, able to do anything its much bigger cousins could do -- albeit a bit slower and cruder.

It was the ideal computer trainer. Hobbyists built thousands of ELFs, learning about computer design, construction, and programming in the process. A dozen companies produced versions of the ELF, also selling for low prices. It was the "Legos" of computers; a simple building-block computer that could be assembled many ways to become almost anything, limited only by your imagination.

I learned about computing on my ELF. It put me on a career in engineering, as it did for thousands of others. 1802's got designed into all sorts of amazing things; video games, music synthesizers, auto engine controllers, military weapon systems, and even NASA missions such as the Galileo spacecraft. Eat stardust, PCs and Macs!

Today's computers are far more powerful than the 1802. But they have also become so complicated that virtually no one can build them or truly understand how they work. We depend on someone else to make them for us, and to provide us with the megabytes of pre-written software needed to do anything with them. You can't learn the basics if there is nothing "basic" to learn on! I decided to do something about it.

The Membership Card

The Membership Card is a reproduction of the original Popular Electronics Elf computer, repackaged to fit in a pocket-sized Altoids(R) tin. It uses no custom parts, no surface mount assembly, no need for PCs, no megabyte compilers, or secret software to use it. Now you can learn about computers right from the ground up, and really understand how they work!

Membership Card in Altoid tin


Membership Card Assembled

What's inside?

Inside are two circuit boards, each the size of a credit card. One is the Membership Card itself. It has the 1802 microprocessor, up to 64k bytes of memory, 22 bits of I/O, and the needed clock, reset and power supply circuits, and a supercapacitor to maintain memory contents without power. It can be used by itself as a microcontroller for projects like the Parallax BASIC Stamps or Arduino microcontrollers. All power and input/output signals are available on the 30-pin header along the bottom.

Membership Card Front Panel Assembled

The second board is the Front Panel. It provides the switches and lights to implement a control panel, just like the classic computers of old. The Front Panel lets you read and write to memory and I/O ports manually, without any help from software or external devices. The Front Panel also brings the power and I/O signals out to a standard PC Parallel Port connector. It's a simpler way to connect external devices, and can also be plugged into a PC for software loading or downloading, or to use the PC's keyboard and screen for 1802 programs.

The Membership Card can be purchased as a bare board with manual, or as a complete kit with all parts including the RCA 1802 microcomputer, 32k bytes of RAM, and even an empty Altoids tin to put it all in. An optional Cover Card is also available to provide a finished cover with holes and labels for all the lights, switches, and connectors.


Membership Card Kit

The Membership Card is your ticket to the fascinating world of microcomputing. Return with me now to those thrilling days of yesteryear, when the heroic pioneers of the microcomputer revolution built their own computers from scratch, and learned to program them to do incredible things, all for a tiny amount of money!

Need more information?

Membership Card bare boards -- $19. Includes Membership Card, Front Panel Card, and detailed manual with schematic and parts list. Shipping and handling; add $5 US, $10 international.

Membership Card bare boards, with Cover Card -- $29. Includes Membership Card, Front Panel Card, Cover Card, and manual with schematic and parts list. Shipping and handling; add $5 US, $10 international.

Membership Card kit -- $79. Includes Membership Card, Front Panel Card, manual, all parts including CDP1802 microprocessor, 32K RAM, and an Altoids tin. Shipping and handling; add $10 US, $15 international.

Membership Card kit with Cover Card -- $89. Complete kit with Membership Card, Front Panel Card, Cover Card, manual, all parts including CDP1802 microprocessor, 32K RAM, and an Altoids tin. Shipping and handling; add $10 US, $15 international.

Bill Rowe's Olduino


Hundreds of Membership Cards have been sold. Now that you have yours, what did YOU do with the 1802? Send me links to your projects, and I'll add them here!

Arduino to Membership Card Adapter

Bill Rowe has been very busy with his Membership Card. He noticed that there were lots of accessory boards (called "shields") for the Arduino microcontrollers. So, he made the Olduino adapter board to plug in and control Arduino shields with a Membership Card!

Since Arduinos are programmed in C, Bill also worked out how to use an 1802 C compiler to program the Membership Card. He's controlled LCD displays, ethernet adapters, interfaced SD memory cards, and more. Quite an impressive feat! Take a look at Bill's site -- he's put a lot of work into this, and achieved some impressive results. The photo at right shows the Membership Card on top, Bill's Olduino in the middle, and his Arduino Shield adapter at the bottom.

RS-232 Serial to Parallel Adapter

Chuck Bigham didn't have a parallel port on his PC. So he programmed a PICAXE microcontroller as a RS-232 serial-to-parallel converter. He also wrote a Windows program to provide a control panel. The project is documented with schematics and software at RS-232 serial to parallel adapter. Thanks, Chuck! I've always wanted to play with the PICAXE micros, and this gives me an excuse.

Mark Moulding's Serial Loader

Mark Moulding also built a serial loader, but he used an 8051-class microcomputer (the Atmel AT89C2051). It accepts data from an RS-232 port (or USB port with USB-to-serial adapter), and loads it into the Membership Card parallel port. It can accept hex files directly from DOS, coming from an assembler or simple text program. Herb Johnson has collected Mark's work here.

Mark Thomas' Piggyback RAM+ROM

"Piggyback" RAM and ROM

Mark Thomas took a different approach. He "piggybacked" a 32k EPROM on top of the 32k RAM chip on his Membership Card. This gave him a computer with the full 64k of memory. The EPROM was programmed with Spare Time Gizmo's Elf2K 1802 software, which contains not only a serial port driver, but also a monitor, editor, assembler, BASIC, FORTH, and a whole bunch of other stuff.

This approach requires some fiddly hand wiring. The EPROM can be a one-time-programmable type because it is no longer socketed. Information on Mark's approach is here. Note: You'll have to be a member of the Cosmac Elf Yahoo group to view it.

Stack two Membership Cards for twice the memory and I/O

The Rev.D and later Membership Cards are set up so you can stack two boards. This gives you two memory sockets; one for RAM and one for ROM. This is an easy way to add the Elf2K or other ROM. It also adds a second 8-bit input and output port.

Basically, the top board has a wirewrap socket for the 1802. The 1802 plugs into it. The long wirewrap pins extend down, and plug into a socket on the lower Membership Card. Cut off pins 1 and 38 of the wirewrap socket, so the Clock and DMA-IN circuits on the bottom board won't fight with those on the top board. Transistor Q1 can be installed in either of two positions, to address its memory chip at 0-7FFF or 8000-FFFF. There are jumper options to select the I/O address for each board separately.

See the manual for more details. The Membership Card bare board can be purchased by itself for $9.95 if you'd like to take this route. The irrepressible Herb Johnson has pulled together the notes on this here. If there is enough interest, I can make up a kit with just the parts needed.

A ROM Autoloader

Chuck Yakym's approach was to build a board with a clock, a 4040 counter, and an EPROM. This board can plug into the 25-pin connector on the Front Panel card, or directly onto the Membership Card's 30-pin header (so no Front Panel Card is needed). When you press the "Autoload" button, the clock steps the counter to sequentially address each byte in the EPROM. The outputs from the EPROM go to the INPUT switches. The IN button is pressed for each byte, so it automatically loads the EPROM's contents into RAM, just as if you had set the switches and pressed IN to do it manually.

A Digital Alarm Clock

It all started because my son loves Minecraft. And, he is very hard to get out of bed in the morning. So how about an alarm clock that is truly "alarming"? It's a project that I just started. I'll be describing it here as I go along, so you can build one yourself, or contribute (or kibitz, or heckle) as you see fit.

Minecraft Creepers

Minecraft has a character called the "Creeper". He's like a suicide bomber -- he sneaks up on you, and then EXPLODES! So I decided to build a "Creeper" alarm clock. I bought a cheap Creeper mask (actually nothing but a cardboard box printed to look like the Creeper's head) on a post-Halloween sale on eBay. I'll put the clock display in the eyes (hours on the left, minutes on the right). Put a real LOUDspeaker in it (not the wimpy little things found in commercial alarm clocks). As it gets close to the set time, it will start ticking like approaching footsteps. Louder and louder, closer and closer, until a big KABOOM! explosion sound at the end. The only way to stop it is to get out of bed (because the alarm's "off" button is a weight-sensing switch under a foot of the bed)!

The Membership Card has 8 output bits. A clock display made with 7-segment LEDs (18:88) has 2+7+7+7 = 23 LEDs. I also want LEDs for AM, PM, Alarm, and a colon between the hours and minutes; that's another 5, for a total of 28 LEDs. To drive 28 LEDs with 8 output bits, I need to multiplex them, i.e. divide the 28 LEDs into 7 rows and 4 columns.

I don't have 11 output bits (7 rows + 4 columns), so I used a 74LS145 1-of-10 decoder to drive the 7 rows. 3 output bits select 1 of 7 rows (the LED cathodes). Then 4 more output bits drive the 4 columns (LED anodes). This uses 3+4=7 bits, so I actually have one bit left over. :-)

Each output comes from a 74HC373, which can source 6ma with a 0.3v drop; so it acts like a 0.3v/6ma = 50 ohm resistor. Each 74LS145 output can sink 24ma with a 0.35v drop, which can handle 6ma from 4 rows all on at once.

Can I use the 74HC373's 50 ohm output resistance instead of physical resistors? Let's see... With a 5v supply, the 74HC373 drops 0.3v and the 74LS145 drops 0.35v, leaving 4.35v for the LEDs. I have a bag of orange rectangular LEDs left over from a previous project that happen to measure:

My Clock Display

I can use two in series to make each segment of the 7-segment LED display. This neatly provides about a 4v drop, so I can get by without adding series resistors. (Yeah, I could also put a resistor in series with each of the 4 anode outputs and use standard common-anode 7-segment displays. But then I'd have a boring display that looks just like everyone else's). Here's a photo of my LED display:

The multiplexing here is a little different than the usual method of scanning digit-by-digit (light all needed segments of the 1st digit, then all needed segments of the 2nd digit, etc.) Here, I need to scan by segment (light the "a" segments of all digits, then light the "b" segments of all digits, etc.) This is a consequence of not having enough output pins, and not wanting to add more chips to get around it. It will make the software "entertaining".

More information:

Check here for additions, corrections, and the latest version.

The 1802 Membership Card Microcomputer, © 2006-2013 by Lee A. Hart. Created 8/5/2012. Last update 3/7/2014.
Go to TOP ........ Go to HOME ........ Questions? Comments? Email me for details.
Web hosting provided by Turtlehut Internet Marketing