I own a near mint Commodore 1541 diskette drive that I only use for special occasions. At those times I drape my sweaty hands with white cotton gloves, gently release my original Montezuma’s Revenge diskette from its paper pocket and with my breath held I carefully place the delicate diskette inside the behemoth mouth. And I’m sweating bullets whenever the drive comes with its roaring ‘clack clack clack’ sounds because it has trouble finding the correct bits on the magnetically coated plastic disc… Truth is that I rarely use the diskette drive for a pretty good reason – I only own a few original game titles on disk and those are all collector’s items (at least for me they are!). Even though my original C1541 has been modded with JiffyDOS to increase loading speeds, it’s just not the most convenient way to load and save programs on the Commodore 64. As we all know, there are heaps of alternatives that kinda makes the old original diskette drive obsolete.
In this context several alternatives exist with different price tags and functionality. I am personally a big fan of the cheap SD2IEC mass storage solution that uses an SD card for data storage (e.g. games and programs) and interfaces with the IEC bus of the Commodore 64. It does not emulate the 1541 diskette drive completely, but it reads quite a few D64 and PRG files and it supports JiffyDOS natively! Nevertheless, currently the most sophisticated diskette drive emulator available is the 1541 Ultimate II+. This device should cover all your diskette drive needs and a heck of a lot more! So why would someone even challenge this device? Well, if the primary functionality of the 1541 Ultimate II+ could be emulated on cheaper hardware but without the lack of support that the SD2IEC has, then there might be a worthy competitor…
The pi1541 Device
Recently a new piece of hardware for emulating the Commodore 1541 drive has surfaced. It is called the Pi1541 and is a real-time, cycle exact, Commodore 1541 (and Commodore 1581) disk drive emulator that runs on a Raspberry Pi 3B (or 3B+). The software is free and the extra hardware (the ‘piHat’) needed to complete the device is pretty simple and relatively inexpensive. The Pi1541 provides an SD card solution for using D64, D81, G64, NIB and NBZ Commodore disk images on real Commodore 8-bit computers including the C64, the C128, the VIC20, C16 and the Commodore Plus4.
The device was created by Stephen White and all piHat drawings have been made available from his website. The current version is 1.18 and it now supports USB drives with FAT32 file systems. It will boot from the SD card and if a USB stick is inserted it will switch to it. More info can be found here (link).
My version of the Pi1541 came as a complete ready-to-go device and included a nice case, a RaspberryPi 3B+, PiHat, SD card, cable and SD card with programs.
Pi1541 vs. SD2IEC
Stephen White created the Pi1541 as he was a little disappointed in what the SD2IEC solution offers while the other FPGA solutions were too expensive for many users. He therefore started to implement a Commodore 1541 on a Raspberry Pi in order to reach his goal of making a highly compatible and relatively inexpensive SD card solution for all Commodore 8-bit machines. As the original Commodore 1541 diskette drive is a computer itself (with CPU, RAM, Kernal etc.) creating an inexpensive, cycle exact, SD card solution has taken longer than other systems.
The Pi1541 differs from the SD2IEC in several ways. Key is that it emulates both the 6502 (CPU) and the two 6522 chips (CIA’s). Any code it is asked to run is run in a cycle exact way. While the SD2IEC only supports a limited set of fast loaders by attempting to guess the fast loader from the code that is sent to it, the Pi1541 can execute code on its emulated 6502 core and therefore supports a vast range of fast loaders (games and demos) – even copy protected originals should run on the Pi1541 device. To be honest, this all sounds pretty good to me!
The device even has implemented a file browsing and selection system using the Raspberry Pi’s screen and keyboard. This way folders can be navigated and disk images selected and the Pi1541 behaves like a SD2IEC device. But once a disk image has been selected the Pi1541 drops down into full cycle exact emulation and compatibility is nearly 100%.
The Pi1541 Hardware
Several sellers on Ebay offer the piHat hardware for about 40-60USD and even cheaper as DIY kits. Lazy as I am, I simply purchased a completely finished product from an Ebay seller called despegatop. He makes a complete device with a beautiful grey case with the Commodore logo, Raspberry Pi 3B+, an OLED screen, a buzzer to resemble the original sounds of the C1541, an IEC cable and a preinstalled 8 GB SD card. On top of the case is a blue 128×64 dot OLED. All I had to provide myself was a 5VDC source to power the device. Thus, a mobile charger and a mini USB cable was all that I needed to get started.
The Pi1541 that I got looks like a small Commodore diskette drive with a button on the front and four buttons on the top of the device. Each button has different functions depending on the current mode of the Pi1541. A green and red LED light up when the drive is powered on and when data is being processed.
The price tag surpasses that of the 1541 Ultimate II+ cart from Gideon by a few Euros, so I was really eager to find out if I got some real bang for my buck. Could this be a true 1541UII+ killer? This is what I was about to find out.
Testing the Pi1541
The Pi1541 came with a pre-installed micro SD card with all the files and programs needed to get started. Didn’t want to make things too difficult, right? First thing I did was to misplace the SD card and we all know that back-ups are for sissies… After quite a bit of cursing and jumping about in anger, I pulled myself together and contacted the Ebay seller. He was very kind and provided a copy of all the files – thanks despegatop! I then copied all the files to a Maxell 16Gb SD card and managed to load a game of Commando before the SD card crashed. Like really crashed! It even made my PC crash whenever I inserted it into the SD card reader. The exact same thing also happened with the second Maxell SD card. Note to self, never ever buy SD cards from Maxell!! As I had a test to do, so in with another SD card. This time from SanDisk and I was finally ready to start my tests!
I went to the Pi1541 developer’s homesite and downloaded the latest version of the kernel software (V1.18). After inserting the SD card in the card slot in the front of the drive and switched the power on, the device finally booted!
The Pi1541 runs in two modes: SD2IEC mode (browse mode) and Commodore 1541 mode (emulator mode). In browse mode, the device works like a SD2iEC and the 5 buttons can be used to select specific files using the little OLED display on top. Switch1 = Select/start, Switch2 = move up, Switch3 = move down, Switch4 = exit folder and Switch5 = add disk. After a program or game has been selected, the file is run by typing the BASIC ‘LOAD”*”,8,1’ command on the Commodore 64. As soon as this is done, the Pi1541 enters emulation mode and acts exactly like a Commodore 1541 Diskette drive. The Pi1541 even has implemented the original drive sounds that the original C1541 has! However, I never managed to make it go ‘clack clack clack’ like the original whenever something went wrong during the readinc/writing process…
Loading a single file game or demo, as described above, is pretty straight forward. But what if I wanted to play a multi-sided disk game or demo? The easiest way to accomplish this is by making an .LST file (list file) like on a SD2IEC device. The .LST file is simply a text file in which the order of the multiple disk sides are listed. Thus, a two-side game named e.g. Huggar1.d64 and Huggar2.d64 will simply be written into the .LST text file and saved in the same directory as the two disk files. By selecting the .LST file using the FB64 program (CBMFileBrowser), all disk images in the file will be loaded into the Pi’s memory and the first one mounted. Depending on the number of images this may take a few seconds. You can now use the buttons (1-5) connected to the GPIO pins (the 5 switches) to swap between disks (disk 1-5). Disk side 2 is selected by holding down Switch2 while pressing one of the other buttons. The Pi1541 has to be in Emulator mode for this to work!
What about JiffyDOS? This I what I really liked about the SD2IEC as it supports JiffyDOS natively without doing anything special to make it work. The Pi1541 has a config.txt file in which other ROM files can be specified. While in Browse mode, the 5 GPIO buttons can be used to select specific ROM files specified in the option.txt file. If e.g. JiffyDOS is placed at the ROM2 position, holding Switch2 while pressing one of the other four buttons will change the current ROM to that. Pretty easy!
How much bang did I get for my buck and is the Pi1541 a genuine 1541 Ultimate II+ killer device? Well, that is really not that simple to answer. The specific version of the Pi1541 I bought had a super sweet looking case, an OLED, a RaspberryPi 3B+, an 8GB micro SD card (that I lost…) and an IEC cable all ready to be used without me doing anything. However, it has the same price tag as a 1541 Ultimate II+ (which is an incredible device on so may levels). While I think of the 1541UII+ as a ‘complete’ device with everything ready to roll out of the box, the Pi1541 is more for the computer enthusiast who likes to fiddle around with the hardware and don’t mind spending hours setting everything up to his or hers specific needs. The end result is nearly the same, but it is just a little more difficult to get there.
I really have to say that Mr White et al. have really added something incredible to the Commodore 64 scene! And kudos for making everything available as open source. I cannot even imagine what the Pi1541 will be able to do in 2-3 years time. But stating that it is a ‘1541 Ultimate II+ killer’ may be a little over the top. And what about the SD2IEC? Is the Pi1541 a better more versatile device? Sure! It’s also at least twice the price of a SD2IEC device when including the price of a RaspberryPi, the PiHat, the cable etc.
The big question is, will I use the Pi1541 instead of my SD2iEC and/or my 1541 Ultimate II? The short easy answer is no it will not. I really don’t play any games that cannot be run on a SD2IEC device. And if I ever want to run a demo or game that cannot be run on a SD2iEC, I simply use my 1541 Ultimate II. But the Pi1541 is most certainly a very nice product that is still being developed and maybe in the near future, its possibilities may surpass those of the 1541 Ultimate II+.
© breadbox64.com 2019