[hr]
EDITO: Adjunto este programa, cortesía de pachuquin que hace todo el proceso por nosotros, dejando un archivo listo para quemar
El programa permite seleccionar archivos .ROM, eliminando automáticamente la cabecera de AMSDOS y completándolos hasta 16Kb si es necesario.
Sólo hay que cargar las ROMs, ordenarlas en el orden deseado y generar el archivo .BIN listo para se quemado con la programadora en nuestra flash.
https://mega.co.nz/#!kABkhI5C!EC-IU19dg ... 0od_gSEhBc
Además el programa permite añadir huecos libres y guardar compilaciones para poder modificarlas más tarde.
Que lo disfrutéis.
[hr]
El primer paso es bajarse todas las ROMs que queremos instalar.
Yo aconsejaría que hicieramos una carpeta específica para esto, ya que nos va a resultar mucho más sencillo todo después.
Entre las ROMs que debemos copiar a la carpeta deben estar la ROM del basic y la del AMSDOS que instalaremos en las roms 0 y 7 respectivamente.
No es necesario que escojamos 32 ROMs, pero sí tenemos que instalarlas seguidas y sin huecos. Se podrían insertar hueco pero para eso necesitaríamos generar un archivo de 16384 bytes con $FF en todos sus bytes.
Como ejemplo aa carpeta podría quedar como sigue:
El espacio que tenemos para cada ROM es de 16384 bytes, sin embargo, en la imagen anterior vemos algunos archivos que son más grande e incluso alguno que es más pequeño. Los archivos en esas condiciones no nos sirven y debemos modificarlos para que ocupen exactamente 16384 bytes.
Pero, ¿Porqué esos archivos ocupan diferente?.
Pues muy sencillo, hay dos motivos posibles:
- Los archivos que aparecen como ocupando 17Kb contienen una cabecera de $80 bytes (128 byte) que les añade el sistema operativo de disco (AMSDOS). En este caso hay que eliminar los primeros 80$ bytes con un editor hexadecimal.
- También puede ocurrir que el programa ocupe menos de 16Kb y el autor no haya rellenado la parte final hasta ocuparlos, por lo que deberemos hacerlo nosotros. En este último caso también puede ocurrir que lleve cabecera de AMSDOS, por lo que habría que eliminar estar cabecera y luego completar con $FF al final hasta los 16384 bytes
Para hacer lo anterior podéis usar cualquier editor hexadecimal. Yo he usado para el ejemplo el HxD que es gratuito.
Para cada ROM de las que aparecen con 17Kb eliminamos los primeros 128bytes:

Y en la que aparece con 14Kb tenemos doble trabajo, porque tenemos que eliminar la cabecera AMSDOS como las demás partes de la ROM del Art Studio, pero además hay que completarla hasta los 16Kb con $FF, con la opción de insertar.

Una vez tengamos recortados o ampliados los archivos que correspondan, nos deberían quedar todas las ROM con 16Kb:

Ahora lo que debemos hacer en juntar todas las ROMs en un solo archivo para poder grabar el chip con la programadora.
Para ello abriremos una ventana de comandos y usaremos el comando "copy" de MSDOS pero con la opción /b para que la copia sea binaria y no termine al encontrar un caracter <EOF>.
Para facilitar un poco el trabajo yo lo que hago es hacerme un archivo bat con la ayuda del comando dir y las opciones redirección.
Como podemos ver en la siguiente imagen, el comando dir /b nos muestra el directorio actual pero solo con los nombres de archivo.
Si tecleamos "dir /b > copia.bat" nos generará un archivo de texto con todos los nombres de archivo de la carpeta actual.

Ahora tendremos que editar el archivo con el notepad para conseguir el comando copy tal y como nos hace falta.
Lo que queremos conseguir es un comando con la siguiente estructura:
Código: Seleccionar todo
copy /b <nombre ROM0>+<nombre ROM1>+.........<nombre ROMn> <archivo a grabar>
Como veis en la imagen siguiente el truco consiste en ordenar los nombres que tenemos en el archivo generado con dir/b para que coincidan con el orden deseado, añadiendo un + al final.
Debemos recordar que hay que grabar el basic en la ROM0 y el AMSDOS en la ROM7. Adicionalmente puede interesarnos grabar el Booster ("-RMA---B.ROM") en la posición 15 para que se puedan inicializar las ROMs de la 16 a la 31. Aunque ya os aviso de que es incompatible con algunas ROMs y yo personalmente prefiero desoldar la ROM interna del CPC, poner un zócalo y sustituirla por la ROM parcheada que ya las inicializa de serie y que no tiene incompatibilidades conocidas.
El archivo quedaría algo así como este.

Evidentemente debemos añadir el copy /b al principio y entrecomillar los archivos largos que contengan caracteres especiales.
Una vez hecho esto borramos los retornos de carro de cada línea para conseguir una sola línea:

Guardamos el archivo y lo ejecutamos.
El resultado debería ser un archivo de un tamaño múltiplo de 16384. Es decir si hubieramos incluido 10 ROMs el tamaño final debería de ser 163840 bytes, ni uno más ni uno menos.
Ya con el archivo generado arrancaremos el programa de gestión de la grabadora, seleccionaremos el chip 29C040 (muy importante la "C"):

Cargaremos el archivo bin que hemos generado, indicándole al programa que se trata de un archivo ".BIN".

Y una vez con el archivo en memoria seleccionaremos la opción "Prog" para volcar el archivo en el chip.

Cuando termine la grabación deberíamos seleccionar la opción "Unprotect" ya que al copiar el archivo desde el programador la memoria se vuelve a proteger contraescritura.
Pues a partir de ahora ya solo nos queda volver a insertar el chip en el megaflash y disfrutar de su contenido.
Suerte.....