Starting work on v1.18.1

This commit is contained in:
Jeff Parsons 2015-05-21 11:20:52 -07:00 committed by jeffpar
commit 5f29c9967b
131 changed files with 181 additions and 173 deletions

View file

@ -1002,21 +1002,21 @@ Yd.prototype={constructor:Yd,set:function(a,b){try{this[this.id][a]=b}catch(c){}
a:JSON.stringify(a)},clear:function(a){xk(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(m){}b.splice(c,1);c=0}},lc:function(){}};function xk(a,b){a[a.id]={};b&&a.set("parms",b);a.ik=!1}
function yk(a){var b=!0;if(va()){var c=JSON.stringify(a[a.id]);xa(a.key,c)||(sa("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}
function zk(a,b,c){Ha.call(this,"Computer",a,zk);this.ga.ac=!1;this.we=a.busWidth||a.buswidth;this.Xc=Ak;this.jh=null;this.ai=!1;this.url=b?b.url:null;this.fr=(Math.random()+.1).toString(36).substr(2,12);this.Yc=Bk(this);if(this.V=Ta("CPU",this.id)){this.Ta=Ta("Debugger",this.id);this.ma=new Cb({id:this.Wm+".bus",buswidth:this.we},this.V,this.Ta);var d,e=Qa(this.id);if((this.Ud=Ta("Panel",this.id))&&this.Ud.Xj)for(b=0;b<e.length;b++)d=e[b],d.wa=this.Ud.wa,d.mc=this.Ud.mc,d.Xj=this.Ud.Xj;for(b=0;b<
e.length;b++)d=e[b],d.Ec&&d.Ec(this,this.ma,this.V,this.Ta);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.vj=d:this.Xc=parseInt(d,10));var m;if(a=Ka&&Ka.state||(m=!0,a.state))b=this.zn=a,m||(this.ai=!0,this.Xc=Ak),this.Xc&&(this.zj=new Yd(this,"1.18.0"),this.zj.load()?b=null:delete this.zj);!b&&this.Xc&&(m=null,this.Yc&&(m=ra()+"/api/v1/user?req=load&user="+this.Yc+"&state="+wk(this,"1.18.0")),b=m)&&(this.ai=!0);b?qa(b,!0,null,this,this.Np):Ya(this);c||Ck(this,this.lj)}else sa("Unable to find CPU component")}
e.length;b++)d=e[b],d.Ec&&d.Ec(this,this.ma,this.V,this.Ta);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.vj=d:this.Xc=parseInt(d,10));var m;if(a=Ka&&Ka.state||(m=!0,a.state))b=this.zn=a,m||(this.ai=!0,this.Xc=Ak),this.Xc&&(this.zj=new Yd(this,"1.18.1"),this.zj.load()?b=null:delete this.zj);!b&&this.Xc&&(m=null,this.Yc&&(m=ra()+"/api/v1/user?req=load&user="+this.Yc+"&state="+wk(this,"1.18.1")),b=m)&&(this.ai=!0);b?qa(b,!0,null,this,this.Np):Ya(this);c||Ck(this,this.lj)}else sa("Unable to find CPU component")}
Pa(zk);var Ak=0;f=zk.prototype;f.Pf=function(){return this.fr};f.re=function(){return this.Yc?this.Yc:""};f.Np=function(a,b,c){c?(this.vj=null,this.ai=!1,this.wa("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):this.jh=b;Ya(this)};function Ck(a,b,c){for(var d=Qa(a.id),e=0;e<=d.length;e++){var m=e<d.length?d[e]:a;if(!Za(m)){Za(m,function(){Ck(a,b,c)});return}}b.call(a,c)}
function Dk(a,b){var c=new Yd(a,"1.18.0","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.wa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
f.lj=function(a){void 0===a&&(a=this.Xc||(this.jh?1:Ak));var b=!1,c=!1;this.Km=!1;var d=this.zj||new Yd(this,"1.18.0");if(-1==a)b=!0;else if(a>Ak){if(d.load(this.jh)){this.rf=new Yd(this,"1.18.0","failsafe");this.rf.load()&&(Ek(this,d),a=2,xk(this.rf));this.rf.set("timestamp",ma());yk(this.rf);var e=this.Xc&&!this.ai;if(1==a||ta("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var m=d.get("code"),n=d.get("data");m&&("ok"==m?d.load(n):("error"==
function Dk(a,b){var c=new Yd(a,"1.18.1","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.wa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
f.lj=function(a){void 0===a&&(a=this.Xc||(this.jh?1:Ak));var b=!1,c=!1;this.Km=!1;var d=this.zj||new Yd(this,"1.18.1");if(-1==a)b=!0;else if(a>Ak){if(d.load(this.jh)){this.rf=new Yd(this,"1.18.1","failsafe");this.rf.load()&&(Ek(this,d),a=2,xk(this.rf));this.rf.set("timestamp",ma());yk(this.rf);var e=this.Xc&&!this.ai;if(1==a||ta("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var m=d.get("code"),n=d.get("data");m&&("ok"==m?d.load(n):("error"==
m&&"no machine state"!=n?(this.wa("Error: "+n),"unable to verify user"==n&&(xa("user",""),this.Yc=null)):this.mc(m+": "+n),xk(d),d.load()?(c=d.parse(),e=!0):c=!1))}e&&Dk(this,c?d:null)}else 2==a&&d.clear()}else Dk(this);delete this.jh;delete this.zj}e=Qa(this.id);for(m=0;m<e.length;m++)n=e[m],n!==this&&n!=this.V&&(c=Fk(this,n,d,b,c));b=[d,a,c];-1!=a?Ck(this,this.Cm,b):this.Cm(b)};
function Fk(a,b,c,d,e){if(!b.ga.ac){b.ga.ac=!0;if(b.dc){var m=null;e&&((m=c.get(b.id))||(m=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof m&&(m=null);!b.dc(m,d)&&m&&(sa("Unable to restore state for "+b.type),a.zn&&!a.jh?(c.clear(),a.Xc=Ak,window&&window.location.reload()):a.Km=!0,b.dc(null),e=!1)}if(!d&&b.zm)for(a=b.zm.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
f.Cm=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga.ac=!0;this.Hm||(this.mc("PCjs v1.18.0\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Hm=!0);this.V&&(Fk(this,this.V,b,c,a),uc(this.V));this.Km&&(Ek(this,b),b.clear());!c&&this.rf&&(this.rf.clear(),delete this.rf)};
function Ek(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.re(),d=b.toString(),e={app:"PCjs",ver:"1.18.0"};e.url=a.url;e.user=c;e.type="bug";e.data=d;qa("http://www.pcjs.org/api/v1/report",!0,e)}}
function Gk(a,b,c){var d,e="none",m=new Yd(a,"1.18.0"),n=new Yd(a,"1.18.0","validate"),p=ma();n.set("timestamp",p);m.set("timestamp",p);m.set("version","1.18.0");m.set("url",window?window.location.href:null);m.set("browser",window?window.navigator.userAgent:"");a.V&&a.V.cc&&(c&&wc(a.V),d=a.V.cc(b,c),"object"===typeof d&&m.set(a.V.id,d),c&&(a.V.ga.ac=!1,!1===d&&(e=null)));for(var p=Qa(a.id),v=0;v<p.length;v++){var w=p[v];w.ga.ac&&(w.cc&&(d=w.cc(b,c),"object"===typeof d&&m.set(w.id,d)),c&&(w.ga.ac=
f.Cm=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga.ac=!0;this.Hm||(this.mc("PCjs v1.18.1\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Hm=!0);this.V&&(Fk(this,this.V,b,c,a),uc(this.V));this.Km&&(Ek(this,b),b.clear());!c&&this.rf&&(this.rf.clear(),delete this.rf)};
function Ek(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.re(),d=b.toString(),e={app:"PCjs",ver:"1.18.1"};e.url=a.url;e.user=c;e.type="bug";e.data=d;qa("http://www.pcjs.org/api/v1/report",!0,e)}}
function Gk(a,b,c){var d,e="none",m=new Yd(a,"1.18.1"),n=new Yd(a,"1.18.1","validate"),p=ma();n.set("timestamp",p);m.set("timestamp",p);m.set("version","1.18.1");m.set("url",window?window.location.href:null);m.set("browser",window?window.navigator.userAgent:"");a.V&&a.V.cc&&(c&&wc(a.V),d=a.V.cc(b,c),"object"===typeof d&&m.set(a.V.id,d),c&&(a.V.ga.ac=!1,!1===d&&(e=null)));for(var p=Qa(a.id),v=0;v<p.length;v++){var w=p[v];w.ga.ac&&(w.cc&&(d=w.cc(b,c),"object"===typeof d&&m.set(w.id,d)),c&&(w.ga.ac=
!1,!1===d&&(e=null)))}e&&(c?(p=d=!1,b?(a.Yc&&Hk(a,a.Yc,m.toString()),yk(n)&&yk(m)||(e=null,d=p=!0)):a.Xc&&(d=!0,p=3==a.Xc),d&&m.clear(p)):e=m.toString());c&&(a.ga.ac=!1);return e}f.reset=function(){this.ma&&this.ma.reset&&(this.lc("Resetting "+this.ma.type),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&&(this.lc("Resetting "+c.type),c.reset())}};
f.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)}};f.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)}};
f.Ib=function(a,b,c){var d=this;switch(b){case "save":return this.qa[b]=c,c.onclick=function(){var a=Bk(d,!0);if(a){var b=!(!d.Xc||d.vj),c=Gk(d,b);b?Hk(d,a,c):d.wa("Resume disabled, machine state not saved")}},!0;case "reset":return this.qa[b]=c,c.onclick=function(){xc(d)},!0}return!1};
function Bk(a,b){var c=a.Yc;c||(c=wa("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=Ik(a,c))||a.wa("Your user ID has not been approved."))):b&&a.wa("Browser local storage is not available"));return c}
function Ik(a,b){a.Yc=null;var c=qa(ra()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(xa("user",c.data),a.Yc=c.data)}catch(e){sa(e.message+" ("+d+")")}return a.Yc}
function Hk(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=wk(a,"1.18.0");d.data=c;b=qa(ra()+"/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.wa("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.wa(c),xa("user",""),a.Yc=null)}}
function Hk(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=wk(a,"1.18.1");d.data=c;b=qa(ra()+"/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.wa("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.wa(c),xa("user",""),a.Yc=null)}}
function xc(a){if(a.Xc&&!a.vj){var b=ta("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Gk(a,b,!0);!b&&a.zn?window&&window.location.reload():(b||(a.jk=!0),a.lj(Ak),a.jk=!1)}else a.reset(),a.V&&uc(a.V)}function fb(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}
Da(function(){for(var a=Wa(window.document,"pcjs-machine"),b=0;b<a.length;b++)for(var c=a[b],d=Ua(c),c=Wa(c,"pcjs","computer"),e=0;e<c.length;e++){var m=c[e],n=Ua(m),n=new zk(n,d,!0);Va(n,m);Ck(n,n.lj)}});za.show.push(function(){for(var a=Wa(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=Ua(a[b]);(c=Ta("Computer",c.id))&&c.Hm&&!c.ga.ac&&c.lj(-1)}});
za.exit.push(function(){for(var a=Wa(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=Ua(a[b]);(c=Ta("Computer",c.id))&&c.ga.ac&&Gk(c,!(!c.Xc||c.vj),!0)}});var Jk=0;function Kk(a,b,c,d,e,m){e("Loading "+a+"...");qa(a,!0,null,null,function(n,p,v){v?(p||(p="unable to load "+a+" ("+v+")"),m(p,null)):Lk(p,a,b,c,d,e,m)})}
@ -1024,6 +1024,6 @@ function Lk(a,b,c,d,e,m,n){function p(a,m){if(m)n(m,null);else{if(c){var p=b;p&&
null,a=P.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);n(a,p)}}a?e?Mk(a,m,p):p(a,null):n("no data"+(b?" for file: "+b:""),null)}
function Mk(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(m,n,p){if(p||!n)c(a,"unable to resolve XML reference: "+d[0]+" ("+p+")");else{if(m=d[3])if(p=n.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var v=p[0],w,G=/( [a-z]+=)(['"])(.*?)\2/g;w=G.exec(m);)v=0>v.indexOf(w[1])?v.replace(">",w[0]+">"):v.replace(new RegExp(w[1]+"(['\"])(.*?)\\1"),w[0]);p[0]!=v&&(n=n.replace(p[0],v))}else{c(a,"missing <"+d[1]+"> in "+e);return}n=n.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],n);Mk(a,b,c)}})}else c(a,null)}
function Nk(a,b,c,d){function e(a){if(void 0===p){var b=n&&Wa(n,"machine-warning");p=b&&b[0]||n}p&&(p.innerHTML=ka(a))}function m(a){e("Error: "+a);v&&(--Jk||Fa(!0));v=!1}var n,p,v=!0;Jk++;try{if(n=window.document.getElementById(a)){c||(c="/versions/pcjs/1.18.0/components.xsl");var w=function(d,p){if(p){var v=function(d,v){if(v)if(v)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var w=p.transformNode(v);w?(n.outerHTML=w,--Jk||Fa(!0)):m("transformNodeToObject failed")}else window.document.implementation&&
function Nk(a,b,c,d){function e(a){if(void 0===p){var b=n&&Wa(n,"machine-warning");p=b&&b[0]||n}p&&(p.innerHTML=ka(a))}function m(a){e("Error: "+a);v&&(--Jk||Fa(!0));v=!1}var n,p,v=!0;Jk++;try{if(n=window.document.getElementById(a)){c||(c="/versions/pcjs/1.18.1/components.xsl");var w=function(d,p){if(p){var v=function(d,v){if(v)if(v)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var w=p.transformNode(v);w?(n.outerHTML=w,--Jk||Fa(!0)):m("transformNodeToObject failed")}else window.document.implementation&&
window.document.implementation.createDocument?(w=new XSLTProcessor,w.importStylesheet(v),(w=w.transformToFragment(p,window.document))?n.parentNode?(n.parentNode.replaceChild(w,n),--Jk||Fa(!0)):m("invalid machine element: "+a):m("transformToFragment failed")):m("unable to transform XML: unsupported browser");else m("failed to load XSL file: "+c);else m(d)};p?Kk(c,null,null,!1,e,v):m("failed to load XML file: "+b)}else m(d)};"<"!=b.charAt(0)?Kk(b,a,d,!0,e,w):Lk(b,null,a,d,!1,e,w)}else m("missing machine element: "+
a)}catch(G){m(G.message)}return v}window.embedPC=function(a,b,c,d){Fa(!1);return Nk(a,b,c,d)};window.enableEvents=Fa;window.sendEvent=Ga;})();