Ingeniería inversa de los chips MCGA de IBM en repositorio abierto

Fuentes: Reverse-engineered IBM MCGA chips documented on GitHub

El repositorio GitHub 'IBM_MCGA', del usuario schlae, documenta el resultado de la ingeniería inversa de los dos circuitos integrados de puerta programable (gate arrays) que componían el chipset MCGA (Multi-Color Graphics Array) de IBM, un subsistema de vídeo económico incorporado en los modelos 25 y 30 de la línea PS/2. El conjunto incluye una controladora de memoria y un formateador de vídeo; este último se encarga de decodificar las direcciones de memoria y puertos de E/S del bus ISA, gestionar el RAMDAC y generar los datos de píxeles en modos gráficos y de texto.

El proyecto recoge los esquemas y el layout reconstruidos a partir de imágenes de silicio obtenidas en siliconpr0n.org. El primer chip, un Seiko SLA6430 de 4.342 celdas básicas en proceso CMOS de 2 micras y dos capas de metal, integra un clon de la MC6845 y la interfaz con la VRAM y la RAM de caracteres. El segundo, un Seiko SLA6330 de 3.312 celdas, actúa como formateador. Los autores facilitan también huellas KiCAD para cada tipo de celda y explican el proceso de trazado de pistas a partir del metal subyacente.

Gracias a la ingeniería inversa se han documentado registros y funciones no descritos en el manual técnico: una capacidad de genlock con HSYNC y VSYNC externos, el efecto del bit 3 del registro 0x10 sobre los modos de texto 80x25, el control de la frecuencia de reloj mediante el bit 2 del mismo registro y un conjunto de registros de prueba de fabricación accesibles a través de las direcciones 0x18 y 0x19.