This is the new version of my PET IEEE-488 diagnostics board.
It is designed to plug between a Commodore PET or Mini PET and an IEEE-488 bus device.
When the bus is in use, the LEDs will flash to show activity.
This is an update of my older version with an LED bargraph, I think the individual LEDs look better.
I have also updated the drivers, they are now using 74HCT245 chips to reduce loading on the bus signals. This also allows the LEDs to be lit when the signals on the bus are asserted (low), the previous version was inverted and the LEDs lit when the signals were inactive (floating high).
The input ranges of the 74HCT245 suit the IEEE-488 bus, with low and high being comfortably in range, and the input being tolerant up to 5V, although in practice, the bus voltage should not normally be as high as that.
State |
IEEE-488 Typical |
IEEE-488 |
74HCT |
LED |
Asserted (low) |
0.22V |
0.4V (max) |
0.8V (max) |
On |
Released (high) |
3.4V |
2.4V (min) |
2.0V (min) |
Off |
I have used a mix of red and green LEDs, although you can use whatever you prefer.
There is now also space for a pin header to be installed to attach a logic analyser to debug signals on the bus, if you happen to be developing a new IEEE-488 bus device (who me? you might think that, but I couldn't possibly comment)
Diagnosing PET IEEE-488 Bus Faults
The following section is extracted from a previous post, updated to cover using this new board.
All of the Commodore PET series of computers have an IEEE-488 port, used for disk drives and printers. (I checked all of my PETs, and none of them seem to be labelled, but imagine it says IEEE-488 over that port)
There are quite a lot of elements that go to making up the port, and thus many things that can go wrong. It is a parallel 24 pin bus, with 8 data pins, and 8 handshaking lines, and 8 ground pins.
Close by the port, there are three MC3446 buffer chips, and next to that a 6520 PIA. You might think that with more than 16 IO pins, that 6520 would be enough to drive the port, but that's not the case.
It is arranged so that each pin on the IEEE-488 port is connected to two IO pins, one to drive the pin, and one to read the values. So as well as all the pins on that 6520, it also uses a number of IO pins on the other 6520 (near the keyboard connector) and the 6522.
REN is not used, the PET is always going to be the bus master, so it is tied low. IFC is only an output, and SRQ only an input.
Signal |
Read |
Write |
DIO1-DIO8 |
PIA#1 PA0-PA7 |
PIA#1 PB0-PB7 |
EOI |
PIA#2 PA6 |
PIA#2 CA2 |
DAV |
VIA PB7 |
PIA#1 CB2 |
NRFD |
VIA PB6 |
VIA PB1 |
NDAC |
VIA PB0 |
PIA#1 CA2 |
IFC |
N/C |
Reset buffered through 7417 |
SRQ |
PIA#1 CB1 |
N/C |
ATN |
PIA#2 CA1 |
VIA PB2 |
REN |
N/C |
Tied low |
In the above table, there are three main chips referred to PIA#2 is the 6520 nearest the keyboard connector, PIA#1 is the other 6520, nearest the IEEE-488 port, VIA is the 6522, usually between those two.
The IEEE-488 bus is one part of the PET which didn't change from the 2001 up to the 8032, and with a few minor changes onto the later CBM-II machines.
This two way circuitry does make it possible to do quite a lot of testing from the machine itself. If you read back the value of a pin, then change the machine output and read it back again, you can see if it has changed. The 8 data bits are the easiest to start with, whatever value you write to address 59426 is written to the port, so:
POKE 59426,0
will set all the outputs low (all LEDs should be on). Writing 0 to one of these outputs pulls the bus line low, this is the 'asserted' signal, and means it is active (LED on). When no device is asserting that signal, the line is pulled high by pull up resistors, 'released' to high, and the LED will be off. Nothing should ever drive the bus high, all they do is let it float high or pull it low.
To read back from the port, type:
PRINT PEEK(59424)
That should show 0. If it does not, there is a problem with PIA#1 or one of the MC3446 buffers. You can then try various other values up to 255 which should have all the output lines high (all LEDs off).
Testing other pins is a little more complicated, this table shows the values to poke and peek at.
Pin |
Write 0 (Assert) |
Write 1 (Release) |
Read value |
DIO1-DIO8 |
POKE 59426,0 |
POKE 59426,255 |
PRINT PEEK(59424) |
EOI |
POKE 59409,52 |
POKE 59409,60 |
PRINT PEEK(59408) |
DAV |
POKE 59427,52 |
POKE 59427,60 |
PRINT PEEK(59456) |
NRFD |
POKE 59456,253 |
POKE 59409,255 |
PRINT PEEK(59456) |
NDAC |
POKE 59425,52 |
POKE 59425,60 |
PRINT PEEK(59456) |
ATN |
POKE 59456,251 |
POKE 59456,255 |
PRINT PEEK(59425) |
This can be useful to identify which pins are working, and any that are at fault. It does not show if the problem is the output pin (or it's associated buffer) failing to drive the output low, or the input pin (or it's associated buffer) failing to read back the state correctly.
You can check this with a multimeter on the pins of the port, but it is easier to use the PET IEEE-488 Diagnostic module and monitor the signals on the LEDs.
If the LEDs do not change when you poke values, then the problem is either the MC3446 or the PIA/VIA chip driving the output. You would need to probe the signal between those chips to see if that is changing to see which it is.
If the LEDs are changing, but the values read back, then the problems is either the MC3446 or the PIA/VIA chip reading the input. Again, probe the signal between the chips to see which is at fault.
I should have done this last year when I designed this updated version of the boards and got them made, but you know how it is.....
A tweet* yesterday from Ian Scott Johnston showed a similar board he had made for the GPIB interface, and reminded me I needed to write this up.
* what am I supposed to call them now, "a post on X"?
If you don't know Ian, you should check out his YouTube channel for some great test gear repair videos.
https://www.youtube.com/@IanScottJohnston
Advertisements
I have listed these on SellMyRetro, it is not (currently) possible to use a dropdown to select different options, so I have listed the PCB only, full kit and assembled versions separately. All include the board to tap power from the datasette, although you can use an alternate 5V DC supply if you wish.
PET IEEE-488 Diagnostics Assembled
https://www.sellmyretro.com/offer/details/63989
PET IEEE-488 Diagnostics Full Kit
https://www.sellmyretro.com/offer/details/63987
PET IEEE-488 Diagnostics PCBs only
https://www.sellmyretro.com/offer/details/63988
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.