Fixed machine array demos, by permitting machine IDs with hyphenated numeric suffixes to use a machine state file created with an unhyphenated machine ID, and added a demo of Windows 1.0 (the "Premiere Edition")
This commit is contained in:
parent
2f1ab7df40
commit
503cda40f7
27 changed files with 99 additions and 57 deletions
|
|
@ -4,13 +4,13 @@ title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) Machine Array with CGA Displays
|
|||
permalink: /devices/pcx86/machine/5160/cga/256kb/array/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160a
|
||||
id: ibm5160-1
|
||||
- type: pcx86
|
||||
id: ibm5160b
|
||||
id: ibm5160-2
|
||||
---
|
||||
|
||||
IBM PC XT Machine Array with CGA Displays
|
||||
---
|
||||
-----------------------------------------
|
||||
|
||||
### Demonstration of Multiple IBM PCs on a Single Web Page
|
||||
|
||||
|
|
@ -18,6 +18,6 @@ The simulations below are identical PC XT configurations, each with a clock spee
|
|||
and a CGA display, using the original IBM PC Model 5160 ROM BIOS and CGA font ROM. Each also includes an
|
||||
empty/unformatted 10Mb hard disk. Use FDISK and then FORMAT to turn it into a usable C: drive.
|
||||
|
||||
{% include machine.html id="ibm5160a" %}
|
||||
{% include machine.html id="ibm5160-1" %}
|
||||
|
||||
{% include machine.html id="ibm5160b" %}
|
||||
{% include machine.html id="ibm5160-2" %}
|
||||
|
|
|
|||
|
|
@ -3,28 +3,36 @@ layout: page
|
|||
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) Machine Array with EGA Displays
|
||||
permalink: /devices/pcx86/machine/5160/ega/640kb/array/
|
||||
machines:
|
||||
- type: pcx86
|
||||
id: ibm5160a
|
||||
- type: pcx86
|
||||
id: ibm5160b
|
||||
- type: pcx86
|
||||
id: ibm5160c
|
||||
- type: pcx86
|
||||
id: ibm5160d
|
||||
- id: ibm5160-ega-win101-1
|
||||
type: pcx86
|
||||
state: /disks/pcx86/windows/1.01/state.json
|
||||
drives: '[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-EGA.json"}]'
|
||||
- id: ibm5160-ega-win101-2
|
||||
type: pcx86
|
||||
state: /disks/pcx86/windows/1.01/state.json
|
||||
drives: '[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-EGA.json"}]'
|
||||
- id: ibm5160-ega-win101-3
|
||||
type: pcx86
|
||||
state: /disks/pcx86/windows/1.01/state.json
|
||||
drives: '[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-EGA.json"}]'
|
||||
- id: ibm5160-ega-win101-4
|
||||
type: pcx86
|
||||
state: /disks/pcx86/windows/1.01/state.json
|
||||
drives: '[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-EGA.json"}]'
|
||||
---
|
||||
|
||||
IBM PC XT Machine Array with EGA Displays
|
||||
---
|
||||
-----------------------------------------
|
||||
|
||||
### Demonstration of Multiple IBM PCs on a Single Web Page
|
||||
|
||||
The simulations below are identical PC XT configurations, each with a clock speed of 4.77Mhz, 640Kb of RAM,
|
||||
and a 128Kb EGA connected to an Enhanced Color Display, using the original IBM EGA BIOS.
|
||||
|
||||
{% include machine.html id="ibm5160a" %}
|
||||
{% include machine.html id="ibm5160-ega-win101-1" %}
|
||||
|
||||
{% include machine.html id="ibm5160b" %}
|
||||
{% include machine.html id="ibm5160-ega-win101-2" %}
|
||||
|
||||
{% include machine.html id="ibm5160c" %}
|
||||
{% include machine.html id="ibm5160-ega-win101-3" %}
|
||||
|
||||
{% include machine.html id="ibm5160d" %}
|
||||
{% include machine.html id="ibm5160-ega-win101-4" %}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.35.1/machine.xsl"?>
|
||||
<machine id="ibm5160" type="pcx86" border="1" width="680px" float="left" background="default">
|
||||
<name pos="center">IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk</name>
|
||||
<computer id="xt-ega-640k" name="IBM PC XT" state="/disks/pcx86/windows/1.01/ibm5160-ega.json"/>
|
||||
<computer id="xt-ega-640k" name="IBM PC XT"/>
|
||||
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="0xa0000 (640Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
|
||||
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
|
||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
<control type="button" binding="setSpeed">Fast</control>
|
||||
</cpu>
|
||||
<chipset id="chipset" model="5160" sw1="01001101"/>
|
||||
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-ega.xml"/>
|
||||
<hdc ref="/disks/pcx86/fixed/10mb/unformatted.xml"/>
|
||||
<serial id="com2" adapter="2"/>
|
||||
<mouse serial="com2"/>
|
||||
</machine>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
<control type="switches" label="SW1" binding="sw1" left="0px"/>
|
||||
<control type="description" binding="swdesc" left="0px"/>
|
||||
</chipset>
|
||||
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-ega.xml"/>
|
||||
<hdc ref="/disks/pcx86/fixed/10mb/unformatted.xml"/>
|
||||
<serial id="com1" adapter="1" binding="print"/>
|
||||
<serial id="com2" adapter="2"/>
|
||||
<mouse serial="com2"/>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
<fdc ref="/disks/pcx86/compiled/library.xml"/>
|
||||
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
|
||||
<chipset id="chipset" model="5160" sw1="01001101"/>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
|
||||
<hdc ref="/disks/pcx86/fixed/10mb/unformatted.xml"/>
|
||||
<serial id="com2" adapter="2"/>
|
||||
<mouse serial="com2"/>
|
||||
</machine>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ permalink: /disks/pcx86/dos/ibm/3.00/
|
|||
---
|
||||
|
||||
PC-DOS 3.00
|
||||
---
|
||||
-----------
|
||||
|
||||
PC-DOS 3.00 was announced on August 14, 1984 and released in September 1984.
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ permalink: /disks/pcx86/dos/ibm/3.10/
|
|||
---
|
||||
|
||||
PC-DOS 3.10
|
||||
---
|
||||
-----------
|
||||
|
||||
PC-DOS 3.10 was announced on August 14, 1984 (along with [PC-DOS 3.00](/disks/pcx86/dos/ibm/3.00/)) and released
|
||||
on April 2, 1985.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ permalink: /disks/pcx86/dos/ibm/3.20/
|
|||
---
|
||||
|
||||
PC-DOS 3.20
|
||||
---
|
||||
-----------
|
||||
|
||||
PC-DOS 3.20 was first announced on March 18, 1986 and released later that year.
|
||||
|
||||
|
|
|
|||
1
disks/pcx86/fixed/10mb/PCDOS310-WIN100-EGA.json
Normal file
1
disks/pcx86/fixed/10mb/PCDOS310-WIN100-EGA.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -5,11 +5,11 @@ permalink: /disks/pcx86/fixed/10mb/
|
|||
---
|
||||
|
||||
10Mb Hard Drive (Fixed Disk) Images
|
||||
---
|
||||
-----------------------------------
|
||||
|
||||
This folder contains the following 10Mb fixed disk images:
|
||||
|
||||
* [Empty formatted disk](PCDOS200-EMPTY.json)
|
||||
* [Empty formatted disk](PCDOS200-EMPTY.json) ([XML](pcdos200-empty.xml))
|
||||
* [PC-DOS 2.00 with Windows 1.01 for CGA](PCDOS200-WIN101-CGA.json) ([XML](pcdos200-win101-cga.xml))
|
||||
* [PC-DOS 2.00 with Windows 1.01 for EGA](PCDOS200-WIN101-EGA.json) ([XML](pcdos200-win101-ega.xml))
|
||||
|
||||
|
|
@ -28,10 +28,10 @@ or by reference:
|
|||
|
||||
### Notes Regarding 10Mb Disks
|
||||
|
||||
The [Empty formatted disk](PCDOS200-EMPTY.json) is *completely* empty. It was partitioned with the PC-DOS 2.00 **FDISK** utility,
|
||||
allocating the entire disk to a single DOS partition, and then it was formatted with the PC-DOS 2.00 **FORMAT** utility.
|
||||
Neither the **FORMAT** "/S" option nor the **SYS** command were used, so no system files were transferred, leaving
|
||||
the disk completely empty and non-bootable.
|
||||
The [Empty formatted disk](PCDOS200-EMPTY.json) is *completely* empty. It was partitioned with the PC-DOS 2.00
|
||||
**FDISK** utility, allocating the entire disk to a single DOS partition, and then it was formatted with the PC-DOS 2.00
|
||||
**FORMAT** utility. Neither the **FORMAT** "/S" option nor the **SYS** command were used, so no system files were
|
||||
transferred, leaving the disk completely empty and non-bootable.
|
||||
|
||||
After formatting, PC-DOS 2.00 reports:
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ is not allowed, another 2 sectors are lost, bringing the total FAT file system o
|
|||
Thus, actual free space is (20739 - 51) * 512, or 10,592,256 bytes, which is exactly what DOS reports as the available
|
||||
space.
|
||||
|
||||
Some sources on the internet (eg, [http://www.wikiwand.com/en/Timeline_of_DOS_operating_systems](http://www.wikiwand.com/en/Timeline_of_DOS_operating_systems))
|
||||
Some sources on the internet (eg,[http://www.wikiwand.com/en/Timeline_of_DOS_operating_systems](http://www.wikiwand.com/en/Timeline_of_DOS_operating_systems))
|
||||
claim that the FAT file system overhead for the XT's 10Mb disk is "50 sectors". As they explain:
|
||||
|
||||
"The fixed disk has 10,618,880 bytes of raw space: 305 cylinders (the equivalent of tracks) × 2 platters
|
||||
|
|
|
|||
4
disks/pcx86/fixed/10mb/pcdos200-empty.xml
Normal file
4
disks/pcx86/fixed/10mb/pcdos200-empty.xml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS200-EMPTY.json"}]' padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="saveHD0">Save HD</control>
|
||||
</hdc>
|
||||
|
|
@ -1,2 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Drive",path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-CGA.json",type:3}]'/>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-CGA.json"}]' padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="saveHD0">Save HD</control>
|
||||
</hdc>
|
||||
|
|
|
|||
|
|
@ -1,2 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Drive",path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-EGA.json",type:3}]'/>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS200-WIN101-EGA.json"}]' padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="saveHD0">Save HD</control>
|
||||
</hdc>
|
||||
|
|
|
|||
4
disks/pcx86/fixed/10mb/unformatted.xml
Normal file
4
disks/pcx86/fixed/10mb/unformatted.xml
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]' padLeft="8px" padBottom="8px">
|
||||
<control type="button" binding="saveHD0">Save HD</control>
|
||||
</hdc>
|
||||
|
|
@ -5,7 +5,7 @@ permalink: /disks/pcx86/fixed/20mb/
|
|||
---
|
||||
|
||||
20Mb Hard Drive (Fixed Disk) Images
|
||||
---
|
||||
-----------------------------------
|
||||
|
||||
This folder contains the following 20Mb disk images:
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,28 @@
|
|||
---
|
||||
layout: page
|
||||
title: Microsoft Windows 1.00
|
||||
title: Microsoft Windows 1.0
|
||||
permalink: /disks/pcx86/windows/1.00/
|
||||
machines:
|
||||
- id: ibm5160-ega-win100
|
||||
type: pcx86
|
||||
state: /disks/pcx86/windows/1.00/state.json
|
||||
config: /devices/pcx86/machine/5160/ega/640kb/machine.xml
|
||||
drives: '[{name:"10Mb Hard Disk",type:3,path:"/disks/pcx86/fixed/10mb/PCDOS310-WIN100-EGA.json"}]'
|
||||
autoMount:
|
||||
A:
|
||||
path: /disks/pcx86/dos/ibm/3.10/PCDOS310-DISK1.json
|
||||
B:
|
||||
name: /disks/pcx86/dos/ibm/3.10/PCDOS310-DISK1.json
|
||||
---
|
||||
|
||||
Microsoft Windows 1.00 ("Premiere Edition")
|
||||
---
|
||||
Microsoft Windows 1.0 ("Premiere Edition")
|
||||
------------------------------------------
|
||||
|
||||
Windows 1.00 was not a public release. Microsoft released these disks (dubbed the "Premiere Edition") to selected
|
||||
vendors, analysts, and members of the press in Summer 1985 to obtain feedback on the product.
|
||||
Windows 1.0 was not a public release. Microsoft released these disks (dubbed the "Premiere Edition") to selected
|
||||
vendors, analysts, and members of the press in Summer 1985 to obtain feedback on the product. [Windows 1.01](../1.01/)
|
||||
was the first public release.
|
||||
|
||||
[Windows 1.01](../1.01/) was the first public release.
|
||||
{% include machine.html id="ibm5160-ega-win100" %}
|
||||
|
||||
Directory listings of the four 360Kb distribution diskettes are provided below.
|
||||
|
||||
|
|
|
|||
1
disks/pcx86/windows/1.00/state.json
Normal file
1
disks/pcx86/windows/1.00/state.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -9,7 +9,7 @@ Microsoft Windows
|
|||
|
||||
Information is available for assorted versions of Microsoft Windows:
|
||||
|
||||
* [Microsoft Windows 1.00](/disks/pcx86/windows/1.00/)
|
||||
* [Microsoft Windows 1.00 (Demo)](/disks/pcx86/windows/1.00/)
|
||||
* [Microsoft Windows 1.01 (Demo)](/disks/pcx86/windows/1.01/)
|
||||
* [Microsoft Windows 1.02](/disks/pcx86/windows/1.02/)
|
||||
* [Microsoft Windows 1.03](/disks/pcx86/windows/1.03/)
|
||||
|
|
|
|||
|
|
@ -864,7 +864,7 @@ function LB(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms)
|
|||
function QB(a,b){var c=new Zf(a,"1.35.1",RB);if(c.load()&&SB(c)){var d=c.get(TB),e=b?b.get(TB):"unknown";d!=e&&(a.Da("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=KB.prototype;
|
||||
l.Mf=function(a){void 0===a&&(a=this.A||(this.L?UB:MB));if(!this.B){this.B++;var b=!1,c=!1;this.Y=!1;var d=this.M||new Zf(this,"1.35.1");if(a==VB)b=!0;else if(a>MB){if(d.load(this.L)){this.F=new Zf(this,"1.35.1",WB);this.F.load()&&(XB(this,d)&&(a=YB),ZB(this.F));this.F.set(TB,Ea());$B(this.F);var e=this.A&&!this.I;if(a==UB||ub("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=SB(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&
|
||||
"no machine state"!=g?(this.Da("Error: "+g),"unable to verify user"==g&&(Va(aC,""),this.C=null)):this.P(f+": "+g),ZB(d),d.load()?(c=SB(d),e=!0):c=!1))}e&&QB(this,c?d:null)}else a==YB&&d.clear()}else QB(this);delete this.L;delete this.M}e=vb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.H&&(c=bC(this,g,d,b,c));b=[d,a,c];a!=VB?PB(this,this.oj,b):this.oj(b)}};
|
||||
function bC(a,b,c,d,e){if(!b.da.Yb){b.da.Yb=!0;if(b.Xb){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Xb(f,d)&&f&&(b.Da("Unable to restore hardware state")&&(a.W&&!a.Z?(c.clear(),a.A=MB,window&&window.location.reload()):a.Y=!0),b.Xb(null),e=!1)}if(!d&&b.zj)for(a=b.zj.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
function bC(a,b,c,d,e){if(!b.da.Yb){b.da.Yb=!0;if(b.Xb){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/-[0-9]+\./i,"."))));"string"===typeof f&&(f=null);!b.Xb(f,d)&&f&&(b.Da("Unable to restore hardware state")&&(a.W&&!a.Z?(c.clear(),a.A=MB,window&&window.location.reload()):a.Y=!0),b.Xb(null),e=!1)}if(!d&&b.zj)for(a=b.zj.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
l.oj=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.da.Yb=!0;var d=this.na.power;d&&(d.textContent="Shutdown");this.H&&(bC(this,this.H,b,c,a),this.H.mf());this.Y&&(XB(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0};
|
||||
function XB(a,b){if(!a.da.Tf){if(ub("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.C||"";b=b.toString();var d={app:"PCx86",ver:"1.35.1"};d.url=a.ea;d.user=c;d.type="bug";d.data=b;Na("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1}
|
||||
function rB(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new Zf(a,"1.35.1"),g=new Zf(a,"1.35.1",RB),h=Ea();g.set(TB,h);f.set(TB,h);f.set(cC,"1.35.1");f.set(dC,window?window.location.href:null);f.set(eC,Pa());a.H&&a.H.Wb&&(c&&a.H.Jb(),d=a.H.Wb(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.da.Yb=!1,!1===d&&(e=null)));for(var h=vb(a.id),k=0;k<h.length;k++){var m=h[k];m.da.Yb&&(m.Wb&&(d=m.Wb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.da.Yb=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.C&&fC(a,
|
||||
|
|
|
|||
|
|
@ -667,7 +667,7 @@ function Qu(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms)
|
|||
function Vu(a,b){var c=new Te(a,"1.35.1",Wu);if(c.load()&&Xu(c)){var d=c.get(Yu),e=b?b.get(Yu):"unknown";d!=e&&(a.wa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Pu.prototype;
|
||||
k.af=function(a){void 0===a&&(a=this.A||(this.K?Zu:Ru));if(!this.C){this.C++;var b=!1,c=!1;this.W=!1;var d=this.L||new Te(this,"1.35.1");if(a==$u)b=!0;else if(a>Ru){if(d.load(this.K)){this.F=new Te(this,"1.35.1",av);this.F.load()&&(bv(this,d)&&(a=cv),dv(this.F));this.F.set(Yu,wa());ev(this.F);var e=this.A&&!this.H;if(a==Zu||ab("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Xu(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&
|
||||
"no machine state"!=g?(this.wa("Error: "+g),"unable to verify user"==g&&(Ja(fv,""),this.B=null)):this.Zb(f+": "+g),dv(d),d.load()?(c=Xu(d),e=!0):c=!1))}e&&Vu(this,c?d:null)}else a==cv&&d.clear()}else Vu(this);delete this.K;delete this.L}e=bb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.U&&(c=gv(this,g,d,b,c));b=[d,a,c];a!=$u?Uu(this,this.mi,b):this.mi(b)}};
|
||||
function gv(a,b,c,d,e){if(!b.aa.Pb){b.aa.Pb=!0;if(b.Ob){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ob(f,d)&&f&&(b.wa("Unable to restore hardware state")&&(a.V&&!a.X?(c.clear(),a.A=Ru,window&&window.location.reload()):a.W=!0),b.Ob(null),e=!1)}if(!d&&b.vi)for(a=b.vi.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
function gv(a,b,c,d,e){if(!b.aa.Pb){b.aa.Pb=!0;if(b.Ob){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/-[0-9]+\./i,"."))));"string"===typeof f&&(f=null);!b.Ob(f,d)&&f&&(b.wa("Unable to restore hardware state")&&(a.V&&!a.X?(c.clear(),a.A=Ru,window&&window.location.reload()):a.W=!0),b.Ob(null),e=!1)}if(!d&&b.vi)for(a=b.vi.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.mi=function(a){var b=a[0],c=0>a[1];a=a[2];this.ea=!0;this.aa.Pb=!0;var d=this.ia.power;d&&(d.textContent="Shutdown");this.U&&(gv(this,this.U,b,c,a),this.U.Fe());this.W&&(bv(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0};
|
||||
function bv(a,b){if(!a.aa.hf){if(ab("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.35.1"};d.url=a.ca;d.user=c;d.type="bug";d.data=b;Ea("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1}
|
||||
function hv(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Te(a,"1.35.1"),g=new Te(a,"1.35.1",Wu),h=wa();g.set(Yu,h);f.set(Yu,h);f.set(iv,"1.35.1");f.set(jv,window?window.location.href:null);f.set(kv,window?window.navigator.userAgent:"");a.U&&a.U.Nb&&(c&&Tc(a.U),d=a.U.Nb(b,c),"object"===typeof d&&f.set(a.U.id,d),c&&(a.U.aa.Pb=!1,!1===d&&(e=null)));for(var h=bb(a.id),l=0;l<h.length;l++){var m=h[l];m.aa.Pb&&(m.Nb&&(d=m.Nb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.aa.Pb=!1,!1===d&&(e=
|
||||
|
|
|
|||
|
|
@ -2686,11 +2686,15 @@ DiskDump.prototype.convertToJSON = function()
|
|||
var bMediaTypeBPB = this.bufDisk.readUInt8(offBootSector + DiskAPI.BPB.MEDIA_TYPE);
|
||||
var nSectorsTotalBPB = this.bufDisk.readUInt16LE(offBootSector + DiskAPI.BPB.TOTAL_SECS);
|
||||
var nSectorsPerCylinderBPB = nSectorsPerTrackBPB * nHeadsBPB;
|
||||
var nCylindersBPB = Math.floor(nSectorsTotalBPB / nSectorsPerCylinderBPB);
|
||||
var nSectorsHiddenBPB = this.bufDisk.readUInt16LE(offBootSector + DiskAPI.BPB.HIDDEN_SECS);
|
||||
var nCylindersBPB = (nSectorsHiddenBPB + nSectorsTotalBPB) / nSectorsPerCylinderBPB;
|
||||
|
||||
if (diskFormat) {
|
||||
if (nCylinders != nCylindersBPB) {
|
||||
DiskDump.logWarning("BPB cylinders (" + nCylindersBPB + ") do not match actual cylinders (" + nCylinders + ")");
|
||||
if (nCylinders - nCylindersBPB == 1) {
|
||||
DiskDump.logWarning("the BIOS may have reserved the last cylinder for diagnostics");
|
||||
}
|
||||
}
|
||||
if (nHeads != nHeadsBPB) {
|
||||
DiskDump.logWarning("BPB heads (" + nHeadsBPB + ") do not match actual heads (" + nHeads + ")");
|
||||
|
|
|
|||
|
|
@ -645,15 +645,17 @@ class Computer extends Component {
|
|||
if (!data) {
|
||||
/*
|
||||
* This is a hack that makes it possible for a machine whose ID has been
|
||||
* supplemented with a suffix (a single letter or digit) to find object IDs
|
||||
* in states created from a machine without the suffix.
|
||||
* supplemented with a hyphenated numeric suffix to find object IDs in states
|
||||
* created from a machine without such a suffix.
|
||||
*
|
||||
* For example, if a state file was created from a machine with ID "ibm5160"
|
||||
* but the current machine is "ibm5160a", this attempts a second lookup with
|
||||
* but the current machine is "ibm5160-1", this attempts a second lookup with
|
||||
* "ibm5160", enabling us to find objects that match the original machine ID
|
||||
* (eg, "ibm5160.romEGA").
|
||||
*
|
||||
* See /devices/pcx86/machine/5160/ega/640kb/array/ for examples of this.
|
||||
*/
|
||||
data = stateComputer.get(component.id.replace(/[a-z0-9]\./i, '.'));
|
||||
data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -864,7 +864,7 @@ function LB(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms)
|
|||
function QB(a,b){var c=new Zf(a,"1.35.1",RB);if(c.load()&&SB(c)){var d=c.get(TB),e=b?b.get(TB):"unknown";d!=e&&(a.Da("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=KB.prototype;
|
||||
l.Mf=function(a){void 0===a&&(a=this.A||(this.L?UB:MB));if(!this.B){this.B++;var b=!1,c=!1;this.Y=!1;var d=this.M||new Zf(this,"1.35.1");if(a==VB)b=!0;else if(a>MB){if(d.load(this.L)){this.F=new Zf(this,"1.35.1",WB);this.F.load()&&(XB(this,d)&&(a=YB),ZB(this.F));this.F.set(TB,Ea());$B(this.F);var e=this.A&&!this.I;if(a==UB||ub("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=SB(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&
|
||||
"no machine state"!=g?(this.Da("Error: "+g),"unable to verify user"==g&&(Va(aC,""),this.C=null)):this.P(f+": "+g),ZB(d),d.load()?(c=SB(d),e=!0):c=!1))}e&&QB(this,c?d:null)}else a==YB&&d.clear()}else QB(this);delete this.L;delete this.M}e=vb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.H&&(c=bC(this,g,d,b,c));b=[d,a,c];a!=VB?PB(this,this.oj,b):this.oj(b)}};
|
||||
function bC(a,b,c,d,e){if(!b.da.Yb){b.da.Yb=!0;if(b.Xb){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Xb(f,d)&&f&&(b.Da("Unable to restore hardware state")&&(a.W&&!a.Z?(c.clear(),a.A=MB,window&&window.location.reload()):a.Y=!0),b.Xb(null),e=!1)}if(!d&&b.zj)for(a=b.zj.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
function bC(a,b,c,d,e){if(!b.da.Yb){b.da.Yb=!0;if(b.Xb){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/-[0-9]+\./i,"."))));"string"===typeof f&&(f=null);!b.Xb(f,d)&&f&&(b.Da("Unable to restore hardware state")&&(a.W&&!a.Z?(c.clear(),a.A=MB,window&&window.location.reload()):a.Y=!0),b.Xb(null),e=!1)}if(!d&&b.zj)for(a=b.zj.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
l.oj=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.da.Yb=!0;var d=this.na.power;d&&(d.textContent="Shutdown");this.H&&(bC(this,this.H,b,c,a),this.H.mf());this.Y&&(XB(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0};
|
||||
function XB(a,b){if(!a.da.Tf){if(ub("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.C||"";b=b.toString();var d={app:"PCx86",ver:"1.35.1"};d.url=a.ea;d.user=c;d.type="bug";d.data=b;Na("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1}
|
||||
function rB(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new Zf(a,"1.35.1"),g=new Zf(a,"1.35.1",RB),h=Ea();g.set(TB,h);f.set(TB,h);f.set(cC,"1.35.1");f.set(dC,window?window.location.href:null);f.set(eC,Pa());a.H&&a.H.Wb&&(c&&a.H.Jb(),d=a.H.Wb(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.da.Yb=!1,!1===d&&(e=null)));for(var h=vb(a.id),k=0;k<h.length;k++){var m=h[k];m.da.Yb&&(m.Wb&&(d=m.Wb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.da.Yb=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.C&&fC(a,
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -74457,15 +74457,17 @@ class Computer extends Component {
|
|||
if (!data) {
|
||||
/*
|
||||
* This is a hack that makes it possible for a machine whose ID has been
|
||||
* supplemented with a suffix (a single letter or digit) to find object IDs
|
||||
* in states created from a machine without the suffix.
|
||||
* supplemented with a hyphenated numeric suffix to find object IDs in states
|
||||
* created from a machine without such a suffix.
|
||||
*
|
||||
* For example, if a state file was created from a machine with ID "ibm5160"
|
||||
* but the current machine is "ibm5160a", this attempts a second lookup with
|
||||
* but the current machine is "ibm5160-1", this attempts a second lookup with
|
||||
* "ibm5160", enabling us to find objects that match the original machine ID
|
||||
* (eg, "ibm5160.romEGA").
|
||||
*
|
||||
* See /devices/pcx86/machine/5160/ega/640kb/array/ for examples of this.
|
||||
*/
|
||||
data = stateComputer.get(component.id.replace(/[a-z0-9]\./i, '.'));
|
||||
data = stateComputer.get(component.id.replace(/-[0-9]+\./i, '.'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -667,7 +667,7 @@ function Qu(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms)
|
|||
function Vu(a,b){var c=new Te(a,"1.35.1",Wu);if(c.load()&&Xu(c)){var d=c.get(Yu),e=b?b.get(Yu):"unknown";d!=e&&(a.wa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Pu.prototype;
|
||||
k.af=function(a){void 0===a&&(a=this.A||(this.K?Zu:Ru));if(!this.C){this.C++;var b=!1,c=!1;this.W=!1;var d=this.L||new Te(this,"1.35.1");if(a==$u)b=!0;else if(a>Ru){if(d.load(this.K)){this.F=new Te(this,"1.35.1",av);this.F.load()&&(bv(this,d)&&(a=cv),dv(this.F));this.F.set(Yu,wa());ev(this.F);var e=this.A&&!this.H;if(a==Zu||ab("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Xu(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&
|
||||
"no machine state"!=g?(this.wa("Error: "+g),"unable to verify user"==g&&(Ja(fv,""),this.B=null)):this.Zb(f+": "+g),dv(d),d.load()?(c=Xu(d),e=!0):c=!1))}e&&Vu(this,c?d:null)}else a==cv&&d.clear()}else Vu(this);delete this.K;delete this.L}e=bb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.U&&(c=gv(this,g,d,b,c));b=[d,a,c];a!=$u?Uu(this,this.mi,b):this.mi(b)}};
|
||||
function gv(a,b,c,d,e){if(!b.aa.Pb){b.aa.Pb=!0;if(b.Ob){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ob(f,d)&&f&&(b.wa("Unable to restore hardware state")&&(a.V&&!a.X?(c.clear(),a.A=Ru,window&&window.location.reload()):a.W=!0),b.Ob(null),e=!1)}if(!d&&b.vi)for(a=b.vi.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
function gv(a,b,c,d,e){if(!b.aa.Pb){b.aa.Pb=!0;if(b.Ob){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/-[0-9]+\./i,"."))));"string"===typeof f&&(f=null);!b.Ob(f,d)&&f&&(b.wa("Unable to restore hardware state")&&(a.V&&!a.X?(c.clear(),a.A=Ru,window&&window.location.reload()):a.W=!0),b.Ob(null),e=!1)}if(!d&&b.vi)for(a=b.vi.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.mi=function(a){var b=a[0],c=0>a[1];a=a[2];this.ea=!0;this.aa.Pb=!0;var d=this.ia.power;d&&(d.textContent="Shutdown");this.U&&(gv(this,this.U,b,c,a),this.U.Fe());this.W&&(bv(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0};
|
||||
function bv(a,b){if(!a.aa.hf){if(ab("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.35.1"};d.url=a.ca;d.user=c;d.type="bug";d.data=b;Ea("http://www.pcjs.org/api/v1/report",d,!0)}return!0}return!1}
|
||||
function hv(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Te(a,"1.35.1"),g=new Te(a,"1.35.1",Wu),h=wa();g.set(Yu,h);f.set(Yu,h);f.set(iv,"1.35.1");f.set(jv,window?window.location.href:null);f.set(kv,window?window.navigator.userAgent:"");a.U&&a.U.Nb&&(c&&Tc(a.U),d=a.U.Nb(b,c),"object"===typeof d&&f.set(a.U.id,d),c&&(a.U.aa.Pb=!1,!1===d&&(e=null)));for(var h=bb(a.id),l=0;l<h.length;l++){var m=h[l];m.aa.Pb&&(m.Nb&&(d=m.Nb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.aa.Pb=!1,!1===d&&(e=
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue