Descifrando el código oculto en un juego BASIC de los años 80

Fuentes: Decoding the hidden Z80 code in The Wizard's Castle REM statement

Un análisis técnico desentraña un misterio aparecido en la primera línea del código fuente de "The Wizard's Castle", un juego de BASIC publicado en el número de julio de 1980 de la revista Recreational Computing para el microordenador Exidy Sorcerer. La línea, un comentario REM con la cadena "(C2SLFF4, parecía un error tipográfico, pero los autores descubrieron que los caracteres ASCII del comentario eran tratados por el intérprete como código máquina Z80 ejecutable.

El juego no disponía de RANDOMIZE para inicializar el generador de números aleatorios, así que recurría a un sistema artesanal: escribía código máquina en la dirección 474 de la memoria mediante las instrucciones POKE, lo ejecutaba con USR() y leía el byte de la esquina inferior derecha de la pantalla (dirección 0xF7FF) para usarlo como semilla del PRNG. Ese carácter, invisible para el jugador, era el que dotaba de variedad a cada partida en la mazmorra generada aleatoriamente.

El artículo repasa paso a paso la desensamblación fallida inicial del texto ASCII como Z80, el estudio de la función USR() y la función trampolín, el formato de listas enlazadas que emplea el Sorcerer para almacenar el programa tokenizado, y el hallazgo definitivo que demuestra que el REM no era basura: era código máquina camuflado en texto. La investigación se apoyó en emuladores, manuales técnicos del Sorcerer y el archivo digitalizado de la revista original.