Después de leerme detenidamente los datasheets y confirmarlo en CPCWiki, el modelo tiene que ser específicamente el 29C040.
Así como las lecturas se realizan para todos los modelos de la misma manera, no ocurre lo mismo con las escrituras.
En todos los chips, el proceso de borrado de un sector inicializa todos los bits a 1, y luego durante la escritura ponemos a 0 los bits que necesitemos.
En el modelo 29C040 se utilizan sectores de 256 bytes que tienen que ser programados de una sola vez tanto en escritura como en borrado.
Si la protección está deshabilitada, el proceso de escritura del chip es el siguiente:
Código: Seleccionar todo
Para cada byte en el bloque hacer
Provocar una trasición de alto a bajo nivel en el pin /WE
Escribir un byte en la dirección correspondiente
La escritura termina después de 150 microsegundos sin cambios en /WE
Cuando acaba la escritura, todos los bytes que no han sido especificados se ponen a FF.
Es decir hace el borrado de bloque de forma transparente para el usuario.
Sin embargo en el modelo 29F040 se debe borrar un bloque entero de 64Kb y las escrituras se hacen todas byte a byte.
Adicionalmente el proceso de escritura en este modelo consta de cuatro ciclos.
1er ciclo - escribir AAh en 5555h
2º ciclo - escribir 55h en 2AAAh
3er ciclo - escribir A0h at 5555h
4º ciclo - Escribir el dato en la dirección correspondiente
El programa de gestión de las ROMs debe saber y soportar el chip que estamos utilizando.
Para utilizar cualquier otra flash el programa debería borrar el sector antes de escribirlo, y en el caso concreto de la 29F040 tendríamos un nuevo inconveniente, ya que deberíamos tener 64Kb de memoria disponible para poder reprogramar un bloque, lo que lo haría incompatible con el CPC464, además, por supuesto, de que el programa también tiene que soportar este modo de operación y los actuales están preparados para el otro chip.
Voy a empezar a buscar alternativas de compra, pero la única opción válida es el chip 29C040.