HispaMSX

Re:[hispamsx] VDP

2001-08-14 15:13:04
 Hola de nuevo.

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?

 Sasto! Esa era la explicación correcta. Una vez que se produce una INT del 
VDP, si no lees el bit que lo indica, no se vuelve a producir otra nueva INT 
del mismo tipo. Por eso, el cacharro se queda colgado.

 Podría pensarse que la Bios del MSX podría volver a seleccionar el registro 0 
antes de leerlo, para evitar esta situación. Pero el que no lo haga, tiene un 
significado: La INT de la Bios del MSX, en principio, sólo accede al VDP para 
leer dicho bit del registro de estado 0. Hace un simple IN, y ningún OUT. Por 
lo que aunque en el programa principal no desactives las INTS para hacer OUTs 
al VDP, no tiene que pasar nada.
  Entonces, si el MSX fijase en cada INT el registro de estado 0 para 
consultarlo sin equívoco, pasaría que como tiene que hacer un par de OUTs al 
VDP para dicha selección de registro, podría colarse entre los 2 OUTs 
consecutivos donde no se deshabilitaron las INTs.

 Así pues, ¿por qué hay que desactivar las INTs al acceder al VDP si digo que 
no pasa nada si no se hace?

 Porque más adelante, se pueden añadir otros tipos de interrupción de VDP, como 
la INT de línea. En cuyo caso, es necesario que la rutina de interrupción 
seleccione otro registro de estado distinto al cero, para leer el bit de la int 
de línea y permitir que se produzca una nueva int de línea. Y entonces, como 
esta rutina de interrupción hace OUTs al VDP, sí que se te puede meter entre 
tus 2 OUTs.

  Aparte, claro está, que tú puedes hacer accesos al VDP dentro de tu rutina de 
interrupción, por lo que sea.

  Pues nada, perdón por el rollo, pero es mejor que sobren explicaciones, a que 
se diga: 'Esto se hace así y punto'.

  Pos nada, muchacho, que palante con los experimentos del VDP, que son de lo 
más entretenido y gratificante que se puede hacer con un MSX2.

 Hasta luego.

Daniel Zorita.

_____________________________________________________________________
¿Qué harías si dispusieras del doble de tiempo? Contesta en 
http://www.wanadoo.es/animacion/promoverano/ 
y gana una cadena de música. 



<Anterior en la conversación] Conversación actual [Siguiente en la conversación>