
Wake up! 16b: a 16-byte x86 intro that draws a fractal and sings it
Demoscener HellMood has published a deep write-up of “wake up! 16b”, a 16-byte DOS program released at the Outline demoparty. It draws an endless Sierpinski fractal in text memory while the same bytes drive the PC speaker.
Demoscener HellMood has published a detailed write-up of “wake up! 16b”, a 16-byte x86 program released at the Outline demoparty in Ommen, the Netherlands, in May 2026. The tiny real-mode DOS program draws an endless Sierpinski fractal into text memory and, from the same bytes, drives the PC speaker.
Sixteen bytes and a primed canvas
The whole program is a handful of instructions: a BIOS call that sets video mode 0, a 40×25 character grid; a move that points the data segment at 0xb800, the CGA/VGA text buffer; then a loop that reads a byte, steps the source index backwards by 56 bytes, XORs that byte into video memory and writes it to port 61h, the PC speaker port. Bit 1 of the value pushes the speaker cone out or in.
The canvas is not blank. When the BIOS clears the screen it fills all 2,000 character cells with 0x20, a space, and 0x07, light grey on black, so the code XORs against a uniform pattern rather than against zeroes.
Sierpinski from a prefix sum
Reduced to mathematics, the loop computes a binomial sequence scaled by two: each cell becomes a running sum of its predecessors. Because XOR is addition without carries, the modulo-two view of that sequence is Pascal's triangle mod 2 — the Sierpinski gasket. The write-up connects the behaviour to rule 60 of elementary cellular automata and to Lucas's theorem, which guarantees the equivalence.
Why it sounds the way it does
The step is −56 bytes rather than −16, so the code only touches offsets that are multiples of eight: 8,192 steps that wrap the 64 KB segment seven times. That doubles the cycle length and halves the fundamental frequency, dropping the sound by an octave. The same offset shears the picture diagonally — on an 80-column screen, moving back 56 bytes equals moving forward 24, so only ten distinct columns are ever written and the fractal appears as ten pillars of characters climbing the display.
Not everything sent to the speaker comes from the fractal. The segment also holds shadowed video BIOS code, and XORing against whatever the firmware left in RAM gives the intro its gritty, machine-specific tone. HellMood notes the output is very sensitive to the emulator and BIOS version, and that zeroing memory first would make it perfectly uniform — at a cost in bytes he does not have.
Real hardware
Scener miragept captured the intro on period hardware, patching the address from 0xb800 to 0xb000 so it would render on an MDA/Hercules display: a 286 with an EGA card and an IBM 5151 monitor. HellMood's earlier “M8trix” from 2014 smeared pseudorandom letters across the screen in eight bytes; this time, he writes, the sound came first.
SiTech — AI-powered web development
We build fast, modern websites and bring AI into real business workflows. Have a project or a question? We'd love to help.