Enciende un A500 con ChumOS, no toques nada y mira el medidor: 0% de CPU. No «casi cero»: cero. El sistema entero —escritorio, reloj, diez Centers— duerme en una única llamada a Wait() esperando señales. En una máquina de 7 MHz, cada ciclo que no gastas en reposo es un ciclo que tienes cuando importa.
Nada hace polling
La entrada llega por señal. El reloj de 1 Hz llega por señal. El audio y ARexx llegan por señal. El timer de animación a ~15 fps solo se arma mientras la ventana frontal anima de verdad —un plasma en pantalla lo enciende; cerrarlo lo apaga. La disciplina es total porque en un 68000 el polling se nota: un bucle de espera ocupado te roba la mitad de la máquina.
Un frame, un blit
La otra mitad del truco es el pipeline sin parpadeo: RedrawAll compone escritorio + ventanas + barra en un buffer fuera de pantalla y lo vuelca UNA vez, sincronizado con WaitTOF(). Los movimientos de ratón se agrupan; teclear usa doble buffer por ventana. Resultado: ventanas que se arrastran sólidas a 50 fps por el Blitter, en 8 colores, en hardware de 1987.
En un 68000, cada ciclo que no gastas en reposo es un ciclo que tienes cuando importa.
Por qué los Centers no son ventanas
Sin layers.library, sin una ventana de Intuition por app: los Centers son rectángulos repintados en orden Z sobre un lienzo. Suena a herejía y es la razón de que un escritorio + ofimática + nueve juegos quepan en ~207 KB y arranquen desde un disquete. Neon Dungeon incluido, renderizado con enteros puros.

C. DI CASTELLO · DEVELOPER LEAD · PRINCETON, IL · 2026.05.30