Hola!
* El Technical Handbook recomienda deshabilitar las interrupciones
antes de leer un registro de estado, pero no dice nada sobre las
interrupciones al escribir en un registro de control. ¿Es necesario
deshabilitarlas? He hecho algunas pruebas sin deshabilitarlas (al
escribir en registros de control) y funciona correctamente, pero igual
es la suerte del principiante.
a mi me paso algo curioso con respecto a esto. Una de ls primeras
versiones del juego que estoy haciendo funcionaba perfectamente en z80
pero no lo hacia con el r800. Tras mucho probar me di cuente que el
problema era exactamente ese, no desabilitaba las interrupciones al
acceder al vdp, y debido a la mayor velocidad del r800 la probabilidad de
que ocurriera algo en medio era mayor.
Pero, para compatibilizar con MSX1, el ordenador SUPONE que el registro de
estado seleccionado con el R#15 del VDP es el CERO !!
Por lo cual, si tu lo has modificado antes, y no lo has vuelto a poner a
cero, entonces, la rutina de tratamiento de interrupción de la Bios lee otro
registro de estado, en lugar del cero, y no detecta la INT del VDP como tal,
así que se queda colgado (como si se hubiesen desactivado las INTs)
mas que no detectarla es que la lectura de r0 supone el eoi (end of
interrupt) al vdp y por tanto no se produce otra interrupcion porque sigue
activa la anterior, ¿no?
Así que tienes 2 soluciones:
-Desactivar las INTs, trabajar con la rutina que lee registros de estado, y
al acabar, volver a seleccionar el registro 0 y activar las INTs
-En cada punto donde tengas que leer un registro de estado: Desactivas Ints,
seleccionas tu registro, lo lees, anotas el resultado, seleccionas el
registro 0, activas las Ints, y lees el resultado anotado.
Gracias!
Pa eso está la lista ésta ...
pues claro ...
Roberto Vargas Caballero