El BASIC fue una de las puertas de entrada al mundo de la programación para muchos usuarios del Amstrad CPC. Décadas después, proyectos como CPCBasic buscan mantener viva esa experiencia, acercando el lenguaje y el entorno de programación del ordenador de 8 bits a sistemas actuales.
Vamos a conocer qué ofrece este proyecto desarrollado por Sabbat-cloud y cuáles son sus posibilidades para los aficionados al Amstrad CPC.
Un intérprete de Locomotive BASIC escrito en Python
El proyecto disponible en GitHub, desarrollado por Sabbat-cloud, se presenta como un intérprete de alto nivel de Locomotive BASIC, implementado completamente en Python. Su funcionamiento no consiste en emular ciclo a ciclo el procesador Z80, sino en analizar los programas BASIC mediante un parser basado en un árbol de sintaxis abstracta (AST) y ejecutarlos utilizando software moderno.
Esta aproximación permite trabajar con programas escritos en archivos de texto .cpcbas o .bas en formato ASCII, sin necesidad de reproducir toda la arquitectura del hardware original.
Gráficos, sonido y controles al estilo Amstrad CPC
Uno de los aspectos más interesantes de CPCBasic es que intenta reproducir diferentes elementos del entorno de programación del Amstrad CPC, incluyendo gráficos, sonido y entrada de usuario.
Entre sus características encontramos:
- Gráficos: compatibilidad con los modos de pantalla MODE 0, MODE 1 y MODE 2, colores del firmware del CPC y comandos como
PLOT,DRAW,MOVE,ORIGINyCLG. - Texto: utilización de una fuente de píxeles original del CPC464 para representar los caracteres mediante comandos como
LOCATE,PRINT,PENyPAPER. - Sonido: interpretación del comando
SOUND, con generación de ondas cuadradas y ruido blanco mediante el sistema de audio de Pygame. - Teclado y joystick: soporte para funciones como
INKEY$,INKEYy controles de joystick simulados. - Memoria virtual: una matriz de 64 KB que permite trabajar con comandos
PEEKyPOKEen los programas compatibles.Sabbat-cloud/cpcbasic · GitHub
El resultado busca acercarse a la experiencia audiovisual de los ordenadores de 8 bits, aunque se ejecuta en un entorno basado en Python y Pygame.
Compatibilidad con archivos DSK
Otra función destacable es la posibilidad de leer imágenes de disco .dsk directamente. El intérprete puede montar estos archivos y extraer programas BASIC en formato ASCII almacenados dentro de estructuras AMSDOS.
Esto abre una posibilidad interesante para quienes conservan programas antiguos o desean experimentar con software BASIC desde un ordenador moderno.
Importante: el proyecto no es un emulador completo del CPC. La documentación indica que no admite archivos BASIC binarios tokenizados ni programas compilados en código máquina Z80, ya que su objetivo es interpretar el lenguaje BASIC a un nivel superior.
Ejemplos incluidos para realizar pruebas
El repositorio incorpora una carpeta de ejemplos que permite comprobar diferentes capacidades del intérprete. Entre los programas disponibles se encuentran:
Matrix
Un efecto visual inspirado en Matrix, con colores, números aleatorios, bucles y sonido procedural.
Juego de reflejos
Un juego que emplea temporizadores AFTER y EVERY, lectura del teclado, envolventes de volumen y tono, y gestión de pantalla.
Demo de colores
Prueba de ciclos de colores para el borde y las tintas mediante retardos de software.
Movimiento y círculos
Ejemplos gráficos con elementos en movimiento, dibujo mediante PLOT y DRAW, y funciones trigonométricas.
Los ejemplos y sus funcionalidades se describen en el repositorio del proyecto. Las imágenes son referencias visuales del entorno CPC, no capturas verificadas de cada ejemplo.
Instalación y primeros pasos
CPCBasic requiere Python y sus dependencias. El procedimiento indicado por el autor es el siguiente:
- Clonar el repositorio.
- Crear un entorno virtual de Python.
- Instalar las dependencias mediante
requirements.txt. - Ejecutar el intérprete pasando un programa BASIC como argumento.
Por ejemplo, el repositorio propone:
python main.py examples/matrix.cpcbas --scale 3
También es posible pasar un archivo .dsk como argumento, siempre que los programas BASIC almacenados estén guardados en formato ASCII.
Un proyecto en desarrollo
Hay que tener en cuenta que CPCBasic se encuentra en una fase muy temprana de desarrollo. Su propio autor advierte de que algunas funciones, instrucciones o comportamientos todavía pueden no estar implementados, fallar o provocar errores durante la ejecución.
Por tanto, se trata de una propuesta experimental para explorar el BASIC del Amstrad CPC en Python, más que de un sustituto completo de un emulador tradicional.
El proyecto está publicado bajo licencia MIT y puede consultarse desde su repositorio de GitHub.
CPCBasic Emulator
Intérprete de Locomotive BASIC para Amstrad CPC, desarrollado en Python.
Nota CPCBasic se centra en la interpretación de BASIC y no en la emulación completa del hardware del CPC. Su soporte para DSK está limitado a programas BASIC ASCII, según la documentación del repositorio.

