Home Up

2006: K-Elf

a homebrew CDP1802 computer



COSMAC "ELF", A Low-Cost Experimenter's Microcomputer (Popular Electronics 1976)

HobbyLabs K-Elf '06

I got to know COSMAC ELF only a few years ago while browsing the net. Earlier I knew the RCA CDP1802 from early Finnish computers Telmac and Oscom Nano.

One unique feature of the CDP1802 is the load mode, which makes it possible to make a ROM-less design with only a few external components (Altair8800/IMSAI8080 using Intel's 8080 CPU implemented similar functionality using a lot of external logic). ROM-less system started to feel cool some time back, so I decided to make one myself.



Starting point was to make an ELF or a clone of it.  Processor chip I could borrow from my Nano. The 2101 256x4 SRAMs are very tricky to find these days in Finland at least. I had a lot of 2048x8 (6116) chips, but they felt a bit too modern for my K-elf ("Kisse's ELF"). When I found some 2111 I had a solution, as these are from 70's as well and also 256x4 (but different pinout).

Another problem was the 7-segment displays used, HP 5082-7340. At first I couldn't find those or similar in Finland, but after some research I got price for TIL311 in Finland - something outrageous like 25e each, so I decided to use a standard 7-seg display and DM9368 decoder/driver (this seems to be also used later in ELF II), which was about 10x cheaper. After that I also happened to find some DIS1417 (similar to TIL311) from eBay with reasonable price and purchased them, so I reverted back to the original.

I followed the original ELF design duplicating the toggle switch design as is. Clock signal comes from a 3.58 MHz crystal divided by two (as in ELF with the video extension) and power comes from 7805 regulator, which does have a tough time feeding power to all the chips and especially the displays, but manages still (gets a bit hot - I used a 9V mains transformer, which does feed almost 10V in).

After already finishing the work and some successful testing, I added a small buzzer driven by the Q-output to play tunes with it.  Also 4 more displays were added to show the address bus, as it does get tricky to enter code without indication of current address as you make mistakes (and you do).

A few days later, I did get kind of tired of always entering code again and again after turning it off (I wonder how many felt this way in the 70's?). I came up with two choices: battery backup or EEPROM. As I didn't have CMOS RAMs the battery backup wouldn't work very well. I happened to have some 2817 2k EEPROMs and even if these are a bit modern for the ELF, I still decided to add a socket for one. It was fun to enter boot code directly into the EEPROM using the toggle switches! To keep the original inspiring RAM-only design, but also make it possible to boot from ROM, I added a new switch called BOOT - Normally RAM is mapped from 0000-00FF, and the EEPROM is mapped to 8000-87FF. This way it works as original ELF. When BOOT is active, the EEPROM overlays the RAM, so it can work as boot ROM and can be programmed with the toggle switches. SW can disable the overlay (any access to I/O >3 (N2 '1') resets BOOT). To protect the EEPROM I added another switch, EPROT (disables write pulse), to protect the EEPROM  from false write, which seems to happen very easily during power cuts (happened twice during 1 hour testing).

Yet another modification was done also, adding a SLOW mode. If SLOW switch is activated, about ~1s WAIT-pulse is added after each TPA pulse (generated by a 74HC4538 single-shot). This makes it run very slowly and you can watch the program from the address display (address display seems to get false readings sometimes. I'm not sure yet if there is some bug in the circuit, or if it is normal behaviour. Have to hook up logic analyzer some day and see or maybe read the CPU manual :)

Note: the address displays are connected directly to data bus without buffering. This does work, but is not anything recommended as the non-CMOS displays load the bus quite a lot.


Mechanics follows the COSMAC ELF more or less. I used 100x160mm prototype board hooked into small pieces of aluminum bars (also holding the regulator for cooling), and a small piece of plastic holds the switches.


I think it turned out great. Removing the EEPROM makes it very close to the original ELF, but enabling it makes it so much more usable (too easy some might think). For testing purposes I transferred a 1k program (only fits in the EEPROM...) from Oscom Nano to the EEPROM using the toggle switches. It plays a Finnish tune "Säkkijärven polkka" using the Q-output (I have the buzzer there). It's quite amazing how fast you learn to set the switches right. Toggling in about 1k of code took some time.

I didn't add the video for two reasons - I couldn't get the 1861 video chip and on the other hand the idea of making a more advanced 1802 system started to grow.

In case you're interested, the schematics and BOM is below. I did build my K-Elf using those, but I don't guarantee it being fully correct as I did make some changes after the initial schematics (these _should_ be also updated). If you find something wrong, please let me know (contact info in the main page).

[K-elf schematics]

[BOM - Parts list]

[Netlist] (makes it so much easier to solder all the wiring)

Last modified: May-09

[ home | back ]

retro AT hobbylabs DOT org