PIEEE-488

The PIEEE-488 is a Raspberry PI hat designed to emulate the old style dual floppy drives for the Commodore PET. At least that’s the idea. In the week off work between Christmas and New Year, I was casting around for something to make, that would ideally also make use of the Python programming language (which I’m in the process of learning for my day job). Remembering the PI-1541 kit that I built recently, I figured that something similar utilising the IEEE-488 (GPIB) bus for the PET might be fun to have a go at.

I don’t anticipate finishing it in the week I have available, or even getting very far necessarily. But if I can demonstrate some data transfer between the PET and the PI by the end, that’ll be a nice goal to achieve.

I should state before I go any further that I am aware that there are already GPIB hats for the Raspberry PI. Those devices generally seek to talk to an instrument on the GPIB bus, whereas mine seeks to be the instrument (well, disk drive) on the GPIB bus. Anyhow, because the interface is basically just 2 ICs sitting between the GPIB connector and the PI’s GPIO pins, our devices will necessarily be similar in the bus portions. But I have not attempted to copy or duplicate any particular hat.

In software terms, there also exists open source code for the SD-2-PET style devices, written in C – NODISKEMU. Although this is targeted at the ATMega, for sure it would be possible to create a fork and target this hardware. But as I said at the top, I’m learning to code in Python, and this project is as much a learning experience as anything else. It might turn out that Python is wholly unsuitable (although I suspect its problem is likely to be just that it’s “a bit slow”), in which case the fork is still an option for the future.

In the same style as the Pi-1541, some extra hardware is necessary for the “floppy drive” portion of the project. The PI is driven by a micro SD card, so that can be used to store the disk images and files that the drive will use. In addition we’ll need some push button switches, LEDs and an OLED screen to form the user interface. These will be driven by the I2C pins of the PI’s GPIO bus (because the IEEE-488 interface uses almost all the available I/O pins, we’ll need to add a GPIO extender IC to our BOM. This will give us an extra 16 I/O lines). I did initially think that dual drives would require dual OLEDs – one for each drive. This adds an extra complication in that the OLED panels have an I2c “address” which would need to be changed on one panel. Not all panels have this ability, and those that do require intricate desoldering of a tiny surface mount resistor. Again, there are multiplexers that can be added to solve this problem in software (at a few quid extra cost). But I wonder if the second screen is really necessary? Please feel free to comment.

So, if this proof of concept works, the next step will be to take it to a PCB. And of course I shall be using my sponsor for the video, PCBWay to produce them. They have a 24 hour turnaround time once the Gerber files are checked, and prices start at just $5 for 10 boards, so check them out.