v1.20.3: The Happy 2016 Release

This commit is contained in:
Jeff Parsons 2015-12-31 15:51:13 -08:00
commit c792895b10
235 changed files with 245 additions and 245 deletions

View file

@ -78,7 +78,7 @@ or (at your option) any later version.
You are required to include the following copyright notice, with a link to [{{ site.pcjs.domain }}]({{ site.url }}/):
> [PCjs]({{ site.url }}/) © 2012-2015 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
> [PCjs]({{ site.url }}/) © 2012-2016 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
in every source code file of every copy or modified version of this work, and to display that notice on every web page
or computer that runs any version of this software.

View file

@ -160,7 +160,7 @@ Step 5: Enjoy!
---
All I ask is that any page that embeds the simulator also includes attribution, such as:
> [PCjs](http://pcjs.org) © 2012-2015 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
> [PCjs](http://pcjs.org) © 2012-2016 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
If you use the default [XML stylesheet](/versions/c1pjs/1.17.1/components.xsl), attribution is automatically inserted,
which relieves you from including it yourself.

View file

@ -24,7 +24,7 @@ the "file:" or "http:" protocol.
- [sample3b.html](sample3b.html) and [sample3b.xml](sample3b.xml)
+ Feel free to copy/paste additional components from other machine XML files on [pcjs.org](http://www.pcjs.org/).
+ Remember to display the appropriate attribution on anything you share publicly; e.g.:
[PCjs](http://pcjs.org) © 2012-2015 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
[PCjs](http://pcjs.org) © 2012-2016 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
+ Stay in sync with the [PCjs repository](https://github.com/jeffpar/pcjs), to keep your copy of PCjs up-to-date.
Have fun!

View file

@ -11,7 +11,7 @@
<xsl:variable name="MACHINECLASS">pc</xsl:variable>
<xsl:variable name="APPCLASS">pcjs</xsl:variable>
<xsl:variable name="APPVERSION">1.20.2</xsl:variable>
<xsl:variable name="APPVERSION">1.20.3</xsl:variable>
<xsl:variable name="SITEHOST">www.pcjs.org</xsl:variable>
<xsl:template name="componentStyles">
@ -224,7 +224,7 @@
<xsl:otherwise/>
</xsl:choose>
<div class="{$APPCLASS}-copyright">
<a href="http://{$SITEHOST}" target="_blank">PCjs</a> v<xsl:value-of select="$APPVERSION"/> © 2012-2015 by <a href="http://twitter.com/jeffpar" target="_blank">@jeffpar</a>
<a href="http://{$SITEHOST}" target="_blank">PCjs</a> v<xsl:value-of select="$APPVERSION"/> © 2012-2016 by <a href="http://twitter.com/jeffpar" target="_blank">@jeffpar</a>
</div>
<div style="clear:both"> </div>
</xsl:if>

View file

@ -1187,7 +1187,7 @@ var qd=Mp(a,qg,ki);if(void 0!==qd)switch(qd=qd*ln|0,ki){case "x":a.Z.yf(qd,0);br
Ta);break a}}rd&&("on"==g[2]?(a.qc|=rd,tc=!0):"off"==g[2]&&(a.qc&=~rd,tc=!1))}var ur=0,Sc="";for(sc in Ep)if(!Ta||Ta==sc){var vr=!!(a.qc&Ep[sc]);if(null===tc||tc==vr)Sc&&(Sc+=","),++ur%10||(Sc+="\n\t"),"key"==sc&&(sc="keys"),Sc+=sc}void 0===Ta&&a.U("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.U((null!==tc?tc?"messages on: ":"messages off: ":"message categories:\n\t")+(Sc||"none"));sp(a)}break;case "o":var li=g[1],wr=g[2];if(li&&"?"!=li){var mi=Mp(a,li,"port #"),ni=Mp(a,
wr);void 0!==mi&&void 0!==ni&&(nc(a.ja,mi,1,ni),a.U(ga(mi)+": "+fa(ni)))}else a.U("output commands:"),a.U("\to [p] [b]\twrite byte [b] to port [p]"),a.U("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){Sq(a,b.substr(5));break}var mn="pr"==g[0]?1:0,Xd=1+mn;if(a.O)a.U("step in progress");else{var rg,nn=!1,lb=qp(a,v(a.M),a.M.Ba.ga);do switch(rg=!1,a.Xa(lb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:bq(a,lb,1);rg=!0;break;case 204:case 206:a.O=
Xd;bq(a,lb,1);break;case 205:case 224:case 225:case 226:a.O=Xd;bq(a,lb,lb.Sb?4:2);break;case 232:a.O=Xd;bq(a,lb,lb.Sb?5:3);break;case 154:a.O=Xd;bq(a,lb,lb.Sb?7:5);break;case 255:var on=a.vb(lb)&14591;if(4351==on||6399==on)a.O=Xd,zq(a,lb);break;case 243:case 242:bq(a,lb,1);nn=rg=!0;break;case 108:case 109:case 110:case 111:case 164:case 165:case 166:case 167:case 170:case 171:case 172:case 173:case 174:case 175:nn&&(a.O=Xd,bq(a,lb,1))}while(rg);a.O?(a.Pd(a.A,lb,!0),a.Fe()||(a.M.bd(),a.O=0)):Uq(a,
mn?"tr":"t")}break;case "r":if("reset"==b){a.ia&&a.ia.reset();break}rq(a,g);break;case "t":Uq(a,g[0],g[1]);break;case "u":sq(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Pq(a,b.substr(3))||(d=!1);break}a.U("PCjs version 1.20.2 ("+a.M.na+",RELEASE,NOPREFETCH"+(vb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var Re;void 0!==g[3]&&(Re=+g[3]);switch(g[2]){case "int":a.M.ba.af=Re;break;case "start":a.M.ba.Af=Re;break;case "stop":a.M.ba.cf=Re;
mn?"tr":"t")}break;case "r":if("reset"==b){a.ia&&a.ia.reset();break}rq(a,g);break;case "t":Uq(a,g[0],g[1]);break;case "u":sq(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Pq(a,b.substr(3))||(d=!1);break}a.U("PCjs version 1.20.3 ("+a.M.na+",RELEASE,NOPREFETCH"+(vb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var Re;void 0!==g[3]&&(Re=+g[3]);switch(g[2]){case "int":a.M.ba.af=Re;break;case "start":a.M.ba.Af=Re;break;case "stop":a.M.ba.cf=Re;
break;default:a.U("unknown cs option");break a}void 0!==Re&&Oc(a.M);a.U("checksums "+(a.M.sa.Re?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(Zc(a.M,+g[2])||a.U("warning: using 1x multiplier, previous target not reached"));a.U("target speed: "+(a.M.ba.ze.toFixed(2)+"Mhz")+" ("+a.M.ba.Ud+"x)");break;default:a.U("unknown option: "+g[1])}else a.U("execution options:"),a.U("\tcs int #\tset checksum cycle interval to #"),a.U("\tcs start #\tset checksum cycle start count to #"),a.U("\tcs stop #\tset checksum cycle stop count to #"),
a.U("\tsp #\t\tset speed multiplier to #");break;case "?":if(g[1]){Sq(a,b.substr(1));break}var Se="commands:",oi;for(oi in xp)Se+="\n"+na(oi,7)+xp[oi];Hf(a)||(Se+="\nnote: frequency/history disabled if no exec breakpoints");a.U(Se);break;default:a.U("unknown command: "+b),d=!1}}}catch(pn){a.U("debugger error: "+(pn.stack||pn.message)),d=!1}return d}function up(a,b,c){b=kq(a,b,c);for(var d in b)if(!yq(a,b[d]))return!1;return!0}
Qa(function(){for(var a=kb(window.document,"pcjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=ib(c),d=new pp(d);jb(d,c)}});function We(a,b,c){this.id=a.id;this.key=Wq(a,b,c);this.ma=a.ma;Xq(this,a.kk)}function Wq(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
@ -1195,14 +1195,14 @@ We.prototype={constructor:We,value:function(){return this[this.id]},data:functio
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function Xq(a,b){a[a.id]={};b&&Xe(a,"parms",b);a.A=!1}function Yq(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(Ba("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Zq(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){Ba(c.message||c),b=!1}return b}function $q(a,b){return a[a.id][b]||null}function Xe(a,b,c){try{a[a.id][b]=c}catch(d){}}
function ar(a,b,c){Wa.call(this,"Computer",a,ar,67108864);this.sa.tc=!1;this.Y=a.busWidth||a.buswidth;this.Kc=br;this.O=null;this.R=this.W=!1;this.da=b?b.url:null;this.ka=(Math.random()+.1).toString(36).substr(2,12);this.A=cr(this);if(this.M=hb("CPU",this.id)){this.ma=hb("Debugger",this.id);this.ja=new Nb({id:this.gk+".bus",buswidth:this.Y},this.M,this.ma);var d,e=fb(this.id);if((this.Xd=hb("Panel",this.id))&&this.Xd.uf)for(b=0;b<e.length;b++)d=e[b],d.Va=this.Xd.Va,d.U=this.Xd.U,d.uf=this.Xd.uf;for(b=
0;b<e.length;b++)d=e[b],d.Hc&&d.Hc(this,this.ja,this.M,this.ma);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.ng=d:this.Kc=parseInt(d,10));var f;if(a=$a&&$a.state||(f=!0,a.state))b=this.ia=a,f||(this.R=!0,this.Kc=br),this.Kc&&(this.P=new We(this,dr),this.P.load()?b=null:delete this.P);!b&&this.Kc&&(f=null,this.A&&(f=Aa()+"/api/v1/user?req=load&user="+this.A+"&state="+Wq(this,dr)),b=f)&&(this.R=!0);b?za(b,!0,null,this,this.jk):sb(this);c||er(this,this.Dg)}else Ba("Unable to find CPU component")}
eb(ar);var dr="1.20.2",br=0;h=ar.prototype;h.Ze=function(){return this.ka};h.ke=function(){return this.A?this.A:""};h.jk=function(a,b,c){c?(this.ng=null,this.R=!1,this.Va("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(this.O=b,this.W=!0);sb(this)};function er(a,b,c){for(var d=fb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!tb(f)){tb(f,function(){er(a,b,c)});return}}b.call(a,c)}
eb(ar);var dr="1.20.3",br=0;h=ar.prototype;h.Ze=function(){return this.ka};h.ke=function(){return this.A?this.A:""};h.jk=function(a,b,c){c?(this.ng=null,this.R=!1,this.Va("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(this.O=b,this.W=!0);sb(this)};function er(a,b,c){for(var d=fb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!tb(f)){tb(f,function(){er(a,b,c)});return}}b.call(a,c)}
function fr(a,b){var c=new We(a,dr,"validate");if(c.load()&&Zq(c)){var d=$q(c,"timestamp"),e=b?$q(b,"timestamp"):"unknown";d!=e&&(a.Va("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
h.Dg=function(a){void 0===a&&(a=this.Kc||(this.O?1:br));var b=!1,c=!1;this.Z=!1;var d=this.P||new We(this,dr);if(-1==a)b=!0;else if(a>br){if(d.load(this.O)){this.C=new We(this,dr,"failsafe");this.C.load()&&(gr(this,d),a=2,Xq(this.C));Xe(this.C,"timestamp",sa());Yq(this.C);var e=this.Kc&&!this.R;if(1==a||Ca("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=Zq(d)){var f=$q(d,"code"),g=$q(d,"data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=g?(this.Va("Error: "+
g),"unable to verify user"==g&&(Ha("user",""),this.A=null)):this.U(f+": "+g),Xq(d),d.load()?(c=Zq(d),e=!0):c=!1))}e&&fr(this,c?d:null)}else 2==a&&d.clear()}else fr(this);delete this.O;delete this.P}e=fb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.M&&(c=hr(this,g,d,b,c));b=[d,a,c];-1!=a?er(this,this.Bi,b):this.Bi(b)};
function hr(a,b,c,d,e){if(!b.sa.tc){b.sa.tc=!0;if(b.mc){var f=null;e&&((f=$q(c,b.id))||(f=$q(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.mc(f,d)&&f&&(Ba("Unable to restore state for "+b.type),a.ia&&!a.W?(c.clear(),a.Kc=br,window&&window.location.reload()):a.Z=!0,b.mc(null),e=!1)}if(!d&&b.ek)for(a=b.ek.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
h.Bi=function(a){var b=a[0],c=0>a[1];a=a[2];this.sa.tc=!0;this.fk||(this.U("PCjs v"+dr+"\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.fk=!0);this.M&&(hr(this,this.M,b,c,a),Tc(this.M));this.Z&&(gr(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C)};
h.Bi=function(a){var b=a[0],c=0>a[1];a=a[2];this.sa.tc=!0;this.fk||(this.U("PCjs v"+dr+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.fk=!0);this.M&&(hr(this,this.M,b,c,a),Tc(this.M));this.Z&&(gr(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C)};
function gr(a,b){if(Ca("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.da,d=a.ke(),e=b.toString(),f={app:"PCjs"};f.ver=dr;f.url=c;f.user=d;f.type="bug";f.data=e;za("http://www.pcjs.org/api/v1/report",!0,f)}}
function Vq(a,b,c){var d,e="none",f=new We(a,dr),g=new We(a,dr,"validate"),k=sa();Xe(g,"timestamp",k);Xe(f,"timestamp",k);Xe(f,"version","1.20.2");Xe(f,"url",window?window.location.href:null);Xe(f,"browser",window?window.navigator.userAgent:"");a.M&&a.M.lc&&(c&&a.M.Zb(),d=a.M.lc(b,c),"object"===typeof d&&Xe(f,a.M.id,d),c&&(a.M.sa.tc=!1,!1===d&&(e=null)));for(var k=fb(a.id),q=0;q<k.length;q++){var r=k[q];r.sa.tc&&(r.lc&&(d=r.lc(b,c),"object"===typeof d&&Xe(f,r.id,d)),c&&(r.sa.tc=!1,!1===d&&(e=null)))}e&&
function Vq(a,b,c){var d,e="none",f=new We(a,dr),g=new We(a,dr,"validate"),k=sa();Xe(g,"timestamp",k);Xe(f,"timestamp",k);Xe(f,"version","1.20.3");Xe(f,"url",window?window.location.href:null);Xe(f,"browser",window?window.navigator.userAgent:"");a.M&&a.M.lc&&(c&&a.M.Zb(),d=a.M.lc(b,c),"object"===typeof d&&Xe(f,a.M.id,d),c&&(a.M.sa.tc=!1,!1===d&&(e=null)));for(var k=fb(a.id),q=0;q<k.length;q++){var r=k[q];r.sa.tc&&(r.lc&&(d=r.lc(b,c),"object"===typeof d&&Xe(f,r.id,d)),c&&(r.sa.tc=!1,!1===d&&(e=null)))}e&&
(c?(k=d=!1,b?(a.A&&ir(a,a.A,f.toString()),Yq(g)&&Yq(f)||(e=null,d=k=!0)):a.Kc&&(d=!0,k=3==a.Kc),d&&f.clear(k)):e=f.toString());c&&(a.sa.tc=!1);return e}h.reset=function(){this.ja&&this.ja.reset&&(nb(this,"Resetting "+this.ja.type),this.ja.reset());for(var a=fb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ja&&c.reset&&(nb(this,"Resetting "+c.type),c.reset())}};h.start=function(a,b){for(var c=fb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
h.stop=function(a,b){for(var c=fb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};h.Yb=function(a,b,c){var d=this;switch(b){case "save":return this.ya[b]=c,c.onclick=function(){var a=cr(d,!0);if(a){var b=!!(d.Kc&&!d.ng||d.ia),c=Vq(d,b);b?ir(d,a,c):d.Va("Resume disabled, machine state not saved")}},!0;case "reset":return this.ya[b]=c,c.onclick=function(){Yc(d)},!0}return!1};
function cr(a,b){var c=a.A;c||(c=Ga("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=jr(a,c))||a.Va("The user ID is invalid."))):b&&a.Va("Browser local storage is not available"));return c}
@ -1215,6 +1215,6 @@ function mr(a,b,c,d,e,f,g){function k(a,f){if(f)g(f,null);else{if(c){var k=b;k&&
null,a=B.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,k)}}a?e?xr(a,f,k):k(a,null):g("no data"+(b?" for file: "+b:""),null)}
function xr(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");za(e,!0,null,null,function(f,g,k){if(k||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(f=d[3])if(k=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var q=k[0],r,x=/( [a-z]+=)(['"])(.*?)\2/g;r=x.exec(f);)q=0>q.indexOf(r[1])?q.replace(">",r[0]+">"):q.replace(new RegExp(r[1]+"(['\"])(.*?)\\1"),r[0]);k[0]!=q&&(g=g.replace(k[0],q))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],g);xr(a,b,c)}})}else c(a,null)}
function yr(a,b,c,d){function e(a){if(void 0===k){var b=g&&kb(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=ma(a))}function f(a){e("Error: "+a);q&&(--kr||Ua(!0));q=!1}var g,k,q=!0;kr++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.2/components.xsl");var r=function(d,k){if(k){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var r=k.transformNode(q);r?(g.outerHTML=r,--kr||Ua(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
function yr(a,b,c,d){function e(a){if(void 0===k){var b=g&&kb(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=ma(a))}function f(a){e("Error: "+a);q&&(--kr||Ua(!0));q=!1}var g,k,q=!0;kr++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.3/components.xsl");var r=function(d,k){if(k){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var r=k.transformNode(q);r?(g.outerHTML=r,--kr||Ua(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
window.document.implementation.createDocument?(r=new XSLTProcessor,r.importStylesheet(q),(r=r.transformToFragment(k,window.document))?g.parentNode?(g.parentNode.replaceChild(r,g),--kr||Ua(!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)};k?lr(c,null,null,!1,e,q):f("failed to load XML file: "+b)}else f(d)};"<"!=b.charAt(0)?lr(b,a,d,!0,e,r):mr(b,null,a,d,!1,e,r)}else f("missing machine element: "+
a)}catch(x){f(x.message)}return q}window.embedPC=function(a,b,c,d){Ua(!1);return yr(a,b,c,d)};window.enableEvents=Ua;window.sendEvent=Va;})();

View file

@ -1018,14 +1018,14 @@ Pd.prototype={constructor:Pd,value:function(){return this[this.id]},data:functio
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function zm(a,b){a[a.id]={};b&&D(a,"parms",b);a.A=!1}function Am(a){var b=!0;if(ua()){var c=JSON.stringify(a[a.id]);wa(a.key,c)||(ra("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Bm(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){ra(c.message||c),b=!1}return b}function Cm(a,b){return a[a.id][b]||null}function D(a,b,c){try{a[a.id][b]=c}catch(d){}}
function Dm(a,b,c){Ia.call(this,"Computer",a,Dm);this.ja.fc=!1;this.R=a.busWidth||a.buswidth;this.pc=Em;this.H=null;this.F=this.T=!1;this.S=b?b.url:null;this.W=(Math.random()+.1).toString(36).substr(2,12);this.B=Fm(this);if(this.A=Ta("CPU",this.id)){this.Sa=Ta("Debugger",this.id);this.ma=new pb({id:this.Bh+".bus",buswidth:this.R},this.A,this.Sa);var d,e=Ra(this.id);if((this.md=Ta("Panel",this.id))&&this.md.eg)for(b=0;b<e.length;b++)d=e[b],d.Ja=this.md.Ja,d.gc=this.md.gc,d.eg=this.md.eg;for(b=0;b<
e.length;b++)d=e[b],d.wc&&d.wc(this,this.ma,this.A,this.Sa);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.pf=d:this.pc=parseInt(d,10));var k;if(a=La&&La.state||(k=!0,a.state))b=this.K=a,k||(this.F=!0,this.pc=Em),this.pc&&(this.J=new Pd(this,Gm),this.J.load()?b=null:delete this.J);!b&&this.pc&&(k=null,this.B&&(k=qa()+"/api/v1/user?req=load&user="+this.B+"&state="+ym(this,Gm)),b=k)&&(this.F=!0);b?pa(b,!0,null,this,this.nj):Ya(this);c||Hm(this,this.Of)}else ra("Unable to find CPU component")}Qa(Dm);
var Gm="1.20.2",Em=0;f=Dm.prototype;f.pe=function(){return this.W};f.yd=function(){return this.B?this.B:""};f.nj=function(a,b,c){c?(this.pf=null,this.F=!1,this.Ja("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(this.H=b,this.T=!0);Ya(this)};function Hm(a,b,c){for(var d=Ra(a.id),e=0;e<=d.length;e++){var k=e<d.length?d[e]:a;if(!Za(k)){Za(k,function(){Hm(a,b,c)});return}}b.call(a,c)}
var Gm="1.20.3",Em=0;f=Dm.prototype;f.pe=function(){return this.W};f.yd=function(){return this.B?this.B:""};f.nj=function(a,b,c){c?(this.pf=null,this.F=!1,this.Ja("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(this.H=b,this.T=!0);Ya(this)};function Hm(a,b,c){for(var d=Ra(a.id),e=0;e<=d.length;e++){var k=e<d.length?d[e]:a;if(!Za(k)){Za(k,function(){Hm(a,b,c)});return}}b.call(a,c)}
function Im(a,b){var c=new Pd(a,Gm,"validate");if(c.load()&&Bm(c)){var d=Cm(c,"timestamp"),e=b?Cm(b,"timestamp"):"unknown";d!=e&&(a.Ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
f.Of=function(a){void 0===a&&(a=this.pc||(this.H?1:Em));var b=!1,c=!1;this.N=!1;var d=this.J||new Pd(this,Gm);if(-1==a)b=!0;else if(a>Em){if(d.load(this.H)){this.D=new Pd(this,Gm,"failsafe");this.D.load()&&(Jm(this,d),a=2,zm(this.D));D(this.D,"timestamp",ka());Am(this.D);var e=this.pc&&!this.F;if(1==a||sa("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=Bm(d)){var k=Cm(d,"code"),l=Cm(d,"data");k&&("ok"==k?d.load(l):("error"==k&&"no machine state"!=l?(this.Ja("Error: "+
l),"unable to verify user"==l&&(wa("user",""),this.B=null)):this.gc(k+": "+l),zm(d),d.load()?(c=Bm(d),e=!0):c=!1))}e&&Im(this,c?d:null)}else 2==a&&d.clear()}else Im(this);delete this.H;delete this.J}e=Ra(this.id);for(k=0;k<e.length;k++)l=e[k],l!==this&&l!=this.A&&(c=Km(this,l,d,b,c));b=[d,a,c];-1!=a?Hm(this,this.Nh,b):this.Nh(b)};
function Km(a,b,c,d,e){if(!b.ja.fc){b.ja.fc=!0;if(b.Zb){var k=null;e&&((k=Cm(c,b.id))||(k=Cm(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof k&&(k=null);!b.Zb(k,d)&&k&&(ra("Unable to restore state for "+b.type),a.K&&!a.T?(c.clear(),a.pc=Em,window&&window.location.reload()):a.N=!0,b.Zb(null),e=!1)}if(!d&&b.yh)for(a=b.yh.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
f.Nh=function(a){var b=a[0],c=0>a[1];a=a[2];this.ja.fc=!0;this.zh||(this.gc("PCjs v"+Gm+"\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.zh=!0);this.A&&(Km(this,this.A,b,c,a),ic(this.A));this.N&&(Jm(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D)};
f.Nh=function(a){var b=a[0],c=0>a[1];a=a[2];this.ja.fc=!0;this.zh||(this.gc("PCjs v"+Gm+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.zh=!0);this.A&&(Km(this,this.A,b,c,a),ic(this.A));this.N&&(Jm(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D)};
function Jm(a,b){if(sa("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.S,d=a.yd(),e=b.toString(),k={app:"PCjs"};k.ver=Gm;k.url=c;k.user=d;k.type="bug";k.data=e;pa("http://www.pcjs.org/api/v1/report",!0,k)}}
function Lm(a,b,c){var d,e="none",k=new Pd(a,Gm),l=new Pd(a,Gm,"validate"),p=ka();D(l,"timestamp",p);D(k,"timestamp",p);D(k,"version","1.20.2");D(k,"url",window?window.location.href:null);D(k,"browser",window?window.navigator.userAgent:"");a.A&&a.A.Yb&&(c&&lc(a.A),d=a.A.Yb(b,c),"object"===typeof d&&D(k,a.A.id,d),c&&(a.A.ja.fc=!1,!1===d&&(e=null)));for(var p=Ra(a.id),q=0;q<p.length;q++){var w=p[q];w.ja.fc&&(w.Yb&&(d=w.Yb(b,c),"object"===typeof d&&D(k,w.id,d)),c&&(w.ja.fc=!1,!1===d&&(e=null)))}e&&(c?
function Lm(a,b,c){var d,e="none",k=new Pd(a,Gm),l=new Pd(a,Gm,"validate"),p=ka();D(l,"timestamp",p);D(k,"timestamp",p);D(k,"version","1.20.3");D(k,"url",window?window.location.href:null);D(k,"browser",window?window.navigator.userAgent:"");a.A&&a.A.Yb&&(c&&lc(a.A),d=a.A.Yb(b,c),"object"===typeof d&&D(k,a.A.id,d),c&&(a.A.ja.fc=!1,!1===d&&(e=null)));for(var p=Ra(a.id),q=0;q<p.length;q++){var w=p[q];w.ja.fc&&(w.Yb&&(d=w.Yb(b,c),"object"===typeof d&&D(k,w.id,d)),c&&(w.ja.fc=!1,!1===d&&(e=null)))}e&&(c?
(p=d=!1,b?(a.B&&Mm(a,a.B,k.toString()),Am(l)&&Am(k)||(e=null,d=p=!0)):a.pc&&(d=!0,p=3==a.pc),d&&k.clear(p)):e=k.toString());c&&(a.ja.fc=!1);return e}f.reset=function(){this.ma&&this.ma.reset&&this.ma.reset();for(var a=Ra(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ma&&c.reset&&c.reset()}};f.start=function(a,b){for(var c=Ra(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
f.stop=function(a,b){for(var c=Ra(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};f.Jb=function(a,b,c){var d=this;switch(b){case "save":return this.ra[b]=c,c.onclick=function(){var a=Fm(d,!0);if(a){var b=!!(d.pc&&!d.pf||d.K),c=Lm(d,b);b?Mm(d,a,c):d.Ja("Resume disabled, machine state not saved")}},!0;case "reset":return this.ra[b]=c,c.onclick=function(){mc(d)},!0}return!1};
function Fm(a,b){var c=a.B;c||(c=va("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=Nm(a,c))||a.Ja("The user ID is invalid."))):b&&a.Ja("Browser local storage is not available"));return c}
@ -1038,6 +1038,6 @@ function Qm(a,b,c,d,e,k,l){function p(a,k){if(k)l(k,null);else{if(c){var p=b;p&&
null,a=G.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);l(a,p)}}a?e?Rm(a,k,p):p(a,null):l("no data"+(b?" for file: "+b:""),null)}
function Rm(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");pa(e,!0,null,null,function(k,l,p){if(p||!l)c(a,"unable to resolve XML reference: "+d[0]+" ("+p+")");else{if(k=d[3])if(p=l.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var q=p[0],w,B=/( [a-z]+=)(['"])(.*?)\2/g;w=B.exec(k);)q=0>q.indexOf(w[1])?q.replace(">",w[0]+">"):q.replace(new RegExp(w[1]+"(['\"])(.*?)\\1"),w[0]);p[0]!=q&&(l=l.replace(p[0],q))}else{c(a,"missing <"+d[1]+"> in "+e);return}l=l.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],l);Rm(a,b,c)}})}else c(a,null)}
function Sm(a,b,c,d){function e(a){if(void 0===p){var b=l&&Wa(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ha(a))}function k(a){e("Error: "+a);q&&(--Om||Ga(!0));q=!1}var l,p,q=!0;Om++;try{if(l=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.2/components.xsl");var w=function(d,p){if(p){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var w=p.transformNode(q);w?(l.outerHTML=w,--Om||Ga(!0)):k("transformNodeToObject failed")}else window.document.implementation&&
function Sm(a,b,c,d){function e(a){if(void 0===p){var b=l&&Wa(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ha(a))}function k(a){e("Error: "+a);q&&(--Om||Ga(!0));q=!1}var l,p,q=!0;Om++;try{if(l=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.3/components.xsl");var w=function(d,p){if(p){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var w=p.transformNode(q);w?(l.outerHTML=w,--Om||Ga(!0)):k("transformNodeToObject failed")}else window.document.implementation&&
window.document.implementation.createDocument?(w=new XSLTProcessor,w.importStylesheet(q),(w=w.transformToFragment(p,window.document))?l.parentNode?(l.parentNode.replaceChild(w,l),--Om||Ga(!0)):k("invalid machine element: "+a):k("transformToFragment failed")):k("unable to transform XML: unsupported browser");else k("failed to load XSL file: "+c);else k(d)};p?Pm(c,null,null,!1,e,q):k("failed to load XML file: "+b)}else k(d)};"<"!=b.charAt(0)?Pm(b,a,d,!0,e,w):Qm(b,null,a,d,!1,e,w)}else k("missing machine element: "+
a)}catch(B){k(B.message)}return q}window.embedPC=function(a,b,c,d){Ga(!1);return Sm(a,b,c,d)};window.enableEvents=Ga;window.sendEvent=Ha;})();