Looking at the binary read out again, I notice a couple of issues:
1. Every 4 lines the text repeats itself - which is a 64 byte offset or that the A6 pin is not toggling
2. Every 8 bytes are repeating (half of the line), A3 pin isn't toggling
3. Sometimes the repeat parts aren't quite the same which indicates maybe a signal integrity issue (or power issue?)
Though I feel like I'm getting close. This memory card has the alphabet on there and this is close to that: Found some incorrect pinouts in the firmware :( Fixed that and still having issues but closer to an alphabet! Every other letter is 0xF1. Hmm .. pyembroidery makes is seem like I should be looking for 0x80 to indicate a control byte coming.
With the fixed pinout, I added A-1 back in and see saw the wrong deltas but the start of the file REALLY looks like a header: "832 DATA EXP L V1.0 R1.0" I'll keep address A-1 in.
So sew files only give deltas of movements, not absolute values so if my starting point or one byte is off, it messes up the whole image. With this, I decided to just plot the deltas, expecting on my card there to be a lot of back-and-forth movements.
First I tested on the known good file (downloaded from the internet):
Yep - I expected it to be a circle around the origin.
And my readout: that makes no sense. Something is wrong. Which sucks because the file opens with: "832 DATA EXP L V" which looks like it could be a header. Then a little further along, there's this in a sea of non-ascii characters: which looks very much like a version string. So I was hoping it would be right.
After some trial and error, I stopped using the A-1 address pin (which is suppose to be the LSB) and got this That looks good - because this card contains text, it makes since that there's only side to side and up and down motions. But converting to positions yield:
Flywired the memory card to 0.1" headers then jumpered them to an Arduino Mega.
Here's the start of it:
I'm using pyembroidery to parse the results. Looking online, everywhere said these should be *.sew files and thankfully pyembroidery has a parser so I can see how it works.
To test to make sure it works, Janome has some free design you can download and here's "Fairy and Ladybug": https://www.janome.com/inspire/Embroidery/fairy-and-ladybug/ And I get this on my readout: Lovely. But it's far too few points. Looking at the source code of the parser, it seeks the file to a magic number 0x1D78. Looking at the file in a hex editor, it's all zeros until that address. On my readout, it looks like the data starts at 0x3000 so I set it to seek there. Interesting point, my filler bytes are all 0xFF not 0x00
More points but not right. I'm expecting something like this (Memory 101 column):
The culprit. It's a 34-pin PCMCIA card (type I?). On inside is a few pull-ups and decoupling cap and a non-descript ROM
I ohm'd out power and ground and it didn't fit the standard pinouts for ROMs ICs or PC card / PCMCIA connectors. But after a bunch of digging and looking at old memory ICs, I found this:
Power and ground matched up and after ohm'ing out the rest of the pins, I'm fairly confident it's the right part:
- BYTE is hard-tied to ground means D8-D14 are high-Z and are not connected on the memory card
- Pull-ups are present on CE and OE
- A19 and A20 are not connected which makes sense, probably a lower capacity ROM
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies.
Learn More