The Commodore 64 has a disk drive that is unique in many ways. Not only is the Commodore 1541 said to be the world’s slowest disk drive, but it’s also big, bulky, noisy and has a reputation of being unreliable. Also, it works in an unusual way. In many ways it’s the disk drive that has defined our experience with the C64.
In addition to the original model 1541 there were also the updated models 1541C and 1541-II from Commodore. The drives have different looks, differences in hardware and in ROM versions, but the basic functionality and features are principally identical.
Some later models in Commodore’s 8-bit serial disk drive range were improved in some ways, but those have less importance today. For a C64 as a retro system, the 1541 is the de facto standard. Still, in this time of emulators and hardware add-ons, compatibility with the original 1541 disk drive is regarded as a must.
And today, for someone who doesn’t want to resort to emulators only, the large and unconventional disk drive brings some practical challenges. So understanding the 1541 helps us to understand the options we have for replacing it!
It’s an intelligent device
Contrary to other home computer disk drives, the 1541 is an intelligent device. The original 1541 has a large motherboard inside that hosts its own processor, memory, I/O system and built-in disk operating system resident in a ROM chip (i.e. DOS). Basically the 1541 is a standalone computer, and the disk drive can operate on its own without the host computer having to control its every operation. You can think the C64 and 1541 being two computers that communicate over a serial bus. Data and commands are transferred over the serial bus whereas the actual disk operations are handled by the disk drive all by itself.
Interestingly there was a sampling drum machine in the mid eighties, namely E-MU SP-12, that made use of this unusual approach. The sampler could use the 1541 and compatible disk drives as its sample saving and loading medium and storage.
Here’s one of mine with already reduced size motherboard. The first models had a motherboard that took up almost the entire length of the large disk drive.
It’s slow as hell
The 1541 may be the slowest consumer disk drive throughout the history. And it’s a known “merit” of the drive. There was various reasons for the legendary slowness, mostly having to do with the unusual implementation, bugs, and prorities on how to overcome the discovered issues.
The VIC-20 was the first Commodore computer to use serial bus for disk drives. Both the VIC-20 and its 1540 disk drive used the MOS 6522 VIA as an interfacing chip, and the intention was to use a hardware shift register offered by this chip for the serial data transfer. However, it turned out that there was a bug in the chip’s shift register that could lead into data corruption. Apparently it was too late to fix the chip or change the hardware design of the computer and disk drive. Instead, the hardware serial data transfer was replaced with a slow software implementation. And it appears that this software solution to overcome the hardware problem was whipped up rather hastily. But that’s how the machines shipped.
Then came the C64. For starters, no new disk drive was designed, but the 1540 was software modified to run slightly slower to make it compatible with the new computer’s video chip timings. That’s the 1541 – a slowed down version of the 1540. Otherwise the drives are identical. In other words, the C64 + 1541 is even slower than the preceding VIC-20 + 1540.
The C64 had the 6522 VIAs replaced with more advanced, bug fixed 6526 CIA interfacing chips. But that didn’t really help as the designated disk drive 1541 still made use of the bugged 6522 VIA. The slow software protocol remained.
The disk drives designated for Commodore 128 – 1570, 1571 and 1581 – finally made use of a bug free hardware serial transfer that should have been already in the VIC-20. When these drives are used with the C128, there’s no need for fast loaders. Sadly, this doesn’t help the C64, as it only uses the slow software transfer also with these drives.
It can be sped up
A program that makes a disk drive load faster sounds like a hoax or a joke. But the standard disk loading routines in VIC-20 and C64 were such a joke, that fast loading programs were a norm. Due to the above mentioned approach of two computers communicating with each other using a poor software based transfer protocol meant that the transfer protocol could be easily replaced with a better one.
Fast loaders can be divided into three main categories: software fast loaders, fast loading cartridges and KERNAL fast loaders. Fundamentally they all do the same thing: they run modified code in both the computer and in the disk drive to make the disk operations and data transfer much more efficient and thus faster.
Software fast loaders are short programs that have to be loaded first using the standard slow loading routines. When loaded and run, the standard loading routines are overridden with more efficient ones, and further disk access happens faster. Many commercial games had their built-in fast loading routines that often doubled as a copy protection. There were also plenty of standalone fast loading programs that could be used to load larger programs, usually cracked games I guess, in much shorter time than it would normally take. Obvious downside of these standalone software fast loaders is that they have to be first loaded every time after the machine was switched off or reset.
Two examples of fast loading programs – after they have been loaded from the disk first. On the left, a popular fast loading program, Hypra-Load. On the right side one of the fast loaders I used to use a lot, that goes by name Speedload.
Fast loading cartridges are much more convenient. The cartridge is simply plugged into the expansion port of the computer. The faster loading routines are just one or two key strokes away after the machine is switched on. Additionally, some fast loading catridges, like the Action Replay, offer some of the fastest serial loading routines available.
The boot menu of Action Replay. The fast loader is just one F7 key stroke away.
Both the software fast loaders and fast loading cartridges override the standard loading routines. The third option is to replace the built-in KERNAL loading routines by replacing the ROM chips inside the C64, and in some cases, also in the disk drive. This way the fast loading routines are always present, instantly after startup, and virtually transparent in the computer’s operation.
Likely the best known KERNAL loading system JiffyDOS, and another KERNAL loading system EXOS straight after startup.
One more loader type worth mentioning are the so called IRQ-loaders. They are a special type of software fast loaders being able to “run in the background”, sort of. This kind of loaders are mostly seen in modern C64 releases such as demos and games, where data is being loaded from the disk at the same time as music and graphics are being shown – which is pretty impressive for a early 80s computer. Needless to say, the C64 was never designed to do something like that.
A loading screen from a ground breaking demo from 2000, Deus Ex Machina. The graphics are scrolling and zooming in and out while music is playing to keep the audience entertained. Today’s demos don’t usually have dedicated loading screens at all, and the parts follow seamlessly. On the right is an example of a commercial IRQ-loader – the loading screen from the game Armalyte with a progress countdown timer.
And the fast loaders really make a difference. When loading a large file the standard disk drive spends around 13 seconds on a single track before the head steps onto the next track. That’s the *tic* you hear from the disk drive every now and then. The fastest fast loaders spend merely two or three disk rotations (the disk spins at 300 rpm) on one track until it’s completely read and transferred, making any program load in just few seconds. That’s a huge improvement considering that it takes more than two minutes to load a program that fills the C64’s memory using the standard disk loading speed.
A good example of a greatly improved drive side loading routine can be found in some of the fastest loaders. Those behave so that they read the sectors on the disk out of order, rearranging the data in memory. The benefit is that the loading routine reading the disk does not have to wait that the next sector in chain runs under the drive head (the data sectors are interleaved in a way that the sectors are optimized for the slow standard routine).
It’s not easy to maintain compatibility with the 1541
Given all the above, the 1541 disk drive isn’t the most straight-forward disk drive to emulate. There is a complete 8-bit computer involved in emulating the disk drive, complete with its own CPU, RAM, I/O and ROM software.
On the other hand, the C64 is communicating with a whole another device, and only expects it to respond in a certain way. The C64 does not care whether if there is a 1541 disk drive at the other end of the serial cable, or some other device that behaves in a similar way. This also opens up possibilities.
In my opinion the most prominent example are the modern SD card based disk drive replacements. For example the sd2iec based SD-card drives only respond to the C64’s drive commands in the way the computer expects – they do not emulate the complete disk drive. In many cases that works perfectly fine. Even many fast loaders are supported, but only because the custom routines used by those loaders are built in and recognized by the sd2iec firmware.
The real issues arise when a custom loader is not specifically supported. Or a program wants to send some custom code to the drive and execute it there on the drive CPU and RAM. Or when an advanced loader wants to take a strict control of the disk drive and access the disk directly by tracks and sectors. Obviously these kinds of things will fail when there is no physical disk to read, no actual drive head to step back and forth, or the 1541 CPU and RAM are not there either.
So how to replace the 1541 with something more contemporary?
The sd2iec based devices make a great job bridging the technological gap between the C64 and today’s computers, letting us use SD cards to shuffle programs back and forth. It’s only the down to hardware level compatibility they are lacking. Unfortunately that renders these devices incompatible with some few game titles, and a great deal of demoscene productions.
To achieve a full compatibility with the C64’s standard disk drive, the whole 1541 has to be emulated. Including its mechanics and also the disk images with the definition of how the data is laid out on the disk. And that’s exactly how the 1541 Ultimate and Chameleon handle the disk drive emulation, achieving a very high level of compatibility. If something runs from floppy, it will most likely run from a disk image on these devices.