DOOM runs (slowly) in a IBM PC-Compatible CSS Sheet

Just when you thought weβd run out of things to port DOOM to, here comes [Ahmed Amer] with his CSS-DOS, a massive 300 MB CSS style sheet, that runs not just DOS, but Windows 1.0 and, of course, DOOM. The CSS sheet isnβt holding a DOOM port this time, though β itβs holding a full IBM PC compatible, with a simulated 8086, 640 kB of RAM, floppy and VGA controllers. Yes, in one style sheet. We did mention it was 300 MB, right?
CSS is not a very good programming language. Itβs got functions and if statements nowadays, but it doesnβt really do programs in the usual sense. That is, lists of instructions that feed one into another. You canβt change a variable without jumping through hoops. The sort of static behavior you get from a CSS sheet actually matches hardware architecture better than software, which was the key insight [Ahmed] had to make the project possible. Itβs still not easy, or elegant, or perhaps even sane, as you can find out from the excellent write-up he has describing how he pulled this off. We particularly like the interactive guide to the full mountain of madness that is the .css file.
Now, we admit that βruns DOOMβ may be an exaggeration β even if the maddeningly massive CSS sheet ran an IBM-AT full speed, that hardware canβt handle the game at any playable speed. It doesnβt emulate at anything close to full speed, though. Because this is such a gratuitously weird hack, it only runs at two instructions per second. No, not FPS, instructions, as in at the CPU level. Well, it could be worse, at least itβs not clock ticks. Still, if youβre time-dilated enough you can wait the 3 weeks to boot DOS, and the 3 months to load a level, you can play DOOM at 0.0001 FPS.
Look, we didnβt make the rules β they say everything has to try and run DOOM. They donβt say everything has to run it well.