Sunday 19 April 2020

Commodore 64 IEEE-488 Cartridges and the SD2PET future

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

Today I answer one of the important questions of our generation. A question that literally no one has dared to ask. Can you use an SD2PET future with an IEEE-488 cartridge on a Commodore 64?
The answers is sort of. It does sort of work, but not well enough to be much use. Let me explain further.
This is a DAMS IEEE-488 cartridge. It may looks like a VIC20 cartridge case, because it is a VIC20 cartridge case, but it does plug into a C64. I have used the same technique myself for things too big to fit into a C64 cartridge case, like the prototypes of the Marina 64 cartridge.
They seem to have taken it a step further, and have designed the board so that they can make either a C64 or a VIC 20 version and just cut off the bottom part of the board with the C64 edge connector on.
The contacts were a big corroded, so I ended up retinning all of them to get a nice clean connection.
That was a case of using fresh solder and extra flux to clean and tin the pads, then removing most of the solder leaving a clean flat contact surface.
I presume the VIC20 version would have a different ROM image, here there is a 2532 ROM with a label that says C64 IEEE V.35 I think.
The rest of the chips are a 6821 IO chip, which gives two 8 bit parallel IO ports and a few extra handshaking lines. The 6821 is essentially the same as the 6520 used in the PET, an earlier, simpler version of the 6522 and 6526 chips used in the VIC20 and C64.
There is also a pair of 75160 and 75161 IEEE488 bus drivers, so this should be properly compatible with the IEEE-488 bus specification. I have seen some C64 IEEE-488 cartridges that do not contain IEEE-488 bus drivers, and those will probably not work reliably with something like the SD2PET future.
Notice the 75160 is marked made in England, you don't see many of those. The rest are the usual Portugal and Malaysia. The board is marked Ferranti LTD 15 April 1983 (happy 37th Birthday for last week).
On the back it's marked copyright RAMS 1983. The back also has a nice soldermask, which is missing on the top side of the board.
With all that cleaned up and the ROM dumped, I gave it a go.
The ROM autostarts, and adds a DAMS IEEE CARTRIDGE banner to the screen. I couldn't see that string in the ROM dump, so it's probably encoded somehow.
OK, power off and lets wire up the drive. The SD2PET future plugs into the edge connector at the top, the same as the one used on the PET.
The power connector didn't reach, so I had to make an extension for the power cable. I used a userport cable to supply the power, you will see why later.
That all sticks out quite a way behind the C64, that is as far in to the cartridge bay as it goes. That's an awful lot of exposed traces, not very keen of that.
Powering it on, it looks promising, LOAD "$",8 loads a directory listing as normal.
You can load simple programs like this 10 PRINT favourite
But, anything that requires multiple file loads, anything that doesn't use Kernal routine, any fast loaders etc. all of those will probably not work due to the way it integrates with the C64 Kernal. There are some functions which are not vectored which means they cannot be replaced by a cartridge ROM and are hard wired to use the IEC bus, so anything more complicated than plain LOAD and SAVE will probably not work. There are also potential issues with memory at the same address as the cartridge ROM, The only way to do it properly would be with a replacement Kernal ROM rather than as a cartridge.
I tried various browsers. the normal file browser FB / FB64 etc. worked. I tried CBM commander and the splash screen loaded.
but both SDBrowse and CBMCommander locked up trying to read directories. So they were hitting the issue of either custom disk access routines, or using the non-remappable Kernal routines which will not know they need to talk out the cartridge port to an IEEE-488 bus rather than the usual IEC bus.
I was interested to see how it would cope with IEC devices used at the same time, so plugged one in (which is why I left the datasette port clear for power).
OK, it's getting quite congested back there, that's an old SD2IEC which has been set to act as device ID 9, and that does work as expected. The IEEE-488 drive is ID 8, and if the IEC device is also ID 8 it will be ignored, but if you set the the IEC drive as ID 9, you can access both of them at the same time.
I did notice it was a lot faster loading things from IEEE-488 compared to IEC, approximately 30 seconds to load Rodman from IEC and 5 seconds from IEEE-488, so that is an advantage. This sort of thing would have been used back in 1983 to attach big old PET drives or the newer faster SFD-1001 type drives to a C64 for BBS work. Fast access to lots of plain files. For that it should work well.
If you want to load cracked games with custom fastloaders, forget it. With so many thing won't work and your desk will be such a mess that I really couldn't recommend it.

So, in conclusion:

  • Can you do it? - Yes
  • Does it work? - Sort of
  • Should you do it? - No