Roll out v1.17.4
This commit is contained in:
parent
3cc7476ddc
commit
d6b9ed8efb
124 changed files with 142 additions and 143 deletions
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<xsl:variable name="MACHINECLASS">pc</xsl:variable>
|
||||
<xsl:variable name="APPCLASS">pcjs</xsl:variable>
|
||||
<xsl:variable name="APPVERSION">1.17.3</xsl:variable>
|
||||
<xsl:variable name="APPVERSION">1.17.4</xsl:variable>
|
||||
<xsl:variable name="SITEHOST">www.pcjs.org</xsl:variable>
|
||||
|
||||
<xsl:template name="componentStyles">
|
||||
|
|
|
|||
|
|
@ -747,7 +747,7 @@ b);a.Nc=[v(a.N),Fb(a.N),void 0];break;case "IP":B(a.N,b);a.Nc=[v(a.N),Fb(a.N),vo
|
|||
Ve(a.N):We(a.N);break;default:f=!0;if(80286<=a.N.va)switch(f=!1,c){case "MS":af(a.N,b);break;case "TR":a.N.ab.load(b);break;default:f=!0}if(f){a.Q("unknown register: "+e);return}}Xc(a.N);a.Q("\nupdated registers:");c=!0}}a.Q((c?"":"\n")+tl(a,d));a.Nc=[v(a.N),Fb(a.N),void 0];dl(a,gl(a,a.Nc))}}function zl(a,b,c){var d="tr"==b;b=null!=c?parseInt(c,10):1;var e=1==b?0:1;Fa(b,function(){return fb(a,!0)&&a.ng(e,d,!1)},function(){Xc(a.N);fb(a,!1)})}
|
||||
function dl(a,b,c,d){b=ul(a,b,1);if(null!=b[0]){void 0===d&&(d=1);var e=[a.rp,b[1],a.da.Eg],e=256;if(void 0!==c){e=ul(a,c,1);if(null==e[0]||e[0]<b[0])return;e=e[0]-b[0];if(256<e){a.Q("range too large");return}d=-1}var f=b[0]!=a.Nc[0];c=0;for(var g=!0;0<e&&d--;){var h=a.Ka(b),t=b[2],r=gb(a,!1)||a.uc?a.pd:null;g&&(b[4]=4==a.N.na.Na,b[5]=4==a.N.na.Ve,g=!1);38==h||46==h||54==h||62==h||100==h||101==h||102==h||103==h||240==h||242==h||243==h?(102==h?b[4]=!b[4]:103==h&&(b[5]=!b[5]),d||d++,r=null):g=!0;var h=
|
||||
null!=r?"cycles":null,C=ol(a,b);if(C[0]){var K=C[0]+":",f=!1;C[2]&&(K+=" "+C[2]);a.Q(K)}f&&a.Q();C[3]&&(h=C[3],r=null);f=ml(a,b,h,r);a.Q(f);a.Nc=b;e-=b[2]-t;f=!1;c++}}}function $k(a,b,c){if(c)if(b){0>a.Vc&&a.Pc.length&&(a.Vc=0);if(0>a.Vc||b!=a.Pc[a.Vc])a.Pc.splice(0,0,b),a.Vc=0;a.Vc--}else b=a.Pc[a.Vc+1];a=b?b.split(0<=b.indexOf("|")?"|":";"):[""];for(var d in a)a[d]=ma(a[d]);return a}
|
||||
function Ik(a,b){var c=!0;try{if(b.length||(a.Of?(a.Q("ended assemble @"+gl(a,a.Pe)),a.Nc=a.Pe,a.Of=!1):b="?"),b=b.toLowerCase(),ib(a)&&0<b.length){if(a.Of)b="a "+gl(a,a.Pe)+" "+b;else{var d,e,f;switch(b){case "reset":return a.xa&&a.xa.reset(),!0;case "ver":return a.Q("PCjs version 1.17.3 ("+a.N.va+",RELEASE,NOPREFETCH"+(kb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)"),!0;default:for(e=b.charAt(0),f=1;f<b.length;f++){d=b.charAt(f);if(" "==d)break;if("r"==e||"a">d||"z"<d){b=b.substring(0,f)+" "+b.substring(f);
|
||||
function Ik(a,b){var c=!0;try{if(b.length||(a.Of?(a.Q("ended assemble @"+gl(a,a.Pe)),a.Nc=a.Pe,a.Of=!1):b="?"),b=b.toLowerCase(),ib(a)&&0<b.length){if(a.Of)b="a "+gl(a,a.Pe)+" "+b;else{var d,e,f;switch(b){case "reset":return a.xa&&a.xa.reset(),!0;case "ver":return a.Q("PCjs version 1.17.4 ("+a.N.va+",RELEASE,NOPREFETCH"+(kb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)"),!0;default:for(e=b.charAt(0),f=1;f<b.length;f++){d=b.charAt(f);if(" "==d)break;if("r"==e||"a">d||"z"<d){b=b.substring(0,f)+" "+b.substring(f);
|
||||
break}}}}var g=b.split(" ");switch(g[0].charAt(0)){case "a":var h=ul(a,g[1],1);if(null!=h[0])if(a.Pe=h,void 0===g[2])a.Q("begin assemble @"+gl(a,h)),a.Of=!0,Xc(a.N);else{var t;a.Q("not supported yet");t=[];if(t.length){for(var r=0;r<t.length;r++)a.sd(h,t[r],1);a.Q(ml(a,a.Pe))}}break;case "b":a:{var C=g[1],K=g[0].charAt(1);if(K&&"?"!=K)if("l"==K)r=0,r+=ll(a,a.zc),r+=ll(a,a.je),(r+=ll(a,a.dd))||a.Q("no breakpoints");else if(void 0===C)a.Q("missing breakpoint address");else{r=[];if("*"!=C&&(r=ul(a,C,
|
||||
1),null==r[0]))break a;C=null==r[0]?C:ea(r[0]);"c"==K?null==r[0]?(Fk(a),a.Q("all breakpoints cleared")):jl(a,a.zc,r,!0)||jl(a,a.je,r,!0)||jl(a,a.dd,r,!0)||a.Q("breakpoint missing: "+gl(a,r)):"i"==K?a.Q("breakpoint "+(cc(a.da,r[0])?"enabled":"cleared")+": port "+C+" (input)"):"o"==K?a.Q("breakpoint "+(gc(a.da,r[0])?"enabled":"cleared")+": port "+C+" (output)"):null!=r[0]&&("p"==K?a.ne(a.zc,r):"r"==K?a.ne(a.je,r):"w"==K?a.ne(a.dd,r):a.Q("unknown breakpoint command: "+K))}else a.Q("\nbreakpoint commands:"),
|
||||
a.Q("\tbi [p]\ttoggle break on input port [p]"),a.Q("\tbo [p]\ttoggle break on output port [p]"),a.Q("\tbp [a]\tset exec breakpoint at addr [a]"),a.Q("\tbr [a]\tset read breakpoint at addr [a]"),a.Q("\tbw [a]\tset write breakpoint at addr [a]"),a.Q("\tbc [a]\tclear breakpoint at addr [a]"),a.Q("\tbl\tlist all breakpoints")}break;case "c":a.Pg&&(a.Pg.value="");break;case "d":a:{var D=g[0],r=g[1],F=g[2],N;if("?"==r){r="";for(N in Pk)a.cj[N]&&(r&&(r+=","),r+=N);r+=",state,symbols";a.Q("\ndump commands:");
|
||||
|
|
@ -765,21 +765,21 @@ Fe.prototype={constructor:Fe,set:function(a,b){try{this[this.id][a]=b}catch(c){}
|
|||
a:JSON.stringify(a)},clear:function(a){Cl(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}},ma:function(a){return this.X?this.X.ma(null==a?8388608:a|8388608):!1},Ua:function(a){this.X&&this.X.message(a)}};function Cl(a,b){a[a.id]={};b&&a.set("parms",b);a.Ej=!1}
|
||||
function Dl(a){var b=!0;if(Ba()){var c=JSON.stringify(a[a.id]);Da(a.key,c)||(xa("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}
|
||||
function El(a,b,c){n.call(this,"Computer",a,El,33554432);this.ba.Yb=!1;this.nf=a.buswidth;this.Yc=Fl;this.Ch=null;this.mi=!1;this.url=b?b.url:null;this.Hq=(Math.random()+.1).toString(36).substr(2,12);this.Zc=Gl(this);if(this.N=ab("CPU",this.id)){this.X=ab("Debugger",this.id);this.da=new Rb({id:this.Yl+".bus",buswidth:this.nf},this.N,this.X);var d,e=Ya(this.id);if((this.ce=ab("Panel",this.id))&&this.ce.Pg)for(b=0;b<e.length;b++)d=e[b],d.ya=this.ce.ya,d.Q=this.ce.Q,d.Pg=this.ce.Pg;for(b=0;b<e.length;b++)d=
|
||||
e[b],d.wc&&d.wc(this,this.da,this.N,this.X);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.Oi=d:this.Yc=parseInt(d,10));var f;if(a=Sa&&Sa.state||(f=!0,a.state))b=this.yn=a,f||(this.mi=!0,this.Yc=Fl),this.Yc&&(this.Ri=new Fe(this,"1.17.3"),this.Ri.load()?b=null:delete this.Ri);!b&&this.Yc&&(f=null,this.Zc&&(f=wa()+"/api/v1/user?req=load&user="+this.Zc+"&state="+Bl(this,"1.17.3")),b=f)&&(this.mi=!0);b?va(b,!0,null,this,this.Ep):hb(this);c||Hl(this,this.Hi)}else xa("Unable to find CPU component")}
|
||||
e[b],d.wc&&d.wc(this,this.da,this.N,this.X);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.Oi=d:this.Yc=parseInt(d,10));var f;if(a=Sa&&Sa.state||(f=!0,a.state))b=this.yn=a,f||(this.mi=!0,this.Yc=Fl),this.Yc&&(this.Ri=new Fe(this,"1.17.4"),this.Ri.load()?b=null:delete this.Ri);!b&&this.Yc&&(f=null,this.Zc&&(f=wa()+"/api/v1/user?req=load&user="+this.Zc+"&state="+Bl(this,"1.17.4")),b=f)&&(this.mi=!0);b?va(b,!0,null,this,this.Ep):hb(this);c||Hl(this,this.Hi)}else xa("Unable to find CPU component")}
|
||||
Xa(n,El);var Fl=0;k=El.prototype;k.Uf=function(){return this.Hq};k.Be=function(){return this.Zc?this.Zc:""};k.Ep=function(a,b,c){c?(this.Oi=null,this.mi=!1,this.ya("Unable to load machine state from server (error "+c+(b?": "+ma(b):"")+")")):this.Ch=b;hb(this)};function Hl(a,b,c){for(var d=Ya(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ib(f)){ib(f,function(){Hl(a,b,c)});return}}b.call(a,c)}
|
||||
function Il(a,b){var c=new Fe(a,"1.17.3","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.ya("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
k.Hi=function(a){void 0===a&&(a=this.Yc||(this.Ch?1:Fl));var b=!1,c=!1;this.Nl=!1;var d=this.Ri||new Fe(this,"1.17.3");if(-1==a)b=!0;else if(a>Fl){if(d.load(this.Ch)){this.wf=new Fe(this,"1.17.3","failsafe");this.wf.load()&&(Jl(this,d),a=2,Cl(this.wf));this.wf.set("timestamp",qa());Dl(this.wf);var e=this.Yc&&!this.mi;if(1==a||za("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
|
||||
function Il(a,b){var c=new Fe(a,"1.17.4","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.ya("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
k.Hi=function(a){void 0===a&&(a=this.Yc||(this.Ch?1:Fl));var b=!1,c=!1;this.Nl=!1;var d=this.Ri||new Fe(this,"1.17.4");if(-1==a)b=!0;else if(a>Fl){if(d.load(this.Ch)){this.wf=new Fe(this,"1.17.4","failsafe");this.wf.load()&&(Jl(this,d),a=2,Cl(this.wf));this.wf.set("timestamp",qa());Dl(this.wf);var e=this.Yc&&!this.mi;if(1==a||za("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
|
||||
f&&"no machine state"!=g?(this.ya("Error: "+g),"unable to verify user"==g&&(Da("user",""),this.Zc=null)):this.Q(f+": "+g),Cl(d),d.load()?(c=d.parse(),e=!0):c=!1))}e&&Il(this,c?d:null)}else 2==a&&d.clear()}else Il(this);delete this.Ch;delete this.Ri}e=Ya(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.N&&(c=Kl(this,g,d,b,c));b=[d,a,c];-1!=a?Hl(this,this.Fl,b):this.Fl(b)};
|
||||
function Kl(a,b,c,d,e){if(!b.ba.Yb){b.ba.Yb=!0;if(b.dc){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.dc(f,d)&&f&&(xa("Unable to restore state for "+b.type),a.yn&&!a.Ch?(c.clear(),a.Yc=Fl,window&&window.location.reload()):a.Nl=!0,b.dc(null),e=!1)}if(!d&&b.Lg)for(a=b.Lg.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.Fl=function(a){var b=a[0],c=0>a[1];a=a[2];this.ba.Yb=!0;this.Kl||(this.Q("PCjs v1.17.3\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Kl=!0);this.N&&(Kl(this,this.N,b,c,a),Yc(this.N));this.Nl&&(Jl(this,b),b.clear());!c&&this.wf&&(this.wf.clear(),delete this.wf)};
|
||||
function Jl(a,b){if(za("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.Be(),d=b.toString(),e={app:"PCjs",ver:"1.17.3"};e.url=a.url;e.user=c;e.type="bug";e.data=d;va("http://www.pcjs.org/api/v1/report",!0,e)}}
|
||||
function Al(a,b,c){var d,e="none",f=new Fe(a,"1.17.3"),g=new Fe(a,"1.17.3","validate"),h=qa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.17.3");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.N&&a.N.cc&&(c&&a.N.ib(),d=a.N.cc(b,c),"object"===typeof d&&f.set(a.N.id,d),c&&(a.N.ba.Yb=!1,!1===d&&(e=null)));for(var h=Ya(a.id),t=0;t<h.length;t++){var r=h[t];r.ba.Yb&&(r.cc&&(d=r.cc(b,c),"object"===typeof d&&f.set(r.id,d)),c&&(r.ba.Yb=
|
||||
k.Fl=function(a){var b=a[0],c=0>a[1];a=a[2];this.ba.Yb=!0;this.Kl||(this.Q("PCjs v1.17.4\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Kl=!0);this.N&&(Kl(this,this.N,b,c,a),Yc(this.N));this.Nl&&(Jl(this,b),b.clear());!c&&this.wf&&(this.wf.clear(),delete this.wf)};
|
||||
function Jl(a,b){if(za("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.Be(),d=b.toString(),e={app:"PCjs",ver:"1.17.4"};e.url=a.url;e.user=c;e.type="bug";e.data=d;va("http://www.pcjs.org/api/v1/report",!0,e)}}
|
||||
function Al(a,b,c){var d,e="none",f=new Fe(a,"1.17.4"),g=new Fe(a,"1.17.4","validate"),h=qa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.17.4");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.N&&a.N.cc&&(c&&a.N.ib(),d=a.N.cc(b,c),"object"===typeof d&&f.set(a.N.id,d),c&&(a.N.ba.Yb=!1,!1===d&&(e=null)));for(var h=Ya(a.id),t=0;t<h.length;t++){var r=h[t];r.ba.Yb&&(r.cc&&(d=r.cc(b,c),"object"===typeof d&&f.set(r.id,d)),c&&(r.ba.Yb=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.Zc&&Ll(a,a.Zc,f.toString()),Dl(g)&&Dl(f)||(e=null,d=h=!0)):a.Yc&&(d=!0,h=3==a.Yc),d&&f.clear(h)):e=f.toString());c&&(a.ba.Yb=!1);return e}k.reset=function(){this.da&&this.da.reset&&(this.Ua("Resetting "+this.da.type),this.da.reset());for(var a=Ya(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.da&&c.reset&&(this.Ua("Resetting "+c.type),c.reset())}};
|
||||
k.start=function(a,b){for(var c=Ya(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=Ya(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
k.Cb=function(a,b,c){var d=this;switch(b){case "save":return this.oa[b]=c,c.onclick=function(){var a=Gl(d,!0);if(a){var b=!(!d.Yc||d.Oi),c=Al(d,b);b?Ll(d,a,c):d.ya("Resume disabled, machine state not saved")}},!0;case "reset":return this.oa[b]=c,c.onclick=function(){cd(d)},!0}return!1};
|
||||
function Gl(a,b){var c=a.Zc;c||(c=Ca("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("To save machine states on the pcjs.org server, you need a user ID (email support@pcjs.org).\n\nOnce you have an ID, enter it below.","")),c&&((c=Ml(a,c))||a.ya("Your user ID has not been approved."))):b&&a.ya("Browser local storage is not available"));return c}
|
||||
function Ml(a,b){a.Zc=null;var c=va(wa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Da("user",c.data),a.Zc=c.data)}catch(e){xa(e.message+" ("+d+")")}return a.Zc}
|
||||
function Ll(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Bl(a,"1.17.3");d.data=c;b=va(wa()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ya("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.ya(c),Da("user",""),a.Zc=null)}}
|
||||
function Ll(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Bl(a,"1.17.4");d.data=c;b=va(wa()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ya("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.ya(c),Da("user",""),a.Zc=null)}}
|
||||
function cd(a){if(a.Yc&&!a.Oi){var b=za("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Al(a,b,!0);!b&&a.yn?window&&window.location.reload():(b||(a.Fj=!0),a.Hi(Fl),a.Fj=!1)}else a.reset(),a.N&&Yc(a.N)}function rb(a,b,c){a=Ya(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}
|
||||
La(function(){for(var a=db(window.document,"pcjs-machine"),b=0;b<a.length;b++)for(var c=a[b],d=bb(c),c=db(c,"pcjs","computer"),e=0;e<c.length;e++){var f=c[e],g=bb(f),g=new El(g,d,!0);cb(g,f);Hl(g,g.Hi)}});Ha.show.push(function(){for(var a=db(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=bb(a[b]);(c=ab("Computer",c.id))&&c.Kl&&!c.ba.Yb&&c.Hi(-1)}});
|
||||
Ha.exit.push(function(){for(var a=db(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=bb(a[b]);(c=ab("Computer",c.id))&&c.ba.Yb&&Al(c,!(!c.Yc||c.Oi),!0)}});var Nl=0;function Ol(a,b,c,d,e,f){e("Loading "+a+"...");va(a,!0,null,null,function(g,h,t){t?(h||(h="unable to load "+a+" ("+t+")"),f(h,null)):Pl(h,a,b,c,d,e,f)})}
|
||||
|
|
@ -787,6 +787,6 @@ function Pl(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{if(c){var h=b;h&&
|
|||
null,a=K.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,h)}}a?e?Tl(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),null)}
|
||||
function Tl(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");va(e,!0,null,null,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 t=h[0],r,C=/( [a-z]+=)(['"])(.*?)\2/g;r=C.exec(f);)t=0>t.indexOf(r[1])?t.replace(">",r[0]+">"):t.replace(new RegExp(r[1]+"(['\"])(.*?)\\1"),r[0]);h[0]!=t&&(g=g.replace(h[0],t))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Tl(a,b,c)}})}else c(a,null)}
|
||||
function Ul(a,b,c,d){function e(a){if(void 0===h){var b=g&&db(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ia(a))}function f(a){e("Error: "+a);t&&(--Nl||Na(!0));t=!1}var g,h,t=!0;Nl++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.17.3/components.xsl");var r=function(d,h){if(h){var r=function(d,r){if(r)if(r)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var t=h.transformNode(r);t?(g.outerHTML=t,--Nl||Na(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
|
||||
function Ul(a,b,c,d){function e(a){if(void 0===h){var b=g&&db(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ia(a))}function f(a){e("Error: "+a);t&&(--Nl||Na(!0));t=!1}var g,h,t=!0;Nl++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.17.4/components.xsl");var r=function(d,h){if(h){var r=function(d,r){if(r)if(r)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var t=h.transformNode(r);t?(g.outerHTML=t,--Nl||Na(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
|
||||
window.document.implementation.createDocument?(t=new XSLTProcessor,t.importStylesheet(r),(t=t.transformToFragment(h,window.document))?g.parentNode?(g.parentNode.replaceChild(t,g),--Nl||Na(!0)):f("invalid machine element: "+a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f("failed to load XSL file: "+c);else f(d)};h?Ol(c,null,null,!1,e,r):f("failed to load XML file: "+b)}else f(d)};"<"!=b.charAt(0)?Ol(b,a,d,!0,e,r):Pl(b,null,a,d,!1,e,r)}else f("missing machine element: "+
|
||||
a)}catch(C){f(C.message)}return t}window.embedPC=function(a,b,c,d){Na(!1);return Ul(a,b,c,d)};window.enableEvents=Na;window.sendEvent=Pa;})();
|
||||
|
|
|
|||
|
|
@ -646,21 +646,21 @@ Rd.prototype={constructor:Rd,set:function(a,b){try{this[this.id][a]=b}catch(c){}
|
|||
a:JSON.stringify(a)},clear:function(a){uj(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}},$b:function(){}};function uj(a,b){a[a.id]={};b&&a.set("parms",b);a.Pi=!1}
|
||||
function vj(a){var b=!0;if(ra()){var c=JSON.stringify(a[a.id]);ta(a.key,c)||(m("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}
|
||||
function wj(a,b,c){n.call(this,"Computer",a,wj);this.ba.Wb=!1;this.xf=a.buswidth;this.Kc=xj;this.Jg=null;this.xh=!1;this.url=b?b.url:null;this.Jp=(Math.random()+.1).toString(36).substr(2,12);this.Lc=yj(this);if(this.S=Oa("CPU",this.id)){this.Ua=Oa("Debugger",this.id);this.ga=new xb({id:this.el+".bus",buswidth:this.xf},this.S,this.Ua);var d,e=Ma(this.id);if((this.Cd=Oa("Panel",this.id))&&this.Cd.Bi)for(b=0;b<e.length;b++)d=e[b],d.sa=this.Cd.sa,d.jc=this.Cd.jc,d.Bi=this.Cd.Bi;for(b=0;b<e.length;b++)d=
|
||||
e[b],d.yc&&d.yc(this,this.ga,this.S,this.Ua);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.bi=d:this.Kc=parseInt(d,10));var f;if(a=Fa&&Fa.state||(f=!0,a.state))b=this.Dm=a,f||(this.xh=!0,this.Kc=xj),this.Kc&&(this.ei=new Rd(this,"1.17.3"),this.ei.load()?b=null:delete this.ei);!b&&this.Kc&&(f=null,this.Lc&&(f=oa()+"/api/v1/user?req=load&user="+this.Lc+"&state="+tj(this,"1.17.3")),b=f)&&(this.xh=!0);b?na(b,!0,null,this,this.Go):p(this);c||zj(this,this.Vh)}else m("Unable to find CPU component")}
|
||||
e[b],d.yc&&d.yc(this,this.ga,this.S,this.Ua);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.bi=d:this.Kc=parseInt(d,10));var f;if(a=Fa&&Fa.state||(f=!0,a.state))b=this.Dm=a,f||(this.xh=!0,this.Kc=xj),this.Kc&&(this.ei=new Rd(this,"1.17.4"),this.ei.load()?b=null:delete this.ei);!b&&this.Kc&&(f=null,this.Lc&&(f=oa()+"/api/v1/user?req=load&user="+this.Lc+"&state="+tj(this,"1.17.4")),b=f)&&(this.xh=!0);b?na(b,!0,null,this,this.Go):p(this);c||zj(this,this.Vh)}else m("Unable to find CPU component")}
|
||||
La(n,wj);var xj=0;k=wj.prototype;k.rf=function(){return this.Jp};k.Yd=function(){return this.Lc?this.Lc:""};k.Go=function(a,b,c){c?(this.bi=null,this.xh=!1,this.sa("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):this.Jg=b;p(this)};function zj(a,b,c){for(var d=Ma(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ta(f)){Ta(f,function(){zj(a,b,c)});return}}b.call(a,c)}
|
||||
function Aj(a,b){var c=new Rd(a,"1.17.3","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.sa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
k.Vh=function(a){void 0===a&&(a=this.Kc||(this.Jg?1:xj));var b=!1,c=!1;this.Tk=!1;var d=this.ei||new Rd(this,"1.17.3");if(-1==a)b=!0;else if(a>xj){if(d.load(this.Jg)){this.Se=new Rd(this,"1.17.3","failsafe");this.Se.load()&&(Bj(this,d),a=2,uj(this.Se));this.Se.set("timestamp",la());vj(this.Se);var e=this.Kc&&!this.xh;if(1==a||pa("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
|
||||
function Aj(a,b){var c=new Rd(a,"1.17.4","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.sa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
k.Vh=function(a){void 0===a&&(a=this.Kc||(this.Jg?1:xj));var b=!1,c=!1;this.Tk=!1;var d=this.ei||new Rd(this,"1.17.4");if(-1==a)b=!0;else if(a>xj){if(d.load(this.Jg)){this.Se=new Rd(this,"1.17.4","failsafe");this.Se.load()&&(Bj(this,d),a=2,uj(this.Se));this.Se.set("timestamp",la());vj(this.Se);var e=this.Kc&&!this.xh;if(1==a||pa("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
|
||||
f&&"no machine state"!=g?(this.sa("Error: "+g),"unable to verify user"==g&&(ta("user",""),this.Lc=null)):this.jc(f+": "+g),uj(d),d.load()?(c=d.parse(),e=!0):c=!1))}e&&Aj(this,c?d:null)}else 2==a&&d.clear()}else Aj(this);delete this.Jg;delete this.ei}e=Ma(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.S&&(c=Cj(this,g,d,b,c));b=[d,a,c];-1!=a?zj(this,this.Mk,b):this.Mk(b)};
|
||||
function Cj(a,b,c,d,e){if(!b.ba.Wb){b.ba.Wb=!0;if(b.Zb){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.Zb(f,d)&&f&&(m("Unable to restore state for "+b.type),a.Dm&&!a.Jg?(c.clear(),a.Kc=xj,window&&window.location.reload()):a.Tk=!0,b.Zb(null),e=!1)}if(!d&&b.ag)for(a=b.ag.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
k.Mk=function(a){var b=a[0],c=0>a[1];a=a[2];this.ba.Wb=!0;this.Qk||(this.jc("PCjs v1.17.3\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Qk=!0);this.S&&(Cj(this,this.S,b,c,a),rc(this.S));this.Tk&&(Bj(this,b),b.clear());!c&&this.Se&&(this.Se.clear(),delete this.Se)};
|
||||
function Bj(a,b){if(pa("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.Yd(),d=b.toString(),e={app:"PCjs",ver:"1.17.3"};e.url=a.url;e.user=c;e.type="bug";e.data=d;na("http://www.pcjs.org/api/v1/report",!0,e)}}
|
||||
function Dj(a,b,c){var d,e="none",f=new Rd(a,"1.17.3"),g=new Rd(a,"1.17.3","validate"),h=la();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.17.3");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.S&&a.S.Yb&&(c&&uc(a.S),d=a.S.Yb(b,c),"object"===typeof d&&f.set(a.S.id,d),c&&(a.S.ba.Wb=!1,!1===d&&(e=null)));for(var h=Ma(a.id),r=0;r<h.length;r++){var t=h[r];t.ba.Wb&&(t.Yb&&(d=t.Yb(b,c),"object"===typeof d&&f.set(t.id,d)),c&&(t.ba.Wb=
|
||||
k.Mk=function(a){var b=a[0],c=0>a[1];a=a[2];this.ba.Wb=!0;this.Qk||(this.jc("PCjs v1.17.4\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Qk=!0);this.S&&(Cj(this,this.S,b,c,a),rc(this.S));this.Tk&&(Bj(this,b),b.clear());!c&&this.Se&&(this.Se.clear(),delete this.Se)};
|
||||
function Bj(a,b){if(pa("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.Yd(),d=b.toString(),e={app:"PCjs",ver:"1.17.4"};e.url=a.url;e.user=c;e.type="bug";e.data=d;na("http://www.pcjs.org/api/v1/report",!0,e)}}
|
||||
function Dj(a,b,c){var d,e="none",f=new Rd(a,"1.17.4"),g=new Rd(a,"1.17.4","validate"),h=la();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.17.4");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.S&&a.S.Yb&&(c&&uc(a.S),d=a.S.Yb(b,c),"object"===typeof d&&f.set(a.S.id,d),c&&(a.S.ba.Wb=!1,!1===d&&(e=null)));for(var h=Ma(a.id),r=0;r<h.length;r++){var t=h[r];t.ba.Wb&&(t.Yb&&(d=t.Yb(b,c),"object"===typeof d&&f.set(t.id,d)),c&&(t.ba.Wb=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.Lc&&Ej(a,a.Lc,f.toString()),vj(g)&&vj(f)||(e=null,d=h=!0)):a.Kc&&(d=!0,h=3==a.Kc),d&&f.clear(h)):e=f.toString());c&&(a.ba.Wb=!1);return e}k.reset=function(){this.ga&&this.ga.reset&&(this.$b("Resetting "+this.ga.type),this.ga.reset());for(var a=Ma(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ga&&c.reset&&(this.$b("Resetting "+c.type),c.reset())}};
|
||||
k.start=function(a,b){for(var c=Ma(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=Ma(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
k.Cb=function(a,b,c){var d=this;switch(b){case "save":return this.la[b]=c,c.onclick=function(){var a=yj(d,!0);if(a){var b=!(!d.Kc||d.bi),c=Dj(d,b);b?Ej(d,a,c):d.sa("Resume disabled, machine state not saved")}},!0;case "reset":return this.la[b]=c,c.onclick=function(){vc(d)},!0}return!1};
|
||||
function yj(a,b){var c=a.Lc;c||(c=sa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("To save machine states on the pcjs.org server, you need a user ID (email support@pcjs.org).\n\nOnce you have an ID, enter it below.","")),c&&((c=Fj(a,c))||a.sa("Your user ID has not been approved."))):b&&a.sa("Browser local storage is not available"));return c}
|
||||
function Fj(a,b){a.Lc=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ta("user",c.data),a.Lc=c.data)}catch(e){m(e.message+" ("+d+")")}return a.Lc}
|
||||
function Ej(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=tj(a,"1.17.3");d.data=c;b=na(oa()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.sa("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.sa(c),ta("user",""),a.Lc=null)}}
|
||||
function Ej(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=tj(a,"1.17.4");d.data=c;b=na(oa()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.sa("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.sa(c),ta("user",""),a.Lc=null)}}
|
||||
function vc(a){if(a.Kc&&!a.bi){var b=pa("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Dj(a,b,!0);!b&&a.Dm?window&&window.location.reload():(b||(a.Qi=!0),a.Vh(xj),a.Qi=!1)}else a.reset(),a.S&&rc(a.S)}function bb(a,b,c){a=Ma(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}
|
||||
za(function(){for(var a=Ra(window.document,"pcjs-machine"),b=0;b<a.length;b++)for(var c=a[b],d=Pa(c),c=Ra(c,"pcjs","computer"),e=0;e<c.length;e++){var f=c[e],g=Pa(f),g=new wj(g,d,!0);Qa(g,f);zj(g,g.Vh)}});va.show.push(function(){for(var a=Ra(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=Pa(a[b]);(c=Oa("Computer",c.id))&&c.Qk&&!c.ba.Wb&&c.Vh(-1)}});
|
||||
va.exit.push(function(){for(var a=Ra(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=Pa(a[b]);(c=Oa("Computer",c.id))&&c.ba.Wb&&Dj(c,!(!c.Kc||c.bi),!0)}});var Gj=0;function Hj(a,b,c,d,e,f){e("Loading "+a+"...");na(a,!0,null,null,function(g,h,r){r?(h||(h="unable to load "+a+" ("+r+")"),f(h,null)):Ij(h,a,b,c,d,e,f)})}
|
||||
|
|
@ -668,6 +668,6 @@ function Ij(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{if(c){var h=b;h&&
|
|||
null,a=J.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,h)}}a?e?Jj(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),null)}
|
||||
function Jj(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");na(e,!0,null,null,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 r=h[0],t,C=/( [a-z]+=)(['"])(.*?)\2/g;t=C.exec(f);)r=0>r.indexOf(t[1])?r.replace(">",t[0]+">"):r.replace(new RegExp(t[1]+"(['\"])(.*?)\\1"),t[0]);h[0]!=r&&(g=g.replace(h[0],r))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Jj(a,b,c)}})}else c(a,null)}
|
||||
function Kj(a,b,c,d){function e(a){if(void 0===h){var b=g&&Ra(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ja(a))}function f(a){e("Error: "+a);r&&(--Gj||Ba(!0));r=!1}var g,h,r=!0;Gj++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.17.3/components.xsl");var t=function(d,h){if(h){var r=function(d,r){if(r)if(r)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var t=h.transformNode(r);t?(g.outerHTML=t,--Gj||Ba(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
|
||||
function Kj(a,b,c,d){function e(a){if(void 0===h){var b=g&&Ra(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ja(a))}function f(a){e("Error: "+a);r&&(--Gj||Ba(!0));r=!1}var g,h,r=!0;Gj++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.17.4/components.xsl");var t=function(d,h){if(h){var r=function(d,r){if(r)if(r)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var t=h.transformNode(r);t?(g.outerHTML=t,--Gj||Ba(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
|
||||
window.document.implementation.createDocument?(t=new XSLTProcessor,t.importStylesheet(r),(t=t.transformToFragment(h,window.document))?g.parentNode?(g.parentNode.replaceChild(t,g),--Gj||Ba(!0)):f("invalid machine element: "+a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f("failed to load XSL file: "+c);else f(d)};h?Hj(c,null,null,!1,e,r):f("failed to load XML file: "+b)}else f(d)};"<"!=b.charAt(0)?Hj(b,a,d,!0,e,t):Ij(b,null,a,d,!1,e,t)}else f("missing machine element: "+
|
||||
a)}catch(C){f(C.message)}return r}window.embedPC=function(a,b,c,d){Ba(!1);return Kj(a,b,c,d)};window.enableEvents=Ba;window.sendEvent=Ca;})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue