Friday, April 15, 2022

Where was I? Ah, yes, the PX-8 RAM Disk

Before the shenanigans with my oscilloscope I was busy trying to repair the faulty PX-8 RAM Disk.

I was in the process of testing all the chips. And I have actually finished testing them all now. All chips are now working, either as their original chip or with a replacement. I managed to also check the EEPROM by using the S4 Dataman EEPROM programmer to dump the ROM and compare it with a version obtained online from the most excellent PX-8 resource located here.

Here's my spreadsheet (everyone loves a spreadsheet):

Chips.

Sadly, however, even with all of the chips installed, the behaviour is unchanged and the PX-8 screen sits with a sad cursor, flashing on an otherwise blank screen.

But now I have a working oscilloscope so I can check some waveforms! Yay!

Very quickly, I noticed something a bit strange. If I probed pin 2 or pin 14 of chips 17A or 17B (although only 'A' is populated for 60kb mode), the resulting wave was very dim and unstable and would suddenly revert to no signal, as if there was a 'crash' occurring on the board.

Interesting. Very interesting.

The pins 2 and 14 are the DI (Data In) and DO (Data Out) pins on the RAM chips. For each chip (actually pair of chips e.g. 17A and 17B) the DI/DO pins are tied together. This does sort of make sense since the data on that line and its direction is also dependent on other signals so if data is heading into the chip it is irrelevant if that data appears on the DO pin, and conversely, if data is being read from DO it cannot be read into the chip at DI unless the 'Write Enable' pin is also active.

And since there are eight RAM chips (or eight pairs with bank switching) this means that each chip/chip pair is looking after one bit of RAM. In this case, chips 17A and 17B look like they are looking after data bit '7'.

So, where does this combined line go to?  Well, it goes to chip 9B (a TC40H374P flip flop) at pin 19 and is a 'Q' input. It also goes to chip 8B (the other TC40H374P flip flop) at pin 18 which is a 'D' input. But it goes further. This line also goes straight to pin 13 on the Z80A which means that this line is confirmed as being specifically for data line D7. And it also heads over to pin 16 of chip 11C which is a bi-directional driver. Finally, it also runs to pin 17 of the EEPROM.

To check whether this line was fully connected was a simple case of doing a continuity check across the various points and pins on the right chips:

  • Pin 2/14 to pin 19 on chip 9B - CHECK
  • Pin 2/14 to pin 18 on chip 8B - CHECK
  • Pin 2/14 to pin 16 on chip 11C - CHECK
  • Pin 2/14 to pin 17 on the EEPROM - no continuity
  • Pin 2/14 to pin 13 on the Z80A - no continuity

At this point I thought I had found the problem, a broken trace that prevents reading/writing of data bit 7! Yes!

But. No.

Before I started soldering wires anywhere I just so happened to run the multimeter probe up and down the legs on the EEPROM. And guess what I found? Data bit 7 doesn't go to pin 17 on the EEPROM. It goes to pin 19. And pin 19 on the EEPROM connects to pin 13 on the Z80A. I appear to have found an error in the technical manual of this thing. Or possibly a different board revision. Or it could be that the pin allocations are just different depending on the EEPROM version (but would still need a different board layout).

Arse.

Back to square one. 

Today I decided that I would re-flow the solder joints on the 'Gate Array' chip (I shall call him Gary) since this is the only chip that is not in a socket and is surface mounted. This escalated into a complete removal and re-attachment. Definitely not a fun 45 minutes. Although this chip is quite chunky with fairly big legs for an SMD chip, it's at the absolute limit of my soldering ability and I just about managed to do it without lifting any pads. The re-attachment is not pretty but the legs are all connected as they should be.

Gary removed..


Sadly, this activity appeared to confirm my worst fears. After removing Gary I plugged the RAM board in and the results were exactly the same as before i.e. a sad, lonely cursor flashing on a blank screen. After re-attaching it, the results were again the same.

This says to me that it's 99% certain that Gary is dead. Poor Gary.

These units are pretty rare so this means that Gary is the purest form of unobtainium. 

But I refuse to give up!

So, let's do some more continuity checking. This time, I shall focus on the pins of Gary and the destination of all 80 of those tracks. I feel another spreadsheet coming on!


Gary re-attached - not pretty..


Two spreadsheets in one post. I'm spoiling you.


After a couple of hours I had discovered a couple more things. Firstly, two pins on Gary had not been soldered on properly and were still loose, most importantly pin 45. Secondly, there is no continuity between pin 45 of Gary and pin 8 of chip 11C. This remained the case after I had carefully re-soldered pin 45 back to the board.

Attaching a jumper wire from pin 45 of Gary to 11C was straightforward enough, but, again, this made no difference at all.


Bodgit and scarper..

On the plus side, with my newly repaired oscilloscope I began to poke around the Gary pins and found sensible looking outputs for a gate array. So perhaps Gary isn't as dead as I thought. 

I am getting desperate with this now. My next step is to de-solder all of the original RAM sockets and check for unseen damage under the board. Then, I shall replace the few through hole resistors that are on the board (one looks to have caught some battery leakage quite badly) and consider doing the same to the four or so transistors. 

Or I might just put it away for a while and think about other things... 


No comments: