Sobre un reloj maestro externo, estaría genial, pero mejor que usar el puerto de Joystick en que hay que mirar el estado por polling, supongo que sería mejor hacer algo que se conectara a un slot de cartucho y poder así generar una interrupción al Z80 con la cadencia que nos interese.
Claro, pero mi idea era que cualquiera pudiera armarlo, un cartucho no es para cualquiera, y de usar un cartucho seria mejor incluir uno o mas microcontroladores, lo que eliminaria la necesidad de usar el PSG.
A ver si me explico, en el caso del sintetizador de voz, originalmente era un programa que hice en un PIC que debe costar 3 o 4 dolares, emite sonido de 8 bits y corre a 20MHz.
Aqui se puede ver la placa, esta armada sobre una mas grande con otros proyectos, pero lo unico que pertenece al proyecto es lo que sale indicado en el video:
http://www.youtube.com/watch?v=b_z-iPSDG7gEso era solamente una prueba cuando aun no estaba terminado el codigo para procesar RS232, por eso tiene una frase grabada al arrancar y no dice nada mas. Cuando estuvo listo lo probe con una terminal por RS232, que en esa ocasion fue un Epson HX-20 pero lo mismo se podria haber usado cualquier terminal, un PC, un C64, un Spectrum con Interface 1, etc.
Aqui se ve la prueba:
http://www.youtube.com/watch?v=Itgr15GTickLas versiones para micros de 8 bits las renombre TAV, pero estan basadas en ese programa, tomando todos los atajos posibles para lograr un resultado similar con recursos muy inferiores. Inicialmente iba a ser un sintetizador de voz expandible en el futuro a placa de sonido basica, emulando algo similar al PSG o el SID, mi idea era conectarlo a un ZX81 o Spectrum 48K para agregar sonido basico o complementar el existente, de ahi vienen los comandos extendidos /0, /1 y /2 que agregan señalizaciones basicas para usar en algun programa. En el futuro habria otros comandos que generarian sonidos basicos como explosiones, pasos, disparos, etc., aunque todo eso quedo congelado desde el momento en que hice la conversion a micros de 8 bits, y en las versiones de TAVx quedan un poco fuera de lugar esos comandos.
A lo que iba es a que desde el momento en que pase el programa al mundo de los micros de 8 bits, el objetivo fue lograr resultados con el hard existente, si tuviera que incorporar hard adicional, el camino logico seria olvidarme de los tiempos, incorporar un medio de reproduccion de sonido fuera del micro (un chip de sonido, un microcontrolador, etc.), controlarlo por MIDI, y usar el micro solamente como interfaz.
Mas alla de esto, igualmente se podria encontrar una solucion intermedia, tal vez un microcontrolador que se sincronice con eventos externos y genere una interrupcion al Z80, ademas de expandir las capacidades de sonido del PSG, pero por el momento estoy mas en soluciones de software.
El chip que programe se quedo sin conectarse a un MSX porque esta diseñado para RS232, pero se podria llegar a emular usando el puerto paralelo, ya que solo es necesaria una linea de salida a 1200bps, y una linea de entrada con la que el PIC indica que no puede recibir datos (CTS). El chip funciona en tiempo real, es decir habla apenas recibe algo valido, y continua con la recepcion en paralelo, no es necesario enviar una frase y luego darle la orden de procesarla, ya que esta diseñado para un flujo continuo de datos. Se puede ver en el segundo video que tengo que ingresar puntos antes de cada frase, ya que comienza a hablar inmediatamente y hay que ser muy rapido tipeando para que no se interrumpa el sonido. Cada punto equivale a un silencio de 1 segundo, por lo que ingresar varios me da tiempo para tipear el resto de la frase.