Merge branch 'master' into gh-pages
This commit is contained in:
commit
9681038ed8
28 changed files with 125 additions and 45 deletions
14
README.md
14
README.md
|
|
@ -36,16 +36,20 @@ Some pre-configured machines are shown below, ready to run BASIC, DOS, Windows,
|
|||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
There are many more [PCx86 Demos](/devices/pcx86/machine/#ready-to-run-app-demos), including an
|
||||
[IBM PC with Dual Displays](/devices/pcx86/machine/5150/dual/64kb/) demonstrating early multi-monitor support,
|
||||
|
|
|
|||
BIN
apps/pcx86/1982/esuite/thumbnail.jpg
Normal file
BIN
apps/pcx86/1982/esuite/thumbnail.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
apps/pcx86/1983/adventmath/thumbnail.jpg
Normal file
BIN
apps/pcx86/1983/adventmath/thumbnail.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
BIN
apps/pcx86/1985/rogue/thumbnail.jpg
Normal file
BIN
apps/pcx86/1985/rogue/thumbnail.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
|
|
@ -7,7 +7,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autostart="true"/>
|
||||
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autoStart="true" pos="left" padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="run">Run</control>
|
||||
<control type="button" binding="reset">Reset</control>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pcx86/panel/wide.xml"/>
|
||||
|
|
|
|||
32
devices/pcx86/machine/5150/dual/64kb/README.md
Normal file
32
devices/pcx86/machine/5150/dual/64kb/README.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC (Model 5150, 64Kb) with Dual Displays
|
||||
permalink: /devices/pcx86/machine/5150/dual/64kb/
|
||||
machines:
|
||||
- id: ibm5150
|
||||
type: pcx86
|
||||
autoMount:
|
||||
A:
|
||||
name: PC-DOS 3.00 (Disk 1)
|
||||
---
|
||||
|
||||
IBM PC (Model 5150, 64Kb) with Dual Displays
|
||||
--------------------------------------------
|
||||
|
||||
The original IBM PC supported multiple display adapters. This page demonstrates a PCjs hardware configuration with
|
||||
both a Monochrome Display connected to an MDA (Monochrome Display Adapter) and a Color Display connected to a CGA
|
||||
(Color Display Adapter).
|
||||
|
||||
At any given time, only one display was considered "active", and the initial active display was determined by switches
|
||||
on the motherboard. After booting DOS, you could use **MODE** commands to change the active display:
|
||||
|
||||
- *mode co40* selects the Color Display and sets it to 40-column mode
|
||||
- *mode co80* selects the Color Display and sets it to 80-column mode
|
||||
- *mode mono* selects the Monochrome Display, which supports only 80-column mode
|
||||
|
||||
The initial active display for the machine below is the Monochrome Display. Third-party software with dual-display
|
||||
support could write to both displays simultaneously, but most text-based applications only wrote to the active display.
|
||||
Programs that used color graphics, on the other hand, might use the Color Display whether or not it was currently
|
||||
active.
|
||||
|
||||
{% include machine.html id="ibm5150" %}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: IBM PC (Model 5150, 64Kb) with Dual Displays
|
||||
permalink: /devices/pcx86/machine/5150/dual/64kb/
|
||||
machines:
|
||||
- id: ibm5150
|
||||
type: pcx86
|
||||
resume: 1
|
||||
---
|
||||
|
||||
{% include machine.html id="ibm5150" %}
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda-dual.xml"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-dual.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="run">Run</control>
|
||||
<control type="button" binding="reset">Reset</control>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="run">Run</control>
|
||||
<control type="button" binding="reset">Reset</control>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pcx86/panel/wide.xml"/>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px">
|
||||
<control type="button" binding="run">Run</control>
|
||||
<control type="button" binding="reset">Reset</control>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autoStart="true"/>
|
||||
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<cpu id="cpu8088" model="8088" autoStart="true" pos="left" padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="run">Run</control>
|
||||
<control type="button" binding="reset">Reset</control>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
|
||||
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
|
||||
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pcx86/panel/default.xml"/>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
|
||||
<debugger id="debugger"/>
|
||||
<panel ref="/devices/pcx86/panel/default.xml"/>
|
||||
<fdc ref="/disks/pcx86/compiled/samples.xml" width="280px"/>
|
||||
<fdc ref="/disks/pcx86/compiled/library.xml" width="360px"/>
|
||||
<chipset id="chipset" model="5160" sw1="01110001" pos="left" padLeft="8px" padBottom="8px">
|
||||
<control type="switches" label="SW1" binding="sw1" left="0px"/>
|
||||
<control type="description" binding="swdesc" left="0px"/>
|
||||
|
|
|
|||
|
|
@ -5,8 +5,9 @@
|
|||
<version>1.00</version>
|
||||
<type>Game</type>
|
||||
<category>Text Adventure</category>
|
||||
<author>Microsoft</author>
|
||||
<releaseDate/>
|
||||
<publisher>Microsoft</publisher>
|
||||
<releaseDate>1981</releaseDate>
|
||||
<author>Gordon Letwin</author>
|
||||
<machine href="/disks/pcx86/games/microsoft/adventure/machine.xml"/>
|
||||
<disk id="disk01" href="/disks/pcx86/games/microsoft/adventure/ADVENTURE-1981.json" md5="88eed6b1cb7bafa1ab957fa9c6fc7105" md5json="c0b400918a442cd3a11315092a144c15">
|
||||
<name>Microsoft Adventure</name>
|
||||
|
|
|
|||
BIN
disks/pcx86/windows/1.00/thumbnail.jpg
Normal file
BIN
disks/pcx86/windows/1.00/thumbnail.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
|
|
@ -22,6 +22,8 @@ Microsoft Windows 1.01, the first public version of Windows, was released on Nov
|
|||
It is shown here running on an IBM PC XT (Model 5160) with an EGA Display. You can also run
|
||||
[Windows 1.01 with a CGA Display](cga/).
|
||||
|
||||
A demo of an earlier pre-release version, [Windows 1.0 ("Premiere Edition")](../1.00/), is also available.
|
||||
|
||||
{% include machine.html id="ibm5160-ega-win101" %}
|
||||
|
||||
Directory listings of the five 360Kb distribution diskettes are provided [below](#directory-listings).
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1084,7 +1084,7 @@ class FDC extends Component {
|
|||
if (!fRemount) this.cAutoMount = 0;
|
||||
for (var sDrive in this.configMount) {
|
||||
var configDrive = this.configMount[sDrive];
|
||||
var sDiskettePath = configDrive['path'] || "";
|
||||
var sDiskettePath = configDrive['path'] || this.findDisketteByName(configDrive['name']);
|
||||
if (sDiskettePath) {
|
||||
/*
|
||||
* WARNING: This conversion of drive letter to drive number, starting with A:, is very simplistic
|
||||
|
|
@ -1092,7 +1092,7 @@ class FDC extends Component {
|
|||
*/
|
||||
var iDrive = sDrive.charCodeAt(0) - 0x41;
|
||||
if (iDrive >= 0 && iDrive < this.aDrives.length) {
|
||||
var sDisketteName = configDrive['name'] || this.findDiskette(sDiskettePath) || "Unknown";
|
||||
var sDisketteName = configDrive['name'] || this.findDisketteByPath(sDiskettePath) || "Unknown";
|
||||
if (!this.loadDrive(iDrive, sDisketteName, sDiskettePath, true) && fRemount) {
|
||||
this.setReady(false);
|
||||
}
|
||||
|
|
@ -1361,7 +1361,7 @@ class FDC extends Component {
|
|||
}
|
||||
|
||||
/**
|
||||
* findDiskette(sPath)
|
||||
* findDisketteByPath(sPath)
|
||||
*
|
||||
* This is used to deal with mount requests (eg, autoMount) that supply a path without a name;
|
||||
* if we can find the path in the "listDisks" control, then we return the associated disk name.
|
||||
|
|
@ -1370,7 +1370,7 @@ class FDC extends Component {
|
|||
* @param {string} sPath
|
||||
* @return {string|null}
|
||||
*/
|
||||
findDiskette(sPath)
|
||||
findDisketteByPath(sPath)
|
||||
{
|
||||
var controlDisks = this.bindings["listDisks"];
|
||||
if (controlDisks && controlDisks.options) {
|
||||
|
|
@ -1382,6 +1382,30 @@ class FDC extends Component {
|
|||
return Str.getBaseName(sPath, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* findDisketteByName(sName)
|
||||
*
|
||||
* This is used to deal with mount requests (eg, autoMount) that supply a name without a path;
|
||||
* if we can find the name in the "listDisks" control, then we return the associated disk path.
|
||||
*
|
||||
* @this {FDC}
|
||||
* @param {string|undefined} sName
|
||||
* @return {string}
|
||||
*/
|
||||
findDisketteByName(sName)
|
||||
{
|
||||
if (sName) {
|
||||
var controlDisks = this.bindings["listDisks"];
|
||||
if (controlDisks && controlDisks.options) {
|
||||
for (var i = 0; i < controlDisks.options.length; i++) {
|
||||
var control = controlDisks.options[i];
|
||||
if (control.text == sName) return control.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* displayDiskette(iDrive, fUpdateDrive)
|
||||
*
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -60004,7 +60004,7 @@ class FDC extends Component {
|
|||
if (!fRemount) this.cAutoMount = 0;
|
||||
for (var sDrive in this.configMount) {
|
||||
var configDrive = this.configMount[sDrive];
|
||||
var sDiskettePath = configDrive['path'] || "";
|
||||
var sDiskettePath = configDrive['path'] || this.findDisketteByName(configDrive['name']);
|
||||
if (sDiskettePath) {
|
||||
/*
|
||||
* WARNING: This conversion of drive letter to drive number, starting with A:, is very simplistic
|
||||
|
|
@ -60012,7 +60012,7 @@ class FDC extends Component {
|
|||
*/
|
||||
var iDrive = sDrive.charCodeAt(0) - 0x41;
|
||||
if (iDrive >= 0 && iDrive < this.aDrives.length) {
|
||||
var sDisketteName = configDrive['name'] || this.findDiskette(sDiskettePath) || "Unknown";
|
||||
var sDisketteName = configDrive['name'] || this.findDisketteByPath(sDiskettePath) || "Unknown";
|
||||
if (!this.loadDrive(iDrive, sDisketteName, sDiskettePath, true) && fRemount) {
|
||||
this.setReady(false);
|
||||
}
|
||||
|
|
@ -60281,7 +60281,7 @@ class FDC extends Component {
|
|||
}
|
||||
|
||||
/**
|
||||
* findDiskette(sPath)
|
||||
* findDisketteByPath(sPath)
|
||||
*
|
||||
* This is used to deal with mount requests (eg, autoMount) that supply a path without a name;
|
||||
* if we can find the path in the "listDisks" control, then we return the associated disk name.
|
||||
|
|
@ -60290,7 +60290,7 @@ class FDC extends Component {
|
|||
* @param {string} sPath
|
||||
* @return {string|null}
|
||||
*/
|
||||
findDiskette(sPath)
|
||||
findDisketteByPath(sPath)
|
||||
{
|
||||
var controlDisks = this.bindings["listDisks"];
|
||||
if (controlDisks && controlDisks.options) {
|
||||
|
|
@ -60302,6 +60302,30 @@ class FDC extends Component {
|
|||
return Str.getBaseName(sPath, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* findDisketteByName(sName)
|
||||
*
|
||||
* This is used to deal with mount requests (eg, autoMount) that supply a name without a path;
|
||||
* if we can find the name in the "listDisks" control, then we return the associated disk path.
|
||||
*
|
||||
* @this {FDC}
|
||||
* @param {string|undefined} sName
|
||||
* @return {string}
|
||||
*/
|
||||
findDisketteByName(sName)
|
||||
{
|
||||
if (sName) {
|
||||
var controlDisks = this.bindings["listDisks"];
|
||||
if (controlDisks && controlDisks.options) {
|
||||
for (var i = 0; i < controlDisks.options.length; i++) {
|
||||
var control = controlDisks.options[i];
|
||||
if (control.text == sName) return control.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* displayDiskette(iDrive, fUpdateDrive)
|
||||
*
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue