La historia de la informática personal acaba de ganar una pieza de museo en abierto. Microsoft puso a disposición de la comunidad en GitHub el código fuente original del intérprete GW-BASIC de 1983, un hito que conserva, línea a línea, cómo se construía software en los albores del PC. El repositorio —publicado con fines históricos y educativos— fue archivado en modo solo lectura el 16 de noviembre de 2023 y se distribuye bajo licencia MIT. No incluye binarios ni scripts de compilación: es, literalmente, una fotografía del taller donde se forjó uno de los BASIC más populares de la era MS-DOS.
El anuncio oficial llegó a través del blog de Microsoft (firmado por Rich Turner) y subraya la naturaleza del material: código 100 % ensamblador para arquitectura 8088, fechado el 10 de febrero de 1983, con traducciones específicas por procesador y máquina, al estilo de la época. El objetivo no es reabrir el desarrollo ni aceptar pull requests, sino conservar la memoria técnica de un lenguaje que enseñó a programar a millones de personas.

Qué hay dentro del repositorio
Quien abra el repositorio se encuentra con un listado de ficheros que habla por sí solo: decenas de módulos .ASM
(como GWINIT.ASM, GWEVAL.ASM, GWMAIN.ASM, SCNDRV.ASM, GIOKYB.ASM o GIODSK.ASM), cabeceras como BINTRP.H, IBMRES.H y documentos de gobierno del proyecto (LICENSE, CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md). Entre los ficheros más descriptivos destacan:
- GWINIT.ASM y GWMAIN.ASM: inicialización y runtime del intérprete.
- GWEVAL.ASM: rutinas de evaluación y ejecución de instrucciones.
- SCNDRV.ASM / SCNEDT.ASM: interacción con la pantalla y editor.
- GIO*.ASM** (teclado, pantalla, cassette, disquete, puerto serie, impresora…): la I/O cruda del PC XT.
- MATH1.ASM / MATH2.ASM: aritmética de punto flotante y rutinas matemáticas.
- IBMRES.ASM: recursos específicos para equipos compatibles IBM.
No hay C ni Pascal. Tampoco hay un Makefile o una guía de construcción. El repositorio deja claro que se publica para consulta histórica. El corazón es ensamblador puro pensado para que cada byte y cada ciclo contasen en máquinas con memorias de 32 KB o 64 KB y CPUs a pocos MHz.
Por qué todo era ensamblador
El propio anuncio recuerda un hecho a menudo olvidado: en los 70 y principios de los 80, los compiladores de alto nivel eran caros, escasos y poco eficientes para los microordenadores domésticos. Si se quería encajar un intérprete BASIC completo en la memoria disponible y exprimir el 8088, no había atajos: había que escribir en ensamblador. Microsoft mantenía fuentes maestras que luego traducía a distintas arquitecturas —8088, 6502, 6809, Z80— con herramientas internas; de ahí que muchos ficheros incluyan el encabezado “This translation created 10-Feb-83 by Version 4.3”. La compañía no ha liberado ese traductor ISA, de modo que el valor del repositorio es, sobre todo, documental.
Un BASIC con pedigrí: de Altair al PC XT
GW-BASIC desciende de BASICA (IBM Advanced BASIC), a su vez basado en el Microsoft BASIC que Bill Gates y Paul Allen llevaron al Altair 8800. En la práctica, GW-BASIC se convirtió en la puerta de entrada a la programación de muchos usuarios de MS-DOS 2.0 y del IBM PC/XT (1983). Era el BASIC “de casa” en incontables clónicos y convivió con otras implementaciones (QuickBASIC, Turbo BASIC, etc.) y con el auge de Turbo Pascal (anunciado por Borland en 1983).
El código abierto ahora permite seguir, instrucción a instrucción, cómo se implementaban la consola, el editor en pantalla, la impresión, la entrada por cassette, la gestión del disquete o las rutinas matemáticas. También muestra cómo se estructuraba un intérprete monolítico, con su bucle de lectura-evaluación-ejecución (REPL), el manejo de errores y la lista de tokens que daban vida a órdenes tan icónicas como PRINT
, INPUT
, IF…THEN
, FOR…NEXT
, POKE
o PEEK
.
Qué aporta a 2025 abrir GW-BASIC
Para un lector actual, GW-BASIC ofrece al menos tres lecturas complementarias:
- Arqueología del rendimiento. Comprender por qué cada byte y cada instrucción importaban ayuda a valorar la eficiencia y el diseño minimalista. Es, además, un espejo donde se miran tendencias contemporáneas —desde lenguajes systems como Rust hasta el retorno de la programación consciente de memoria—.
- Pedagogía de bajo nivel. El repositorio sirve como material didáctico: muestra cómo se habla con la máquina (BIOS, interrupciones, mapeos de vídeo, controladores de teclado e impresora) sin capas intermedias. Para quien enseña a niños y jóvenes a programar —con BASIC clásico o con equivalentes modernos—, es un puente entre conceptos de alto nivel y realidades físicas.
- Historia de producto. Permite seguir los compromisos de diseño que asumía Microsoft para llevar un intérprete a múltiples máquinas con recursos raquíticos y periferia muy heterogénea. También explica por qué el ecosistema BASIC fue tan ubicuo en los 80: flexibilidad, portabilidad y un punto de entrada amable para el usuario.
Un contexto cultural y técnico irrepetible
El propio anuncio sitúa el código en su contexto histórico: 1983 es el año de MS-DOS 2.0, de UNIX System V R1, de BSD 4.2 (con la introducción del seudoterminal, antecesor lejano del ConPTY de Windows), del lanzamiento del Apple Lisa con 1 MB de RAM, del Apple IIe a 1 MHz, y de una industria que experimentaba con interfaces gráficas, modems y redes TCP/IP. En paralelo, Bjarne Stroustrup avanzaba en el primer C++. El PC aún no era sinónimo de Windows; la línea de comando era la norma y BASIC, el lenguaje común.
Cómo mirar el código hoy
- Sin prisa. No es un proyecto para compilar en una tarde. Es código de estudio, no una base viva.
- Con documentación a mano. Consultar manuales del 8088, interrupciones BIOS y referencias de MS-DOS permite contextualizar cada módulo.
- Buscando patrones. El diseño de máquinas de estados, tablas de tokens, despacho por saltos y rutinas de I/O sigue vigente como técnica.
- Comparando con intérpretes modernos. Ver cómo GW-BASIC parsea y ejecuta líneas ayuda a entender las decisiones de un REPL y a valorar técnicas actuales (AST, bytecode, JIT).
Por qué importa para la enseñanza (y la nostalgia bien entendida)
Quien aprendió con 10 PRINT "HOLA"
reconocerá enseguida el flujo mental: escribir, listar, ejecutar, depurar. Para docentes, el repositorio es una invitación a construir talleres de “retro-hacking”: leer fragmentos, comentar módulos, comparar con implementaciones actuales y hasta proponer ejercicios de pseudo-ensamblador sobre papel. En un momento en que la enseñanza de la programación se apoya en capas muy altas (nube, marcos web, notebooks), bajar a la trinchera del 8088 ayuda a anclar conceptos: qué es una pila, cómo funciona una interrupción, por qué un buffer debe caber en memoria.
Lo que el repositorio no es
Microsoft es explícita: no hay soporte, no se aceptan cambios, no hay planes de abrir otras variantes ni el traductor ISA. El repo no pretende ser una base para construir binaries ni una forma de resucitar productos comerciales. Es, más bien, un archivo. Su valor está en leerlo y aprender de él.
Una pieza más en la reconstrucción del pasado digital
Tras la reapertura de MS-DOS 1.25 y 2.0, GW-BASIC se suma a una tendencia saludable: recuperar fuentes originales para que investigadores, docentes y curiosos puedan mirar bajo el capó de la informática que definió los 80. No todo el pasado puede preservarse —faltan herramientas, traducciones y contextos completos—, pero lo que hay basta para contar la historia con rigor.
Para la comunidad maker y los amantes del retro, es también un recordatorio: la escasez agudiza el ingenio. En una época donde los modelos de lenguaje y las GPU parecen infinitas, volver al ascetismo del 8088 y del ensamblador ayuda a entender que la elegancia no viene solo de los frameworks, sino de saber cuándo y cómo gastar cada byte.
Preguntas frecuentes (FAQ)
¿Qué licencia tiene el código de GW-BASIC publicado por Microsoft?
Se distribuye bajo licencia MIT, lo que permite su lectura, copia y uso con escasas restricciones. No obstante, el repositorio está archivado en modo solo lectura y no acepta pull requests.
¿Puedo compilar el código para obtener un binario funcional?
No se proporcionan scripts de construcción, makefiles ni herramientas. El material se ofrece con fines históricos y educativos. Compilarlo exigiría reconstruir entornos y toolchains propios de 1983.
¿Por qué todo el código está en ensamblador y no en C?
Porque en los microordenadores de comienzos de los 80 cada byte contaba. Los compiladores de alto nivel eran costosos, poco eficientes y, a menudo, inexistentes para las plataformas domésticas. Escribir en ensamblador permitía ajustarse a memoria y exprimir el hardware.
¿Qué relación guarda GW-BASIC con BASICA y el Microsoft BASIC original?
GW-BASIC deriva de BASICA (IBM Advanced BASIC), que a su vez se basó en el Microsoft BASIC creado originalmente para el Altair 8800. El repositorio muestra la variante para 8088 utilizada en la era del IBM PC/XT y compatibles.