DIEZ «CENTERS»
Files, Games, Disks, Media, System, Arcade, Productividad, Preferencias, Automatización y Captura/Visor. Todos sobre el mismo contrato: añadir un Center son cuatro callbacks y un struct de estado.
ChumOS / Workbench Infinity es un escritorio completamente nuevo para el Amiga 500 de 1987, escrito en 2026. Reemplaza el Workbench clásico por un entorno sin parpadeo y con estética synthwave: gestor de ficheros de doble panel, lanzador de juegos con miniaturas IFF, hoja de cálculo con motor de fórmulas real, agenda, herramientas de disco, automatización ARexx y un arcade entero de juegos y demos.
La escena Amiga nunca paró: cada año salen juegos, hardware y demos nuevos para una máquina descatalogada hace tres décadas. Lo que la escena casi nunca recibe es un escritorio nuevo —un entorno integrado y con criterio, no una sola app. ChumOS pregunta: si diseñaras hoy el workbench soñado del A500, con todo lo que sabemos de UX y con las herramientas de hoy, ¿qué se sentiría?
La respuesta es un escritorio con maneras modernas y alma clásica: cero parpadeo, arrastre de ventanas sólido a 50 fps por el Blitter, temas, atajos de teclado y barra de tareas —pero dibujado con primitivas de 1987, en 8 colores, en un disquete. Toda la pantalla se compone fuera de pantalla y se vuelca en una sola operación sincronizada con el haz; nada hace polling, así que el sistema entero duerme en un único Wait() y consume 0% de CPU cuando no tocas nada.
Y respeta el silicio: cada función tiene que ser honesta en un 68000 con 1 MB. Sin puertos de fantasía, sin «requiere aceleradora». Lo que no se puede hacer bien a 7 MHz está documentado como rechazado —y esa lista es pública.
Un escritorio nuevo para una máquina de 1987 —cero parpadeo, 8 colores, un disquete.
Files, Games, Disks, Media, System, Arcade, Productividad, Preferencias, Automatización y Captura/Visor. Todos sobre el mismo contrato: añadir un Center son cuatro callbacks y un struct de estado.
Cada frame se compone en un buffer fuera de pantalla y se vuelca una sola vez sincronizado con WaitTOF(). Las ventanas se arrastran sólidas a 50 fps por el Blitter en una CPU de 7 MHz.
Un dungeon crawler en primera persona con perspectiva de marcos anidados, línea de visión y centinelas que te persiguen —renderizado con enteros puros en un 68000 de serie.
Infinity Calc: motor de fórmulas de verdad (SUM/AVG/MIN/MAX/COUNT), detección de ciclos, gráficos de barras y exportación a IFF. Aritmética de enteros de 32 bits, sin coma flotante.
Un puerto ARexx (WBINFINITY) más su propio runner de scripts .wbs. El escritorio se puede guionizar de punta a punta.
El Center de captura escribe IFF ILBM estándar; el visor y las miniaturas del Game Center decodifican BMHD/CMAP/BODY con ByteRun1, de forma defensiva: un fichero corrupto degrada a un mensaje de error, no a un Guru Meditation.
Once esquemas de color intercambiables al vuelo, incluidos cinco temas synthwave con un escritorio «outrun» de sensación animada. El sol de neón y la rejíla en fuga son marca de la casa.
Operaciones de carpeta recursivas con guarda anti-recursión (no puedes copiar una carpeta dentro de sí misma) y marcos de recursión en heap: los 4 KB de pila de un proceso Amiga nunca corren peligro.

Nada hace polling. Cada evento —entrada, reloj de 1 Hz, timer de animación a ~15 fps, audio, ARexx— llega como señal a un único Wait(). El timer de animación solo se arma cuando la ventana frontal anima de verdad.
RedrawAll compone escritorio + ventanas + barra en un buffer fuera de pantalla y vuelca una sola vez, sincronizado con WaitTOF(). Escribir usa doble buffer por ventana; el ratón se coalesce.
Sin layers.library ni una ventana Intuition por app: los Centers son rectángulos repintados en orden Z sobre un lienzo. Por eso un escritorio + ofimática + 9 juegos caben en ~207 KB y 1 MB.
El dungeon 3D, el renderizador de Mandelbrot, el motor de hoja de cálculo y el audio corren sin una sola operación en coma flotante. Degradación elegante de KS 1.3 a 3.x, comprobada en tiempo de ejecución.
GCC 6.5 con -m68000 -O2 -fomit-frame-pointer -noixemul -Wall -Wextra. ~21.700 líneas en 44 módulos, cero avisos.
make docker: cross-build reproducible en el contenedor amigadev/crosstools. Mismo binario, cualquier máquina.
GitHub Actions compila de forma cruzada cada push y PR con la misma toolchain.
make adf empaqueta el disquete 880 K con amitools/xdftool. Arranca en WinUAE, FS-UAE, Gotek y FPGA.
~21.700 líneas de C en 44 módulos. Build reproducible en un comando; CI en cada commit.
Flujo de desarrollo asistido por IA (Claude Code de Anthropic) dirigido por un desarrollador humano, en abierto y con estándares verificables.
Lo que un 68000/ECS no puede hacer con dignidad —vídeo, alpha, mezcla de 8 voces por software— está documentado como rechazado.
Operaciones destructivas de disco y reproducción de módulos se delegan a herramientas probadas (comandos AmigaDOS, HippoPlayer), no se reinventan.
En cualquier Amiga 68000 con Kickstart 1.3+ y 1 MB (el A500 Plus es la máquina de referencia). También en WinUAE/FS-UAE, emuladores de disquetera Gotek y recreaciones FPGA como MiSTer.
Devlogs, parches y filtraciones internas. Cero spam, cero analytics. Solo lo que importa, cuando importa.