Jump to content

Photo

Diode matrix ROM for Atari 2600


19 replies to this topic

#1 Wickeycolumbus OFFLINE  

Wickeycolumbus

    River Patroller

  • 4,765 posts
  • Location:Michigan

Posted Wed Jun 25, 2014 8:06 PM

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.

P1020250.JPG

P1020253.JPG

P1020252.JPG



Now we wait for Random Terrain's 32 byte diode ROM comment :D

Attached File  DiodeROM.zip   1.89KB   73 downloads

Edited by Wickeycolumbus, Wed Jun 25, 2014 8:09 PM.


#2 RevEng OFFLINE  

RevEng

    River Patroller

  • 3,435 posts
  • bit player
  • Location:Canada

Posted Wed Jun 25, 2014 8:34 PM

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. :)

#3 theloon OFFLINE  

theloon

    Quadrunner

  • 8,058 posts

Posted Wed Jun 25, 2014 8:42 PM

Next level maneuver: A 128 byte PC jumper board!  It'll be like QR codes for masochists!



#4 Keatah OFFLINE  

Keatah

    Quadrunner

  • 7,981 posts

Posted Thu Jun 26, 2014 1:01 AM

Core memory



#5 Mr SQL OFFLINE  

Mr SQL

    Dragonstomper

  • 792 posts

Posted Thu Jun 26, 2014 6:49 AM

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?



#6 Keatah OFFLINE  

Keatah

    Quadrunner

  • 7,981 posts

Posted Thu Jun 26, 2014 8:46 AM

Individual transistors. I can see it now..



#7 Wickeycolumbus OFFLINE  

Wickeycolumbus

    River Patroller

  • Topic Starter
  • 4,765 posts
  • Location:Michigan

Posted Thu Jun 26, 2014 1:46 PM

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!

#8 BigO OFFLINE  

BigO

    River Patroller

  • 3,351 posts
  • Location:Phoenix, AZ

Posted Thu Jun 26, 2014 2:14 PM

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.



#9 Wickeycolumbus OFFLINE  

Wickeycolumbus

    River Patroller

  • Topic Starter
  • 4,765 posts
  • Location:Michigan

Posted Thu Jun 26, 2014 4:06 PM

Somebody needs a 3rd dimension. :)
 
I can see this thing looking like one of those homebrew 3D LED displays.


That would be really cool!

#10 Wickeycolumbus OFFLINE  

Wickeycolumbus

    River Patroller

  • Topic Starter
  • 4,765 posts
  • Location:Michigan

Posted Fri Jun 27, 2014 3:47 AM

Featured on Hackaday!

http://hackaday.com/...ng-with-diodes/

#11 iesposta ONLINE  

iesposta

    Stargunner

  • 1,998 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Fri Jun 27, 2014 6:19 AM

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?

#12 Dr Jefyll OFFLINE  

Dr Jefyll

    Combat Commando

  • 1 posts
  • Location:Ontario, Canada

Posted Fri Jun 27, 2014 1:26 PM

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.or...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/...a-cpu/#comments

cheers,
Jeff

http://LaughtonElectronics.com

Attached Thumbnails

  • DSC01501 lores.JPG
  • DSC01546 lores.JPG
  • 805 logic box and 'scope.jpg

Edited by Dr Jefyll, Fri Jun 27, 2014 2:38 PM.


#13 Wickeycolumbus OFFLINE  

Wickeycolumbus

    River Patroller

  • Topic Starter
  • 4,765 posts
  • Location:Michigan

Posted Sat Jun 28, 2014 9:49 PM

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.or...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/...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.

#14 iesposta ONLINE  

iesposta

    Stargunner

  • 1,998 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Sun Jun 29, 2014 12:03 AM

...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/...c1#entry2382354

#15 iesposta ONLINE  

iesposta

    Stargunner

  • 1,998 posts
  • Retro-gaming w/my VCS
  • Location:Pennsylvania

Posted Sun Jun 29, 2014 12:15 AM

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.

#16 Wickeycolumbus OFFLINE  

Wickeycolumbus

    River Patroller

  • Topic Starter
  • 4,765 posts
  • Location:Michigan

Posted Sun Jun 29, 2014 12:47 AM

Thanks for the links! Didn't catch those before. You're right about genmusic2. Perfect combination of rhythm, melody, and visual feedback.

#17 stardust4ever OFFLINE  

stardust4ever

    River Patroller

  • 3,943 posts
  • Location:Louisiana

Posted Sun Jun 29, 2014 1:02 AM

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!  :o

 

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 by stardust4ever, Sun Jun 29, 2014 1:04 AM.


#18 Tjoppen OFFLINE  

Tjoppen

    Chopper Commander

  • 200 posts

Posted Sun Jun 29, 2014 4:53 AM

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.



#19 tokumaru OFFLINE  

tokumaru

    Chopper Commander

  • 213 posts
  • Location:Rio de Janeiro - Brazil

Posted Mon Jun 30, 2014 1:12 AM

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.

#20 Thomas Jentzsch OFFLINE  

Thomas Jentzsch

    Thrust, Jammed, SWOOPS!, Boulder Dash

  • 18,957 posts
  • Always left from right here!
  • Location:Düsseldorf, Germany

Posted Mon Jun 30, 2014 5:21 AM

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.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users