Recorrido por el ZX Spectrum en ensamblador: modo texto

Fuentes: ZX Spectrum System Tour: Text Mode

Este artículo abre una serie dedicada a la programación en lenguaje máquina del ZX Spectrum, tomando como base el modelo de 48K pero con técnicas compatibles también con las versiones de 16K y 128K. A diferencia de plataformas como Commodore 8-bits, MSX o el IBM PC —que ofrecían tablas de saltos bien definidas en su ROM—, Sinclair apenas expuso una interfaz de firmware consistente, lo que obligó a los desarrolladores a invocar directamente direcciones internas de la ROM del sistema. El autor recuerda que el fallido Timex Sinclair 2068 demostró lo costoso de romper esa compatibilidad.

El texto repasa cómo el BASIC del Spectrum convive con el código máquina: los archivos de cinta se identifican como BASIC, datos BASIC o binarios; el comando CLEAR acota la memoria del intérprete; y la función USR permite llamar a subrutinas en ensamblador devolviendo el valor del registro BC. También describe un truco clásico: guardar un programa BASIC que se autolanza en la línea 30, reserva memoria con CLEAR, carga el binario desde cinta y cede el control al código máquina.

En el plano técnico, el mapa de memoria del Z80 sitúa la ROM entre $0000 y $3FFF y la RAM de gráficos entre $4000 y $5AFF. El registro IY, fijado en $5C3A, apunta a las variables del sistema y es la forma recomendada de acceder a ellas en código de usuario, aunque la propia ROM mezcla direcciones absolutas con indexación. Finalmente, el artículo explica cómo dirigir el texto a la ventana superior de 22 líneas escribiendo un 0 en la variable TVFLAG (IY+2) antes de llamar a la rutina de impresión de la ROM, dejando para próximas entregas la entrada por teclado y joystick.