Recuperando un Northstar Advantage 8/16

¿Tienes problemas con tu equipo?, preguntanos.

Moderador: Fundadores

Responder
Avatar de Usuario
overCLK !CPC 4
Demonio segundo orden
Demonio segundo orden
Mensajes: 1709
Registrado: 14 Ago 2015, 09:28
Ubicación: Vedra
Has thanked: 3 times
Been thanked: 4 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por overCLK »

dandare escribió:
overCLK escribió:
dandare escribió:
Es posible que no se inicialice porque se reciben INTS/NMIS procedentes de fallos en teclado/disquette? por ahí es por donde voy con lo de sacar el 8035....
Por lo que he visto hasta ahora nunca se habilita NMI. INT se habilita pero de lo primero que hace la ROM es un DI.

He probado a arrancarlo sin el 8035 pero el resultado aparentemente es el mismo: reinicios contínuos. Estoy intentando poner un SPI en el saleae pero no acabo de entender las opciones. En clock he puesto la línea con la OR de MREQ y RD, en enable he puesto none, pero que tengo que poner en MOSI y MISO y qué significan?
Es que SPI no es Simple Parallel, es "Serial Peripheral Interface" un protocolo serie síncrono bidireccional en carrusel en la que una parte es "Master" y la otra "Slave". Así, MOSI es "Master Out Slave In" y MISO "Master In Slave Out" ya que se usan dos hilos para pasar datos de master a slave y de slave a master.
Tienes más detalles aquí por ejemplo.

El analizador que hace falta es uno que se llama "Simple Parallel" o algo así

Oooh, es que pulsando en "Show more analyzers" salen un montón y entre ellos el Simple Parallel, en fin. :(
A ver que saco en limpio de aquí, gracias de nuevo!
Imagen
Avatar de Usuario
overCLK !CPC 4
Demonio segundo orden
Demonio segundo orden
Mensajes: 1709
Registrado: 14 Ago 2015, 09:28
Ubicación: Vedra
Has thanked: 3 times
Been thanked: 4 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por overCLK »

Pues esto ha dado mucho juego y diversión. :)
Como vi que con direcciones parciales era muy complicado seguir la ejecución, probé una barrabasada:
Hacer tres capturas, en cada una de ellas capturar 7 bits del bus de dirección y solapar ciertos bits entre ellas como comprobación. Así que hice lo siguiente:
- Primera captura: A0-A6
- Segunda captura: A5-A11
- Tercera captura: A9-A15

No las tenía todas conmigo, pero me hice un pequeño programa en C que leía las tres capturas, comprobaba que los bits de solape coincidían e iba componiendo las direcciones con esos tres trozos.
Tuve que hacer un ajuste inicial, porque las primeras muestras no coinciden, pero como muy al principio se salta a la dirección 0x8011 es sencillo ajustar las tres muestras para que empiecen igual con esta referencia, ya que tenemos cambios suficientes al principio para saber como tienen que evolucionar los tres segmentos de la dirección. Me parecía poco probable que no fuesen derivando los tres muestreos, pero, por probar...

El caso es que de los cuatro millones y pico de muestras que saqué no había ningún mismatch entre los solapes, así que pintaba bien.
Cogí por un lado el barrido del bus de direcciones, por otro mi desensamblado de la ROM de arranque y poco a poco fui avanzando, reduciendo los bucles a mano (intenté automatizarlo pero se me complicó demasiado, así que a fuerza bruta).

El resultado de este trabajo que me ha llevado un par de horitas es esto, de donde se pueden sacar (creo yo) las siguientes conclusiones:

- El chequeo de la RAM principal (la que cambié completamente) es correcto (tengo que revisar unos chequeos que hace, porque parece que encuentra errores de paridad, pero creo que invertí la lógica en mi cabeza al comprobarlo :) ). Va escribiendo posición a posicion en los 64Kbytes de RAM principal y no encuentra ninguna inconsistencia entre lo que escribe y lo que lee, ya que nunca entra en la parte de código donde apunta los errores en algunas variables.
- El chequeo de la RAM de video es un desastre. Solo chequea el primer byte y falla. En el caso de la RAM de video, no se sigue comprobando y hace como si no pasara nada, pasando a inicializar las rutinas de video.

El problema es que la rutina de video se basa en un segmento de memoria donde apunta, entre otras cosas, la dirección de retorno al programa llamante. Este segmento de datos lo coloca en memoria de video, porque se ve que ix apunta a 0xf0 y antes de entrar en esta parte mapea la memoria de vídeo a 0x0000 y 0x4000. Luego utiliza el registro ix para direccionar esta memoria y en un momento dado, presumiblemente cuando intenta volver a la dirección de retorno hace:
ld l,(ix+006h)
ld h,(ix+007h)
jp (hl)
Esto provoca la siguiente secuencia en el bus de direcciones:
2.772878583:	0x84b1		ld l,(ix+006h)
2.772879583:	0x84b2
2.772880583:	0x84b3
2.772882583:	0x00f6		-->(ix+006h)
2.772883333:	0x84b4		ld h,(ix+007h)
2.772884333:	0x84b5
2.772885333:	0x84b6
2.772887333:	0x00f7		-->(ix+007h)
2.772888083:	0x84b7		jp (hl)
2.772889083:	0x0909
...
2.789069917:	0x2000
...
2.800343333:	0x3000
...
2.811616750:	0x4000
...
2.822890167:	0x5000
...
2.834163583:	0x6000
...
2.845437083:	0x7000
...
2.856710500:	0x8000
Es decir, salta a 0x0909 que no puede ser un retorno a la EPROM (si miramos el listado, vemos como la dirección de retorno se inicializa a 0x8ae1):
2.772592833:	0x8ad8		ld hl,video_ret_addr (8ae1)
2.772593833:	0x8ad9
2.772594583:	0x8ada
2.772595333:	0x8adb		ld (00f6h), hl
2.772596333:	0x8adc
2.772597083:	0x8add
2.772599417:	0x8ade		jp vdriver (8414h)
, y a partir de ahí, se recorre todas las direcciones de una en una (entiendo que porque no lee más que NOPs) hasta la 0x8000, que es de nuevo el comienzo de la EPROM, y vuelta a empezar.
Tarda en hacer esto unos 2.8 segundos, que es el tiempo que pasa entre pitidos aproximadamente.

Así que todo apunta a que la RAM de vídeo está mal, o no la lee bien por alguna razón. Lo que me extraña un poco es que se la encuentre toda a cero, no sé, esperaría un comportamiento más errático. Si bien es verdad que hay una fase donde pone a cero una buena parte de ella, de todos modos, estaría bien saber si lo que está mal es la RAM, o el acceso a la RAM.

Pues ha estado bien esto, lo malo es que ahora cierro los ojos, y ya solo veo mnemónicos de ensamblador de Z80. :)

Supongo que lo suyo será cambiar la RAM de video, veo que es de tipo AM9016EPC, pero son nada menos que 18 chips. ¿Sabéis si esta RAM es fácil de conseguir o cuales son equivalentes?
Imagen
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 31 times
Been thanked: 163 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por Kyp »

Parece un equivalente de la 4116, las que usa el Spectrum como RAM baja. Supongo que podrás hacer el mismo apaño para usar la 4164 que igual es más fácil de encontrar. E incluso se podría hacer un mod para demultiplexar el bus de direcciones y usar una sram. Lo malo es que al usar un bit de paridad se complican un poco las cosas.
Avatar de Usuario
overCLK !CPC 4
Demonio segundo orden
Demonio segundo orden
Mensajes: 1709
Registrado: 14 Ago 2015, 09:28
Ubicación: Vedra
Has thanked: 3 times
Been thanked: 4 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por overCLK »

Kyp escribió:Parece un equivalente de la 4116, las que usa el Spectrum como RAM baja. Supongo que podrás hacer el mismo apaño para usar la 4164 que igual es más fácil de encontrar. E incluso se podría hacer un mod para demultiplexar el bus de direcciones y usar una sram. Lo malo es que al usar un bit de paridad se complican un poco las cosas.
Gracias Kyp!
Pues el caso es que tengo unos cuantos 4116 de mi Spectrum 48K sin ULA, pero nunca recuerdo si la velocidad de acceso puede ser mayor o menor sin problemas. Creo que los del Spectrum son de 150ns y estos según lo que veo por ahí son de 200ns.

También creo que tengo unos cuantos 4164 de cuando reparé el Commodore64, creo que llevaba de esos, aunque sinceramente no me acuerdo.

Sobre el bit de paridad, no tengo claro del todo que se use en la memoria de pantalla porque:
- Según el manual la memoria de pantalla no lleva paridad.
- Pero los chips están ahí.
- Según el manual lleva 16 K + 4 K de memoria de pantalla
- Pero esta placa lleva 16K + 16 K
- Cuando arranca detecta errores de paridad en la memoria principal (lo he revisado y me temo que es así) aunque las operaciones de escritura y lectura posterior no dan errores.
- Pero cuando intenta comprobar la memoria de video, falla en el primer byte la prueba de escritura - lectura, pero luego chequea el bit de error de paridad y no detecta error.

Que lío!! :)
Igual empiezo por ir quitando los chips y poniendo zócalos que siempre vendrá bien, y así voy amortizando esa fantástica estación desoldadora. ;)
Imagen
Avatar de Usuario
overCLK !CPC 4
Demonio segundo orden
Demonio segundo orden
Mensajes: 1709
Registrado: 14 Ago 2015, 09:28
Ubicación: Vedra
Has thanked: 3 times
Been thanked: 4 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por overCLK »

carmeloco escribió:En principio, siempre puedes usar chips más rápidos, o sea, 150, es más rápido que 200. El chip, podrá trabajar a menos velocidad sin problemas, pero no a más de su nominal.
Perfecto, muchas gracias!
carmeloco escribió: Por otro lado, recuerda que encontraste cosas que no coincidían en el manual, y lo de la memoria de vídeo podría ser otra de esas cosas.
Ya, ese es el problema. Si el chip de paridad está ahí, me extraña que no se use. Es una pena lo del manual porque la verdad es que está muy bien, pero claro, no se puede uno fiar.
De todos modos lo que está claro es el tipo de chips que son, porque eso no lo he sacado del manual, sino que ha sido por inspección visual. :)
Imagen
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por dandare »

Es un análisis genial. Enhorabuena. Zócalos y a cambiar RAM ;). Me da que ya lo tienes casi ;)

Estaría bien que comprobaras los dos bits altos del bus de direcciones que son los que mapean la memoria de video y las demás in y out. Deberían ser unos registros / flip flops.
Si ves que los puedes cambiar, adelante también.
Imagen
Imagen
Jason_rg
Demonio tercer orden
Demonio tercer orden
Mensajes: 757
Registrado: 16 May 2015, 20:32
Ubicación: Guipuzcoa
Has thanked: 2 times
Been thanked: 18 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por Jason_rg »

Hola a todos

Flipo con el tema. :?
Animo overCLK que ya queda menos ... para recuperar un pedacito de historia de la informática, porque vaya maquinón :)

Saludos
Avatar de Usuario
overCLK !CPC 4
Demonio segundo orden
Demonio segundo orden
Mensajes: 1709
Registrado: 14 Ago 2015, 09:28
Ubicación: Vedra
Has thanked: 3 times
Been thanked: 4 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por overCLK »

Pues ayer le estuve dando vueltas y no las tengo todas conmigo.
Estuve leyendo en el manual que la memoria de video se refresca desde el circuito que genera la misma señal de video (ya que accede a toda la memoria de forma regular).
Por otro lado, me escama mucho ese 0x0909 que se lee de esa posición de memoria. No sé si porque los dos bytes son iguales o porque no se parecen en nada al valor que debería haber. Esperaba que si algún chip de memoria estuviera mal, solo cambiasen algunos bits, pero hemos pasado de:
8ae1        10001010 11100001
0909        00001001 00001001
Parecen demasiados cambios para un chip o dos mal, ¿no? De hecho, solo dos bits se puede decir que no presentan fallos viendo eso (y esos a saber)

¿Y si fuera un problema de refresco? ¿Veis viable comprobar con el analizador las señales en los chips de RAM y ver si se están refrescando correctamente o alguna otra solución?

Creo que voy a sacar algún volcado más a ver que sale en esa dirección de retorno...
Imagen
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3401
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 31 times
Been thanked: 163 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por Kyp »

El Z80 fija una dirección y activa la señal RFSH y MREQ, RD no se activa, para refrescar la memoria en el T3 de cada ciclo M1 si no recuerdo mal. Monitorizando esas señales puedes comprobar que el refresco se está haciendo correctamente.

El hecho de redibujar periódicamente la pantalla sirve de refresco para la memoria de vídeo (el Spectrum también funciona así).
Avatar de Usuario
overCLK !CPC 4
Demonio segundo orden
Demonio segundo orden
Mensajes: 1709
Registrado: 14 Ago 2015, 09:28
Ubicación: Vedra
Has thanked: 3 times
Been thanked: 4 times

Re: Recuperando un Northstar Advantage 8/16

Mensaje por overCLK »

Kyp escribió:El Z80 fija una dirección y activa la señal RFSH y MREQ, RD no se activa, para refrescar la memoria en el T3 de cada ciclo M1 si no recuerdo mal. Monitorizando esas señales puedes comprobar que el refresco se está haciendo correctamente.

El hecho de redibujar periódicamente la pantalla sirve de refresco para la memoria de vídeo (el Spectrum también funciona así).
Gracias Kyp.
Pues tengo algún dato más:

- He hecho tres capturas más, ensamblado los pedazos y ... la dirección en la que se pierde (retorno de la rutina de video) siempre es la 0x0909, cosa que me parece curiosa. Pense, como ya dije, que sería algo más aleatorio.
- Lo que acabo de ver es que en todos los pines de la RAM de video parece haber las tensiones correctas, pero en /WE no. Y si hacemos caso al programa de arranque debería estar intentando escribir (la secuencia de test) (En D_IN sí que se ve movimiento).
- He comprobado que en la RAM normal sí que hay habilitaciones de /WE... cosa que concuerda también con el programa y su testeo de memoria

Todos los contactos WE de la memoria de video (incluyendo los chips de paridad) están conectados entre sí, asi como lo están también entre sí los de la RAM normal. Pero no hay conectividad entre los WE de la RAM normal y la de vídeo.

Por hacer el tonto he medido la resistencia entre los WE y el pin WR del Z80. Con los chips de RAM normal hay 1.8M y con los de video, acaba sacando un valor negativo :o :o , supongo que es cosa de condensadores que se cargan o cosas así, porque primero sube, luego baja,...

Me da a mi que si no hay WE en la RAM de video, ya puedo poner chips de RAM chapados en oro que va a ser más o menos lo mismo.

¿Alguna sugerencia?
Imagen
Responder

Volver a “Consultas”