SUPERUPGRADE
MANUAL DE MONTAJE
Si ya tenéis experiencia con estas cosas os aconsejo que al menos os leáis la lista de erratas que viene al final, ya sabéis cosas que pasan con los prototipos que salen fallos.
Para los que no la tengáis, supongo que os vendrá esta guía de montaje.
Empezaremos con un par de imágenes que nos van a servir de guía durante el montaje.
La primera de ellas es el layout de los componentes:
Y la segunda es el esquema del circuito, para verlo en grande pinchar sobre la imagen.
Otros dos secciones muy a tener en cuenta están al final del tutorial y son el listado de componentes, y la Fe de Erratas.
Es importante que os deis cuenta que, una vez enchufado el interface en el spectrum, los componentes van en el lado del televisor, quedando hacia nosotros el lado de las pistas. Esto se hace así para que los componentes que sobresalen no tropiecen con el Spectrum al conectar el interface.
Luego veremos que está indicado en la placa, pero desde ya os aviso que por lo anterior, el conector hay que soldarlo en el lado de las pistas y no en el de los componentes.
Echémosle ahora un vistazo a la placa.
Aquí os presento la cara de los componentes.
Y esta es la cara de las pistas.
¿A que ha quedado chula eh?
Bueno pues vamos a ponernos la ropa de faena, el soldador a calentar, los componentes a mano y el estaño a nuestra vera.
Empezaremos por soldar lo que menos altura tenga y acabaremos por lo más alto, de esta manera podremos apoyar la placa tranquilamente en la mesa para poder hacer la soldaduras con tranquilidad.
Siguiendo esa norma empezaremos por los diodos.
Doblaremos un poco las patas de los componentes para que se sujeten bien cuando le demos la vuelta a la placa no se salgan.
Una vez soldados, cogemos la herramienta de matar de la foto y nos liamos a cortar lo que sobra.
Vaya, si no me han quedado mal del todo, jejejeje.
Seguimos con las resistencias....
Tened cuidado cuando lleguéis a este punto, ya que, tal y como dice en la fe de erratas, la placa tiene dos errores de rotulado.
Con tanto mareo de componentes de arriba para abajo, R32 no tiene rótulo, y a R14 se le ha quedado el rotulo desplazado por encima del diodo que tiene inmediatamente arriba.
Ya os digo, se ve que me había fumado un canuto y me bailaron un poco los cartelitos. :))
Y después seguimos con los zócalos.
Y tras los zócalos soldamos el cristal, los condensadores de lenteja y los conectores de audio.
Por comodidad, y como una vez conectado el interface, la cara de las pistas queda de cara al usuario, he decidido colocar los jumpers, el led y los selectores del lado de las pistas. Podéis hacerlo así o del otro lado, pero si lo hacéis como yo, tened cuidado y no cometáis el mismo error que yo.
Los dos jumpers de más abajo se tienen que soldar obligatoriamente del lado de los componentes, ya que si no, después tropiezan con el Spectrum y no dejan insertar el interface.
Hala, pues a mí me toca desoldar esos dos jumpers y soldarlos por el lado contrario.
Vamos ahora con el conector EDGE y la plaquita de expansión.
El diseño que tenemos entre manos, tiene la particularidad de que no replica pin a pin el puerto del Spectrum con la placa de expansión, por lo que no podemos soldar la plaquita de expansión directamente a las soldaduras del conector EDGE.
Por ello tenemos punto de soldadura diferentes para cada cosa.
En la placa viene un cartelito de ayuda que indica en qué lado y a qué altura tenemos que soldar el puerto de expansión o el conector EDGE.
Para soldar la plaquita de expansión cortaremos dos tiras de 28 pines y empujaremos el pin número 5 para sacarlo de la tira. Este pin es el que coincidirá luego con la posición de la ranura del Spectrum.
Una vez tenemos cortadas las tiras, cogemos una de ellas y la insertamos en donde pone expansión en el lado de los componentes.
Es muy importante soldar esta tira antes que el conector EDGE, ya que si no luego no tendremos acceso para soldar los pines de esta tira.
Quedará así:
Una vez tenemos esta tira soldada, podemos pasar a mecanizar el conector EDGE.
Sinclair ha hecho un tutorial muy completo dedicado solo a este punto al que podéis acceder
aquí
Lo primero sacamos los pines correspondientes a la posición número 5 empujándolos desde abajo.
Posteriormente cortaremos los laterales con una sierra, teniendo mucho cuidado de no romper el conector, tras lo cual ya podemos pasar a soldar el conector en la placa.
Una vez soldado el conector soldaremos la otra tira de pines.
Vamos ahora con el conector de vídeo.
Aquí es donde me doy cuenta del primer fallo gordo. El conector de vídeo tiene intercambiados el vivo por la masa, es lo que tiene hacer la huella de los componentes fijándose solo en una foto y alguna medida que figura en el anuncio de ebay, que al final pasan estas cosas.
No nos queda más remedio que convertir este conector en aereo.
Así es como debería haber quedado.
Y así es como queda.
Os habéis dado cuenta en las fotos anteriores, que ahora es un buen momento para soldar los conectores DB9 para los joysticks e insertar los chips en sus zócalos.
Al insertar los chips en sus zócalos tener mucho cuidado en que la muesca quede en la misma posición que en la placa, y fijaos bien porque las GAL no son intercambiables entre sí, ya que cada una tiene unas funciones diferentes.
En el paquete que os envíe irán perfectamente rotuladas como IC10 y IC5 y programadas para que sea pinchar y listo.
Vamos a soldar ahora la placa de expansión. Para ello doblamos ligeramente los pines que hemos soldado para que la placa quede sujeta en el hueco resultante.
Fijaos bien que la plaquita quede alineada antes de soldarla.
Pasamos a soldar la plaquita tanto por arriba como por abajo.
Y tras esto ya solo nos queda poner los jumpers en la posición correcta y pasar a probar el invento.
La Flash ROM os la envío con un set de prueba, pero si queréis meterle otras ROMs diferentes, solo tenéis que hacerlo con la programadora.
POSICIÓN DE LOS JUMPERS
JP2 - Con el jumper en la posición 1-2 queda habilitada la memoria del interface, y en la posición 2-3 queda habilitada la memoria interna del spectrum
JP1 y JP6 - Sirven para habilitar la memoria de 512Kb o deshabilitarla. Con ambos jumpers en la posición 2-3 se el interface tendrá 128Kb y si están en la posición 1-2 tendrá 512Kb.
JP3 (bit bajo), JP4 (bit intermedio) y JP5 (bit superior) - Sirven para seleccionar uno de los 8 bloques de 64Kb de la memoria flash. Dichos jumpers en la posición 2-3 corresponden con un 0 y en la posición 1-2 corresponden con un 1.
Con estos tres jumpers formamos un número de 8 bits que corresponde con el bloque de 64Kb que está activo.
DESHABILITACIÓN DE LA RAM INTERNA EN NUESTRO 48Kb
Si disponemos de un Spectrum 16Kb no necesitaremos tocarlo para nada a la hora de usar nuestro interface, pero si por el contrario es un 48Kb necesitaremos hacer un pequeño cambio interno en nuestro spectrum que permita al interface deshabilitar la memoria alta.
Tenemos dos casos diferentes dependiente de la versión de la placa.
Para todos los modelos desde la Issue 1 hasta la Issue 4:
Para deshabilitar la memoria alta de un tenemos que meter 5v en el pin 5 de IC23.
En condiciones normales esto se puede conseguir puenteandolo con el pin 14 del mismo chip, pero en nuestro montaje hemos habilitado el pin 4A que estaba sin usar del bus para suministrar esos 5V. De esa manera cuando está insertado el interface y el jumper en la posición adecuada se deshabilita automáticamente la memoria alta, y si lo desenchufas se vuelve a habilitar sola.
Debemos por tanto soldar un cable entre el pin 5 de IC23 y el pin 4A del slot de expansión.
En el caso de que nuestro spectrum sea una Issue 5 o 6 deberemos conectar la patilla 35 de IC27 con la patilla 4A del bus de expansión.
En la imagen no se ve porque queda debajo del disipador metálico, pero es la patilla que hace quince si empezamos a contar desde abajo a la derecha.
FE DE ERRATAS
- R32 no tiene rótulo, es la única que no lo tiene por lo que no os costará encontrarla. Es la resistencia de - 1K8 que está situada justo a la izquierda de la memoria flash.
- R14 tiene el rótulo desplazado hacia arriba, por encima del diodo D7, es decir, es la resistencia situada entre D7 y D13.
- El conector de video está al revés teniendo cambiada la masa por el vivo. Este es el fallo más gordo y obliga a convertir en aéreo lo que debía ser soldado en placa. Es lo que hay, uno no es infalible. :(
- JP2 no debe llamarse DISA17 tal y como pone en la placa, sino DISRAM, este es el jumper para deshabilitar la RAM del interface y habilitar la interna sin desconectar el interface.
CORRECCIONES NECESARIAS
Seguidamente os voy a exponer las correcciones necesarias para que el circuito funcione adecuadamente.
La primera corrección va encaminada a permitir la grabación de la memoria flash y consiste en la adición de un diodo que pone a nivel alto la señal /OE del chip cuando estamos intentando escribir. En el diseño original se ponía siempre a 0 cuando se accedía al chip y esto no es correcto en el caso de la escritura.
La segunda corrección es necesaria para añadir un reset a la GAL que controla la paginación. Como todas las patillas de dicha GAL estaban ocupadas he sacado fuera la funcionalidad que deshabilitaba la ROM con las señales A14, A15 y MREQ.
Por último es necesario puentear R27 para que funcione la deshabilitación de la RAM externa. Esto no es necesario si no os hace falta esta opción.
Al final las modificaciones consisten en la adición de 3 diodos (D17, D18 y D19) y unos cuantos cables que afean un poco el circuito.
Visto desde la parte de los componentes los cambios quedarían como sigue:
Si lo miramos desde la parte de las pistas, que es donde tenemos que soldar, los cambios quedarían así:
El listado de operaciones a realizar es el siguiente:
- Desoldar el ánodo de D15 y soldar un cablecillo desde el ánodo hasta la patilla 4 de IC10.
- Soldar el ánodo de D17 con el ánodo de D6 y el cátodo de D17 con el cátodo de D15.
- Soldar el ánodo de D18 con la patilla 13 de IC10 y el cátodo de D18 con el cátodo de D15.
- Soldar el ánodo de D19 con la patilla 7 de IC10 y el cátodo de D18 con el cátodo de D15.
- Soldar un cablecillo entre la patilla 14 de IC10 y la patilla 1 de IC3.
- Soldar un cablecillo entre los dos extremos de R27.
Las ecuaciones de lC10 ya están modificadas para incorporar estos cambios.
POSIBLES PROBLEMAS QUE NOS PODEMOS ENCONTRAR
He detectado que en algunos Spectrums, cuando conectamos el interface dejan de funcionar las dos semifilas superiores. Es decir, las teclas 1234567890.
El problema está provocado por el interface de joystick.
Como sabéis el protocolo Sinclair y el Protek/cursor, comparten puerto con las semifilas superiores, traduciendo los botones del joystick en teclas. Pues bien, los botones del joystick pulsados ponen el bit correspondiente a 0, mientras el resto se lleva a 1.
Estos unos son intencionadamente débiles para que si se pulsa una tecla en el spectrum esta pueda poner ese bit a 0. La forma en que se fuerza esa debilidad de los unos es mediante las resistencias R11, R12, R13, R14 y R23 de 1K5.
Este valor de 1K5 es el que se utilizaba en el interface comercial MHT Ingenieros y funciona en la mayoria de los spectrums, pero resulta que me he encontrado con algunos spectrums que este valor es insuficiente.
Supongo que debe ser problema de impedancia en la membrana, bien porque esté deteriorada o bien porque haya sido sustituida por otra de mayor impedancia.
La solución a este problema (solo en el caso de que aparezca) pasa por sustituir dichas resistencias por resistencias de 10K. En las pruebas empíricas que he hecho esto ha funcionado perfectamente.
Evidentemente yo no puedo probar con todos los spectrums existentes, pero en el caso de que dejara de funcionaros el joystick al hacer esta sustitución probad con un valor algo inferior, por ejemplo 4K7.
ADD-ON DE SELECCIÓN POR SOFTWARE
El add-on de selección por software consiste básicamente en sustituir la función de los jumpers JP3, JP4 y JP5 por una GAL que permita cambiar la ROM activa a través del puerto $043B (1083) mediante la decodificación parcial (bits A15,A7,A5,A1 y A0).
Es muy importante quitar los jumpers para pemitir que el add-on funcione.
En principio la idea era que el add-on consistiera sólo en una GAL con toda la lógica necesaria, pero debido a los conflictos que el divIDE tenía con el add-on se ha tenido que añadir circuitería adicional, que consiste básicamente en un chip de 4 puertas OR (74LS32), tres diodos y una resistencia de 4k7.
La plaquita se ha planteado para pinchar sobre el zócalo de la memoria flash, ya que allí tenemos la mayoría de las señales que necesitamos. Aun así hay algunas señales que tenemos que tomar de otros puntos de la placa, como son (A15, /WR, /IORQ, /RESET, /MREQ, BACK_MREQ, BACK_A15).
Empezaremos con el esquema de la plaquita y luego continuaremos con el cableado a la placa principal.
El método a utilizar será poner dos tiras de 16 pines en la parte inferior de un trozo de placa de prototipo para permitirnos pinchar sobre el zócalo de la memoria Flash.
En la parte superior desplazado ligeramente sobre las anteriores, soldaremos otras dos tiras de pines, pero esta vez hembra, para actuar de zócalo para la memoria flash.
Habrá que soldar ambos pares, pin a pin para asegurar la continuidad entre la memoria flash y su zócalo original.
Los pines los soldaremos entre si todos (los del zócalo superior con los de los pines de abajo), uno a uno excepto las señales ROMA14 y ROMA15 (patillas 29 y 3 de la memoria) que, como se ve en el esquema deben quedar separadas, ya que las filtraremos en la GAL generando dos nuevas señales ROMA14', ROMA15'
Una foto por debajo de cómo nos debería quedar (disculpad las feas soldaduras =) ):
En el caso de las señales ROMA14 (patilla 29) , y ROMA15 (patilla 3), las señales que vienen de la placa deben conectarse a las patillas 8 y 9 de la GAL respectivamente, mientras que las señales que van a la memoria (ROMA14' y ROMA15') van a las patillas 18 y 19 de la GAL.
Una vez hecho esto, ya tenemos la posibilidad de soldar los cables necesarios entre un zócalo de 24 pines estrecho que soldaremos para la GAL y el nuevo zócalo que hemos improvisado para la memoria flash.
Para ello, seguiremos el esquema expuesto anteriormente.
Una vez hecho esto, ya pasaremos a hacer las conexiones de las señales que nos faltan con la placa principal.
El esquema a seguir para esos hilos es el siguiente:
Para permitir conectar y desconectar la placa yo he añadido una pequeña tira de 7 pines hembra que nos permitirá conectar un cable plano al que le he soldado unos pines al efecto.
No os añado una foto de como ha quedado el mío por no confundiros, ya que tengo muchas cosas innecesarias de tanto probar unas cosas y otras.
Algo que debéis tener en cuenta es que las señales A15 y /MREQ, al añadir el add-on, hay que desconectarlas del bus de expansión trasero, ya que la gal del add-on generará nuevas señales BACK_A15 y BACK_MREQ para conectar en el bus de expansión trasero.
Disculpad la mala calidad de la imagen, pero no he sido capaz de sacar una foto mejor desde tan cerca.
La idea es conectar las señales A15 y /MREQ en los pines que hemos levantado y BACK_A15 y /BACK_MREQ directamente sobre las pistas del bus de expansión.
Yo le he añadido un trocito de cinta termoretráctil al cable que va al pin para evitar que hagan contacto.
Por último deberéis grabar las ecuaciones en la gal del add-on.
Las ecuaciones de esta nueva GAL las tenéis
aquí:
LISTADO DE COMPONENTES
JACK3,5mm_______________________________________SPEAKER IN, AUDIO OUT
C1-C9______________100nF________________________Condensadores cerámicos
C10-C12____________10µF_________________________Condensadores electrolíticos
C13,C14____________33pF_________________________Condensadores cerámicos
D1-D16_____________1N4148_______________________Diodo
IC1________________74HC138N__________DIL16______Decodificador 3 a 8 líneas
IC2________________74HC132N__________DIL14______4 puertas NAND de dos entradas
IC3________________74HC273N__________DIL20______FLIP-FLOP octal (tipo D)
IC4________________74HC74N___________DIL14______FLIP-FLOP dual (tipo D)
IC5,IC10___________GAL22V10D_________DIL24-3____Circuito lógico programable
IC6 _______________AM29F040B_________DIL32______MEMORIA FLASH 512Kb
IC7________________AY-3-8912_________DIL28______CHIP DE SONIDO
IC8________________BS62LV4007PC-70___DIL32______SRAM 512Kx8
J2,J3______________DB9-HEMBRA___________________CONECTORES DE JOYSTICK
JP1________________JUMPER____________DISA17_____DESHABILITACIÓN RAM 256KB (A17)
JP2________________JUMPER____________DISRAM_____DESHABILITACIÓN RAM DEL INTERFACE
JP3________________JUMPER____________ROMA16_____SELECTOR LINEA A16 DE LA ROM
JP4________________JUMPER____________ROMA17_____SELECTOR LINEA A17 DE LA ROM
JP5________________JUMPER____________ROMA18_____SELECTOR LINEA A18 DE LA ROM
JP6________________JUMPER____________DISA18_____DESHABILITACIÓN RAM 512KB (A18)
K3_________________PULSADOR__________NMI________PULSADOR DE NMI
K4_________________PULSADOR__________RESET______PULSADOR DE RESET
LED1_______________LED__________________________INDICADOR ESCRITURA ROM
QG3________________OSCILADOR_________DIL14S_____3_579545MHZ
R1,R32_____________1K8__________________________RESISTENCIA 1/4W
R2_________________820__________________________RESISTENCIA 1/4W
R3,15..22,29..31_____4K7__________________________RESISTENCIA 1/4W
R4,9________________1K___________________________RESISTENCIA 1/4W
R7,10,25,26_________10K___________________________RESISTENCIA 1/4W
R5,6______________100K___________________________RESISTENCIA 1/4W
R8,24______________470___________________________RESISTENCIA 1/4W
R11..14,23,27_______1K5___________________________RESISTENCIA 1/4W
S1_______________SPDT___________________________SELECTOR 1 POLO 2 VIAS
S2_______________DPDT___________________________SELECTOR 2 POLO 2 VIAS
VIDEO IN_________________________________________RCA HEMBRA
X1______________________________________________CONECTOR EDGE 28 PISTAS X 2
X2______________________________________________PLACA EXPANSORA DE BUS
ARCHIVOS DEL SISTEMA
Del siguiente enlace os podéis descargar los archivos que necesitaréis para programar las GAL y la memoria Flash.
También tenéis los esquemas y todos los fuentes de la versión.
Adjunto también las principales ROMs del +3 parcheadas para funcionar con el superupgrade.
Descargar
Hay que tener en cuenta que las ecuaciones de IC10 cambian desde la versión 0.4 que es la que corresponde a la placa. Es por ello que es imprescindible hacer las modificaciones en la placa para que funcione.
En la carpeta ROMs tenéis dos ROMSETs diferentes, además de los fuentes del BIOS.
En el caso de que hayamos fabricado el add-on podremos aprovechar al máximo las características de dichos ROMSETs, aunque de todas formas hay funciones que podemos aprovechar aun en el caso de que no hagamos el add-on
- ROMSET de testeo. Esta ROM nos permitirá realizar las pruebas iniciales para comprobar que todo funciona bien.
Consiste en un menú inicial y 31 copias de una ROM del Spectrum original. Si tenemos el add-on conectado, cuando arranquemos aparecerá el menú que nos permitirá seleccionar con que ROMSET y con con que ROM queremos arrancar.
En el caso de que no tengamos el add-on podremos seleccionar la ROM activa con los jumpers y pulsaremos reset.
El mensaje de inicio de las ROMs está modificado para mostrarnos que ROMSET y que ROM está activo.
- ROMSET de ejemplo. Este ROMSET tiene el BIOS instalado en la ROM0 y una serie de sistemas diferentes ya copiados. Si tenemos conectado el add-on podremos arrancar el sistema que queramos simplemente seleccionando la letra correspondiente a dicho sistema y luego pulsando Enter.
El conjunto BIOS/add-on no funciona bien todavía si tenemos conectado el divIDE y es muy probable que salga una nueva versión con modificaciones tanto en el hardware como en el software.
Para funcionar con los jumpers deberemos tener en cuenta que solo dispondremos de 8 sistemas simultáneos, aunque en este caso tendremos completa compatibilidad con el divIDE siempre que tengamos en cuenta lo siguiente:
- Cada ROM debe ocupar 64Kb.
- En el caso de las ROMs de 32Kb deberemos copiarlas dos veces en el SLOT deseado.
- En el caso de las ROMs de 16Kb deberemos hacer 4 copias.
Los juegos y sistemas incompatibles con el divIDE (como el Júpiter ACE) necesitarán desconectar o desactivar éste antes de arrancarlos.
MANEJO DEL BIOS
La pantalla principal del BIOS del superupgrade nos muestra un listado con las ROMs incluidas en la memoria flash.
Para arrancar una de ellas, seleccionaremos la letra correspondiente y pulsaremos "ENTER".
En la versión 0.2 del BIOS se ha añadido un submenú de utilizades, al que se accede pulsando "V" y "ENTER", desde el menú principal.
En dicho menú disponemos de utilidades para testear nuestro interface:
- TEST DEL TECLADO: nos mostrará visualmente las teclas que estamos pulsando y los tres bits superiores de cada semifila.
Para el teclado solo se usan los bits 0 a 4, mientras que el bit 6 es usado para la entrada EAR.
Para terminar el test pulsaremos BREAK.
- TEST DEL JOYSTICK: Nos permitirá hacer un test completo del joystick, pidiendo que pulsemos secuencialmente cada uno de los botones del joystick. Cuando lleguemos al test de Sinclair deberemos pulsar usar los dos joystick simultaneamente.
En el caso de que pulsemos "BREAK" pasaremos al siguiente botón aunque no hayamos pulsado el botón correcto.
- TEST DE RAM: Realizará un test del paginado de la RAM, indicando cuantas páginas de memoria tenemos disponibles.
No se trata de un test completo de la integridad de la RAM, ya que solo comprueba el paginado.
- TEST DE AUDIO: Hará sonar una escala musical por cada uno de los tres canales del AY.
- SELECCIÓN DE PÁGINA DE ROM: Esta opción está pensada para los usuarios que no inserten el add-on.
Recordemos que la memoria está dividida en bloques de 64Kb que son seleccionable por jumpers, y que en cada bloque de 64Kb nos caben 4 páginas de 16Kb.
Pues bien, si después de arrancar el menú cambiamos los jumpers a la ROM deseada, esta opción nos permitirá seleccionar la página de 16Kb que queremos ejecutar.
Una vez selecionada la página deseada, el sistema nos pedirá que pulsemos una tecla, tras lo que el spectrum se reiniciará ejecutando el programa contenido en la página seleccionada.
Alejandro Valero Sebastián (wilco2009)