Started work on v1.19.1: Debugger improvements

This commit is contained in:
Jeff Parsons 2015-08-19 13:06:43 -07:00
commit 3f42a9d85b
141 changed files with 278 additions and 209 deletions

View file

@ -1022,14 +1022,14 @@ this.key)){try{window.localStorage.removeItem(d)}catch(k){}b.splice(c,1);c=0}},R
function B(a,b,c){try{a[a.id][b]=c}catch(d){}}
function dl(a,b,c){Ia.call(this,"Computer",a,dl,67108864);this.ia.Xb=!1;this.P=a.busWidth||a.buswidth;this.jc=el;this.F=null;this.I=!1;this.R=b?b.url:null;this.U=(Math.random()+.1).toString(36).substr(2,12);this.B=fl(this);if(this.A=Ua("CPU",this.id)){this.Qa=Ua("Debugger",this.id);this.ma=new pb({id:this.ai+".bus",buswidth:this.P},this.A,this.Qa);var d,e=Sa(this.id);if((this.bd=Ua("Panel",this.id))&&this.bd.Ag)for(b=0;b<e.length;b++)d=e[b],d.Ja=this.bd.Ja,d.ac=this.bd.ac,d.Ag=this.bd.Ag;for(b=0;b<
e.length;b++)d=e[b],d.tc&&d.tc(this,this.ma,this.A,this.Qa);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.df=d:this.jc=parseInt(d,10));var k;if(a=Ma&&Ma.state||(k=!0,a.state))b=this.O=a,k||(this.I=!0,this.jc=el),this.jc&&(this.K=new Sd(this,gl),this.K.load()?b=null:delete this.K);!b&&this.jc&&(k=null,this.B&&(k=ra()+"/api/v1/user?req=load&user="+this.B+"&state="+Wk(this,gl)),b=k)&&(this.I=!0);b?qa(b,!0,null,this,this.Dk):Za(this);c||hl(this,this.ig)}else sa("Unable to find CPU component")}Ra(dl);
var gl="1.18.9",el=0;f=dl.prototype;f.$d=function(){return this.U};f.pd=function(){return this.B?this.B:""};f.Dk=function(a,b,c){c?(this.df=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 hl(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(){hl(a,b,c)});return}}b.call(a,c)}
var gl="1.19.1",el=0;f=dl.prototype;f.$d=function(){return this.U};f.pd=function(){return this.B?this.B:""};f.Dk=function(a,b,c){c?(this.df=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 hl(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(){hl(a,b,c)});return}}b.call(a,c)}
function il(a,b){var c=new Sd(a,gl,"validate");if(c.load()&&bl(c)){var d=cl(c,"timestamp"),e=b?cl(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.ig=function(a){void 0===a&&(a=this.jc||(this.F?1:el));var b=!1,c=!1;this.L=!1;var d=this.K||new Sd(this,gl);if(-1==a)b=!0;else if(a>el){if(d.load(this.F)){this.D=new Sd(this,gl,"failsafe");this.D.load()&&(jl(this,d),a=2,$k(this.D));B(this.D,"timestamp",ma());al(this.D);var e=this.jc&&!this.I;if(1==a||ta("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=bl(d)){var k=cl(d,"code"),l=cl(d,"data");k&&("ok"==k?d.load(l):("error"==k&&"no machine state"!=l?(this.Ja("Error: "+
l),"unable to verify user"==l&&(ya("user",""),this.B=null)):this.ac(k+": "+l),$k(d),d.load()?(c=bl(d),e=!0):c=!1))}e&&il(this,c?d:null)}else 2==a&&d.clear()}else il(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=kl(this,l,d,b,c));b=[d,a,c];-1!=a?hl(this,this.zi,b):this.zi(b)};
function kl(a,b,c,d,e){if(!b.ia.Xb){b.ia.Xb=!0;if(b.$b){var k=null;e&&((k=cl(c,b.id))||(k=cl(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof k&&(k=null);!b.$b(k,d)&&k&&(sa("Unable to restore state for "+b.type),a.O&&!a.F?(c.clear(),a.jc=el,window&&window.location.reload()):a.L=!0,b.$b(null),e=!1)}if(!d&&b.hi)for(a=b.hi.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
f.zi=function(a){var b=a[0],c=0>a[1];a=a[2];this.ia.Xb=!0;this.ii||(this.ac("PCjs v"+gl+"\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.ii=!0);this.A&&(kl(this,this.A,b,c,a),kc(this.A));this.L&&(jl(this,b),b.clear());!c&&this.D&&(this.D.clear(),delete this.D)};
function jl(a,b){if(ta("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.R,d=a.pd(),e=b.toString(),k={app:"PCjs"};k.ver=gl;k.url=c;k.user=d;k.type="bug";k.data=e;qa("http://www.pcjs.org/api/v1/report",!0,k)}}
function ll(a,b,c){var d,e="none",k=new Sd(a,gl),l=new Sd(a,gl,"validate"),p=ma();B(l,"timestamp",p);B(k,"timestamp",p);B(k,"version","1.18.9");B(k,"url",window?window.location.href:null);B(k,"browser",window?window.navigator.userAgent:"");a.A&&a.A.Zb&&(c&&mc(a.A),d=a.A.Zb(b,c),"object"===typeof d&&B(k,a.A.id,d),c&&(a.A.ia.Xb=!1,!1===d&&(e=null)));for(var p=Sa(a.id),q=0;q<p.length;q++){var w=p[q];w.ia.Xb&&(w.Zb&&(d=w.Zb(b,c),"object"===typeof d&&B(k,w.id,d)),c&&(w.ia.Xb=!1,!1===d&&(e=null)))}e&&(c?
function ll(a,b,c){var d,e="none",k=new Sd(a,gl),l=new Sd(a,gl,"validate"),p=ma();B(l,"timestamp",p);B(k,"timestamp",p);B(k,"version","1.19.1");B(k,"url",window?window.location.href:null);B(k,"browser",window?window.navigator.userAgent:"");a.A&&a.A.Zb&&(c&&mc(a.A),d=a.A.Zb(b,c),"object"===typeof d&&B(k,a.A.id,d),c&&(a.A.ia.Xb=!1,!1===d&&(e=null)));for(var p=Sa(a.id),q=0;q<p.length;q++){var w=p[q];w.ia.Xb&&(w.Zb&&(d=w.Zb(b,c),"object"===typeof d&&B(k,w.id,d)),c&&(w.ia.Xb=!1,!1===d&&(e=null)))}e&&(c?
(p=d=!1,b?(a.B&&ml(a,a.B,k.toString()),al(l)&&al(k)||(e=null,d=p=!0)):a.jc&&(d=!0,p=3==a.jc),d&&k.clear(p)):e=k.toString());c&&(a.ia.Xb=!1);return e}f.reset=function(){this.ma&&this.ma.reset&&(this.Ka("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.Ka("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.Hb=function(a,b,c){var d=this;switch(b){case "save":return this.ta[b]=c,c.onclick=function(){var a=fl(d,!0);if(a){var b=!(!d.jc||d.df),c=ll(d,b);b?ml(d,a,c):d.Ja("Resume disabled, machine state not saved")}},!0;case "reset":return this.ta[b]=c,c.onclick=function(){nc(d)},!0}return!1};
function fl(a,b){var c=a.B;c||(c=xa("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=nl(a,c))||a.Ja("The user ID is invalid."))):b&&a.Ja("Browser local storage is not available"));return c}
@ -1042,6 +1042,6 @@ function ql(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?rl(a,k,p):p(a,null):l("no data"+(b?" for file: "+b:""),null)}
function rl(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");qa(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);rl(a,b,c)}})}else c(a,null)}
function sl(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=ka(a))}function k(a){e("Error: "+a);q&&(--ol||Ga(!0));q=!1}var l,p,q=!0;ol++;try{if(l=window.document.getElementById(a)){c||(c="/versions/pcjs/1.18.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,--ol||Ga(!0)):k("transformNodeToObject failed")}else window.document.implementation&&
function sl(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=ka(a))}function k(a){e("Error: "+a);q&&(--ol||Ga(!0));q=!1}var l,p,q=!0;ol++;try{if(l=window.document.getElementById(a)){c||(c="/versions/pcjs/1.19.1/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,--ol||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),--ol||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?pl(c,null,null,!1,e,q):k("failed to load XML file: "+b)}else k(d)};"<"!=b.charAt(0)?pl(b,a,d,!0,e,w):ql(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){Ga(!1);return sl(a,b,c,d)};window.enableEvents=Ga;window.sendEvent=Ha;})();