This is part of a series of posts for the Retro Challenge 2018/04. See my index page for the other posts.
In my last post, I had tried to get my Gotek/HxC USB floppy emulator working reliably with my Osborne computer.
For some reason the drive select signals from the Osborne weren’t getting through correctly to the Gotek/HxC.
This meant I couldn’t use a physical drive at the same time as the emulator (for example to copy files between real and virtual disks) as the computer couldn’t select between the drives.
Today it was time for a different approach.
First, a little history.
I constructed my USB floppy emulator last year as part of the Retro Challenge. At the time, the emulator that was compatible with the most different retro disk formats was the HxC. That was originally on dedicated hardware.
But then the Gotek floppy emulator came on the market, a cheap and cheerful piece of hardware from the Far East. This originally emulated just PC-style floppies.
Some Amiga users worked out how to flash the firmware to expand it to work with the Commodore Amiga computer (and named the revised firmware Cortex).
Then the author of the HxC system also ported his firmware to the Gotek hardware. You needed to licence the firmware from him, but even with that cost, it was significantly cheaper than the dedicated HxC hardware. That was the system I used.
I don’t begrudge the licence payment, as I’m very happy for people to be remunerated for their work. But it was a shame that the HxC firmware wasn’t open-source. There were features lacking in the HxC firmware (e.g. sound emulation, rotary encoder support). If it had been open-source I would have added those features myself, and fed the changes back.
But because it was closed, I had to add an Arduino alongside the Gotek hardware to fill in the missing bits. (The source for these mods is available here.)
Fast forward a year. It seems others were also frustrated at the lack of progress from a closed-source product, and a rival firmware came on the scene: FlashFloppy. This is now almost as mature as the HxC firmware, and is free and open-source.
It’s interesting that this seems to have spurred on development of HxC too, as the missing features added to FlashFloppy (sound and rotary encoder support) have now also been added to HxC. It seems having a competitor is good for the ecosystem :-)
I found out about FlashFloppy a few months ago. I thought I’d like to give it a try, but didn’t want to re-flash my Gotek hardware in case it broke something. So I ordered another Gotek drive from China.
Last week the new Gotek drive arrived. I was in the middle of the Osborne restoration, so I put it to one side.
But since my original Gotek wasn’t fully working with the Osborne, it got me thinking. Here I had another Gotek to compare it to.
Perhaps it was worth getting the second drive working with FlashFloppy and trying that to see if it worked any better?
So that was the new plan!
First off, let’s open up the new Gotek drive:
To install the FlashFloppy firmware you need programming headers on the circuit board (which aren’t installed by default). So a bit of soldering later…
Now to re-flash the firmware using a 3.3V USB to serial adapter:
My USB serial board has an extra wire soldered on for the 5V power supply from the USB, so I was able to power the Gotek from that during the flash process:
I was using a Mac, so used the stm32flash program designed for Linux. I was amazed that downloading it and typing ‘make’ built everything correctly with no errors and no missing dependencies! I’m so used to having to fix problems with UNIX/Linux programs ported to Mac OS, so that was such a refreshing change :-)
Now to do the actual flash:
Wait – that was it? It took about 30 seconds from start to finish!
When I flashed the HxC firmware last year, it took me all afternoon. That’s because it insisted on some stupid software that downloaded the firmware from the internet while it flashed it (apparently for copy-protection reasons) and it really didn’t get on with my cheap USB serial board. One more tick for the open-source solution!
Currently this Gotek has the built-in 3 character LED display. The firmware can also use a high resolution OLED – and I ordered a couple of those at the same time as the Gotek drive. But they’re still on a slow boat from China :-)
So I’ve now got a working Gotek/FlashFloppy drive. Let’s test it with the Osborne.
Plugging in my trusty hacked extension cable:
And it works! And can select between a physical and a virtual drive :-)
(As an aside, this “calender” (sic) program on my Osborne disk image seems fully Y2K compliant!)
So I’m still not sure why the other USB drive didn’t work. My theories include:
- different revisions of the Gotek hardware
- a fault or damage with the Gotek hardware
- interference from my extensions to the Gotek hardware
- a problem with the HxC firmware
I could investigate further, but given I’ve got something that now works correctly with the Osborne, I think I should quit while I’m ahead!
Next up, make the Gotek/FlashFloppy drive a bit more refined for long-term use.