How Does Epyx Fastload Make Loading Faster on a Commodore 64?

32,161
0
Published 2024-03-24
This video does a fairly deep technical dive into exactly what the Epyx Fastload cartridge does on a Commodore 64 to make loading from a Commodore 1541 disk drive faster. I use a logic analyzer to trace the signals on the bus and explain what's going on every step of the way, comparing Epyx Fastload wire protocol to the standard Commodore serial bus wire protocol.

To learn how Epyx Fastload works, I did a complete disassembly of the Fastload kernal load routine (not the entire cartridge ROM), including the code that is uploaded to the 1541 disk drive by Fastload. These files have been uploaded to zimmers.net.

Epyx Fastload Kernal Load routine source (relocated to $C000):
zimmers.net/anonftp/pub/cbm/c64/diskutil/fastloade…

Epyx Fastload 1541 Disk Drive disassembled source code:
zimmers.net/anonftp/pub/cbm/c64/diskutil/fastloade…

If you'd like to run Epyx Fastload from disk instead of cartridge, I created a d64 of my assembled, relocated code:
zimmers.net/anonftp/pub/cbm/c64/diskutil/fastloade…

I said I would do some benchmark tests using Epyx Fastload, but the video got long on me, so I'll do some benchmark testing later.

Thanks for watching!!!

All Comments (21)
  • I can confirm that Scott Nelson (me) is not dead yet. Minor Quibble: Fastload was only almost a normal cartridge. It had a tiny bit of hardware magic that let it swap out the cartridge. (It's just a capacitor and a resistor.) Reading memory from $f400 would slowly swap in the cartridge. Not reading from cartridge memory for a while swapped it back out. I asked for a "real" switch, but that would have been a whole gate, adding maybe $0.30 to the parts cost, which was more than Epyx was willing to pay for. If you want to look at the code using Fastload's debugger, you can either modify the cart to always pull that line low, or write some code that reads from $f400 a lot, then make a copy into ram. Fastload does what it does without blanking the screen (or turning off the sprites, which /also/ cycle steal). If you want to know what can be done if you /do/ blank the screen, take a look at the vorpal disk enhancer. (same code was also used in the Barbie(tm) game) Fastload is about 5 times faster. Vorpal is about 25 times faster. There might even be some Wondermat formatted diskettes still floating around (which might make sense to you if you know what a Formaster machine was).
  • Exactly what I explained back in 1985. I was rebuffed and told what I said was impossible and that FastLoad spun disks faster and destroyed them!! The destructive power of urban legends.
  • @curiousottman
    I reverse engineered the Fastload cart a while back and the best non technical explanation is : magical hamsters. This video however gives the best accurate technical explanation.
  • @Datan0de
    I don't know why the YouTube algorithm recommended this video, but I'm so glad it did! It always seemed like magic.
  • @stupossibleify
    I've been searching for an explanation on fast loader cartridges for years! And to think this particular product was available so soon after the C64's introduction to market - and with very few dev tools or shared experience
  • I want to put emphasis (as a 32 year / experience developer) how much work this video represents, and how it passionnate me to listen to :) because i grew up with a C64 but never really understood fast load mecanics. The only faster thing was the 21 seconds backup by charles leborgne but had a parallel cable from the user port to the 1541 pia. This was a completely different purpose. I love how epyx "inserted" themselved into the existing desing, it's almost a piece of art !
  • @stephenwhite506
    The SD2IEC guys implemented many of the common fast load protocols by analyzing and reverse engineering them like you did in this video. This is an impressive amount of work. I found it easier to just emulate the entire drive including the 6502 and the two 6522s.
  • @dannyepstein
    Thanks for the thorough research and explanation. Comparing this to the fast load and save routines that my brother and I wrote, I see two differences. First, we disabled interrupts and blanked the screen so we didn't have to worry about bad lines. Second, we only synced once every 256 bytes. We sent 11K bytes per second.
  • @teikoh5690
    Great analysis and description. Back when I was a teenager I wrote my own fast loader very similar to the way Fastload uploaded the fastload code to the 1541. It was semi-fast still bit banging 1 bit per clock but not AS fast. Always wondered how Epyx did it. But they're both still held back by the underlying disk service routines which took their own time to load a block, decode it, put it into buffer etc. Then there was Vorpal Load which was all kinds of next level insanity including its own custom disk format...
  • @AndreFachat2
    Many thanks for that great explanation! One thing I learned was that it was monitoring the VIC-II chip for badlines, so it would be able to run even with the screen enabled. Ingenious!
  • @Tater-Chuck
    Topic idea: my uncle ordered a seemingly uncommon interface device from a company called "Interpod" that let us use an 8050 with a C64. Even though the 8050 was an older design, it was built like a tank, didn't overheat, offered more storage and disk duplication. Those "Interpod" boxes might be interesting to explore for ten minutes of video.
  • @idolpx
    I love this. Especially the sound effects. Sound effects make everything better. In real life too. :)
  • Wow, what a great idea for a video; thanks for putting the time into presenting it so clearly. I would never have guessed that there was this remote execution option that you explain at around 17 minutes!
  • @jlfrd1577
    I've been so curious for so many years how this worked. So glad you figure it out! The other one I've been dying to know about is how GEOS implements their own fastloader since the drive seek seems to work and sound way different. There doesn't seem to be any info about GEOS's version out there
  • @64jcl
    Brilliant explanation of the Epyx Fast Loader. When the devices are in sync like that you can really send data rather quickly as you show. For the C64 OS hobby project I was doing a while back, I used Covert Bitops 1 bit fast loader as it could also be used with IRQs and was very resilient that way and I wanted loading to go in the background since the whole "demo effect" of my OS was that it could multitask and update other apps running while one of them were loading something from disk. Its only around 3.3 times faster than kernal though - not a lot but still good for my purpose and faster.
  • @earlevans3851
    This video was so interesting and well-done. Thanks so much for your time, effort and research in putting this together! I'd never seen a wire-level analysis of Commodore IEC bus communications. Even better, followed by an explanation of how a well-known fast loader speeded it up. Nice!
  • @IntuitionAmiga
    I just discovered your channel as this video was recommended to me on Twitter. What a great video, I loved every bit of it and you’ve gained a new subscriber. I recently learned 6502 by writing a disassembler which i then further modified to become an emulator. Then i rewrote it having learned a lot and i’m slowly trying to make it into a Plus/4 emulator. There’s a few videos documenting the progress of this v2 of it on my channel. Thanks again!
  • @faberfox
    Once again but not as often as I'd like, the YT algo recommends something really worth watching. Subbed, will be watching more of your stuff and would love to see a comparison of the different fastload payloads, bus format and overall speed. One that I've always wanted to learn about is Vorpal Kit, also by Epyx. Cheers!
  • @ferrellsl
    It's interesting to think that the Commodore 64 had one of the first universal serial buses back in the day, which is something that everyone takes for granted now on their computers. One port with a daisy chain of peripherals. I remember having dual drives and a printer attached this way when I was in college in the 1980's.