Cómo llenar de ROMs el Megaflash desde una programadora

Tanto si estás empezando a programar para sistemas clásicos como si quieres compartir tus conocimientos, aquí encontrarás información al respecto.

Cómo llenar de ROMs el Megaflash desde una programadora

Notapor wilco2009 » 06/06/2016 17:18

A sugerencia de algún compañero que le falla la disquetera del CPC, voy a intentar explicar en unas pocas líneas como llenar de ROMs el megaflash con una programadora.



EDITO: Adjunto este programa, cortesía de pachuquin (de ZDP) 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.



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:

Imagen

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:

  1. 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.
  2. 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:

Imagen

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.

Imagen

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

Imagen

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.

Imagen

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.

Imagen

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:

Imagen

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"):

Imagen

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

Imagen

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

Imagen

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.....
Los retrocacharros de Wilco
Djurkwhad: ¿Como te llamaba tu mamaita?
Roger: Un Error. Pero mis amigos me llaman Roger. Roger Wilco.
Avatar de Usuario
wilco2009
Veterano
Veterano
 
Mensajes: 591
Registrado: 07/01/2013 15:47

Volver a Desarrollo y programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados