OVERLAPPING WINDOWS
Drag, resize, minimize, maximize and shade (roll-up). Double-click a title bar to maximize, right where your muscle memory expects it. Cascade included.
Castalia 92 is the Windows 95 every 386 owner dreamed of in 1992: a complete graphical desktop — overlapping windows, a taskbar and Start button, thirty-plus built-in programs, eighteen colour themes, a demoscene screensaver — that boots from DOS and flies on 4 MB of RAM. It is free, MIT-licensed, and written in period-correct C89.
The constraint is the point. Castalia 92 targets a real-mode 386 with VGA and 4 MB of RAM, and it is built almost entirely with the tools and rules of that era: no DOS extender, no protected mode, no floating point, no external libraries. If a 1992 machine cannot run it, it does not ship.
"Everyone who owned a 386 remembers the day Windows 95 arrived and their machine could not run it," said Dave Abellan, creator of Castalia 92. "Castalia 92 is for that machine. It is the desktop 1992 deserved: the whole Windows 95 feeling — the taskbar, the themes, the little startup chime — running happily in the memory footprint of a device driver."
The trick is VGA Mode 13h (320×200, 256 colours): a full off-screen back buffer composited in system memory and presented with partial blits — the compositor tracks damage, so a click repaints a window, not the screen. Title bars sweep a reserved 32-entry DAC gradient ramp, the iconic navy-to-sky bloom. The resident shell stays around 120 KB so DOS programs launch comfortably, and a free-memory mode unloads it entirely to give a big game every last kilobyte.
The Windows 95 your 386 was promised and never got — three years early and 120 KB small.
Drag, resize, minimize, maximize and shade (roll-up). Double-click a title bar to maximize, right where your muscle memory expects it. Cascade included.
A taskbar with one button per window, a tray speaker icon, a live clock and the Start button (yes, "Inicio": the studio is Spanish, and so is the castle on the crest). A cascading Start menu with flyouts and per-item icons.
The media player: WAV as real digital audio on a Sound Blaster, a Covox Speech Thing or a Disney Sound Source on the printer port (or PWM tricks on the bare PC speaker), plus polyphonic MIDI with General-MIDI voices on an AdLib/OPL2 FM chip. LCD strip, spectrum analyzer with peak caps, playlists.
A live animated dashboard: a hardware readout with status LEDs, an oscilloscope, an LED clock, charging memory/disk gauges and a BIOS equipment strip.
A six-test suite (integer, memory, video kernels) indexed against a 386SX/16, with a composite CASTALIA SCORE and a machine-class verdict, drawn as animated bars.
Eighteen complete schemes restyling every pixel of chrome — classic, moncloa, matrix, redmond, hotdog, sunset, sakura, dos… — live-previewed in Settings and cross-faded via a DAC ramp when applied.
Minesweeper, klondike with a winning cascade, Reversi, snake, breakout, falling blocks, ten-floor sokoban, sound memory, Lights Out, fifteen, tic-tac-toe, Pong and 2048. All with sound effects and persistent high scores.
Mark a shortcut freemem=true and Castalia unloads itself completely to give a big DOS game every last kilobyte, then returns when the game exits.

VGA 320×200×256 with a full back buffer in system memory, presented with partial blits: the compositor tracks damage, so a click repaints a window, not the screen. Mode 12h (640×480×16) fully supported with planar drawing.
The scene is cached: uncovering a window restores pixels from cache instead of recomputing the wallpaper. Cross-fades (themes, screensaver, shutdown) are DAC ramps — free at 320×200.
Everything animated is fixed-point integer arithmetic on one shared 256-entry sine table. The voxel uses a per-column y-buffer; the corridor is a DDA raycaster with a 16×16 bit-packed map (the whole level costs 32 bytes).
Real mode gives one 64 KB near-data segment (DGROUP) and it fills fast. Large tables — sine LUTs, textures, the MIDI buffer — live in far memory by design. The resident shell stays around 120 KB.
CI boots the compiled .EXE in DOSBox over Xvfb and captures the screen with ImageMagick: the images come from the same build that ships, not from a reimplementation.
GitHub Actions builds the real 16-bit binaries with Open Watcom (wcc, medium model) on every push.
A lint script enforces the house C89 style; another keeps the Makefile, BUILD.BAT and linker script in lock-step and the version honest.
The pipeline packages the release folder. The screenshots in this press kit come from that same pipeline, at the native 320×200.
Pure C89 across 60 files, without a single vendored external library. Source included; redistribute it with your coverage, cover-mount CDs included.
Not one external library. No extender, no protected mode, no floating point. Just C89 and direct VGA.
If a 1992 machine cannot run it, it does not ship. The constraint is the point, not an obstacle.
Tombatossals Softworks LLC. Small, frequent releases on the way to 1.0.
It is a graphical operating environment: a desktop shell that runs on top of DOS. It does not replace DOS; it puts windows, a taskbar, themes and thirty programs on top, and steps aside when you launch a game that needs the memory.
Devlogs, patches and internal leaks. Zero spam, zero analytics. Just what matters, when it matters.