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

Recuperando un Northstar Advantage 8/16

Mensaje por overCLK »

Pues empiezo aquí un hilo que quizá se convierta en una saga como aquel del Spectrum ZX y la ULA defectuosa.

Ha llegado el verano y disponiendo de más tiempo libre, ya no tengo más excusas para meterle mano a ese Northstar Advantage del que puse unas fotos hace algún tiempo. Supongo que nadie tiene experiencia con el, yo tampoco, pero seguro que podéis darme buenas ideas para intentar devolverlo a la vida.

Sobre este ordenador hay alguna documentación disponible, incluso esquemas de la placa, aunque la calidad no es demasiado buena y no tengo claro que estén totalmente actualizados o correspondan a mi placa base. He ido recopilando cosas de aquí y de allí, pero la fuente de saber más importante es el Technical Manual, que se puede encontrar aquí.

Os cuento lo que tengo de momento y donde me he parado.

El ordenador encendía y en ocasiones emitía un pitido (no siempre) para luego no mostrar nada en pantalla ni actividad en la unidad de disco. Lo primero que hice fue extraer los chips de la EPROM de boot y de la bios de teclado, que son respectivamente una Fujitsu MBM2732A-30 y una AMD AM2716. Ambas las pude leer correctamente con mi G540 y me guardé las imágenes por si acaso. De todos modos, no tengo con qué compararlas.

Comprobé que había reloj en el Z80 y actividad en el bus de direcciones y datos. Lo que hice fue sacar el Z80 y ponerlo en mi Harlequin G, para comprobar que no arrancaba correctamente, así que supuse que el Z80 no está católico del todo, y le puse otro Z80 al Advantage. A partir de aquí ya emite el pitido cada vez que arranca.

Seguía sin mostrar nada en pantalla. Vi en el manual que la señal de vídeo es de niveles TTL y va en el pin 8 del conector de vídeo. Comprobé que en efecto ese pin siempre está a cero y que en los pines de sincronismo vertical y horizontal sí que hay cosas que parecen coherentes con lo que dice el manual: pulsos positivos en HSYNC cada 64us y negativos en VSYNC cada 16 ms aproximadamente.

Vi que la señal de vídeo se genera mediante un latch (SN74LS373-N) y una conversión paralelo a serie mediante un SN74LS166AN. Y aquí es donde estoy ahora mismo, tras pasarme un buen rato buscando cuales eran los chips en cuestión. La salida del LS166 va además a una puerta XOR y por eso me costó un poco encontrarlo.

En la salida del SN166 (QH, pin 13) siempre tenemos un cero.
En las entradas paralelas del SN166 hay valores todo el tiempo.
La entrada CLK y CLK INH tienen una señal de reloj de unos 13.5Mhz y supongo que nivel TTL, aunque mi osciloscopio atenúa ya mucho a esas frecuencias. Aquí me extraña que ambas señales sean iguales (incluida fase) hasta que vi que en realidad ambas son la misma (los pines 6 y 7 del chip están conectados). La verdad es que me leí el datasheet del LS166 y me quedé como estaba a este respecto. :(
En la entrada CLR hay un nivel alto, con lo que no debería inhibir la salida.
VCC y GND tienen valores correctos.
SER(1) está a cero y SH/LD (15) tiene unos 4.70 voltios.
Bajo estas condiciones, ¿es lógico que la salida esté siempre a cero?

Por otro lado, está claro que debe haber algún problema adicional, porque tras unos segundos, empieza a pitar de forma intermitente y continua, y cada vez que pita enciende y apaga también el led de la disquetera. Por desgracia no he encontrado información sobre que puede significar esto. :(

¿Qué os parece?
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 »

Bueeeno, veo que no he despertado vuestro interés. No me extraña porque supongo que casi nadie tiene una máquina como esta. Es igual, no desfalleceré. :)

Ahora creo que SH/LD debería estar conmutando y no siempre fijo, ya que la idea es que se ponga activa cuando haya que cargar los valores desde las entradas paralelo. Algo raro pasa ahí, aunque también podría ser que la secuencia de arranque no llegue a habilitar la pantalla porque encuentra errores o quien sabe por qué.

En un intento de intentar entender qué pasa, he comenzado a desensamblar la PROM de arranque. Si os interesa el proyecto está aquí:
https://github.com/teiram/northstar-advantage-boot

Me he encontrado ya con bastantes problemas como puertos de I/O que parecen no estar documentados y también referencias a tarjetas de extensión que no salen en el manual, pero poco a poco igual sale algo. :)

Otra idea que tengo es tirar por fuerza bruta y probar a cambiar el i8035 que usa para la gestión del teclado y el floppy. ¿Sabéis si son complicados de conseguir hoy en día?
Imagen
Avatar de Usuario
javu61 !Sinclair QL
Fundador
Fundador
Mensajes: 2175
Registrado: 30 Mar 2013, 11:58
Ubicación: Valencia
Been thanked: 76 times
Contactar:

Re: Recuperando un Northstar Advantage 8/16

Mensaje por javu61 »

Ese microcontrolador todavía se puede encontrar bien, mira en ebay, este francés tiene algunos http://www.ebay.es/itm/P8035AHL-8BIT-MI ... NsxWp3rRvw
Larga vida y prosperidad \\//_
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 »

javu61 escribió:Ese microcontrolador todavía se puede encontrar bien, mira en ebay, este francés tiene algunos http://www.ebay.es/itm/P8035AHL-8BIT-MI ... NsxWp3rRvw
Gracias Javu :)
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 »

Bueno, tras unas cuantas pruebas parece que el Northstar ha cambiado su comportamiento. Ahora arranca, suelta un pitido y sigue pitando de forma consistente cada 1.7 segundos, cada vez que pita enciende la luz de la disquetera y el motor de la misma permanece encendido.

He descubierto algunas cosas:

Parece que el reloj tiene "fallos". Cada 15ms aproximadamente hay un hueco en la señal de reloj, que dura entre 2.5 y 3 us. No he leído nada de que este ordenador haga contención parando el reloj en la documentación, así que me parece algo extraño, aunque por otro lado, demasiado determinista, que pase siempre con un periodo constante. Una captura de las señales durante uno de estos fallos:
Imagen

Por otro lado, cada vez que hay un reinicio, hay una activación de INT. Lo curioso es que la ROM hace un DI nada más arrancar, y no hay rastro de ningún EI. Tenemos una activación de INT con cada reinicio:

Imagen

¿Habría algún modo de saber cual es la fuente de interrupción?

Ahora he conectado RD, RW, IOREQ, A7, A6, A5, A4 y A0 al analizador lógico y he muestreado para intentar saber qué puertos de I/O se están utilizando. Como tengo parcialmente desensamblada la ROM aquí y esto usa partial decoding de los puertos de I/O hay bastantes seguridad de qué puerto se está usando. He exportado los datos y hecho un pequeño programa en C para procesarlos y sacar los puertos y si es un IN o un OUT, y con esto y el desensamblado a ver si puedo ver por donde va en cada momento y cuando se reinicia.

Cualquier comentario o idea será bienvenida. :)
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 »

Muy buen análisis.
Esa parada de reloj tiene pinta de que la hace el HW al reiniciarlo. Lo de la parada del spectrum no es lo habitual, aunque a lo mejor altwasser creó escuela :D.

Tienes posibilidad de cambiar lel contenido de la ROM?

Si no, qué pasa si arrancas sin la ROM? Cambia el reloj también?

En un z80, la línea INT es de entrada, no la genera el sw. EI o DI sólo indica si hay que hacerle caso o no ;)
Imagen
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 »

dandare escribió:Muy buen análisis.
Palos de ciego, diría yo, pero tengo un palo muy gordo. :D
dandare escribió: Esa parada de reloj tiene pinta de que la hace el HW al reiniciarlo. Lo de la parada del spectrum no es lo habitual, aunque a lo mejor altwasser creó escuela :D.
Lo que pasa es que hay muchas más paradas de reloj que reinicios, es decir, hay tantos reinicios (o beeps) como activaciones de INT (cada 1.7 segundos), pero hay muchas más paradas de reloj, como cada 15 ms.
dandare escribió: Tienes posibilidad de cambiar lel contenido de la ROM?
En principio no tengo ninguna ROM de ese tipo, ni he mirado si puedo adaptarle una 27c128, que de esas tengo unas cuantas. Lo que pensaba hacer es montar un zócalo para el Z80 que tenga las líneas de datos a masa, de manera que ejecute NOPs todo el tiempo y ver si las líneas de dirección van incrementándose como deben a sus diferentes frecuencias. Lo que pasa es que no tengo ningún zócalo ahora mismo, y si los pido tardarán lo suyo. A ver si me paso por una tienda de electrónica y tienen alguno.
dandare escribió: Si no, qué pasa si arrancas sin la ROM? Cambia el reloj también?
Pues eso no lo he probado. Buena idea. :)
dandare escribió: En un z80, la línea INT es de entrada, no la genera el sw. EI o DI sólo indica si hay que hacerle caso o no ;)
Eso es lo que quería decir: Al ver que había una INT para cada reinicio, pensaba que podría ser que se reiniciaba por eso, porque en ese momento creo que está la memoria de pantalla mapeada a 0x0000 y en los vectores de interrupción habrá cualquier cosa, pero si tenemos un DI nada más empezar y ningún EI, no debería nada porque se active INT, ¿verdad?
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 »

La instrucción DI del z80 resetea el flipflop de interrupción IFF1, haciendo que no se salte al vector de interrupción que sea, dependiendo del modo IM y dejando frito el Z80 si se ejecuta una instrucción HALT.

Por tanto, justo detrás de un DI, ya puedes meter los pulsos que quieras por la línea INT que el Z80 no hará ni caso.

Respecto a lo que dices, ten en cuenta que los modos IM0 y IM2 pueden saltar a sitios distintos que al que estamos acostumbrados, dependiendo de los datos del bus y/o el registro I

Otra pregunta, el bus de datos tiene pull-ups como en el spectrum?

Si es el caso, es probable que al quitar la eprom haya una instrucción FF: que es un call a la dirección 38.

Otra cosa, si haces lo del zócalo, no pongas a masa los datos directamente! Que si el z80 escribe algo puedes freir las líneas de datos. Ponlos con unas resistencias de 10k por ejemplo o casi de lo que quieras. Cuanto más gorditas mejor.
Imagen
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 »

dandare escribió:La instrucción DI del z80 resetea el flipflop de interrupción IFF1, haciendo que no se salte al vector de interrupción que sea, dependiendo del modo IM y dejando frito el Z80 si se ejecuta una instrucción HALT.

Por tanto, justo detrás de un DI, ya puedes meter los pulsos que quieras por la línea INT que el Z80 no hará ni caso.
Cierto, pero que haya interrupciones y que coincidan más o menos con los supuestos reinicios tiene que significar algo. De hecho, repasando el manual me he encontrado con esto:
interrupts.png
Sospecho que se pueda tratar de un error de paridad de memoria, porque el teclado lo tengo desconectado y veo que lo que se hace al principio es chequear la memoria: Se van mapeando las cuatro páginas de los 64Kb a la página 0 (este ordenador tiene un bus de direcciones efectivo de 18 bits, y unos registros de control para elegir el mapeo) y se van escribiendo valores a cada posición, que luego se intentan leer y ver si coinciden. Una vez hecho esto intenta mapear la página de RAM que no haya dado errores a una posición determinada para seguir el arranque (o la cero si todas dan errores). Como es configurable mediante un jumper si un error de paridad de memoria genera una INT o una NMI, puedo probar a cambiar ese jumper y ver que pasa.
dandare escribió: Respecto a lo que dices, ten en cuenta que los modos IM0 y IM2 pueden saltar a sitios distintos que al que estamos acostumbrados, dependiendo de los datos del bus y/o el registro I
Ya, pero de todos modos, me da que la ROM de arranque no maneja interrupciones para nada. Tampoco he visto inicializaciones de I, pero puedo ver si hay algo en la ROM sospechoso en los sitios esperados.
dandare escribió: Otra pregunta, el bus de datos tiene pull-ups como en el spectrum?
Ni idea, a ver si veo algo en los esquemas.
dandare escribió: Si es el caso, es probable que al quitar la eprom haya una instrucción FF: que es un call a la dirección 38.

Otra cosa, si haces lo del zócalo, no pongas a masa los datos directamente! Que si el z80 escribe algo puedes freir las líneas de datos. Ponlos con unas resistencias de 10k por ejemplo o casi de lo que quieras. Cuanto más gorditas mejor.
Pues no había caído en eso, muchas gracias!! De todos modos en este caso sólo debería leer, habiendo solo "ceros" en la memoria, ¿no?
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
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 »

Estupenda la documentación. Como dices, puedes cambiar los jumpers de los que hablan a ver si la interrupción se convierte en una NMI. En ese caso apuntaría claramente a error de paridad.

Con d7-d0 aislados del bus y con un pull down, todas las instrucciones son NOP.

Que tengas el teclsdo desconectado no tiene por qué significar que no haya ints, puede que el circuito de scanning esté en la placa principal.

Primera prueba, ver lo de los jumpers.
Imagen
Imagen
Responder

Volver a “Consultas”