VGA: la complejidad oculta de un estándar sin documentación clara

Fuentes: Learn Something Old Every Day, Part XXI: VGA Memory Access Is Complicated
VGA: la complejidad oculta de un estándar sin documentación clara
Imagen generada con IA

El artículo aborda la complejidad del acceso a la memoria VGA (Video Graphics Array) y los problemas de documentación que existen alrededor de este estándar de hardware heredado. El VGA, aunque técnicamente no es un hardware complicado (no tiene microcode ni CPU propios), está compuesto por varios componentes lógicos separados que trabajan juntos: el Graphics Controller, el Sequencer, Attribute Controller y CRT Controller. Esta arquitectura dividida genera una complejidad subestimada que dificulta tanto la implementación de hardware como la emulatoria. El problema principal radica en que la documentación existente, incluyendo los manuales técnicos de IBM, está escrita principalmente para usuarios que desean programar el VGA, no para quienes necesitan implementar su funcionalidad. Los manuales tienden a dar instrucciones vagas como “para modos de texto, configure el bit X en 1”, sin explicar qué función realiza cada bit individualmente. El artículo se centra específicamente en los registros de control Odd/Even del VGA: SR4[2] en el Sequencer, GR5[4] en el Graphics Controller y GR6[1] también en Graphics Controller. Estos tres bits controlan cómo la CPU akses a la memoria de video en los modos de texto, separando los códigos de caracteres (en bytes pares) de los atributos (en bytes impares). La documentación de IBM es particularmente deficiente, indicando únicamente que estos bits deben establecerse de cierta manera sin explicar claramente sus funciones separadas. En contraste, el Technical Reference Guide de Compaq ofrece explicaciones mucho más detalladas y útiles, diferenciando claramente que SR4[2] controla las escrituras de la CPU, GR5[4] controla las lecturas, y GR6[1] determina el direccionamiento de memoria. Esta comprensión detallada permite aprovechar combinaciones no documentadas como el famoso Mode X, un modo gráfico de alta resolución.