This MCD Card Test Rig was something I patched together using an Arduino 2560 board and a trimmed-down MCD Card connector from an SY55 PCB I got from the Bay.
Primarily I wanted to build this so I could pull the data from the Voice ROM Cards that compliment the Waveform card sets for the SY/TG/RM/RY etc series and write that directly into an MCD card or the Sector101 Datablade card.
I could already pull the data from Voice ROM cards using an EPROM reader (Mini-Pro TL-866) with a suitable adaptor but this did not work for MCD cards. Also it could not write data to MCD cards as the write protocol for SRAM is different than EPROM.
Arduino 2560 to the rescue! These are ideal for this type of thing as they are based on the old-type 5V logic level signals. The MCD card (as with all the old SY/TG synths) are 5V logic as well so no signal level-shifting needed – just join them up and go! There are 54 I/O’s on the Arduino so more than enough to interface with the MCD card’s parallel interface. I also use the Arduino 2560 board as the programmer unit for the Sector101 Waveblade card and for a test rig for the Sector101 EXFLM 16MB Kit.
The interface to the software is very much like the Waveblade Programmer interface – a CLI based system where commands are typed in. The Arduino works through a virtual COM port using a USB connection and connects to a terminal emulator – in this case Tera Term.
The long screenshot below shows some of the commands in action:
The commands used in the screenshot are:
CHK64 – Calculates a simple 64-Bit checksum for a 64KB card. The card inserted in the rig had been freshly formatted by the SY85 and the software has been written to detect this.
HDP – Generates a Hex Dump of a specified memory area. In this small area of memory the string “SY85” can be seen in the ASCII column. Any unprintable ASCII is shown as dots. A checksum is generated for the specified memory area.
BT – Reads the Battery Voltage. Uses the Arduino ADC to display a battery voltage reading.
WP – Reads the Write Protect switch. The Write Protect switch in an MCD card does two things. (1) It tells the synth that the switch is in the WP position and (2) prevents the write signal (/WE) from reaching the card’s internal SRAM ICs.
AT64 – Runs bit pattern tests on a 64KB card. This writes a byte to an address and reads it back to verify the cell. All addresses are checked with values OxFF, OxOO, blocks of sequencial OxOO thru OxFF, then OxFF thru OxOO. Finally each pair of bytes is written with the 16-bit address location of the pair for the full 64KB and then all of them are read back again. This is performed twice – writing the address location to the pair as Low-High, then High-Low. If there was a fault in the address signals then the first four tests may still pass but the address test will pick it up. I removed the card and ran the test again. The “Read Write All Locations OxFF” test still passed because the data pins are pulled-up by the Arduino so they will read as OxFF. Of course everything else failed!
FS – Fills a specified memory area with a string of ASCII character. Here I have filled the whole memory (OxOOOO thru OxFFFF) with the string:
“Hello World ! I am a Sweet16 😉 ”
The Hex Dump shows the string repeating in the block OxOOOO thru OxO1FF.
Other commands are available that perform these tasks:
- Program the card from a binary file.
- Dump out the contents of the card to a file
- Check the Card-Present signal.
- Erase the card – fills it with OxFF
- Read & Write a single address.
- Fill a range of addresses with a single value.
- Predict this week’s Lotto numbers. Yet to be implemented 😉
Battery & Data Retention Experiment
Anyone who has used an MCD card knows that if the battery is removed then the contents will be erased. This is true but just what length of time is needed for the data to be compromised?
For this experiment I used two standard MCD64 cards, the S101 Datablade card, and the S101 Sweet16 modified MCD card.
Each card (or card bank) was formatted in the SY85 and will give the checksum OxOO24D376 if the data is intact. The batteries were removed from the cards then the cards removed from the test rig. After various lengths of time the cards were replaced into the rig and the checksum, well, checked.
First up were the two standard MCD 64 cards.
These both gave similar results. Around the 2 minute mark the data started to fail with just a few bytes at first. After 3 and a half minutes the data appeared to want to settle to a pattern like this:
FF FF FF FF FF FF FF FF OO OO OO OO OO OO OO OO
Two minutes is not bad at all. Plenty of time for even the most ham-fisted player to replace a battery and keep their voice data.
Next up was the S101 Datablade card.
With the larger memory IC drawing a standby current of around 1.9uA verses the standard MCD’s 0.2uA a shorter retention time was expected. The result was certainly not expected.
After 5 minutes the data in all 16x 64K banks was still good. Only after 6 minutes did it start to degrade – first in a couple of banks, then affecting them all.
Two possible reasons for this could be that the Datablade memory IC has a lower retention voltage than the MCD memory IC, and that the Datablade power circuit has 40uF to fall back on opposed to the MCD’s 10uF.
And finally the original S101 Sweet16 Card (in the photo at the top of the screen)
I know from testing these that the standby current can vary from 8uA to 14uA so a long retention time was not expected. These cards used a different version of the 1MegaByte memory IC for the 16 banks. With the standard MCD 10uF cap in the power circuit the retention time was not going to be long.
After 10 seconds the data started to degrade. First in a couple of banks, then all banks.
A battery swap in that time is still possible. Get the replacement battery ready on the bench, open the cover on the card. Whip the old cell out and put the new one in – all in one movement. This will take no more than 3 seconds. Cover back on, job’s a good one 🙂