The modern web browser is now far more than a thing for rendering web pages, it’s a multi-faceted environment that can provide a home for almost any application you could imagine. But why should JavaScript or Wasm have all the fun? CSS is Turing complete now, right? Why not, as [Lyra Rebane] has done, write an 8086 emulator in pure CSS?
The web page at the link above may contain an 8086, but missing MMU aside, don’t expect it to run Linux just yet. Instead it has limited resources, just enough to run a demo program. It needs a Chrome-adjacent browser because it uses some CSS functions not available in for example Firefox, but we’ll forgive it that oddity. Its clock is provided by a small piece of JavaScript not because CSS can’t provide one, but because the JS version is more stable.
On one hand this is of little practical use, but to dismiss it as such is to entirely miss the point. It’s in the fine spirit of experimentation, and we love it. Perhaps a better way to look at it is to see what could be done more efficiently with the same idea. A 1970s CISC microprocessor might not be the best choice, but would for example a minimalist and optimized RISC design be more capable? We’re looking forward to where others take this thread.
It’s not the first unexpected computing environment we’ve found, who could forget the DOOM calculator!
Header: Thomas Nguyen, CC BY-SA 4.0.

I think there never existed an MMU for 8086. But Xenix and Minix ran without MMU in 8086/8088.
I believe the author’s point was that Linux won’t run without an MMU, that’s the “missing MMU”. I remember the early days of the μClinux project, trying to get Linux to run on Dragonball D68EZ328, which also doesn’t have an MMU, on a Palm Pilot! Didn’t succeed, and while (early)Xenix ran without an MMU, it also sucked big time! Also Minix, always an academic project, was displaced by wholly re-written “Minix 3” which also requires an MMU(386 or 68030 or higher). Now someone just has to write a memory management unit in CSS! lol
The Psion 3 PDA had an 8086 with an MMU that only allowed small model programs.
There were variants of NEC’s 8086 compatibles (V20/V30) that had an MMU.:
https://en.wikipedia.org/wiki/NEC_V20#Variants_and_successors
The NEC V33 supports external MMUs, the V41/51 have an MMU that’s used for EMS support.
The VG230 is an XT-on-a-chip and has EMS capable MMU, as well.
In the early 80s, 80186 based Siemens PC-D series had an external MMU for the Unix variants (PC-X).
https://en.wikipedia.org/wiki/Siemens_PC-D
Thanks for info Joshua! That is Interesting.
The 8086 never had an MMU, that came with the 386.
The 80286 had an MMU, though it lacked the paging unit of the 80386.
I love that this disgusts me. You people inspire me to be weird.
They need to remove the elements of CSS that makes it Turing complete. At no point should it have ever reached that level of capability.
I believe it’s called ‘Creeping Featurism’. Unless you’re a really cool l33t programmer, then you get to call it ‘Feeping Creaturism’.
In any other form of engineering it’s considered bad practice.
An interesting concept, but the 8086 is not for me.
My preference would be 6502 / 6809 / 6811 CPUs. And possibly the NXP S12 series.
But will it run doom ?