Starting work on v1.20.0

This commit is contained in:
Jeff Parsons 2015-10-23 18:39:06 -07:00
commit 922ca42571
140 changed files with 145 additions and 145 deletions

View file

@ -8,7 +8,7 @@
<xsl:variable name="MACHINECLASS">pc</xsl:variable>
<xsl:variable name="APPCLASS">pcjs</xsl:variable>
<xsl:variable name="APPVERSION">1.19.9</xsl:variable>
<xsl:variable name="APPVERSION">1.20.0</xsl:variable>
<xsl:variable name="SITEHOST">www.pcjs.org</xsl:variable>
<xsl:template name="componentStyles">

View file

@ -1179,7 +1179,7 @@ Fo(zc)+" return="+Fo(Hd));a.V(Ac);Fh++}Fh||a.V("no return addresses found")}brea
(Na=void 0);if(void 0!==Na){var bd=0;if("all"==Na)bd=1610481663,Na=null;else if("on"==Na)Zb=!0,Na=null;else if("off"==Na)Zb=!1,Na=null;else{"keys"==Na&&(Na="key");"kbd"==Na&&(Na="keyboard");for(Yb in ko)if(Na==Yb){bd=ko[Yb];Zb=!!(a.lc&bd);break}if(!bd){a.V("unknown message category: "+Na);break a}}bd&&("on"==h[2]?(a.lc|=bd,Zb=!0):"off"==h[2]&&(a.lc&=~bd,Zb=!1))}var $p=0,Bc="";for(Yb in ko)if(!Na||Na==Yb){var aq=!!(a.lc&ko[Yb]);if(null===Zb||Zb==aq)Bc&&(Bc+=","),++$p%10||(Bc+="\n\t"),"key"==Yb&&(Yb=
"keys"),Bc+=Yb}void 0===Na&&a.V("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.V((null!==Zb?Zb?"messages on: ":"messages off: ":"message categories:\n\t")+(Bc||"none"));$n(a)}break;case "o":var Hh=h[1],bq=h[2];if(Hh&&"?"!=Hh){var Ih=ro(a,Hh,"port #"),Jh=ro(a,bq);void 0!==Ih&&void 0!==Jh&&(mc(a.na,Ih,1,Jh),a.V(ia(Ih)+": "+ga(Jh)))}else a.V("output commands:"),a.V("\to [p] [b]\twrite byte [b] to port [p]"),a.V("warning: port accesses can affect hardware state");break;case "p":if("print"==
h[0]){xp(a,b.substr(5));break}var cm="pr"==h[0]?1:0,Id=1+cm;if(a.R)a.V("step in progress");else{var Qf,dm=!1,Ya=Yn(a,v(a.O),a.O.Ca.da);do switch(Qf=!1,a.Xa(Ya)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:Ho(a,Ya,1);Qf=!0;break;case 204:case 206:a.R=Id;Ho(a,Ya,1);break;case 205:case 224:case 225:case 226:a.R=Id;Ho(a,Ya,Ya.Pb?4:2);break;case 232:a.R=Id;Ho(a,Ya,Ya.Pb?5:3);break;case 154:a.R=Id;Ho(a,Ya,Ya.Pb?7:5);break;case 255:var em=a.pc(Ya)&14591;if(4351==em||6399==
em)a.R=Id,ep(a,Ya);break;case 243:case 242:Ho(a,Ya,1);dm=Qf=!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:dm&&(a.R=Id,Ho(a,Ya,1))}while(Qf);a.R?(a.Gd(a.A,Ya,!0),a.Ce()||(a.O.ad(),a.R=0)):zp(a,cm?"tr":"t")}break;case "r":if("reset"==b){a.qa&&a.qa.reset();break}Xo(a,h);break;case "t":zp(a,h[0],h[1]);break;case "u":Yo(a,h[1],h[2],8);break;case "v":if("var"==h[0]){up(a,b.substr(3))||(d=!1);break}a.V("PCjs version 1.19.9 ("+
em)a.R=Id,ep(a,Ya);break;case 243:case 242:Ho(a,Ya,1);dm=Qf=!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:dm&&(a.R=Id,Ho(a,Ya,1))}while(Qf);a.R?(a.Gd(a.A,Ya,!0),a.Ce()||(a.O.ad(),a.R=0)):zp(a,cm?"tr":"t")}break;case "r":if("reset"==b){a.qa&&a.qa.reset();break}Xo(a,h);break;case "t":zp(a,h[0],h[1]);break;case "u":Yo(a,h[1],h[2],8);break;case "v":if("var"==h[0]){up(a,b.substr(3))||(d=!1);break}a.V("PCjs version 1.20.0 ("+
a.O.sa+",RELEASE,NOPREFETCH"+(ub?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");break;case "x":a:if(h[1]&&"?"!=h[1])switch(h[1]){case "cs":var ve;void 0!==h[3]&&(ve=+h[3]);switch(h[2]){case "int":a.O.Z.Ze=ve;break;case "start":a.O.Z.Af=ve;break;case "stop":a.O.Z.af=ve;break;default:a.V("unknown cs option");break a}void 0!==ve&&Pc(a.O);a.V("checksums "+(a.O.pa.Pe?"enabled":"disabled"));break;case "sp":void 0!==h[2]&&(cd(a.O,+h[2])||a.V("warning: using 1x multiplier, previous target not reached"));
a.V("target speed: "+(a.O.Z.we.toFixed(2)+"Mhz")+" ("+a.O.Z.Md+"x)");break;default:a.V("unknown option: "+h[1])}else a.V("execution options:"),a.V("\tcs int #\tset checksum cycle interval to #"),a.V("\tcs start #\tset checksum cycle start count to #"),a.V("\tcs stop #\tset checksum cycle stop count to #"),a.V("\tsp #\t\tset speed multiplier to #");break;case "?":if(h[1]){xp(a,b.substr(1));break}var we="commands:",Kh;for(Kh in fo)we+="\n"+pa(Kh,7)+fo[Kh];Ff(a)||(we+="\nnote: frequency/history disabled if no exec breakpoints");
a.V(we);break;default:a.V("unknown command: "+b),d=!1}}}catch(fm){a.V("debugger error: "+(fm.stack||fm.message)),d=!1}return d}function bo(a,b,c){b=Qo(a,b,c);for(var d in b)if(!dp(a,b[d]))return!1;return!0}Sa(function(){for(var a=mb(window.document,"pcjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=kb(c),d=new Xn(d);lb(d,c)}});function Xe(a,b,c){this.id=a.id;this.key=Bp(a,b,c);this.fa=a.fa;Cp(this,a.Yj)}
@ -1189,14 +1189,14 @@ this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}},t
function Ep(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){Da(c.message||c),b=!1}return b}function Fp(a,b){return a[a.id][b]||null}function Ye(a,b,c){try{a[a.id][b]=c}catch(d){}}
function Gp(a,b,c){Wa.call(this,"Computer",a,Gp,67108864);this.pa.oc=!1;this.qa=a.busWidth||a.buswidth;this.Gc=Hp;this.P=null;this.R=!1;this.aa=b?b.url:null;this.ea=(Math.random()+.1).toString(36).substr(2,12);this.A=Ip(this);if(this.O=jb("CPU",this.id)){this.fa=jb("Debugger",this.id);this.na=new Jb({id:this.Xj+".bus",buswidth:this.qa},this.O,this.fa);var d,e=hb(this.id);if((this.Pd=jb("Panel",this.id))&&this.Pd.uf)for(b=0;b<e.length;b++)d=e[b],d.Ta=this.Pd.Ta,d.V=this.Pd.V,d.uf=this.Pd.uf;for(b=
0;b<e.length;b++)d=e[b],d.Kc&&d.Kc(this,this.na,this.O,this.fa);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.Yg=d:this.Gc=parseInt(d,10));var f;if(a=$a&&$a.state||(f=!0,a.state))b=this.S=a,f||(this.R=!0,this.Gc=Hp),this.Gc&&(this.X=new Xe(this,Jp),this.X.load()?b=null:delete this.X);!b&&this.Gc&&(f=null,this.A&&(f=Ca()+"/api/v1/user?req=load&user="+this.A+"&state="+Bp(this,Jp)),b=f)&&(this.R=!0);b?Ba(b,!0,null,this,this.Rl):rb(this);c||Kp(this,this.ah)}else Da("Unable to find CPU component")}
gb(Gp);var Jp="1.19.9",Hp=0;g=Gp.prototype;g.Xe=function(){return this.ea};g.be=function(){return this.A?this.A:""};g.Rl=function(a,b,c){c?(this.Yg=null,this.R=!1,this.Ta("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):this.P=b;rb(this)};function Kp(a,b,c){for(var d=hb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!sb(f)){sb(f,function(){Kp(a,b,c)});return}}b.call(a,c)}
gb(Gp);var Jp="1.20.0",Hp=0;g=Gp.prototype;g.Xe=function(){return this.ea};g.be=function(){return this.A?this.A:""};g.Rl=function(a,b,c){c?(this.Yg=null,this.R=!1,this.Ta("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):this.P=b;rb(this)};function Kp(a,b,c){for(var d=hb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!sb(f)){sb(f,function(){Kp(a,b,c)});return}}b.call(a,c)}
function Lp(a,b){var c=new Xe(a,Jp,"validate");if(c.load()&&Ep(c)){var d=Fp(c,"timestamp"),e=b?Fp(b,"timestamp"):"unknown";d!=e&&(a.Ta("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
g.ah=function(a){void 0===a&&(a=this.Gc||(this.P?1:Hp));var b=!1,c=!1;this.Y=!1;var d=this.X||new Xe(this,Jp);if(-1==a)b=!0;else if(a>Hp){if(d.load(this.P)){this.B=new Xe(this,Jp,"failsafe");this.B.load()&&(Mp(this,d),a=2,Cp(this.B));Ye(this.B,"timestamp",ta());Dp(this.B);var e=this.Gc&&!this.R;if(1==a||Ea("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=Ep(d)){var f=Fp(d,"code"),h=Fp(d,"data");f&&("ok"==f?d.load(h):("error"==f&&"no machine state"!=h?(this.Ta("Error: "+
h),"unable to verify user"==h&&(Ja("user",""),this.A=null)):this.V(f+": "+h),Cp(d),d.load()?(c=Ep(d),e=!0):c=!1))}e&&Lp(this,c?d:null)}else 2==a&&d.clear()}else Lp(this);delete this.P;delete this.X}e=hb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.O&&(c=Np(this,h,d,b,c));b=[d,a,c];-1!=a?Kp(this,this.uj,b):this.uj(b)};
function Np(a,b,c,d,e){if(!b.pa.oc){b.pa.oc=!0;if(b.rc){var f=null;e&&((f=Fp(c,b.id))||(f=Fp(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.rc(f,d)&&f&&(Da("Unable to restore state for "+b.type),a.S&&!a.P?(c.clear(),a.Gc=Hp,window&&window.location.reload()):a.Y=!0,b.rc(null),e=!1)}if(!d&&b.Vj)for(a=b.Vj.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
g.uj=function(a){var b=a[0],c=0>a[1];a=a[2];this.pa.oc=!0;this.Wj||(this.V("PCjs v"+Jp+"\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Wj=!0);this.O&&(Np(this,this.O,b,c,a),Tc(this.O));this.Y&&(Mp(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B)};
function Mp(a,b){if(Ea("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.aa,d=a.be(),e=b.toString(),f={app:"PCjs"};f.ver=Jp;f.url=c;f.user=d;f.type="bug";f.data=e;Ba("http://www.pcjs.org/api/v1/report",!0,f)}}
function Ap(a,b,c){var d,e="none",f=new Xe(a,Jp),h=new Xe(a,Jp,"validate"),m=ta();Ye(h,"timestamp",m);Ye(f,"timestamp",m);Ye(f,"version","1.19.9");Ye(f,"url",window?window.location.href:null);Ye(f,"browser",window?window.navigator.userAgent:"");a.O&&a.O.qc&&(c&&a.O.Yb(),d=a.O.qc(b,c),"object"===typeof d&&Ye(f,a.O.id,d),c&&(a.O.pa.oc=!1,!1===d&&(e=null)));for(var m=hb(a.id),q=0;q<m.length;q++){var r=m[q];r.pa.oc&&(r.qc&&(d=r.qc(b,c),"object"===typeof d&&Ye(f,r.id,d)),c&&(r.pa.oc=!1,!1===d&&(e=null)))}e&&
function Ap(a,b,c){var d,e="none",f=new Xe(a,Jp),h=new Xe(a,Jp,"validate"),m=ta();Ye(h,"timestamp",m);Ye(f,"timestamp",m);Ye(f,"version","1.20.0");Ye(f,"url",window?window.location.href:null);Ye(f,"browser",window?window.navigator.userAgent:"");a.O&&a.O.qc&&(c&&a.O.Yb(),d=a.O.qc(b,c),"object"===typeof d&&Ye(f,a.O.id,d),c&&(a.O.pa.oc=!1,!1===d&&(e=null)));for(var m=hb(a.id),q=0;q<m.length;q++){var r=m[q];r.pa.oc&&(r.qc&&(d=r.qc(b,c),"object"===typeof d&&Ye(f,r.id,d)),c&&(r.pa.oc=!1,!1===d&&(e=null)))}e&&
(c?(m=d=!1,b?(a.A&&Op(a,a.A,f.toString()),Dp(h)&&Dp(f)||(e=null,d=m=!0)):a.Gc&&(d=!0,m=3==a.Gc),d&&f.clear(m)):e=f.toString());c&&(a.pa.oc=!1);return e}g.reset=function(){this.na&&this.na.reset&&(this.va("Resetting "+this.na.type),this.na.reset());for(var a=hb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.na&&c.reset&&(this.va("Resetting "+c.type),c.reset())}};g.start=function(a,b){for(var c=hb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
g.stop=function(a,b){for(var c=hb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};g.Xb=function(a,b,c){var d=this;switch(b){case "save":return this.Aa[b]=c,c.onclick=function(){var a=Ip(d,!0);if(a){var b=!!(d.Gc&&!d.Yg||d.S),c=Ap(d,b);b?Op(d,a,c):d.Ta("Resume disabled, machine state not saved")}},!0;case "reset":return this.Aa[b]=c,c.onclick=function(){Yc(d)},!0}return!1};
function Ip(a,b){var c=a.A;c||(c=Ia("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=Pp(a,c))||a.Ta("The user ID is invalid."))):b&&a.Ta("Browser local storage is not available"));return c}
@ -1209,6 +1209,6 @@ function Sp(a,b,c,d,e,f,h){function m(a,f){if(f)h(f,null);else{if(c){var m=b;m&&
null,a=A.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,m)}}a?e?cq(a,f,m):m(a,null):h("no data"+(b?" for file: "+b:""),null)}
function cq(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ba(e,!0,null,null,function(f,h,m){if(m||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+m+")");else{if(f=d[3])if(m=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var q=m[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]);m[0]!=q&&(h=h.replace(m[0],q))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],h);cq(a,b,c)}})}else c(a,null)}
function dq(a,b,c,d){function e(a){if(void 0===m){var b=h&&mb(h,"machine-warning");m=b&&b[0]||h}m&&(m.innerHTML=oa(a))}function f(a){e("Error: "+a);q&&(--Qp||Ua(!0));q=!1}var h,m,q=!0;Qp++;try{if(h=window.document.getElementById(a)){c||(c="/versions/pcjs/1.19.9/components.xsl");var r=function(d,m){if(m){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var r=m.transformNode(q);r?(h.outerHTML=r,--Qp||Ua(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
function dq(a,b,c,d){function e(a){if(void 0===m){var b=h&&mb(h,"machine-warning");m=b&&b[0]||h}m&&(m.innerHTML=oa(a))}function f(a){e("Error: "+a);q&&(--Qp||Ua(!0));q=!1}var h,m,q=!0;Qp++;try{if(h=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.0/components.xsl");var r=function(d,m){if(m){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var r=m.transformNode(q);r?(h.outerHTML=r,--Qp||Ua(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
window.document.implementation.createDocument?(r=new XSLTProcessor,r.importStylesheet(q),(r=r.transformToFragment(m,window.document))?h.parentNode?(h.parentNode.replaceChild(r,h),--Qp||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)};m?Rp(c,null,null,!1,e,q):f("failed to load XML file: "+b)}else f(d)};"<"!=b.charAt(0)?Rp(b,a,d,!0,e,r):Sp(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 dq(a,b,c,d)};window.enableEvents=Ua;window.sendEvent=Va;})();

View file

@ -1023,14 +1023,14 @@ this.key)){try{window.localStorage.removeItem(d)}catch(k){}b.splice(c,1);c=0}},Y
function E(a,b,c){try{a[a.id][b]=c}catch(d){}}
function sl(a,b,c){Ja.call(this,"Computer",a,sl);this.ja.$b=!1;this.P=a.busWidth||a.buswidth;this.lc=tl;this.F=null;this.I=!1;this.T=b?b.url:null;this.U=(Math.random()+.1).toString(36).substr(2,12);this.B=ul(this);if(this.A=Ua("CPU",this.id)){this.Pa=Ua("Debugger",this.id);this.ma=new pb({id:this.Ci+".bus",buswidth:this.P},this.A,this.Pa);var d,e=Sa(this.id);if((this.gd=Ua("Panel",this.id))&&this.gd.Hg)for(b=0;b<e.length;b++)d=e[b],d.Ja=this.gd.Ja,d.Wb=this.gd.Wb,d.Hg=this.gd.Hg;for(b=0;b<e.length;b++)d=
e[b],d.uc&&d.uc(this,this.ma,this.A,this.Pa);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.kf=d:this.lc=parseInt(d,10));var k;if(a=Ma&&Ma.state||(k=!0,a.state))b=this.L=a,k||(this.I=!0,this.lc=tl),this.lc&&(this.K=new Vd(this,vl),this.K.load()?b=null:delete this.K);!b&&this.lc&&(k=null,this.B&&(k=qa()+"/api/v1/user?req=load&user="+this.B+"&state="+kl(this,vl)),b=k)&&(this.I=!0);b?pa(b,!0,null,this,this.Jk):Za(this);c||wl(this,this.pg)}else ra("Unable to find CPU component")}Ra(sl);
var vl="1.19.9",tl=0;f=sl.prototype;f.be=function(){return this.U};f.pd=function(){return this.B?this.B:""};f.Jk=function(a,b,c){c?(this.kf=null,this.I=!1,this.Ja("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):this.F=b;Za(this)};function wl(a,b,c){for(var d=Sa(a.id),e=0;e<=d.length;e++){var k=e<d.length?d[e]:a;if(!$a(k)){$a(k,function(){wl(a,b,c)});return}}b.call(a,c)}
var vl="1.20.0",tl=0;f=sl.prototype;f.be=function(){return this.U};f.pd=function(){return this.B?this.B:""};f.Jk=function(a,b,c){c?(this.kf=null,this.I=!1,this.Ja("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):this.F=b;Za(this)};function wl(a,b,c){for(var d=Sa(a.id),e=0;e<=d.length;e++){var k=e<d.length?d[e]:a;if(!$a(k)){$a(k,function(){wl(a,b,c)});return}}b.call(a,c)}
function xl(a,b){var c=new Vd(a,vl,"validate");if(c.load()&&ql(c)){var d=rl(c,"timestamp"),e=b?rl(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.pg=function(a){void 0===a&&(a=this.lc||(this.F?1:tl));var b=!1,c=!1;this.O=!1;var d=this.K||new Vd(this,vl);if(-1==a)b=!0;else if(a>tl){if(d.load(this.F)){this.D=new Vd(this,vl,"failsafe");this.D.load()&&(yl(this,d),a=2,ol(this.D));E(this.D,"timestamp",la());pl(this.D);var e=this.lc&&!this.I;if(1==a||sa("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=ql(d)){var k=rl(d,"code"),l=rl(d,"data");k&&("ok"==k?d.load(l):("error"==k&&"no machine state"!=l?(this.Ja("Error: "+
l),"unable to verify user"==l&&(za("user",""),this.B=null)):this.Wb(k+": "+l),ol(d),d.load()?(c=ql(d),e=!0):c=!1))}e&&xl(this,c?d:null)}else 2==a&&d.clear()}else xl(this);delete this.F;delete this.K}e=Sa(this.id);for(k=0;k<e.length;k++)l=e[k],l!==this&&l!=this.A&&(c=zl(this,l,d,b,c));b=[d,a,c];-1!=a?wl(this,this.Ei,b):this.Ei(b)};
function zl(a,b,c,d,e){if(!b.ja.$b){b.ja.$b=!0;if(b.dc){var k=null;e&&((k=rl(c,b.id))||(k=rl(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof k&&(k=null);!b.dc(k,d)&&k&&(ra("Unable to restore state for "+b.type),a.L&&!a.F?(c.clear(),a.lc=tl,window&&window.location.reload()):a.O=!0,b.dc(null),e=!1)}if(!d&&b.pi)for(a=b.pi.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
f.Ei=function(a){var b=a[0],c=0>a[1];a=a[2];this.ja.$b=!0;this.vi||(this.Wb("PCjs v"+vl+"\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.vi=!0);this.A&&(zl(this,this.A,b,c,a),kc(this.A));this.O&&(yl(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D)};
function yl(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.T,d=a.pd(),e=b.toString(),k={app:"PCjs"};k.ver=vl;k.url=c;k.user=d;k.type="bug";k.data=e;pa("http://www.pcjs.org/api/v1/report",!0,k)}}
function Al(a,b,c){var d,e="none",k=new Vd(a,vl),l=new Vd(a,vl,"validate"),p=la();E(l,"timestamp",p);E(k,"timestamp",p);E(k,"version","1.19.9");E(k,"url",window?window.location.href:null);E(k,"browser",window?window.navigator.userAgent:"");a.A&&a.A.cc&&(c&&nc(a.A),d=a.A.cc(b,c),"object"===typeof d&&E(k,a.A.id,d),c&&(a.A.ja.$b=!1,!1===d&&(e=null)));for(var p=Sa(a.id),q=0;q<p.length;q++){var w=p[q];w.ja.$b&&(w.cc&&(d=w.cc(b,c),"object"===typeof d&&E(k,w.id,d)),c&&(w.ja.$b=!1,!1===d&&(e=null)))}e&&(c?
function Al(a,b,c){var d,e="none",k=new Vd(a,vl),l=new Vd(a,vl,"validate"),p=la();E(l,"timestamp",p);E(k,"timestamp",p);E(k,"version","1.20.0");E(k,"url",window?window.location.href:null);E(k,"browser",window?window.navigator.userAgent:"");a.A&&a.A.cc&&(c&&nc(a.A),d=a.A.cc(b,c),"object"===typeof d&&E(k,a.A.id,d),c&&(a.A.ja.$b=!1,!1===d&&(e=null)));for(var p=Sa(a.id),q=0;q<p.length;q++){var w=p[q];w.ja.$b&&(w.cc&&(d=w.cc(b,c),"object"===typeof d&&E(k,w.id,d)),c&&(w.ja.$b=!1,!1===d&&(e=null)))}e&&(c?
(p=d=!1,b?(a.B&&Bl(a,a.B,k.toString()),pl(l)&&pl(k)||(e=null,d=p=!0)):a.lc&&(d=!0,p=3==a.lc),d&&k.clear(p)):e=k.toString());c&&(a.ja.$b=!1);return e}f.reset=function(){this.ma&&this.ma.reset&&(this.Na("Resetting "+this.ma.type),this.ma.reset());for(var a=Sa(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ma&&c.reset&&(this.Na("Resetting "+c.type),c.reset())}};f.start=function(a,b){for(var c=Sa(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=Sa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};f.Ib=function(a,b,c){var d=this;switch(b){case "save":return this.sa[b]=c,c.onclick=function(){var a=ul(d,!0);if(a){var b=!!(d.lc&&!d.kf||d.L),c=Al(d,b);b?Bl(d,a,c):d.Ja("Resume disabled, machine state not saved")}},!0;case "reset":return this.sa[b]=c,c.onclick=function(){oc(d)},!0}return!1};
function ul(a,b){var c=a.B;c||(c=ya("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=Cl(a,c))||a.Ja("The user ID is invalid."))):b&&a.Ja("Browser local storage is not available"));return c}
@ -1043,6 +1043,6 @@ function Fl(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?Gl(a,k,p):p(a,null):l("no data"+(b?" for file: "+b:""),null)}
function Gl(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,C=/( [a-z]+=)(['"])(.*?)\2/g;w=C.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);Gl(a,b,c)}})}else c(a,null)}
function Hl(a,b,c,d){function e(a){if(void 0===p){var b=l&&Xa(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ja(a))}function k(a){e("Error: "+a);q&&(--Dl||Ha(!0));q=!1}var l,p,q=!0;Dl++;try{if(l=window.document.getElementById(a)){c||(c="/versions/pcjs/1.19.9/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,--Dl||Ha(!0)):k("transformNodeToObject failed")}else window.document.implementation&&
function Hl(a,b,c,d){function e(a){if(void 0===p){var b=l&&Xa(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ja(a))}function k(a){e("Error: "+a);q&&(--Dl||Ha(!0));q=!1}var l,p,q=!0;Dl++;try{if(l=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.0/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,--Dl||Ha(!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),--Dl||Ha(!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?El(c,null,null,!1,e,q):k("failed to load XML file: "+b)}else k(d)};"<"!=b.charAt(0)?El(b,a,d,!0,e,w):Fl(b,null,a,d,!1,e,w)}else k("missing machine element: "+
a)}catch(C){k(C.message)}return q}window.embedPC=function(a,b,c,d){Ha(!1);return Hl(a,b,c,d)};window.enableEvents=Ha;window.sendEvent=Ia;})();