diff --git a/apps/pc/1981/visicalc/manifest.xml b/apps/pc/1981/visicalc/manifest.xml
index d52969394..4823e9b66 100644
--- a/apps/pc/1981/visicalc/manifest.xml
+++ b/apps/pc/1981/visicalc/manifest.xml
@@ -13,7 +13,7 @@
Lotus Development
- Demo: VisiCalc
+ Demo: VisiCalc (1981)
VC.COM
README.md
VisiCalc License
diff --git a/apps/pc/1987/thinktank/manifest.xml b/apps/pc/1987/thinktank/manifest.xml
index 834d9b4cc..e7d2232a6 100644
--- a/apps/pc/1987/thinktank/manifest.xml
+++ b/apps/pc/1987/thinktank/manifest.xml
@@ -8,7 +8,7 @@
Living Videotext
September 25, 1987
- Demo: ThinkTank 2.41NP
+ Demo: ThinkTank (1987)
AUTOEXEC.BAT
READ_ME.DB
READ_ME.SAV
diff --git a/apps/pc/1988/moria/manifest.xml b/apps/pc/1988/moria/manifest.xml
index 429d73ea0..bc0771df1 100644
--- a/apps/pc/1988/moria/manifest.xml
+++ b/apps/pc/1988/moria/manifest.xml
@@ -15,7 +15,7 @@
MSDOS port
- Demo: Moria v4.872
+ Demo: Moria 4.872 (1988)
CONFIG.DOC
GOD
MADNESS1
diff --git a/apps/pc/1992/moria/manifest.xml b/apps/pc/1992/moria/manifest.xml
index bad158e3d..23d6e182b 100644
--- a/apps/pc/1992/moria/manifest.xml
+++ b/apps/pc/1992/moria/manifest.xml
@@ -93,7 +93,7 @@
Macintosh port for Think C
- Demo: Moria 5.5
+ Demo: Moria 5.5 (1992)
EXP.DOC
MORIA.CNF
MORIA1.TXT
diff --git a/disks/pc/compiled/library.xml b/disks/pc/compiled/library.xml
index 40c35b613..becd562b1 100644
--- a/disks/pc/compiled/library.xml
+++ b/disks/pc/compiled/library.xml
@@ -502,11 +502,11 @@
Wolfenstein 3D 1.4
MS Flight Simulator (1982)
MS Flight Simulator (1984)
- Demo: VisiCalc
+ Demo: VisiCalc (1981)
Demo: Executive Suite (1982)
Demo: Rogue (1985)
- Demo: ThinkTank 2.41NP
- Demo: Moria 5.5
+ Demo: ThinkTank (1987)
+ Demo: Moria 5.5 (1992)
DOS Internals
The Undocumented PC
Undocumented DOS (Disk 1)
diff --git a/disks/pc/compiled/samples.xml b/disks/pc/compiled/samples.xml
index 0cb078410..792102076 100644
--- a/disks/pc/compiled/samples.xml
+++ b/disks/pc/compiled/samples.xml
@@ -7,7 +7,7 @@
PC-DOS 2.00 (Disk 1)
PC-DOS 2.00 (Disk 2)
Microsoft Adventure
- Demo: VisiCalc
+ Demo: VisiCalc (1981)
Load
Save
diff --git a/docs/pcjs/examples/pc-dbg.js b/docs/pcjs/examples/pc-dbg.js
index 34786f72b..68317b23a 100644
--- a/docs/pcjs/examples/pc-dbg.js
+++ b/docs/pcjs/examples/pc-dbg.js
@@ -594,9 +594,9 @@ b+" changes applied)";b=-1;break}if(this.ef){c="unable to modify write-protected
m.toJSON=function(){var a;a=0;for(var b;b=Yo(this,a++);)qp(b);a=JSON.stringify(this.A,function(a,b){return"file"==a?void 0:b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")};
function qp(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}function rp(a){Ua.call(this,"FDC",a,rp,524288);this.dmaRead=this.wk;this.dmaWrite=this.xk;this.dmaFormat=this.Lk;this.U=a.autoMount||null;this.ga=a.sortBy||"name";"none"==this.ga&&(this.ga=null);this.B=[];this.ja=!Ga("Mobi")&&window&&"FileReader"in window}db(rp);aa={};
var sp={3:{Vd:3,ie:0,name:aa.Zn},4:{Vd:2,ie:1,name:aa.Xn},5:{Vd:9,ie:7,name:aa.io},6:{Vd:9,ie:7,name:aa.Sn},7:{Vd:2,ie:0,name:aa.Un},8:{Vd:1,ie:2,name:aa.Yn},10:{Vd:2,ie:7,name:aa.Tn},13:{Vd:6,ie:7,name:aa.En},15:{Vd:3,ie:0,name:aa.Wn}};m=rp.prototype;
-m.Qb=function(a,b,c){var d=this;switch(b){case "listDisks":this.qa[b]=c;if(this.ga){b=[];for(a=0;ab.text?1:a.textb.value?1:a.value'+b+"");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.qa[b]=c,c.onchange=function(){var a=ca(c.value,10);null!=a&&tp(d,a)},!0;case "loadDrive":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&up(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.ja){c.parentNode.removeChild(c);break}this.qa[b]=c;c.onclick=function(){var a=d.qa.listDrives;a&&a.options&&d.A&&(a=ca(a.value,
-10),(a=d.A[a])?(a=a.za)?(a=Ia(pp(a),"octet-stream",!0,a.Ng.replace(".json",".img")),w(a)):d.Na("No diskette loaded in drive."):d.Na("No diskette drive selected."))};return!0;case "mountDrive":if(!this.ja){c.parentNode.removeChild(c);break}this.qa[b]=c;c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length});c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;up(d,fa(b,!0),b,a)}return!1};return!0}return!1};
+m.Qb=function(a,b,c){var d=this;switch(b){case "listDisks":this.qa[b]=c;if(this.ga){b=[];for(a=0;a'+b+"");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.qa[b]=c,c.onchange=function(){var a=ca(c.value,10);null!=a&&tp(d,a)},!0;case "loadDrive":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&up(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.ja){c.parentNode.removeChild(c);break}this.qa[b]=c;c.onclick=function(){var a=d.qa.listDrives;a&&a.options&&d.A&&(a=ca(a.value,10),(a=
+d.A[a])?(a=a.za)?(a=Ia(pp(a),"octet-stream",!0,a.Ng.replace(".json",".img")),w(a)):d.Na("No diskette loaded in drive."):d.Na("No diskette drive selected."))};return!0;case "mountDrive":if(!this.ja){c.parentNode.removeChild(c);break}this.qa[b]=c;c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length});c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;up(d,fa(b,!0),b,a)}return!1};return!0}return!1};
m.Ic=function(a,b,c,d){this.ea=b;this.F=c;this.ha=d;this.V=a;this.N=Eb(a,"ChipSet");if((this.U=Nc(this.V,"autoMount")||this.U)&&"string"==typeof this.U)try{this.U=eval("("+this.U+")")}catch(e){w("FDC auto-mount error: "+e.message+" ("+this.U+")"),this.U=null}vp(this);hc(b,this,wp);lc(b,this,xp);yp(this,"None","",!0);this.ja&&yp(this,"Local Disk","?");yp(this,"Remote Disk","??");zp(this)||rb(this)};
m.ic=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.V.dh){this.B=[];for(var c=0;cb.text?1:a.textb.value?1:a.value'+b+"");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.ka[b]=c,c.onchange=function(){var a=ca(c.value,10);null!=a&&tm(d,a)},!0;case "loadDrive":return this.ka[b]=c,c.onclick=function(){var a=d.ka.listDisks;a&&um(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.Y){c.parentNode.removeChild(c);break}this.ka[b]=c;c.onclick=function(){var a=d.ka.listDrives;a&&a.options&&d.B&&(a=ca(a.value,
-10),(a=d.B[a])?(a=a.ta)?(a=za(pm(a),"octet-stream",!0,a.nh.replace(".json",".img")),n(a)):d.Ba("No diskette loaded in drive."):d.Ba("No diskette drive selected."))};return!0;case "mountDrive":if(!this.Y){c.parentNode.removeChild(c);break}this.ka[b]=c;c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length});c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;um(d,fa(b,!0),b,a)}return!1};return!0}return!1};
+l.zb=function(a,b,c){var d=this;switch(b){case "listDisks":this.ka[b]=c;if(this.W){b=[];for(a=0;a'+b+"");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.ka[b]=c,c.onchange=function(){var a=ca(c.value,10);null!=a&&tm(d,a)},!0;case "loadDrive":return this.ka[b]=c,c.onclick=function(){var a=d.ka.listDisks;a&&um(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.Y){c.parentNode.removeChild(c);break}this.ka[b]=c;c.onclick=function(){var a=d.ka.listDrives;a&&a.options&&d.B&&(a=ca(a.value,10),(a=d.B[a])?
+(a=a.ta)?(a=za(pm(a),"octet-stream",!0,a.nh.replace(".json",".img")),n(a)):d.Ba("No diskette loaded in drive."):d.Ba("No diskette drive selected."))};return!0;case "mountDrive":if(!this.Y){c.parentNode.removeChild(c);break}this.ka[b]=c;c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length});c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;um(d,fa(b,!0),b,a)}return!1};return!0}return!1};
l.pc=function(a,b,c,d){this.ha=b;this.A=c;this.Ia=d;this.ba=a;this.P=kb(a,"ChipSet");if((this.K=jc(this.ba,"autoMount")||this.K)&&"string"==typeof this.K)try{this.K=eval("("+this.K+")")}catch(e){n("FDC auto-mount error: "+e.message+" ("+this.K+")"),this.K=null}vm(this);Nb(b,this,wm);Pb(b,this,xm);ym(this,"None","",!0);this.Y&&ym(this,"Local Disk","?");ym(this,"Remote Disk","??");zm(this)||ab(this)};
l.Vb=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.ba.jg){this.C=[];for(var c=0;c b.text)? 1 : ((a.text < b.text)? -1 : 0);
+ return a.text.localeCompare(b.text);
} else {
- return (a.value > b.value)? 1 : ((a.value < b.value)? -1 : 0);
+ return a.value.localeCompare(b.value);
}
});
for (i = 0; i < aOptions.length; i++) {