About a year ago Gideon updated the Ultimate firmware with support for a new C64 Kernal which allows for DMA loading and saving using the standard LOAD and SAVE Kernal routines. I’m a bit behind on this as this has been out for a while, but I finally got around to testing the load and save times using the CBM Disk Transfer Benchmark tool I wrote in 2020.
Basically what Hyperspeed does is hook the soft-IEC into the Kernal LOAD and SAVE routines but uses direct memory access from the Ultimate 64 (and 1541 Ultimate 2+). As you’ll see, this provides for a near-instantaneous load time, due to the fact that the data is transferred directly into memory, bypassing the IEC bus entirely. The obvious down-side is that it requires a custom Kernal, which is not a big deal, and that it only works for the standard Kernal load and save routines, which is a pretty big deal since that essentially rules out anything that needs real 1541 emulation to work.
Update: I’ve added additional testing data. It was suggested to me that I would get even faster scores than I originally posted if I used the Ultimate 64 RAM disk, which resides in system memory rather than attached storage. This is indeed the case. Also, I repeated the same tests on a 1541 Ultimate-II+ and included those scores in the tables. The 1541 U2+ is not as fast but still beats any other option for load speeds by far.
Testing was performed on an Ultimate 64 in NTSC mode and a 1541 Ultimate-II+ on an NTSC Commodore 64, both using the 3.10a Ultimate firmware with the matching UCI KERNAL.
The bottom-line speed comparison
With attached USB storage, Ultimate 64 Hyperspeed is 26 times faster at saving than the baseline 1541, and a whopping 562 times faster loading than the baseline 1541 with stock Kernal. Using the internal RAM disk is even faster: 102 times faster at saving and a blistering 1124 times faster loading than original hardware.
In fact, it is likely faster than this. Hyperspeed loaded 44,956 bytes (177 blocks) from the Ultimate 64 RAM disk in less than one decisecond (<100 milliseconds). The smallest time interval the TOD clock can return is one decisecond. Once we get faster than 300 milliseconds, these differences are not really possible to measure with precision. 1124 is the maximum possible DTB load score. For all intents and purposes, Hyperspeed can achieve instantaneous load times from the internal flash memory utilizing the UCI KERNAL.
A real C64 with a 1541 Ultimate-II+ cartridge is no slouch either. The U2+ can be configured to use the UCI KERNAL matched with Soft-IEC storage just like the Ultimate 64. For attached USB storage, I measured a 11x save score and 161x load score. The internal RAM Disk of the U2+ increased these to a 13x save and 225x load score.
Read on for the detailed comparison tables.
Load Speed Comparison
System | Load Bytes per Second | Load Time | DTB Load Score |
1541 | 403 | 01:51.5 | 1x |
SD2IEC | 502 | 01:29.5 | 1x |
1581 | 507 | 01:28.6 | 1x |
1541 w/ Epyx Fastload | 2121 | 00:21.2 | 5x |
1541 w/ Warp Speed | 3017 | 00:14.9 | 8x |
1541-II w/ JiffyDOS | 3746 | 00:12.0 | 9x |
1541 w/ Super Snapshot 5 | 4163 | 00:10.8 | 10x |
1541 w/ Action Replay 5 | 5352 | 00:08.4 | 13x |
1541 w/ Retro Replay PAL 3.8q | 5352 | 00:08.4 | 13x |
1581 w/ JiffyDOS | 6515 | 00:06.9 | 16x |
SD2IEC w/ Epyx Fastload | 7136 | 00:06.3 | 18x |
SD2IEC w/ JiffyDOS | 9175 | 00:04.9 | 23x |
1541 w/ DolphinDOS (U64) | 9366 | 00:04.8 | 23x |
1541 w/ Transwarp 0.84 | 16056 | 00:02.8 | 40x |
1541 U2+ Hyperspeed (USB) | 64223 | 00:00.7 | 161x |
1541 U2+ Hyperspeed (RAM Disk) | 89912 | 00:00.5 | 225x |
U64 Hyperspeed (USB) | 224780 | 00:00.2 | 562x |
U64 Hyperspeed (RAM Disk) | 449560 | 00:00.1 | 1124x |
Save Speed Comparison
System | Save Bytes per Second | Save Time | DTB Save Score |
1541 w/ Epyx Fastload | 342 | 02:11.5 | 1x |
1541 | 370 | 02:01.5 | 1x |
1581 | 749 | 01:00.0 | 1x |
SD2IEC w/ Epyx Fastload | 870 | 00:51.7 | 2x |
SD2IEC | 871 | 00:51.6 | 2x |
1541-II w/ JiffyDOS | 925 | 00:48.6 | 3x |
1541 w/ Super Snapshot 5 | 1170 | 00:25.4 | 5x |
1581 w/ JiffyDOS | 1905 | 00:23.6 | 5x |
1541 w/ Action Replay 5 | 2443 | 00:18.4 | 7x |
1541 w/ Retro Replay PAL 3.8q | 2470 | 00:18.2 | 7x |
SD2IEC w/ JiffyDOS | 2775 | 00:16.2 | 8x |
1541 w/ Warp Speed | 2900 | 00:15.5 | 8x |
1541 U2+ Hyperspeed (USB) | 3978 | 00:11.3 | 11x |
1541 U2+ Hyperspeed (RAM Disk) | 4683 | 00:09.6 | 13x |
1541 w/ DolphinDOS (U64) | 5352 | 00:08.4 | 15x |
U64 Hyperspeed (USB) | 9565 | 00:04.7 | 26x |
U64 Hyperspeed (RAM Disk) | 37463 | 00:01.2 | 102x |
It doesn’t really seem like an apples-to-apples comparison with real hardware speed loader options like the Epyx Fast Load or Super Snapshot, or even Kernal replacement options like JiffyDOS. But the data is interesting nonetheless, and if you are doing mostly standard file access and have a 1541 Ultimate or U64, it’s the obvious setup to go with. Still, if you have to keep the door open for compatibility and don’t want to deal with changing your Ultimate settings all the time, sticking with JiffyDOS is probably the way to go.
[Update: I now have a dedicated page I’ll be keeping updated for C64 Speed Loader Comparisons.]
How to set up Hyperspeed
Using Hyperspeed involves configuring your Ultimate for IEC file access and using an alternate KERNAL ROM. It took me a couple of tries before I figured out all the relevant settings and pointed the IEC directory into the D64 image I was using for the benchmark. The Highlander has a good instructional video on doing this, which I will link below. One thing he doesn’t mention is that you have to be sure to enable the Command Interface for it to work.
We’ve come a long way since the Epyx Fast Load.
Thank you for your post. It came up on a search looking for whether the Ultimate II+ is compatible with NTSC mode, and per your description it looks like it is. What do you mean by “3.10a Ultimate firmware with the matching UCI KERNAL”. If I upgrade my Ultimate II+ firmware to 3.10, do I need to update the file I use for the kernal? What would that be?
Yes, you need to also download a replacement kernal ROM to go with it, but only if you want to use hyperspeed. The video above should help.