Working on v1.18.3 now

This commit is contained in:
Jeff Parsons 2015-06-21 10:12:19 -07:00
commit 3c89824e53
152 changed files with 7053 additions and 198 deletions

View file

@ -1010,21 +1010,21 @@ Zd.prototype={constructor:Zd,set:function(a,b){try{this[this.id][a]=b}catch(c){}
a:JSON.stringify(a)},clear:function(a){Hk(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}},oc:function(){}};function Hk(a,b){a[a.id]={};b&&a.set("parms",b);a.uk=!1}
function Ik(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 Jk(a,b,c){Ia.call(this,"Computer",a,Jk);this.ha.dc=!1;this.Be=a.busWidth||a.buswidth;this.ad=Kk;this.wh=null;this.li=!1;this.url=b?b.url:null;this.Ar=(Math.random()+.1).toString(36).substr(2,12);this.bd=Lk(this);if(this.U=Ta("CPU",this.id)){this.Ra=Ta("Debugger",this.id);this.la=new Db({id:this.gn+".bus",buswidth:this.Be},this.U,this.Ra);var d,e=Ra(this.id);if((this.ae=Ta("Panel",this.id))&&this.ae.jk)for(b=0;b<e.length;b++)d=e[b],d.wa=this.ae.wa,d.pc=this.ae.pc,d.jk=this.ae.jk;for(b=0;b<
e.length;b++)d=e[b],d.Lc&&d.Lc(this,this.la,this.U,this.Ra);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.Ij=d:this.ad=parseInt(d,10));var m;if(a=La&&La.state||(m=!0,a.state))b=this.Mn=a,m||(this.li=!0,this.ad=Kk),this.ad&&(this.Mj=new Zd(this,"1.18.2"),this.Mj.load()?b=null:delete this.Mj);!b&&this.ad&&(m=null,this.bd&&(m=qa()+"/api/v1/user?req=load&user="+this.bd+"&state="+Gk(this,"1.18.2")),b=m)&&(this.li=!0);b?pa(b,!0,null,this,this.cq):Za(this);c||Mk(this,this.vj)}else ra("Unable to find CPU component")}
e.length;b++)d=e[b],d.Lc&&d.Lc(this,this.la,this.U,this.Ra);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.Ij=d:this.ad=parseInt(d,10));var m;if(a=La&&La.state||(m=!0,a.state))b=this.Mn=a,m||(this.li=!0,this.ad=Kk),this.ad&&(this.Mj=new Zd(this,"1.18.3"),this.Mj.load()?b=null:delete this.Mj);!b&&this.ad&&(m=null,this.bd&&(m=qa()+"/api/v1/user?req=load&user="+this.bd+"&state="+Gk(this,"1.18.3")),b=m)&&(this.li=!0);b?pa(b,!0,null,this,this.cq):Za(this);c||Mk(this,this.vj)}else ra("Unable to find CPU component")}
Qa(Jk);var Kk=0;f=Jk.prototype;f.Vf=function(){return this.Ar};f.ve=function(){return this.bd?this.bd:""};f.cq=function(a,b,c){c?(this.Ij=null,this.li=!1,this.wa("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):this.wh=b;Za(this)};function Mk(a,b,c){for(var d=Ra(a.id),e=0;e<=d.length;e++){var m=e<d.length?d[e]:a;if(!$a(m)){$a(m,function(){Mk(a,b,c)});return}}b.call(a,c)}
function Nk(a,b){var c=new Zd(a,"1.18.2","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.vj=function(a){void 0===a&&(a=this.ad||(this.wh?1:Kk));var b=!1,c=!1;this.Vm=!1;var d=this.Mj||new Zd(this,"1.18.2");if(-1==a)b=!0;else if(a>Kk){if(d.load(this.wh)){this.xf=new Zd(this,"1.18.2","failsafe");this.xf.load()&&(Ok(this,d),a=2,Hk(this.xf));this.xf.set("timestamp",la());Ik(this.xf);var e=this.ad&&!this.li;if(1==a||sa("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 Nk(a,b){var c=new Zd(a,"1.18.3","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.vj=function(a){void 0===a&&(a=this.ad||(this.wh?1:Kk));var b=!1,c=!1;this.Vm=!1;var d=this.Mj||new Zd(this,"1.18.3");if(-1==a)b=!0;else if(a>Kk){if(d.load(this.wh)){this.xf=new Zd(this,"1.18.3","failsafe");this.xf.load()&&(Ok(this,d),a=2,Hk(this.xf));this.xf.set("timestamp",la());Ik(this.xf);var e=this.ad&&!this.li;if(1==a||sa("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&&(wa("user",""),this.bd=null)):this.pc(m+": "+n),Hk(d),d.load()?(c=d.parse(),e=!0):c=!1))}e&&Nk(this,c?d:null)}else 2==a&&d.clear()}else Nk(this);delete this.wh;delete this.Mj}e=Ra(this.id);for(m=0;m<e.length;m++)n=e[m],n!==this&&n!=this.U&&(c=Pk(this,n,d,b,c));b=[d,a,c];-1!=a?Mk(this,this.Nm,b):this.Nm(b)};
function Pk(a,b,c,d,e){if(!b.ha.dc){b.ha.dc=!0;if(b.gc){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.gc(m,d)&&m&&(ra("Unable to restore state for "+b.type),a.Mn&&!a.wh?(c.clear(),a.ad=Kk,window&&window.location.reload()):a.Vm=!0,b.gc(null),e=!1)}if(!d&&b.Km)for(a=b.Km.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
f.Nm=function(a){var b=a[0],c=0>a[1];a=a[2];this.ha.dc=!0;this.Sm||(this.pc("PCjs v1.18.2\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Sm=!0);this.U&&(Pk(this,this.U,b,c,a),vc(this.U));this.Vm&&(Ok(this,b),b.clear());!c&&this.xf&&(this.xf.clear(),delete this.xf)};
function Ok(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.ve(),d=b.toString(),e={app:"PCjs",ver:"1.18.2"};e.url=a.url;e.user=c;e.type="bug";e.data=d;pa("http://www.pcjs.org/api/v1/report",!0,e)}}
function Qk(a,b,c){var d,e="none",m=new Zd(a,"1.18.2"),n=new Zd(a,"1.18.2","validate"),p=la();n.set("timestamp",p);m.set("timestamp",p);m.set("version","1.18.2");m.set("url",window?window.location.href:null);m.set("browser",window?window.navigator.userAgent:"");a.U&&a.U.fc&&(c&&xc(a.U),d=a.U.fc(b,c),"object"===typeof d&&m.set(a.U.id,d),c&&(a.U.ha.dc=!1,!1===d&&(e=null)));for(var p=Ra(a.id),v=0;v<p.length;v++){var w=p[v];w.ha.dc&&(w.fc&&(d=w.fc(b,c),"object"===typeof d&&m.set(w.id,d)),c&&(w.ha.dc=
f.Nm=function(a){var b=a[0],c=0>a[1];a=a[2];this.ha.dc=!0;this.Sm||(this.pc("PCjs v1.18.3\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Sm=!0);this.U&&(Pk(this,this.U,b,c,a),vc(this.U));this.Vm&&(Ok(this,b),b.clear());!c&&this.xf&&(this.xf.clear(),delete this.xf)};
function Ok(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.ve(),d=b.toString(),e={app:"PCjs",ver:"1.18.3"};e.url=a.url;e.user=c;e.type="bug";e.data=d;pa("http://www.pcjs.org/api/v1/report",!0,e)}}
function Qk(a,b,c){var d,e="none",m=new Zd(a,"1.18.3"),n=new Zd(a,"1.18.3","validate"),p=la();n.set("timestamp",p);m.set("timestamp",p);m.set("version","1.18.3");m.set("url",window?window.location.href:null);m.set("browser",window?window.navigator.userAgent:"");a.U&&a.U.fc&&(c&&xc(a.U),d=a.U.fc(b,c),"object"===typeof d&&m.set(a.U.id,d),c&&(a.U.ha.dc=!1,!1===d&&(e=null)));for(var p=Ra(a.id),v=0;v<p.length;v++){var w=p[v];w.ha.dc&&(w.fc&&(d=w.fc(b,c),"object"===typeof d&&m.set(w.id,d)),c&&(w.ha.dc=
!1,!1===d&&(e=null)))}e&&(c?(p=d=!1,b?(a.bd&&Rk(a,a.bd,m.toString()),Ik(n)&&Ik(m)||(e=null,d=p=!0)):a.ad&&(d=!0,p=3==a.ad),d&&m.clear(p)):e=m.toString());c&&(a.ha.dc=!1);return e}f.reset=function(){this.la&&this.la.reset&&(this.oc("Resetting "+this.la.type),this.la.reset());for(var a=Ra(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.la&&c.reset&&(this.oc("Resetting "+c.type),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.Lb=function(a,b,c){var d=this;switch(b){case "save":return this.qa[b]=c,c.onclick=function(){var a=Lk(d,!0);if(a){var b=!(!d.ad||d.Ij),c=Qk(d,b);b?Rk(d,a,c):d.wa("Resume disabled, machine state not saved")}},!0;case "reset":return this.qa[b]=c,c.onclick=function(){yc(d)},!0}return!1};
function Lk(a,b){var c=a.bd;c||(c=va("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=Sk(a,c))||a.wa("Your user ID has not been approved."))):b&&a.wa("Browser local storage is not available"));return c}
function Sk(a,b){a.bd=null;var c=pa(qa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(wa("user",c.data),a.bd=c.data)}catch(e){ra(e.message+" ("+d+")")}return a.bd}
function Rk(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gk(a,"1.18.2");d.data=c;b=pa(qa()+"/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),wa("user",""),a.bd=null)}}
function Rk(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gk(a,"1.18.3");d.data=c;b=pa(qa()+"/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),wa("user",""),a.bd=null)}}
function yc(a){if(a.ad&&!a.Ij){var b=sa("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Qk(a,b,!0);!b&&a.Mn?window&&window.location.reload():(b||(a.vk=!0),a.vj(Kk),a.vk=!1)}else a.reset(),a.U&&vc(a.U)}function gb(a,b,c){a=Ra(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}
Ea(function(){for(var a=Xa(window.document,"pcjs-machine"),b=0;b<a.length;b++)for(var c=a[b],d=Ua(c),c=Xa(c,"pcjs","computer"),e=0;e<c.length;e++){var m=c[e],n=Ua(m),n=new Jk(n,d,!0);Wa(n,m);Mk(n,n.vj)}});Aa.show.push(function(){for(var a=Xa(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=Ua(a[b]);(c=Ta("Computer",c.id))&&c.Sm&&!c.ha.dc&&c.vj(-1)}});
Aa.exit.push(function(){for(var a=Xa(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=Ua(a[b]);(c=Ta("Computer",c.id))&&c.ha.dc&&Qk(c,!(!c.ad||c.Ij),!0)}});var Tk=0;function Uk(a,b,c,d,e,m){e("Loading "+a+"...");pa(a,!0,null,null,function(n,p,v){v?(p||(p="unable to load "+a+" ("+v+")"),m(p,null)):Vk(p,a,b,c,d,e,m)})}
@ -1032,6 +1032,6 @@ function Vk(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=N.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);n(a,p)}}a?e?Wk(a,m,p):p(a,null):n("no data"+(b?" for file: "+b:""),null)}
function Wk(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(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);Wk(a,b,c)}})}else c(a,null)}
function Xk(a,b,c,d){function e(a){if(void 0===p){var b=n&&Xa(n,"machine-warning");p=b&&b[0]||n}p&&(p.innerHTML=ja(a))}function m(a){e("Error: "+a);v&&(--Tk||Ga(!0));v=!1}var n,p,v=!0;Tk++;try{if(n=window.document.getElementById(a)){c||(c="/versions/pcjs/1.18.2/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,--Tk||Ga(!0)):m("transformNodeToObject failed")}else window.document.implementation&&
function Xk(a,b,c,d){function e(a){if(void 0===p){var b=n&&Xa(n,"machine-warning");p=b&&b[0]||n}p&&(p.innerHTML=ja(a))}function m(a){e("Error: "+a);v&&(--Tk||Ga(!0));v=!1}var n,p,v=!0;Tk++;try{if(n=window.document.getElementById(a)){c||(c="/versions/pcjs/1.18.3/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,--Tk||Ga(!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),--Tk||Ga(!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?Uk(c,null,null,!1,e,v):m("failed to load XML file: "+b)}else m(d)};"<"!=b.charAt(0)?Uk(b,a,d,!0,e,w):Vk(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){Ga(!1);return Xk(a,b,c,d)};window.enableEvents=Ga;window.sendEvent=Ha;})();