HispaMSX

Tecla de Pausa

2000-05-15 10:43:08
15-5-2000

 Hola,

Sobre la tecla de PAUSE en los Turbo R:

Funciona de diferente manera, segun este activado el R800 o el Z80.

En modo Z80, el pulsar esta tecla, detiene "por hardware" el Z80.
No se si tambien detiene al resto de perifericos o no, pero por ejemplo, el
sonido
se desactiva, que es lo que interesa.

En modo R800, este procesador no esta preparado para que le hagan un PAUSE
por hardware, y entonces, lo que hace, es consultar un bit de un puerto
(creo que era el &HA1 o por ahi...) , que indica:
0= La tecla PAUSE se ha pulsado un numero PAR de veces: 0,2,4,...
1= La tecla PAUSE se ha pulsado un numero IMPAR de veces.
El MSX, en la rutina de tratamiento de interrupciones, mira este bit, y si
es 1, detiene "Por sofware" el procesador, y espera hasta que vuelvas a
pulsar PAUSE. EL sonido y demas perifericos, ya no se si los desactiva por
softw, o por hardware. Creo que por soft....

Por eso, si inhabilitas las interrupciones en un Turbo R en modo R800, la
tecla PAUSE no tiene NINGUN efecto, y los juegos no se pueden pausar, y ni
siquiera se desajustan.

Si quieres usar interrupciones, pero que no funcione la tecla PAUSE en modo
R800, has de llevar las interrupciones por tu cuenta, por ejemplo, usando el
modo IM 2, o bien poniendo RAM en la pagina baja, y cambiar el gancho
situado en &H38.

Supongo que los MSX1 o MSX2, 2+ con tecla de PAUSE funcionan igual que el
Turbo R en modo Z80, pero esto ya lo estoy suponiendo.

Para evitar desajustes en estos casos, lo recomendable es que en el
tratamiento de interrupcion principal del VDP, se reponga siempre el valor
del scroll vertical, set adjust, y otros.

Y para acabar, decir, que incluso en el modo PAUSA por hardware, el programa
siempre puede detectar si alguien ha hecho "trampa", y ponerle las vidas a
0. El como, pues ya no os lo voy a decir.  Creo que el Columns hacia eso en
los Turbo R, que detectaba la tecla de pausa leyendo de ese puerto, y ponia
los puntos a cero.

Aunque siempre queda el recurso de usar los emuladores de MSX para hacer
trampas o capturar pantallas.

Pero tambien es posible saber si un programa se esta ejecutando o no en un
emulador... Todo es posible...


 Chao,


        Daniel Zorita.



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