MacumbaEditor

IDE de retrocomputadoras

IDE for retrocomputers

¿Alguna vez pensaron lo increíble que hubiera sido tener algo tipo Delphi o Visual Basic para Amiga? Pero además poder desarrollar hoy de una forma moderna, visual y cómoda — sin reescribir todo para cada plataforma.

Esa es la idea detrás de MacumbaEditor. Un solo proyecto. Un solo editor visual. Un solo lenguaje de scripts: MacumbaScript. Y desde ahí, generar aplicaciones nativas para Amiga, Mac Classic, Atari ST, MS‑DOS, PDP‑11… y alguna plataforma más que probablemente no se estén imaginando.

La idea no es emular ni hacer wrappers modernos disfrazados de retro. La idea es generar código real y nativo para cada sistema, respetando cómo funciona cada máquina de verdad. Como si los RAD de los 90 hubieran seguido evolucionando… pero unos años más atrás y fuera de x86.

Ever wondered how amazing it would have been to have something like Delphi or Visual Basic for the Amiga? Or to be able to develop today in a modern, visual, comfortable way — without rewriting everything for every platform?

That's the core idea behind MacumbaEditor. One project. One visual editor. One scripting language: MacumbaScript. From there, it generates real native applications for Amiga, Mac Classic, Atari ST, MS‑DOS, PDP‑11… and a few more platforms you probably haven't even considered.

This isn't about emulating, or wrapping modern code in a retro skin. The goal is genuine native binaries for each system — respecting how each machine actually works. As if the RAD tools of the 90s had kept evolving… just a few years further back, and off x86.

Qué es MacumbaEditor, en concreto

MacumbaEditor son tres piezas que se complementan:

Sin ponernos detallistas con terminología académica, la idea es una capa de abstracción de desarrollo orientado a eventos para plataformas vintage. El paradigma de "cuando pasa X, hacé Y" — bien conocido en Delphi, VB y varios IDEs de los 90s — aplicado a las máquinas de 16 bits.

Y como los bloques AST y MacumbaScript conviven por widget, un proyecto puede mezclar ambos: el botón "OK" cierra la ventana con un bloque AST, y el botón "Calcular" hace cuentas con MacumbaScript.

What MacumbaEditor actually is

MacumbaEditor is three pieces working together:

Without getting too precious about academic terminology, the idea is to provide an event‑driven development abstraction layer for vintage platforms. The "when X happens, do Y" paradigm — well known from Delphi, VB, and several 90s IDEs — applied to 16‑bit machines.

Because AST blocks and MacumbaScript coexist per widget, a project can mix both: the "OK" button closes the window with an AST block, the "Compute" button crunches numbers in MacumbaScript.

Componentes disponibles

Siguiendo la inspiración de Delphi, lo que mete a MacumbaEditor en el carril RAD es la librería de componentes. Está pensada para cubrir el 95% de las necesidades de una app retro sin pelearte con APIs nativas. Se divide en visuales (widgets que ves en pantalla) y no‑visuales (servicios de runtime — red, archivos, sonido, etc.).

▸ Widgets visuales

AaLabel
TextField
TextArea
NumberInput
Button
Checkbox
RadioGroup
Cycle
ComboBox
Listview
TableView
TreeView
Slider
ProgressBar
ScrollV
ScrollH
⊟⊞TabView
GroupBox
Separator
StatusDot
🔔Toast
Editor visual de MacumbaEditor
Componentes visuales en el canvas — cada widget tiene propiedades editables (texto, tamaño, color, estado) y acciones / eventos (OnClick, OnChange, OnEnterKey…) que se completan con bloques AST o con MacumbaScript.

▸ Componentes no‑visuales

Cada componente sabe cómo mapearse a las APIs nativas de cada plataforma — un mismo TCPSocket usa bsdsocket.library en Amiga y MacTCP / OpenTransport en Mac. El código que escribís en MacumbaScript es el mismo en todas.

▸ Múltiples ventanas en la misma app

Una app de MacumbaEditor puede tener varias ventanas, no solo una. Diseñás cada una por separado en el editor visual — la principal y todas las secundarias — y desde el código las abrís y cerrás cuando hace falta.

Ejemplo típico: una app con su ventana main y aparte una ventana de Settings. La de Settings la abrís haciendo click en un botón "Preferencias…" y se cierra con OK / Cancel. Podés disparar ese flujo de dos formas:

Cada ventana tiene su propio canvas, sus propios widgets y sus propios event handlers. El cambio entre ventanas es nativo en cada plataforma (en Amiga abre una Intuition window real, en Mac una ventana de Toolbox, etc.) — no son tabs disfrazados.

Available components

Following the Delphi lineage, what puts MacumbaEditor in proper RAD territory is the component library. It's designed to cover 95% of what a retro app needs without having to fight native APIs. It splits into visual (widgets you see on screen) and non‑visual (runtime services — network, files, sound, etc.).

▸ Visual widgets

AaLabel
TextField
TextArea
NumberInput
Button
Checkbox
RadioGroup
Cycle
ComboBox
Listview
TableView
TreeView
Slider
ProgressBar
ScrollV
ScrollH
⊟⊞TabView
GroupBox
Separator
StatusDot
🔔Toast
MacumbaEditor visual designer
Visual components on the canvas — every widget has editable properties (text, size, color, state) and actions / events (OnClick, OnChange, OnEnterKey…) that you wire up with AST blocks or MacumbaScript.

▸ Non‑visual components

Each component knows how to map onto every platform's native APIs — the same TCPSocket uses bsdsocket.library on Amiga and MacTCP / OpenTransport on Mac. The MacumbaScript code you write stays the same wherever it's supported.

▸ Multiple windows in one app

A MacumbaEditor app can have several windows, not just one. You design each one separately in the visual editor — the main window plus any number of secondary ones — and open or close them from code as needed.

Typical example: an app with its main window plus a separate Settings window. The Settings window opens when the user clicks a "Preferences…" button, and closes on OK / Cancel. You can drive that flow two ways:

Each window has its own canvas, its own widgets and its own event handlers. Switching between windows is native on every platform (on Amiga it opens a real Intuition window, on Mac a Toolbox window, etc.) — these aren't tabs in disguise.

MacumbaEditor en acción
MacumbaEditor — el mismo proyecto exporta a Amiga, Mac Classic, Atari ST, MS‑DOS y PDP‑11.
MacumbaEditor — a single project exports to Amiga, Mac Classic, Atari ST, MS‑DOS and PDP‑11.

El mismo proyecto, compilado y corriendo en cuatro plataformas (cada IDE pareado con su emulador).

The same project, compiled and running on four platforms (each IDE paired with its emulator).

Editor de tab order en MacumbaEditor

Editor de Tab Order

Como en Delphi: con un click en cada widget elegís el orden en que el cursor de teclado salta entre ellos al apretar Tab. TextField → TextField → Button → Checkbox… lo que vos quieras.

Suena chico, pero es una de esas cosas que hacen sentir nativa a una app: el usuario navega con teclado sin tocar el mouse, en el orden lógico que vos pensaste — no en el orden arbitrario en que fuiste arrastrando widgets al canvas.

Tab order editor in MacumbaEditor

Tab Order editor

Just like Delphi: click each widget in turn to set the order keyboard focus jumps between them when you press Tab. TextField → TextField → Button → Checkbox… whatever sequence you want.

Sounds small, but it's one of those things that makes an app feel native: the user navigates by keyboard without touching the mouse, in the logical order you actually designed — not the arbitrary order in which you happened to drag widgets onto the canvas.

De qué está hecho esto

MacumbaEditor no es magia ni un experimento aislado (aunque, para ser justos, el nombre venga literalmente de ahí 🪄). Es una combinación deliberada de varias cosas que ya existen y que la comunidad retro mantuvo vivas durante décadas:

What this is built on

MacumbaEditor isn't magic, and it isn't a one‑off experiment (though, to be fair, the name literally comes from there 🪄). It's a thoughtful combination of mature tools and resources the retro community has kept alive for decades:

Sí, uso LLMs. Mucho. Y quiero sostener que este es justamente uno de los buenos casos de uso de un LLM:

  • La alternativa hoy, para desarrollar en plataformas retro, es desigual: hay toolchains abiertas excelentes (FPC, gcc, Retro68…), y también — en muchos casos — herramientas cerradas, abandonadas o con soporte mínimo. Pero lo que directamente no existe es una herramienta visual copada, estilo "Delphi/VB para máquinas de 16 bits" — ese nicho quedó vacío hace 25 años.
  • El trabajo está dominado por leer miles de páginas de documentación dispersa (Intuition Reference Manual, RKM, GEM Programmer's Guide, Inside Macintosh, IBM PC Technical Reference) y traducir entre paradigmas de máquinas muy distintas. Eso lo hacen muy bien los LLMs.
  • Una sola persona puede atacar seis plataformas en paralelo precisamente porque tiene un acelerador para leer docs, generar "glue code" por‑plataforma, comparar APIs y debuggear desensamblados. Sin eso, esto no existiría.
  • Lo que no hace el LLM: diseñar la arquitectura, decidir qué abstracciones cierran, definir qué garantías querés tener entre capas. Tampoco define el lenguaje ni la gramática de MacumbaScript, ni decide qué componentes vale la pena implementar. Eso lo manejo yo — y en el camino aprendí un montón de cosas.

Si tu posición es "los LLMs no sirven para nada útil" — tomalo como contraejemplo. Sin LLMs, este proyecto no existiría; con LLMs, lo hago yo solo y termina siendo open‑source para toda la comunidad retro.

Ahora — la inversa también es cierta, y vale ponerlo arriba de la mesa. ¿Esto se podría hacer a mano, sin LLM? Sí, claro. Free Pascal existe, p2c existe, los compiladores cruzados existen. Pero, ¿cuánto tiempo lleva? Probablemente años para una sola persona, posiblemente nunca. La diferencia no es "se puede vs. no se puede", es cuánto cuesta intentarlo.

Y la pregunta del otro lado: ¿usaría este mismo flujo para un proyecto comercial serio, no hobby, con vidas o plata real arriba? No así. Como toda herramienta, los LLMs tienen limitaciones reales: alucinan, mezclan APIs, inventan flags, no entienden invariantes sutiles. ¿Le pediría a un LLM código crítico de un dominio que no manejo, sin auditar línea por línea? No. Acá funciona porque algo de base manejo — tampoco soy el capo de 68k assembler, pero algo leo, y algo conozco de Intuition / GEM / QuickDraw lo suficiente como para detectar cuando el modelo se desvía o inventa cosas, y corregir el rumbo. Sin esa base mínima, terminás caminando a ciegas.

Punto medio, sentido común: el LLM es un multiplicador de lo que ya sabés hacer. Si sabés algo del dominio, te ahorra meses. Si no, te genera basura plausible que ni vas a poder validar. Esta web no es un manifiesto pro‑LLM ni anti‑LLM — es "este es el tipo de proyecto donde la herramienta tiene sentido, y así la uso".

Yes, I use LLMs. A lot. And I believe this is exactly one of their best real‑world use cases:

  • Developing for retro platforms today is uneven: there are excellent open toolchains (FPC, gcc, Retro68…), but also — in many casesclosed, abandoned, or barely supported tools. What's been straight up missing for 25+ years is a proper visual RAD tool — Delphi/VB style — for 16‑bit machines.
  • The work is dominated by reading thousands of pages of scattered documentation (Intuition Reference Manual, RKM, GEM Programmer's Guide, Inside Macintosh, IBM PC Technical Reference) and translating between paradigms on very different machines. LLMs are exceptionally good at exactly that.
  • One person can realistically attack six platforms in parallel precisely because there's an accelerator that reads docs, generates per‑platform glue, compares APIs and debugs disassemblies. Without it, this project wouldn't exist.
  • What the LLM doesn't do: design the architecture, decide which abstractions close cleanly, define the guarantees you want between layers. It also doesn't define the language or the grammar of MacumbaScript, nor decide which components are worth implementing. I still do all of that — and I've learned a ton along the way.

If your position is "LLMs aren't useful for anything real" — take this as a counter‑example. Without LLMs this project wouldn't exist; with LLMs, one person builds it alone and ships it open‑source to the entire retro community.

Now — the inverse is also true, and it's worth putting on the table. Could this be done by hand, no LLM? Sure. Free Pascal exists, p2c exists, the cross‑compilers exist. But how long would it take? Probably years for one person — possibly never. The difference isn't "can vs. can't", it's how much it costs to even try.

And the flip side: would I use this same flow for a serious commercial project — not a hobby, with lives or real money on the line? Not this way. Like any tool, LLMs have real limitations: they hallucinate, mix up APIs, invent flags, miss subtle invariants. Would I trust an LLM with critical code in a domain I don't know, without auditing line by line? No. This works because I have some baseline — I'm not a 68k assembly guru, but I read enough, and I know Intuition / GEM / QuickDraw well enough to spot when the model is making things up and steer it back. Without that minimum baseline, you end up walking blind.

Middle ground, common sense: the LLM is a multiplier on what you already know how to do. If you know something about the domain, it saves you months. If you don't, it produces plausible garbage you can't even validate. This page isn't a pro‑LLM or anti‑LLM manifesto — it's "this is the kind of project where the tool makes sense, and this is how I use it".

Cómo se llega al código nativo

El flujo completo, de arriba hacia abajo:

┌─────────────────────────────┐ arrastrás widgets, │ 1. IDE VISUAL │ escribís MacumbaScript │ (React + Canvas) │ en los event handlers └──────────────┬──────────────┘ ┌─────────────────────────────┐ │ 2. IR — árbol JSON │ ventanas · widgets · menús │ normalizado │ eventos: mode = "ast" | "macumba" └──────────────┬──────────────┘ ┌─────────────────────────────┐ │ 3. ANÁLISIS + TRANSPILE │ ¿usa TCP? ¿file pickers? │ (analyze + macumbaToX) │ MacumbaScript → Pascal | C └──────┬───────────────┬──────┘ Pascal (FPC) C — directo Amiga Atari ST · Mac · DOS · PDP‑11 ┌─────────────────────────────┐ │ 4. CROSS‑COMPILE (Docker) │ un toolchain por plataforma │ ppcross68k │ Retro68 │ │ atari‑mint │ djgpp │ pdp11 │ └──────────────┬──────────────┘ ┌─────────────────────────────┐ │ 5. BINARIOS NATIVOS │ .exe (Hunk) · MacBinary │ hardware real o emu │ .PRG · .EXE · .SAV └─────────────────────────────┘

▸ Por qué Pascal y C, no assembler

Lo que MacumbaEditor no es: no es la herramienta para escribir demos del nivel de grupos como The Black Lotus, juegos súper performantes, o cracktros con copper lists complicadas. Pensalo más como un Delphi cross‑plataforma: GUIs nativas, aplicaciones de productividad, herramientas, prototipos. Hay manejo de bajo nivel donde hace falta (puerto serie, TCP, file I/O, eventos raw), pero el foco es la app, no la demo de la party.

▸ Por qué un lenguaje de scripting propio (MacumbaScript)

How I get to native code

The full flow, top to bottom:

┌─────────────────────────────┐ drag widgets, │ 1. VISUAL IDE │ write MacumbaScript │ (React + Canvas) │ inside event handlers └──────────────┬──────────────┘ ┌─────────────────────────────┐ │ 2. IR — normalized JSON │ windows · widgets · menus │ tree │ events: mode = "ast" | "macumba" └──────────────┬──────────────┘ ┌─────────────────────────────┐ │ 3. ANALYZE + TRANSPILE │ does it use TCP? file pickers? │ (analyze + macumbaToX) │ MacumbaScript → Pascal | C └──────┬───────────────┬──────┘ Pascal (FPC) C — direct path Amiga Atari ST · Mac · DOS · PDP‑11 ┌─────────────────────────────┐ │ 4. CROSS‑COMPILE (Docker) │ one toolchain per platform │ ppcross68k │ Retro68 │ │ atari‑mint │ djgpp │ pdp11 │ └──────────────┬──────────────┘ ┌─────────────────────────────┐ │ 5. NATIVE BINARIES │ .exe (Hunk) · MacBinary │ real or emulated HW │ .PRG · .EXE · .SAV └─────────────────────────────┘

▸ Why Pascal and C, not assembly

What MacumbaEditor isn't: it's not the tool to build The Black Lotus‑level demos, hyper‑optimized games, or cracktros with intricate copper lists. Think of it more as a cross‑platform Delphi: native GUIs, productivity apps, tools, prototypes. Low‑level access is there where it matters (serial, TCP, file I/O, raw events), but the focus is on the application — not on the demoparty release.

▸ Why a custom scripting language (MacumbaScript)

Plataformas soportadas

Amiga (OS 1.x → 3.x)FPC 3.3.1 → Hunk
Macintosh Classic 68KRetro68 → MacBinary
Atari STm68k‑atari‑mint → PRG
MS‑DOSdjgpp / TP7 → EXE
PDP‑11gcc‑pdp11‑aout → SAV

Supported platforms

Amiga (OS 1.x → 3.x)FPC 3.3.1 → Hunk
Macintosh Classic 68KRetro68 → MacBinary
Atari STm68k‑atari‑mint → PRG
MS‑DOSdjgpp / TP7 → EXE
PDP‑11gcc‑pdp11‑aout → SAV

Standalone + Online

MacumbaEditor se va a distribuir en dos formas, con la misma funcionalidad:

El IDE incluye dos launchers para mandar el binario a una retro real o emulada: (1) Launcher por puerto serie (USB‑Serial, RS‑232) para deploys directos por cable a Amigas, STs, PCs y Macs reales; y (2) Launcher por TCP para emuladores con puerto serie tunelizado o retrocomputadoras conectadas por red (vía bridge serial‑a‑TCP). Hablan con módulos Meshtastic, microcontroladores y todo lo que asome por /dev/ttyUSB* o COM*.

En la versión online, el acceso al puerto serie del host se resuelve con un pequeño agente local (o la Web Serial API del browser donde esté disponible) — la idea es que la web y la standalone hagan lo mismo, sin que tengas que elegir.

Aclaración honesta: sinceramente no conocía la Web Serial API. Me lo comentó mi amigo Alecu — me confirmó que es posible — así que queda en la lista para implementarlo y que se pueda usar directo desde la web, sin agente local de por medio.

Bonus de generar binarios + imágenes de disco: MacumbaEditor no solo emite el .exe / .PRG / MacBinary / .SAV nativo por plataforma — también arma imágenes de disco listas para usar: .adf de Amiga, .st de Atari, .img bootable de DOS, .img / .dsk HFS de Mac (para Mini vMac / Basilisk II) y .dsk de RT‑11. Las metés directo en un emulador o las flasheás a un Gotek / disquete real / SD para probar en hardware auténtico en segundos.

Standalone + Online

MacumbaEditor will ship in two forms with the same functionality:

The IDE ships with two launchers to push the binary onto a real or emulated retro machine: (1) Serial launcher over the host's serial port (USB‑Serial, RS‑232) for direct cable deploys to real Amigas, STs, PCs and Macs; and (2) TCP launcher for emulators with a tunneled serial port, or for retrocomputers reachable over the network via a serial‑to‑TCP bridge. They both talk to Meshtastic modules, microcontrollers and anything else that shows up on /dev/ttyUSB* or COM*.

In the browser version, host serial port access is bridged through a small local agent (or the browser's Web Serial API where available) — the goal is for web and standalone to do the same thing, with no compromises you have to choose between.

Honest aside: I genuinely didn't know the Web Serial API existed. My friend Alecu pointed it out — he confirmed it's doable — so it's on the list to implement, so you'll be able to use the serial port straight from the browser, with no local agent in the middle.

Bonus — binaries and disk images: MacumbaEditor doesn't just emit the native .exe / .PRG / MacBinary / .SAV per platform — it also builds ready‑to‑use disk images: Amiga .adf, Atari .st, bootable DOS .img, Mac HFS .img / .dsk (for Mini vMac / Basilisk II) and RT‑11 .dsk. Drop them straight into an emulator, or flash them onto a Gotek, a real floppy, or an SD card, and test on authentic hardware in seconds.

Estado del proyecto

Antes del lanzamiento público, se va a abrir el acceso para testing privado a un grupo chico de usuarios elegidos — para curtir bordes ásperos y ajustar lo que haga falta antes de que esto salga al mundo. Si te interesa, escribime.

Y acá va lo importante: la mejor manera de entender qué es este proyecto va a ser viendo los programas concretos que voy a ir subiendo.

📂 Mirá Ejemplos — la sección va a crecer en las próximas semanas con apps reales, chiquitas pero útiles, compiladas para todas las plataformas soportadas. Por ahora ya hay uno usable que se apoya en el componente Serial: el cliente Meshtastic chat compilado para Amiga, ST, Mac y DOS.

Lanzamiento público: en algún momento entre fines de 2026 y 2027. Va a ser open‑source — licencia libre, código en GitHub, contribuciones bienvenidas.

El esfuerzo ahora mismo está concentrado en tres frentes:

Project status

Before the public release, access will open for private testing to a small group of selected users — to iron out rough edges and tune whatever needs tuning before this goes out into the world. If you're interested, drop me a line.

And here's the important part: the best way to understand what this project really is will be by looking at the concrete programs I'll be uploading.

📂 Check Examples — the section will grow over the coming weeks with real, small, actually‑useful apps compiled for every supported platform. There's already one usable example built around the Serial component: the Meshtastic chat client, compiled for Amiga, ST, Mac and DOS.

Public release: late 2026 — 2027. Fully open‑source on GitHub, free license, contributions welcome.

Effort right now is focused on three fronts:

Lanzamiento estimado: fines de 2026 — algún momento de 2027

Estimated release: late 2026 — sometime in 2027

Ver ejemplos See examples

Acerca del autor

José Francisco "Pancho" Manera

Licenciado en Ciencias de la Computación por la Universidad Nacional del Sur (Bahía Blanca, Argentina). Hace años que orienta su trabajo al mundo emprendedor y al desarrollo de software, con un interés particular por la historia de la computación y la preservación digital.

Cofundador del Museo de Informática Espacio TEC (Bahía Blanca) — uno de los espacios de preservación informática más importantes de Latinoamérica. Coleccionista, desarrollador retro y curador de hardware/software histórico.

Actualmente impulsa, junto a Espacio TEC y con apoyo de la Vintage Computer Federation, el Vintage Computer Festival Latin America.

Contacto: josemanera[ARROBA]gmail.com · francisco[ARROBA]espaciotec.com.ar

About the author

José Francisco "Pancho" Manera

Computer Science graduate from Universidad Nacional del Sur (Bahía Blanca, Argentina). Entrepreneur, software developer, and a long‑time passionate retrocomputing enthusiast — with a particular interest in the history of computing and digital preservation.

Co‑founder of Museo de Informática Espacio TEC (Bahía Blanca) — one of Latin America's leading computing‑preservation spaces. Collector, retro developer, and curator of historical hardware and software.

Currently driving, together with Espacio TEC and with support from the Vintage Computer Federation, the Vintage Computer Festival Latin America.

Contact: josemanera[AT]gmail.com · francisco[AT]espaciotec.com.ar

P.D.: sí, obviamente esta página la hice con un LLM. Detesto la programación web 🌐. Coherencia total con todo lo que se dice más arriba — buen caso de uso, lo uso, no lo escondo.

P.S.: yes, obviously I built this page with an LLM. I genuinely hate web programming 🌐. Fully consistent with everything said above — good use case, I use it, I don't hide it.