For a while now I have been wanting to get my JavaScript CP/M emulator working.
Z80 CPU emulation was working great, and parts of CP/M were working. You could run Microsoft BASIC and load and execute Star Trek, for example.
But even with a ton of debugging, BDOS references, and the slop-making-plagiarism-machine, it just would crash on doing anything more advanced than that, such as compiling C programs using Hi-Tech C.
Hair-pulling no longer, it works! You can even play Rogue.

I did have to "cheat", of course.
Once I knew I could have DOSBox running in a web browser, it was just a case of finding a working and capable CP/M that ran on DOS.
You should remember at this point that DOS and CP/M have a "history", but also most of the people who wanted to run CP/M on an x86 machine had DRDOS and CP/M86 right there.
Fortunately, there is an amazing and compact CP/M80 emulator called MyZ80 and not only does it do what I need to bundle the compilers etc that I want, it allows import and export of files to the host OS, which should allow me to pass in and out files from my online IDE. Maybe.
So that is the next job, but for now I am happy to get this far. For now I will leave my published CP/M emulator running the old code, I do like how you can select your own disks, but I think getting the ability to run more software is a fair exchange.