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/
|
ecp/
|
||||||
projects/
|
projects/
|
||||||
private/
|
private/
|
||||||
|
restricted/
|
||||||
src/
|
src/
|
||||||
tmp/
|
tmp/
|
||||||
|
unlisted/
|
||||||
|
|
|
||||||
86
Gruntfile.js
86
Gruntfile.js
|
|
@ -108,7 +108,7 @@ module.exports = function(grunt) {
|
||||||
* "<%= pkg.name %>"
|
* "<%= pkg.name %>"
|
||||||
*
|
*
|
||||||
* which would be fine for most of my needs, but some of the information I need
|
* 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.
|
* 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} name
|
||||||
* @property {string} version
|
* @property {string} version
|
||||||
* @property {Array.<string>} c1pJSFiles
|
* @property {Array.<string>} c1pJSFiles
|
||||||
* @property {Array.<string>} pcJSFiles
|
* @property {Array.<string>} pcX86Files
|
||||||
* @property {Array.<string>} pc8080Files
|
* @property {Array.<string>} pc8080Files
|
||||||
* @property {Array.<string>} closureCompilerExterns
|
* @property {Array.<string>} closureCompilerExterns
|
||||||
*/
|
*/
|
||||||
var pkg = grunt.file.readJSON("package.json");
|
var pkg = grunt.file.readJSON("package.json");
|
||||||
|
|
||||||
var tmpC1Pjs = "./tmp/c1pjs/" + pkg.version + "/c1p.js";
|
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";
|
var tmpPC8080 = "./tmp/pc8080/" + pkg.version + "/pc8080.js";
|
||||||
|
|
||||||
grunt.initConfig({
|
grunt.initConfig({
|
||||||
|
|
@ -153,18 +153,18 @@ module.exports = function(grunt) {
|
||||||
src: pkg.c1pJSFiles,
|
src: pkg.c1pJSFiles,
|
||||||
dest: "./versions/c1pjs/" + pkg.version + "/c1p-dbg.js"
|
dest: "./versions/c1pjs/" + pkg.version + "/c1p-dbg.js"
|
||||||
},
|
},
|
||||||
"pc.js": {
|
"pcx86.js": {
|
||||||
src: pkg.pcJSFiles,
|
src: pkg.pcX86Files,
|
||||||
dest: "./versions/pcjs/" + pkg.version + "/pc.js",
|
dest: "./versions/pcx86/" + pkg.version + "/pcx86.js",
|
||||||
options: {
|
options: {
|
||||||
process: function(src, filepath) {
|
process: function(src, filepath) {
|
||||||
return (path.basename(filepath) == "debugger.js"? "" : src);
|
return (path.basename(filepath) == "debugger.js"? "" : src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pc-dbg.js": {
|
"pcx86-dbg.js": {
|
||||||
src: pkg.pcJSFiles,
|
src: pkg.pcX86Files,
|
||||||
dest: "./versions/pcjs/" + pkg.version + "/pc-dbg.js"
|
dest: "./versions/pcx86/" + pkg.version + "/pcx86-dbg.js"
|
||||||
},
|
},
|
||||||
"pc8080.js": {
|
"pc8080.js": {
|
||||||
src: pkg.pc8080Files,
|
src: pkg.pc8080Files,
|
||||||
|
|
@ -190,9 +190,9 @@ module.exports = function(grunt) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tmp-pcjs": {
|
"tmp-pcx86": {
|
||||||
src: pkg.pcJSFiles,
|
src: pkg.pcX86Files,
|
||||||
dest: tmpPCjs,
|
dest: tmpPCx86,
|
||||||
options: {
|
options: {
|
||||||
banner: '"use strict";\n\n',
|
banner: '"use strict";\n\n',
|
||||||
process: function(src, filepath) {
|
process: function(src, filepath) {
|
||||||
|
|
@ -225,9 +225,9 @@ module.exports = function(grunt) {
|
||||||
src: pkg.c1pJSFiles,
|
src: pkg.c1pJSFiles,
|
||||||
dest: tmpC1Pjs
|
dest: tmpC1Pjs
|
||||||
},
|
},
|
||||||
"pc.js": {
|
"pcx86.js": {
|
||||||
src: pkg.pcJSFiles,
|
src: pkg.pcX86Files,
|
||||||
dest: tmpPCjs
|
dest: tmpPCx86
|
||||||
},
|
},
|
||||||
"pc8080.js": {
|
"pc8080.js": {
|
||||||
src: pkg.pc8080Files,
|
src: pkg.pc8080Files,
|
||||||
|
|
@ -290,7 +290,7 @@ module.exports = function(grunt) {
|
||||||
*/
|
*/
|
||||||
TEMPcompilerOpts: {
|
TEMPcompilerOpts: {
|
||||||
// create_source_map: "./tmp/c1pjs/" + pkg.version + "/c1p.map",
|
// 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"],
|
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false"],
|
||||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p.map\""
|
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p.map\""
|
||||||
output_wrapper: "\"(function(){%output%})();\""
|
output_wrapper: "\"(function(){%output%})();\""
|
||||||
|
|
@ -302,7 +302,7 @@ module.exports = function(grunt) {
|
||||||
"c1p-dbg.js": {
|
"c1p-dbg.js": {
|
||||||
TEMPcompilerOpts: {
|
TEMPcompilerOpts: {
|
||||||
// create_source_map: "./tmp/c1pjs/" + pkg.version + "/c1p-dbg.map",
|
// 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"],
|
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false"],
|
||||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p-dbg.map\""
|
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/c1pjs/" + pkg.version + "/c1p-dbg.map\""
|
||||||
output_wrapper: "\"(function(){%output%})();\""
|
output_wrapper: "\"(function(){%output%})();\""
|
||||||
|
|
@ -311,37 +311,37 @@ module.exports = function(grunt) {
|
||||||
src: tmpC1Pjs,
|
src: tmpC1Pjs,
|
||||||
dest: "./versions/c1pjs/" + pkg.version + "/c1p-dbg.js"
|
dest: "./versions/c1pjs/" + pkg.version + "/c1p-dbg.js"
|
||||||
},
|
},
|
||||||
"pc.js": {
|
"pcx86.js": {
|
||||||
TEMPcompilerOpts: {
|
TEMPcompilerOpts: {
|
||||||
// create_source_map: "./tmp/pcjs/" + pkg.version + "/pc.map",
|
// create_source_map: "./tmp/pcx86/" + pkg.version + "/pcx86.map",
|
||||||
define: ["\"APPNAME='PCjs'\"", "\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false",
|
define: ["\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false",
|
||||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=true"],
|
"\"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%})();\""
|
output_wrapper: "\"(function(){%output%})();\""
|
||||||
},
|
},
|
||||||
// src: pkg.pcJSFiles,
|
// src: pkg.pcX86Files,
|
||||||
src: tmpPCjs,
|
src: tmpPCx86,
|
||||||
dest: "./versions/pcjs/" + pkg.version + "/pc.js"
|
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.
|
* 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: {
|
TEMPcompilerOpts: {
|
||||||
// create_source_map: "./tmp/pcjs/" + pkg.version + "/pc-dbg.map",
|
// create_source_map: "./tmp/pcx86/" + pkg.version + "/pcx86-dbg.map",
|
||||||
define: ["\"APPNAME='PCjs'\"", "\"APPVERSION='" + pkg.version + "'\"",
|
define: ["\"APPVERSION='" + pkg.version + "'\"",
|
||||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=true"],
|
"\"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%})();\""
|
output_wrapper: "\"(function(){%output%})();\""
|
||||||
},
|
},
|
||||||
// src: pkg.pcJSFiles,
|
// src: pkg.pcX86Files,
|
||||||
src: tmpPCjs,
|
src: tmpPCx86,
|
||||||
dest: "./versions/pcjs/" + pkg.version + "/pc-dbg.js"
|
dest: "./versions/pcx86/" + pkg.version + "/pcx86-dbg.js"
|
||||||
},
|
},
|
||||||
"pc8080.js": {
|
"pc8080.js": {
|
||||||
TEMPcompilerOpts: {
|
TEMPcompilerOpts: {
|
||||||
// create_source_map: "./tmp/pc8080/" + pkg.version + "/pc8080.map",
|
// 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"],
|
"\"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%})();//@ sourceMappingURL=/tmp/pc8080/" + pkg.version + "/pc8080.map\""
|
||||||
output_wrapper: "\"(function(){%output%})();\""
|
output_wrapper: "\"(function(){%output%})();\""
|
||||||
|
|
@ -356,7 +356,7 @@ module.exports = function(grunt) {
|
||||||
*/
|
*/
|
||||||
TEMPcompilerOpts: {
|
TEMPcompilerOpts: {
|
||||||
// create_source_map: "./tmp/pc8080/" + pkg.version + "/pc8080-dbg.map",
|
// 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"],
|
"\"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%})();//@ sourceMappingURL=/tmp/pc8080/" + pkg.version + "/pc8080-dbg.map\""
|
||||||
output_wrapper: "\"(function(){%output%})();\""
|
output_wrapper: "\"(function(){%output%})();\""
|
||||||
|
|
@ -402,19 +402,19 @@ module.exports = function(grunt) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pcjs": {
|
"pcx86": {
|
||||||
files: [
|
files: [
|
||||||
{
|
{
|
||||||
cwd: "modules/shared/templates/",
|
cwd: "modules/shared/templates/",
|
||||||
src: ["common.css", "common.xsl", "components.*", "document.css", "document.xsl", "machine.xsl", "manifest.xsl", "outline.xsl"],
|
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
|
expand: true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
options: {
|
options: {
|
||||||
process: function(content, srcPath) {
|
process: function(content, srcPath) {
|
||||||
var s = content.replace(/(<xsl:variable name="APPVERSION">)[^<]*(<\/xsl:variable>)/g, "$1" + pkg.version + "$2");
|
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, "");
|
s = s.replace(/[ \t]*\/\*[^\*][\s\S]*?\*\//g, "").replace(/[ \t]*<!--[^@]*?-->[ \t]*\n?/g, "");
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
@ -443,9 +443,9 @@ module.exports = function(grunt) {
|
||||||
"examples": {
|
"examples": {
|
||||||
files: [
|
files: [
|
||||||
{
|
{
|
||||||
cwd: "versions/pcjs/<%= pkg.version %>/",
|
cwd: "versions/pcx86/<%= pkg.version %>/",
|
||||||
src: ["pc.js", "pc-dbg.js", "components.css", "components.xsl"],
|
src: ["pcx86.js", "pcx86-dbg.js", "components.css", "components.xsl"],
|
||||||
dest: "docs/pcjs/examples/",
|
dest: "docs/pcx86/examples/",
|
||||||
expand: true
|
expand: true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -520,14 +520,14 @@ module.exports = function(grunt) {
|
||||||
args: []
|
args: []
|
||||||
},
|
},
|
||||||
"zip-examples": {
|
"zip-examples": {
|
||||||
options: {cwd: "docs/pcjs/examples"},
|
options: {cwd: "docs/pcx86/examples"},
|
||||||
cmd: "./zip.sh",
|
cmd: "./zip.sh",
|
||||||
args: ["v" + pkg.version + ".zip"]
|
args: ["v" + pkg.version + ".zip"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
replace: {
|
replace: {
|
||||||
"fix-source-maps": {
|
"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,
|
overwrite: true,
|
||||||
replacements: [
|
replacements: [
|
||||||
{
|
{
|
||||||
|
|
@ -560,13 +560,13 @@ module.exports = function(grunt) {
|
||||||
|
|
||||||
grunt.loadTasks("modules/grunts/prepjs/tasks");
|
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("compile", ["preCompiler", "closureCompiler", "replace:fix-source-maps"]);
|
||||||
|
|
||||||
grunt.registerTask('nocompile', function(target) {
|
grunt.registerTask('nocompile', function(target) {
|
||||||
if (!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 {
|
} else {
|
||||||
grunt.task.run("concat:" + target);
|
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.
|
Welcome to PCjs, home of [PCx86](/docs/about/pcx86/), the first IBM PC simulation to run in your web browser without
|
||||||
It was added to the [JavaScript Machines](/docs/about/) project in Fall 2012, and it is now part of the
|
any plugins. It was added to the [PCjs Project](https://github.com/jeffpar/pcjs) in Fall 2012.
|
||||||
[PCjs Project](https://github.com/jeffpar/pcjs) on GitHub.
|
|
||||||
|
|
||||||
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
|
* [PC8080](/modules/pc8080/), a 8080-based generic machine emulator
|
||||||
* [C1Pjs](/docs/c1pjs/), a 6502-based Ohio Scientific Challenger 1P 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,
|
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. PCjs fully supports
|
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.
|
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.
|
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,
|
Supported browsers include modern versions of Chrome, Safari, Firefox, Internet Explorer (v9.0 and up), Edge,
|
||||||
and assorted mobile browsers.
|
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
|
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/)
|
[Control Panel](/devices/pcx86/machine/5150/mda/64kb/debugger/) and [Soft Keyboard](/devices/pcx86/machine/5150/mda/64kb/softkbd/)
|
||||||
configurations, featuring the built-in PCjs Debugger. For even greater control, build your own PC. The
|
configurations, featuring the built-in PCx86 Debugger. For even greater control, build your own PC. The
|
||||||
[PCjs Documentation](/docs/pcjs/) will help you get started.
|
[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
|
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
|
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.
|
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
|
There are many more [PCx86 Demos](/devices/pcx86/machine/#ready-to-run-app-demos), including an
|
||||||
[IBM PC with Dual Displays](/devices/pc/machine/5150/dual/64kb/) demonstrating early multi-monitor support,
|
[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/pc/machine/5160/cga/256kb/array/)
|
and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pcx86/machine/5160/cga/256kb/array/)
|
||||||
and [EGA Displays](/devices/pc/machine/5160/ega/640kb/array/).
|
and [EGA Displays](/devices/pcx86/machine/5160/ega/640kb/array/).
|
||||||
|
|
||||||
C1Pjs
|
C1Pjs
|
||||||
---
|
---
|
||||||
|
|
@ -69,8 +68,8 @@ Developer Notes
|
||||||
---
|
---
|
||||||
|
|
||||||
The [PCjs repository](https://github.com/jeffpar/pcjs) on GitHub contains everything needed to run PCjs
|
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,
|
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/pcjs/examples/) and
|
with or without a web server, and examples are provided for both [local](/docs/pcx86/examples/) and
|
||||||
[remote](http://www.pcjs.org/) operation.
|
[remote](http://www.pcjs.org/) operation.
|
||||||
|
|
||||||
The project includes:
|
The project includes:
|
||||||
|
|
@ -78,8 +77,8 @@ The project includes:
|
||||||
- A simple Node-based web server ([server.js](server.js))
|
- 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/))
|
- 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/))
|
- 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
|
- The [PCx86](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
|
- 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
|
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.
|
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:".
|
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
|
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
|
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.
|
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
|
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
|
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
|
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
|
[Closure Compiler](https://developers.google.com/closure/compiler/) if any of the target files (eg, pcx86.js or
|
||||||
in the [/versions](versions/) directory) are out-of date.
|
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
|
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
|
[/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
|
layout: page
|
||||||
permalink: /
|
permalink: /
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: ibm5150
|
id: ibm5150
|
||||||
name: "IBM PC (Model 5150) with Monochrome Display"
|
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
|
- type: c1p
|
||||||
id: demoC1P
|
id: demoC1P
|
||||||
config: /devices/c1p/machine/8kb/large/machine.xml
|
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
|
### 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:
|
run a series of automated tests, etc:
|
||||||
|
|
||||||
cd modules/pcjs/bin
|
cd modules/pcx86/bin
|
||||||
node pcjs
|
node pcx86
|
||||||
|
|
||||||
The [pcjs](modules/pcjs/bin/pcjs) script in [modules/pcjs/bin](modules/pcjs/bin) loads
|
The [pcx86](modules/pcx86/bin/pcx86) script in [modules/pcx86/bin](modules/pcx86/bin) loads
|
||||||
all the PCjs browser scripts listed in the root [package.json](/package.json) and then starts a Node REPL
|
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
|
("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.
|
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
|
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/)
|
of the [machine.xml](devices/pc/machine/5150/mda/64kb/machine.xml) displayed on the [pcjs.org](http://www.pcjs.org/)
|
||||||
home page.
|
home page.
|
||||||
|
|
||||||
The command-line loader creates all the JSON-defined machine components in the same order that the browser creates
|
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:
|
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
|
In fact, any number of "--cmd" arguments can be included on the command-line. A batch file syntax will eventually be
|
||||||
added, too.
|
added, too.
|
||||||
|
|
||||||
When PCjs runs in a browser, an XML machine configuration file is transformed into HTML with a set of DIVs for each
|
When a PCjs machine runs in a browser, an XML machine configuration file is transformed into HTML with a set of DIVs
|
||||||
component: an "object" DIV whose *data-value* attribute provides the initialization parameters for the corresponding
|
for each component: an "object" DIV whose *data-value* attribute provides the initialization parameters for the
|
||||||
component, along with a set of optional "control" DIVs that the component can bind to (eg, a "Run" button, or a visual
|
corresponding component, along with a set of optional "control" DIVs that the component can bind to (eg, a "Run" button,
|
||||||
representation of DIP switches, or whatever).
|
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
|
When a PCjs machine is run from the command-line, there is no XML, HTML, or DIVs involved; this is basically a
|
||||||
of PCjs, so there is no simple way to view a machine's video display or interact with its keyboard, mouse, etc.
|
"headless" version of the machine, so there is no simple way to view its video display or interact with its keyboard,
|
||||||
You have to use Debugger commands to dump the machine's video buffer.
|
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
|
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
|
and server operation: PCjs machines on the client supports *only* XML machine configuration files, whereas PCjs machines
|
||||||
supports *only* JSON machine configuration files.
|
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
|
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.
|
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
|
### 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:
|
and C1Pjs much easier to debug, albeit much slower:
|
||||||
|
|
||||||
http://localhost:8088/?gort=debug
|
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
|
The "gort=debug" command is unnecessary if the server is started with `--debug`; the server always serves uncompiled
|
||||||
files when running in debug mode.
|
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
|
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)
|
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
|
2. Run the "grunt promote" task to bump the version in all the machine XML files
|
||||||
3. Make changes
|
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/).
|
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
|
More Information
|
||||||
---
|
---
|
||||||
Learn more about the [JavaScript Machines](/docs/about/) Project and [PCjs](/docs/about/pcjs/). To
|
Learn more about the [PCjs Project](/docs/about/) and [PCx86](/docs/about/pcx86/). To
|
||||||
create your own PCjs machines, see the [Documentation](/docs/pcjs/) for details.
|
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
|
If you have questions or run into any problems, feel free to [tweet](http://twitter.com/jeffpar) or
|
||||||
[email](mailto:Jeff@pcjs.org).
|
[email](mailto:Jeff@pcjs.org).
|
||||||
|
|
|
||||||
48
_config.yml
48
_config.yml
|
|
@ -33,9 +33,30 @@ gems:
|
||||||
|
|
||||||
pcjs:
|
pcjs:
|
||||||
domain: pcjs.org # whereas site.url is used for linking purposes, site.pcjs.domain is used for display purposes
|
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
|
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, pc.js or pc-dbg.js)
|
compiled: true # by default, the compiled pcjs.version scripts will be used (eg, pcx86.js or pcx86-dbg.js)
|
||||||
pc_scripts: # if pcjs.compiled is false, the following scripts will be included instead, in the order listed
|
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/defines.js
|
||||||
- /modules/shared/lib/nodebug.js
|
- /modules/shared/lib/nodebug.js
|
||||||
- /modules/shared/lib/diskapi.js
|
- /modules/shared/lib/diskapi.js
|
||||||
|
|
@ -78,27 +99,6 @@ pcjs:
|
||||||
- /modules/pcjs/lib/computer.js
|
- /modules/pcjs/lib/computer.js
|
||||||
- /modules/shared/lib/embed.js
|
- /modules/shared/lib/embed.js
|
||||||
- /modules/shared/lib/save.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:
|
pc8080_scripts:
|
||||||
- /modules/shared/lib/defines.js
|
- /modules/shared/lib/defines.js
|
||||||
- /modules/shared/lib/dumpapi.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")
|
'id' (eg, "ibm5150")
|
||||||
'name' (eg, "IBM PC (Model 5150) with Monochrome Display")
|
'name' (eg, "IBM PC (Model 5150) with Monochrome Display")
|
||||||
'type' (eg. "c1p", "pc", "pc8080")
|
'type' (eg. "c1p", "pcx86", "pc8080")
|
||||||
'debugger' (default is false)
|
'debugger' (default is false)
|
||||||
'config' (default is "machine.xml")
|
'config' (default is "machine.xml")
|
||||||
'template' (default is "machine.xsl")
|
'template' (default is "machine.xsl")
|
||||||
|
|
@ -34,7 +34,7 @@ of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'a
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
{% for machine in page.machines %}
|
{% for machine in page.machines %}
|
||||||
{% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %}
|
{% 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 %}
|
{% capture machine_app %}{{ machine_type }}{% endcapture %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% capture machine_app %}{{ machine_type }}js{% endcapture %}
|
{% capture machine_app %}{{ machine_type }}js{% endcapture %}
|
||||||
|
|
@ -103,7 +103,7 @@ of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'a
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if machine_type == "c1p" %}{% assign array_scripts = site.pcjs.c1p_scripts %}{% endif %}
|
{% 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 %}
|
{% if machine_type == "pc8080" %}{% assign array_scripts = site.pcjs.pc8080_scripts %}{% endif %}
|
||||||
{% for script in array_scripts %}
|
{% for script in array_scripts %}
|
||||||
{% if script != "/modules/shared/lib/nodebug.js" or machine.debug != true %}
|
{% if script != "/modules/shared/lib/nodebug.js" or machine.debug != true %}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{% for machine in page.machines %}
|
{% for machine in page.machines %}
|
||||||
{% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %}
|
{% 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 %}
|
{% capture machine_app %}{{ machine_type }}{% endcapture %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% capture machine_app %}{{ machine_type }}js{% endcapture %}
|
{% capture machine_app %}{{ machine_type }}js{% endcapture %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% unless site.pcjs.compiled == true and machine.uncompiled != true %}
|
{% 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 %}
|
{% capture machine_style %}{{ site.baseurl }}/modules/shared/templates/components.css{% endcapture %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% capture machine_style %}{{ site.baseurl }}/modules/{{ machine_app }}/templates/components.css{% endcapture %}
|
{% 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,
|
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:
|
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.
|
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
|
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.
|
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
|
The variety of configurations was getting out of hand. It's a bit tidier now, but there's still room for
|
||||||
improvement.
|
improvement.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ while I can understand some whitespace inconsistencies across web servers, I wou
|
||||||
on the server to modify file contents.
|
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,
|
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
|
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
|
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
|
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.
|
stylesheets. And occasionally Safari -- and ONLY Safari -- will render those XML files as blank pages.
|
||||||
|
|
||||||
For example, here's the
|
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.
|
[{{ 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),
|
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"
|
efficiently. The rest of the changes to the website involved beefing up support for both "software manifests"
|
||||||
and "document 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
|
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.
|
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
|
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
|
diagnostics and run [Windows 1.01](/devices/pcx86/machine/5160/ega/640kb/win101/) in color. Check out our
|
||||||
[Windows 1.01 "Server Array"](/devices/pc/machine/5160/ega/640kb/array/) demo.
|
[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)
|
[<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:
|
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 *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
|
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/
|
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
|
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
|
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
|
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
|
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.
|
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
|
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:
|
But now, a machine XML file can specify:
|
||||||
|
|
||||||
<computer name="IBM PC AT" buswidth="24"/>
|
<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,
|
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
|
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 PCjs simulation
|
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
|
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.
|
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
|
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
|
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 PCjs is shooting for.
|
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
|
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.
|
completion is a *very* long series of baby steps.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ category: Releases
|
||||||
permalink: /blog/2014/09/13/
|
permalink: /blog/2014/09/13/
|
||||||
---
|
---
|
||||||
|
|
||||||
My first IBM PC AT (Model 5170) [Test Configuration](/devices/pc/machine/5170/ega/640kb/rev1/debugger/) finally
|
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/pc/rom/5170/),
|
boots to a PC-DOS prompt. The configuration uses the original [IBM Model 5170 ROM BIOS](/devices/pcx86/rom/5170/),
|
||||||
dated January 10, 1984.
|
dated January 10, 1984.
|
||||||
|
|
||||||
Getting through the BIOS "POST" (Power-On Self Test) diagnostics was like running an obstacle course, with various
|
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/
|
permalink: /blog/2014/10/13/
|
||||||
---
|
---
|
||||||
|
|
||||||
I just added my first [8Mhz IBM PC AT](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/) machine configuration
|
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/pc/machine/), and not surprisingly, the new machine
|
to the list of [IBM PC Machine Configurations](/devices/pcx86/machine/), and not surprisingly, the new machine
|
||||||
fails to boot.
|
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
|
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.
|
images I would like to be able to read in a PCjs machine.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ category: Releases
|
||||||
permalink: /blog/2014/10/17/
|
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:
|
[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
|
+ 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
|
[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.
|
from working properly.
|
||||||
|
|
||||||
There are also some Debugger improvements; for example, if you turn on "fdc" and "int" messages in the
|
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)".
|
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
|
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
|
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)*
|
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||||
*October 23, 2014*
|
*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
|
[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
|
[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
|
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
|
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
|
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
|
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.
|
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
|
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").
|
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
|
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.
|
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
|
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/pc/os2/misc/), you can click on the **Control Panel** output window, press Ctrl-C, and
|
[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
|
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
|
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.
|
(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
|
layout: post
|
||||||
title: PCjs Uncompiled
|
title: PCx86 Uncompiled
|
||||||
date: 2015-01-17 11:00:00
|
date: 2015-01-17 11:00:00
|
||||||
category: Features
|
category: Features
|
||||||
permalink: /blog/2015/01/17/
|
permalink: /blog/2015/01/17/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: at-ega-1152k-rev3
|
id: at-ega-1152k-rev3
|
||||||
debugger: true
|
debugger: true
|
||||||
uncompiled: 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
|
Most PCx86 machines on [{{ site.pcjs.domain }}](/) run with a compiled version of PCx86, which is produced
|
||||||
by running PCjs JavaScript source code through Google's Closure Compiler, yielding a smaller (minified)
|
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.
|
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
|
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
|
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.
|
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**.
|
to *true*, overriding the value of `site.pcjs.compiled` in **_config.yml**.
|
||||||
|
|
||||||
Here's what a typical Markdown file would look like:
|
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:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: at-ega-1152k-rev3
|
id: at-ega-1152k-rev3
|
||||||
debugger: true
|
debugger: true
|
||||||
uncompiled: 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" %}
|
{% include machine.html id="at-ega-1152k-rev3" %}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,18 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: New PCjs Control Panel
|
title: New PCx86 Control Panel
|
||||||
date: 2015-01-28 11:00:00
|
date: 2015-01-28 11:00:00
|
||||||
category: Control Panel
|
category: Control Panel
|
||||||
permalink: /blog/2015/01/28/
|
permalink: /blog/2015/01/28/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: at-ega-1152k-rev3
|
id: at-ega-1152k-rev3
|
||||||
debugger: true
|
debugger: true
|
||||||
uncompiled: 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.
|
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.
|
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
|
category: 80386
|
||||||
permalink: /blog/2015/02/22/
|
permalink: /blog/2015/02/22/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: deskpro386
|
id: deskpro386
|
||||||
debugger: true
|
debugger: true
|
||||||
uncompiled: 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
|
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 PCjs.
|
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
|
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
|
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
|
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.
|
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
|
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.
|
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
|
category: 80386
|
||||||
permalink: /blog/2015/04/16/
|
permalink: /blog/2015/04/16/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: deskpro386
|
id: deskpro386
|
||||||
debugger: true
|
debugger: true
|
||||||
uncompiled: 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,
|
There's still a problem with the hard disk controller, which I haven't looked into yet,
|
||||||
but booting from a floppy works.
|
but booting from a floppy works.
|
||||||
|
|
||||||
While working through issues with this ROM BIOS, I created some lightly-annotated
|
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
|
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
|
At the top of the source code, I explain a few important details about ROM addresses that
|
||||||
are worth recapping here:
|
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
|
mov cr0,eax ; 0000F4A4 0F2200
|
||||||
jmp 0x28:xf4ac ; 0000F4A7 EAACF42800
|
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
|
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
|
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
|
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
|
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.
|
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
|
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
|
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.
|
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
|
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
|
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
|
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
|
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.
|
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:
|
The first problem I ran into was here:
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ category: Video
|
||||||
permalink: /blog/2015/06/05/
|
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.
|
and I discovered an odd problem.
|
||||||
|
|
||||||
For example, when I ran this code:
|
For example, when I ran this code:
|
||||||
|
|
|
||||||
|
|
@ -5,17 +5,17 @@ date: 2015-07-17 11:00:00
|
||||||
category: Windows 95
|
category: Windows 95
|
||||||
permalink: /blog/2015/07/17/
|
permalink: /blog/2015/07/17/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: deskpro386
|
id: deskpro386
|
||||||
debugger: true
|
debugger: true
|
||||||
state: /disks/pc/windows/win95/4.00.950/deskpro386.json
|
state: /disks/pcx86/windows/win95/4.00.950/deskpro386.json
|
||||||
config: /devices/pc/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml
|
config: /devices/pcx86/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"}]'
|
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pcx86/fixed/68mb/win95.json"}]'
|
||||||
autoMount: ''
|
autoMount: ''
|
||||||
---
|
---
|
||||||
|
|
||||||
This week (July 14, 2015) was the 20th anniversary of Windows 95 RTM ("Release To Manufacturing"). So I decided to
|
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:
|
Sadly, it immediately failed:
|
||||||
|
|
||||||
|
|
@ -52,17 +52,17 @@ The failing code:
|
||||||
0E36:0927 07 POP ES
|
0E36:0927 07 POP ES
|
||||||
0E36:0928 C3 RET
|
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
|
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.
|
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
|
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
|
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.
|
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.
|
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.
|
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
|
> 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
|
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)
|
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.
|
*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
|
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
|
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
|
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.
|
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
|
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
|
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
|
m dos off
|
||||||
bp 1ED4:16B4 "set fn=ah;dos;if fn!=3f||cx!=24"
|
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
|
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`
|
(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"),
|
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`
|
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.
|
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.
|
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
|
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.
|
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
|
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 PCjs Debugger to debug
|
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.
|
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.
|
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 real-mode
|
||||||
* `##` indicates protected-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
|
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
|
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
|
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
|
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
|
category: Windows 95
|
||||||
permalink: /blog/2015/09/21/
|
permalink: /blog/2015/09/21/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: deskpro386
|
id: deskpro386
|
||||||
state: /disks/pc/windows/win95/4.00.950/deskpro386.json
|
state: /disks/pcx86/windows/win95/4.00.950/deskpro386.json
|
||||||
config: /devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml
|
config: /devices/pcx86/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"}]'
|
drives: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pcx86/fixed/68mb/win95.json"}]'
|
||||||
autoMount: ''
|
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
|
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.
|
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
|
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
|
of the initial "Getting ready to run Windows 95 for the first time..." splash screen, you'll see the normal
|
||||||
Windows 95 startup screen.
|
Windows 95 startup screen.
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ and the following "Front Matter" (YAML) must appear at the top of the Markdown f
|
||||||
---
|
---
|
||||||
...
|
...
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: ibm5150
|
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*
|
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**.
|
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):
|
[Markdown file](https://raw.githubusercontent.com/jeffpar/pcjs/master/index.md):
|
||||||
|
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: ibm5150
|
id: ibm5150
|
||||||
config: /devices/pc/machine/5150/mda/64kb/machine.xml
|
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||||
- type: c1p
|
- type: c1p
|
||||||
id: demoC1P
|
id: demoC1P
|
||||||
config: /devices/c1p/machine/8kb/large/machine.xml
|
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:
|
FDC `autoMount` setting, making it easy to reuse the same machine XML file with different boot disks:
|
||||||
|
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: deskpro386
|
id: deskpro386
|
||||||
debugger: true
|
debugger: true
|
||||||
autoMount:
|
autoMount:
|
||||||
A:
|
A:
|
||||||
path: /disks/pc/os2/misc/football/FOOTBALL-76817.json
|
path: /disks/pcx86/os2/misc/football/FOOTBALL-76817.json
|
||||||
config: /devices/pc/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml
|
config: /devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml
|
||||||
|
|
||||||
Other settings that can currently be overridden include:
|
Other settings that can currently be overridden include:
|
||||||
|
|
||||||
|
|
@ -104,11 +104,11 @@ Other settings that can currently be overridden include:
|
||||||
+ `messages`
|
+ `messages`
|
||||||
+ `state`
|
+ `state`
|
||||||
|
|
||||||
Additional overrides will be added as needed. See the [Windows 95 Demo](/disks/pc/windows/win95/4.00.950/)
|
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/pc/windows/win95/4.00.950/README.md)
|
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.
|
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"
|
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
|
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
|
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
|
category: OS/2
|
||||||
permalink: /blog/2015/12/27/
|
permalink: /blog/2015/12/27/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: ibm5170
|
id: ibm5170
|
||||||
debugger: true
|
debugger: true
|
||||||
config: /devices/pc/machine/5170/ega/2048kb/rev3/debugger/machine.xml
|
config: /devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml
|
||||||
drives: '[{name:"20Mb Hard Disk",type:2,path:"/disks/pc/fixed/20mb/IBMOS210-EGA.json"}]'
|
drives: '[{name:"20Mb Hard Disk",type:2,path:"/disks/pcx86/fixed/20mb/IBMOS210-EGA.json"}]'
|
||||||
automount: ''
|
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
|
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.
|
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
|
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.
|
drive C.
|
||||||
|
|
||||||
Next, I installed the [MS OS/2 SDK 1.02](/disks/pc/tools/microsoft/os2/sdk/1.02/). This SDK was released
|
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/pc/os2/microsoft/1.0/). I don't have any of the
|
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
|
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
|
[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/).
|
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,
|
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
|
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
|
about [SDKED](/disks/pcx86/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.
|
[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
|
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/pc/tools/microsoft/os2/sdk/1.02/) pre-installed, so check out our copy of 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!
|
[Microsoft® Operating System/2 Programmer’s Toolkit](/pubs/pc/software/os2/microsoft/ptk10/) and then write some code!
|
||||||
|
|
||||||
{% include machine.html id="ibm5170" %}
|
{% 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
|
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**,
|
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
|
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
|
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.
|
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.
|
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
|
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:
|
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
|
* 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
|
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.
|
and blank screens.
|
||||||
|
|
||||||
A hard-error popup would occur when FOOTBALL tried to initialize a non-existent PRN device. To resolve that, PCjs
|
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
|
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]
|
[SerialPort](/docs/pcx86/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
|
(/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/) machine used to run FOOTBALL has now been updated to
|
||||||
include one parallel port.
|
include one parallel port.
|
||||||
|
|
||||||
The other problem was that switching between sessions with the **SysReq** key would often result in a blank screen;
|
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
|
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.
|
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!
|
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
|
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:
|
*contents* of ROM devices. So, with that in mind, I've made the following rearrangements:
|
||||||
|
|
||||||
* `/devices/pc/bios/5150/*` => `/devices/pc/rom/5150/*`
|
* `/devices/pcx86/bios/5150/*` => `/devices/pcx86/rom/5150/*`
|
||||||
* `/devices/pc/bios/5160/*` => `/devices/pc/rom/5160/*`
|
* `/devices/pcx86/bios/5160/*` => `/devices/pcx86/rom/5160/*`
|
||||||
* `/devices/pc/bios/5170/*` => `/devices/pc/rom/5170/*`
|
* `/devices/pcx86/bios/5170/*` => `/devices/pcx86/rom/5170/*`
|
||||||
* `/devices/pc/bios/compaq/*` => `/devices/pc/rom/compaq/*`
|
* `/devices/pcx86/bios/compaq/*` => `/devices/pcx86/rom/compaq/*`
|
||||||
* `/devices/pc/basic/ibm-basic-1.00.json` => `/devices/pc/rom/5150/basic/BASIC100.json`
|
* `/devices/pcx86/basic/ibm-basic-1.00.json` => `/devices/pcx86/rom/5150/basic/BASIC100.json`
|
||||||
* `/devices/pc/basic/ibm-basic-1.10.json` => `/devices/pc/rom/5160/basic/BASIC110.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
|
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).
|
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
|
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,
|
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.
|
it has not been added to the project.
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ date: 2016-02-17 14:00:00
|
||||||
permalink: /blog/2016/02/17/
|
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.
|
[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.
|
IBM PC demos on your own web page.
|
||||||
|
|
||||||
Saving Disks
|
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**.
|
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
|
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.
|
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
|
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.
|
`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
|
**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.
|
so that you can rename it appropriately.
|
||||||
|
|
||||||
Saving Machines
|
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.
|
All your changes should be preserved.
|
||||||
|
|
||||||
Under the bottom-left corner of any IBM PC on the PCjs [website](/), you should now see a
|
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:
|
everything that machine needs to run, including:
|
||||||
|
|
||||||
* The machine XML configuration file (eg, "machine.xml")
|
* The machine XML configuration file (eg, "machine.xml")
|
||||||
* The machine XSL transformation file (eg, "components.xsl")
|
* The machine XSL transformation file (eg, "components.xsl")
|
||||||
* The machine CSS stylesheet file (eg, "components.css")
|
* The machine CSS stylesheet file (eg, "components.css")
|
||||||
* The machine state file (eg, "state.json")
|
* 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
|
* 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:
|
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
|
* A dialog box will appear with some markup to copy-and-paste
|
||||||
|
|
||||||
The dialog box should provide the following information:
|
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:
|
and then add the following to your web page:
|
||||||
|
|
||||||
<div id="ibm5150"></div>
|
<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>
|
<script type="text/javascript">embedPC("ibm5150","machine.xml","components.xsl");</script>
|
||||||
|
|
||||||
The machine should appear where the <div> is located.
|
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.
|
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 **pc.js** and your web page are in different folders, then you'll also need to update *src* to include the exact
|
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.
|
location of the script.
|
||||||
|
|
||||||
Some notes:
|
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.
|
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
|
* 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 **pc.js** (or **pc-dbg.js** if the machine is
|
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 PCjs debugger).
|
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
|
* 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.
|
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>
|
<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
|
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.
|
any *existing* IBM PC and embed it on any other website.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,12 +50,12 @@ all we have are the memories.
|
||||||
### Speaking of Memories
|
### Speaking of Memories
|
||||||
|
|
||||||
In particular, Read-Only Memories: we have precious few of those, too. I finally obtained
|
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,
|
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.
|
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
|
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:
|
since they are all machines I would like to see PCjs eventually support:
|
||||||
|
|
||||||
- COMPAQ Portable
|
- COMPAQ Portable
|
||||||
|
|
@ -64,7 +64,7 @@ since they are all machines I would like to see PCjs eventually support:
|
||||||
- COMPAQ DeskPro 286
|
- COMPAQ DeskPro 286
|
||||||
- COMPAQ Portable 286
|
- COMPAQ Portable 286
|
||||||
- COMPAQ Portable II
|
- COMPAQ Portable II
|
||||||
- [COMPAQ DeskPro 386](/devices/pc/machine/compaq/deskpro386/)
|
- [COMPAQ DeskPro 386](/devices/pcx86/machine/compaq/deskpro386/)
|
||||||
- COMPAQ Portable III
|
- COMPAQ Portable III
|
||||||
- COMPAQ DeskPro 386/20
|
- COMPAQ DeskPro 386/20
|
||||||
- COMPAQ Portable 386
|
- 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.
|
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
|
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/pc/dos/compaq/3.31/), there may have been a shift in policy. Both products still
|
[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
|
called themselves `The COMPAQ Personal Computer MS-DOS`, but in 3.31, the copyright string changed to
|
||||||
`Compaq Computer Corp.`
|
`Compaq Computer Corp.`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ date: 2016-03-06 09:00:00
|
||||||
permalink: /blog/2016/03/06/
|
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,
|
[Windows Solitaire](https://en.wikipedia.org/wiki/Microsoft_Solitaire) on my iPad. It was a bit, um, touchy,
|
||||||
but it worked.
|
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
|
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/),
|
80386-based software, such as [Windows/386](/disks/pcx86/windows/2.0x/), [Windows 3.0](/disks/pcx86/windows/3.00/),
|
||||||
[Windows 3.1](/disks/pc/windows/3.10/), and [Windows 95](/disks/pc/windows/win95/4.00.950/).
|
[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/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/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/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/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/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/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/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
|
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*
|
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`.
|
if you started Windows by running `WIN386.EXE`.
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ permalink: /blog/2016/05/04/
|
||||||
This was the week of The Sharpening.
|
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
|
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.
|
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
|
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.
|
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.
|
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
|
For example, this [machine](/devices/pcx86/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,
|
[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:
|
no matter how large you make your browser window:
|
||||||
|
|
||||||
```xml
|
```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
|
which eliminates much of the fuzziness that would occur when copying pixels from the lower-resolution *buffer* canvas
|
||||||
to the higher-resolution *screen* 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
|
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.
|
use its default interpolation method.
|
||||||
|
|
||||||
|
|
@ -66,7 +66,7 @@ while the right one does not.
|
||||||
Aspect Ratio
|
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.
|
[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
|
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:
|
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
|
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.
|
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:
|
Browse classic application software for the following machines:
|
||||||
|
|
||||||
- [IBM PC](pc/)
|
- [IBM PC](pcx86/)
|
||||||
- [Challenger 1P](c1p/)
|
- [Challenger 1P](c1p/)
|
||||||
|
|
||||||
### Software Application Manifests
|
### 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)
|
- 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,
|
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.
|
provides more detail.
|
||||||
|
|
||||||
### Example: VisiCalc
|
### Example: VisiCalc
|
||||||
|
|
||||||
VisiCalc is stored in an [/apps folder](/apps/pc/1981/visicalc/), and two relevant files are
|
VisiCalc is stored in an [/apps folder](/apps/pcx86/1981/visicalc/), and two relevant files are
|
||||||
described by <file> entries in its [manifest](/apps/pc/1981/visicalc/manifest.xml):
|
described by <file> entries in its [manifest](/apps/pcx86/1981/visicalc/manifest.xml):
|
||||||
|
|
||||||
<manifest>
|
<manifest>
|
||||||
<title>VisiCalc</title>
|
<title>VisiCalc</title>
|
||||||
|
|
@ -49,32 +49,32 @@ described by <file> entries in its [manifest](/apps/pc/1981/visicalc/manif
|
||||||
<category>Productivity</category>
|
<category>Productivity</category>
|
||||||
<company>Software Arts</company>
|
<company>Software Arts</company>
|
||||||
<releaseDate>December 16, 1981</releaseDate>
|
<releaseDate>December 16, 1981</releaseDate>
|
||||||
<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"/>
|
||||||
<disk id="disk" dir="/apps/pc/1981/visicalc/bin/">
|
<disk id="disk" dir="/apps/pcx86/1981/visicalc/bin/">
|
||||||
<file>VC.COM</file>
|
<file>VC.COM</file>
|
||||||
<file dir="../">README.md</file>
|
<file dir="../">README.md</file>
|
||||||
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
|
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
|
||||||
</disk>
|
</disk>
|
||||||
</manifest>
|
</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
|
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
|
[PCjs machine](/devices/pcx86/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
|
to its own <[computer](/docs/pcx86/computer/)> settings, unless the manifest overrides the machine's
|
||||||
default state with its own *state* setting; eg:
|
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.
|
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,
|
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:
|
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
|
The PCjs DiskDump module processes the dump request and generates a JSON-encoded DOS 2.x-compatible disk image
|
||||||
containing all the specified files.
|
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:
|
<disk> entry:
|
||||||
|
|
||||||
<manifest>
|
<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>
|
</disk>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
@ -95,8 +95,8 @@ be re-generated.
|
||||||
|
|
||||||
### Example: CP/M-86
|
### 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
|
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/pc/cpm/1.1b/manifest.xml):
|
folder's [manifest](/disks/pcx86/cpm/1.1b/manifest.xml):
|
||||||
|
|
||||||
<manifest>
|
<manifest>
|
||||||
<title>CP/M-86</title>
|
<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>
|
<company href="http://en.wikipedia.org/wiki/Digital_Research">Digital Research</company>
|
||||||
<publisher href="http://en.wikipedia.org/wiki/Eagle_Computer">Eagle Computer</publisher>
|
<publisher href="http://en.wikipedia.org/wiki/Eagle_Computer">Eagle Computer</publisher>
|
||||||
<releaseDate>May 20, 1983</releaseDate>
|
<releaseDate>May 20, 1983</releaseDate>
|
||||||
<machine href="/disks/pc/cpm/1.1b/machine.xml"/>
|
<machine href="/disks/pcx86/cpm/1.1b/machine.xml"/>
|
||||||
<disk id="disk01" href="/disks/pc/cpm/1.1b/cpm86-disk1.json">
|
<disk id="disk01" href="/disks/pcx86/cpm/1.1b/cpm86-disk1.json">
|
||||||
<name>CP/M-86 (Disk 1)</name>
|
<name>CP/M-86 (Disk 1)</name>
|
||||||
</disk>
|
</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>
|
<name>CP/M-86 (Disk 2)</name>
|
||||||
</disk>
|
</disk>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
@ -123,10 +123,10 @@ the disk images.
|
||||||
|
|
||||||
If a machine file wanted to use only the first disk, then it would specify:
|
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:
|
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
|
layout: page
|
||||||
title: IBM PC Applications (1981)
|
title: IBM PC Applications (1981)
|
||||||
permalink: /apps/pc/1981/
|
permalink: /apps/pcx86/1981/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/1981/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC Applications (1981)
|
IBM PC Applications (1981)
|
||||||
|
|
@ -1,12 +1,14 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: "VisiCalc (1981)"
|
title: "VisiCalc (1981)"
|
||||||
permalink: /apps/pc/1981/visicalc/
|
permalink: /apps/pcx86/1981/visicalc/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/1981/visicalc/
|
||||||
machines:
|
machines:
|
||||||
- type: pc
|
- type: pcx86
|
||||||
id: ibm5150
|
id: ibm5150
|
||||||
config: /devices/pc/machine/5150/mda/64kb/machine.xml
|
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||||
state: /apps/pc/1981/visicalc/state.json
|
state: /apps/pcx86/1981/visicalc/state.json
|
||||||
---
|
---
|
||||||
|
|
||||||
VisiCalc (1981)
|
VisiCalc (1981)
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<manifest type="software">
|
||||||
<title>VisiCalc</title>
|
<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 -->
|
<!-- 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>
|
<author href="http://www.frankston.com/public/?name=ImplementingVisiCalc">Bob Frankston</author>
|
||||||
<releaseDate>December 16, 1981</releaseDate>
|
<releaseDate>December 16, 1981</releaseDate>
|
||||||
<license href="http://www.bricklin.com/history/vclicense.htm">Lotus Development</license>
|
<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"/>
|
<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/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">
|
||||||
<name>VisiCalc (1981)</name>
|
<name>VisiCalc (1981)</name>
|
||||||
<file size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>
|
<file size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>
|
||||||
<file dir="../">README.md</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
|
layout: page
|
||||||
title: IBM PC Applications (1982)
|
title: IBM PC Applications (1982)
|
||||||
permalink: /apps/pc/1982/
|
permalink: /apps/pcx86/1982/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/1982/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC Applications (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 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">
|
<manifest type="software">
|
||||||
<title>Executive Suite</title>
|
<title>Executive Suite</title>
|
||||||
<version/>
|
<version/>
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
<category>Text Simulation</category>
|
<category>Text Simulation</category>
|
||||||
<author>Armonk Corporation</author>
|
<author>Armonk Corporation</author>
|
||||||
<releaseDate>1982</releaseDate>
|
<releaseDate>1982</releaseDate>
|
||||||
<machine href="/devices/pc/machine/5160/mda/256kb/fake188/machine.xml" state="/apps/pc/1982/esuite/state.json"/>
|
<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/pc/1982/esuite/disk.json" md5="7721a7bc9fcbd0005e7c1d87ecc055c5" md5json="dbf0a2c0176b8128d87e2465794764f4">
|
<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>
|
<name>Executive Suite (1982)</name>
|
||||||
<file size="384" time="2000-02-29 08:04:48" attr="0x20" md5="3e638560a5f483cdbd1be486b07c767e">ESUITE.COM</file>
|
<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 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
|
layout: page
|
||||||
title: IBM PC Applications (1985)
|
title: IBM PC Applications (1985)
|
||||||
permalink: /apps/pc/1985/
|
permalink: /apps/pcx86/1985/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/1985/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC Applications (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 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">
|
<manifest type="software">
|
||||||
<title>Rogue</title>
|
<title>Rogue</title>
|
||||||
<version/>
|
<version/>
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
<author>Ken Arnold</author>
|
<author>Ken Arnold</author>
|
||||||
<author>Jon Lane</author>
|
<author>Jon Lane</author>
|
||||||
<author>Michael Toy</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>
|
<name>Rogue (1985)</name>
|
||||||
<file size="14016" time="1985-03-25 14:33:18" attr="0x20" md5="e8f7c7b97210f480c7b741a0d58951bd">MKOPT.EXE</file>
|
<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>
|
<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="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>
|
<file size="0" time="1995-08-26 12:11:38" attr="0x20">ROGUE.SCR</file>
|
||||||
</disk>
|
</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>
|
</manifest>
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: IBM PC Applications (1987)
|
title: IBM PC Applications (1987)
|
||||||
permalink: /apps/pc/1987/
|
permalink: /apps/pcx86/1987/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/1987/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC Applications (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 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">
|
<manifest type="software">
|
||||||
<title>ThinkTank</title>
|
<title>ThinkTank</title>
|
||||||
<version>2.41NP</version>
|
<version>2.41NP</version>
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
<category>Productivity</category>
|
<category>Productivity</category>
|
||||||
<company>Living Videotext</company>
|
<company>Living Videotext</company>
|
||||||
<releaseDate>September 25, 1987</releaseDate>
|
<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>
|
<name>ThinkTank (1987)</name>
|
||||||
<file size="6" time="2012-11-20 15:29:40" attr="0x20" md5="50b68f3f99eda119c661b2b50cb9f4de">AUTOEXEC.BAT</file>
|
<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>
|
<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="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>
|
<file size="3072" time="2012-11-20 15:32:11" attr="0x20" md5="20ded226630726d7b26d0ec7832753d0" dir="TMPLATES/">WTMEASUR.TXT</file>
|
||||||
</disk>
|
</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>
|
</manifest>
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,7 +1,9 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: IBM PC Applications (1988)
|
title: IBM PC Applications (1988)
|
||||||
permalink: /apps/pc/1988/
|
permalink: /apps/pcx86/1988/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/1988/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC Applications (1988)
|
IBM PC Applications (1988)
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: The Dungeons of Moria (1988)
|
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)
|
The Dungeons of Moria (1988)
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<manifest type="software">
|
||||||
<title>The Dungeons of Moria</title>
|
<title>The Dungeons of Moria</title>
|
||||||
<version>4.872</version>
|
<version>4.872</version>
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<name>D. G. Kneller</name>
|
<name>D. G. Kneller</name>
|
||||||
<desc>MSDOS port</desc>
|
<desc>MSDOS port</desc>
|
||||||
</author>
|
</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>
|
<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="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>
|
<file size="91154" time="1991-06-01 14:50:02" attr="0x20" md5="66593e83a2aa3870d7a9e8b43079ce42">GOD</file>
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: IBM PC Applications (1992)
|
title: IBM PC Applications (1992)
|
||||||
permalink: /apps/pc/1992/
|
permalink: /apps/pcx86/1992/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/1992/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC Applications (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 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">
|
<manifest type="software">
|
||||||
<title>The Dungeons of Moria</title>
|
<title>The Dungeons of Moria</title>
|
||||||
<version>5.5</version>
|
<version>5.5</version>
|
||||||
|
|
@ -92,7 +92,7 @@
|
||||||
<name>Ben Schreiber</name>
|
<name>Ben Schreiber</name>
|
||||||
<desc>Macintosh port for Think C</desc>
|
<desc>Macintosh port for Think C</desc>
|
||||||
</contributor>
|
</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>
|
<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="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>
|
<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="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>
|
<file size="423" time="1992-11-01 23:15:44" attr="0x20" md5="07fdaebf594f9b34d54544c2b6aa36d8">WELCOME.HLP</file>
|
||||||
</disk>
|
</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>
|
</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
|
layout: page
|
||||||
title: IBM PC Application Archive
|
title: IBM PC Application Archive
|
||||||
permalink: /apps/pc/
|
permalink: /apps/pcx86/
|
||||||
|
redirect_from:
|
||||||
|
- /apps/pc/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC Application Archive
|
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/)
|
* [ThinkTank (1987)](1987/thinktank/)
|
||||||
* [The Dungeons of Moria (1992)](1992/moria/)
|
* [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
|
### Creating IBM PC Application Demos
|
||||||
|
|
||||||
Demos in our [Application Archives](/apps/) combine [Software Application Manifests](/apps/#software-application-manifests)
|
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.
|
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
|
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):
|
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
|
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:
|
(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
|
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,
|
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):
|
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 size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>
|
||||||
<file dir="../">README.md</file>
|
<file dir="../">README.md</file>
|
||||||
</disk>
|
</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
|
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):
|
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
|
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:
|
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
|
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):
|
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,
|
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.
|
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/))
|
* 6502-based Devices (e.g., [Challenger 1P](c1p/machine/))
|
||||||
* [8080-based Devices](pc8080/) (e.g., [Space Invaders](pc8080/machine/invaders/))
|
* [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,
|
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.
|
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 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">
|
<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>
|
<name>OSI Challenger 1P (32Kb) with Disk Support</name>
|
||||||
<computer id="c1p" name="Challenger 1P">
|
<computer id="c1p" name="Challenger 1P">
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<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>
|
<name>OSI Challenger 1P (8Kb, Additional Software)</name>
|
||||||
<computer id="c1p" name="Challenger 1P">
|
<computer id="c1p" name="Challenger 1P">
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<machine id="c1pAll" class="c1p" border="1" pos="center" background="#FAEBD7" style="padding-bottom:8px">
|
||||||
<name>OSI Challenger 1P (8Kb, Additional Software)</name>
|
<name>OSI Challenger 1P (8Kb, Additional Software)</name>
|
||||||
<computer id="c1p" name="Challenger 1P">
|
<computer id="c1p" name="Challenger 1P">
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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>
|
<outline>
|
||||||
<title>Challenger 1P (8Kb) "Server Array"</title>
|
<title>Challenger 1P (8Kb) "Server Array"</title>
|
||||||
<machine id="OSI1" ref="/devices/c1p/machine/8kb/small/machine.xml"/>
|
<machine id="OSI1" ref="/devices/c1p/machine/8kb/small/machine.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<machine id="c1p8kb" class="c1p" border="1" width="100%" background="#FAEBD7" style="padding-bottom:8px">
|
||||||
<name>OSI Challenger 1P (8Kb) with Debugger</name>
|
<name>OSI Challenger 1P (8Kb) with Debugger</name>
|
||||||
<computer id="c1p" name="Challenger 1P">
|
<computer id="c1p" name="Challenger 1P">
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<machine id="c1pLarge" class="c1p" border="1" pos="center" background="#FAEBD7" style="padding-bottom:8px">
|
||||||
<name pos="center">OSI Challenger 1P (circa 1978)</name>
|
<name pos="center">OSI Challenger 1P (circa 1978)</name>
|
||||||
<computer id="c1p" name="Challenger 1P">
|
<computer id="c1p" name="Challenger 1P">
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<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">
|
<computer id="c1p" name="Challenger 1P">
|
||||||
<module type="cpu" refid="cpu6502" start="0x0000" end="0xffff"/>
|
<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