HispaMSX

Re[2]: Re[2]: Pregunta VDPera (Ramonijo!)

2000-02-05 16:40:37

On Tue, 01 Feb 2000 00:05:03 +0100
Jose Angel Morente <msxjam(_en_)crosswinds(_punto_)net> wrote:
 
A ver que os parece:

A ver qué nos has hecho ....

[...]

Brillante!

como el arroz XD

No lo he probado, pero a simple vista funciona.
Y es cortito. Igual me quedo con esta solución, ya veré.

entonces tendrás que ponerme en los greetings, y pagarme los derechos de
autor y, y... XD

La idea es la que dije, se trata de esperar a una linea a la que >solo
llega en modo PAL. En modo NTSC la ultima linea es la 234, >o sea, que si
el flag se pone a 1 es que ha llegado a la 240 y, >por tanto, está en PAL.

Muy buena idea. ¡Y luego dices que tú desto no sabes!

...
 
Cuidado con los HALTs, que algún programa residente que toquetee >el
registro 17 podría cascar,... si quereis que sea infalible >igual es mejor
usar el propio VDP (el flag de barrido vertical) >para controlar los ciclos.
Otra opción es usar el #fd9f y meter ahí una rutina.

¿Te refieres a sustituir los HALT por un CALL #FD9F?

NOOOORRR!!!! Animal!!! XD
En realidad me refería a que en lugar de usar HALTs para la espera de 2
ciclos se podía usar el gancho #FD9F. Es decir, poner la linea (de
interrupcion) al principio del programa y cambiar el gancho a una rutina
nuestra. Entonces hacer algo (cualquier cosa que consuma tiempo) y
comprobar el valor de (Hz).
Nuestra rutina (la del gancho) debería hacer lo mismo que el ejemplo de
antes. Es decir, si es llamada cambiar (HZ) por 50.

Pero sinceramente, ahora que lo pienso son ganas de complicarse, porque
eso no arregla nada. Si hubiera algún TSR que toquetee el VDP la jodemos
igual...
Claro que es raro que un TSR genere interrupciones de este tipo... y
tampoco es algo muy crítico el hecho de que te de un valor erroneo...
no?

Bueno, resumiendo, que para estar seguro de que funciona debes cambiar
los HALTs por un bucle estando todo en modo DI.
Para hacerlo más o menos largo segun la velocidad de la CPU puedes usar
la BIOS para saber que máquina es. Si es un MSX 2 calculas el retardo
aproximado para que esté dos ciclos en un z80 y lo multiplicas por tres
o cuatro (por si es un z80h), y si es un Turbo R pos lo propio.

Por cierto, ya me avisareis si funciona, que no lo he probado XD

Pues cuando toque esa parte del programa, ya te diré. Pero
así a simple vista parece correcto.
 
Ah, oye ... y muchas gracias a ambos :)


De ná!


Ramón



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