This section is about various fast-loaders and copy-protection.
Most commercial software for the C64 and C128 had copy-protection and
especially for the C64 this also included a fast-loader.
The fast-loader was especially needed for most C64 owners who did not have JiffyDOS.
I've seen many cracked games (copy protection removed) that do not include
a fast loader and they can be annoying to play (unless you have an emulator or JiffyDOS).
Let's take a deep dive into some of these to see how they work.
Some are better = faster than others, as we'll see and discuss their merits.
Some are better = harder to duplicate; we'll talk breifly about these
without going into details of disk duplication.
The following are fast-loaders for the C1541 from commericial publishers:
This last one is a home-brew fast-loader for the C1581:
We can compare these fast-loaders on a number of a features.
| | Microprose type 1 | Microprose type 2 | Sega | Access | Epyx | GEOS | Project Firestart |
| Drive type | 1541 | 1541 | 1541 | 1541 | 1541 | 1541 | 1581 |
| Blank screen | no | no | yes | no | yes (loading) | no | no |
| Interrupts allowed | no | no | no | no | no (loading) | no | yes |
| Disk Header | modified | modified | standard | standard | standard | modified | standard |
| Directory structure | modified | standard | standard | standard | not used | modified | standard |
Allow wildcard in filename | yes | no | no | yes | n/a | n/a | yes |
| File structure | custom | custom | standard | standard | custom | custom & standard | standard |
| Sector structure | custom (376 bytes) | custom (256 bytes) | standard (256 bytes) | standard (256 bytes) | custom (240 bytes) | standard (256 bytes) | standard (256 bytes) |
| Sector decoding time | 0.0 ms | 18.8 ms | 25.5 ms | 25.5 ms | 0.0 ms | 25.5 ms | 0.0 ms |
Head stepping speed (ms / half-track) | 7.8 | 12.5 | 5.5 | 15.0 | 10.0 | 4.0~7.5 | 3.0 |
| Disk → C64 transfer | 57 µs/byte | 50 µs/byte | 87 µs/byte | 131 µs/byte | 39 µs/byte | 98 µs/byte | 48 µs/byte |
| C64 → Disk transfer | 1300 µs/byte | 147 µs/byte | 422 µs/byte | 1300 µs/byte | 1050 µs/byte | 100 µs/byte | 1024 µs/byte |
| C64 memory footprint | under 0.25K | 1.0K | under 1.75K | under 1.0K | under 0.75K | about 3.5K | about 0.5K (w/o save) |
| Needs KERNAL | yes | no | no | yes | no | yes | no |
| Load $D000~DFFF | I/O | I/O | RAM | I/O | RAM | I/O | I/O |
| Alters User Port | yes | yes | yes | yes | maybe (uses default) | no | no |
| Requires Unit 8 | yes | yes | yes | no | yes | no | no |
| Write file/sector | no | no | no | no | yes | yes | yes |
| Other | Drive reads 5 blocks before each file. | Fast transfer 256 bytes before each file. | | Slow transfer 512 bytes before each file. | No data checksum. Always loads multiples of 240 bytes. | | Emulates KERNAL with nibble write. |
© Hydrophilic.net, 2026