Bajo un océano de bits, mes XIX

Por Javier Albizu, 10 Julio, 2019
Este mes la cosa va de desvíos.
Sí, otra vez.

Cuando ya está claro que el propósito con el que afirmaba dar comienzo a este viaje ha quedado totalmente desvirtuado, cada vez me voy dirigiendo hacia lugares cuya visita tenía planteada para mucho más adelante.
Temas íntimamente relacionados con esto pero que, al mismo tiempo, se encuentran en sus antípodas dentro del modelo OSI1. La eterna pelea entre el software y el hardware. Entre los desarrolladores y los tipos de sistemas.

Y mucho de la culpa de todo esto la tiene Ben Eater2.
Tras terminar de ver los cuarenta y cuatro vídeos que componen su Obra Magna; aquella que muestra y explica la fabricación de un ordenador de 8 bits, va el hombre y comienza con otra saga igualmente interesante; la de la creación de una tarjeta de vídeo.

Muy bien. Centrémonos.
Ahora ya tengo una idea más aproximada de lo que buscaba cuando comencé con estos vídeos. Tengo… más o menos claro, qué es lo que hace un ordenador (o, al menos, el del amigo Ben) en un ciclo de reloj. He visto cómo se hablan los registros, la memoria y el bus, he visto cómo se programa el micro-código que va en el procesador y qué son exactamente los mnemónicos que utiliza el ensamblador.

He visto todo eso… y yo también quiero hacerlo. Quiero interiorizar ese conocimiento. Pensar en ciclos de reloj y en bits cuando programo en lugar de bucles de lenguajes de alto nivel.
Como ya decía hace unos meses, ser un ingeniero sin hacer la carrera.
Aún estoy muy lejos porque apenas he comenzado a rascar la superficie, pero voy dando pequeños pasos.

En los vídeos todo está claro, incluso los fallos que van apareciendo, pero cuando he tratado de llevar hasta el mundo real lo más nimio de cuando se muestra en ellos, sigo sin saber por dónde empezar.

Necesito ir de menos a más. De algo un poco más concreto que el “Me voy a hacer un ordenador”. Porque he dicho que quiero hacerlo, no que quiera copiar el suyo. No pretendo ir parando los vídeos, comprando los componentes que utiliza y replicar paso por paso su camino. Quiero hacer algo que me viene aún muy grande.

Pero claro, tengo cosas más pequeñitas por las que podría empezar. Por mi salón aguardan como roboces sin carcasa varios ordenadores desmembrados a la espera de unas nuevas ROMS3, y por mi habitación no dejo de ver un montón de chips a la espera de ser tostados4.

A partir del visionado del vídeo en el que el amigo Ben se fabricaba un programador de EEPROMS con un Arduino5, me dio por leer poco más al respecto6. Por trata de profundizar algo más que la última vez que me puse a ello, pero todo está aún muy neblinoso.

Pero las formas van tomando consistencia. Parece que me voy acercando a algo y, a pesar de que por el momento no soy capaz de “leer” las especificaciones de los chips que tengo, hay formas que sí que voy siendo capaz de discernir.
Por un lado, y si no lo he interpretado mal, el chip que compré para actualizar a los Amiga sí que valdrá para ellos.

Por un lado, y por más que tenga 42 pines, encaja tanto en el zócalo del Amiga 500 (slot de 40 pines) como en el del Amiga 600 (42 pines, y lo que me llevó a conectar mal uno de los que había comprado con la última versión del Workbench). Por otro, igual aún puedo recuperar la ROM que me cargué.

Porque la cosa es que me dio por levantar la pegatina que tenía con la versión del sistema operativo, número de serie y temas similares, y resulta que es una EPROM que se puede borrar con luz ultra violeta y se puede volver a grabar.

Aparte de esto, comparando los patillajes vi que el direccionamiento de los pines de ambos se corresponde. Las patas 41 y 42 corresponden a dos líneas de entrada adicionales. Dos pata que no es necesario que use y que, en el caso del Amiga 500, sobresalen sin estorbar en el zócalo de 40 pines.

El hecho de que coincida su patillaje hace que tenga bastante confianza a la hora de afirmar que no la cagué a la hora de pedir esos chips que. Además, y como premio, resulta que son regrabables.

A partir del modelo de las ROMs originales de los Amiga he tratado de buscar correspondencias, pero no he encontrado nada directo. Las búsquedas de Google me han llevado siempre hasta foros en los que no se decía nada explícitamente, pero sí que se hacía referencia a cosas como el MX23C4100; otra EPROM cuyo patillaje es idéntico al de las que tengo por aquí.

Así pues, parece que la cosa promete.

Viendo el vídeo del programador del señor Eater también me ha quedado clara alguna que otra cosa más; el programador Willem7 que compré también me servirá para tostar EPROMs que tienen más patas que su zócalo.
Había leído que existían adaptadores para realizar la conversión, pero aquello era algo que se me hacía muy contraintuitivo. La parte técnica aún está un poco neblinosa en mi cabeza, pero tengo claro que la cosa va a funcionar (y he pedido el adaptador de marras).
En mi momento de flipamiento pensé en hacerme yo el adaptador pero, como de costumbre, cuando me puse a ello no tenía ni idea de por dónde empezar. Aun así no desespero, igual de aquí a un tiempo me lanzo a ello y a otras movidas que se me van pasando por la cabeza.

Por lo pronto, lo único con lo que puedo trastear hasta que me llegue el aparato son las ROMs del Atari.

Tengo cuarenta de ellas y sólo me hacen falta dos, así que puedo destrozar un montón sin sentirme (demasiado) culpable.

Y eso ha sido más o menos para lo que ha dado el mes. Por supuesto, no ha faltado el visionado de otro montón de vídeos8 de temas relacionados con el motivo original de este reto. Tengo intención de seguir adelante con la programación de juego y, por más que mi foco de atención haya cambiado de forma drástica, no me olvido de él.

Tengo claro que cuando vuelva con el código que ya tengo escrito tendré que volver a replanteármelo todo casi desde cero. Hay unas cuantas decisiones que tomé que, para mi yo de entonces, tenían sentido, pero a día de hoy me queda claro que fueron barbaridades.
El programa no se resiente, cosas de que las CPUs de hoy van sobradas para tragar lo que hice y que aún les sobren ciclos para dar y regalar, pero no quiero que mi criatura desaproveche ni un ciclo aunque el procesador se dedique a rascarse la barriga mientras tanto.

En fin. Planes y más planes.
Proyectos que no terminan de irse y flipamientos que no dejan de llegar.

La historia de mi vida resumida.

Enlaces:

1. El modelo

2. Ben Eater, ese hombre
- Building an 8-bit breadboard computer!
- The world's worst video card?

3. En anteriores capítulos...
- Nunca a la última 004
- Nunca a la última 009

4. Los chips
- Atari - M27C256B (UV EPROM)
- Amiga - MX23C4100 (¿Amiga Original?)
- Amiga - MX29F1615 (EEPROM Flash)
- Amiga - AM27C400 (AmigaStore)

5. Build an Arduino EEPROM programmer

6. Lo básico
- Basic information about memory chips and programming
- EPROMS: The minimum you need to know to burn your own
- Settings for Willem 4.1 Eprom Programmer
Con Raspberry
- Raspberry-Pi-Python-EEPROM-Programmer
- Raspberry Pi SPI and I2C Tutorial
- Raspberry-Pi I2C 256K EEPROM Tutorial
Con Arduino
- Arduino MX29F1615 programmer
- Arduino EEPROM programmer
- TommyPROM - An Arduino-based EEPROM programmer
A pelo
- Retro EPROM Programming Tutorial
- 27c801 EPROM Programmer Project
Borrando
- Improvising an EPROM programmer

7. Willem
- Adapter EPROM 16 Bit from Toomas Toots
- Willem EPROM Programmer User Guide
- Enhanced Willem EPROM Programmer – Manual
- Willem Eprom programmer for Win 9x/ME/NT/2000/XP
- Start CD

8. Vídeos de animación, retro y temas relacionados
- Cartridge Save File Preservation - Backup, Transfer & Restore Your Save Games
- RetroPixel 2019 - Conferencia Blasphemous
- Dead Cells: What the F*n!?
- Gato Roboto's Animation
- Game Discoverability Day: NOTICE ME: The Grind Behind the $272K Funding Success of Boyfriend Dungeon
- ¿Debe la universidad enseñar lo que demandan las empresas?
- Amstrad GameDev Challenge #01: BASIC vs C
- Planet X3 -The Making of, Part 4

El contenido de este campo se mantiene privado y no se mostrará públicamente.

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.