Consolidated /docs into /pubs

This commit is contained in:
Jeff Parsons 2017-09-12 11:28:18 -07:00 committed by Jeff Parsons
commit 71d117fa02
106 changed files with 350 additions and 317 deletions

90
pubs/about/README.md Normal file
View file

@ -0,0 +1,90 @@
---
layout: page
title: About PCjs
menu_title: About
menu_order: 9
permalink: /pubs/about/
---
## About PCjs
The [PCjs Project](https://github.com/jeffpar/pcjs) is a collection of computer simulations written in
[JavaScript](/modules/). It is an open-source project maintained and hosted on [GitHub](https://github.com/) as
[{{ site.pcjs.domain }}]({{ site.url }}/) (formerly [jsmachines.net](http://jsmachines.net/)).
The goals of the project are to create fast, full-featured simulations of classic computer hardware,
help people understand how these early machines worked, make it easy to experiment with different machine
configurations, and provide a platform for running and analyzing old computer software.
The simulations are written entirely in JavaScript and run well in a variety of web browsers, on both
desktop and mobile devices. Machines are created with simple XML files that define a set of machine components,
along with the features that each component should enable. More details about machine definitions and component
capabilities can be found in the [Documentation](/pubs/).
### Simulating the Challenger 1P
The first PCjs simulation was [C1Pjs](/pubs/c1pjs/), which emulates the
Challenger 1P, a 6502-based microcomputer introduced by Ohio Scientific in 1978.
C1Pjs v1.0 was released in July 2012. More information about the first release of C1Pjs was
[posted](http://osiweb.org/osiforum/viewtopic.php?f=3&t=103) on the
[OSI Discussion Forum](http://osiweb.org/osiforum/index.php) at [osiweb.org](http://osiweb.org/).
### Simulating the IBM PC
The next PCjs simulation was [PCx86](/pubs/about/pcx86/), which emulates the original IBM PC, IBM PC XT,
and IBM PC AT. PCx86 v1.0 was released in late 2012. Browse the source code [here](/modules/pcx86/) or on
[GitHub](https://github.com/jeffpar/pcjs).
[PCx86](/pubs/about/pcx86/) emulates the Intel 8088, 80186, 80286 and 80386 CPUs, as well as IBM Monochrome Display
Adapter (MDA), Color Graphics Adapter (CGA), Enhanced Graphics Adapter (EGA), and Video Graphics Array (VGA) video
cards, along with assorted motherboard and expansion bus components. It also includes an optional
[Debugger](/pubs/pcx86/debugger/) and a user-configurable [Control Panel](/pubs/pcx86/panel/).
Read [About PCx86](/pubs/about/pcx86/) to learn more about its history, features, and upcoming improvements.
### Migrating to Node
The PCjs web server was originally written in PHP and hosted by [DreamHost](https://www.dreamhost.com/) as
[jsmachines.net](http://jsmachines.net/), but in 2014, it was migrated to a [Node.js](http://nodejs.org) web server
and hosted by [Amazon Web Services](https://aws.amazon.com/elasticbeanstalk/) as [pcjs.org](http://www.pcjs.org/).
The goals included:
- Using JavaScript exclusively, for both client and server development
- Leveraging the Node.js web server to provide more sophisticated I/O capabilities
- Improving overall website design, including structure, appearance and responsiveness
The PCjs Node web server includes a number of custom Node modules that provide many of the same server-side features
found on [jsmachines.net](http://jsmachines.net/), including new ROM and disk image conversion APIs, and a
Markdown module that supports a subset of the [Markdown syntax](http://daringfireball.net/projects/markdown/syntax),
including extensions to the link syntax that make it easy to embed PCjs machines in Markdown documents.
### Migrating to GitHub Pages
To simplify hosting requirements, the PCjs Project was migrated to [GitHub Pages](https://pages.github.com/) in late 2015.
The project still includes the original Node-based web server, which is useful for development and debugging, but for
production sites (including [pcjs.org](http://www.pcjs.org/)), using Jekyll to generate a static copy of the project for
the web is the preferred solution.
---
License
---
The [PCjs Project](https://github.com/jeffpar/pcjs) is now an open-source project on [GitHub](http://github.com/).
All published portions are free for redistribution and/or modification under the terms of the
[GNU General Public License](/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 following copyright notice, with a link to [{{ site.pcjs.domain }}]({{ site.url }}/):
> [PCjs]({{ site.url }}/) © 2012-2017 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
in every source code file of every copy or modified version of this work, and to display that notice on every web page
or computer that runs any version of this software.
See [LICENSE](/LICENSE) for details.
More Information
---
If you have questions or run into any problems, feel free to [tweet](http://twitter.com/jeffpar) or
[email](mailto:Jeff@pcjs.org).

131
pubs/about/pcx86/README.md Normal file
View file

@ -0,0 +1,131 @@
---
layout: page
title: About PCx86
permalink: /pubs/about/pcx86/
redirect_from:
- /pc/
- /pcjs/
---
About PCx86
---
PCx86 is a IBM PC/XT/AT simulator written entirely in [JavaScript](/modules/pcx86/). It's designed to load and run
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](https://github.com/jeffpar/pcjs), an open-source project on [GitHub](http://github.com/).
Check out the [Demos](/#demos) on the home page, and all the other PCx86 [Application](/apps/pcx86/), [Disk](/disks/pcx86/),
and [Machine](/devices/pcx86/machine/) demos, including an [IBM PC Dual Display System](/devices/pcx86/machine/5150/dual/64kb/)
demo of multiple monitor support, and [IBM PC XT "Server Array"](/devices/pcx86/machine/5160/cga/256kb/array/) and
[Windows 1.01 "Server Array"](/devices/pcx86/machine/5160/ega/640kb/array/) demos of multiple machines 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, EGA or VGA), serial ports, mouse, and more. See the
[Documentation](/pubs/pcx86/) for details.
+ Excellent IBM hardware compatibility ensures all the original IBM BIOS ROMs operate properly, and that the
machines run at their original speed. Even obsolete hardware, such as the original PC XT hard drive controller,
is supported.
+ The CPU component is easily configured to emulate an 8088, 80186, 80286, or 80386. A target speed can also
be specified, and in some cases, even specific CPU *steppings* (including specific errata) can be enabled.
+ Similarly, the FPU (floating-point) component can be configured to emulate an 8087, 80287, or 80387; however,
only 8087 support is complete at this point.
+ 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](/pubs/pcx86/video/)
component, add **Halt** or **Speed** buttons to the [CPU](/pubs/pcx86/cpu/) component, display clickable "DIP Switches"
for the [Chipset](/pubs/pcx86/chipset/) component, or even design your own [Control Panel](/pubs/pcx86/panel/).
+ The UI includes a responsive design that tailors itself to your browser and device, and support for touch events
and soft keyboards means you get the best possible emulation experience -- better than any other browser-based
emulator currently available. It almost feels like your DOS and Windows mouse-based applications have been rewritten
to work with your iPad or iPhone -- almost. Please note, however, that some mobile devices provide better support than
others.
+ A fully-integrated [Debugger](/pubs/pcx86/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](/pubs/pcx86/computer/) *resume* property 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](/pubs/pcx86/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), Edge, 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
PCx86 has been been steadily evolving for almost 4 years now, in much the same way that the PC architecture evolved,
first with the 8088-based IBM PC in 1981, then with the 80286-based IBM PC AT in 1984, and finally the 80386 and the
first 32-bit PC architecture introduced by COMPAQ in late 1986.
PCx86 will remain focused on 1980's era hardware and software, so there are currently no plans to move beyond the
80386. Some of the PCx86 demos do include software from the 1990's (eg, DOS 5.0, Windows 3.x, and Windows 95), but the
project's priority is older software, especially software that is difficult and sometimes impossible to run on newer
hardware.
Some of the features planned for future releases include:
+ Improved FPU compatibility, with accurate cycle counts
+ Improved Video compatibility (eg, custom EGA and VGA fonts)
### History
A more [complete list of releases](https://github.com/jeffpar/pcjs/releases) is on GitHub, but here are some highlights:
+ v1.20 added 8087 coprocessor (FPU) support, [OS/2 improvements](http://www.pcjs.org/blog/2016/02/08/),
and new Disk/Machine [Save Options](http://www.pcjs.org/blog/2016/02/17/).
+ v1.19 improved 80386 compatibility and added support for [Windows 95](http://www.pcjs.org/blog/2015/09/21/).
+ v1.18 added basic 80386 CPU functionality and [COMPAQ DeskPro 386](http://www.pcjs.org/blog/2015/04/16/) emulation.
+ v1.16 added support for [OS/2 1.0](http://www.pcjs.org/blog/2014/12/04/), the Microsoft/IBM multitasking operating
system introduced in December 1987 for 80286-based machines.
+ v1.15 introduced [IBM PC AT](http://www.pcjs.org/blog/2014/09/13/) (Model 5170) emulation.
+ v1.14 added basic [EGA Support](http://www.pcjs.org/blog/2014/07/30/) and the ability to run Windows 1.01
in color.
+ v1.13 introduced manifest files that describe software packages that can be used with PCx86.
More information on software manifests is available [here](/apps/).
+ v1.12.1 coincided with the first release of the new PCjs web server running on [Node.js](http://nodejs.org).
The new server includes ROM and disk image conversion APIs, as well as a
[Markdown](http://daringfireball.net/projects/markdown/syntax) module that supports link extensions
for embedding C1Pjs and PCx86 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](/pubs/pcx86/keyboard/) or
[Control Panel](/pubs/pcx86/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](/devices/pcx86/machine/) 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 PCx86-Compatible Disk Images** in the
[PCx86 Documentation](/pubs/pcx86/) 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*.