Sunday, 25 February 2024

Commodore PET 2001 Repair Part 2 - IEEE-488 Bus

In the previous post, I got the PET 2001 to the stage it was running, and could load from cassette. However, the IEEE-488 port was not working, the usual "?Device not present error".

As part of some of the other testing, I had already swapped out the easy to replace socketed chips, the 6502, 6520s and 6522 for known working chips, but the problem was still present.

I was concerned about some rather dubious work that had been done in the past on some of the chips related to the keyboard 6520 and the 6522.

I was starting to think I was going to have to undo a lot of that work, clean up, repair traces and through hole plating and refit. However, before I tackle any of that, I'd like to check with the IEEE-488 diagnostics board in case it is something else.

This has sixteen LEDs which light to indicate which of the sixteen signals on the bus are currently active (active = asserted = driven low; inactive = not asserted = floats high)

The first test is to reset the PET, and see the IFC LED lights briefly and then goes out, which it did.

REN is always lit as the PET has this hard wired to ground, so it acts as a sort of power LED. SRQ is not driven, so floats low, and registers as active.

The IEEE-488 bus is implemented on the PET using two pins for most of the signals, one to write, and one to read. These two signals go to the MC3446 buffer chips, and out to a single pin on the IEEE-488 bus connector.

The result of this is you can sort of get it to test itself, by writing to the output pins and reading back on the inputs to see if they change. A single bus signal is shown as an example. PB0 writes to the bus via one of the MC3446 drivers, and this is read back though another MC3446 buffer to PA0.

For more information, see this previous post - http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html

I got lucky first time.

I wrote all zeroes to the data port, which should have asserted all 8 data signals and lit all 8 green LEDs.

Four of the LEDs have changed correctly, but the other 4 have not changed.

Completing the cycle confirms the problem, When it should be 0 ($00), it is 32 ($20), and when it should be 255 ($FF), it is 47 ($2F). It is easier to think of these in hex, as that more easily translates to binary. So again, this is showing the lower 4 bits are working correctly, and the upper 4 are stuck with 1111 on the bus and reading back as 0010.

The 2001 has a lovely hand drawn schematic where they clearly ran out of room and had to squash up the last of the signals on the bus.

Looking at the schematic, the four bits that are not working are controlled by the MC3446 at A8, the middle of these three chips. At least two of which appear to have been changed already as none of them match. Based on the soldering, I guess this was long before the other "repair" work that had been done on this board. The four working data lines and control lines use other chips, so it points to that one chip being bad.

I double checked with the 'scope. The signals on all 8 bits were changing on the output of the 6520, and the other MC3446s, just nothing on the middle MC3446.

I went through the other signals, and all the other signals were responding correctly.

IFC couldn't be lit with the rest as that is driven from the reset line (and has been previously verified).

(note EOI out is used on the 2001 to also control video blanking, so when it is active like this, it disables the video until you deactivate EOI or reset the PET)

Time for a new MC3446. I don't have many of these left. Hope I don't have too many more faulty PETs to deal with.

And it is possible to replace it without damaging traces or wrecking the board.

Everything seems to be still intact.

Time to repeat the tests.

And there we go, all data bits responding correctly.

Time to try an SD2PET.

Always fun to see all the LEDs flashing away when things load.

And this time I loaded Invaders.

That all seems to be working.

This was with a variety of replacement parts, time to put all the originals (or nearest we have) back.

Original 6520 reinstalled. Still working.

Non-original Synertek 6522 reinstalled. Still working.

Non-original MC6821 (or whatever it was before it was remarked) reinstalled. Still working.

Fake 6502 (or also whatever it was before it was remarked) reinstalled and still working.

I am leaving the PET ROM/RAM in place as the original ROMs had failed and there is no more than about 4K of working 6550 RAM chips.

Speaking of which, the last thing to be replaced were two working 6550 RAM chips for the video RAM, scavenged from the main RAM.

And that is everything back in place. Time for some more testing, a quick bit of Tut-Tut.

Everything seems to be working now, so I will give that a bit more testing and then it is ready to go back...........

Hmmmm, I don't remember spikes on the walls in 3D Monster Maze.

I wired up a new logic analyser I have been testing, to try to verify this is what I think it is (a similar problem to that seen on the Minstrel 2 which is inherent in the ZX80 design).

But it appears it does not want to play ball today.

OK, I think there may be a part 3.

How ironic, back to where we started. "HW_no_device_found", the modern equivalent of "?device not present error".


Advertisements

SD2PET

Special offer: There is currently £25 off the SD2PET. This is on backorder, which means TFW8b has all the bits to make more, but they have not yet completed the process of being built, programmed, tested, cased and tested again. But you can order safe in the knowledge that they will be ready to ship shortly. The discount will be removed once they are in stock, so act quick if you want a bargain.

https://www.tfw8b.com/product/sd2pet-commodore-pet/

PET ROM/RAM

As mentioned above, many PET faults are down to bad ROM chips or bad RAM chips, and a PET ROM/RAM chip can often help bypass those. You can order one from The Future Was 8 bit.

https://www.tfw8b.com/product/commodore-pet-rom-ram/

More info in a previous post:

http://blog.tynemouthsoftware.co.uk/2022/08/testing-pet-rom-ram-boards.html

Mini PET B

Or if you want an easier solution, the Mini PET B is a drop in replacement for a PET / CBM 40 column 32K motherboard.

More info in a previous post:

http://blog.tynemouthsoftware.co.uk/2023/10/building-a-mini-pet-b-kit.html

Mini PET B at SellMyRetro:

PET IEEE-488 Diagnostics

The PET IEEE-488 Diagnostics module is available from my SellMyRetro store, in assembled or kit form.

More info in a previous post:

http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html

PET IEEE-488 Diagnostics module at SellMyRetro:

PET Diagnostics

The PET Diagnostics modules are available from my SellMyRetro store:

PET Dual Userport Joystick

I have recently revived the PET dual userport joystick, as a through hole version, available from my SellMyRetro store:

Patreon

You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.

https://www.patreon.com/tynemouthsoftware