Uto escribió:No me atrevo a hacer un .romsupgr la verdad, ¿quizá simplemente el core es inestable al acceder a la SPI flash a 28Mhz en determinadas circunstancias? O quizá es que tengo un ROMSBACK muy antiguo y no lo pone a 11 sino a 01 o algo así
O quizás el problema de las BIOS antiguas con el EXP25 no tiene nada que ver con el acceso a la Flash a 28 MHz. Eso fue una conjetura que hice, en base a los efectos que observé, pero podría ser otra cosa.
Por ejemplo: algo que no es un fallo de hardware en sí, pero que puede dar lugar a fallos de software es que tengas una rutina de interrupción que dure muy poquito. En el Spectrum el pulso de interrupción es de 64 estados de reloj de pixel (correspondientes a 32 estados de reloj de la CPU a velocidad normal). Desde que se dispara la interrupción hasta que es reconocida y se empieza a ejecutar la rutina de gestión de interrupciones pasan unos 20 ciclos de reloj (o más si es IM 2). Si la rutina de interrupción dura menos de 12 ciclos, cuando termine, aún no habrán pasado los 32 ciclos desde que se disparó, y por tanto la señal INT seguirá a nivel bajo, lo que significa que volverá a dispararse inmediatamente (INT se dispara por nivel, no por flanco). Que esto sea perjudicial o no para el programa, depende del propio programa.
En condiciones estándar, una rutina de interrupción dura bastante más de 12 ciclos, así que nunca se dispara otra inmediatamente, PEEEERO a 28 MHz (8 veces la velocidad normal), resulta que hay más probablidades de que una rutina de interrupción no demasiado larga termine antes de que se acaben los 32 ciclos de reloj (que desde el punto de vista de la velocidad de 28 MHz serían 256 ciclos de reloj). Si en la BIOS hay alguna rutina de interrupción este podría ser el caso.
Esto me da la idea de que probablemente sea buena idea acortar el pulso de interrupción para que siempre sean 32 ciclos de reloj de CPU, independientemente de la velocidad que tenga la CPU en cada momento. Probablemente no arregle nada con las BIOS antiguas, pero sí que mejorará la compatibilidad del core a 28 MHz con software preexistente el cual pretendamos acelerar.