I ended up desoldering the ROM from the memory card and putting on 0.1" headers. After a healthy bit of debugging with an oscilloscope I read out the contents and for the first time, it looks promising!
This is what should be on the memory card:
ROM dump: Zooming in a bit:
That's looks like the fireworks and cowboy on there! I'm treating every 2 bytes as an x and y delta coordinate - so the reason for the long trail in the initial image, is there's headers or control bytes or thread specs that I'm treating as a stitch causing it to trail off. Next steps will be identifying those areas and parsing them
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
I regularly transfer sew files over rs232 from my win98 pc to a Scan n' Sew PC unit. I have both versions of the official janome rewritable memory cards. The first model has volatile memory (coin cell) and is not compatible with the scan n sew pc, only the first scan n sew model.
Would it be beneficial for me to try and record the data sent over the rs232 connection? I don't want to open either of the memory cards I have a they are rare where I live and I don't want to risk breaking them.
I've owned a Janome 9000 since I bought it new in 1998. It's a fabulous machine. I do have the reader/writer box, plus the scanner card that goes into it. It works with Customizer 2000 software on my windows 10 computer and I have a link to free download of that (below) plus written info that I'd be happy to share. I would LOVE to see any and all improvements you have or can make to the embroidery functions of this machine. There's a market for selling anything you develop since it's regularly bought and sold on EBay and other online venues. If, by chance, you can tell me how to make any of the readily available cards erasable, readable, writable, that would be fantastic .
Also, the largest area this machine can embroider is around 4" x 6". If that can be expanded somehow, you'd be regarded as a god.
PS. I only understand a small fraction of the work you've done but I thought I'd throw my 2 cents worth in here.
I have recently refurbished a Janome MC8000 and have been exploring the idea of creating an alternative to the Janome cartridge, something like a PCB card for sideloading .SEW embroidery data, akin to a printer PCB card.
I believe the concept is similar to Gameboy Homebrew Cartridges.
I've been conducting research for some time now and came across your project.
By the way, I wanted to inform you that the sewing community in Pakistan has been maintaining a family of early 1990s and pre-2000 Janome embroidery machines.
They have managed to salvage surplus cartridge develop their own embroidery pattern cards as seen in the video
The memory cards are read-only. I'd be making a new re-writeable card, graft the connector on to it, and give it a USB port so you can directly connect it to a computer. My next steps are to wire a logic analyzer onto the machine with the card in place and see how it reads the card. If you are able to instrument the scan-n-print to see what it sends, that'd be huge
Can we edit these cards? Have you progressed any further? Is there any blank off the shelf cards that could work? I resorted to the scan n print with blank card but would like to completely replace the hardware with arduino but cant find nothing to compare with.
@Lindsey - That would be really useful if you could record it!