Chema escribió:Doble velocidad? En fin, se nota que yo de Dragon cero patatero
En todo caso genial que lo hayas resuelto. Esto tiene pinta de ser la bomba!!!
Hola Chema,
el 6809 dentro del Dragón funciona a 0,89MHz cuando accede a posiciones de RAM.
Existe la posibilidad de ponerlo a doble velocidad en dos variantes:
- la segura, que solo se aplica al código que reside en ROM (no conflictos con la RAM)
- la *peligrosa*, que entra en conflicto con el generador de imagen (VDG)
¿Cómo funciona la SAM (synchronous address multiplexer) para permitir ésto?
Digamos que durante el periodo positivo del reloj, se permite acceso a RAM por parte de programas
pero en el periodo negativo (valor cero) de reloj, es el generador de video el único que está
autorizado a leer la RAM para mostrar la imagen en pantalla (multiplexado de clientes de la RAM)
De esta forma el programa espera medio ciclo para acceder a RAM si cuando quiere hacerlo es el VDG
quien está autorizado. No hay problemas ya que esperar medio ciclo para ejecutar un opcode que puede
requerir entre 2 y 12 ciclos casi no afecta.
Si cambias la configuración con el poke rápido POKE&HFFD7,0 lo que haces es permitir que la ROM
sea accedida a 1,78MHz por lo que los programas Basic que tiran de la ROM se aceleran bastante.
Si configuras que la RAM se pueda acceder en los dos semiperíodos del reloj (POKE&HFFD9,0) entonces
quien se queda sin acceso a la RAM es el VDG lo cual implica quedarte sin pantalla, que pasa a mostrar
basura aleatoria hasta que reconfiguras velocidad normal (POKE&HFFD8,0)
Está claro que si puedes (y tu Dragón lo soporta) es mejor currar a doble velocidad, pero *SOLAMENTE*
puedes hacerlo si no necesitas la imagen en pantalla para nada.
Si tuvieras que realizar unos cálculos complejos y largos, podrías habilitar la doble velocidad, lanzar los
cálculos y volver a velocidad normal. Obtendrías el resultado en la *MITAD* del tiempo!
saludos
pere