To make it clear from the beginning: this is a (possibly) destructive method of reading ROM chips. The process of extracting and possibly a resoldering of the memory chip might fail. In my case I’ve tested it on two Sharp CE-150 PCBs I’ve declared to be spare parts. It is only a proof of concept as there are simpler non-destructive ways of ROM extraction on a Sharp PC. I was just curious and so I’m describing my experiences.
Well… At first I did not want to desolder the ROMs: I started with the intention to use a set of probes attached to the individual pins of the chip to read the content of the Sharp PC / CE ROM chips. This did not work due to the narrow leg distance of the QFP chips (0.8 mm).
Desoldering QFP chips can be done rather quickly with a hot air gun. At least that’s the most comfortable way I know of. I usually add some flux and in some cases larger quantities of leaded solder. The latter decreases the melting point and speeds up the process. I don’t care about solder joints as the chips and the pads can easily be cleaned after the removal. Excessive amounts of solder can be removed with flux and a clean soldering iron tip.
Breakout boards are a good way to access the individual pins of the QFP chip. I’ve tested two different ways of positioning the pin headers onto the board: on the top and on the bottom side. (Both have advantages and disadvantages.) In the first case you have easy access to the pins but without keeping notes I found it hard to follow the traces between a leg of the ROM chip and a pin. With pin headers on the bottom I always had to turn the board around. I would recommend to keep an unused breakout board just for comparison and use pin headers on the top side.
For reading out the content of the ROM chip I’ve used an Arduino Mega board – a smaller Arduino (e.g. Uno or Leonardo) does not have enough I/O pins. I think I could also have used one of my STM32 boards but decided against it – I wanted to keep the project as simple as possible . Another reason was that my Arduino boards were running at 5 Volts just like the PC-1500 / CE-150 chips.
At that point the project became frustrating… Besides unclear labels in the original schematic (pin 34 is AD7 instead of AD9 and AB should mean A13) finding the correct levels of the CE and CS pins required a bit of investigation and experimentation. Some are active high, some active low. At that point I also made a mistake in taking “a shortcut”: I adapted an existing Arduino sketch I found on Hackaday instead of writing my own C code in the first place. The first approach led to all kinds of timing issues, bits were dropped in a non-deterministic way…
I finally got it working by actually using real ATMega 8-bit ports instead of incomprehensible Arduino pin numbers and strict timing. the resulting dump was identical to a dump I’ve generated in an earlier approach. At least some satisfaction! 😉