Construyendo un microordenador: el Bobert-1(I)

En este serie de artículos vamos a ir mostrando la arquitectura y programación de un sencillísimo microordenador casero que puede construirse con muy pocos elementos: el Bobert-1 (bautizado por mis hijos en honor al robot de Gumball). Una máquina compuesta de :

  • Microprocesador Z80 a 4MHz
  • Memoria SRAM 62256 de 32 kilobytes
  • Memoria EEPROM 28C64 de 8 kilobytes
  • Chip gráfico TMS9918A/9929A con 16 kilobytes de VRAM
  • Puerto serie con chip UART 16C550
  • Beeper piezoeléctrico
  • Entrada de joystick
  • Teclado de Commodore 64

El proyecto surgió como un pequeño experimento para ver cual era la configuración mínima necesaria para echar a andar un microprocesador Z80. Tomando como ejemplo la fantástica página de Grant Searle, las primeras pruebas se hicieron simplemente con la CPU conectada a una memoria SRAM de 32Kb y una memoria EEPROM de 8Kb, en la que grabábamos un sencillo programa que iba incrementando un contador, visualizando el valor del mismo a través de unos leds. Montando ese circuito sobre unas placas de prototipado, teníamos ya un Z80 “haciendo algo” (tremendamente tonto).

Poco a poco se le fueron añadiendo mas dispositivos de entrada y salida, con la lógica necesaria para poder controlarlos. Por ejemplo un beeper o un display LCD HD44780 de 16 caracteres y 2 líneas, muy sencillo de manejar y que ya nos permitía una mayor interacción con el equipo.

Con este equipamiento tan básico nos faltaba una manera de poder programarlo “al vuelo” sin necesidad de recurrir a grabar un nuevo programa en la ROM. Pensando en los primeros microordenadores controlados por interruptores, la primera idea fue emular a los Altair 8800 y crear un panel de control desde el que podíamos introducir manualmente las instrucciones de un programa (en código máquina) en la RAM del sistema, y posteriormente ejecutarlo. Nacía el proyecto “CocaColo”, también bautizado por mis creativos retoños…

Como el sistema de interruptores no es el más cómodo que digamos, enseguida se sustituyó por el teclado de un Commodore 64. Con su conector cableado en lugar de membrana, era un candidato perfecto para usarlo en este proyecto.

Añadiendo a la ROM una rutina de lectura de teclado, ya podíamos introducir caracteres en el ordenador.

Hasta ahora no teníamos mas pantalla que el LCD 16×2, por lo que el siguiente paso lógico era buscar alguna manera de poder generar vídeo y conectarlo a un monitor. En la misma web de Grant Searle tenemos una solución basada en un ATMega328, al que podemos mandar caracteres como si fuera un terminal y él se encarga de generar una señal de vídeo compuesto monocroma. Aquello ya se iba pareciendo a un microordenador de toda la vida.

La ROM era tremendamente básica y apenas tenía rutinas para inicializar los dispositivos, leer del teclado, tocar notas en el beeper e imprimir caracteres por pantalla. No hay todavía ni un sistema operativo propiamente dicho ni un lenguaje de programación que nos permita programarlo de forma mas o menos interactiva. Así que el siguiente paso fue dotar al equipo de una manera de poder introducir programas en la memoria. La elección fue un puerto serie basado en el chip 16C550, que nos permitía conectarlo a un PC y desde ahí enviarle los programas ensamblados con pasmo.

Ya teníamos un hardware mas o menos funcional, a falta de programar una ROM que permitiera usarlo con comodidad. La maraña de cables sobre las protoboards empezaba a ser algo un poco inmanejable.

Pero el subsistema de vídeo no terminaba de convencer… La idea original era construir un microordenador del mismo estilo que los que usábamos en los 80, usando la misma tecnología de aquel entonces, y ese ATMega chirriaba un poco (a parte de no poder sacar gráficos ni colores por pantalla). En ese momento es cuando se abandona ese chip y en su lugar se integra un TMS9929A de Texas Instrument, el mismo que utilizaban los MSX o la Sega Master System, junto con su propia memoria RAM. Ahora ya tenemos una salida de vídeo en color, con un juego de caracteres personalizable, sprites por hardware y todo un mundo de posibilidades a explorar.

Con un hardware congelado ya era hora de programar la ROM, pero antes se hacía necesario pasar todos esos cables a una placa perforada porque la estabilidad del circuito no era la mas idónea (la mitad de las veces ni arrancaba por algún mal contacto). Con mucha calma, mucho cable y mucho estaño nos olvidamos de la protoboard y pasamos a una placa donde ya nada se mueve ni se desconecta.

Queda muchísimo por hacer, así que esta serie de post servirán para dos cosas: por una parte documentar todo lo que se ha hecho ya (arquitectura, esquemas en Kicad, etc.) y por otro lado avanzar en la programación de este micro hasta conseguir una máquina medianamente usable y disfrutable.

Nos vemos en el siguiente capítulo…

 

Un pensamiento en “Construyendo un microordenador: el Bobert-1(I)

  1. Pingback: RetroMadrid 2018, cacharreando entre amigos :: El Blog de Manu

Deja un comentario

Tu dirección de correo electrónico no será publicada.