Starting work on disambiguating PCjs the emulator from PCjs the project/website; the emulator will become PCx86
This commit is contained in:
parent
7c3aab2a7e
commit
288f28055d
1519 changed files with 16242 additions and 6939 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -20,5 +20,7 @@ c64/
|
|||
ecp/
|
||||
projects/
|
||||
private/
|
||||
restricted/
|
||||
src/
|
||||
tmp/
|
||||
unlisted/
|
||||
|
|
|
|||
86
Gruntfile.js
86
Gruntfile.js
|
|
@ -108,7 +108,7 @@ module.exports = function(grunt) {
|
|||
* "<%= pkg.name %>"
|
||||
*
|
||||
* which would be fine for most of my needs, but some of the information I need
|
||||
* from the package.json is not in string form (eg, pcJSFiles, which is an array of
|
||||
* from the package.json is not in string form (eg, pcX86Files, which is an array of
|
||||
* file names). So I create a "pkg" variable first, which allows me to do both.
|
||||
*/
|
||||
|
||||
|
|
@ -117,14 +117,14 @@ module.exports = function(grunt) {
|
|||
* @property {string} name
|
||||
* @property {string} version
|
||||
* @property {Array.<string>} c1pJSFiles
|
||||
* @property {Array.<string>} pcJSFiles
|
||||
* @property {Array.<string>} pcX86Files
|
||||
* @property {Array.<string>} pc8080Files
|
||||
* @property {Array.<string>} closureCompilerExterns
|
||||
*/
|
||||
var pkg = grunt.file.readJSON("package.json");
|
||||
|
||||
var tmpC1Pjs = "./tmp/c1pjs/" + pkg.version + "/c1p.js";
|
||||
var tmpPCjs = "./tmp/pcjs/" + pkg.version + "/pc.js";
|
||||
var tmpPCx86 = "./tmp/pcx86/" + pkg.version + "/pcx86.js";
|
||||
var tmpPC8080 = "./tmp/pc8080/" + pkg.version + "/pc8080.js";
|
||||
|
||||
grunt.initConfig({
|
||||
|
|
@ -153,18 +153,18 @@ module.exports = function(grunt) {
|
|||
src: pkg.c1pJSFiles,
|
||||
dest: "./versions/c1pjs/" + pkg.version + "/c1p-dbg.js"
|
||||
},
|
||||
"pc.js": {
|
||||
src: pkg.pcJSFiles,
|
||||
dest: "./versions/pcjs/" + pkg.version + "/pc.js",
|
||||
"pcx86.js": {
|
||||
src: pkg.pcX86Files,
|
||||
dest: "./versions/pcx86/" + pkg.version + "/pcx86.js",
|
||||
options: {
|
||||
process: function(src, filepath) {
|
||||
return (path.basename(filepath) == "debugger.js"? "" : src);
|
||||
}
|
||||
}
|
||||
},
|
||||
"pc-dbg.js": {
|
||||
src: pkg.pcJSFiles,
|
||||
dest: "./versions/pcjs/" + pkg.version + "/pc-dbg.js"
|
||||
"pcx86-dbg.js": {
|
||||
src: pkg.pcX86Files,
|
||||
dest: "./versions/pcx86/" + pkg.version + "/pcx86-dbg.js"
|
||||
},
|
||||
"pc8080.js": {
|
||||
src: pkg.pc8080Files,
|
||||
|
|
@ -190,9 +190,9 @@ module.exports = function(grunt) {
|
|||
}
|
||||
}
|
||||
},
|
||||
"tmp-pcjs": {
|
||||
src: pkg.pcJSFiles,
|
||||
dest: tmpPCjs,
|
||||
"tmp-pcx86": {
|
||||
src: pkg.pcX86Files,
|
||||
dest: tmpPCx86,
|
||||
options: {
|
||||
banner: '"use strict";\n\n',
|
||||
process: function(src, filepath) {
|
||||
|
|
@ -225,9 +225,9 @@ module.exports = function(grunt) {
|
|||
src: pkg.c1pJSFiles,
|
||||
dest: tmpC1Pjs
|
||||
},
|
||||
"pc.js": {
|
||||
src: pkg.pcJSFiles,
|
||||
dest: tmpPCjs
|
||||
"pcx86.js": {
|
||||
src: pkg.pcX86Files,
|
||||
dest: tmpPCx86
|
||||
},
|
||||
"pc8080.js": {
|
||||
src: pkg.pc8080Files,
|
||||
|
|
@ -290,7 +290,7 @@ module.exports = function(grunt) {
|
|||
*/
|
||||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/c1pjs/" + pkg.version + "/c1p.map",
|
||||
define: ["\"APPNAME='C1Pjs'\"", "\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false",
|
||||
define: ["\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
|
|
@ -302,7 +302,7 @@ module.exports = function(grunt) {
|
|||
"c1p-dbg.js": {
|
||||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/c1pjs/" + pkg.version + "/c1p-dbg.map",
|
||||
define: ["\"APPNAME='C1Pjs'\"", "\"APPVERSION='" + pkg.version + "'\"",
|
||||
define: ["\"APPVERSION='" + pkg.version + "'\"",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p-dbg.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
|
|
@ -311,37 +311,37 @@ module.exports = function(grunt) {
|
|||
src: tmpC1Pjs,
|
||||
dest: "./versions/c1pjs/" + pkg.version + "/c1p-dbg.js"
|
||||
},
|
||||
"pc.js": {
|
||||
"pcx86.js": {
|
||||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/pcjs/" + pkg.version + "/pc.map",
|
||||
define: ["\"APPNAME='PCjs'\"", "\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false",
|
||||
// create_source_map: "./tmp/pcx86/" + pkg.version + "/pcx86.map",
|
||||
define: ["\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=true"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pcjs/" + pkg.version + "/pc.map\""
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pcx86/" + pkg.version + "/pcx86.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
},
|
||||
// src: pkg.pcJSFiles,
|
||||
src: tmpPCjs,
|
||||
dest: "./versions/pcjs/" + pkg.version + "/pc.js"
|
||||
// src: pkg.pcX86Files,
|
||||
src: tmpPCx86,
|
||||
dest: "./versions/pcx86/" + pkg.version + "/pcx86.js"
|
||||
},
|
||||
"pc-dbg.js": {
|
||||
"pcx86-dbg.js": {
|
||||
/*
|
||||
* Technically, this is the one case we don't need to override the default 'define' settings, but maybe it's best to be explicit.
|
||||
*/
|
||||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/pcjs/" + pkg.version + "/pc-dbg.map",
|
||||
define: ["\"APPNAME='PCjs'\"", "\"APPVERSION='" + pkg.version + "'\"",
|
||||
// create_source_map: "./tmp/pcx86/" + pkg.version + "/pcx86-dbg.map",
|
||||
define: ["\"APPVERSION='" + pkg.version + "'\"",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=true"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pcjs/" + pkg.version + "/pc-dbg.map\""
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pcx86/" + pkg.version + "/pcx86-dbg.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
},
|
||||
// src: pkg.pcJSFiles,
|
||||
src: tmpPCjs,
|
||||
dest: "./versions/pcjs/" + pkg.version + "/pc-dbg.js"
|
||||
// src: pkg.pcX86Files,
|
||||
src: tmpPCx86,
|
||||
dest: "./versions/pcx86/" + pkg.version + "/pcx86-dbg.js"
|
||||
},
|
||||
"pc8080.js": {
|
||||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/pc8080/" + pkg.version + "/pc8080.map",
|
||||
define: ["\"APPNAME='PC8080'\"", "\"APPVERSION='" + pkg.version + "'\"",
|
||||
define: ["\"APPVERSION='" + pkg.version + "'\"",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=false"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pc8080/" + pkg.version + "/pc8080.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
|
|
@ -356,7 +356,7 @@ module.exports = function(grunt) {
|
|||
*/
|
||||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/pc8080/" + pkg.version + "/pc8080-dbg.map",
|
||||
define: ["\"APPNAME='PC8080'\"", "\"APPVERSION='" + pkg.version + "'\"",
|
||||
define: ["\"APPVERSION='" + pkg.version + "'\"",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "DEBUGGER=true"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pc8080/" + pkg.version + "/pc8080-dbg.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
|
|
@ -402,19 +402,19 @@ module.exports = function(grunt) {
|
|||
}
|
||||
}
|
||||
},
|
||||
"pcjs": {
|
||||
"pcx86": {
|
||||
files: [
|
||||
{
|
||||
cwd: "modules/shared/templates/",
|
||||
src: ["common.css", "common.xsl", "components.*", "document.css", "document.xsl", "machine.xsl", "manifest.xsl", "outline.xsl"],
|
||||
dest: "versions/pcjs/<%= pkg.version %>/",
|
||||
dest: "versions/pcx86/<%= pkg.version %>/",
|
||||
expand: true
|
||||
}
|
||||
],
|
||||
options: {
|
||||
process: function(content, srcPath) {
|
||||
var s = content.replace(/(<xsl:variable name="APPVERSION">)[^<]*(<\/xsl:variable>)/g, "$1" + pkg.version + "$2");
|
||||
s = s.replace(/"[^"]*\/?(common.css|common.xsl|components.css|components.xsl|document.css|document.xsl)"/g, '"/versions/pcjs/' + pkg.version + '/$1"');
|
||||
s = s.replace(/"[^"]*\/?(common.css|common.xsl|components.css|components.xsl|document.css|document.xsl)"/g, '"/versions/pcx86/' + pkg.version + '/$1"');
|
||||
s = s.replace(/[ \t]*\/\*[^\*][\s\S]*?\*\//g, "").replace(/[ \t]*<!--[^@]*?-->[ \t]*\n?/g, "");
|
||||
return s;
|
||||
}
|
||||
|
|
@ -443,9 +443,9 @@ module.exports = function(grunt) {
|
|||
"examples": {
|
||||
files: [
|
||||
{
|
||||
cwd: "versions/pcjs/<%= pkg.version %>/",
|
||||
src: ["pc.js", "pc-dbg.js", "components.css", "components.xsl"],
|
||||
dest: "docs/pcjs/examples/",
|
||||
cwd: "versions/pcx86/<%= pkg.version %>/",
|
||||
src: ["pcx86.js", "pcx86-dbg.js", "components.css", "components.xsl"],
|
||||
dest: "docs/pcx86/examples/",
|
||||
expand: true
|
||||
}
|
||||
],
|
||||
|
|
@ -520,14 +520,14 @@ module.exports = function(grunt) {
|
|||
args: []
|
||||
},
|
||||
"zip-examples": {
|
||||
options: {cwd: "docs/pcjs/examples"},
|
||||
options: {cwd: "docs/pcx86/examples"},
|
||||
cmd: "./zip.sh",
|
||||
args: ["v" + pkg.version + ".zip"]
|
||||
}
|
||||
},
|
||||
replace: {
|
||||
"fix-source-maps": {
|
||||
src: ["./tmp/c1pjs/" + pkg.version + "/c1p*.map", "./tmp/pcjs/" + pkg.version + "/pc*.map"],
|
||||
src: ["./tmp/c1pjs/" + pkg.version + "/c1p*.map", "./tmp/pcx86/" + pkg.version + "/pc*.map"],
|
||||
overwrite: true,
|
||||
replacements: [
|
||||
{
|
||||
|
|
@ -560,13 +560,13 @@ module.exports = function(grunt) {
|
|||
|
||||
grunt.loadTasks("modules/grunts/prepjs/tasks");
|
||||
|
||||
grunt.registerTask("preCompiler", grunt.option("rebuild")? ["concat:tmp-c1pjs", "concat:tmp-pcjs", "concat:tmp-pc8080"] : ["newer:concat:tmp-c1pjs", "newer:concat:tmp-pcjs", "newer:concat:tmp-pc8080"]);
|
||||
grunt.registerTask("preCompiler", grunt.option("rebuild")? ["concat:tmp-c1pjs", "concat:tmp-pcx86", "concat:tmp-pc8080"] : ["newer:concat:tmp-c1pjs", "newer:concat:tmp-pcx86", "newer:concat:tmp-pc8080"]);
|
||||
|
||||
grunt.registerTask("compile", ["preCompiler", "closureCompiler", "replace:fix-source-maps"]);
|
||||
|
||||
grunt.registerTask('nocompile', function(target) {
|
||||
if (!target) {
|
||||
grunt.task.run(["concat:c1p.js", "concat:c1p-dbg.js", "concat:pc.js", "concat:pc-dbg.js"]);
|
||||
grunt.task.run(["concat:c1p.js", "concat:c1p-dbg.js", "concat:pcx86.js", "concat:pcx86-dbg.js"]);
|
||||
} else {
|
||||
grunt.task.run("concat:" + target);
|
||||
}
|
||||
|
|
|
|||
119
README.md
119
README.md
|
|
@ -1,31 +1,30 @@
|
|||
PCjs: The Virtual IBM PC
|
||||
PCjs: Home of the Virtual IBM PC
|
||||
===
|
||||
|
||||
Welcome to [PCjs](/docs/about/pcjs/), the first IBM PC simulation to run in your web browser without any plugins.
|
||||
It was added to the [JavaScript Machines](/docs/about/) project in Fall 2012, and it is now part of the
|
||||
[PCjs Project](https://github.com/jeffpar/pcjs) on GitHub.
|
||||
Welcome to PCjs, home of [PCx86](/docs/about/pcx86/), the first IBM PC simulation to run in your web browser without
|
||||
any plugins. It was added to the [PCjs Project](https://github.com/jeffpar/pcjs) in Fall 2012.
|
||||
|
||||
The project includes the following web-based emulators:
|
||||
PCjs includes the following web-based emulators:
|
||||
|
||||
* [PCjs](/docs/pcjs/), an x86-based IBM PC and PC-compatible emulator
|
||||
* [PCx86](/docs/pcx86/), an x86-based IBM PC and PC-compatible emulator
|
||||
* [PC8080](/modules/pc8080/), a 8080-based generic machine emulator
|
||||
* [C1Pjs](/docs/c1pjs/), a 6502-based Ohio Scientific Challenger 1P emulator
|
||||
|
||||
PCjs first simulated the 4.77Mhz 8088-based IBM PC, and has steadily evolved to support more classic x86 machines,
|
||||
including the IBM PC XT, the 80286-based IBM PC AT, and the 80386-based COMPAQ DeskPro 386. PCjs fully supports
|
||||
PCx86 first simulated the 4.77Mhz 8088-based IBM PC, and has steadily evolved to support more classic x86 machines,
|
||||
including the IBM PC XT, the 80286-based IBM PC AT, and the 80386-based COMPAQ DeskPro 386. PCx86 fully supports
|
||||
the original machine ROMs, video cards, etc, and all machines run at their original speeds.
|
||||
|
||||
All the simulations are written entirely in [JavaScript](/modules/). No Flash, Java or other plugins are required.
|
||||
Supported browsers include modern versions of Chrome, Safari, Firefox, Internet Explorer (v9.0 and up), Edge,
|
||||
and assorted mobile browsers.
|
||||
|
||||
[Embedded IBM PC](/devices/pc/machine/5150/mda/64kb/ "PCjs:ibm5150")
|
||||
[Embedded IBM PC](/devices/pcx86/machine/5150/mda/64kb/ "PCx86:ibm5150")
|
||||
|
||||
The [simulation](/devices/pc/machine/5150/mda/64kb/) above features an Intel 8088 running at 4.77Mhz,
|
||||
The [simulation](/devices/pcx86/machine/5150/mda/64kb/) above features an Intel 8088 running at 4.77Mhz,
|
||||
with 64Kb of RAM and an IBM Monochrome Display Adapter. For more control, there are also
|
||||
[Control Panel](/devices/pc/machine/5150/mda/64kb/debugger/) and [Soft Keyboard](/devices/pc/machine/5150/mda/64kb/softkbd/)
|
||||
configurations, featuring the built-in PCjs Debugger. For even greater control, build your own PC. The
|
||||
[PCjs Documentation](/docs/pcjs/) will help you get started.
|
||||
[Control Panel](/devices/pcx86/machine/5150/mda/64kb/debugger/) and [Soft Keyboard](/devices/pcx86/machine/5150/mda/64kb/softkbd/)
|
||||
configurations, featuring the built-in PCx86 Debugger. For even greater control, build your own PC. The
|
||||
[PCx86 Documentation](/docs/pcx86/) will help you get started.
|
||||
|
||||
The goals of the [JavaScript Machines](/docs/about/) 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
|
||||
|
|
@ -35,23 +34,23 @@ Demos
|
|||
---
|
||||
Some pre-configured machines are shown below, ready to run BASIC, DOS, Windows, OS/2, and other assorted software.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
There are many more [PCjs Demos](/devices/pc/machine/#ready-to-run-app-demos), including an
|
||||
[IBM PC with Dual Displays](/devices/pc/machine/5150/dual/64kb/) demonstrating early multi-monitor support,
|
||||
and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pc/machine/5160/cga/256kb/array/)
|
||||
and [EGA Displays](/devices/pc/machine/5160/ega/640kb/array/).
|
||||
There are many more [PCx86 Demos](/devices/pcx86/machine/#ready-to-run-app-demos), including an
|
||||
[IBM PC with Dual Displays](/devices/pcx86/machine/5150/dual/64kb/) demonstrating early multi-monitor support,
|
||||
and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pcx86/machine/5160/cga/256kb/array/)
|
||||
and [EGA Displays](/devices/pcx86/machine/5160/ega/640kb/array/).
|
||||
|
||||
C1Pjs
|
||||
---
|
||||
|
|
@ -69,8 +68,8 @@ Developer Notes
|
|||
---
|
||||
|
||||
The [PCjs repository](https://github.com/jeffpar/pcjs) on GitHub contains everything needed to run PCjs
|
||||
computer simulations. The [PCjs](/docs/pcjs/) and [C1Pjs](/docs/c1pjs/) emulators run in any modern web browser,
|
||||
with or without a web server, and examples are provided for both [local](/docs/pcjs/examples/) and
|
||||
computer simulations. The [PCx86](/docs/pcx86/) and [C1Pjs](/docs/c1pjs/) emulators run in any modern web browser,
|
||||
with or without a web server, and examples are provided for both [local](/docs/pcx86/examples/) and
|
||||
[remote](http://www.pcjs.org/) operation.
|
||||
|
||||
The project includes:
|
||||
|
|
@ -78,8 +77,8 @@ The project includes:
|
|||
- A simple Node-based web server ([server.js](server.js))
|
||||
- Custom Node modules used by the web server ([HTMLOut](modules/htmlout/), [MarkOut](modules/markout/), [DiskDump](modules/diskdump/), [FileDump](modules/filedump/))
|
||||
- A variety of IBM PC and C1P configuration and resource files (see [/apps](apps/), [/devices](devices/) and [/disks](disks/))
|
||||
- The [PCjs](modules/pcjs/lib/) and [C1Pjs](modules/c1pjs/lib/) client applications, both "compiled" and uncompiled
|
||||
- A smattering of [PCjs](docs/pcjs/) and [C1Pjs](docs/c1pjs/) documentation, along with [blog posts](blog/), related [publications](pubs/) and more
|
||||
- The [PCx86](modules/pcjs/lib/) and [C1Pjs](modules/c1pjs/lib/) client applications, both "compiled" and uncompiled
|
||||
- A smattering of [PCx86](docs/pcx86/) and [C1Pjs](docs/c1pjs/) documentation, along with [blog posts](blog/), related [publications](pubs/) and more
|
||||
|
||||
The bundled web server is not strictly required. Any web server (Node, Apache, Nginx, etc) that can serve the necessary
|
||||
JavaScript files to your browser will work. However, instructions for doing that are beyond the scope of this introduction.
|
||||
|
|
@ -87,7 +86,7 @@ JavaScript files to your browser will work. However, instructions for doing tha
|
|||
In fact, you can run PCjs simulations without a web server at all, using the "file:" protocol instead of "http:".
|
||||
However, most of the machine configurations require additional resource files (ROMs, disk images, etc), which are
|
||||
included in the project, but unless all the resource files are moved into a single directory (as they are in these
|
||||
[Demos](/docs/pcjs/examples/)), your browser will probably be unable to load all of them, due to security restrictions.
|
||||
[Demos](/docs/pcx86/examples/)), your browser will probably be unable to load all of them, due to security restrictions.
|
||||
Using the bundled web server is the preferred solution.
|
||||
|
||||
The project includes a large selection of disk images, and a powerful [DiskDump](modules/diskdump/) utility that
|
||||
|
|
@ -180,8 +179,8 @@ OS X users may also need to preface this command with `sudo`:
|
|||
|
||||
Now you can run `grunt` anywhere within the PCjs project to build an updated version. If no command-line arguments
|
||||
are specified, `grunt` runs the "default" task defined by [Gruntfile.js](Gruntfile.js); that task runs Google's
|
||||
[Closure Compiler](https://developers.google.com/closure/compiler/) if any of the target files (eg, pc.js or pc-dbg.js
|
||||
in the [/versions](versions/) directory) are out-of date.
|
||||
[Closure Compiler](https://developers.google.com/closure/compiler/) if any of the target files (eg, pcx86.js or
|
||||
pcx86-dbg.js in the [/versions](versions/) directory) are out-of date.
|
||||
|
||||
To ensure consistent compilation results, a copy of the Closure Compiler has been checked into the
|
||||
[/bin](bin/) folder. This version of Closure Compiler, in turn, requires Java v7 or later. Use the following
|
||||
|
|
@ -234,10 +233,10 @@ pcjs.org home page ([index.md](index.md)):
|
|||
layout: page
|
||||
permalink: /
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: ibm5150
|
||||
name: "IBM PC (Model 5150) with Monochrome Display"
|
||||
config: /devices/pc/machine/5150/mda/64kb/machine.xml
|
||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||
- type: c1p
|
||||
id: demoC1P
|
||||
config: /devices/c1p/machine/8kb/large/machine.xml
|
||||
|
|
@ -254,43 +253,43 @@ For more information on all the machine options supported in a Markdown file, se
|
|||
|
||||
### From The Command-Line
|
||||
|
||||
The PCjs client app can also be run from the command-line mode using Node, making it possible to script the application,
|
||||
The PCx86 client app can also be run from the command-line mode using Node, making it possible to script the application,
|
||||
run a series of automated tests, etc:
|
||||
|
||||
cd modules/pcjs/bin
|
||||
node pcjs
|
||||
cd modules/pcx86/bin
|
||||
node pcx86
|
||||
|
||||
The [pcjs](modules/pcjs/bin/pcjs) script in [modules/pcjs/bin](modules/pcjs/bin) loads
|
||||
all the PCjs browser scripts listed in the root [package.json](/package.json) and then starts a Node REPL
|
||||
The [pcx86](modules/pcx86/bin/pcx86) script in [modules/pcx86/bin](modules/pcx86/bin) loads
|
||||
all the PCx86 browser scripts listed in the root [package.json](/package.json) and then starts a Node REPL
|
||||
("read-eval-print loop"). The REPL handles a few special commands (eg, "load", "quit") and passes anything else
|
||||
to the PCjs Debugger component. If no Debugger component has been created yet, or if the Debugger didn't recognize
|
||||
to the PCx86 Debugger component. If no Debugger component has been created yet, or if the Debugger didn't recognize
|
||||
the command, then it's passed on to *eval()*, like a good little REPL.
|
||||
|
||||
Use the "load" command to load a JSON machine configuration file. A sample
|
||||
[ibm5150.json](modules/pcjs/bin/ibm5150.json) is provided in the *bin* directory, which is a "JSON-ified" version
|
||||
[ibm5150.json](modules/pcx86/bin/ibm5150.json) is provided in the *bin* directory, which is a "JSON-ified" version
|
||||
of the [machine.xml](devices/pc/machine/5150/mda/64kb/machine.xml) displayed on the [pcjs.org](http://www.pcjs.org/)
|
||||
home page.
|
||||
|
||||
The command-line loader creates all the JSON-defined machine components in the same order that the browser creates
|
||||
XML-defined components. You can also issue the "load" command directly from the command-line:
|
||||
|
||||
node pcjs --cmd="load ibm5150.json"
|
||||
node pcx86 --cmd="load ibm5150.json"
|
||||
|
||||
In fact, any number of "--cmd" arguments can be included on the command-line. A batch file syntax will eventually be
|
||||
added, too.
|
||||
|
||||
When PCjs runs in a browser, an XML machine configuration file is transformed into HTML with a set of DIVs for each
|
||||
component: an "object" DIV whose *data-value* attribute provides the initialization parameters for the corresponding
|
||||
component, along with a set of optional "control" DIVs that the component can bind to (eg, a "Run" button, or a visual
|
||||
representation of DIP switches, or whatever).
|
||||
When a PCjs machine runs in a browser, an XML machine configuration file is transformed into HTML with a set of DIVs
|
||||
for each component: an "object" DIV whose *data-value* attribute provides the initialization parameters for the
|
||||
corresponding component, along with a set of optional "control" DIVs that the component can bind to (eg, a "Run" button,
|
||||
or a visual representation of DIP switches, or whatever).
|
||||
|
||||
When PCjs is run from the command-line, there is no XML, HTML, or DIVs involved; this is basically a "headless" version
|
||||
of PCjs, so there is no simple way to view a machine's video display or interact with its keyboard, mouse, etc.
|
||||
You have to use Debugger commands to dump the machine's video buffer.
|
||||
When a PCjs machine is run from the command-line, there is no XML, HTML, or DIVs involved; this is basically a
|
||||
"headless" version of the machine, so there is no simple way to view its video display or interact with its keyboard,
|
||||
mouse, etc. You have to use Debugger commands to dump the machine's video buffer.
|
||||
|
||||
Since I was not inclined to add XML support to my Node environment, this has created some divergence between client
|
||||
and server operation: PCjs on the client supports *only* XML machine configuration files, whereas PCjs on the server
|
||||
supports *only* JSON machine configuration files.
|
||||
and server operation: PCjs machines on the client supports *only* XML machine configuration files, whereas PCjs machines
|
||||
on the server supports *only* JSON machine configuration files.
|
||||
|
||||
I haven't decided whether I'll add support for JSON configuration files to the client, or add some XML-to-JSON conversion
|
||||
to the server, or both.
|
||||
|
|
@ -327,7 +326,7 @@ A complete list of command-line options can be found in [server.js](server.js).
|
|||
|
||||
### Client Components
|
||||
|
||||
A special command parameter ("gort") can be appended to the URL to request uncompiled client source files, making PCjs
|
||||
A special command parameter ("gort") can be appended to the URL to request uncompiled client source files, making PCx86
|
||||
and C1Pjs much easier to debug, albeit much slower:
|
||||
|
||||
http://localhost:8088/?gort=debug
|
||||
|
|
@ -335,7 +334,7 @@ and C1Pjs much easier to debug, albeit much slower:
|
|||
The "gort=debug" command is unnecessary if the server is started with `--debug`; the server always serves uncompiled
|
||||
files when running in debug mode.
|
||||
|
||||
Conversely, if the server is in debug mode but you want to test a compiled version of PCjs, use:
|
||||
Conversely, if the server is in debug mode but you want to test a compiled version of PCx86, use:
|
||||
|
||||
http://localhost:8088/?gort=release
|
||||
|
||||
|
|
@ -373,7 +372,7 @@ To start developing features for a new version of PCjs, here are the recommended
|
|||
1. Change the version number in the root [package.json](package.json) and [_config.yml](_config.yml)
|
||||
2. Run the "grunt promote" task to bump the version in all the machine XML files
|
||||
3. Make changes
|
||||
4. Run "grunt" to build new versions of the apps (eg, "/versions/pcjs/1.x.x/pc.js")
|
||||
4. Run "grunt" to build new versions of the apps (eg, "/versions/pcx86/1.x.x/pcx86.js")
|
||||
|
||||
You might also want to check out the blog post on [PCjs Coding Conventions](http://www.pcjs.org/blog/2014/09/30/).
|
||||
|
||||
|
|
@ -419,8 +418,8 @@ See [LICENSE](/LICENSE) for details.
|
|||
|
||||
More Information
|
||||
---
|
||||
Learn more about the [JavaScript Machines](/docs/about/) Project and [PCjs](/docs/about/pcjs/). To
|
||||
create your own PCjs machines, see the [Documentation](/docs/pcjs/) for details.
|
||||
Learn more about the [PCjs Project](/docs/about/) and [PCx86](/docs/about/pcx86/). To
|
||||
create your own PCx86 machines, see the [PCx86 Documentation](/docs/pcx86/) for details.
|
||||
|
||||
If you have questions or run into any problems, feel free to [tweet](http://twitter.com/jeffpar) or
|
||||
[email](mailto:Jeff@pcjs.org).
|
||||
|
|
|
|||
48
_config.yml
48
_config.yml
|
|
@ -33,9 +33,30 @@ gems:
|
|||
|
||||
pcjs:
|
||||
domain: pcjs.org # whereas site.url is used for linking purposes, site.pcjs.domain is used for display purposes
|
||||
version: 1.22.1 # IMPORTANT: keep pcjs.version in sync with package.json:version
|
||||
compiled: true # by default, the compiled pcjs.version scripts will be used (eg, pc.js or pc-dbg.js)
|
||||
pc_scripts: # if pcjs.compiled is false, the following scripts will be included instead, in the order listed
|
||||
version: 1.23.0 # IMPORTANT: keep pcjs.version in sync with package.json:version
|
||||
compiled: true # by default, the compiled pcjs.version scripts will be used (eg, pcx86.js or pcx86-dbg.js)
|
||||
c1p_scripts: # if pcjs.compiled is false, the following scripts will be included instead, in the order listed
|
||||
- /modules/shared/lib/defines.js
|
||||
- /modules/shared/lib/nodebug.js
|
||||
- /modules/shared/lib/dumpapi.js
|
||||
- /modules/shared/lib/reportapi.js
|
||||
- /modules/shared/lib/strlib.js
|
||||
- /modules/shared/lib/usrlib.js
|
||||
- /modules/shared/lib/weblib.js
|
||||
- /modules/shared/lib/component.js
|
||||
- /modules/c1pjs/lib/defines.js
|
||||
- /modules/c1pjs/lib/panel.js
|
||||
- /modules/c1pjs/lib/cpu.js
|
||||
- /modules/c1pjs/lib/rom.js
|
||||
- /modules/c1pjs/lib/ram.js
|
||||
- /modules/c1pjs/lib/keyboard.js
|
||||
- /modules/c1pjs/lib/video.js
|
||||
- /modules/c1pjs/lib/serial.js
|
||||
- /modules/c1pjs/lib/disk.js
|
||||
- /modules/c1pjs/lib/debugger.js
|
||||
- /modules/c1pjs/lib/computer.js
|
||||
- /modules/shared/lib/embed.js
|
||||
pcx86_scripts:
|
||||
- /modules/shared/lib/defines.js
|
||||
- /modules/shared/lib/nodebug.js
|
||||
- /modules/shared/lib/diskapi.js
|
||||
|
|
@ -78,27 +99,6 @@ pcjs:
|
|||
- /modules/pcjs/lib/computer.js
|
||||
- /modules/shared/lib/embed.js
|
||||
- /modules/shared/lib/save.js
|
||||
c1p_scripts:
|
||||
- /modules/shared/lib/defines.js
|
||||
- /modules/shared/lib/nodebug.js
|
||||
- /modules/shared/lib/dumpapi.js
|
||||
- /modules/shared/lib/reportapi.js
|
||||
- /modules/shared/lib/strlib.js
|
||||
- /modules/shared/lib/usrlib.js
|
||||
- /modules/shared/lib/weblib.js
|
||||
- /modules/shared/lib/component.js
|
||||
- /modules/c1pjs/lib/defines.js
|
||||
- /modules/c1pjs/lib/panel.js
|
||||
- /modules/c1pjs/lib/cpu.js
|
||||
- /modules/c1pjs/lib/rom.js
|
||||
- /modules/c1pjs/lib/ram.js
|
||||
- /modules/c1pjs/lib/keyboard.js
|
||||
- /modules/c1pjs/lib/video.js
|
||||
- /modules/c1pjs/lib/serial.js
|
||||
- /modules/c1pjs/lib/disk.js
|
||||
- /modules/c1pjs/lib/debugger.js
|
||||
- /modules/c1pjs/lib/computer.js
|
||||
- /modules/shared/lib/embed.js
|
||||
pc8080_scripts:
|
||||
- /modules/shared/lib/defines.js
|
||||
- /modules/shared/lib/dumpapi.js
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ in the Front Matter of our Markdown documents, for compatibility with the Jekyll
|
|||
|
||||
'id' (eg, "ibm5150")
|
||||
'name' (eg, "IBM PC (Model 5150) with Monochrome Display")
|
||||
'type' (eg. "c1p", "pc", "pc8080")
|
||||
'type' (eg. "c1p", "pcx86", "pc8080")
|
||||
'debugger' (default is false)
|
||||
'config' (default is "machine.xml")
|
||||
'template' (default is "machine.xsl")
|
||||
|
|
@ -34,7 +34,7 @@ of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'a
|
|||
{% endcomment %}
|
||||
{% for machine in page.machines %}
|
||||
{% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %}
|
||||
{% if machine_type != "pc" and machine_type != "c1p" %}
|
||||
{% if machine_type != "c1p" %}
|
||||
{% capture machine_app %}{{ machine_type }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture machine_app %}{{ machine_type }}js{% endcapture %}
|
||||
|
|
@ -103,7 +103,7 @@ of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'a
|
|||
{% endif %}
|
||||
{% else %}
|
||||
{% if machine_type == "c1p" %}{% assign array_scripts = site.pcjs.c1p_scripts %}{% endif %}
|
||||
{% if machine_type == "pc" %}{% assign array_scripts = site.pcjs.pc_scripts %}{% endif %}
|
||||
{% if machine_type == "pcx86" %}{% assign array_scripts = site.pcjs.pcx86_scripts %}{% endif %}
|
||||
{% if machine_type == "pc8080" %}{% assign array_scripts = site.pcjs.pc8080_scripts %}{% endif %}
|
||||
{% for script in array_scripts %}
|
||||
{% if script != "/modules/shared/lib/nodebug.js" or machine.debug != true %}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{% for machine in page.machines %}
|
||||
{% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %}
|
||||
{% if machine_type != "pc" and machine_type != "c1p" %}
|
||||
{% if machine_type != "c1p" %}
|
||||
{% capture machine_app %}{{ machine_type }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture machine_app %}{{ machine_type }}js{% endcapture %}
|
||||
{% endif %}
|
||||
{% unless site.pcjs.compiled == true and machine.uncompiled != true %}
|
||||
{% if machine_app != "c1pjs" %}
|
||||
{% if machine_type != "c1p" %}
|
||||
{% capture machine_style %}{{ site.baseurl }}/modules/shared/templates/components.css{% endcapture %}
|
||||
{% else %}
|
||||
{% capture machine_style %}{{ site.baseurl }}/modules/{{ machine_app }}/templates/components.css{% endcapture %}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ syntax, which is more than sufficient to handle all the site's **README.md** fil
|
|||
have used a third-party Markdown library, but this was more educational, and it was easy to add extra features,
|
||||
like the ability to embed JavaScript machines with a single Markdown-style link; eg:
|
||||
|
||||
[IBM PC](/devices/pc/machine/5150/mda/64kb/ "PCjs:ibm5150")
|
||||
[IBM PC](/devices/pcx86/machine/5150/mda/64kb/ "PCjs:ibm5150")
|
||||
|
||||
The script takes care of the rest, adding the appropriate stylesheets and PCjs scripts automatically.
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ I had more grandiose plans, including a command-line prompt written in JavaScrip
|
|||
navigate the site exactly as you would an IBM PC hard drive from a "DOS prompt", and I may try something
|
||||
like that later, but don't hold your breath.
|
||||
|
||||
I've tried to improve the organization of all the [Machine Configuration Files](/devices/pc/machine/) as well.
|
||||
I've tried to improve the organization of all the [Machine Configuration Files](/devices/pcx86/machine/) as well.
|
||||
The variety of configurations was getting out of hand. It's a bit tidier now, but there's still room for
|
||||
improvement.
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ while I can understand some whitespace inconsistencies across web servers, I wou
|
|||
on the server to modify file contents.
|
||||
|
||||
I finally confirmed that the files were indeed modified on the server, by using Azure's FTP browser. For example,
|
||||
[us83-buttons-minimal.xml](/devices/pc/keyboard/us83-buttons-minimal.xml) is currently 622 bytes locally, but on the
|
||||
[us83-buttons-minimal.xml](/devices/pcx86/keyboard/us83-buttons-minimal.xml) is currently 622 bytes locally, but on the
|
||||
Azure server, the reported size is 632 bytes -- one extra CR for each of the file's 10 lines. After a little more
|
||||
digging, I [learned something new](http://git-scm.com/book/ch7-1.html#Formatting-and-Whitespace) about **Git**: it
|
||||
has a setting called `core.autocrlf` which, for me on OS X, defaults to `input` (meaning "convert CR/LF to LF on commit
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ Don't believe me? Just ask [Google](https://www.google.com/#q=node+express+safa
|
|||
stylesheets. And occasionally Safari -- and ONLY Safari -- will render those XML files as blank pages.
|
||||
|
||||
For example, here's the
|
||||
[machine.xml](/devices/pc/machine/5150/mda/64kb/machine.xml) file that's also embedded on the
|
||||
[machine.xml](/devices/pcx86/machine/5150/mda/64kb/machine.xml) file that's also embedded on the
|
||||
[{{ site.pcjs.domain }}]({{ site.url }}/) home page.
|
||||
|
||||
When Safari fetched that XML file from an Apache web server (what I used before switching to Node),
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ v1.13.7 of PCjs contains a few minor improvements, mostly in terms of rendering
|
|||
efficiently. The rest of the changes to the website involved beefing up support for both "software manifests"
|
||||
and "document manifests."
|
||||
|
||||
To that end, there's a new [/pubs/](/pubs/) directory for old documents, and [/disks/pc/](/disks/pc/) contains
|
||||
To that end, there's a new [/pubs/](/pubs/) directory for old documents, and [/disks/pcx86/](/disks/pcx86/) contains
|
||||
more disk images, with more on the way. I have a TON of old diskette images, and it has taken more time to organize
|
||||
them and create manifests than I would like.
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ permalink: /blog/2014/07/30/
|
|||
---
|
||||
|
||||
PCjs v1.14.0 now includes basic EGA support. It emulates the EGA hardware well enough to pass the IBM EGA BIOS
|
||||
diagnostics and run [Windows 1.01](/devices/pc/machine/5160/ega/640kb/win101/) in color. Check out our
|
||||
[Windows 1.01 "Server Array"](/devices/pc/machine/5160/ega/640kb/array/) demo.
|
||||
diagnostics and run [Windows 1.01](/devices/pcx86/machine/5160/ega/640kb/win101/) in color. Check out our
|
||||
[Windows 1.01 "Server Array"](/devices/pcx86/machine/5160/ega/640kb/array/) demo.
|
||||
|
||||
[<img src="/blog/images/win101-array-demo-small.jpg" alt='Windows 1.01 "Server Array" Demo'/>](/blog/images/win101-array-demo.jpg)
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ window, which the browser will then scale up or down, unless a specific overall
|
|||
|
||||
The second required XML element is a <rom> element to load the EGA ROM; eg:
|
||||
|
||||
<rom id="romEGA" addr="0xc0000" size="0x4000" file="/devices/pc/video/ibm-ega.json" notify="videoEGA"/>
|
||||
<rom id="romEGA" addr="0xc0000" size="0x4000" file="/devices/pcx86/video/ibm-ega.json" notify="videoEGA"/>
|
||||
|
||||
The *notify* attribute must match the *id* of the <video> element, so that the Video component can load
|
||||
the initial 8x14 and 8x8 fonts from the ROM. Support for dynamic loading of fonts from plane 2 of the EGA's memory
|
||||
|
|
|
|||
|
|
@ -6,20 +6,20 @@ category: 80286
|
|||
permalink: /blog/2014/08/28/
|
||||
---
|
||||
|
||||
The next milestone for PCjs is complete 80286 emulation. My hope is to have it working by the end of the year.
|
||||
The next milestone for PCx86 is complete 80286 emulation. My hope is to have it working by the end of the year.
|
||||
|
||||
PCjs version 1.15.0 is the first step on the path to full 80286 support. It includes changes to the physical
|
||||
PCx86 version 1.15.0 is the first step on the path to full 80286 support. It includes changes to the physical
|
||||
memory manager and separate real-mode and protected-mode address evaluators. The Debugger supports physical
|
||||
addresses (eg, %FE05B is the same as F000:E05B, assuming real-mode operation), along with breakpoint commands that
|
||||
stop execution on port input/output operations. And the ChipSet component now contains "infrastructure" (a
|
||||
fancy way of saying "partial support") for multiple PICs, DMA controllers, the 8042 keyboard controller (including
|
||||
A20 support), and a bit more -- but not much.
|
||||
|
||||
One of the challenges is creating a single "universal" version of PCjs that can adapt itself to different machine
|
||||
One of the challenges is creating a single "universal" version of PCx86 that can adapt itself to different machine
|
||||
types without impacting performance. There will not be a **pc8088.js** or a **pc80286.js** or whatever. There will
|
||||
only be **pc.js**.
|
||||
only be **pcx86.js**.
|
||||
|
||||
Up until now, all PCjs machine XML files assumed an 8088 CPU with a 20-bit bus and a model 5150 or 5160 motherboard.
|
||||
Up until now, all PCx86 machine XML files assumed an 8088 CPU with a 20-bit bus and a model 5150 or 5160 motherboard.
|
||||
But now, a machine XML file can specify:
|
||||
|
||||
<computer name="IBM PC AT" buswidth="24"/>
|
||||
|
|
@ -28,17 +28,17 @@ But now, a machine XML file can specify:
|
|||
...
|
||||
|
||||
Conventional emulators are usually NOT able to run original BIOS images, or simulate original PC hardware,
|
||||
or even run at the same speed as the original PC, making some software difficult or impossible to use. PCjs takes a
|
||||
different approach, by attempting to simulate an entire PC as it originally existed. Which is why a PCjs simulation
|
||||
or even run at the same speed as the original PC, making some software difficult or impossible to use. PCx86 takes a
|
||||
different approach, by attempting to simulate an entire PC as it originally existed. Which is why a PCx86 simulation
|
||||
of an IBM PC does NOT run at whatever speed your modern PC happens to run in V86-mode or whatever speed your
|
||||
browser's JavaScript engine tops out at.
|
||||
|
||||
No, a PCjs simulation of a 4.77Mhz IBM PC runs at 4.77Mhz. And a PCjs simulation of a 6Mhz IBM PC AT will run at
|
||||
No, a PCx86 simulation of a 4.77Mhz IBM PC runs at 4.77Mhz. And a PCx86 simulation of a 6Mhz IBM PC AT will run at
|
||||
6Mhz. If you want to run the simulation faster, you have that option, but that's not the default. And I'm not saying
|
||||
that PCjs is *exact* -- exactness is an exercise I'm leaving for another day and/or to other developers who are even
|
||||
more obsessive than I am. I'm just saying that original PCs represent the targets that PCjs is shooting for.
|
||||
that PCx86 is *exact* -- exactness is an exercise I'm leaving for another day and/or to other developers who are even
|
||||
more obsessive than I am. I'm just saying that original PCs represent the targets that PCx86 is shooting for.
|
||||
|
||||
PCjs 1.15.0 can now load and run the IBM 5170 ROM BIOS up to the first 80286-specific opcode, so it's off and running.
|
||||
PCx86 1.15.0 can now load and run the IBM 5170 ROM BIOS up to the first 80286-specific opcode, so it's off and running.
|
||||
Although "running" isn't quite the right metaphor, because the process of bringing a new machine simulation to
|
||||
completion is a *very* long series of baby steps.
|
||||
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ category: Releases
|
|||
permalink: /blog/2014/09/13/
|
||||
---
|
||||
|
||||
My first IBM PC AT (Model 5170) [Test Configuration](/devices/pc/machine/5170/ega/640kb/rev1/debugger/) finally
|
||||
boots to a PC-DOS prompt. The configuration uses the original [IBM Model 5170 ROM BIOS](/devices/pc/rom/5170/),
|
||||
My first IBM PC AT (Model 5170) [Test Configuration](/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/) finally
|
||||
boots to a PC-DOS prompt. The configuration uses the original [IBM Model 5170 ROM BIOS](/devices/pcx86/rom/5170/),
|
||||
dated January 10, 1984.
|
||||
|
||||
Getting through the BIOS "POST" (Power-On Self Test) diagnostics was like running an obstacle course, with various
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ category: JavaScript
|
|||
permalink: /blog/2014/10/13/
|
||||
---
|
||||
|
||||
I just added my first [8Mhz IBM PC AT](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/) machine configuration
|
||||
to the list of [IBM PC Machine Configurations](/devices/pc/machine/), and not surprisingly, the new machine
|
||||
I just added my first [8Mhz IBM PC AT](/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/) machine configuration
|
||||
to the list of [IBM PC Machine Configurations](/devices/pcx86/machine/), and not surprisingly, the new machine
|
||||
fails to boot.
|
||||
|
||||
This machine uses the 3rd [ROM BIOS](/devices/pc/rom/5170/) that IBM released for the PC AT, a revision that
|
||||
This machine uses the 3rd [ROM BIOS](/devices/pcx86/rom/5170/) that IBM released for the PC AT, a revision that
|
||||
included support for 3.5-inch 1.44Mb diskettes -- which will be nice, because I have a number of 1.44Mb diskette
|
||||
images I would like to be able to read in a PCjs machine.
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ category: Releases
|
|||
permalink: /blog/2014/10/17/
|
||||
---
|
||||
|
||||
The [8Mhz IBM PC AT](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/) machine configuration now boots in
|
||||
The [8Mhz IBM PC AT](/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/) machine configuration now boots in
|
||||
[PCjs v1.15.5](https://github.com/jeffpar/pcjs/releases/tag/v1.15.5), which includes the following fixes:
|
||||
|
||||
+ The BIOS expects memory refresh to occur roughly every 16us, which I've resolved by tying the state
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ permalink: /blog/2014/10/23/
|
|||
---
|
||||
|
||||
[PCjs v1.15.6](https://github.com/jeffpar/pcjs/releases/tag/v1.15.6) is a fairly minor update that fixes a few
|
||||
Floppy Disk Controller (FDC) issues and one CPU emulation bug that prevented [PC-DOS 7.00](/disks/pc/dos/ibm/7.00/)
|
||||
Floppy Disk Controller (FDC) issues and one CPU emulation bug that prevented [PC-DOS 7.00](/disks/pcx86/dos/ibm/7.00/)
|
||||
from working properly.
|
||||
|
||||
There are also some Debugger improvements; for example, if you turn on "fdc" and "int" messages in the
|
||||
|
|
@ -19,9 +19,9 @@ PC-DOS 7.00 still can't be setup from its specially-formatted 1.84Mb
|
|||
through "PC-DOS 7.00 (Disk 5)", so your best bet is to boot from the 1.44Mb "PC-DOS 7.00 (1.44M Boot)".
|
||||
|
||||
Note that you must also use a fairly new 80286 machine configuration, like this
|
||||
[8Mhz IBM PC AT](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/),
|
||||
[8Mhz IBM PC AT](/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/),
|
||||
in order to use 1.44Mb diskette images; previous models did not support 3.5-inch diskette drives, unless they had been
|
||||
retrofitted with a newer [BIOS](/devices/pc/rom/5170/).
|
||||
retrofitted with a newer [BIOS](/devices/pcx86/rom/5170/).
|
||||
|
||||
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||
*October 23, 2014*
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ permalink: /blog/2014/10/28/
|
|||
|
||||
[PCjs v1.15.7](https://github.com/jeffpar/pcjs/releases/tag/v1.15.7) adds support for the
|
||||
[XDF Diskette Format](http://www.os2museum.com/wp/the-xdf-diskette-format/), which was used in
|
||||
[PC-DOS 7.00](/disks/pc/dos/ibm/7.00/).
|
||||
[PC-DOS 7.00](/disks/pcx86/dos/ibm/7.00/).
|
||||
|
||||
However, this support is referred to as "fake" XDF support, because it requires using JSON disk images created
|
||||
by DiskDump *without* the experimental "--xdf" option, which is an option that attempts to encode XDF sectors as they
|
||||
|
|
|
|||
|
|
@ -7,21 +7,21 @@ permalink: /blog/2014/12/04/
|
|||
---
|
||||
|
||||
Exciting news for OS/2 fans: PCjs (v1.16.1) is now able to run OS/2 1.0 on
|
||||
[IBM PC AT Machine Configurations](/devices/pc/machine/#model-5170-machine-configurations). This is the culmination
|
||||
[IBM PC AT Machine Configurations](/devices/pcx86/machine/#model-5170-machine-configurations). This is the culmination
|
||||
of recent work in PCjs to fully emulate the Intel 80286 processor and 16-bit protected-mode, including undocumented
|
||||
features like [LOADALL](/pubs/pc/reference/intel/80286/loadall/) and triple-fault resets.
|
||||
|
||||
For a quick demo, try the [OS/2 1.0 Debugger Disk](/disks/pc/os2/misc/1.0/88286/). In a few seconds,
|
||||
For a quick demo, try the [OS/2 1.0 Debugger Disk](/disks/pcx86/os2/misc/1.0/88286/). In a few seconds,
|
||||
you'll see a very rudimentary OS/2 shell (a slimmed-down version of the OS/2 Program Selector) that allows you to
|
||||
start the protected-mode command interpreter ("Start a Program") or the real-mode command interpreter ("command.com").
|
||||
|
||||
[<img src="/blog/images/os2-debugger.jpg" alt="OS/2 1.0 With Kernel Debugger"/>](/disks/pc/os2/misc/1.0/88286/)
|
||||
[<img src="/blog/images/os2-debugger.jpg" alt="OS/2 1.0 With Kernel Debugger"/>](/disks/pcx86/os2/misc/1.0/88286/)
|
||||
|
||||
As an added bonus, the Model 5170 machines feature two serial ports, with COM1 connected to a simulated serial
|
||||
mouse and COM2 connected to the **Control Panel** output window.
|
||||
|
||||
Once you've booted the [OS/2 1.0 Debugger Disk](/disks/pc/os2/misc/1.0/88286/) from the assortment of
|
||||
[OS/2 Prototype Disks](/disks/pc/os2/misc/), you can click on the **Control Panel** output window, press Ctrl-C, and
|
||||
Once you've booted the [OS/2 1.0 Debugger Disk](/disks/pcx86/os2/misc/1.0/88286/) from the assortment of
|
||||
[OS/2 Prototype Disks](/disks/pcx86/os2/misc/), you can click on the **Control Panel** output window, press Ctrl-C, and
|
||||
find yourself magically transported into the OS/2 Kernel Debugger. The **Control Panel** display is functioning
|
||||
as both the output window for all PCjs messages and PCjs Debugger commands, as well as a serial input/output device
|
||||
(aka "Dumb Terminal") for any software inside the machine communicating via COM2: in this case, the OS/2 Kernel Debugger.
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
---
|
||||
layout: post
|
||||
title: PCjs Uncompiled
|
||||
title: PCx86 Uncompiled
|
||||
date: 2015-01-17 11:00:00
|
||||
category: Features
|
||||
permalink: /blog/2015/01/17/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: at-ega-1152k-rev3
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pc/machine/5170/ega/1152kb/rev3/debugger/machine.xml
|
||||
config: /devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml
|
||||
---
|
||||
|
||||
Most machines on [{{ site.pcjs.domain }}](/) run with a compiled version of PCjs, which is produced
|
||||
by running PCjs JavaScript source code through Google's Closure Compiler, yielding a smaller (minified)
|
||||
Most PCx86 machines on [{{ site.pcjs.domain }}](/) run with a compiled version of PCx86, which is produced
|
||||
by running the PCx86 JavaScript source code through Google's Closure Compiler, yielding a smaller (minified)
|
||||
version that loads and runs much faster than the original source code.
|
||||
|
||||
However, certain features are disabled in the compiled versions, including a new BACKTRACK feature that
|
||||
|
|
@ -21,7 +21,7 @@ makes it possible to track the contents of memory locations and registers back t
|
|||
or file location). Once the BACKTRACK feature is finished, it will be folded into the compiled code, but until
|
||||
then, the only way to experiment with it is by running the uncompiled code.
|
||||
|
||||
To make it easier to launch machines with uncompiled code, a PCjs machine definition can now set `uncompiled`
|
||||
To make it easier to launch machines with uncompiled code, a PCx86 machine definition can now set `uncompiled`
|
||||
to *true*, overriding the value of `site.pcjs.compiled` in **_config.yml**.
|
||||
|
||||
Here's what a typical Markdown file would look like:
|
||||
|
|
@ -30,11 +30,11 @@ Here's what a typical Markdown file would look like:
|
|||
---
|
||||
...
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: at-ega-1152k-rev3
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pc/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml
|
||||
config: /devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml
|
||||
---
|
||||
...
|
||||
{% include machine.html id="at-ega-1152k-rev3" %}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
---
|
||||
layout: post
|
||||
title: New PCjs Control Panel
|
||||
title: New PCx86 Control Panel
|
||||
date: 2015-01-28 11:00:00
|
||||
category: Control Panel
|
||||
permalink: /blog/2015/01/28/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: at-ega-1152k-rev3
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pc/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml
|
||||
config: /devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml
|
||||
---
|
||||
|
||||
A new PCjs Control Panel is under development, featuring a new "Display Panel" that will provide a variety of
|
||||
A new PCx86 Control Panel is under development, featuring a new "Display Panel" that will provide a variety of
|
||||
information about the machine, in real-time, and operate more efficiently than previous DOM-based Control Panels.
|
||||
|
||||
A preview of the layout is shown below. There's not much to see yet, as this is very much a work-in-progress.
|
||||
|
|
|
|||
|
|
@ -5,22 +5,22 @@ date: 2015-02-22 11:00:00
|
|||
category: 80386
|
||||
permalink: /blog/2015/02/22/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pc/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml
|
||||
---
|
||||
|
||||
I finally dumped the [COMPAQ DeskPro 386/16 ROMs](/devices/pc/rom/compaq/deskpro386/) from the motherboard I bought
|
||||
on ebay last year, so I'm ready to begin adding 80386 support to PCjs.
|
||||
I finally dumped the [COMPAQ DeskPro 386/16 ROMs](/devices/pcx86/rom/compaq/deskpro386/) from the motherboard I bought
|
||||
on ebay last year, so I'm ready to begin adding 80386 support to PCx86.
|
||||
|
||||
I'd also like to locate a copy of the "COMPAQ DeskPro 386 Technical Reference Guide, Volumes 1 and 2". It's not hard
|
||||
to find COMPAQ Maintenance and Service guides online, but their Technical Reference guides are much rarer, perhaps because
|
||||
they were expensive ($149) and not many were sold. Anyway, I'm hoping to either borrow or buy a copy, and then scan and
|
||||
post it.
|
||||
|
||||
A [COMPAQ DeskPro 386](/devices/pc/machine/compaq/deskpro386/ega/2048kb/debugger/) test configuration is displayed below.
|
||||
A [COMPAQ DeskPro 386](/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/) test configuration is displayed below.
|
||||
The configuration doesn't run, and the debugger can't disassemble 80386-specific code yet, but this is what I will be
|
||||
using to test and debug my changes over the next few months.
|
||||
|
||||
|
|
|
|||
|
|
@ -5,22 +5,22 @@ date: 2015-04-16 11:00:00
|
|||
category: 80386
|
||||
permalink: /blog/2015/04/16/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
debugger: true
|
||||
uncompiled: true
|
||||
config: /devices/pc/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml
|
||||
---
|
||||
|
||||
PCjs can now boot the [COMPAQ DeskPro 386/16 ROM BIOS](/devices/pc/rom/compaq/deskpro386/).
|
||||
PCx86 can now boot the [COMPAQ DeskPro 386/16 ROM BIOS](/devices/pcx86/rom/compaq/deskpro386/).
|
||||
|
||||
There's still a problem with the hard disk controller, which I haven't looked into yet,
|
||||
but booting from a floppy works.
|
||||
|
||||
While working through issues with this ROM BIOS, I created some lightly-annotated
|
||||
[source code](/devices/pc/rom/compaq/deskpro386/1988-01-28/1988-01-28.asm) that can be re-assembled
|
||||
[source code](/devices/pcx86/rom/compaq/deskpro386/1988-01-28/1988-01-28.asm) that can be re-assembled
|
||||
with [NASM](http://www.nasm.us/). The initial process of creating the source code is
|
||||
explained [here](/devices/pc/rom/compaq/deskpro386/#recreating-rom-source-code).
|
||||
explained [here](/devices/pcx86/rom/compaq/deskpro386/#recreating-rom-source-code).
|
||||
|
||||
At the top of the source code, I explain a few important details about ROM addresses that
|
||||
are worth recapping here:
|
||||
|
|
@ -129,7 +129,7 @@ protected-mode with A20 disabled -- an unwise thing to do on most machines:
|
|||
mov cr0,eax ; 0000F4A4 0F2200
|
||||
jmp 0x28:xf4ac ; 0000F4A7 EAACF42800
|
||||
|
||||
Before fully understanding the DeskPro's unusual A20 management, PCjs worked around it by
|
||||
Before fully understanding the DeskPro's unusual A20 management, PCx86 worked around it by
|
||||
redirecting all A20 changes from the Bus component to the CPU component, giving the CPU first
|
||||
crack at any changes to A20. If the CPU was in real-mode, it would simply pass the A20 request
|
||||
on to the Bus. However, if the CPU was in protected-mode, it would maintain the requested
|
||||
|
|
@ -143,7 +143,7 @@ to match that of the 1st megabyte whenever A20 is disabled. I could probably ge
|
|||
only the first 64Kb of the 2nd megabyte, but until I'm actually able to run some tests on a real
|
||||
DeskPro 386, I'm going to assume COMPAQ's A20 implementation affected the entire 2nd megabyte.
|
||||
|
||||
Here's my [COMPAQ DeskPro 386/16](/devices/pc/machine/compaq/deskpro386/ega/2048kb/debugger/) test
|
||||
Here's my [COMPAQ DeskPro 386/16](/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/) test
|
||||
configuration. Set a breakpoint at F000:F498 ("bp f000:f498") in the Debugger panel to see the above
|
||||
code in action. When the machine is operating in real-mode, you can use the "rp" command to dump all
|
||||
the registers, including the current base and limit values loaded into the segment registers.
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@ could only be used in PC, XT, and AT-compatible systems. I'll refer to it here
|
|||
The VGA ROM used here is assumed to have come from an original IBM VGA. It's unknown if IBM ever made any
|
||||
revisions to the VGA ROM. With the introduction of the PS/2 family and the VGA, IBM decided to no longer publish
|
||||
the source code for its ROMs, so I've created some assemblable source code from the IBM VGA ROM
|
||||
[here](/devices/pc/video/ibm/vga/).
|
||||
[here](/devices/pcx86/video/ibm/vga/).
|
||||
|
||||
I've finally started debugging a machine configuration that uses the IBM VGA ROM. Since the VGA and the 80386 are
|
||||
contemporaries, I'm using an [80386 machine configuration](/devices/pc/machine/compaq/deskpro386/vga/2048kb/debugger/).
|
||||
contemporaries, I'm using an [80386 machine configuration](/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/).
|
||||
However, I don't expect the IBM VGA ROM to require any 80386 support or PS/2-specific features.
|
||||
|
||||
The first problem I ran into was here:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ category: Video
|
|||
permalink: /blog/2015/06/05/
|
||||
---
|
||||
|
||||
I was playing with different video modes using this [IBM PC AT w/EGA](/devices/pc/machine/5170/ega/640kb/rev1/debugger/),
|
||||
I was playing with different video modes using this [IBM PC AT w/EGA](/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/),
|
||||
and I discovered an odd problem.
|
||||
|
||||
For example, when I ran this code:
|
||||
|
|
|
|||
|
|
@ -5,17 +5,17 @@ date: 2015-07-17 11:00:00
|
|||
category: Windows 95
|
||||
permalink: /blog/2015/07/17/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
debugger: true
|
||||
state: /disks/pc/windows/win95/4.00.950/deskpro386.json
|
||||
config: /devices/pc/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml
|
||||
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pc/fixed/68mb/win95.json"}]'
|
||||
state: /disks/pcx86/windows/win95/4.00.950/deskpro386.json
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml
|
||||
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pcx86/fixed/68mb/win95.json"}]'
|
||||
autoMount: ''
|
||||
---
|
||||
|
||||
This week (July 14, 2015) was the 20th anniversary of Windows 95 RTM ("Release To Manufacturing"). So I decided to
|
||||
throw a PCjs party and try running Windows 95 Setup inside a PCjs machine for the first time.
|
||||
throw a PCjs party and try running Windows 95 Setup inside a PCx86 machine for the first time.
|
||||
|
||||
Sadly, it immediately failed:
|
||||
|
||||
|
|
@ -52,17 +52,17 @@ The failing code:
|
|||
0E36:0927 07 POP ES
|
||||
0E36:0928 C3 RET
|
||||
|
||||
was easily fixed with a change to [x86cpu.js](/modules/pcjs/lib/x86cpu.js), allowing the IOPL bits to be
|
||||
was easily fixed with a change to [x86cpu.js](/modules/pcx86/lib/x86cpu.js), allowing the IOPL bits to be
|
||||
modified in real-mode on an 80386. When I had previously tweaked setPS() to accomodate 80286/80386 discrimination
|
||||
logic in OS/2 1.0, there was no 80386 support in PCjs at that time, so it was sufficient to *never* allow the
|
||||
logic in OS/2 1.0, there was no 80386 support in PCx86 at that time, so it was sufficient to *never* allow the
|
||||
IOPL bits to be altered in real-mode.
|
||||
|
||||
The next problem was triggered by Setup's CAB ("Diamond") decompression code, which uses all 32 bits
|
||||
of the 80386's 32-bit registers. That in itself was not a problem, but by leaving stray bits in the upper halves of
|
||||
registers like EDX, it exposed a bug in the PCjs I/O instruction handlers, which neglected to mask EDX with 0xFFFF before
|
||||
registers like EDX, it exposed a bug in the PCx86 I/O instruction handlers, which neglected to mask EDX with 0xFFFF before
|
||||
performing port lookups, causing mysterious I/O failures that usually manifested themselves as hard disk I/O errors.
|
||||
|
||||
Then PCjs crashed in the middle of the decompression of the first CAB file (MINI.CAB). It turned out the stack
|
||||
Then PCx86 crashed in the middle of the decompression of the first CAB file (MINI.CAB). It turned out the stack
|
||||
had been improperly adjusted because a "RETF n" instruction mistakenly believed that a stack switch had occurred.
|
||||
This was, in fact, a left-over condition from a protected-mode stack-switch. That was easily cleared.
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ fixed by flagging the opcode as genuinely invalid.
|
|||
|
||||
> SIDEBAR
|
||||
|
||||
> By default, PCjs marks opcodes as invalid *only* if they have been confirmed invalid. PCjs considers the vast
|
||||
> By default, PCx86 marks opcodes as invalid *only* if they have been confirmed invalid. PCx86 considers the vast
|
||||
majority of unused/undocumented opcodes to be merely "undefined" until I've seen them in the wild. An instruction will
|
||||
be marked invalid if I either discover that real hardware treats it as an Invalid Opcode (by throwing the exception)
|
||||
*or* that real software expects it to. For opcode 0x0F,0xFF, it was the latter.
|
||||
|
|
@ -86,9 +86,9 @@ I consider it a misnomer to refer to any invalid instruction as "undefined".
|
|||
|
||||
The other recent Windows 95 oddity I ran into was an instruction with multiple address-override (0x67) prefixes; the
|
||||
first prefix changed the instruction's addressing mode from 16-bit to 32-bit, and the second prefix changed it back to
|
||||
16-bit. PCjs should have simply ignored the second prefix.
|
||||
16-bit. PCx86 should have simply ignored the second prefix.
|
||||
|
||||
With all of the above changes in place, PCjs v1.18.4 is able to run Windows 95 Setup a bit farther, but still far from
|
||||
With all of the above changes in place, PCx86 v1.18.4 is able to run Windows 95 Setup a bit farther, but still far from
|
||||
completion. If you want to give it a spin yourself, start the machine below (click the "Run" button) and once it has
|
||||
finished booting, run SETUP from drive B, where the first Windows 95 diskette is already loaded.
|
||||
|
||||
|
|
@ -103,9 +103,9 @@ diskette.
|
|||
August 13, 2015 Update
|
||||
---
|
||||
|
||||
PCjs v1.18.8 has made a little more progress running Windows 95 Setup, but CAB decompression still fails almost
|
||||
PCx86 v1.18.8 has made a little more progress running Windows 95 Setup, but CAB decompression still fails almost
|
||||
immediately. To monitor DOS calls until the first 36-byte read of PRECOPY1.CAB, try setting the following
|
||||
breakpoint and then starting the machine, using the PCjs Debugger *input* field next to the **Enter** button:
|
||||
breakpoint and then starting the machine, using the PCx86 Debugger *input* field next to the **Enter** button:
|
||||
|
||||
m dos off
|
||||
bp 1ED4:16B4 "set fn=ah;dos;if fn!=3f||cx!=24"
|
||||
|
|
@ -132,7 +132,7 @@ second breakpoint can check the value on exit.
|
|||
|
||||
Regarding the other Debugger commands shown above, the `dos` command describes the current DOS operation
|
||||
(alternatively, you could use the `m int on; m dos on` commands to turn on DOS interrupt messages). The `di`
|
||||
command dumps PCjs BACKTRACK(tm) information, to help you visually confirm which INT 0x21 calls are reading
|
||||
command dumps PCx86 BACKTRACK(tm) information, to help you visually confirm which INT 0x21 calls are reading
|
||||
PRECOPY1.CAB. Finally, the `if` command evaluates the given expression, and if the result is non-zero ("true"),
|
||||
all subsequent commands are executed, up to to any `else` command; otherwise, only commands after the `else`
|
||||
command will be executed, and if there is no `else` command, execution will stop.
|
||||
|
|
@ -142,17 +142,17 @@ are evaluated using traditional operator precedence (ie, the same as C or JavaSc
|
|||
parentheses, assignment operators, and unary or ternary operators, are not supported in expressions.
|
||||
|
||||
This test machine below has been updated to load WDEB386.EXE prior to starting B:SETUP.EXE, if you prefer using
|
||||
WDEB386. Make sure the machine is running (ie, click the **Run** button, or use the PCjs Debugger "g" command),
|
||||
WDEB386. Make sure the machine is running (ie, click the **Run** button, or use the PCx86 Debugger "g" command),
|
||||
and then click on the Debugger *output* control to give it focus and press CTRL-C to trigger WDEB386.
|
||||
|
||||
The Debugger *input* field is used exclusively for PCjs Debugger commands, whereas the *output* textarea combines
|
||||
all Debugger output *and* WDEB386 COM2 serial port I/O. You can even use the PCjs Debugger to debug
|
||||
The Debugger *input* field is used exclusively for PCx86 Debugger commands, whereas the *output* textarea combines
|
||||
all Debugger output *and* WDEB386 COM2 serial port I/O. You can even use the PCx86 Debugger to debug
|
||||
the WDEB386 debugger; just make sure the appropriate text control has focus before typing a command.
|
||||
|
||||
To help reduce confusion, the PCjs Debugger displays a double-character command prefix, to differentiate its commands
|
||||
To help reduce confusion, the PCx86 Debugger displays a double-character command prefix, to differentiate its commands
|
||||
from WDEB386's single-character command prompt -- but it's still easy to get confused.
|
||||
|
||||
A quick recap of those command prefixes (which you won't see until AFTER you've typed a PCjs command):
|
||||
A quick recap of those command prefixes (which you won't see until AFTER you've typed a PCx86 command):
|
||||
|
||||
* `>>` indicates real-mode
|
||||
* `##` indicates protected-mode
|
||||
|
|
@ -165,7 +165,7 @@ A quick recap of those command prefixes (which you won't see until AFTER you've
|
|||
August 21, 2015 Update
|
||||
---
|
||||
|
||||
PCjs v1.19.1 has finally solved a number of nagging bugs. The CAB decompression code itself was running
|
||||
PCx86 v1.19.1 has finally solved a number of nagging bugs. The CAB decompression code itself was running
|
||||
fine; it would crash after loading a 32-bit value into EAX *and* a timer interrupt occurred. A path
|
||||
through the interrupt handler was trashing the upper bits of EAX. The culprit: any of the MOV instructions
|
||||
that move an immediate value into one of the "high" 8-bit registers (AH, BH, CH, or DH). Those instructions
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ date: 2015-09-21 11:00:00
|
|||
category: Windows 95
|
||||
permalink: /blog/2015/09/21/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
state: /disks/pc/windows/win95/4.00.950/deskpro386.json
|
||||
config: /devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml
|
||||
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pc/fixed/68mb/win95.json"}]'
|
||||
state: /disks/pcx86/windows/win95/4.00.950/deskpro386.json
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml
|
||||
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pcx86/fixed/68mb/win95.json"}]'
|
||||
autoMount: ''
|
||||
---
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ converts an immediate signed byte into a signed word. Those variations were fai
|
|||
a 16-bit operand size was in effect, and if the destination was a register, the upper 16 bits of that register
|
||||
could become corrupted.
|
||||
|
||||
The [Windows 95 Test Machine](/disks/pc/windows/win95/4.00.950/) hard disk has been updated
|
||||
The [Windows 95 Test Machine](/disks/pcx86/windows/win95/4.00.950/) hard disk has been updated
|
||||
with a complete set of Windows 95 files from a "Compact" installation, and first boot has finished, so instead
|
||||
of the initial "Getting ready to run Windows 95 for the first time..." splash screen, you'll see the normal
|
||||
Windows 95 startup screen.
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ and the following "Front Matter" (YAML) must appear at the top of the Markdown f
|
|||
---
|
||||
...
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: ibm5150
|
||||
---
|
||||
|
||||
|
|
@ -74,13 +74,13 @@ You may also use `config` to specify a machine XML configuration file if not usi
|
|||
a JSON-encoded machine state file if the machine requires a predefined state; and `uncompiled` may be set to *true*
|
||||
to force a machine to use uncompiled sources, overriding the value of `site.pcjs.compiled` in **_config.yml**.
|
||||
|
||||
For example, the PCjs Home page contains two machines, so this appears at the top of the
|
||||
For example, the PCjs home page contains two machines, so this appears at the top of the
|
||||
[Markdown file](https://raw.githubusercontent.com/jeffpar/pcjs/master/index.md):
|
||||
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: ibm5150
|
||||
config: /devices/pc/machine/5150/mda/64kb/machine.xml
|
||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||
- type: c1p
|
||||
id: demoC1P
|
||||
config: /devices/c1p/machine/8kb/large/machine.xml
|
||||
|
|
@ -89,13 +89,13 @@ If necessary, you can also override some of the settings in a machine XML file.
|
|||
FDC `autoMount` setting, making it easy to reuse the same machine XML file with different boot disks:
|
||||
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: deskpro386
|
||||
debugger: true
|
||||
autoMount:
|
||||
A:
|
||||
path: /disks/pc/os2/misc/football/FOOTBALL-76817.json
|
||||
config: /devices/pc/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml
|
||||
path: /disks/pcx86/os2/misc/football/FOOTBALL-76817.json
|
||||
config: /devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml
|
||||
|
||||
Other settings that can currently be overridden include:
|
||||
|
||||
|
|
@ -104,11 +104,11 @@ Other settings that can currently be overridden include:
|
|||
+ `messages`
|
||||
+ `state`
|
||||
|
||||
Additional overrides will be added as needed. See the [Windows 95 Demo](/disks/pc/windows/win95/4.00.950/)
|
||||
machine and its associated [Markdown file](https://raw.githubusercontent.com/jeffpar/pcjs/master/disks/pc/windows/win95/4.00.950/README.md)
|
||||
Additional overrides will be added as needed. See the [Windows 95 Demo](/disks/pcx86/windows/win95/4.00.950/)
|
||||
machine and its associated [Markdown file](https://raw.githubusercontent.com/jeffpar/pcjs/master/disks/pcx86/windows/win95/4.00.950/README.md)
|
||||
for more override examples, including how to set `autoMount` to *not* mount any diskettes.
|
||||
|
||||
I will continue to include a Node web server with the PCjs project, but it's now intended for development
|
||||
I will continue to include a Node web server with the PCjs Project, but it's now intended for development
|
||||
purposes only (not production servers). I've updated the PCjs MarkOut component to parse any "Front Matter"
|
||||
at the top of the PCjs Markdown files, and to convert all new Jekyll-style embedded machines and screenshots
|
||||
to the older Markdown-compatible formats, so pages generated by the Node web server should still function
|
||||
|
|
|
|||
|
|
@ -5,23 +5,23 @@ date: 2015-12-27 11:00:00
|
|||
category: OS/2
|
||||
permalink: /blog/2015/12/27/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: ibm5170
|
||||
debugger: true
|
||||
config: /devices/pc/machine/5170/ega/2048kb/rev3/debugger/machine.xml
|
||||
drives: '[{name:"20Mb Hard Disk",type:2,path:"/disks/pc/fixed/20mb/IBMOS210-EGA.json"}]'
|
||||
config: /devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml
|
||||
drives: '[{name:"20Mb Hard Disk",type:2,path:"/disks/pcx86/fixed/20mb/IBMOS210-EGA.json"}]'
|
||||
automount: ''
|
||||
---
|
||||
|
||||
Just for fun (because I have a warped sense of fun), I decided to revisit some of the old OS/2 software I wrote
|
||||
almost 30 years ago. But first, I needed an OS/2 development environment.
|
||||
|
||||
So I started with a clean install of [IBM OS/2 1.0](/disks/pc/os2/ibm/1.0/) in the 8Mhz IBM PC AT machine
|
||||
So I started with a clean install of [IBM OS/2 1.0](/disks/pcx86/os2/ibm/1.0/) in the 8Mhz IBM PC AT machine
|
||||
below, by booting from the "IBM OS/2 1.0 (1.44M Install)" diskette in drive A and reformatting the machine's 20Mb
|
||||
drive C.
|
||||
|
||||
Next, I installed the [MS OS/2 SDK 1.02](/disks/pc/tools/microsoft/os2/sdk/1.02/). This SDK was released
|
||||
in December 1987 along with [Microsoft OS/2 1.0](/disks/pc/os2/microsoft/1.0/). I don't have any of the
|
||||
Next, I installed the [MS OS/2 SDK 1.02](/disks/pcx86/tools/microsoft/os2/sdk/1.02/). This SDK was released
|
||||
in December 1987 along with [Microsoft OS/2 1.0](/disks/pcx86/os2/microsoft/1.0/). I don't have any of the
|
||||
printed documentation that came with the SDK, such as the *Installation Guide*, but I do have the
|
||||
[Microsoft® Operating System/2 Programmer’s Toolkit](/pubs/pc/software/os2/microsoft/ptk10/) documentation
|
||||
from March 1988, thanks to the [OS/2 Museum](http://www.os2museum.com/wp/os2-history/os2-library/os2-1-x-programming/).
|
||||
|
|
@ -35,11 +35,11 @@ into **Programmer's Workbench** (PWB), the text-mode Integrated Development Envi
|
|||
|
||||
With the introduction of graphical IDEs, such as Visual BASIC in 1991, Visual C++ in 1993, and Visual Studio in 1995,
|
||||
this stand-alone, text-mode editor became obsolete, but in the 1980s, it was a valuable tool. You can learn more
|
||||
about [SDKED](/disks/pc/tools/microsoft/os2/sdk/1.02/#using-sdked) on the
|
||||
[MS OS/2 SDK 1.02](/disks/pc/tools/microsoft/os2/sdk/1.02/) page.
|
||||
about [SDKED](/disks/pcx86/tools/microsoft/os2/sdk/1.02/#using-sdked) on the
|
||||
[MS OS/2 SDK 1.02](/disks/pcx86/tools/microsoft/os2/sdk/1.02/) page.
|
||||
|
||||
Our [IBM OS/2 1.0](/disks/pc/os2/ibm/1.0/) demo machine (shown below) has the
|
||||
[MS OS/2 SDK 1.02](/disks/pc/tools/microsoft/os2/sdk/1.02/) pre-installed, so check out our copy of the
|
||||
Our [IBM OS/2 1.0](/disks/pcx86/os2/ibm/1.0/) demo machine (shown below) has the
|
||||
[MS OS/2 SDK 1.02](/disks/pcx86/tools/microsoft/os2/sdk/1.02/) pre-installed, so check out our copy of the
|
||||
[Microsoft® Operating System/2 Programmer’s Toolkit](/pubs/pc/software/os2/microsoft/ptk10/) and then write some code!
|
||||
|
||||
{% include machine.html id="ibm5170" %}
|
||||
|
|
|
|||
|
|
@ -15,9 +15,9 @@ performance improvements were tested before being merged back into the main bran
|
|||
Another branch was **FOOTBALL** (aka **PIGSKIN**), an early 80386-based prototype intended to test the viability
|
||||
of the running multiple DOS applications in V86-mode. Sometimes this 80386 version was also called **386DOS**,
|
||||
to distinguish it from **286DOS**. More details are in this
|
||||
[FOOTBALL Design Document](/disks/pc/os2/misc/football/87058/#football-design-document).
|
||||
[FOOTBALL Design Document](/disks/pcx86/os2/misc/football/87058/#football-design-document).
|
||||
|
||||
To shed some light on those efforts, I recently added a few [OS/2 Prototype Disks](/disks/pc/os2/misc/): a small
|
||||
To shed some light on those efforts, I recently added a few [OS/2 Prototype Disks](/disks/pcx86/os2/misc/): a small
|
||||
collection of early (mostly pre-1.0) OS/2 boot disks that provide a glimpse of what some of those early OS/2 builds
|
||||
looked like.
|
||||
|
||||
|
|
@ -25,7 +25,7 @@ Getting these early versions of OS/2 to run in **PCjs** has been a bit of a chal
|
|||
but also some lingering issues. Debugging continues.
|
||||
|
||||
Part of the problem is that these pre-1.0 builds still contain a few bugs. Also, the original
|
||||
[OS/2 FOOTBALL Boot Disk](/disks/pc/os2/misc/football/87058/) from February 1987 was developed and
|
||||
[OS/2 FOOTBALL Boot Disk](/disks/pcx86/os2/misc/football/87058/) from February 1987 was developed and
|
||||
tested exclusively on Compaq DeskPro 386 machines from late 1986, so it has some uncommon 80386 dependencies:
|
||||
|
||||
* The [80386 LOADALL](/pubs/pc/reference/intel/80386/loadall/) instruction
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@ permalink: /blog/2016/02/08/
|
|||
---
|
||||
|
||||
The new release of PCjs (v1.20.8) is a fairly minor update, but it's an important one for **FOOTBALL** fans, resolving
|
||||
two annoying problems with the [OS/2 FOOTBALL Boot Disk](/disks/pc/os2/misc/football/87058/): mysterious hard-error popups
|
||||
two annoying problems with the [OS/2 FOOTBALL Boot Disk](/disks/pcx86/os2/misc/football/87058/): mysterious hard-error popups
|
||||
and blank screens.
|
||||
|
||||
A hard-error popup would occur when FOOTBALL tried to initialize a non-existent PRN device. To resolve that, PCjs
|
||||
now provides basic parallel port emulation, in the form of a [ParallelPort](/docs/pcjs/parallel/) component that you
|
||||
now provides basic parallel port emulation, in the form of a [ParallelPort](/docs/pcx86/parallel/) component that you
|
||||
include in a machine XML file with the <parallel> element, in much the same way you include the
|
||||
[SerialPort](/docs/pcjs/serial/) component with the <serial> element. This [Compaq DeskPro 386]
|
||||
(/devices/pc/machine/compaq/deskpro386/ega/4096kb/debugger/) machine used to run FOOTBALL has now been updated to
|
||||
[SerialPort](/docs/pcx86/serial/) component with the <serial> element. This [Compaq DeskPro 386]
|
||||
(/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/) machine used to run FOOTBALL has now been updated to
|
||||
include one parallel port.
|
||||
|
||||
The other problem was that switching between sessions with the **SysReq** key would often result in a blank screen;
|
||||
|
|
@ -23,21 +23,21 @@ exposed a PCjs memory-management bug. The upshot is that whenever the Video com
|
|||
buffer (which is *physical* memory), it must tell the CPU to flush any linear-to-physical mappings that may still refer
|
||||
to the old physical memory.
|
||||
|
||||
With these changes, the [OS/2 FOOTBALL Boot Disk](/disks/pc/os2/misc/football/87058/) appears to be quite usable now.
|
||||
With these changes, the [OS/2 FOOTBALL Boot Disk](/disks/pcx86/os2/misc/football/87058/) appears to be quite usable now.
|
||||
Feel free to give it a few kicks!
|
||||
|
||||
---
|
||||
|
||||
I've also tidied up a few things in the [Devices](/devices/) folder. ROM images used to be stored under
|
||||
`/devices/pc/basic/` and `/devices/pc/bios/`, but BASIC and BIOS ROM images aren't actually devices; they are the
|
||||
`/devices/pcx86/basic/` and `/devices/pcx86/bios/`, but BASIC and BIOS ROM images aren't actually devices; they are the
|
||||
*contents* of ROM devices. So, with that in mind, I've made the following rearrangements:
|
||||
|
||||
* `/devices/pc/bios/5150/*` => `/devices/pc/rom/5150/*`
|
||||
* `/devices/pc/bios/5160/*` => `/devices/pc/rom/5160/*`
|
||||
* `/devices/pc/bios/5170/*` => `/devices/pc/rom/5170/*`
|
||||
* `/devices/pc/bios/compaq/*` => `/devices/pc/rom/compaq/*`
|
||||
* `/devices/pc/basic/ibm-basic-1.00.json` => `/devices/pc/rom/5150/basic/BASIC100.json`
|
||||
* `/devices/pc/basic/ibm-basic-1.10.json` => `/devices/pc/rom/5160/basic/BASIC110.json`
|
||||
* `/devices/pcx86/bios/5150/*` => `/devices/pcx86/rom/5150/*`
|
||||
* `/devices/pcx86/bios/5160/*` => `/devices/pcx86/rom/5160/*`
|
||||
* `/devices/pcx86/bios/5170/*` => `/devices/pcx86/rom/5170/*`
|
||||
* `/devices/pcx86/bios/compaq/*` => `/devices/pcx86/rom/compaq/*`
|
||||
* `/devices/pcx86/basic/ibm-basic-1.00.json` => `/devices/pcx86/rom/5150/basic/BASIC100.json`
|
||||
* `/devices/pcx86/basic/ibm-basic-1.10.json` => `/devices/pcx86/rom/5160/basic/BASIC110.json`
|
||||
|
||||
This structure mirrors what was done with Machine and Video devices, where the devices are organized
|
||||
first by manufacturer (IBM or COMPAQ) and then by type (MDA, CGA, EGA, etc).
|
||||
|
|
@ -48,7 +48,7 @@ for example, models 5150 through 5170 refer to IBM PC models.
|
|||
---
|
||||
|
||||
The project currently includes only two BASIC ROM versions, C1.00 and C1.10, which were initially released with the
|
||||
first model 5150 and 5160 machines, respectively. For more details, see [IBM PC ROMs](/devices/pc/rom/).
|
||||
first model 5150 and 5160 machines, respectively. For more details, see [IBM PC ROMs](/devices/pcx86/rom/).
|
||||
|
||||
I believe there was also a BASIC ROM version 1.20 released for IBM PCjr, but since PCjs does not yet emulate the PCjr,
|
||||
it has not been added to the project.
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ date: 2016-02-17 14:00:00
|
|||
permalink: /blog/2016/02/17/
|
||||
---
|
||||
|
||||
PCjs (v1.20.9) now offers new, *much* easier ways to save disks and machines, thanks to the new
|
||||
PCx86 (v1.20.9) now offers new, *much* easier ways to save disks and machines, thanks to the new
|
||||
[Save Disk](/blog/2016/02/17/#saving-disks) and [Save Machine](/blog/2016/02/17/#saving-machines) features.
|
||||
With one click, PCjs can now generate a single download containing everything you need to embed any of our
|
||||
With one click, PCx86 can now generate a single download containing everything you need to embed any of our
|
||||
IBM PC demos on your own web page.
|
||||
|
||||
Saving Disks
|
||||
|
|
@ -18,7 +18,7 @@ to the floppy disk controls. Select the drive first, and then whatever diskette
|
|||
in that drive will be saved in your local machine's Downloads folder when you click **Save**.
|
||||
|
||||
If you made any changes to that disk after it was loaded, those changes will be included, so if you want a pristine
|
||||
copy of the disk, click the **Load** button first. PCjs will ask you to confirm that you really want to reload the
|
||||
copy of the disk, click the **Load** button first. PCx86 will ask you to confirm that you really want to reload the
|
||||
disk and discard any changes.
|
||||
|
||||
Note that the disk *should* be downloaded as an **.img** file, which is nothing more than a sector-by-sector binary
|
||||
|
|
@ -41,7 +41,7 @@ in your Downloads folder, so the OS X Terminal command `chmod -w PCDOS200-DISK1.
|
|||
`chmod +w PCDOS200-DISK1.img` will make it writable again.
|
||||
|
||||
**NOTE**: Some browsers, notably Safari, do not support named downloads, so any disks you download will end up
|
||||
with default names like "Unknown" or "download". PCjs will still try to let you know what the original filename was,
|
||||
with default names like "Unknown" or "download". PCx86 will still try to let you know what the original filename was,
|
||||
so that you can rename it appropriately.
|
||||
|
||||
Saving Machines
|
||||
|
|
@ -52,46 +52,46 @@ You can choose to save a machine in its initial state, or make changes to any of
|
|||
All your changes should be preserved.
|
||||
|
||||
Under the bottom-left corner of any IBM PC on the PCjs [website](/), you should now see a
|
||||
[**Save Machine**] link. When you click that link, PCjs will generate a large chunk of JavaScript containing
|
||||
[**Save Machine**] link. When you click that link, PCx86 will generate a large chunk of JavaScript containing
|
||||
everything that machine needs to run, including:
|
||||
|
||||
* The machine XML configuration file (eg, "machine.xml")
|
||||
* The machine XSL transformation file (eg, "components.xsl")
|
||||
* The machine CSS stylesheet file (eg, "components.css")
|
||||
* The machine state file (eg, "state.json")
|
||||
* The PCjs machine emulation script (eg, "pc.js")
|
||||
* The PCx86 machine emulation script (eg, "pcx86.js")
|
||||
* Copies of all the disk images mounted by the machine
|
||||
|
||||
Let's say you want to save the IBM PC on the PCjs [home page](/). When you click **Save Machine**, two things should
|
||||
Let's say you want to save the IBM PC on the PCx86 [home page](/). When you click **Save Machine**, two things should
|
||||
happen:
|
||||
|
||||
* A file will be downloaded (eg, "pc.js")
|
||||
* A file will be downloaded (eg, "pcx86.js")
|
||||
* A dialog box will appear with some markup to copy-and-paste
|
||||
|
||||
The dialog box should provide the following information:
|
||||
|
||||
Check your Downloads folder for "pc.js", copy it to your web server as "pc.js",
|
||||
Check your Downloads folder for "pcx86.js", copy it to your web server as "pcx86.js",
|
||||
and then add the following to your web page:
|
||||
|
||||
<div id="ibm5150"></div>
|
||||
...
|
||||
<script type="text/javascript" src="pc.js"></script>
|
||||
<script type="text/javascript" src="pcx86.js"></script>
|
||||
<script type="text/javascript">embedPC("ibm5150","machine.xml","components.xsl");</script>
|
||||
|
||||
The machine should appear where the <div> is located.
|
||||
|
||||
Copy the downloaded file to your own web server as **pc.js**, then create or edit a web page and insert the above text.
|
||||
If **pc.js** and your web page are in different folders, then you'll also need to update *src* to include the exact
|
||||
Copy the downloaded file to your own web server as **pcx86.js**, then create or edit a web page and insert the above text.
|
||||
If **pcx86.js** and your web page are in different folders, then you'll also need to update *src* to include the exact
|
||||
location of the script.
|
||||
|
||||
Some notes:
|
||||
|
||||
* PCjs may attempt to name the downloaded file **pc.json** instead of **pc.js**, because a file with a ".js"
|
||||
* PCx86 may attempt to name the downloaded file **pcx86.json** instead of **pcx86.js**, because a file with a ".js"
|
||||
extension could cause your web browser to block the download.
|
||||
|
||||
* For browsers that don't support named downloads, PCjs will attempt to open a new window/tab instead. Make sure
|
||||
you copy the *entire* contents of that window into a file named to **pc.js** (or **pc-dbg.js** if the machine is
|
||||
using the built-in PCjs debugger).
|
||||
* For browsers that don't support named downloads, PCx86 will attempt to open a new window/tab instead. Make sure
|
||||
you copy the *entire* contents of that window into a file named to **pcx86.js** (or **pcx86-dbg.js** if the machine is
|
||||
using the built-in PCx86 debugger).
|
||||
|
||||
* Your browser may also impose size limitations on the download. If nothing happens, the machine data may be too
|
||||
large for your browser; try a different browser (eg, Firefox or Safari) or a different machine.
|
||||
|
|
@ -113,7 +113,7 @@ Some notes:
|
|||
|
||||
<script type="text/javascript">embedPC("ibm5150","machine.xml","components.xsl","{state:null}");</script>
|
||||
|
||||
While the [PCjs Documentation](/docs/pcjs/) explains how to create a *new* machine, by writing your own machine
|
||||
While the [PCx86 Documentation](/docs/pcx86/) explains how to create a *new* machine, by writing your own machine
|
||||
XML file and manually copying all the other pieces, the new **Save Machine** feature is the best way to save
|
||||
any *existing* IBM PC and embed it on any other website.
|
||||
|
||||
|
|
|
|||
|
|
@ -50,12 +50,12 @@ all we have are the memories.
|
|||
### Speaking of Memories
|
||||
|
||||
In particular, Read-Only Memories: we have precious few of those, too. I finally obtained
|
||||
a [ROM Dump](/devices/pc/rom/compaq/portable/) from COMPAQ's first machine, the COMPAQ Portable, but I had to buy
|
||||
a [ROM Dump](/devices/pcx86/rom/compaq/portable/) from COMPAQ's first machine, the COMPAQ Portable, but I had to buy
|
||||
a system board on ebay to get it. Considering all the effort (and money) that COMPAQ invested in writing that code,
|
||||
it's a bit depressing that these things haven't been properly preserved and memorialized.
|
||||
|
||||
Looking ahead to the day when PCjs will be able to simulate the original COMPAQ Portable, I thought it would be a good
|
||||
idea to create my own roughly chronological list of [COMPAQ Machines](/devices/pc/machine/compaq/) from the 1980s,
|
||||
idea to create my own roughly chronological list of [COMPAQ Machines](/devices/pcx86/machine/compaq/) from the 1980s,
|
||||
since they are all machines I would like to see PCjs eventually support:
|
||||
|
||||
- COMPAQ Portable
|
||||
|
|
@ -64,7 +64,7 @@ since they are all machines I would like to see PCjs eventually support:
|
|||
- COMPAQ DeskPro 286
|
||||
- COMPAQ Portable 286
|
||||
- COMPAQ Portable II
|
||||
- [COMPAQ DeskPro 386](/devices/pc/machine/compaq/deskpro386/)
|
||||
- [COMPAQ DeskPro 386](/devices/pcx86/machine/compaq/deskpro386/)
|
||||
- COMPAQ Portable III
|
||||
- COMPAQ DeskPro 386/20
|
||||
- COMPAQ Portable 386
|
||||
|
|
@ -82,8 +82,8 @@ and LTE Lite series. But I think I need to stick to my original plan and draw a
|
|||
|
||||
As best I can tell, COMPAQ preferred to print its company name in all-caps, so that's my practice as well.
|
||||
|
||||
However, it seems that sometime between the release of [COMPAQ MS-DOS 3.10](/disks/pc/dos/compaq/3.10/) and
|
||||
[COMPAQ MS-DOS 3.31](/disks/pc/dos/compaq/3.31/), there may have been a shift in policy. Both products still
|
||||
However, it seems that sometime between the release of [COMPAQ MS-DOS 3.10](/disks/pcx86/dos/compaq/3.10/) and
|
||||
[COMPAQ MS-DOS 3.31](/disks/pcx86/dos/compaq/3.31/), there may have been a shift in policy. Both products still
|
||||
called themselves `The COMPAQ Personal Computer MS-DOS`, but in 3.31, the copyright string changed to
|
||||
`Compaq Computer Corp.`
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ date: 2016-03-06 09:00:00
|
|||
permalink: /blog/2016/03/06/
|
||||
---
|
||||
|
||||
Yesterday, I fired up [Windows 3.1](/disks/pc/windows/3.10/) and played a complete game of
|
||||
Yesterday, I fired up [Windows 3.1](/disks/pcx86/windows/3.10/) and played a complete game of
|
||||
[Windows Solitaire](https://en.wikipedia.org/wiki/Microsoft_Solitaire) on my iPad. It was a bit, um, touchy,
|
||||
but it worked.
|
||||
|
||||
|
|
|
|||
|
|
@ -6,15 +6,15 @@ permalink: /blog/2016/03/12/
|
|||
---
|
||||
|
||||
I recently added some more demos to the PCjs Project, to showcase its ability to run old 80286-based and
|
||||
80386-based software, such as [Windows/386](/disks/pc/windows/2.0x/), [Windows 3.0](/disks/pc/windows/3.00/),
|
||||
[Windows 3.1](/disks/pc/windows/3.10/), and [Windows 95](/disks/pc/windows/win95/4.00.950/).
|
||||
80386-based software, such as [Windows/386](/disks/pcx86/windows/2.0x/), [Windows 3.0](/disks/pcx86/windows/3.00/),
|
||||
[Windows 3.1](/disks/pcx86/windows/3.10/), and [Windows 95](/disks/pcx86/windows/win95/4.00.950/).
|
||||
|
||||
{% include screenshot.html src="/disks/pc/windows/2.0x/thumbnail.jpg" width="200" height="120" title="COMPAQ DeskPro 386, Windows/386 2.01" link="/disks/pc/windows/2.0x/" %}
|
||||
{% include screenshot.html src="/disks/pc/windows/3.00/thumbnail.jpg" width="200" height="120" title="IBM PC AT w/EGA, Windows 3.00" link="/disks/pc/windows/3.00/" %}
|
||||
{% include screenshot.html src="/disks/pc/windows/3.10/thumbnail.jpg" width="200" height="120" title="IBM PC AT w/VGA, Windows 3.10" link="/disks/pc/windows/3.10/" %}
|
||||
{% include screenshot.html src="/disks/pc/windows/win95/4.00.950/thumbnail.jpg" width="200" height="120" title="COMPAQ DeskPro 386, Windows 95" link="/disks/pc/windows/win95/4.00.950/" %}
|
||||
{% include screenshot.html src="/disks/pcx86/windows/2.0x/thumbnail.jpg" width="200" height="120" title="COMPAQ DeskPro 386, Windows/386 2.01" link="/disks/pcx86/windows/2.0x/" %}
|
||||
{% include screenshot.html src="/disks/pcx86/windows/3.00/thumbnail.jpg" width="200" height="120" title="IBM PC AT w/EGA, Windows 3.00" link="/disks/pcx86/windows/3.00/" %}
|
||||
{% include screenshot.html src="/disks/pcx86/windows/3.10/thumbnail.jpg" width="200" height="120" title="IBM PC AT w/VGA, Windows 3.10" link="/disks/pcx86/windows/3.10/" %}
|
||||
{% include screenshot.html src="/disks/pcx86/windows/win95/4.00.950/thumbnail.jpg" width="200" height="120" title="COMPAQ DeskPro 386, Windows 95" link="/disks/pcx86/windows/win95/4.00.950/" %}
|
||||
|
||||
As the [OS/2 Museum](http://www.os2museum.com/wp/windows386-2-01/) points out, [Windows/386 2.01](/disks/pc/windows/2.0x/)
|
||||
As the [OS/2 Museum](http://www.os2museum.com/wp/windows386-2-01/) points out, [Windows/386 2.01](/disks/pcx86/windows/2.0x/)
|
||||
was the first Microsoft product to specifically target the 80386. However, not only was it *not* a 32-bit operating
|
||||
system, it didn't even run Windows applications in protected-mode. Windows apps ran in V86-mode, and even then, *only*
|
||||
if you started Windows by running `WIN386.EXE`.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ permalink: /blog/2016/05/04/
|
|||
This was the week of The Sharpening.
|
||||
|
||||
A while back, I updated most of the machines to use higher-resolution "screens". For example, a typical
|
||||
[EGA video configuration](/devices/pc/video/ibm/ega/1984-09-13/128kb-autolockfs.xml) now specifies a *screenWidth*
|
||||
[EGA video configuration](/devices/pcx86/video/ibm/ega/1984-09-13/128kb-autolockfs.xml) now specifies a *screenWidth*
|
||||
of 1280 and *screenHeight* of 700, dimensions which are exactly twice the standard EGA resolution.
|
||||
|
||||
That change had no effect on the machine's operation, but it did improve the machine's appearance, because
|
||||
|
|
@ -16,8 +16,8 @@ most people are using much higher resolution monitors today, so by using a highe
|
|||
less interpolation is happening when a machine's screen image is scaled up to fill your browser window.
|
||||
|
||||
The amount of scaling *also* depends on whether the machine allows itself to be stretched to fill the browser window.
|
||||
For example, this [machine](/devices/pc/machine/5160/ega/640kb/array/machine.xml) (used by the
|
||||
[EGA Machine Array Demo](/devices/pc/machine/5160/ega/640kb/array/)) is limited to an overall *width* of 680 pixels,
|
||||
For example, this [machine](/devices/pcx86/machine/5160/ega/640kb/array/machine.xml) (used by the
|
||||
[EGA Machine Array Demo](/devices/pcx86/machine/5160/ega/640kb/array/)) is limited to an overall *width* of 680 pixels,
|
||||
no matter how large you make your browser window:
|
||||
|
||||
```xml
|
||||
|
|
@ -46,7 +46,7 @@ All the browsers I've tested so far (Chrome, Firefox, and Safari) support a
|
|||
which eliminates much of the fuzziness that would occur when copying pixels from the lower-resolution *buffer* canvas
|
||||
to the higher-resolution *screen* canvas.
|
||||
|
||||
So I've added a new [Video](/docs/pcjs/video/) property named *smoothing* that can be set to "true" or "false",
|
||||
So I've added a new [Video](/docs/pcx86/video/) property named *smoothing* that can be set to "true" or "false",
|
||||
and I've set it to "false" for most machines in the project. If *smoothing* is not set, your browser continues to
|
||||
use its default interpolation method.
|
||||
|
||||
|
|
@ -66,7 +66,7 @@ while the right one does not.
|
|||
Aspect Ratio
|
||||
---
|
||||
|
||||
The *smoothing* property joins another recent [Video](/docs/pcjs/video/) property, *aspect*, that was added in a
|
||||
The *smoothing* property joins another recent [Video](/docs/pcx86/video/) property, *aspect*, that was added in a
|
||||
[release](https://github.com/jeffpar/pcjs/releases/tag/v1.21.5) last month.
|
||||
|
||||
To recap, aspect ratio is display width divided by display height, but the choice of aspect ratio is complicated by
|
||||
|
|
@ -79,7 +79,7 @@ containing one or more PCjs machines.
|
|||
|
||||
For example:
|
||||
|
||||
http://www.pcjs.org/disks/pc/dos/ibm/1.00/?aspect=2.0
|
||||
http://www.pcjs.org/disks/pcx86/dos/ibm/1.00/?aspect=2.0
|
||||
|
||||
will modify the height of the machine's screen to conform to the requested aspect ratio of 2.0. The screen should still
|
||||
be responsive to any browser resizing while still retaining that aspect ratio.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Application Archives
|
|||
---
|
||||
Browse classic application software for the following machines:
|
||||
|
||||
- [IBM PC](pc/)
|
||||
- [IBM PC](pcx86/)
|
||||
- [Challenger 1P](c1p/)
|
||||
|
||||
### Software Application Manifests
|
||||
|
|
@ -34,13 +34,13 @@ the following information about the software:
|
|||
- Disk(s) (one or more entries describing sets of files and/or disk images)
|
||||
|
||||
The distinctions made by Type and Category are a bit arbitrary and likely to change. For now,
|
||||
Type is merely a reflection of how we initially filed the original [disks](/disks/pc/), while Category
|
||||
Type is merely a reflection of how we initially filed the original [disks](/disks/pcx86/), while Category
|
||||
provides more detail.
|
||||
|
||||
### Example: VisiCalc
|
||||
|
||||
VisiCalc is stored in an [/apps folder](/apps/pc/1981/visicalc/), and two relevant files are
|
||||
described by <file> entries in its [manifest](/apps/pc/1981/visicalc/manifest.xml):
|
||||
VisiCalc is stored in an [/apps folder](/apps/pcx86/1981/visicalc/), and two relevant files are
|
||||
described by <file> entries in its [manifest](/apps/pcx86/1981/visicalc/manifest.xml):
|
||||
|
||||
<manifest>
|
||||
<title>VisiCalc</title>
|
||||
|
|
@ -49,32 +49,32 @@ described by <file> entries in its [manifest](/apps/pc/1981/visicalc/manif
|
|||
<category>Productivity</category>
|
||||
<company>Software Arts</company>
|
||||
<releaseDate>December 16, 1981</releaseDate>
|
||||
<machine href="/devices/pc/machine/5150/mda/64kb/machine.xml" state="/apps/pc/1981/visicalc/state.json"/>
|
||||
<disk id="disk" dir="/apps/pc/1981/visicalc/bin/">
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml" state="/apps/pcx86/1981/visicalc/state.json"/>
|
||||
<disk id="disk" dir="/apps/pcx86/1981/visicalc/bin/">
|
||||
<file>VC.COM</file>
|
||||
<file dir="../">README.md</file>
|
||||
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
|
||||
</disk>
|
||||
</manifest>
|
||||
|
||||
Since this [manifest](/apps/pc/1981/visicalc/manifest.xml) also contains a <machine> entry,
|
||||
Since this [manifest](/apps/pcx86/1981/visicalc/manifest.xml) also contains a <machine> entry,
|
||||
the default manifest stylesheet will automatically load and launch the associated
|
||||
[PCjs machine](/devices/pc/machine/5150/mda/64kb/machine.xml). The machine will boot or resume according
|
||||
to its own <[computer](/docs/pcjs/computer/)> settings, unless the manifest overrides the machine's
|
||||
[PCjs machine](/devices/pcx86/machine/5150/mda/64kb/machine.xml). The machine will boot or resume according
|
||||
to its own <[computer](/docs/pcx86/computer/)> settings, unless the manifest overrides the machine's
|
||||
default state with its own *state* setting; eg:
|
||||
|
||||
<machine href="/devices/pc/machine/5150/mda/64kb/machine.xml" state="/apps/pc/1981/visicalc/state.json"/>
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml" state="/apps/pcx86/1981/visicalc/state.json"/>
|
||||
|
||||
The machine.xml file, in turn, refers to a [sample set](/disks/pc/samples.xml) of disk images, one of which is:
|
||||
The machine.xml file, in turn, refers to a [sample set](/disks/pcx86/samples.xml) of disk images, one of which is:
|
||||
|
||||
<manifest ref="/apps/pc/1981/visicalc/manifest.xml" disk="*"/>
|
||||
<manifest ref="/apps/pcx86/1981/visicalc/manifest.xml" disk="*"/>
|
||||
|
||||
which refers to the <disk> entry in the VisiCalc manifest -- which brings us full circle.
|
||||
|
||||
Since that <disk> entry is just a reference to a folder, PCjs must first convert it to a disk image,
|
||||
using the following API request:
|
||||
|
||||
http://localhost:8088/api/v1/dump?path=/apps/pc/1981/visicalc/bin/VC.COM;../README.md&format=json
|
||||
http://localhost:8088/api/v1/dump?path=/apps/pcx86/1981/visicalc/bin/VC.COM;../README.md&format=json
|
||||
|
||||
The PCjs DiskDump module processes the dump request and generates a JSON-encoded DOS 2.x-compatible disk image
|
||||
containing all the specified files.
|
||||
|
|
@ -84,7 +84,7 @@ have saved that JSON-encoded image as static file on the server, and then added
|
|||
<disk> entry:
|
||||
|
||||
<manifest>
|
||||
<disk id="disk01" dir="/apps/pc/1981/visicalc/archive/" href="/apps/pc/1981/visicalc/disk.json">
|
||||
<disk id="disk01" dir="/apps/pcx86/1981/visicalc/archive/" href="/apps/pcx86/1981/visicalc/disk.json">
|
||||
...
|
||||
</disk>
|
||||
</manifest>
|
||||
|
|
@ -95,8 +95,8 @@ be re-generated.
|
|||
|
||||
### Example: CP/M-86
|
||||
|
||||
CPM-86 is stored as two disk images in a [/disks folder](/disks/pc/cpm/1.1b/). The disk images are described in that
|
||||
folder's [manifest](/disks/pc/cpm/1.1b/manifest.xml):
|
||||
CPM-86 is stored as two disk images in a [/disks folder](/disks/pcx86/cpm/1.1b/). The disk images are described in that
|
||||
folder's [manifest](/disks/pcx86/cpm/1.1b/manifest.xml):
|
||||
|
||||
<manifest>
|
||||
<title>CP/M-86</title>
|
||||
|
|
@ -106,11 +106,11 @@ folder's [manifest](/disks/pc/cpm/1.1b/manifest.xml):
|
|||
<company href="http://en.wikipedia.org/wiki/Digital_Research">Digital Research</company>
|
||||
<publisher href="http://en.wikipedia.org/wiki/Eagle_Computer">Eagle Computer</publisher>
|
||||
<releaseDate>May 20, 1983</releaseDate>
|
||||
<machine href="/disks/pc/cpm/1.1b/machine.xml"/>
|
||||
<disk id="disk01" href="/disks/pc/cpm/1.1b/cpm86-disk1.json">
|
||||
<machine href="/disks/pcx86/cpm/1.1b/machine.xml"/>
|
||||
<disk id="disk01" href="/disks/pcx86/cpm/1.1b/cpm86-disk1.json">
|
||||
<name>CP/M-86 (Disk 1)</name>
|
||||
</disk>
|
||||
<disk id="disk02" href="/disks/pc/cpm/1.1b/cpm86-disk2.json">
|
||||
<disk id="disk02" href="/disks/pcx86/cpm/1.1b/cpm86-disk2.json">
|
||||
<name>CP/M-86 (Disk 2)</name>
|
||||
</disk>
|
||||
</manifest>
|
||||
|
|
@ -123,10 +123,10 @@ the disk images.
|
|||
|
||||
If a machine file wanted to use only the first disk, then it would specify:
|
||||
|
||||
<manifest ref="/disks/pc/cpm/1.1b/manifest.xml" disk="disk01"/>
|
||||
<manifest ref="/disks/pcx86/cpm/1.1b/manifest.xml" disk="disk01"/>
|
||||
|
||||
and if it wanted to use all the disks listed in the manifest, it would specify:
|
||||
|
||||
<manifest ref="/disks/pc/cpm/1.1b/manifest.xml" disk="*"/>
|
||||
<manifest ref="/disks/pcx86/cpm/1.1b/manifest.xml" disk="*"/>
|
||||
|
||||
which is what our [CP/M Machine Configuration](/disks/pc/cpm/1.1b/machine.xml) does.
|
||||
which is what our [CP/M Machine Configuration](/disks/pcx86/cpm/1.1b/machine.xml) does.
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: "Executive Suite (1982)"
|
||||
permalink: /apps/pc/1982/esuite/
|
||||
machines:
|
||||
- type: pc
|
||||
id: ibm5160
|
||||
config: /devices/pc/machine/5160/mda/256kb/fake188/machine.xml
|
||||
state: /apps/pc/1982/esuite/state.json
|
||||
---
|
||||
|
||||
Executive Suite (1982)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: "Rogue (1985)"
|
||||
permalink: /apps/pc/1985/rogue/
|
||||
machines:
|
||||
- type: pc
|
||||
id: ibm5160
|
||||
config: /devices/pc/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pc/1985/rogue/state.json
|
||||
---
|
||||
|
||||
Rogue (1985)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
CACHE MANIFEST
|
||||
/apps/pc/1985/rogue/manifest.xml
|
||||
/versions/pcjs/1.16.0/manifest.xsl
|
||||
/versions/pcjs/1.16.0/common.xsl
|
||||
/versions/pcjs/1.16.0/components.xsl
|
||||
/devices/pc/machine/5160/cga/640kb/machine.xml
|
||||
/devices/pc/keyboard/us83-buttons-minimal.xml
|
||||
/disks/pc/library.xml
|
||||
/disks/pc/dos/microsoft/3.20/manifest.xml
|
||||
/disks/pc/dos/microsoft/4.0M/manifest.xml
|
||||
/disks/pc/tools/microsoft/basic/manifest.xml
|
||||
/disks/pc/tools/microsoft/c/4.00/manifest.xml
|
||||
/disks/pc/tools/microsoft/masm/4.00/manifest.xml
|
||||
/disks/pc/tools/microsoft/mouse/5.00/manifest.xml
|
||||
/disks/pc/apps/lotus/123/1.0a/manifest.xml
|
||||
/disks/pc/apps/microsoft/word/3.0/manifest.xml
|
||||
/disks/pc/apps/microsoft/word/3.1/manifest.xml
|
||||
/disks/pc/apps/microsoft/word/5.0/manifest.xml
|
||||
/disks/pc/apps/microsoft/winword/2.0c/manifest.xml
|
||||
/apps/pc/1981/visicalc/manifest.xml
|
||||
/apps/pc/1982/esuite/manifest.xml
|
||||
/apps/pc/1987/thinktank/manifest.xml
|
||||
/apps/pc/1992/moria/manifest.xml
|
||||
/versions/pcjs/1.16.0/common.css
|
||||
/versions/pcjs/1.16.0/components.css
|
||||
/versions/pcjs/1.16.0/pc.js
|
||||
/devices/pc/hdc/ibm-xebec-1982.json
|
||||
/devices/pc/rom/5160/basic/BASIC110.json
|
||||
/devices/pc/rom/5160/1982-11-08/XTBIOS-REV1.json
|
||||
/devices/pc/video/ibm/cga/ibm-cga.json
|
||||
/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json
|
||||
/disks/pc/dos/ibm/2.00/PCDOS200-DISK2.json
|
||||
/apps/pc/1985/rogue/state.json
|
||||
/apps/pc/1985/rogue/disk.json
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: "ThinkTank (1987)"
|
||||
permalink: /apps/pc/1987/thinktank/
|
||||
machines:
|
||||
- type: pc
|
||||
id: ibm5160
|
||||
config: /devices/pc/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pc/1987/thinktank/state.json
|
||||
---
|
||||
|
||||
ThinkTank (1987)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: "The Dungeons of Moria (1992)"
|
||||
permalink: /apps/pc/1992/moria/
|
||||
machines:
|
||||
- type: pc
|
||||
id: ibm5160
|
||||
config: /devices/pc/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pc/1992/moria/state.json
|
||||
---
|
||||
|
||||
The Dungeons of Moria (1992)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Applications (1981)
|
||||
permalink: /apps/pc/1981/
|
||||
permalink: /apps/pcx86/1981/
|
||||
redirect_from:
|
||||
- /apps/pc/1981/
|
||||
---
|
||||
|
||||
IBM PC Applications (1981)
|
||||
|
|
@ -1,12 +1,14 @@
|
|||
---
|
||||
layout: page
|
||||
title: "VisiCalc (1981)"
|
||||
permalink: /apps/pc/1981/visicalc/
|
||||
permalink: /apps/pcx86/1981/visicalc/
|
||||
redirect_from:
|
||||
- /apps/pc/1981/visicalc/
|
||||
machines:
|
||||
- type: pc
|
||||
- type: pcx86
|
||||
id: ibm5150
|
||||
config: /devices/pc/machine/5150/mda/64kb/machine.xml
|
||||
state: /apps/pc/1981/visicalc/state.json
|
||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||
state: /apps/pcx86/1981/visicalc/state.json
|
||||
---
|
||||
|
||||
VisiCalc (1981)
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/manifest.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/manifest.xsl"?>
|
||||
<manifest type="software">
|
||||
<title>VisiCalc</title>
|
||||
<!-- Since version numbers are incorporated into the disk image names, and this version number is a bit ugly, we're not exposing it with the normal "version" tag -->
|
||||
|
|
@ -11,8 +11,8 @@
|
|||
<author href="http://www.frankston.com/public/?name=ImplementingVisiCalc">Bob Frankston</author>
|
||||
<releaseDate>December 16, 1981</releaseDate>
|
||||
<license href="http://www.bricklin.com/history/vclicense.htm">Lotus Development</license>
|
||||
<machine href="/devices/pc/machine/5150/mda/64kb/machine.xml" state="/apps/pc/1981/visicalc/state.json"/>
|
||||
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pc/1981/visicalc/disk.json" md5="61494f998d5fb0e31e7b8bd99f1cc588" md5json="3ad82ed815725e6bd786f92a4714e84f">
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml" state="/apps/pcx86/1981/visicalc/state.json"/>
|
||||
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pcx86/1981/visicalc/disk.json" md5="61494f998d5fb0e31e7b8bd99f1cc588" md5json="3ad82ed815725e6bd786f92a4714e84f">
|
||||
<name>VisiCalc (1981)</name>
|
||||
<file size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>
|
||||
<file dir="../">README.md</file>
|
||||
1
apps/pcx86/1981/visicalc/state.json
Normal file
1
apps/pcx86/1981/visicalc/state.json
Normal file
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Applications (1982)
|
||||
permalink: /apps/pc/1982/
|
||||
permalink: /apps/pcx86/1982/
|
||||
redirect_from:
|
||||
- /apps/pc/1982/
|
||||
---
|
||||
|
||||
IBM PC Applications (1982)
|
||||
17
apps/pcx86/1982/esuite/README.md
Normal file
17
apps/pcx86/1982/esuite/README.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
layout: page
|
||||
title: "Executive Suite (1982)"
|
||||
permalink: /apps/pcx86/1982/esuite/
|
||||
redirect_from:
|
||||
- /apps/pc/1982/esuite/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160
|
||||
config: /devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml
|
||||
state: /apps/pcx86/1982/esuite/state.json
|
||||
---
|
||||
|
||||
Executive Suite (1982)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/manifest.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/manifest.xsl"?>
|
||||
<manifest type="software">
|
||||
<title>Executive Suite</title>
|
||||
<version/>
|
||||
|
|
@ -7,8 +7,8 @@
|
|||
<category>Text Simulation</category>
|
||||
<author>Armonk Corporation</author>
|
||||
<releaseDate>1982</releaseDate>
|
||||
<machine href="/devices/pc/machine/5160/mda/256kb/fake188/machine.xml" state="/apps/pc/1982/esuite/state.json"/>
|
||||
<disk id="disk01" size="368640" chs="40:2:9" dir="archive/" href="/apps/pc/1982/esuite/disk.json" md5="7721a7bc9fcbd0005e7c1d87ecc055c5" md5json="dbf0a2c0176b8128d87e2465794764f4">
|
||||
<machine href="/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml" state="/apps/pcx86/1982/esuite/state.json"/>
|
||||
<disk id="disk01" size="368640" chs="40:2:9" dir="archive/" href="/apps/pcx86/1982/esuite/disk.json" md5="7721a7bc9fcbd0005e7c1d87ecc055c5" md5json="dbf0a2c0176b8128d87e2465794764f4">
|
||||
<name>Executive Suite (1982)</name>
|
||||
<file size="384" time="2000-02-29 08:04:48" attr="0x20" md5="3e638560a5f483cdbd1be486b07c767e">ESUITE.COM</file>
|
||||
<file size="163840" time="2000-02-29 06:57:40" attr="0x20" md5="dcc72026cdc906109cf0e3b2d07ffd5d">GAME.DAT</file>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Applications (1985)
|
||||
permalink: /apps/pc/1985/
|
||||
permalink: /apps/pcx86/1985/
|
||||
redirect_from:
|
||||
- /apps/pc/1985/
|
||||
---
|
||||
|
||||
IBM PC Applications (1985)
|
||||
17
apps/pcx86/1985/rogue/README.md
Normal file
17
apps/pcx86/1985/rogue/README.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
layout: page
|
||||
title: "Rogue (1985)"
|
||||
permalink: /apps/pcx86/1985/rogue/
|
||||
redirect_from:
|
||||
- /apps/pc/1985/rogue/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160
|
||||
config: /devices/pcx86/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pcx86/1985/rogue/state.json
|
||||
---
|
||||
|
||||
Rogue (1985)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
34
apps/pcx86/1985/rogue/cache.manifest
Normal file
34
apps/pcx86/1985/rogue/cache.manifest
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
CACHE MANIFEST
|
||||
/apps/pcx86/1985/rogue/manifest.xml
|
||||
/versions/pcx86/current/manifest.xsl
|
||||
/versions/pcx86/current/common.xsl
|
||||
/versions/pcx86/current/components.xsl
|
||||
/devices/pcx86/machine/5160/cga/640kb/machine.xml
|
||||
/devices/pcx86/keyboard/us83-buttons-minimal.xml
|
||||
/disks/pcx86/library.xml
|
||||
/disks/pcx86/dos/microsoft/3.20/manifest.xml
|
||||
/disks/pcx86/dos/microsoft/4.0M/manifest.xml
|
||||
/disks/pcx86/tools/microsoft/basic/manifest.xml
|
||||
/disks/pcx86/tools/microsoft/c/4.00/manifest.xml
|
||||
/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml
|
||||
/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml
|
||||
/disks/pcx86/apps/lotus/123/1.0a/manifest.xml
|
||||
/disks/pcx86/apps/microsoft/word/3.0/manifest.xml
|
||||
/disks/pcx86/apps/microsoft/word/3.1/manifest.xml
|
||||
/disks/pcx86/apps/microsoft/word/5.0/manifest.xml
|
||||
/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml
|
||||
/apps/pcx86/1981/visicalc/manifest.xml
|
||||
/apps/pcx86/1982/esuite/manifest.xml
|
||||
/apps/pcx86/1987/thinktank/manifest.xml
|
||||
/apps/pcx86/1992/moria/manifest.xml
|
||||
/versions/pcx86/current/common.css
|
||||
/versions/pcx86/current/components.css
|
||||
/versions/pcx86/current/pcx86.js
|
||||
/devices/pcx86/hdc/ibm-xebec-1982.json
|
||||
/devices/pcx86/rom/5160/basic/BASIC110.json
|
||||
/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json
|
||||
/devices/pcx86/video/ibm/cga/ibm-cga.json
|
||||
/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json
|
||||
/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK2.json
|
||||
/apps/pcx86/1985/rogue/state.json
|
||||
/apps/pcx86/1985/rogue/disk.json
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/manifest.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/manifest.xsl"?>
|
||||
<manifest type="software">
|
||||
<title>Rogue</title>
|
||||
<version/>
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
<author>Ken Arnold</author>
|
||||
<author>Jon Lane</author>
|
||||
<author>Michael Toy</author>
|
||||
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pc/1985/rogue/disk.json" md5="91fab29636a7517e17eaa38b30ff156a" md5json="c531e9f249b20adad667a3c376e427c8">
|
||||
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pcx86/1985/rogue/disk.json" md5="91fab29636a7517e17eaa38b30ff156a" md5json="c531e9f249b20adad667a3c376e427c8">
|
||||
<name>Rogue (1985)</name>
|
||||
<file size="14016" time="1985-03-25 14:33:18" attr="0x20" md5="e8f7c7b97210f480c7b741a0d58951bd">MKOPT.EXE</file>
|
||||
<file size="2616" time="1995-09-01 18:46:18" attr="0x20" md5="275fd64a3502af22b56e23934c79e9ef">ROGUE.COM</file>
|
||||
|
|
@ -21,5 +21,5 @@
|
|||
<file size="16391" time="1985-03-25 16:53:10" attr="0x20" md5="afb883b611c35f79f2a5168365349ba7">ROGUE.PIC</file>
|
||||
<file size="0" time="1995-08-26 12:11:38" attr="0x20">ROGUE.SCR</file>
|
||||
</disk>
|
||||
<machine href="/devices/pc/machine/5160/cga/640kb/machine.xml" state="/apps/pc/1985/rogue/state.json"/>
|
||||
<machine href="/devices/pcx86/machine/5160/cga/640kb/machine.xml" state="/apps/pcx86/1985/rogue/state.json"/>
|
||||
</manifest>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Applications (1987)
|
||||
permalink: /apps/pc/1987/
|
||||
permalink: /apps/pcx86/1987/
|
||||
redirect_from:
|
||||
- /apps/pc/1987/
|
||||
---
|
||||
|
||||
IBM PC Applications (1987)
|
||||
17
apps/pcx86/1987/thinktank/README.md
Normal file
17
apps/pcx86/1987/thinktank/README.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
layout: page
|
||||
title: "ThinkTank (1987)"
|
||||
permalink: /apps/pcx86/1987/thinktank/
|
||||
redirect_from:
|
||||
- /apps/pc/1987/thinktank/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160
|
||||
config: /devices/pcx86/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pcx86/1987/thinktank/state.json
|
||||
---
|
||||
|
||||
ThinkTank (1987)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/manifest.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/manifest.xsl"?>
|
||||
<manifest type="software">
|
||||
<title>ThinkTank</title>
|
||||
<version>2.41NP</version>
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<category>Productivity</category>
|
||||
<company>Living Videotext</company>
|
||||
<releaseDate>September 25, 1987</releaseDate>
|
||||
<disk id="disk01" size="368640" chs="40:2:9" dir="archive/" href="/apps/pc/1987/thinktank/disk.json" md5="94053339672452fba42da85481893d68" md5json="bd39020bff244db9af3ac9eb656e7878">
|
||||
<disk id="disk01" size="368640" chs="40:2:9" dir="archive/" href="/apps/pcx86/1987/thinktank/disk.json" md5="94053339672452fba42da85481893d68" md5json="bd39020bff244db9af3ac9eb656e7878">
|
||||
<name>ThinkTank (1987)</name>
|
||||
<file size="6" time="2012-11-20 15:29:40" attr="0x20" md5="50b68f3f99eda119c661b2b50cb9f4de">AUTOEXEC.BAT</file>
|
||||
<file size="8192" time="2012-11-20 15:29:35" attr="0x20" md5="3355afbc122700f13647ee0d1bbf9ed7">READ_ME.DB</file>
|
||||
|
|
@ -49,5 +49,5 @@
|
|||
<file size="512" time="2012-11-20 15:32:46" attr="0x20" md5="05f711f1c096454617eb18b31a48905f" dir="TMPLATES/">UPGRADE.TXT</file>
|
||||
<file size="3072" time="2012-11-20 15:32:11" attr="0x20" md5="20ded226630726d7b26d0ec7832753d0" dir="TMPLATES/">WTMEASUR.TXT</file>
|
||||
</disk>
|
||||
<machine href="/devices/pc/machine/5160/cga/640kb/machine.xml" state="/apps/pc/1987/thinktank/state.json"/>
|
||||
<machine href="/devices/pcx86/machine/5160/cga/640kb/machine.xml" state="/apps/pcx86/1987/thinktank/state.json"/>
|
||||
</manifest>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Applications (1988)
|
||||
permalink: /apps/pc/1988/
|
||||
permalink: /apps/pcx86/1988/
|
||||
redirect_from:
|
||||
- /apps/pc/1988/
|
||||
---
|
||||
|
||||
IBM PC Applications (1988)
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: The Dungeons of Moria (1988)
|
||||
permalink: /apps/pc/1988/moria/
|
||||
permalink: /apps/pcx86/1988/moria/
|
||||
redirect_from:
|
||||
- /apps/pc/1988/moria/
|
||||
---
|
||||
|
||||
The Dungeons of Moria (1988)
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/manifest.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/manifest.xsl"?>
|
||||
<manifest type="software">
|
||||
<title>The Dungeons of Moria</title>
|
||||
<version>4.872</version>
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
<name>D. G. Kneller</name>
|
||||
<desc>MSDOS port</desc>
|
||||
</author>
|
||||
<disk id="disk01" size="1228800" chs="80:2:15" dir="archive/" href="/apps/pc/1988/moria/disk.json" md5="7bb84a7ac4e9b03e8cd1e6753b1359fb" md5json="7630122397a57af2d0c767141af3817c">
|
||||
<disk id="disk01" size="1228800" chs="80:2:15" dir="archive/" href="/apps/pcx86/1988/moria/disk.json" md5="7bb84a7ac4e9b03e8cd1e6753b1359fb" md5json="7630122397a57af2d0c767141af3817c">
|
||||
<name>Moria 4.872 (1988)</name>
|
||||
<file size="11143" time="1988-11-01 00:00:00" attr="0x20" md5="dae278b77133f32949d0e8940f944c0d">CONFIG.DOC</file>
|
||||
<file size="91154" time="1991-06-01 14:50:02" attr="0x20" md5="66593e83a2aa3870d7a9e8b43079ce42">GOD</file>
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Applications (1992)
|
||||
permalink: /apps/pc/1992/
|
||||
permalink: /apps/pcx86/1992/
|
||||
redirect_from:
|
||||
- /apps/pc/1992/
|
||||
---
|
||||
|
||||
IBM PC Applications (1992)
|
||||
17
apps/pcx86/1992/moria/README.md
Normal file
17
apps/pcx86/1992/moria/README.md
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
layout: page
|
||||
title: "The Dungeons of Moria (1992)"
|
||||
permalink: /apps/pcx86/1992/moria/
|
||||
redirect_from:
|
||||
- /apps/pc/1992/moria/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160
|
||||
config: /devices/pcx86/machine/5160/cga/640kb/machine.xml
|
||||
state: /apps/pcx86/1992/moria/state.json
|
||||
---
|
||||
|
||||
The Dungeons of Moria (1992)
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5160" %}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/manifest.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/manifest.xsl"?>
|
||||
<manifest type="software">
|
||||
<title>The Dungeons of Moria</title>
|
||||
<version>5.5</version>
|
||||
|
|
@ -92,7 +92,7 @@
|
|||
<name>Ben Schreiber</name>
|
||||
<desc>Macintosh port for Think C</desc>
|
||||
</contributor>
|
||||
<disk id="disk01" size="368640" chs="40:2:9" dir="archive/bin/" href="/apps/pc/1992/moria/disk.json" md5="da0023280238bc2ee9053ad2b9548816" md5json="1473be159bb5f9001db31c06b3a366c1">
|
||||
<disk id="disk01" size="368640" chs="40:2:9" dir="archive/bin/" href="/apps/pcx86/1992/moria/disk.json" md5="da0023280238bc2ee9053ad2b9548816" md5json="1473be159bb5f9001db31c06b3a366c1">
|
||||
<name>Moria 5.5 (1992)</name>
|
||||
<file size="6074" time="1992-11-01 23:15:36" attr="0x20" md5="078aca44b845ee8a787a324c1e827200">EXP.DOC</file>
|
||||
<file size="2560" time="1992-11-01 23:15:36" attr="0x20" md5="a5c8620efd0dc841956f9cdc2e46220a">MORIA.CNF</file>
|
||||
|
|
@ -108,5 +108,5 @@
|
|||
<file size="2193" time="1992-11-01 23:15:44" attr="0x20" md5="cac18aa1420a33b231295f468c360f96">VERSION.HLP</file>
|
||||
<file size="423" time="1992-11-01 23:15:44" attr="0x20" md5="07fdaebf594f9b34d54544c2b6aa36d8">WELCOME.HLP</file>
|
||||
</disk>
|
||||
<machine href="/devices/pc/machine/5160/cga/640kb/machine.xml" state="/apps/pc/1992/moria/state.json"/>
|
||||
<machine href="/devices/pcx86/machine/5160/cga/640kb/machine.xml" state="/apps/pcx86/1992/moria/state.json"/>
|
||||
</manifest>
|
||||
1
apps/pcx86/1992/moria/state.json
Normal file
1
apps/pcx86/1992/moria/state.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Application Archive
|
||||
permalink: /apps/pc/
|
||||
permalink: /apps/pcx86/
|
||||
redirect_from:
|
||||
- /apps/pc/
|
||||
---
|
||||
|
||||
IBM PC Application Archive
|
||||
|
|
@ -15,41 +17,41 @@ Below are selected demos of classic IBM PC applications running on [PCjs](/docs/
|
|||
* [ThinkTank (1987)](1987/thinktank/)
|
||||
* [The Dungeons of Moria (1992)](1992/moria/)
|
||||
|
||||
A list of all the software available to PCjs machines can be found in the [IBM PC Disk Library](/disks/pc/).
|
||||
A list of all the software available to PCjs machines can be found in the [IBM PC Disk Library](/disks/pcx86/).
|
||||
|
||||
### Creating IBM PC Application Demos
|
||||
|
||||
Demos in our [Application Archives](/apps/) combine [Software Application Manifests](/apps/#software-application-manifests)
|
||||
with [Machine Configurations](/devices/pc/machine/).
|
||||
with [Machine Configurations](/devices/pcx86/machine/).
|
||||
|
||||
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):
|
||||
|
||||
<machine href="/devices/pc/machine/5150/mda/64kb/machine.xml"/>
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.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
|
||||
cd apps/pcx86/1981/visicalc
|
||||
node ../../../../modules/diskdump/bin/diskdump --path="archive/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 "archive" subdirectory,
|
||||
and "README.md" from the "archive" parent directory) and automatically added that disk image to the demo's [manifest](1981/visicalc/manifest.xml):
|
||||
|
||||
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pc/1981/visicalc/disk.json" md5="61494f998d5fb0e31e7b8bd99f1cc588" md5json="3ad82ed815725e6bd786f92a4714e84f">
|
||||
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pcx86/1981/visicalc/disk.json" md5="61494f998d5fb0e31e7b8bd99f1cc588" md5json="3ad82ed815725e6bd786f92a4714e84f">
|
||||
<file size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>
|
||||
<file dir="../">README.md</file>
|
||||
</disk>
|
||||
|
||||
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):
|
||||
Now that the manifest contains a disk image, we were able to add the manifest to our set of [Sample Disks](/disks/pcx86/samples.xml):
|
||||
|
||||
<manifest ref="/apps/pc/1981/visicalc/manifest.xml" disk="*"/>
|
||||
<manifest ref="/apps/pcx86/1981/visicalc/manifest.xml" disk="*"/>
|
||||
|
||||
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
|
||||
http://localhost:8088/devices/pcx86/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:
|
||||
|
|
@ -59,7 +61,7 @@ clear the Debugger's output window, and typed the following Debugger command:
|
|||
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):
|
||||
|
||||
<machine href="/devices/pc/machine/5150/mda/64kb/machine.xml" state="/apps/pc/1981/visicalc/state.json"/>
|
||||
<machine href="/devices/pcx86/machine/5150/mda/64kb/machine.xml" state="/apps/pcx86/1981/visicalc/state.json"/>
|
||||
|
||||
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.
|
||||
|
|
@ -15,7 +15,7 @@ All PCjs machines are built from the following collections of devices:
|
|||
|
||||
* 6502-based Devices (e.g., [Challenger 1P](c1p/machine/))
|
||||
* [8080-based Devices](pc8080/) (e.g., [Space Invaders](pc8080/machine/invaders/))
|
||||
* [8086-based Devices](pc/) (e.g., [IBM PC, including 80286 and 80386-based compatibles](pc/machine/))
|
||||
* [8086-based Devices](pcx86/) (e.g., [IBM PC, including 80286 and 80386-based compatibles](pcx86/machine/))
|
||||
|
||||
These devices are user-installable components that you would typically find in a real personal computer,
|
||||
such as keyboards, disk controllers with one or more disk drives, video cards, etc.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.22.1/machine.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.23.0/machine.xsl"?>
|
||||
<machine id="c1psim" class="c1p" border="1" width="100%" padbottom="8px" background="#FAEBD7" style="padding-bottom:8px">
|
||||
<name>OSI Challenger 1P (32Kb) with Disk Support</name>
|
||||
<computer id="c1p" name="Challenger 1P">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.22.1/machine.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.23.0/machine.xsl"?>
|
||||
<machine id="c1pAll" class="c1p" border="1" width="100%" padbottom="8px" background="#FAEBD7" style="padding-bottom:8px">
|
||||
<name>OSI Challenger 1P (8Kb, Additional Software)</name>
|
||||
<computer id="c1p" name="Challenger 1P">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.22.1/machine.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.23.0/machine.xsl"?>
|
||||
<machine id="c1pAll" class="c1p" border="1" pos="center" background="#FAEBD7" style="padding-bottom:8px">
|
||||
<name>OSI Challenger 1P (8Kb, Additional Software)</name>
|
||||
<computer id="c1p" name="Challenger 1P">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.22.1/outline.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.23.0/outline.xsl"?>
|
||||
<outline>
|
||||
<title>Challenger 1P (8Kb) "Server Array"</title>
|
||||
<machine id="OSI1" ref="/devices/c1p/machine/8kb/small/machine.xml"/>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.22.1/machine.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.23.0/machine.xsl"?>
|
||||
<machine id="c1p8kb" class="c1p" border="1" width="100%" background="#FAEBD7" style="padding-bottom:8px">
|
||||
<name>OSI Challenger 1P (8Kb) with Debugger</name>
|
||||
<computer id="c1p" name="Challenger 1P">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.22.1/machine.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.23.0/machine.xsl"?>
|
||||
<machine id="c1pLarge" class="c1p" border="1" pos="center" background="#FAEBD7" style="padding-bottom:8px">
|
||||
<name pos="center">OSI Challenger 1P (circa 1978)</name>
|
||||
<computer id="c1p" name="Challenger 1P">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.22.1/machine.xsl"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/c1pjs/1.23.0/machine.xsl"?>
|
||||
<machine id="c1pSmall" class="c1p" border="1" width="272px" pos="left" padding="16px" background="#FAEBD7" style="padding-bottom:8px">
|
||||
<computer id="c1p" name="Challenger 1P">
|
||||
<module type="cpu" refid="cpu6502" start="0x0000" end="0xffff"/>
|
||||
|
|
|
|||
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5150" class="pc" border="1" width="980px" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC (Model 5150), CGA, 64K</name>
|
||||
<computer id="pc-cga-64k" name="IBM PC" state="/devices/pc/machine/5150/cga/64kb/donkey/state.json"/>
|
||||
<ram id="ramLow" addr="0x00000"/>
|
||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pc/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pc/video/ibm/cga/ibm-cga.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/samples.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autostart="true"/>
|
||||
<keyboard ref="/devices/pc/keyboard/us83-buttons-minimal.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pc/panel/wide.xml"/>
|
||||
<chipset ref="/devices/pc/chipset/5150-cga-max.xml"/>
|
||||
</machine>
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5150" class="pc" border="1" width="1000px" pos="center" background="white">
|
||||
<name>IBM PC (Model 5150), CGA, 64K</name>
|
||||
<computer id="pc-cga-64k" name="IBM PC"/>
|
||||
<cpu id="cpu8088" model="8088"/>
|
||||
<ram id="ramLow" addr="0x00000"/>
|
||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pc/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pc/video/ibm/cga/ibm-cga.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/samples.xml"/>
|
||||
<keyboard ref="/devices/pc/keyboard/us83-softkeys.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pc/panel/wide.xml"/>
|
||||
<chipset ref="/devices/pc/chipset/5150-cga-max.xml"/>
|
||||
</machine>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC XT (Model 5160) Machines
|
||||
permalink: /devices/pc/machine/5160/
|
||||
---
|
||||
|
||||
IBM PC XT (Model 5160) Machines
|
||||
---
|
||||
|
||||
Our IBM PC XT 5160 configurations include:
|
||||
|
||||
* [IBM PC XT with Monochrome Display](/devices/pc/machine/5160/mda/)
|
||||
* [IBM PC XT with Color Display](/devices/pc/machine/5160/cga/)
|
||||
* [IBM PC XT with Enhanced Color Display](/devices/pc/machine/5160/ega/)
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC XT (Model 5160) with Enhanced Color Display
|
||||
permalink: /devices/pc/machine/5160/ega/
|
||||
---
|
||||
|
||||
IBM PC XT with Enhanced Color Graphics (EGA) Display
|
||||
---
|
||||
|
||||
All our Enhanced Color Graphics (EGA) configurations of the IBM PC XT (Model 5160) are located here, including:
|
||||
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) with EGA Display](/devices/pc/machine/5160/ega/256kb/) ([Debugger](/devices/pc/machine/5160/ega/256kb/debugger/))
|
||||
* [IBM PC XT (640Kb, 10Mb Drive) with EGA Display](/devices/pc/machine/5160/ega/640kb/) ([Debugger](/devices/pc/machine/5160/ega/640kb/debugger/))
|
||||
* [IBM PC XT (640Kb, 10Mb Drive) Machine Array with EGA Displays](/devices/pc/machine/5160/ega/640kb/array/)
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5160" class="pc" border="1" width="740px" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive</name>
|
||||
<computer id="xt188-mda-256k" name="IBM PC XT"/>
|
||||
<cpu id="cpu80188" model="80188"/>
|
||||
<ram id="ramLow" addr="0x00000" test="false"/>
|
||||
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pc/hdc/ibm-xebec-1982.json"/>
|
||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pc/rom/5160/basic/BASIC110.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pc/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
|
||||
<video ref="/devices/pc/video/ibm/mda/ibm-mda.xml"/>
|
||||
<fdc id="fdcNEC" pos="left" padleft="8px" padbottom="8px" automount='{A:{name:"PC-DOS 2.00 (Disk 1)",path:"/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json"}, B:{name:"Executive Suite (1982)",path:"/apps/pc/1982/esuite/disk.json"}}'>
|
||||
<control type="list" binding="listDrives"/>
|
||||
<control type="list" binding="listDisks">
|
||||
<manifest ref="/disks/pc/dos/ibm/1.00/manifest.xml" disk="*"/>
|
||||
<manifest ref="/disks/pc/dos/ibm/1.10/manifest.xml" disk="*"/>
|
||||
<manifest ref="/disks/pc/dos/ibm/2.00/manifest.xml" disk="*"/>
|
||||
<manifest ref="/disks/pc/games/microsoft/adventure/manifest.xml" disk="*"/>
|
||||
<manifest ref="/apps/pc/1981/visicalc/manifest.xml" disk="*"/>
|
||||
<manifest ref="/apps/pc/1982/esuite/manifest.xml" disk="*"/>
|
||||
</control>
|
||||
<control type="button" binding="loadDrive">Load</control>
|
||||
<control type="button" binding="saveDrive" padright="8px">Save</control>
|
||||
<control type="description" binding="descDisk" padright="8px"/>
|
||||
<control type="file" binding="mountDrive"/>
|
||||
</fdc>
|
||||
<keyboard ref="/devices/pc/keyboard/us83-buttons-minimal.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pc/panel/default.xml"/>
|
||||
<chipset id="chipset" model="5160" sw1="01000001"/>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
|
||||
</machine>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5170" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display</name>
|
||||
<computer id="at-mda-640k" name="IBM PC AT" buswidth="24"/>
|
||||
<cpu id="cpu286" model="80286"/>
|
||||
<ram id="ramLow" addr="0x00000" size="0xa0000"/>
|
||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1985-11-15/ATBIOS-REV3.json"/>
|
||||
<video ref="/devices/pc/video/ibm/cga/ibm-cga.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml" automount='{A: {name: "PC-DOS 3.00 (Disk 1)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK1.json"}, B: {name: "PC-DOS 3.00 (Disk 2)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK2.json"}}'/>
|
||||
<keyboard ref="/devices/pc/keyboard/us84-buttons-functions.xml"/>
|
||||
<chipset id="chipset" model="5170" floppies="[1200,1200]" monitor="color"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
<mouse serial="com1"/>
|
||||
</machine>
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC AT (Model 5170) with Enhanced Color Display
|
||||
permalink: /devices/pc/machine/5170/ega/1152kb/
|
||||
redirect_from:
|
||||
- /configs/pc/machines/5170/ega/1152kb/
|
||||
---
|
||||
|
||||
IBM PC AT with 1Mb RAM and Enhanced Color Graphics (EGA) Display
|
||||
---
|
||||
|
||||
* [IBM PC AT (6Mhz, 1Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/1152kb/rev1/) ([Debugger](/devices/pc/machine/5170/ega/1152kb/rev1/debugger/))
|
||||
* [IBM PC AT (8Mhz, 1Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/1152kb/rev3/) ([Debugger](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/),[Backtrack](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/backtrack/))
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5170" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name>IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk</name>
|
||||
<computer id="at-ega-2048k" name="IBM PC AT" buswidth="24"/>
|
||||
<cpu id="cpu286" model="80286" cycles="8000000" autostart="true"/>
|
||||
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="ROM BIOS memory test has been disabled"/>
|
||||
<ram id="ramExt" addr="0x100000" size="0x160000" comment=""/>
|
||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1985-11-15/ATBIOS-REV3.json"/>
|
||||
<video ref="/devices/pc/video/ibm/ega/1984-09-13/128kb-lockfs.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml" automount='{A:{name:"PC-DOS 3.30 (Disk 1)",path:"/disks/pc/dos/ibm/3.30/PCDOS330-DISK1.json"}, B:{name:"PC-DOS 3.30 (Disk 2)",path:"/disks/pc/dos/ibm/3.30/PCDOS330-DISK2.json"}}'/>
|
||||
<hdc ref="/disks/pc/fixed/20mb/pcdos330-empty.xml"/>
|
||||
<keyboard ref="/devices/pc/keyboard/us84-buttons-arrows.xml"/>
|
||||
<chipset id="chipset" model="5170" floppies="[1440,1200]"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
<mouse serial="com1"/>
|
||||
</machine>
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5170" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC AT, 128K EGA, 640Kb RAM</name>
|
||||
<computer id="at-ega-640k" name="IBM PC AT" buswidth="24"/>
|
||||
<cpu id="cpu286" model="80286"/>
|
||||
<ram id="ramLow" addr="0x00000" size="0xa0000"/>
|
||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1984-01-10/ATBIOS-REV1.json"/>
|
||||
<video ref="/devices/pc/video/ibm/ega/1984-09-13/128kb-autolockfs.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml" automount='{A: {name: "PC-DOS 3.00 (Disk 1)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK1.json"}, B: {name: "PC-DOS 3.00 (Disk 2)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK2.json"}}'/>
|
||||
<keyboard ref="/devices/pc/keyboard/us84-buttons-functions.xml"/>
|
||||
<debugger id="debugger" messages="fault" commands=""/>
|
||||
<panel ref="/devices/pc/panel/wide.xml"/>
|
||||
<chipset id="chipset" model="5170" floppies="[1200,1200]"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
<serial id="com2" adapter="2" binding="print"/>
|
||||
<mouse serial="com1"/>
|
||||
</machine>
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5170" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC AT, 128K EGA, 640Kb RAM</name>
|
||||
<computer id="at-ega-640k" name="IBM PC AT" buswidth="24"/>
|
||||
<cpu id="cpu286" model="80286"/>
|
||||
<ram id="ramLow" addr="0x00000" size="0xa0000"/>
|
||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1984-01-10/ATBIOS-REV1.json"/>
|
||||
<video ref="/devices/pc/video/ibm/ega/1984-09-13/128kb-autolockfs.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml" pos="right" automount='{A: {name: "MS-DOS 4.00 (Disk 1)", path: "/disks/pc/dos/microsoft/4.00/MSDOS400-DISK1.json"}}'/>
|
||||
<keyboard ref="/devices/pc/keyboard/us83-buttons-minimal.xml"/>
|
||||
<chipset id="chipset" model="5170" floppies="[1200,1200]"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
<mouse serial="com1"/>
|
||||
</machine>
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC AT (Model 5170) with Enhanced Color Display
|
||||
permalink: /devices/pc/machine/5170/ega/
|
||||
redirect_from:
|
||||
- /configs/pc/machines/5170/ega/
|
||||
---
|
||||
|
||||
IBM PC AT with Enhanced Color Graphics (EGA) Display
|
||||
---
|
||||
|
||||
All our Enhanced Color Graphics (EGA) configurations of the IBM PC AT (Model 5170) are located here, including:
|
||||
|
||||
* [IBM PC AT (6Mhz, 640Kb, Dual Floppy) with EGA Display](/devices/pc/machine/5170/ega/640kb/rev1/) ([Debugger](/devices/pc/machine/5170/ega/640kb/rev1/debugger/))
|
||||
* [IBM PC AT (6Mhz, 1Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/1152kb/rev1/) ([Debugger](/devices/pc/machine/5170/ega/1152kb/rev1/debugger/))
|
||||
* [IBM PC AT (8Mhz, 1Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/1152kb/rev3/) ([Debugger](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/),[Backtrack](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/backtrack/))
|
||||
* [IBM PC AT (8Mhz, 2Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/2048kb/rev3/) ([Debugger](/devices/pc/machine/5170/ega/2048kb/rev3/debugger/),[Backtrack](/devices/pc/machine/5170/ega/2048kb/rev3/debugger/backtrack/))
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5170" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Monochrome Display</name>
|
||||
<computer id="at-mda-640k" name="IBM PC AT" buswidth="24"/>
|
||||
<cpu id="cpu286" model="80286"/>
|
||||
<ram id="ramLow" addr="0x00000" size="0xa0000"/>
|
||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1985-11-15/ATBIOS-REV3.json"/>
|
||||
<video ref="/devices/pc/video/ibm/mda/ibm-mda.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml" automount='{A: {name: "PC-DOS 3.00 (Disk 1)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK1.json"}, B: {name: "PC-DOS 3.00 (Disk 2)", path: "/disks/pc/dos/ibm/3.00/PCDOS300-DISK2.json"}}'/>
|
||||
<keyboard ref="/devices/pc/keyboard/us84-buttons-functions.xml"/>
|
||||
<chipset id="chipset" model="5170" floppies="[1200,1200]" monitor="mono"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
<mouse serial="com1"/>
|
||||
</machine>
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5170" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC AT (8Mhz, 2Mb, 20Mb Hard Disk) with VGA Display</name>
|
||||
<computer id="at-vga-2048k" name="IBM PC AT" buswidth="24"/>
|
||||
<ram id="ramLow" addr="0x00000" test="true" size="0xa0000" comment="ROM BIOS memory test has NOT been disabled"/>
|
||||
<ram id="ramExt" addr="0x100000" size="0x160000" comment=""/>
|
||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1985-11-15/ATBIOS-REV3.json"/>
|
||||
<video ref="/devices/pc/video/ibm/vga/1986-10-27/256kb-autolockfs.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml" automount='{A:{name:"PC-DOS 3.30 (Disk 1)",path:"/disks/pc/dos/ibm/3.30/PCDOS330-DISK1.json"}, B:{name:"PC-DOS 3.30 (Disk 2)",path:"/disks/pc/dos/ibm/3.30/PCDOS330-DISK2.json"}}'/>
|
||||
<keyboard ref="/devices/pc/keyboard/us84-buttons-arrows.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pc/panel/wide.xml"/>
|
||||
<hdc ref="/disks/pc/fixed/20mb/pcdos330-empty.xml"/>
|
||||
<cpu id="cpu286" model="80286" cycles="8000000"/>
|
||||
<chipset id="chipset" model="5170" floppies="[1440,1200]"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
<serial id="com2" adapter="2" binding="print"/>
|
||||
<mouse serial="com1"/>
|
||||
</machine>
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="ibm5170" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">IBM PC AT (8Mhz, 4Mb, 20Mb Hard Disk) with VGA Display</name>
|
||||
<computer id="at-vga-2048k" name="IBM PC AT" buswidth="24"/>
|
||||
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="ROM BIOS memory test has been disabled"/>
|
||||
<ram id="ramExt" addr="0x100000" size="0x360000" comment=""/>
|
||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/1985-11-15/ATBIOS-REV3.json"/>
|
||||
<video ref="/devices/pc/video/ibm/vga/1986-10-27/256kb-autolockfs.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml" automount='{A:{name:"PC-DOS 3.30 (Disk 1)",path:"/disks/pc/dos/ibm/3.30/PCDOS330-DISK1.json"}, B:{name:"PC-DOS 3.30 (Disk 2)",path:"/disks/pc/dos/ibm/3.30/PCDOS330-DISK2.json"}}'/>
|
||||
<keyboard ref="/devices/pc/keyboard/us84-buttons-arrows.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pc/panel/wide.xml"/>
|
||||
<hdc ref="/disks/pc/fixed/20mb/pcdos330-empty.xml"/>
|
||||
<cpu id="cpu286" model="80286" cycles="8000000"/>
|
||||
<chipset id="chipset" model="5170" floppies="[1440,1200]"/>
|
||||
<serial id="com1" adapter="1"/>
|
||||
<serial id="com2" adapter="2" binding="print"/>
|
||||
<mouse serial="com1"/>
|
||||
</machine>
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC Machine Configurations
|
||||
permalink: /devices/pc/machine/
|
||||
redirect_from:
|
||||
- /configs/pc/machines/
|
||||
---
|
||||
|
||||
IBM PC Machine Configurations
|
||||
---
|
||||
|
||||
PCjs supports these early [IBM PC Machines](#ibm-pc-machines):
|
||||
|
||||
* [IBM PC](/devices/pc/machine/5150/) (Model 5150)
|
||||
* [IBM PC XT](/devices/pc/machine/5160/) (Model 5160)
|
||||
* [IBM PC AT](/devices/pc/machine/5170/) (Model 5170)
|
||||
|
||||
PCjs also supports IBM PC-compatibles, such as:
|
||||
|
||||
* [AT&T](/devices/pc/machine/att/) ([AT&T 6300](/devices/pc/machine/att/6300/))
|
||||
* [Columbia Data Products](/devices/pc/machine/cdp/) ([MPC 1600](/devices/pc/machine/cdp/mpc1600/cga/640kb/))
|
||||
* [COMPAQ](/devices/pc/machine/compaq/) ([DeskPro 386](/devices/pc/machine/compaq/deskpro386/))
|
||||
* [Zenith Data Systems](/devices/pc/machine/zenith/) ([Z-150](/devices/pc/machine/zenith/z150/cga/640kb/))
|
||||
|
||||
Learn more about the [Devices](/devices/) used to build all our machines, such as the 6502-based
|
||||
[Ohio Scientific Challenger 1P](/devices/c1p/machine/).
|
||||
|
||||
### Ready-To-Run App Demos
|
||||
|
||||
Machines from our [IBM PC Application Archive](/apps/pc/):
|
||||
|
||||
* [VisiCalc (1981)](/apps/pc/1981/visicalc/)
|
||||
* [Executive Suite (1982)](/apps/pc/1982/esuite/)
|
||||
* [Rogue (1985)](/apps/pc/1985/rogue/)
|
||||
* [ThinkTank (1987)](/apps/pc/1987/thinktank/)
|
||||
* [The Dungeons of Moria (1992)](/apps/pc/1992/moria/)
|
||||
|
||||
### Ready-To-Boot Disk Demos
|
||||
|
||||
Selected machines from our [IBM PC Disk Library](/disks/pc/):
|
||||
|
||||
* [CP/M-86 v1.1B](/disks/pc/cpm/1.1b/)
|
||||
* [PC-DOS 1.00](/disks/pc/dos/ibm/1.00/)
|
||||
* [IBM PC Diagnostics](/disks/pc/diags/ibm/2.20/)
|
||||
* [Infocom Zork I](/disks/pc/games/infocom/zork1/)
|
||||
* [Multitasking MS-DOS](/disks/pc/dos/microsoft/4.0M/)
|
||||
* [Microsoft Windows 1.01](/disks/pc/windows/1.01/)
|
||||
* [Microsoft Windows 95](/disks/pc/windows/win95/4.00.950/)
|
||||
* [OS/2 Prototype Disks](/disks/pc/os2/misc/)
|
||||
|
||||
### IBM PC Machines
|
||||
|
||||
Shortcuts to most of the preconfigured IBM PC machines in the project are listed below. Some of them include
|
||||
a predefined state, which automatically restores the machine and the specified application to an initial
|
||||
state, while others include a hard disk with preinstalled software.
|
||||
|
||||
However, most simply boot an early version of DOS, and the hard disk, if any, will generally be unformatted.
|
||||
From there, you can load other disks from the [Disk Library](/disks/pc/) (or mount your own disks) and install
|
||||
other software.
|
||||
|
||||
#### [IBM PC 5150 Machines](/devices/pc/machine/5150/)
|
||||
|
||||
* [IBM PC (64Kb) with Monochrome Display](/devices/pc/machine/5150/mda/64kb/) ([Debugger](/devices/pc/machine/5150/mda/64kb/debugger/))
|
||||
* [IBM PC (64Kb) with Monochrome Display and Soft Keyboard (Debugger)](/devices/pc/machine/5150/mda/64kb/softkbd/)
|
||||
* [IBM PC (64Kb) with Color Display](/devices/pc/machine/5150/cga/64kb/donkey/) ([Debugger](/devices/pc/machine/5150/cga/64kb/donkey/debugger/))
|
||||
* [IBM PC (64Kb) with Color Display and Soft Keyboard](/devices/pc/machine/5150/cga/64kb/softkbd/)
|
||||
* [IBM PC (384Kb) with Color Display and Soft Keyboard (Debugger)](/devices/pc/machine/5150/cga/384kb/softkbd/)
|
||||
* [IBM PC (64Kb) with Dual Displays (Monochrome and Color)](/devices/pc/machine/5150/dual/64kb/)
|
||||
|
||||
#### [IBM PC XT 5160 Machines](/devices/pc/machine/5160/)
|
||||
|
||||
* [IBM PC XT (64Kb, 10Mb Drive) with Monochrome Display](/devices/pc/machine/5160/mda/64kb/softkbd/)
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) with Monochrome Display](/devices/pc/machine/5160/mda/256kb/) ([Debugger](/devices/pc/machine/5160/mda/256kb/debugger/))
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display](/devices/pc/machine/5160/cga/256kb/demo/) ([Debugger](/devices/pc/machine/5160/cga/256kb/demo/debugger/))
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pc/machine/5160/cga/256kb/softkbd/)
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display running Windows 1.01](/devices/pc/machine/5160/cga/256kb/win101/) ([Debugger](/devices/pc/machine/5160/cga/256kb/win101/debugger/))
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pc/machine/5160/cga/256kb/win101/softkbd/)
|
||||
* [IBM PC XT (512Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pc/machine/5160/cga/512kb/win101/softkbd/)
|
||||
* [IBM PC XT (640Kb, 10Mb Drive) with Color Display](/devices/pc/machine/5160/cga/640kb/) ([Debugger](/devices/pc/machine/5160/cga/640kb/debugger/))
|
||||
* [IBM PC XT (640Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pc/machine/5160/cga/640kb/softkbd/)
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) with EGA Display](/devices/pc/machine/5160/ega/256kb/) ([Debugger](/devices/pc/machine/5160/ega/256kb/debugger/))
|
||||
* [IBM PC XT (640Kb, 10Mb Drive) with EGA Display](/devices/pc/machine/5160/ega/640kb/) ([Debugger](/devices/pc/machine/5160/ega/640kb/debugger/))
|
||||
* [IBM PC XT (256Kb, 10Mb Drive) Machine Array with CGA Displays](/devices/pc/machine/5160/cga/256kb/array/)
|
||||
* [IBM PC XT (640Kb, 10Mb Drive) Machine Array with EGA Displays](/devices/pc/machine/5160/ega/640kb/array/)
|
||||
|
||||
#### [IBM PC AT 5170 Machines](/devices/pc/machine/5170/)
|
||||
|
||||
* [IBM PC AT (8Mhz, 640Kb, Dual Floppy) with MDA Display](/devices/pc/machine/5170/mda/640kb/rev3/) ([Debugger](/devices/pc/machine/5170/mda/640kb/rev3/debugger/))
|
||||
* [IBM PC AT (8Mhz, 640Kb, Dual Floppy) with CGA Display](/devices/pc/machine/5170/cga/640kb/rev3/) ([Debugger](/devices/pc/machine/5170/cga/640kb/rev3/debugger/))
|
||||
* [IBM PC AT (6Mhz, 640Kb, Dual Floppy) with EGA Display](/devices/pc/machine/5170/ega/640kb/rev1/) ([Debugger](/devices/pc/machine/5170/ega/640kb/rev1/debugger/))
|
||||
* [IBM PC AT (6Mhz, 1Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/1152kb/rev1/) ([Debugger)](/devices/pc/machine/5170/ega/1152kb/rev1/debugger/))
|
||||
* [IBM PC AT (8Mhz, 1Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/1152kb/rev3/) ([Debugger](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/),[Backtrack](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/backtrack/))
|
||||
* [IBM PC AT (8Mhz, 2Mb, 20Mb Hard Disk) with EGA Display](/devices/pc/machine/5170/ega/2048kb/rev3/) ([Debugger](/devices/pc/machine/5170/ega/2048kb/rev3/debugger/),[Backtrack](/devices/pc/machine/5170/ega/2048kb/rev3/debugger/backtrack/))
|
||||
* [IBM PC AT (8Mhz, 2Mb, 20Mb Hard Disk) with VGA Display](/devices/pc/machine/5170/vga/2048kb/) ([Debugger](/devices/pc/machine/5170/vga/2048kb/debugger/))
|
||||
* [IBM PC AT (8Mhz, 4Mb, 20Mb Hard Disk) with VGA Display](/devices/pc/machine/5170/vga/4096kb/) ([Debugger](/devices/pc/machine/5170/vga/4096kb/debugger/))
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.22.1/machine.xsl"?>
|
||||
<machine id="att6300" class="pc" border="1" pos="center" background="#FAEBD7">
|
||||
<name pos="center">AT&T Personal Computer 6300 with Color Display</name>
|
||||
<computer id="att6300-640k" name="AT&T 6300"/>
|
||||
<cpu id="cpu8086" model="8086" cycles="8000000"/>
|
||||
<ram id="ramLow" addr="0x00000" size="0xa0000"/>
|
||||
<rom ref="/devices/pc/rom/att/6300/bios-143.xml"/>
|
||||
<video ref="/devices/pc/video/cdp/cga/cdp-cga.xml"/>
|
||||
<fdc ref="/disks/pc/compiled/library.xml"/>
|
||||
<keyboard ref="/devices/pc/keyboard/us83-buttons-minimal.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pc/panel/wide.xml"/>
|
||||
<chipset ref="/devices/pc/chipset/att6300-cga-max.xml"/>
|
||||
</machine>
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: AT&T Machines
|
||||
permalink: /devices/pc/machine/att/
|
||||
---
|
||||
|
||||
AT&T Machines
|
||||
---
|
||||
|
||||
* [AT&T Personal Computer 6300](/devices/pc/machine/att/6300/)
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue