Extraer la informacion útil de los ficheros tap o tzx.
Publicado: Mié Abr 07, 2010 9:29 pm
En otro hilo se habló de convertir los .tzx a .snapshots .z80 justo acabada la carga. Cosa útil para los que utilizan sistemas +3e y/o ultracargas.
Se me ocurre otro planteamiento; a ver que les parece a los desarrolladores de emuladores.Se trata de observar como evoluciona la memoria ram y olvidarse de la entrada EAR o de llamadas a la rutina LOAD de la ROM .
Creo que lo más normal durante una carga es que sólo se cambian en RAM los datos que se están cargando.
Y además con una cadencia concreta que es lenta comparada con otras escrituras de ram, como la que se puede dar en una inicialización.
Un algoritmo podría detectar si se estan escribiendo continuamente y contiguamente en RAM x bytes en t tiempo.
Por ejemplo en C , si un emulador utliza un array de char para modelar la memoria del Spectrum, podría usar un array de struct para guardar el byte en memoria por un lado y el tiempo que fue modificado por ultima vez.
O hacer un especie de traza con cada modificación en RAM donde se apunte la direccion y tiempo
Con esto se tendría el primer paso para extrear la información que interesa de los .tzx: los bytes de hay en cada bloque del tzx y su dirección de inicio.
Ya solo quedaría averiguar el punto de entrada de ejecución un vez cargados los bloques y el registro SP, éste quizá menos importante porque la inicialización quizá ajuste el registro SP.
Se me ocurre otro planteamiento; a ver que les parece a los desarrolladores de emuladores.Se trata de observar como evoluciona la memoria ram y olvidarse de la entrada EAR o de llamadas a la rutina LOAD de la ROM .
Creo que lo más normal durante una carga es que sólo se cambian en RAM los datos que se están cargando.
Y además con una cadencia concreta que es lenta comparada con otras escrituras de ram, como la que se puede dar en una inicialización.
Un algoritmo podría detectar si se estan escribiendo continuamente y contiguamente en RAM x bytes en t tiempo.
Por ejemplo en C , si un emulador utliza un array de char para modelar la memoria del Spectrum, podría usar un array de struct para guardar el byte en memoria por un lado y el tiempo que fue modificado por ultima vez.
O hacer un especie de traza con cada modificación en RAM donde se apunte la direccion y tiempo
Con esto se tendría el primer paso para extrear la información que interesa de los .tzx: los bytes de hay en cada bloque del tzx y su dirección de inicio.
Ya solo quedaría averiguar el punto de entrada de ejecución un vez cargados los bloques y el registro SP, éste quizá menos importante porque la inicialización quizá ajuste el registro SP.