Hola,
Estoy programando cosillas en ensamblador para MSX-1, y para temporizar las
cosas con más o menos precisión, recurro a esperar un número de veces al
retrazado vertical, esto es, cuando se acaba de redibujar cada pantalla (50
Hz en un sistema europeo).
Lo que pasa es que no sé muy bien en qué me falla el proceso. Tal y como lo
he hecho funciona perfectamente en un MSX de primera generación, pero se
queda en plan bucle infinito en MSX-2 y superiores.
Os paso a continuación el trozo de código en cuestión, a ver si alguien
puede orientarme para ver cómo puedo hacerlo y que se compatible con
cualquier modelo de MSX.
LD B,NUM ; Supongamos que NUM es el número de retrazados de espera
BUCLE: IN A,(&H99) ; Lee el registro de estado del VDP
AND A,&H80 ; Comprueba el bit de retrazado
JR NZ,BUCLE ; Si no está encendido, sigue esperando
DEC B ; Si hay retrazado, decrementa el contador
JR NZ,BUCLE ; Si no terminó el contador, continúa
Ya os digo: en MSX de primera generación va perfecto y temporiza de un modo
muy exacto. Pero no conozco casi nada sobre el hardware del MSX2: por favor,
indicádme en qué punto está el problema. ¿Cambia por casualidad el puerto
para la lectura del status del VDP? ¿Hay alguna otra forma de leerlo?
De verdad, cualquier ayuda es bienvenida, porque estoy bloqueado en este
punto.
Gracias por todo, y un saludo,
Eduardo Robsy Petrus