Ayer progrese por un lado, pero me encontre con varios problemas por el otro. La cambie la ROM por una ram estatica de 32Kb (el zocalo lo deje preparado para una de 128Kb, pero tenia un par de 32Kb asi que para que voy a desperdiciar tanta memoria si pienso usarla con juegos de 8Kb y en una de esas un par de 16Kb?).
Las pruebas las hice con la placa medio vacia, solo el PIC y la RAM. Puse a punto el programa (unos errores basicos de C y algunos problemas con la rutina de manejo de la UART me hicieron perder mucho tiempo), que conectado al Hiperterminal, recibe comandos de 1 caracter (9600 baudios), para volcar en la terminar el contenido de la RAM o la llena de distintas formas (modo de prueba o un archivo "de texto" recibido desde el hiperterminal).
El volcado de la RAM lo hacia de forma directa (capturar "archivo de texto") pero el hiperterminal se vuelve loco cuando le envio un archivo que no es de texto, que tiene cualquier valor binario, y cada tanto me repite un byte. Yo pensaba que era problema de mi programa (estuve un rato largo con esto), hasta que hice que vuelque en ASCII hexadecimal y ahi vi que el grabado y lectura lo hacia 100% bien.
Despues le meti un inversor (un transistor y 2 resistencias) para invertir la señal de ChipSelect que el Atari usa para la ROM, porque la ROM de atari esta habilitada con 1, y las RAM y cualqueir memoria standart (eprom, flash...) lo hacen con 0 (es /CS la / es de negado).
Lo probe asi con todos los integrados puestos con el Yars Revenge, y no funciono. Ahi me di cuenta de algo muy obvio: La salida del inversor siempre estaba en 0 o 5V, nunca se descolgaba del bus (no tiene modo alta impedancia), y el PIC compite con esa salida, asi que le puse al PIC que use el chip Select por medio del inversor, asi los dos que la usan (CPU y PIC) si se turnan para ver quien lo domina. Por supuesto modifique el programa del PIC y lo probe todo otra vez.
Pruebo otra vez con el CPU conectado y sigue sin andar, entonces hago una prueba minima: mientras en CPU esta conectado, pero en RESET (el PIC controla esta linea) desde el PIC lleno la RAM con datos de prueba y los leo desde la PC. Cuando el CPU esta conectado se graba mal, muchos bytes con basura, aparentemente mientras esta en RESET el micro no libera los BUSES, y no tengo ninguna pata para que haga esto el micro, porque es una version reducida (creo que s lama WAIT la pata que necesito en el 6502). Sin consultar ningun manual ni nada, busco la solucion mas simple: le pongo un transistor que controla la alimentacion del CPU desde el PIC junto con la linea de RESET, asi que ahora cuando el PIC quiere que el CPU no moleste y pueda tener acceso completo a la RAM, lo apago y listo. Con este cambio (muy bruto por supuesto) la prueba de grabado me anda joya. Pruebo todo el sistema completo y sigue sin andar.
Despues voy a tener que probar los integrados en el EDU juegos apra ver si no los queme, no estoy seguro que puede pasar si dos integrados tienen unidas las patas y uno esta en 5V y el otro en 0, no seria raro que algo se halla quemado, igual tengo otro 6507
Saludos
MARCOS