Me he picado con este tema. Estoy usando el CRT de Salamander de Forum64.de, que lo han generado a partir de la versión IDE64 de Salamander que hay en CSDB. Dicha versión ya tenía el trabajo sucio hecho, porque habian quitado el fastloader y lo habían sustituído por llamadas al LOAD del Kernal (mismo requisito de IDE64 y Disk2Easyflash).
La aplicación lo que hace es:
- Crea un "launcher" de Easyflash que se ejecuta al arrancar (con el logo, etc)
- Copia un "KAPI" que carga el juego. Se copia en la posición $8000
- Parsea el D64 y extrae el nombre, tamaño y posición de carga de cada archivo PRG que haya en el disco. Ejemplo: Salamander.prg, Level1.prg, Level2.prg, etc.
- Copia dichos ficheros en los sucesivos bancos de Easyflash. Se actualiza la tabla anterior, de modo que cada fichero está en la posición X del banco Y, secuencialmente.
El KAPI copia en $DF00 (255 bytes libres de RAM que tiene el cartucho Easyflash) una rutina de carga que para cada fichero lee la tabla anterior y accede a los bancos de Easyflash manipulando $DE00 y $DE02.
Se sustituye el vector puntero $330-$331 para que apunte a $DF00 en lugar de la rutina por defecto KERNAL LOAD ($F4A5) que tenía el juego. De ese modo, las llamadas a LOAD se atienden en la rutina nueva.
Si el juego usa un sistema de carga diferente, no funciona. Ejemplo: si tiene un fastloader, o accede a los tracks del disco y lee byte a byte, etc.