Como diagnosticar problemas de ram en los spectrum 48K

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
hamham
Amstrad CPC 472
Amstrad CPC 472
Mensajes: 71
Registrado: 27 Ago 2012, 22:24
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameCube
Primera consola: Nintendo 64
Ubicación: Alicante
Gracias dadas: 3 veces
Gracias recibidas: 2 veces

Como diagnosticar problemas de ram en los spectrum 48K

Mensajepor hamham » 10 May 2013, 13:08

Hola tropa, como la info para diagnosticar problemas en la ram de los gomitas esta bastante dispersa por la web, aqui os dejo una recopilacion que me hice en su dia para uso personal.
En ella hay tanto informacion del manual de servicio, como de los maestros del soldador que siempre estan ahi para ayudarnos cuando preguntamos en los foros.
Mis mas sentidos agradecimientos a todos ellos. ;)
Si encontrarais cualquier errata agradeceria que me lo hicierais saber para poder corregirla y esta info sea de la maxima utilidad para todos, asimismo cualquier conocimiento para ampliarla sera asimismo agredecida.
Saludos y espero que le sirva de utilidad a alguien. :mrgreen:

Si pensamos que tenemos un problema con la memoria Ram de nuestro spectrum estos son los pasos que deberias seguir:

1 - Lo primero es comprobar que esten correctamente alimentadas, los puntos de comprobación son los siguientes:
Imagen

2 - Si los voltajes son correctos y el spectrum no arranca podria darse el caso de que tuvieras problemas en la memoria alta, hay una cosa que puedes hacer para anularla y quedarte sólo con la memoria baja.
Hasta issue 4b cortocircuitar dos pines de uno de los integrados, el pin 5 de IC23, que debes puentearlo al pin 14 del mismo chip (+5V).
En el issue 5 y 6 esto se consigue llevando el pin 35 del PFC1306 a 5V (por ejemplo, uniendo ese pin 35 con el pin 40)
Haciendo ese puente se bloquea la memoria superior (32K) y el aparato aparece como si tuviera sólamente los 16K de memoria baja.
Si los voltajes son correctos y el spectrum no arranca tendras que ir probando a sustituir las memorias una a una o bien utilizar una Rom de testeo externa, en el Retrowiki magazine nº 1 mcleod_ideafix subió una y explica como utilizarla detalladamente como suele ser su costumbre..

Si los voltajes son correctos y el spectrum arranca hacemos un test de memoria.

Metodo service manual sinclair

Este metodo lo único que hace es introducir datos (poke) en la memoria y dependiendo del resultado puedes determinar si tienes uno o varios chip de la memoria cascados.
1 Ejecutar la sentencia.
PRINT PEEK 23732 + PEEK 23733 * 256
El valor que debe dar es:
(a) resultado para un 48k – 65535
(b) resultado para un16k - 32767
2 Si es distinto ejecutar la siguiente sentencia :
POKE 43201,85 : PRINT PEEK 43201 (= respuesta A)
Si el valor resultado es 85, y no estais comprobando un Spectrum16K probar la siguiente sentencia :
POKE 43201,170 : PRINT PEEK 43201 (= respuesta B)
Si la respuesta ( B ) es distinta a 170 mirar en la siguiente tabla para saber el IC que hay que sustituir. Igual procedimiento si el valor de la respuesta ( A ) no es 85.

Imagen

Por ejemplo si el resultado de la pregunta B = 234 , cambiar IC21

Si hay más de una ubicación RAM defectuosa el IC identificado tendrá que ser reparado antes de que sea posible continuar con el test, sustituyendo los IC necesarios hasta que los resultados sean correctos.

Metodo mcleod_ideafix

1. Haz PRINT 1+PEEK 23732+256*PEEK 23733 . El número que sale (33800 por ejemplo), lo anotas.

2. Haz:

POKE 33800,0: PRINT PEEK 33800
POKE 33800,255: PRINT PEEK 33800

3. Si en pantalla ves los números 0 y 255 respectivamente, significa que el fallo no es de memoria, o es un fallo de memoria intermitente. En tal caso, haz un programa que haga esta misma operación para todos los valores desde el 33800 hasta el 65535, y reporte las direcciones en las que falla. Algo así como esto:

10 FOR n=33800 TO 65535
20 POKE n,0: LET a=PEEK n: IF a<>0 THEN PRINT n; TAB 10;"0";TAB 20;a
30 POKE n,255: LET a=PEEK n: IF a<>255 THEN PRINT n;TAB 10;"255",TAB 20;a
40 NEXT n

Con suerte, este programa te podrá dar información extra que te valga para el siguiente paso. Si no es así, entonces casi casi seguro que el error no está en la memoria sino en otro sitio.

4. Si, como parece, alguno de los dos resultados es distinto del que debería dar, entonces coge el valor que salió y conviértelo a binario usando 8 bits (usando la calculadora de Windows, por ejemplo). Te saldrá un número con un montón de ceros, y algún que otro bit a 1, o bien un número con un montón de unos, y algún que otro bit a 0.

Los bits que se diferencian de los demás corresponden a chips de memoria estropeados. Cada bit es almacenado por un chip diferente, de forma que en tu resultado, el bit de más a la derecha (el menos significativo, o bit 0) es almacenado por el chip IC15. El siguiente, bit 1, lo almacena IC16, y así hasta el bit 7 (el de más a la izquierda), que es almacenado por IC22.

EJEMPLO 1
Haces los dos POKE's/PEEK's de rigor. En el primero sale un 8, y en el segundo 255. El 8 es el que no coincide con el valor esperado (0) así que lo pasas a binario usando 8 bits. Sale esto: 00001000
Cuenta de derecha a izquierda, y el bit "diferente" sale que está en la posición 3 (contamos siempre desde 0). El número de chip estropeado es IC18

EJEMPLO 2
Haces los dos POKE's/PEEK's de rigor. En el primero sale un 0, y en el segundo 111. El 111 es el que no coincide con el valor esperado (255) así que lo pasas a binario usando 8 bits. Sale esto: 01101111
Contando de derecha a izquierda, los bits "diferentes" son el 4 y el 7. Esto significa que hay dos chips estropeados: IC19 y IC22.

EJEMPLO 3
Haces los dos POKE's/PEEK's de rigor, y no sale nada extraño. Ejecutas el programa que te he puesto y aparecen estas líneas:

33802 ------ 0 ------2
33807 -----255 ----251

La segunda columna indica qué valor debería haber salido, y la tercera, el valor que realmente ha salido. En el primer caso, el 2 al pasarlo a binario nos da 00000010 . En el segundo caso, 251 al pasarlo a binario sale 11111011. Esto significa que están estropeados de forma intermitente IC16 e IC17.

Ah! Tampoco se comenta, pero es conveniente hacer los POKE/PEEK's cuando la ULA no está leyendo la pantalla, para que el bus flotante sea de verdad "flotante". Es decir:
POKE D+1,0: PAUSE 1: PRINT PEEK (D+1)

Igualmente es posible que pueda haber problemas en OTRO LADO sin que necesariamente sean las memorias
Puede pasar perfectamente. En tal caso, el culpable es uno de los multiplexores 74LS157.



Tenemos algun chip de memoria rota, ahora que?

Los modelos 48K tienen 2 bancos de memoria. Los primeros 16K son memoria 4116 con velocidad de acceso 150ns. ( IC6 - IC13 ), los restantes 32K son memorias 4532 con velocidad de acceso 200ns.( IC15 - IC22 )
Resulta obvio que los modelos de 16K no tienen los de memoria alta. ( IC15 – IC22 )
1 - Si tienes roto algun chip 4116. memoria baja
En este caso busca un 4116 con velocidad de acceso 150ns (chip 4116-15, 4116-2 ,
a veces viene como 416).
Si no lo encontraras puedes sustituirlo por un 4164 pero tendrias que modificarlo un poco primero para no cargartelo.
Lo ideal seria un 4164-15 o 4164-2 ( es otra nomenclatura 1-100, 2-150, 3-200ns ).
Si no lo encuentras de 150ns pues de una velocidad superior.
La cosa quedaria asi :
Levantamos el pin 1 y el pin 8 para que no entren en el zocalo,( este chip solo necesita la alimentación de +5v ), después hacemos un puente entre el pin 8 y el pin 9 y ya lo tenemos preparado para sustituir el 4116.

Imagen

Si no te a querado suficientemente clara la explicacion, pues a veces me explico como el
culx, jajajaja, aqui el mestre flopping se curro un mega tuto que no deja lugar a ninguna duda.
http://www.zonadepruebas.com/viewtopic.php?f=26&t=3465

2 - Si tienes roto algún chip 4532. memoria alta

Estos chip son imposibles de encontrar. Basicamente la memoria 4532(32Kx1) es memoria 4164 (64Kx1) defectuosa que solo tenía bien la mitad.
Por eso todos los chip 4532 tienen una letrita H o L que indican que parte funciona. Si te bajas el esquema de tu issue verás que hay un selector para ajustarse a la memoria que se instalaba.
La solución es montar un chip 4164 con lo que solucionas todos los problemas. no te importara si es H o L.
Por ello, si tienes roto algún chip 4532 lo ideal es un chip 4164-20 o 4164-3
( es otra nomenclatura 1-100, 2-150, 3-200ns)
Si no lo encuentras de 200ns pues de una velocidad superior.
Última edición por hamham el 10 May 2013, 18:56, editado 1 vez en total.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5314
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 46 veces
Contactar:

Re: Como diagnosticar problemas de ram en los spectrum 48K

Mensajepor mcleod_ideafix » 10 May 2013, 14:25

hamham escribió:2 - Si los voltajes son correctos y el spectrum no arranca podria darse el caso de que tuvieras problemas en la memoria alta

Que los voltajes sean correctos no implica para nada que la memoria baja esté bien, y el problema esté en la memoria alta. Hay que descartar que realmente la memoria baja esté mal antes de pasar a diagnosticar la memoria baja. Un Spectrum con la memoria baja bien y la alta mal, tiene muchas posibilidades de arrancar, en modo de 16K. Hay casos (pocos) en los que sí que es verdad que con la baja bien y la alta mal, el equipo no arranca.

Quizás quieras incorporar esto que escribí ayer a tu recopilación :)
http://foro.speccy.org/viewtopic.php?f=8&t=3255#p34634
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
hamham
Amstrad CPC 472
Amstrad CPC 472
Mensajes: 71
Registrado: 27 Ago 2012, 22:24
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo GameCube
Primera consola: Nintendo 64
Ubicación: Alicante
Gracias dadas: 3 veces
Gracias recibidas: 2 veces

Re: Como diagnosticar problemas de ram en los spectrum 48K

Mensajepor hamham » 10 May 2013, 19:05

mcleod_ideafix escribió:
hamham escribió:2 - Si los voltajes son correctos y el spectrum no arranca podria darse el caso de que tuvieras problemas en la memoria alta

Que los voltajes sean correctos no implica para nada que la memoria baja esté bien, y el problema esté en la memoria alta. Hay que descartar que realmente la memoria baja esté mal antes de pasar a diagnosticar la memoria baja. Un Spectrum con la memoria baja bien y la alta mal, tiene muchas posibilidades de arrancar, en modo de 16K. Hay casos (pocos) en los que sí que es verdad que con la baja bien y la alta mal, el equipo no arranca.


Nunca e pretendido decir eso, me referia a que es mas sencillo descartar primero la alta anulandola que liarnos con la baja

mcleod_ideafix escribió:Quizás quieras incorporar esto que escribí ayer a tu recopilación :)
http://foro.speccy.org/viewtopic.php?f=8&t=3255#p34634


Por supuesto que si, el post no tiene desperdicio. =D>
Modificado el post inicial.
Haber que te parece ahora el paper, lo que se trata es de que la maxima informacion del tema este recopilada para uso de todos y no tener que andar preguntando lo mismo una y otra vez.
Saludos y gracias por todo


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados