novedad

PiStudio: un IDE para Amstrad CPC impulsado por Raspberry Pi

Llevo un tiempo trabajando en un proyecto personal llamado PiStudio.

Es un nuevo entorno de desarrollo que se ejecuta en una Raspberry Pi y se conecta a un Amstrad CPC a través del CPC-CPLINK de Revaldinho.

PiStudio convierte el CPC en una estación de desarrollo donde se puede programar, compilar, depurar, gestionar archivos y explorar o mantener repositorios Git, todo directamente desde el teclado y la pantalla del CPC (a plena resolución overscan de 92x32 caracteres). Está construido en torno a un conjunto de herramientas integradas que funcionan en conjunto, con un portapapeles compartido, una interfaz unificada y la posibilidad de abrir documentos de una aplicación en otra. Está diseñado para funcionar totalmente sin conexión, y algunas funciones opcionales aprovechan la conectividad de red.

En el fondo, la idea es sencilla: la Pi se encarga discretamente de todo el trabajo pesado, mientras el CPC sigue siendo un front-end que responde al instante. La experiencia resulta natural y auténtica: estás trabajando en tu CPC, solo que con capacidades que en 1985 habrían parecido ciencia ficción.

Editor de texto

01 texteditor sidebysideediting

01 texteditor horizontalsplit codeinspector

01 texteditor editingbasic

El editor es el corazón de PiStudio. Es un editor de código completo, pensado para el desarrollo, pero igual de cómodo con cualquier archivo de texto.

Funciones principales:

  • Varios documentos abiertos, con navegación por pestañas
  • Edición en vista dividida (horizontal o vertical) para comparar o editar dos archivos uno junto al otro
  • Buscar y reemplazar en el archivo actual o en todo el proyecto
  • Marcadores para moverse rápido entre los archivos favoritos
  • Buscador difuso de archivos, para localizar un archivo por su nombre al instante
  • Compilación del archivo activo o de un archivo principal designado, con un solo atajo. El binario resultante puede enviarse a la memoria del CPC y ejecutarse.
  • Los lenguajes y toolkits admitidos son Locomotive BASIC, RASM y el compilador de C SDCC
  • Code Inspector: acceso a tus variables y funciones mientras editas los fuentes (se admiten ASM, BASIC y C)
  • Historial de UNDO/REDO y portapapeles ilimitado
  • Cuadro de diálogo de calculadora, con conversión hexadecimal/decimal
  • Tabla ASCII y de caracteres (glifos del CPC)
  • Corrección ortográfica multilingüe
  • Herramienta de traducción asistida por IA
  • Formateo automático de los archivos ASM
  • Ajuste de línea automático, ancho de tabulación configurable
  • Compatibilidad con impresión
  • Persistencia completa de la sesión: archivos abiertos, posiciones del cursor, estado de las vistas divididas… todo se restaura en el siguiente arranque

Depurador

02 debugger breakpointreached

02 debugger variablewatch

02 debugger memoryvisualizer

El depurador permite inspeccionar y avanzar paso a paso por programas que se ejecutan en el hardware real del CPC. Cuando tu programa alcanza un punto de interrupción (instrucción BRK), el cliente CPC captura el estado completo del Z80 (con soporte parcial del Gate Array por ahora) y lo envía a PiStudio.

Funciones principales:

  • Z80 emulado
  • Vista completa de los registros del Z80, incluidos todos los registros alternativos
  • Detección del estado del Gate Array (selección de ROM, banking de RAM), para saber siempre qué está paginado en cada dirección
  • Panel de desensamblado, con navegación por PC o por dirección introducida a mano
  • Panel de volcado de memoria (los 64 KB de espacio de direcciones)
  • Step into, step over, step return, continue, ejecutar hasta el cursor
  • Integración de los archivos de símbolos de RASM / SDCC (las etiquetas se resuelven, se muestran en el desensamblado y se pueden buscar por nombre)
  • Acceso rápido al código fuente ASM o C correspondiente a la posición actual del desensamblado
  • Contador de NOPs, para una temporización y un profiling exactos al ciclo
  • Visualizador de memoria
  • Búsqueda de texto y hexadecimal en toda la memoria
  • Importación/exportación de datos binarios desde y hacia archivos
  • Exportación de listados de desensamblado

Editor hexadecimal

03 hexeditor horizontalpanels

03 hexeditor showasciitable

Un editor binario específico, para trabajar con datos en bruto, imágenes de disco o volcados de memoria.

Funciones principales:

  • Visualización hexadecimal y ASCII una junto a otra
  • Modos de inserción y sobrescritura
  • Selección con indicación en vivo de la longitud y la suma de comprobación
  • Cortar, copiar, pegar
  • Importación/exportación de bloques binarios
  • Búsqueda de texto y hexadecimal, con reemplazo
  • Navegación directa por offset
  • Compatibilidad con vista dividida
  • Deshacer/rehacer
  • Compatibilidad con impresión

Gestor de archivos

04 filemanager verticalpanels

04 filemanager horizontalpanels

04 filemanager fullscreenshell

Un navegador de archivos de doble panel que reúne el acceso al almacenamiento de la Pi, a las disqueteras físicas del CPC y a las instancias remotas de PiStudio presentes en la red.

Unidades admitidas:

  • PI: el almacenamiento de PiStudio en la Pi
  • A: y B: las disqueteras físicas del CPC
  • nombre de host: las instancias remotas de PiStudio descubiertas en la red local

Funciones principales:

  • Disposición de doble panel, para copiar o mover con facilidad entre ubicaciones
  • Compatibilidad completa con UniDOS para las operaciones de sistema de archivos extendidas (nombres largos, subdirectorios, dispositivos de almacenamiento modernos)
  • Crear carpetas, renombrar, copiar, mover, borrar
  • Selección de archivos por patrón de palabra clave
  • Mostrar u ocultar los archivos ocultos, columnas configurables (tamaño, fecha, hora), orden por nombre, tamaño o fecha
  • Marcadores para los directorios más usados
  • Buscador difuso de archivos
  • Apertura directa en el editor de texto o en el editor hexadecimal
  • Creación de imágenes de disco DSK (con la posibilidad de navegar por ellas sin abrirlas)
  • Creación de archivos ZIP (con la posibilidad de navegar por ellos sin abrirlos)
  • Inspección de las cabeceras AMSDOS
  • Compatibilidad con shell

Control de versiones

05 sourcecontrol revisionhistory

05 sourcecontrol editmenu

05 sourcecontrol unstagedfiles

Un front-end de Git completo, pensado para trabajar con el teclado.

Funciones principales:

  • Inicializar, abrir y clonar repositorios
  • Reabrir repositorios recientes
  • Consultar los cambios del árbol de trabajo y el historial completo de commits
  • Visor de diff en paralelo
  • Visor de diff línea a línea, con ajuste de línea
  • Añadir o quitar del índice un archivo o todos los cambios
  • Descartar cambios
  • Hacer commit con mensaje
  • Revertir commits
  • Sincronizar / traer la última versión
  • Volver a una revisión concreta
  • Hacer push al remoto

Chatbot / asistente de código

06 chatbot sendingrequest

06 chatbot multilanguagesupport

Un asistente basado en IA integrado en PiStudio, compatible con OpenAI (ChatGPT) y con Anthropic (Claude) como proveedores.

Funciones principales:

  • Iniciar conversaciones nuevas o retomar las anteriores
  • Historial de conversaciones, con guardado y carga
  • Configuración del proveedor (claves de API, elección del modelo)
  • Disposición en vista dividida
  • Útil para un análisis rápido de código, mejoras de algoritmos o ayuda general de programación,

sin salir nunca del IDE. También puede comentar automáticamente tu código, sugerir el renombrado de etiquetas, traducir documentos enteros, generar nuevos archivos cuyo contenido escribe la IA, etc.

El Chatbot también es accesible como cuadro de diálogo desde el editor de texto.

Guía del desarrollador

07 devguide welcomepage

07 devguide subsections

07 devguide insidearticle

Una enciclopedia de referencia completa, totalmente sin conexión, que cubre todo lo relacionado con el Amstrad CPC. Los artículos están enlazados entre sí mediante hipervínculos. Es una enorme base de conocimiento incorporada, organizada en artículos revisados y consultables (unos 3 MB de texto sin comprimir hasta la fecha).

Las categorías de contenido incluyen:

  • Para empezar: elige tu camino — BASIC, ensamblador Z80 o C
  • Historia y cultura: cronología del CPC, software destacado, comunidad, comparativas con los ordenadores de 8 y 16 bits, y más
  • Manual del Amstrad CPC: el manual de usuario completo, reformateado para consultarlo rápido
  • Manuales de software: RASM, Maxam, DAMS, Orgams, Protext, Utopia, Starkos, Soundtrakker, OCP, Discology y más
  • Locomotive BASIC: tutorial completo, referencia de palabras clave, tabla de tokens, mensajes de error, consejos de optimización
  • Programación en C: SDCC para el CPC — sintaxis, estructuras de datos, restricciones del embebido, optimización, integración con PiStudio
  • Hardware: CPU Z80, CRTC, Gate Array, PPI, AY-3-8912, FDC, ASIC, periféricos, Multiface 2, M4 Board, UniDOS, CPC-CPLink
  • Firmware y mapa de memoria: vectores del firmware, organización de la memoria, espacio de direcciones por modelo
  • Programación en ensamblador Z80: tutorial (de principiante a experto), modos de direccionamiento, interrupts, optimización, temporización en NOPs
  • Algoritmos y estructuras de datos: ordenación, búsqueda, compresión, coma fija, trigonometría
  • Archivos y almacenamiento: tipos de archivo, formatos de disco, formatos de imagen DSK/SNA/CDT/CPR, cargadores rápidos
  • Programación gráfica: 2D/3D, efectos de pantalla, rotación, proyección
  • Programación de sonido: programación del chip AY, reproductores de música, digidrums, efectos de sonido, integración con trackers
  • Desarrollo de juegos: motores de sprites, tile maps, física, IA, sistemas de entidades
  • Técnicas de demomaking: rasters, ruptures, overscan, plasma, starfield, fuego, mezcla de modos
  • Trucos y consejos: optimización de velocidad, depuración, compatibilidad, PEEK y POKE útiles
  • Colecciones de código fuente: código en ensamblador Z80 aportado por miembros de la comunidad
  • La búsqueda de texto completo (Ctrl+F) abarca todo el contenido

Ajustes

08 settings configureprinter

08 settings wificonfiguration

08 settings editingcolors

Y, por último, la configuración general de PiStudio.

Opciones configurables:

  • Configuración del WiFi
  • Configuración de la impresora (red local)
  • Claves de API para el Chatbot
  • Configuración del usuario y las credenciales de Git
  • Personalización del tema de color
  • Preferencias de visualización

Unas palabras sobre el cliente CPC

En el lado del cliente se ejecuta un programa compacto en ensamblador Z80 (disponible en ROM o en disco) que:

  • Cambia el CPC a Modo 2 overscan, para mostrar el IDE a pantalla completa
  • Lee la matriz del teclado del CPC y envía los eventos de teclado a la Pi
  • Detecta y resuelve automáticamente las colisiones de hardware del teclado
  • Recibe las actualizaciones de pantalla como diferencias de caracteres (solo se transmiten las celdas que cambian, por velocidad)
  • Gestiona los puntos de interrupción: cuando un programa en ejecución alcanza una instrucción BRK, el cliente captura todos los registros del Z80, el estado del Gate Array y un volcado completo de los 64 KB de RAM, y devuelve el control al depurador de PiStudio
  • Gestiona la entrada/salida de archivos mediante llamadas al firmware AMSDOS, para leer y escribir en las disqueteras del CPC
  • Admite los comandos RSX de UniDOS para dispositivos de almacenamiento modernos
  • Incluye una gestión robusta de los tiempos de espera y una reconexión automática si se interrumpe el enlace con el CPC-CPLINK
  • La función de depuración no está disponible cuando se arranca desde disco

Disponibilidad

Esta entrada es solo un anuncio. PiStudio ya está bastante sólido tal como está, pero antes quiero sacar adelante con él un proyecto personal de verdad, dándome el tiempo necesario para pulir y mejorar la experiencia en conjunto.

Para simplificar la distribución, PiStudio se publicará como una imagen de disco que se escribe en una tarjeta SD de Raspberry Pi.

Para terminar

Quiero dar las gracias a Rabs, que fue quien me habló del proyecto CPC-CPLink, y a TotO que, como de costumbre, ha sido una fuente continua de inspiración y de consejo mientras diseñaba PiStudio.

¡Estad atentos!