Skip to content

FreeMEM/dash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

D.A.S.H.

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

Por qué Dash

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.

Ejemplo

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

Características

Lenguaje

  • 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

Amiga API

  • 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

Instalación rápida

Ubuntu / Debian

# 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

CachyOS / Arch Linux

# 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/hola

La 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).

Uso

# 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.py

Estructura del proyecto

dash                  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

Licencia

Este proyecto es software libre. Ver fichero LICENSE para detalles.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages