When I first started collecting vintage computers, I promised myself that I wouldn’t buy floppy disk drives – they’re expensive, they’re unreliable, they take up a lot of room, and there are a range of modern equivalents available for loading files (such as the SD2IEC), so what was the point? Then I ended up getting one, and then another, and another one – since then I’ve accumulated quite a selection of Commodore 5.25″ and 3.5″ FDDs, so it seems that my promises aren’t worth much.
The Commodore 5.25″ line of FDDs are, effectively, computers in their own right – they have their own 8-bit CPU (usually a 6502 running at 1MHz, the same as in the VIC-20 computer), their own ROM (usually 16KB) with their own operating system (CBM DOS), their own RAM (usually 2KB), and their own I/O control (usually two 6522 VIAs, the same as the VIC-20 computer). This makes them large, heavy, and expensive – many cost more than their counterpart computer did back in the day, meaning that they were often out-of-reach for the average user and, as such, they were not very popular in Europe.
Despite all of their processing power, the 1541-series were nail-bitingly slow due to a fatal flaw: they were designed to be backwards-compatible with the earlier Commodore 1540, which was released alongside the VIC-20. In itself this doesn’t sound too bad, however the MOS 6522 VIA interface controller IC used in the 1540 had a hardware bug which prevented its internal shift register from working correctly, meaning that the DOS had to handle all of the data serialisation (in a far less efficient manner) in software.
Let’s demonstrate this with some numbers. On the VIC-20 and C64, CBM DOS transfers at 2,400 baud, which is pretty fast in comparison to the 300 baud of the Commodore 1530 Datasette – however, this is very sluggish when compared to the 19,200 baud of the Atari 810 and the 120,000 baud of the Apple Disk II.
Because the computer and disk drive are both easily programmable, third-party “fast loader” applications (such as Epyx FastLoad, Final Cartridge, and Action Replay, typically loaded from a cartridge) were developed which could bypass the compatibility routines in CBM DOS and achieve speeds of up to 32,000 baud without hardware modifications.
This speed increase can be improved upon even more by modifying the hardware, and replacing the Kernal ROM in the computer and the DOS ROM in the drive using a more efficient implementation (i.e. JiffyDOS).
But, I digress. Back to the main point of this article.
I bought this Commodore 1541 as spares/repairs – according to the seller, it would power up correctly but gave a “?DEVICE NOT PRESENT” error when trying to access it. The drive was a bog-standard beige 1541 with a longboard and an ALPS head mechanism, and aside from being very dirty it seemed in pretty good shape.
Upon its arrival, I confirmed that the seller was correct – the drive reset and powered up correctly, but would give a “?DEVICE NOT PRESENT” error when accessed.
I then set about diagnosing the problem, the first step of which was cleaning and servicing the drive – cleaning and lubricating the upper disk mount and stepper rails, and cleaning the head. However, this didn’t make any difference.
I checked that the 5Vdc and 12Vdc power rails were OK, and they were present and stable; I cleaned and reseated all of the socketed ICs, which didn’t make any difference; I checked all of the tantalum capacitors on the board for shorts, but all were OK.
I then inspected the board more closely, and noticed that one of the drive select jumper traces had been cut, setting the drive address to “9” instead of the default, “8”.
I soldered the jumper back to its factory position and re-tested the drive, which then functioned correctly. Testing using a 1541 diagnostic cartridge, the drive passed all mechanical tests, and had good alignment and speed.
Now that the drive was working, I wanted to do some experimentation (just for fun, because the drive was cheap), as inspired by a video by Adrian Black.
Due to its internal linear PSU which is very inefficient, the 1541 is well known for its hot operation, which can reduce the lifetime of the ICs and contribute towards drive misalignment – however, advances in power supply design over the past few decades mean that it would be possible to retrofit a modern switch-mode PSU into the drive.
For this, I chose a Meanwell D-60A 60W switch-mode self-contained PSU, capable of delivering +5Vdc at up to 4A and +12Vdc at up to 3A, plenty enough to power the drive.
So the mainboard could still be removed from the drive, I decided to use a PC-style Molex 4-pin power cable to connect the two (male side on the PSU, female side on the mainboard – I would invert this in future). I butchered up a spare Molex adaptor cable and installed it onto the PSU, using the standard wiring colours.
I then removed the drive chassis, unscrewed the original 240Vac transformer, and clipped the live and neutral wire off it – I then extended and crimped the live and neutral wire, and added an earth strap to the chassis.
I then mounted the PSU inside the drive chassis (it just about fit!), and connected all of the cabling on the input side (live, neutral, earth).
I then set about the required modifications to the PCB – because the rectification and regulation circuitry was no longer required, as this is all handled by the PSU unit, most of the power-related components could be removed, including the large smoothing capacitors and the two TO-3 voltage regulators and heatsink. I also soldered the Molex power cable to ground and the outputs of the 5V and 12V regulators.
The mainboard could then be plugged in and reinstalled into the drive chassis.
I then did a smoke-test and tried it out – the drive started up as normal and, as you can tell from my surprise in the video that I took, it seems to work great!
So, the experiment was a success – we ended up with a cool-running, more reliable Commodore 1541 5.25″ FDD that weighs around half of what it did before.