ZX81 Bodo Wenzel ULA
Introducción
Este artÃculo muestra como construir una ULA para el ZX81 partiendo de la información que se puede encontrar en esta página web
http://members.fortunecity.de/bodo4all/zx/zx81vid.htm Diseño
Lo primero a realizar fue plasmar el esquema teórico sobre un diseño de placa real. Desde un primer momento, mi idea fue crear una placa que permitiese quitar la ULA y poner la ULA clon utilizando el mismo zócalo.
1º-Diseño
El primer diseño utiliza el esquema original proporcionado por Bodo. Se utilizan componentes discretos a pesar del poco espacio disponible.
El circuito que contiene los 2 transistores, 4 resistencias y 2 condensadores es un circuito de reloj que aprovecha el oscilador cerámico de 6.5MHz que existe en la placa de los ZX81.
2º-Diseño
Para reducir un poco el número de componentes, se buscó un diseño alternativo para el circuito del reloj. El chip LTC1799 es un reloj programable de 1Mhz a 33Mhz en formato SMD, el cual solo necesita una resistencia para determinar su frecuencia. No es tan preciso como un cristal de cuarzo pero cumple perfectamente su función.
En el datasheet del LTC1799 viene la formula para calcular el valor de la resistencia que necesitamos. Para una frecuencia de 6.5MHz tenemos que recurrir a una resistencia de 15386 ohmios. La resistencia más cercana es la de 15400 ohmios 1 % tolerancia.
Construcción
Si hacemos nosotros la placa, lo ideal es comenzar por unir las vias de ambas caras. Los 2 condensadores de 100nf para desacoplo hay que ponerlos al principio, pues también sirven para conectar pistas entre caras.
El siguiente paso consiste en limar las soldaduras de la cara superior. No hacerlo nos puede acarrear problemas a la hora de poner el zócalo PLCC o al insertar el MACH210.
Llegado a este punto es conveniente comprobar con un polÃmetro que hay unión entre ambas caras.
A continuación soldaremos todos los componentes, dejando para lo último el zócalo PLCC.
Para las resistencias R5,R6,R7 que regulan la señal que llega al modulador se han escogidos los valores 0 ohmios, 10K y 4K7
Un punto muy importante en la realización de la placa son los pines que van al zócalo DIP40 donde se insertaba la ULA. Si nos fijamos con detenimiento en la placa , veremos que los pines centrales no pasan de una cara a la otra. El motivo es que los pines del zócalo PLCC44 ocupan la para superior y no dejan sitio para los otros.
La manera de proceder es coger dos tiras de 20 pines y cambiar la altura de los pines que si traspasan la placa. La parte de plástico que llevan estas tiras de pines, es conveniente dejarla por 2 motivos:
- ayuda a mantener en linea los pines.
- Proporciona mucha resistencia a los pines del centro, que solo están soldados a una cara.
Una vez soldada las tiras procederemos a igualar la altura. El ZX81 tiene mucho espacio dentro de la carcasa, por lo que no importa si queda algo elevada.
Por último soldaremos el zócalo PLCC. Yo suelo estañar un poco los contactos donde irá el zócalo y, una vez puesto, pasar el soldador sobre los contactos sin nada de estaño. Posteriormente con un destornillador muy fino compruebo si se mueve el contacto o ha quedado bien soldado.
Una vez terminada la placa, el resultado final es el siguiente:
MACH210
El corazón del diseño está basado en el chip MACH210. Este chip contiene, básicamente, 4 gal 22V10 interconectables en su interior. Bodo utilizó el lenguaje de programación ABEL para describir las funciones de la ULA y posteriormente utilizó el software MACHXL para obtener un fichero *.hex. Este fichero es el que se utiliza para poder programar el chip MACH210.
La utilización de este chip plantea algunos problemas en la actualidad:
- Esta descatalogado. Es un producto algo antiguo ( 1995 ) por lo que no es fácil de encontrar.
- Se necesita un programador profesional para poder programarlo. Mi icetech LV40 portable si es capaz de programarlo.
- Al ser un chip en formato PLCC y los programadores suelen ser DIP, es necesario un adaptador. En mi caso fue asà y me lo tuve que construir uno. Detalles del adaptador 44PL-MACHx1x para icetech LV40 portable
Problemas
Una vez realizada la placa y programado el chip, apareció un problema inesperado. ¡ La pantalla se veÃa tan oscura como con la ULA original!
Este inesperado problema, me ha llevado a estudiar más a fondo la señal de vÃdeo de los ZX81. Mis conclusiones pueden ser leÃdas en el artÃculo ZX81 Video Signal.
Bodo Wenzel estudió una ULA que presentaba la falta de blanking y realizó un clon idéntico ¡ Con fallo y todo!. El no tenÃa problemas en la visualización de la imagen ( algunas televisiones pueden funcionar sin la señal de blanking) y no lo pudo tener en cuenta.
La solución al problema es difÃcil pues Bodo me indicó que el diseño de la ULA ocupa el 100% de los recursos del MACH210 por lo que la modificación del código es bastante difÃcil. Una alternativa que si resultó factible ha sido aplicar una modificación que se suele hacer a los ZX81, invertir la señal de vÃdeo. En vez de pantalla blanca y cursor negro, se invierte el vÃdeo y tenemos pantalla negra y cursor blanco.
De esta manera, una vez pasado el sincronismo, la señal que llega a la televisión es negro y ajusta perfectamente la imagen. Esta solución es la he aplicado a la ULA que he construido y funciona perfectamente.
En este artÃculo podrás encontrar tanto los ficheros originales como los ficheros con salida de vÃdeo invertido.
Documentación
Esquema y placa versión componentes discretos
Esquema y placa versión reloj LTC1799
Software MACH210 original
Software MACH210 Video invertido
Datasheet LTC1799
Agradecimientos
A Bodo Wenzel por ayudarme con las dudas y problemas que aparecieron durante la realización de su ZX81 ULA.
2008 José Leandro Novellón.
http://trastero.speccy.org/cosas/JL/ZX81-ULA/ZX81-ULA.html