CHIP-8 es un lenguaje de programación creado en 1977 para el kit COSMAC VIP. Sus programas se componen de instrucciones de dos bytes que evocan el código máquina de una arquitectura virtual simple, por lo que sus intérpretes suelen denominarse también emuladores. Programar un intérprete de CHIP-8 es una de las vías clásicas para aprender los principios que rigen la emulación de ordenadores y consolas antiguas, y existen miles de implementaciones para casi cualquier plataforma.
El artículo examina CHIP-8 como conjunto de instrucciones y aborda sus implicaciones prácticas para escribir programas nuevos, sintetizando tutoriales, ejemplos y preguntas frecuentes dispersos. Se detiene especialmente en las recomendaciones portátiles entre la mayoría de intérpretes, evitando los más incompletos. Los ejemplos se presentan en la notación de Octo, el ensamblador de alto nivel para CHIP-8 desarrollado por el autor.
El texto describe los rasgos centrales del entorno: un espacio de direcciones de 12 bits con la memoria de usuario limitada a 3232 bytes para máxima portabilidad, dieciséis registros de 8 bits (v0–vf) con un agradable aire RISC, un registro índice de 12 bits, una pila interna opaca para llamadas a subrutinas, un teclado hexadecimal de entrada y una pantalla bitmap monocroma de 64×32 píxeles con un zumbador piezoeléctrico. Se detallan las 34 instrucciones elementales —aritméticas con inmediatos, operaciones entre registros (OR, AND, XOR, sumas con acarreo, restas con préstamo y desplazamientos), saltos, llamadas, dibujado de sprites, espera de pulsaciones y temporizadores—.
El autor advierte sobre las divergencias entre intérpretes: los desplazamientos que ignoran el operando, las operaciones bit a bit que destruyen vf como efecto colateral y la ambigüedad de orden de escritura del flag de acarreo. Ofrece reglas prácticas, como limitar el código a 3232 bytes, usar siempre el mismo registro en los desplazamientos, asumir que las operaciones bit a bit destruyen vf y no destinar vf a instrucciones aritméticas, salvo en casos concretos.
