Development Amiga Synthesis Hub
Lenguaje de programación de alto nivel que transpila a C para Commodore Amiga.
Escribe código limpio, sintetiza ejecutables nativos.
Source (.dash) → Parser (Lark) → AST → Analyzer → CodeGen → C → GCC → Amiga Executable
Programar para Amiga en C implica gestión manual de memoria, punteros, includes interminables y conocer la API de AmigaOS a fondo. Dash elimina esa fricción: sintaxis clara inspirada en Ruby/Python, tipos inferidos y acceso directo a Intuition, Graphics, Audio, Sprites, Copper y más.
El resultado es un binario nativo m68k. Sin intérpretes, sin VM, sin compromiso.
Window MiVentana
title "Hola Dash"
width 400
height 150
end
Main
MiVentana.open
EventLoop
On Close
Print "Adiós!"
Stop
end
end
end./dash examples/hola.dash -o bin/hola- Variables con inferencia de tipos (sin declaraciones)
- Expresiones aritméticas, lógicas y de comparación
- Control de flujo:
if/else,while,for/in,for/range - Funciones con parámetros, retorno y recursión
- Arrays con literales, acceso por índice, slicing y
.length - Strings con interpolación, concatenación y operaciones
- Structs con métodos
- Constantes y enumeraciones
- Imports de módulos
- Scope léxico
- Intuition — Ventanas, screens, event loops, GadTools, ReAction
- Graphics — Primitivas de dibujo, colores, bitmaps
- Sprites — Hardware sprites y soft sprites
- Copper — Listas de cobre programables
- Blitter — BOBs y operaciones de blitting
- Audio — Reproducción de tonos y samples
- IFF — Carga de imágenes ILBM
- DOS — Operaciones de ficheros
- RTG — Soporte para tarjetas gráficas
- Double Buffering — Animación sin flicker
- FFI — Llamadas directas a funciones C/AmigaOS
# 1. Dependencias del sistema
sudo apt update
sudo apt install -y python3 python3-pip make wget git gcc g++ \
lhasa libgmp-dev libmpfr-dev libmpc-dev flex bison \
gettext texinfo ncurses-dev autoconf rsync libreadline-dev
# 2. Parser de Dash
pip install lark --break-system-packages
# 3. Cross-compiler para Amiga (m68k-amigaos-gcc)
git clone https://github.com/BlitterStudio/m68k-amigaos-gcc.git ~/m68k-amigaos-gcc
cd ~/m68k-amigaos-gcc
make update
sudo mkdir -p /opt/amiga && sudo chown $USER /opt/amiga
make all -j$(nproc)
# 4. Añadir al PATH
echo 'export PATH="/opt/amiga/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# 5. Clonar Dash y probar
git clone https://github.com/FreeMEM/dash.git
cd dash
./dash examples/hola.dash -o bin/hola# 1. Dependencias del sistema
sudo pacman -S --needed python python-pip make wget git gcc \
lhasa gmp mpfr libmpc flex bison gettext texinfo \
ncurses autoconf rsync readline
# 2. Parser de Dash
pip install lark --break-system-packages
# 3. Cross-compiler para Amiga (m68k-amigaos-gcc)
git clone https://github.com/BlitterStudio/m68k-amigaos-gcc.git ~/m68k-amigaos-gcc
cd ~/m68k-amigaos-gcc
make update
sudo mkdir -p /opt/amiga && sudo chown $USER /opt/amiga
make all -j$(nproc)
# 4. Añadir al PATH
echo 'export PATH="/opt/amiga/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 5. Clonar Dash y probar
git clone https://github.com/FreeMEM/dash.git
cd dash
./dash examples/hola.dash -o bin/holaLa compilación del cross-compiler tarda entre 30 minutos y 2 horas según tu hardware. Ver docs/INSTALACION.md para la guía completa, resolución de problemas y opciones avanzadas (macOS, versiones de GCC, elf2hunk).
# Compilar a ejecutable Amiga
./dash archivo.dash -o bin/archivo
# Solo transpilar a C (sin compilar)
python3 -m compiler.main archivo.dash -o build/archivo.c
# Ejecutar tests
python3 tests/run_tests.pydash CLI principal
compiler/ Transpilador (Python/Lark)
grammar.py Gramática del lenguaje
transformer.py Parse tree → AST
ast_nodes.py Nodos del AST
analyzer.py Análisis semántico
codegen.py Generación de código C
amiga_builtins.py Bindings de la API Amiga
runtime/ Headers del runtime (arrays, strings)
lib/amiga/ Módulos estándar de Amiga
examples/ Programas de ejemplo
tests/ Suite de tests
docs/ Documentación
- Documentación del lenguaje — Guía completa
- Manual de referencia — Referencia del programador
- Quick Reference — Cheat sheet
- API Amiga — Referencia de la API
- Instalación — Setup del entorno
- Roadmap — Plan de desarrollo
Este proyecto es software libre. Ver fichero LICENSE para detalles.