"No eres tú, soy yo" te diría el XST si pudiera hablar.
En general, no puedes usar ficheros binarios de la forma en la que planeas. Lo que se hace habitualmente es convertirlos a ficheros HEX. Esto es, un fichero de texto con un valor de memoria escrito en hexadecimal en cada linea. En el repo del ZX-UNO verás que hay varios "bin2hex.c" repartidos por ahí, precisamente para lo mismo.
Te copio/pego el fuente de uno de ellos (este en concreto tal como está no te valdrá porque como mucho carga ficheros binarios de hasta 64K. Cambia el 65536 por el valor que sea en tu caso):
Código: Seleccionar todo
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv[])
{
FILE *f;
unsigned char *scr;
char nombre[256];
int i,leido;
if (argc<2)
return 1;
scr = malloc(65536);
f = fopen (argv[1],"rb");
if (!f)
return 1;
leido = fread (scr, 1, 65536, f);
fclose (f);
strcpy (nombre, argv[1]);
nombre[strlen(nombre)-3]=0;
strcat (nombre, "hex");
f = fopen (nombre, "wt");
for (i=0;i<leido;i++)
fprintf (f, "%.2X\n", scr[i]);
fclose(f);
return 0;
}
Una vez que tienes tu fichero de texto hexadecimal, lo cargas en tu memoria así: