“Juegos electrónicos para tv” es el título de un libro editado en 1991. Importado por alguna editorial desde España, el libro describe un proyecto de electrónica para construir una consola de videojuegos. El corazón del proyecto es el microprocesador Signetics 2650 [1][2], una pieza de hardware poco conocida de la década de 1970.
Cuando compré “Juegos electrónicos para tv” tendría unos 16 años y a pesar de mi corta edad era un entusiasta de la electrónica. Desafortunadamente, no tenía la madurez suficiente para entender los complejos conceptos que se tratan en esta obra.
En ese tiempo, estaba de moda el Nintendo, la primera versión de 8 bits. Sabía muy bien que mi padre nunca me lo iba a comprar. Tal vez con razón, siempre consideró los videojuegos como enajenantes. Por lo tanto, cuando vi el libro pensé que tal vez podría construir mi propio videojuego y programar mis propios juegos. No tenía ni idea en lo que me metía.
Siendo poco conocido, el 2650 definitivamente no se conseguía en Celaya, ahí con Avalos o con Panasolo. Mucho menos iba a obtener el chipset asociado al micro, la memoria o los integrados altamente especializados para convertir una señal digital a señal analógica de televisión. Aparte los integrados del libro eran para sistema PAL. Se requieren modificaciones para hacer funcionar el proyecto en formato NTSC. Eso requiere conocimientos en televisión a color. El libro se quedó agarrando polvo durante muchos años.
De vuelta al pasado inmediato, hace dos años y medio impartí clases en la Universidad de Celaya. Entre las materias que me tocó enseñar había una de electrónica básica. Lo chido de dar clases es que tienes tiempo para desarrollar proyectitos personales. Lo feo es que pagan bien poquito y no dan prestaciones. Estuve estudiando varias cosas como lenguaje ensamblador, electrónica analógica y digital. Se acabó el semestre. No me renovaron el contrato por pelearme con el jefe de carrera. Tuve que dejar mi proyectito por un tiempo.
Al año siguiente, me encontré con el video que les pongo aquí abajo. En realidad es una serie de videos. Se trata de construir una computadora desde cero y usarla para programar un hola mundo.
Empecé a utilizar las técnicas de Ben Eater para avanzar en mi proyecto. Primero construí un reloj (en realidad tres) utilizando el integrado 555. Con este artilugio es posible variar la frecuencia y cambiar a modo “paso a paso” lo que permite realizar tareas de “debugging” durante la construcción del prototipo.
Este es mi resultado. Un reloj que funciona en tres modalidades. Astable, monoestable y biestable. Se requiere un integrado 555 para cada modalidad ya que se conectan de manera diferente. También cuenta con tres circuitos con compuertas nand y or para formar una serie de latches (no recuerdo cuales, lo siento) que absorbe los rebotes generados al cambiar el reloj de modalidad
En sus videos, Ben utiliza un micro 6502 (Commodore 64, Atari XE, Nintendo) por lo que en mi proyecto tuve que realizar las adaptaciones correspondientes. El microprocesador 2650 lo compré en ebay. Importé 3 unidades de Estados Unidos. Según tengo entendido, este micro se usaba en las maquinas de pinball y llegó a tener algunas aplicaciones en la electrónica industrial. No llegó a ser famoso porque tiene una falla de diseño fatal. Tiene un pila de solo ocho posiciones de memoria para palabras de 15 bits si mal no recuerdo. Un lenguaje de alto nivel como C que compile a leguaje de maquina del 2650 tendría que construir y mantener una pila en software para almacenar sus llamadas a funcion y variables locales, lo cual sería un desperdicio de recursos. Es un procesador setentero y la memoria está limitada a 32,768 bytes.
Siguiendo los videos y haciendo adaptaciones según fuera necesario, logré que el 2650 cobrara vida después de muchos años dormido. En la foto de abajo, el led azul está indicando un ciclo alto del reloj. Los leds rojos y azules, son ocho rojos y siete azules, muestran la dirección de memoria a la que el contador de programa está apuntando.
Otra de las técnicas empleadas por Ben Eater es utilizar una placa Arduino para inyectar y almacenar instrucciones. Hace las veces de memoria y manipula la señal de una de las patas del micro para ponerlo en modo de lectura o de escritura. Esta técnica es muy conviente porque todavía no tenemos el chipset y la memoria instalados. El chipset es la interface entre el microprocesador, la memoria y los periféricos. Con algunos componentes extras es posible conectarlo a una terminal o a algún display para mostrar y recibir información. Es una unidad de control de flujo de datos.
Este 2021 no le hecho nada al proyecto. Este tipo de proyectos son muy costosos. “Juegos electrónicos para tv” fue escrito originalmente en alemán. Es un proyecto para hobbistas de primer mundo. Aún en la actualidad.
Hay que importar muchas piezas que no se encuentran en México. Por ejemplo, el procesador 6502, uno de los micros más exitosos, todavía se fabrica. Y agárrense, se fabrica en México, pero no se vende en el país. Hay que importarlo de China. Suena absurdo. Una explicación que yo tengo para esto es que en México no sabemos desarrollar productos. Somos buenos desarrollando prototipos pero no tenemos ni idea de como llevarlos a un producto viable para ser comercializado.
La razón por la que no he avanzado este 2021 es que mi esposa me comentó que tenía un par de metas que quería cumplir y me pidió que la apoyara. Pactamos que la ayudaría a realizar sus objetivos pero una vez cumplidos me iba a dejar dedicarme a mis cosas. No se si mi mujer vaya a cumplir, ya saben como son las esposas, pero espero terminar este proyecto antes de morir. Al menos intentaré convertir el libro a PDF antes de que finalice el año.
Acuatlización
Ahora se puede bajar un PDF con el contenido del libro desde este repositorio de GitHub. Por alguna razón en la versión final de este post los enlaces no quedan resaltados, aunque si lo hacen en borrador. Sin embargo, los enlaces están ahí.
Adicionalmente, del mismo repositorio se puede bajar el emulador PIPBUG. Se requiere de un intérprete de TCL para probarlo. Este emulador fue escrito por Peter Linich y puede ser bajado también de su blog, requiere modificaciones para que acepte y lea archivos binarios con código de máquina 2650. Eventualmente escribiré mi propia versión probablemente en Python.
Ex-Ingeniero Mecánico, Ex-Investigador, mi verdadera pasión es el Desarrollo de Software. Me he acomodado bastante bien en el mundo corporativo aunque espero poder independizarme en algunos años y eso solo para saber que se siente ser dueño de una empresa.