This website allows you to experiment with the jsmachines project, a private GitHub project
- PCjs: simulation of the 8088-based IBM PC, introduced in 1981
- C1Pjs: simulation of the 6502-based OSI Challenger 1P, introduced in 1978
The IBM PC simulation above is running PC-DOS 2.00.
The machine has a clock speed of 4.77Mhz, with 64Kb of RAM and a monochrome display, and it uses the original
IBM PC Model 5150 ROM BIOS and MDA font ROM. For greater control, there's a configuration
with Control Panel and Debugger.
NEW DEMONSTRATION: The IBM PC XT "Server Array" demonstrates
multiple IBM PCs running on a single web page.
Browse all our IBM PC Machine Configurations. A few examples are highlighted below,
including Windows 1.01 running on an IBM PC XT.
IBM PC running DONKEY.BAS
IBM PC XT w/CGA, 10Mb Hard Drive
IBM PC XT w/CGA, Windows 1.01
IBM PC w/MDA, CP/M-86
IBM PC w/MDA, Microsoft Adventure
IBM PC w/CGA, Zork I
IMPORTANT: With the release of PCjs v1.11, the website has been reorganized a bit, so if you've been
here recently, it might be a good idea to flush your browser's cache. If things still aren't working quite
right, please send feedback and describe the problem. Thanks!
PCjs Major Features
- Build your own IBM PC and IBM PC XT simulations using simple XML machine configuration files.
You decide how much RAM you want, how many disk drives, which disk images to include (and which should be
pre-loaded into the drives), what kind of video adapter (Monochrome or CGA), serial ports, mouse, etc.
See the PCjs Documentation for details.
- The modular design allows you to specify which components to enable, and which external controls
to display for each component. You can choose the size of the display window created by the Video
component, add Halt or Speed buttons from the CPU component, display clickable "DIP Switches"
from the Chipset component, or even design your own Control Panel.
- A fully-integrated Debugger is also available. Disassemble code, set breakpoints on
memory writes/reads/execs, dump and edit memory, dump disk sectors, enable/disable categories of messages,
and view instruction history, cycle counts and more. The Debugger does not use breakpoint instructions or alter
the machine state in any way.
- Machines created with the Computer "resume" attribute set will save their entire machine
state using your browser's local storage, so that any changes are preserved when your browser closes, including
disk modifications. Any files you create or modify inside the machine will still be there when you return.
TIP: To restore a diskette's original contents, press the "Load Drive" button again.
- Machine states can also be dumped (using the built-in Debugger), saved as JSON files, and
pre-loaded into a machine, bypassing the normal boot process. You can even combine a pre-defined state with the
"resume" feature, preserving any changes you make to the machine's original state.
- Most modern web browsers are supported, including IE9 through IE11, Safari, Firefox, Chrome and Opera, and no
users, Chrome or Firefox for others.
PCjs Recent Updates
- v1.05b added support for webkitAudioContext, bringing your simulated IBM PC's speaker to life. Relive the thrill
of running MUSIC.BAS and listening to those classic tunes. Sound support is still experimental.
- v1.06c added support for user-defined diskette images. Select "User-defined URL..." from the diskette list and click
"Load Drive". See Creating PCjs-Compatible Disk Images in the PCjs Documentation for more information
about supported disk images.
- v1.08 added soft-keyboard support, which isn't quite finished (sticky-shift and auto-repeat will be added in a future
version), but it's good enough for use on iPads. Browse IBM PC Machine Configurations for
machines that include a soft-keyboard.
- v1.10 fixed embedding in Internet Explorer 11 (Microsoft removed "MSIE" from their default user-agent string).
The ability to embed multiple PCs on a single web page is now supported as well.
- v1.11 improved the embedPC() and embedC1P() functions, so now you can embed XML machine configuration files
that reference other configuration files, like an external Keyboard layout or a
Control Panel layout. It does this by building the entire XML configuration internally,
C1Pjs: Simulation of the Challenger 1P
The OSI Challenger C1P, another machine simulation from our project, is shown below.
It simulates Ohio Scientific's 6502-based microcomputer, released in 1978. More details about this simulation
and the original machine are available in the C1Pjs Documentation.
This software and all the jsmachines source code on GitHub (public release date TBD) is free:
you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your option) any later version.
You are required to include the appropriate copyright notice (e.g.,
PCjs v.1.11 © 2012-2013 by @jeffpar)
in every source code file of every copy or modified version of this work, and to display that copyright notice
on every screen that loads or runs any version of this software.
See COPYING for details.