Switching to machine XML files that use a machine 'type' attribute rather than 'class'; 'class' can still be used to specify the machine type if 'type' is omitted, but going forward, it should only be used to specify an alternate CSS class

This commit is contained in:
Jeff Parsons 2017-01-31 22:05:03 -08:00 committed by Jeff Parsons
commit 8f0b808b1e
258 changed files with 423 additions and 394 deletions

View file

@ -649,23 +649,23 @@ var pt="Hard Drive",st=["XTC","ATC","COMPAQ"],qt=[{0:[306,2],1:[375,8],2:[306,6]
112,Tt=144,$t=145,Ut=240,au=2,Ot=4,gu=0,hu=2,ku=0,lu=1,cu=3,mu=5,nu=8,pu=10,At=12,ru=15,iu=224,ju=228,ot=0,eu=4,tu=20,nt=0,Bt=1,ut=2,yt=4,zt=8,tt=32,ft={800:Z.prototype.El,801:Z.prototype.Fl,802:Z.prototype.Dl},et={496:Z.prototype.dk,497:Z.prototype.Lk,498:Z.prototype.Nk,499:Z.prototype.Ok,500:Z.prototype.Jk,501:Z.prototype.Ik,502:Z.prototype.Kk,503:Z.prototype.Pk},ht={800:Z.prototype.Rm,801:Z.prototype.Um,802:Z.prototype.Tm,803:Z.prototype.Sm,807:Z.prototype.lh,811:Z.prototype.lh,815:Z.prototype.lh},
gt={496:Z.prototype.bm,497:Z.prototype.gm,498:Z.prototype.em,499:Z.prototype.fm,500:Z.prototype.am,501:Z.prototype.$l,502:Z.prototype.cm,503:Z.prototype.Zl,1014:Z.prototype.dm};Ea(function(){for(var a=Wa(document,"pcx86","hdc"),b=0;b<a.length;b++){var c=a[b],d=Ta(c),d=new Z(d);Va(d,c)}});
function vu(a,b,c){t.call(this,"Computer",a);this.ca.Pb=!1;wu(this,b);this.M=zc(this,"autoPower",a);this.C=0;this.Z=a.busWidth||a.buswidth;this.A=xu;this.K=null;this.H=this.X=!1;this.ba=zc(this,"url")||"";this.ga=(Math.random()+.1).toString(36).substr(2,12);this.B=yu(this);if(this.U=Sa("CPU",this.id)){this.Ea=Sa("Debugger",this.id);this.G=[];for(b=null;b=ib(this,"Video",b);)this.G.push(b);this.ma=new zb({id:this.Vd+".bus",busWidth:this.Z},this.U,this.Ea);var d,e=Qa(this.id);if((this.D=Sa("Panel",
this.id))&&this.D.Cf)for(b=0;b<e.length;b++)d=e[b],d.Aa=this.D.Aa,d.lc=this.D.lc,d.Cf=this.D.Cf;this.lc("PCx86 v1.33.0\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.hc&&d.hc(this,this.ma,this.U,this.Ea);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.A=parseInt(d,10));var f;if(a=zc(this,"state")||(f=!0,a.state))b=this.V=a,f||(this.H=!0,this.A=xu),this.A&&(this.L=new De(this,"1.33.0"),
this.id))&&this.D.Cf)for(b=0;b<e.length;b++)d=e[b],d.Aa=this.D.Aa,d.lc=this.D.lc,d.Cf=this.D.Cf;this.lc("PCx86 v1.33.1\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.hc&&d.hc(this,this.ma,this.U,this.Ea);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.A=parseInt(d,10));var f;if(a=zc(this,"state")||(f=!0,a.state))b=this.V=a,f||(this.H=!0,this.A=xu),this.A&&(this.L=new De(this,"1.33.1"),
this.L.load()?b=null:delete this.L);!b&&this.A&&(b=zu(this))&&(this.H=!0);if(b){var g=this;ta(b,null,!0,function(a,b,c){c?(g.J=null,g.H=!1,g.Aa("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):(g.K=b,g.X=!0);Za(g)})}else Za(this);this.ia.power||(this.M=!0);!c&&this.M&&Au(this,this.$e)}else r("Unable to find CPU component")}ba(vu,t);
function wu(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.I=b}function zc(a,b,c){var d=b.toLowerCase(),d=Aa(b)||Aa(d);void 0===d&&a.I&&(d=a.I[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Au(a,b,c){for(var d=Qa(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ya(f)){Ya(f,function(){Au(a,b,c)});return}}b.call(a,c)}
function Bu(a,b){var c=new De(a,"1.33.0",Cu);if(c.load()&&Du(c)){var d=c.get(Eu),e=b?b.get(Eu):"unknown";d!=e&&(a.Aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=vu.prototype;
k.$e=function(a){void 0===a&&(a=this.A||(this.K?Fu:xu));if(!this.C){this.C++;var b=!1,c=!1;this.W=!1;var d=this.L||new De(this,"1.33.0");if(a==Gu)b=!0;else if(a>xu){if(d.load(this.K)){this.F=new De(this,"1.33.0",Hu);this.F.load()&&(Iu(this,d),a=Ju,Ku(this.F));this.F.set(Eu,oa());Lu(this.F);var e=this.A&&!this.H;if(a==Fu||Pa("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Du(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
function Bu(a,b){var c=new De(a,"1.33.1",Cu);if(c.load()&&Du(c)){var d=c.get(Eu),e=b?b.get(Eu):"unknown";d!=e&&(a.Aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=vu.prototype;
k.$e=function(a){void 0===a&&(a=this.A||(this.K?Fu:xu));if(!this.C){this.C++;var b=!1,c=!1;this.W=!1;var d=this.L||new De(this,"1.33.1");if(a==Gu)b=!0;else if(a>xu){if(d.load(this.K)){this.F=new De(this,"1.33.1",Hu);this.F.load()&&(Iu(this,d),a=Ju,Ku(this.F));this.F.set(Eu,oa());Lu(this.F);var e=this.A&&!this.H;if(a==Fu||Pa("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Du(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
g?(this.Aa("Error: "+g),"unable to verify user"==g&&(ya(Mu,""),this.B=null)):this.lc(f+": "+g),Ku(d),d.load()?(c=Du(d),e=!0):c=!1))}e&&Bu(this,c?d:null)}else a==Ju&&d.clear()}else Bu(this);delete this.K;delete this.L}e=Qa(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.U&&(c=Nu(this,g,d,b,c));b=[d,a,c];a!=Gu?Au(this,this.ki,b):this.ki(b)}};
function Nu(a,b,c,d,e){if(!b.ca.Pb){b.ca.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&&(r("Unable to restore state for "+b.type),a.V&&!a.X?(c.clear(),a.A=xu,window&&window.location.reload()):a.W=!0,b.Ob(null),e=!1)}if(!d&&b.ti)for(a=b.ti.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.ki=function(a){var b=a[0],c=0>a[1];a=a[2];this.ea=!0;this.ca.Pb=!0;var d=this.ia.power;d&&(d.textContent="Shutdown");this.U&&(Nu(this,this.U,b,c,a),this.U.Ee());this.W&&(Iu(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0};
function Iu(a,b){if(Pa("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.33.0"};d.url=a.ba;d.user=c;d.type="bug";d.data=b;ta("http://www.pcjs.org/api/v1/report",d,!0)}}
function Ou(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new De(a,"1.33.0"),g=new De(a,"1.33.0",Cu),h=oa();g.set(Eu,h);f.set(Eu,h);f.set(Pu,"1.33.0");f.set(Qu,window?window.location.href:null);f.set(Ru,window?window.navigator.userAgent:"");a.U&&a.U.Nb&&(c&&Dc(a.U),d=a.U.Nb(b,c),"object"===typeof d&&f.set(a.U.id,d),c&&(a.U.ca.Pb=!1,!1===d&&(e=null)));for(var h=Qa(a.id),l=0;l<h.length;l++){var m=h[l];m.ca.Pb&&(m.Nb&&(d=m.Nb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.ca.Pb=!1,!1===d&&(e=
function Iu(a,b){if(Pa("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.33.1"};d.url=a.ba;d.user=c;d.type="bug";d.data=b;ta("http://www.pcjs.org/api/v1/report",d,!0)}}
function Ou(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new De(a,"1.33.1"),g=new De(a,"1.33.1",Cu),h=oa();g.set(Eu,h);f.set(Eu,h);f.set(Pu,"1.33.1");f.set(Qu,window?window.location.href:null);f.set(Ru,window?window.navigator.userAgent:"");a.U&&a.U.Nb&&(c&&Dc(a.U),d=a.U.Nb(b,c),"object"===typeof d&&f.set(a.U.id,d),c&&(a.U.ca.Pb=!1,!1===d&&(e=null)));for(var h=Qa(a.id),l=0;l<h.length;l++){var m=h[l];m.ca.Pb&&(m.Nb&&(d=m.Nb(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.ca.Pb=!1,!1===d&&(e=
null)))}e&&(c?(h=d=!1,b?(a.B&&Su(a,a.B,f.toString()),Lu(g)&&Lu(f)||(e=null,d=h=!0)):a.A&&(d=!0,h=a.A==Tu),d&&f.clear(h)):e=f.toString());c&&(a.ca.Pb=!1,b=a.ia.power)&&(b.textContent="Power");a.C=0;return e}k.reset=function(){this.ma&&this.ma.reset&&this.ma.reset();for(var a=Qa(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ma&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=Qa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
k.stop=function(a,b){for(var c=Qa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.wb=function(a,b,c){var d=this;switch(b){case "power":return this.ia[b]=c,c.onclick=function(){d.C||(d.ca.Pb?Ou(d,!1,!0):Au(d,d.$e))},!0;case "reset":return this.ia[b]=c,c.onclick=function(){if(d.ca.Pb&&!d.C)if(d.A&&!d.J){var a=Pa("Click OK to save changes to this PCx86 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Ou(d,a,!0);!a&&d.V?window&&window.location.reload():(a||(d.N=!0),d.$e(xu),d.N=!1)}else d.reset(),d.U&&d.U.Ee()},!0;case "save":if(ja(ua(),"pcjs.org"))c.parentNode.removeChild(c);
else return this.ia[b]=c,c.onclick=function(){var a=yu(d,!0);if(a){var b=!!(d.A&&!d.J||d.V),c=Ou(d,b);b?Su(d,a,c):d.Aa("Resume disabled, machine state not saved")}},!0}return!1};
function yu(a,b){var c=a.B;c||((c=xa(Mu),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Uu(a,c))||a.Aa("The user ID is invalid.")):b&&a.Aa("Browser local storage is not available"));return c}
function Uu(a,b){a.B=null;b=ta(ua()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya(Mu,b.data),a.B=b.data)}catch(d){r(d.message+" ("+c+")")}return a.B}function zu(a){var b=null;a.B&&(b=ua()+"/api/v1/user?req=load&user="+a.B+"&state="+Vu(a,"1.33.0"));return b}
function Su(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Vu(a,"1.33.0");d.data=c;b=ta(ua()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Aa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Aa(c),ya(Mu,""),a.B=null)}}
function Uu(a,b){a.B=null;b=ta(ua()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya(Mu,b.data),a.B=b.data)}catch(d){r(d.message+" ("+c+")")}return a.B}function zu(a){var b=null;a.B&&(b=ua()+"/api/v1/user?req=load&user="+a.B+"&state="+Vu(a,"1.33.1"));return b}
function Su(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Vu(a,"1.33.1");d.data=c;b=ta(ua()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Aa("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Aa(c),ya(Mu,""),a.B=null)}}
function ib(a,b,c){a=Qa(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Mc(a,b){if(a.G.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.G[0];a.D&&a.D.focus();!b&&window&&window.scrollTo(c,d)}}
function Nc(a,b){a.U&&(a=a.U,a.pi&&(b||!a.ca.Ib||a.ca.ii)&&(jf(a,"EAX",a.F),jf(a,"EBX",a.G),jf(a,"ECX",a.H),jf(a,"EDX",a.K),jf(a,"ESP",C(a)),jf(a,"EBP",a.L),jf(a,"ESI",a.J),jf(a,"EDI",a.I),jf(a,"CS",a.ga.ha),jf(a,"DS",a.Ca.ha),jf(a,"SS",a.W.ha),jf(a,"ES",a.ua.ha),jf(a,"EIP",E(a)),b=md(a),jf(a,"PS",b),jf(a,"V",b&2048),jf(a,"D",b&1024),jf(a,"I",b&512),jf(a,"T",b&256),jf(a,"S",b&128),jf(a,"Z",b&64),jf(a,"A",b&16),jf(a,"P",b&4),jf(a,"C",b&1),80386==a.aa&&(jf(a,"FS",a.qb.ha),jf(a,"GS",a.rb.ha),jf(a,"CR0",
a.pa),jf(a,"CR2",a.Wd),jf(a,"CR3",a.md))),b=a.ia.speed)&&(b.textContent=a.ca.Ib&&a.R.vd?a.R.vd.toFixed(2)+"Mhz":"Stopped")}
@ -682,9 +682,9 @@ a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pcx86$2")
function Zu(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ta(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],g);Zu(a,b,c)}})}else c(a,null)}
function $u(a,b,c,d){function e(a){if(void 0===h){var b=g&&Wa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ka(a))}function f(a){e("Error: "+a);l&&(--Wu||Ia(!0));l=!1}var g,h,l=!0;Wu++;Oa[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=m:y.appendChild(document.createTextNode(m));q.appendChild(y)}c||
(c="/versions/pcx86/1.33.0/components.xsl");m=function(d,h){h?Xu(c,null,null,!1,e,function(d,l){l?(Na(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Wu||Ia(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Wu||Ia(!0)):f("invalid machine element: "+
(c="/versions/pcx86/1.33.1/components.xsl");m=function(d,h){h?Xu(c,null,null,!1,e,function(d,l){l?(Na(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Wu||Ia(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Wu||Ia(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Xu(b,a,d,!0,e,m):Yu(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(w){f(w.message)}return l}function av(a,b,c,d){Ia(!1);return $u(a,b,c,d)}window.embedPC=av;window.embedPCx86=av;window.findMachineComponent=function(a,b){return Sa(b,a+".machine")};window.enableEvents=Ia;window.sendEvent=Ka;
function bv(a,b,c,d){if(!c&&b){d.push(b);a=Oa[d[0]];b=null;for(var e in a)if(ja(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?ta(b,null,!0,function(a,b){cv(b,d)}):cv(null,d)}else r("Error ("+c+") requesting "+a)}
function cv(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Oa[f],l={},m;for(m in h){var q=h[m],y=ia(m);if("xml"==y){for(y=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var w=d[2];w&&(h[w]||(q=q.replace(d[0],"")))}d=m=ha(m)}else"xsl"==y&&(e=m=ha(m));l[m]=q}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(a=JSON.stringify(l),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),a=Ca(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n')+"...\n",a=a+('<script type="text/javascript" src="'+g+'">\x3c/script>\n')+('<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n')+"The machine should appear where the <div> is located.",r(a)):r("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Sa("Computer",a),e=Sa("Debugger",a);if(d){var f=Ou(d,!0),g=d.I?JSON.stringify(d.I):null;b||(b="/versions/pcx86/1.33.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Hj:g}))return!0;ta(b,null,!0,function(c,d,e){bv(c,d,e,[a,ha(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=Sa("Computer",a),e=Sa("Debugger",a);if(d){var f=Ou(d,!0),g=d.I?JSON.stringify(d.I):null;b||(b="/versions/pcx86/1.33.1/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Hj:g}))return!0;ta(b,null,!0,function(c,d,e){bv(c,d,e,[a,ha(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();