Wednesday, 3 December 2014

RAM Cartridge for the Yamaha DX7 Synthesizer (Part V: Success)

This is part five of my report on building a RAM cartridge for the Yamaha DX7 digital synthesizer, and finally I've got some positive news: I've got a prototype that works! Since my last failure report I ordered another prototype batch, this time using seeedstudio's Fusion PCP service, and a 1.2mm thick board. I also ordered on eBay a replacement cartridge socket so I could wire the connector out of the synthesizer and in the future plug the prototype panels in without wearing out the cartridge socket of the DX7.

The layout of the new PCBs is the nearly same as that of the ones manufactured at OSH Park. They're only thinner, i.e. 1.2mm instead of 1.6mm, and this time I even added a pad for the (necessary?) 2.2uF decoupling capacitor. Soldering the handful of components was quick and painless. When I plugged it into the DX7 for the first time (the external connector isn't set up yet), it didn't work. The synthesizer simply didn't recognize the cartridge. To my utter dismay it appears that the PCB is too thin now, as it slipped right into the socket without any force. I could make the DX7 recognize it, however, by pressing it slightly backwards. Still, it didn't work: I consistently got a Write Error. I was quite convinced by then that there was a fundamental problem with my design.

I studied the circuit diagrams again for hours, even wrote a quick'n'dirty disassembler for the DX7's main CPU, the HD63B03X, to disassemble the system ROM and inspect the routines for writing the cartridge. I also started making a connector probe using one of the PCBs with wires soldered to the EEPROM solder pads. This would allow me to signal-trace the various EEPROM bus signals, especially the two chip select lines /CE1 and /CE2 and the write enable line /WE. Because the PCBs are too thin I planned to cover the connector pads with some solder to make them slightly thicker. For good measure I did the same thing with the prototype PCB for a final test to make sure it wasn't a dodgy connection that caused the failure.

I plugged it in, and it went quite nicely into the socket, requiring some but not excessive force. Then I pressed the cartridge voice selector. The display read FORMAT CONFLICT! So I pressed function 8: format cartridge. The display read CARTRIDGE FORM ? I pressed yes. ARE YOU SURE ? Yes. MEMORY PROTECTED. Oh, sure, I forgot. I pressed the cartridge protect selector. MEMORY PROTECT CARTRIDGE ON. I pressed off, then function 8. CARTRIDGE FORM ? Yes. ARE YOU SURE ? Yes. UNDER WRITING ! I stopped breathing. Then, after a few long seconds: FORMATTING END. I took a breath. It worked? I pressed the cartridge voice selector, then voice 1: INIT VOICE. Voice 17: INIT VOICE. It worked?? I saved the internal memory onto the cartridge, and after a few seconds of UNDER WRITING I found all my voices on the cartridge, and they sounded exactly as they're supposed to. I even switched the cartridge to the second bank, ran the same formatting exercise and ended up with a cartridge that had my voices on one bank and init voices on the other. It worked! Success! Oh, sweet success!! How can I ruin it. I need some rest. And another breath.


  1. Hi Ralph, very Nice projekt! Is it possible that you could post or Mail me your Final diagram, as I would be very interested to try it myself.

  2. Hi Ralph. This is very interesting indeed! Would you care sharing your PCB and BOM or selling some? I would like to have one of them for my DX7. Cheers!