| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .. | ||
| README.md | ||
| layout | title | permalink | redirect_from | ||
|---|---|---|---|---|---|
| page | About PCjs | /docs/about/pcjs/ |
|
About PCjs
PCjs is a IBM PC/XT/AT simulator written entirely in JavaScript. It's designed to load and run extremely fast, it works well in all modern web browsers (both desktop and mobile), and it's easy to customize. It is part of the PCjs Project, an open source project on GitHub.
Check out the Demos on the home page, and all the other PCjs Application, Disk, and Machine demos, including an IBM PC XT "Server Array" featuring multiple PCs running side-by-side.
Features
- Build your own IBM PC, PC XT, and PC AT 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), what kind of video adapter (MDA, CGA or EGA), serial ports, mouse, and more. See the 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 to the CPU component, display clickable "DIP Switches" for the Chipset component, or even design your own Control Panel.
- A fully-integrated Debugger is available. Disassemble code, set breakpoints on memory write/read/execution addresses, dump and edit memory, dump disk sectors, enable/disable categories of diagnostic messages, and view instruction history, cycle counts and more. The Debugger does not rely on CPU breakpoint instructions or the trace flag, and does not alter the machine state in any way, allowing you to debug anything, including 8086 debuggers.
- 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, simply press the "Download" 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 IE (v9.0 and higher), Safari, Firefox, Chrome and Opera, and no JavaScript extensions (typed arrays) or third-party libraries are required. Safari is recommended for iOS users, Chrome or Firefox for other platforms.
Future
The following features are targeted for version 1.16.x:
- Improved EGA compatibility
- 80286 protected-mode support
- Improvements to PC AT hardware emulation
History
- v1.15 introduced PC AT (Model 5170) emulation, as discussed in the blog.
- v1.14 introduced limited EGA emulation, as discussed in the blog.
- v1.13 introduced manifest files that describe software packages that can be used with PCjs. More information on software manifests is available here.
- v1.12.1 coincided with the first release of the new PCjs web server running on Node.js. The new server includes ROM and disk image conversion APIs, as well as a Markdown module that supports link extensions for embedding C1Pjs and PCjs machine files in Markdown documents and automatically converts "README.md" files into "index.html" web pages.
- v1.11 improved the embedPC() and embedC1P() functions, so now you can embed XML machine configuration files that reference other configuration files, such as an external Keyboard or Control Panel XML layout. It does this by building the entire XML configuration internally, rather than relying on XSLT's document() function, which doesn't seem to work in all JavaScript XSLT processors.
- 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.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.06c added support for user-defined diskette images. Select "Remote Disk" from the diskette list, click "Download", and enter a URL at the prompt. See Creating PCjs-Compatible Disk Images in the PCjs Documentation for more information about supported disk images.
- 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.