edit:
The A530 firmware dump is available at http://mrz.boldlygoingnowhere.org/a530_dump.datI own an a530, and am trying to get a firmware dump. I didn't have a photodiode handy, so I tried a photoresistor. The signal looks completely different, but is still quite usable. Because the signal is different I've ended up writing my own script to replace adc.exe which seems to work well. However, dec.exe won't accept the output of my script. It says "read 0 bytes...", writes an empty dump.dat file and exits. I had a look at the source of dec.exe, but I don't know C so I'm kind of confused.

My script just writes the transmitted bytes directly to a file, including the header, address, and crc bytes.
Another problem I had, my dump is only 3107KB including the header, so it didn't transfer the 4096 kb blocks I was expecting. At the end it seems to have outputted several KB size blocks consisting entirely of 0xFF values. The batteries weren't low. Why would it have done that?
edit: On further inspection it seems the batteries might have died after all. They were freshly charged too. Curse the dismal battery life of the A530 model. Either I'll have to work out some sort of external power source, increase the baud rate to get it all transmitted before the batteries die, or use a blinker that will transmit it in parts like the G7 blinker. Though, if the 0xFF values represent filler bytes can I safely assume the rest of the dump would have all been 0xFF values too?
Btw, I'm using the blinker binary I downloaded, which defaults to the blue LED at 1600 baud. The capture I got took 5 hours. I'm working on figuring out how to compile my own so I can use the AF led at a higher speed. I might try a different transmission protocol since I can't seem to make a dec.exe-like script to figure it out.

Or, would buying a photodiode solve all of my problems and be so much easier?

The image shows the output of my script. The white is the actual signal, the red is how my program is interpreting it. The malformed bytes were because of a bad recording, my most recent doesn't produce any errors. In the background is the contents of my script output file in a hex editor.
P.S. I'll upload the firmware and post a link as soon as I get this to work.

edit: um, oops, I didn't notice the sub-board. Go ahead and move it. >_>