Autor Tema: POCKET GAL - Sin sonido [SOLUCIONADO]  (Leído 3932 veces)

Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
POCKET GAL - Sin sonido [SOLUCIONADO]
« en: 25 de Febrero de 2015, a las 12:49 horas »
Hola a todos.

Esta reparación en realidad es una excusa para haceros una par de preguntas de un tema que desconozco totalmente :)

Este Pocket Gal no tenía sonido. Lo primero que veo es que alguien ha puesto un cristal de 24 MHz. Otra Pocket Gal que tengo lleva uno de 8 MHz. Ya hemos hablado alguna vez de que hacer eso es posible, ya que el cristal de 24 tiene armónicos, y en este caso oscilaría en uno de sus armónicos ( el de 8 ), pero es una situación "forzada". Así que he quitado el cristal de 24 y he puesto uno de 8.

El sonido sigue sin estar. Os pongo una foto de otra placa casi igual que la mía. En el recuadro rojo está la CPU de sonido (a la derecha), y la ROM y la RAM de sonido (a la izquierda - abajo y arriba respectivamente).



La CPU es una 6502. Tiene dos, iguales, la de abajo, la principal, y la del recuadro rojo, la de sonido. En este caso identificar cual es cual es sencillo, aunque solamente sea por intuición, al estar la del recuadro rojo más cerca de la zona de sonido.

Con la punta lógica veo que el 6502 tiene reloj, señal de RESET correcta, pero no tiene actividad. Sus buses de direcciones y datos están fijos completamente, y solamente saca señal READ, no WRITE.

Como no entiendo muy bien cómo funcionan los ciclos del procesador, entiendo que esta situación indica que el procesador está mal, ya que no es capaz de coger la primera instrucción de la ROM, procesarla, y avanzar (con lo que vería, al menos, variación en el bus de direcciones). Por ello cambio la CPU, pero el problema persiste.

Luego me da por poner una memoria "a caballo" sobre la memoria soldada en placa, y el sonido revive. La cambio, y listo.

Y aquí viene mi duda: yo pensaba que la CPU podía correr código leyéndolo directamente de la ROM, sin tener que pasar por la RAM. Pero en este caso está claro que no: la CPU y la ROM estaban bien, la RAM mal, pero la CPU no era capaz de correr ni siquiera la primera instrucción (que probablemente fuese un sencillo DI, o similar).

¿Alguien nos podría explicar, aunque sea para el Z80, no para el 6502, cómo corre código, es decir, qué sucede en cada ciclo de reloj internamente en la CPU, y en la ROM y la RAM, durante la ejecución de una instrucción? He buscado información, y de momento no he encontrado lo que busco.

Muchas gracias.

Un saludo.


Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
Re:POCKET GAL - Sin sonido [SOLUCIONADO]
« Respuesta #1 en: 25 de Febrero de 2015, a las 13:01 horas »
Por concretar algo más mi pregunta. Estoy leyendo esto (Z80), pero aún me confunde más:

http://home.mit.bme.hu/~benes/oktatas/dig-jegyz_052/Z80-kivonat.pdf

Mi hipótesis sería: durante un ciclo de ejecución de instrucción, la CPU no necesita la RAM, porque lee la instrucción de la ROM, y la ejecuta. Si luego la instrucción necesita en un segundo ciclo o sucesivos acceder a la memoria, lo hará, pero entonces debería ver algo de actividad en el bus de direcciones... ¿Sería esa hipótesis cierta?

Otra opción es que realmente sea así, es decir, que la CPU empiece a correr código, pero en cuanto tenga que acceder a la RAM, si esta está mal, se pare. Es decir, yo vería fijo el bus de direcciones, pero durante un brevísimo instante inicial sí habría tenido actividad...

En resumidas cuentas, la pregunta sería: ¿se necesita la RAM para que la CPU ejecute, por ejemplo, un DI?

Un saludo.


Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
Re:POCKET GAL - Sin sonido [SOLUCIONADO]
« Respuesta #2 en: 25 de Febrero de 2015, a las 16:43 horas »
Bueno, me he estado poniendo un poco al día, con el Z80.

Efectivamente, no pareciera que para correr código le haga falta una RAM, con la ROM sería suficiente. La RAM estaría más enfocada a almacenar datos, a implementar la pila, etc.

Como supongo que finalmente el código va a hacer uso de la pila inmediatamente, y por tanto de la RAM, supongo que realmente la RAM sí es necesaria. Y supongo que lo que yo observo no es exactamente que el bus de direcciones se quede estático desde el principio. Quizá saque una o dos direcciones, y en cuanto necesite hacer uso de la RAM, se pare. O quizá el 6502 funciona distinto al Z80.

Lo mismo, por curiosidad, hago una prueba esta tarde a ver qué veo.

Un saludo.


Characa

  • Con experiencia
  • ***
  • Mensajes: 916
Re:POCKET GAL - Sin sonido [SOLUCIONADO]
« Respuesta #3 en: 25 de Febrero de 2015, a las 17:09 horas »
En efecto, un uP cualquiera (menos el TMS 9000 que por particularidades constructivas, hace uso de RAM externa para su propio uso e inaccesible al usuario) es capaz de ejecutar código leyéndolo de una o varias ROMs, sin mediar para nada RAMs, siempre y cuando no se necesiten procesar datos procedentes de unidades E/S, éstos llevan su propia pila y contador de programa aparte de otros registros de uso general.

Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
Re:POCKET GAL - Sin sonido [SOLUCIONADO]
« Respuesta #4 en: 26 de Febrero de 2015, a las 12:05 horas »
Gracias Characa.

Creo que en el caso del Z80 la pila tiene que implementarse en una RAM externa sí o sí. Y como la pila se emplea aunque no ejecutes instrucciones PUSH (por ejemplo, al retornar de subrutinas y demás), entiendo que el Z80 necesitaría RAM sí o sí, aunque pueda leer y ejecutar el código directamente de una ROM. Es decir, teóricamente no necesita una RAM, pero en la práctica sí. ¿Eso es así?

Un saludo.


Rockman

  • Con experiencia
  • ***
  • Mensajes: 1280
Re:POCKET GAL - Sin sonido [SOLUCIONADO]
« Respuesta #5 en: 26 de Febrero de 2015, a las 21:39 horas »
Marcos, has probado de desensamblar el juego en Mame y ver lo primero que hace el juego? Quizá te da alguna pista.

Saludos.
RESUMEN: Proyecto de incluir versiones españolas de juegos a Mame (Oficial): http://www.aumap.org/foro/index.php?topic=1270.0

Marcos75

  • ****
  • Mensajes: 3042
  • Arcadero de los 80s
Re:POCKET GAL - Sin sonido [SOLUCIONADO]
« Respuesta #6 en: 26 de Febrero de 2015, a las 22:09 horas »
No, no lo he hecho. Pero la teoría dice que, en cuanto el código retorne de la primera interrupción, la CPU tratará de recuperar el PC de la la pila.

He comprobado A0 y, efectivamente, antes de quedarse fijo, el bus de direcciones tiene actividad durante un instante. De haberme dado cuenta de ese detalle antes, quizá no hubiera ido tan a saco "arrancando la CPU", y hubiera hecho alguna prueba también con la RAM...

Un saludo.


pirilipi

  • Recien llegado
  • Mensajes: 66
Re:POCKET GAL - Sin sonido [SOLUCIONADO]
« Respuesta #7 en: 16 de Noviembre de 2018, a las 12:09 horas »
Qué tal a todos. Revivo este hilo porque tengo una duda de principiante.
Estoy revisando una exciting hours que anda bien pero sin sonido.por las salidas analógicas de los dos ay-3-8910 no hay sonidos
Tengo otra placa idéntica , boot también, así que me ayuda a comparar.
Un cpu 6502 , dos roms, y una ram conforman el sistema. Ya cambié la ram y todo sigue igual. A saber:
Tengo reset y reloj en los tres ( cpu y dos ay3)
En la cpu hay actividad en el bus de datos y de direcciones. Pero la línea int está fija en alto. En la placa buena pulsa.
Además la línea r/w está fija ( siempre está en r)
A veces pareciera que se escuchan las voces pero muy muy distorsionadas..
Mi gran duda es:
Cómo puede haber actividad en los dos buses si el cpu solo está leyendo?
Tal vez está en un bucle ?
Corte la pata rw y la levanté para ver si alguien la estaba atando pero el osciloscipio
Me muestra lo mismo. Siempre en alto.
Eso significaría que el cpu está muerto?
Alguien me explica que está pasando?
Saludos