Thursday, 8 January 2015

Commodore 8032 and 4032 GPIB IEEE-4888 Repair

This is a follow up to the previous post about the fun I've been having with Commodore disk drives using GPIB or IEEE-488. The problem was I'd been restoring an 8250 dual disk drive, and couldn't tell if the lack of response was due to the 8250, the cabling or the computers I was plugging it into. I had thought the issue would be the drive, since I wasn't getting a response from three different computers (two 8032's and a 4032).
In the previous article, I'd tried to convert a 1541 IEC disk drive into a 2031 IEEE-488 disk drive. That didn't work either, so I suspected the Pets. I then built a USB to IEEE-488 interface and found that actually, the 8250 was working but everything else wasn't. To rule it out, and since I will need one anyway, I built a second Pet to IEEE-488 cable, that didn't make a difference.
So now I know the issue is actually three Commodore Pet computers that have a faulty IEEE-488 port. There are a few parts to the interface, the IEEE-488 bus is attached via three MC3446N quadruple bus transceivers, and one gate of a 7417 open collector buffer. Each of the 4 channels on the MC3446N has a bus pin and a read output and a data input. This means each of the 8 data pins and the 5 handshaking lines used actually need 2 I/O pins each. The 8 data line reads and writes are provided by the top 6520 PIA, and the handshaking lines by spare pins on the lower 6520 PIA and the 6522 VIA.
I had already tried replacing the VIA and the PIAs, and had ruled them out, so it was down to the three bus transcievers or the buffer. It's difficult to check three pins for each line on the scope or logic analyser, although it looked like most of the pins were doing something. The MC3446N is no longer manufactured, and I couldn't find a drop in alternative, I did have some chips removed from a spare board, but didn't know if they worked either. I could try swapping them around until something worked, but I wasn't happy with that idea. My EPROM programmer can test certain chips, and I did use it on the 7417, which passed, but it didn't have a mode to test the MC3446N. So I tried something else.
I took one of the spare MC3446N chips, wired it up to an Arduino and wrote a little test program to test each gate by writing high and low and reading back from the bus and the read inputs. The results were written to the serial monitor (b=bus r/w pin, r=read pin, d=data write pin). This worked very well and the spares were all working. It's by no means a complete test, but should identify major failures.
Testing channel 1
b=0, r=0
b=1, r=1
d=0, b=0, r=0
d=1, b=1, r=1
-----------
Testing channel 2
b=0, r=0
b=1, r=1
d=0, b=0, r=0
d=1, b=1, r=1
-----------
Testing channel 3
b=0, r=0
b=1, r=1
d=0, b=0, r=0
d=1, b=1, r=1
-----------
Testing channel 4
b=0, r=0
b=1, r=1
d=0, b=0, r=0
d=1, b=1, r=1
-----------
0 errors - PASS
===============================
I removed and socketed one of the chips and tested that. On this one, the second channel repeatedly failed to pull the bus low. This is the D3 line.
Testing channel 1
b=0, r=0
b=1, r=1
d=0, b=0, r=0
d=1, b=1, r=1
-----------
Testing channel 2
b=0, r=0
b=1, r=1
d=0, b=1 - ERROR, r=1 - ERROR
d=1, b=1, r=1
-----------
Testing channel 3
b=0, r=0
b=1, r=1
d=0, b=0, r=0
d=1, b=1, r=1
-----------
Testing channel 4
b=0, r=0
b=1, r=1
d=0, b=0, r=0
d=1, b=1, r=1
-----------
2 errors - FAIL
===============================
Excellent, I like to be able to point at something and say it's definitely faulty. I replaced that with one of the spares and tried it out. I started getting responses from the drive, but they weren't right. This is the result of DIRECTORY
Everything was on a separate line, and it wouldn't load anything. So I removed the other two chips and found another was faulty as well, failing on channel 4, that was D6. Once that was replaced, I started getting proper responses.
That's what it's meant to look like, all on the same line.
I found one bad chip on the 8032 (I think it was D2) and now that was working as well. The third Pet, another 8032 was showing 'device not present' errors, rather than 'file not found', so I suspect it will be the left hand MC3446N, the one that does the handshaking. I'll check that later.
With both machines now accessing the drive, I was able to test it further. Formatting a disk took a while, as this is uses 2.12MB disks (both sides as a single volume), compared to the 340K per side of the 1541.
These are 5.25" quad density disks, DS/4D, not very common, but I did find a box.
.
Loading back also worked fine with the simple 'Hello World' test, but further testing showed there were some problems with the 8250.
I did load some games (forgetting the 8032's monitor couldn't cope with the sync changes in some games), but that was nothing to do with the disk drive. Some of the files didn't load, and at one stage the disk got corrupted. The 8250 needs further work, but that is only to be expected, after fixing the power supply issues, the rest is untested and their may be further problems (memory perhaps?).