Skip to content
Lasse Öörni's Integrated File Flexible Loader (IFFL) for Commodore 1541/1541-II/157x/1581 and CMD FD2000 floppy drives
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

IFFL System

Lasse Öörni's Integrated File Flexible Loader for Commodore 1541/1541-II/157x/1581 and CMD FD2000 drives.

Originally published on Covert Bitops' C64 page.


  • Assemble source files with dasm. Version 2.12.04 from Covert Bitops' Tools page has been successfully tested.
  • The makedisk tool is available from Covert Bitops' Tools page.
  • The c1541 tool is available from VICE's Web page.
  • If you plan to use ByteBoozer2 crunching, get the extended version of the cruncher from here.
  • To use the provided Makefile you need GNU make. If you don't know where to get it you're probably using Windows, so you might want to try this one.
  • Under Windows you might want to run win32/ifflvar.bat to setup your build environment, then either run make or any of the provided batch files.


  • The addiffl tool does not overwrite existing records whose length's LSB happens to be 0.


  • Integrated Lasse's 1-bit transfer protocol from his diskdrive loader rant, for using sprites while loading (TWOBIT_PROTOCOL = 0 as per Covert Bitops' Loadersystem).
  • Integrated support for loading under the I/O area and Kernal ROM (LOAD_UNDER_IO = 1 as per Covert Bitops' Loadersystem).
  • Added optional buffer-less block receive support (RECEIVE_BUFFER = 0 saves 254 bytes on the C=64, with some speed trade-off).
  • Added support for ByteBoozer 2.0 (which does not require a depack buffer on the C=64), Pucrunch and Exomizer files. Furthermore, linked packed files are all loaded with a single loader call.
  • Integrated Lasse's drive detection (Dreamload) and added support for Commodore 1581 and CMD FD2000 drives with Lasse's help and advice.


If you need to change the VIC bank in between load requests, you might want to avoid setting $dd00 and set $dd02 instead. Example for setting $dd02, from the documentation of DreamLoad:

    lda #%......xy
    sta $dd00


    lda #0                  ;only once in your init routine
    sta $dd00               ;don't do this while loading

    lda #($3f EOR %xy)      ;substitute for setting the VIC
    sta $dd02               ;bank to %xy

To do

  • Mark sections of the code that are critical to keep in the same page in RAM.
  • Add support for CMD FD4000, and SD2IEC.


It wouldn't be possible for me to contribute this project without Lasse's initial publication of his IFFL System and Loadersystem, and without a number of email exchanges I had with him and Flavio.

You can’t perform that action at this time.