The Null Device


Today in Extreme JavaScript: An original IBM PC, simulated in the browser. It has a CGA adapter and two simulated floppy drives, into which one can load a number of pre-supplied images, including several versions of MS-DOS PC-DOS, as well as VisiCalc and Microsoft Adventure. Not only that, but, if left to its own devices, it will run an order of magnitude faster than an original IBM-PC.

Anyway, the simulation is fully functional on all modern browsers (that I've tested). It's booting the original IBM PC Model 5150 ROM BIOS (no modifications), and it's loading the original MDA/CGA fonts. This configuration gives you more control, allowing you to toggle any of the SW1/SW2 settings to change the memory configuration, the installed video card (MDA or CGA), and the number of diskette drives. There's also a built-in debugger with lots of DEBUG-like commands, only better. And you can create your own configuration by tweaking the underlying XML file. I'll eventually do a write-up explaining how to embed it on your own web page and what options are available. The process is very similar to embedding the C1Pjs simulation that I wrote earlier this year--the XML is just a little different.
The author, a chap named @jeffpar, is now looking to add more features to his emulator, bumping up the display to EGA graphics, upgrading the CPU to a 286 and adding a serial mouse.

This is not the first PC emulator to be written in JavaScript; some two years ago, a chap named Fabrice Bellard wrote a JavaScript-based PC emulator capable of booting Linux on a JavaScript-emulated Pentium box. Bellard's emulator, though more powerful than a 1981 IBM PC, was purely text-based.

Also on doing cool things with JavaScript: Stuart Memo (who was in the 1990s Glaswegian punk/electropop band Bis) is now writing music tools in JavaScript, using the Web Audio API. He has a few demos here, and recently gave a talk at JSConf in Berlin titled JavaScript is the new Punk Rock, where he envisioned an open browser-based music-making platform.

awesome bis ibm javascript ms-dos music pc retrocomputing 0