Wickeycolumbus Posted June 26, 2014 Share Posted June 26, 2014 (edited) Making a ROM circuit out of diodes has long been a goal of mine, in order to better understand how memory works. Diode ROMS were often used before ROM chips existed or were too costly. You'll find a circuit similar to this inside an EPROM. I've just finished making a 64 byte diode matrix ROM for the Atari 2600. In the demo, the Atari shows all it's possible colors and allows you to move a black rectangle in 3 directions with the right joystick controller. Pretty simple, but even that was tough to fit into the 64 bytes of available space. In case anyone is interested, the parts include: (many) 1N60 diodes 8 X 3.3K ohm pullup resistors .1 uf decoupling caps for each IC 2 X 74AS04 inverters 2 X 74HC244 buffers 9 X 74LS138 3:8 decoders Of course, I don't plan to make a schematic, but if anyone wants to take on a similar project, I'd be more than willing to share information about the circuit. Here are some pictures of the board, also included is the ROM image padded to 4K for compatibility with emulators and source code. Now we wait for Random Terrain's 32 byte diode ROM comment DiodeROM.zip Edited June 26, 2014 by Wickeycolumbus 13 Quote Link to comment Share on other sites More sharing options...
RevEng Posted June 26, 2014 Share Posted June 26, 2014 Way cool, Wickey! Ever since I read an article about diode matrix rom I've wanted to do this. Good on you for beating me to it. Quote Link to comment Share on other sites More sharing options...
+Gemintronic Posted June 26, 2014 Share Posted June 26, 2014 Next level maneuver: A 128 byte PC jumper board! It'll be like QR codes for masochists! 1 Quote Link to comment Share on other sites More sharing options...
Keatah Posted June 26, 2014 Share Posted June 26, 2014 Core memory Quote Link to comment Share on other sites More sharing options...
Mr SQL Posted June 26, 2014 Share Posted June 26, 2014 This is awsome! I wonder what a 1K board with a mini-game would look like If the diodes are the ROM, what's in the IC's? Quote Link to comment Share on other sites More sharing options...
Keatah Posted June 26, 2014 Share Posted June 26, 2014 Individual transistors. I can see it now.. Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted June 26, 2014 Author Share Posted June 26, 2014 Thanks for the kind words! Way cool, Wickey! Ever since I read an article about diode matrix rom I've wanted to do this. Good on you for beating me to it. Thanks Rev! Hope I don't discourage you from making your own though, It's always fun when you can get something like this working. This is awsome! I wonder what a 1K board with a mini-game would look like If the diodes are the ROM, what's in the IC's? 1K would be a ridiculous amount to wire, but it would definitely be cool to see! I considered going higher to fit a small game, but as you can see the boards I use just barely fit 64 bytes. It would have been cool to do 256 bytes so I could fit my 256 byte pong clone. The IC's are used for address demultiplexing and buffering mostly. Since the data bus is shared among many other chips, it is necessary to disable the cartridges ability to control it by placing it in 'high impedance' mode. You need a tri-state buffer for this. The address demultiplexing is necessary to convert the 6 address lines into 64 individual select lines, one for each byte. I also use a buffer on the address lines to strengthen the signal. Not sure if this is necessary, but I didn't want to find out the hard way The other two chips are inverters, which I used to cut down on the diode count. I figured out that if I used a diode to signify a '1' rather than '0' it would use far less diodes (173 vs 339). They basically just invert the state of the data lines before they go to the tristate buffer. Individual transistors. I can see it now.. That could get interesting... Maybe a 16 byte ROM made of discrete transistors, resistors, and diodes. I'll look into it! 2 Quote Link to comment Share on other sites More sharing options...
BigO Posted June 26, 2014 Share Posted June 26, 2014 as you can see the boards I use just barely fit 64 bytes Somebody needs a 3rd dimension. I can see this thing looking like one of those homebrew 3D LED displays. 1 Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted June 26, 2014 Author Share Posted June 26, 2014 Somebody needs a 3rd dimension. I can see this thing looking like one of those homebrew 3D LED displays. That would be really cool! Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted June 27, 2014 Author Share Posted June 27, 2014 Featured on Hackaday! http://hackaday.com/2014/06/26/homebrew-programming-with-diodes/ 4 Quote Link to comment Share on other sites More sharing options...
iesposta Posted June 27, 2014 Share Posted June 27, 2014 There is that 128 byte Pong that runs from the RIOT ram. That could be something to shoot for in builds like this. If you didn't want a game, there are demos in 128 bytes. Anyone know of demos smaller than 128 bytes? Quote Link to comment Share on other sites More sharing options...
Dr Jefyll Posted June 27, 2014 Share Posted June 27, 2014 (edited) Nice work, Wickeycolumbus! I stopped in to say hi after seeing a post about your project on the forum at 6502.org. http://forum.6502.org/viewtopic.php?f=12&p=33888#p33888 No doubt LOTS of other folks have noticed, too, since your diode ROM was featured on Hackaday! I hope you're enjoying the well-deserved attention. BigO mentioned taking the diode ROM concept into the third dimension, and that prompted me to share some photos. This ancient project of mine has a ROM that's both 3D and manually alterable! Every diode has a SPST switch in series with it. Its capacity is eight 12-bit words (plus two 5-bit words, but who's counting). There are two 12-bit buses that feed a 12-bit counter and a 12-bit comparator, implemented in CMOS (which is very well suited for interfacing with diode logic). What it all does is count encoder pulses for machine control, and altering the ROM sets various distances the motor has to move. In case anyone's wondering, this project predates microcontrollers. Although it has peripherals that can digest 12-bit values, the "CPU" on this board is a one-bit design similar to this: http://hackaday.com/2014/04/20/the-computer-without-a-cpu/#comments cheers, Jeff http://LaughtonElectronics.com Edited June 27, 2014 by Dr Jefyll 1 Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted June 29, 2014 Author Share Posted June 29, 2014 There is that 128 byte Pong that runs from the RIOT ram. That could be something to shoot for in builds like this. If you didn't want a game, there are demos in 128 bytes. Anyone know of demos smaller than 128 bytes? There are a few of those games that run in RAM, I've even written a couple myself. The problem with those is that there is some code initialization in ROM that is only executed at start up to load the game to RAM and give the game some initial values. They also rely on self modifying code, so you wouldn't be able to strip it down some way and run it from ROM. Not sure I've seen those 128 byte demos, could you post a link? Nice work, Wickeycolumbus! I stopped in to say hi after seeing a post about your project on the forum at 6502.org. http://forum.6502.org/viewtopic.php?f=12&p=33888#p33888 No doubt LOTS of other folks have noticed, too, since your diode ROM was featured on Hackaday! I hope you're enjoying the well-deserved attention. BigO mentioned taking the diode ROM concept into the third dimension, and that prompted me to share some photos. This ancient project of mine has a ROM that's both 3D and manually alterable! Every diode has a SPST switch in series with it. Its capacity is eight 12-bit words (plus two 5-bit words, but who's counting). There are two 12-bit buses that feed a 12-bit counter and a 12-bit comparator, implemented in CMOS (which is very well suited for interfacing with diode logic). What it all does is count encoder pulses for machine control, and altering the ROM sets various distances the motor has to move. In case anyone's wondering, this project predates microcontrollers. Although it has peripherals that can digest 12-bit values, the "CPU" on this board is a one-bit design similar to this: http://hackaday.com/2014/04/20/the-computer-without-a-cpu/#comments cheers, Jeff http://LaughtonElectronics.com Thanks Jeff! 6502.org, great site, don't get on there enough. I saw your post about improving the design. Good insight! I don't know much about the differences between TTL families and what not. I just used whatever I had on hand and was available on Tayda Electronics. Your diode ROM looks cool wired like that, thanks for sharing. Being able to change the data is really nice. And that 1 bit CPU is awesome. Having trouble wrapping my head around it, but it's very clever. Quote Link to comment Share on other sites More sharing options...
iesposta Posted June 29, 2014 Share Posted June 29, 2014 ...Not sure I've seen those 128 byte demos, could you post a link? ... Genmusic1 and 2 are 128B but duplicated out to 4K to run on emulators. http://atariage.com/forums/topic/188318-bug-menu-loader-does-not-properly-support-128-b-roms/?hl=%2Bgenmusic1&do=findComment&comment=2382354 Quote Link to comment Share on other sites More sharing options...
iesposta Posted June 29, 2014 Share Posted June 29, 2014 I LOVE genmusic2.bin and let it run for quite a while. Very rave-hypnotic. I'd love to have a big ol board of diodes that runs genmusic2! Tjoppen seems to indicate he tried running 16b and 32b programs. Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted June 29, 2014 Author Share Posted June 29, 2014 Thanks for the links! Didn't catch those before. You're right about genmusic2. Perfect combination of rhythm, melody, and visual feedback. Quote Link to comment Share on other sites More sharing options...
Andromeda Stardust Posted June 29, 2014 Share Posted June 29, 2014 (edited) I'm curious about those 128 byte demos. Assuming you use a dev cartridge (say harmony or something) to load the program into memory, and all data needed to run were contained within the RAM, would it be possible to then yank the cartridge out and leave the VCS running with nothing in the slot? Or would pulling the cartridge corrupt the game. I'm not worried about damage. We've all yanked live carts at some point in our gaming past with zero damage to the cart or system. Also I'd like to see a ROM made entirely of SPST switches. Also if you're really narcissistic, it would be fun to use discrete transistors instead of 7400 series logic chips. You'd only need 16,384 switches to program in a simple game like Combat! 32,768 switches to run Pacman! Flick a bunch of switches to reprogram a new game. It's all been done before; like Eniac with it's 17,468 vaccuum tubes! Edited June 29, 2014 by stardust4ever 1 Quote Link to comment Share on other sites More sharing options...
Tjoppen Posted June 29, 2014 Share Posted June 29, 2014 I LOVE genmusic2.bin and let it run for quite a while. Very rave-hypnotic. I'd love to have a big ol board of diodes that runs genmusic2! Tjoppen seems to indicate he tried running 16b and 32b programs. Yes, I've been experimenting with glitch art similar to wallflower. It's possible to get interesting results in 16 bytes, but unfortunately this leaves no room to initialize the console to a known state. Digging it up, it seems I'm just using INTIM to set up the stack pointer, then just pull and push random values between RIOT/TIA. Quote Link to comment Share on other sites More sharing options...
tokumaru Posted June 30, 2014 Share Posted June 30, 2014 I'm curious about those 128 byte demos. Assuming you use a dev cartridge (say harmony or something) to load the program into memory, and all data needed to run were contained within the RAM, would it be possible to then yank the cartridge out and leave the VCS running with nothing in the slot? Yes, the demo would be able to keep working after the cart is removed, but since the address and data lines used to access the RAM are also connected to the cart, their state can be momentarily messed up as you remove the cart, possibly crashing the program. It's hit and miss, sometimes it works, sometimes it doesn't. There is an NES program made for dumping carts that requires this kind of hotswapping. The dumping software is copied to RAM, at which point you remove the cart and insert the cart you want to dump. Then the contents of the cart are read and played back through the audio channels. You can record the output on your PC and use a software to convert the audio file back into a ROM file. It's a pretty neat idea. 1 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted June 30, 2014 Share Posted June 30, 2014 I'm curious about those 128 byte demos. Assuming you use a dev cartridge (say harmony or something) to load the program into memory, and all data needed to run were contained within the RAM, would it be possible to then yank the cartridge out and leave the VCS running with nothing in the slot? Here is the link for RAM Pong. There are currently some plans to put it on a cart. 1 Quote Link to comment Share on other sites More sharing options...
Dessony1 Posted June 26, 2016 Share Posted June 26, 2016 Of course, I don't plan to make a schematic, but if anyone wants to take on a similar project, I'd be more than willing to share information about the circuit. Will you post a schematic here since I really want to take on a similar project? I looked high and low in the Internet area for this source. Thank you very much in advance. Dessony Quote Link to comment Share on other sites More sharing options...
Osccccar Posted February 16, 2017 Share Posted February 16, 2017 Hello, Very nice this diode rom. I have a question, since I have read recently about diode roms. https://hackaday.io/project/11860-diodes-only Have you had problems with voltage drops due to the large amount of diodes used? Did you use some ICs for that reason? Thanks for sharing this. Regards. Quote Link to comment Share on other sites More sharing options...
Andromeda Stardust Posted February 17, 2017 Share Posted February 17, 2017 Fun seeing this pop up again! 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.