IBM PC Application Demos --- Below are selected demos of classic IBM PC applications running on [PCjs](/docs/about/pcjs/). * [VisiCalc (1981)](1981/visicalc/) * [Executive Suite (1982)](1982/esuite/) * [Rogue (1985)](1985/rogue/) * [ThinkTank (1987)](1987/thinktank/) * The Dungeons of Moria (1988, [1992](1992/moria/)) Additional software is available in the [IBM PC Disk Archive](/disks/pc/). Learn more about [Application Demos](https://github.com/jeffpar/pcjs/tree/master/apps/pc) in the [PCjs Project](https://github.com/jeffpar/pcjs) on [GitHub](https://github.com/). ### Developer Notes: How To Produce A Demo We'll use the [VisiCalc Demo](1981/visicalc/) as an example. First you must choose a machine configuration. For VisiCalc, we chose a Model 5150 machine with a Monochrome Display, and then inserted a link to that machine in the demo's [Manifest](1981/visicalc/manifest.xml): Next, the [Manifest](1981/visicalc/manifest.xml) required a disk image containing the VisiCalc program (VC.COM). We used the [DiskDump](/modules/diskdump/) module to create that disk image: cd apps/pc/1981/visicalc node ../../../../modules/diskdump/bin/diskdump --path="private/VC.COM;../README.md" --format=json --output=disk.json --manifest The DiskDump command created a disk image named "disk.json" containing two files ("VC.COM" from the "private" subdirectory, and "README.md" from the "private" parent directory) and automatically added that disk image to the demo's [Manifest](1981/visicalc/manifest.xml): VC.COM README.md Now that the manifest contains a disk image, we were able to add the manifest to our set of [Sample Disks](/disks/pc/samples.xml): Next, we started a version of our chosen machine that's also configured to use the Debugger, by loading the following machine.xml into a web browser (it's assumed the Node web server is already running on port 8088): http://localhost:8088/devices/pc/machine/5150/mda/64kb/debugger/machine.xml Then we booted DOS, loaded the VisiCalc disk, ran VisiCalc, pressed the Debugger's "Halt" button, pressed "Clear" to clear the Debugger's output window, and typed the following Debugger command: d state We copied-and-pasted the entire contents of the Debugger's output window into a file named "state.json", and then updated the <machine> entry in the [Manifest](1981/visicalc/manifest.xml): It's important to use a state file *only* with the machine configuration it was created with; in this case, we're OK, because the only difference between the two chosen Model 5150 machines is the addition of the Debugger.