v1.18.0: I386 now enabled by default
This commit is contained in:
parent
33f75e5610
commit
61173e182a
145 changed files with 6964 additions and 138 deletions
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<xsl:variable name="MACHINECLASS">pc</xsl:variable>
|
||||
<xsl:variable name="APPCLASS">pcjs</xsl:variable>
|
||||
<xsl:variable name="APPVERSION">1.17.6</xsl:variable>
|
||||
<xsl:variable name="APPVERSION">1.18.0</xsl:variable>
|
||||
<xsl:variable name="SITEHOST">www.pcjs.org</xsl:variable>
|
||||
|
||||
<xsl:template name="componentStyles">
|
||||
|
|
|
|||
|
|
@ -1104,7 +1104,7 @@ b;break;case "EBX":a.O.D=b;break;case "ECX":a.O.G=b;break;case "EDX":a.O.H=b;bre
|
|||
function Dm(a,b,c){var d="tr"==b;b=null!=c?+c:1;var e=1==b?0:1;Ma(b,function(){return ob(a,!0)&&a.fh(e,d,!1)},function(){Xc(a.O);ob(a,!1)})}function sm(a,b,c){b.al=b.Vc||b.Tc;c&&(b.Vc=4==a.O.sa.pa,b.Tc=4==a.O.sa.Cd);b.re=c}
|
||||
function jm(a,b,c,d){b=ym(a,b,1);if(null!=b.ya){void 0===d&&(d=1);var e=Fl(a,a.$n,b.la,a.na.Qh),e=256;if(void 0!==c){e=ym(a,c,1);if(null==e.ya||e.ya<b.ya)return;e=e.ya-b.ya;if(256<e){a.S("range too large");return}d=-1}var g=b.ya!=a.hd.ya;c=0;for(sm(a,b,!0);0<e&&d--;){a.Ua(b);var n=b.Da,p=pb(a,!1)||a.Dc?a.Ld:null,w=null!=p?"cycles":null,v=rm(a,b);if(v[0]){var E=v[0]+":",g=!1;v[2]&&(E+=" "+v[2]);a.S(E)}g&&a.S();v[3]&&(w=v[3],p=null);g=pm(a,b,w,p);b.re||d||d++;a.S(g);a.hd=b;e-=b.Da-n;g=!1;c++}}}
|
||||
function am(a,b,c){if(c)if(b){0>a.nd&&a.$c.length&&(a.nd=0);if(0>a.nd||b!=a.$c[a.nd])a.$c.splice(0,0,b),a.nd=0;a.nd--}else b=a.$c[a.nd+1];a=b?b.split(0<=b.indexOf("|")?"|":";"):[""];for(var d in a)a[d]=pa(a[d]);return a}
|
||||
function Jl(a,b){var c=!0;try{if(b.length||(a.vg?(a.S("ended assemble @"+fm(a.Lf)),a.hd=a.Lf,a.vg=!1):b="?"),b=b.toLowerCase(),rb(a)&&0<b.length){if(a.vg)b="a "+fm(a.Lf)+" "+b;else{var d,e,g;switch(b){case "reset":return a.Ea&&a.Ea.reset(),!0;case "ver":return a.S("PCjs version 1.17.6 ("+a.O.qa+",RELEASE,NOPREFETCH"+(vb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)"),!0;default:for(e=b.charAt(0),g=1;g<b.length;g++){d=b.charAt(g);if(" "==d)break;if("r"==e||"a">d||"z"<d){b=b.substring(0,g)+" "+b.substring(g);
|
||||
function Jl(a,b){var c=!0;try{if(b.length||(a.vg?(a.S("ended assemble @"+fm(a.Lf)),a.hd=a.Lf,a.vg=!1):b="?"),b=b.toLowerCase(),rb(a)&&0<b.length){if(a.vg)b="a "+fm(a.Lf)+" "+b;else{var d,e,g;switch(b){case "reset":return a.Ea&&a.Ea.reset(),!0;case "ver":return a.S("PCjs version 1.18.0 ("+a.O.qa+",RELEASE,NOPREFETCH"+(vb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)"),!0;default:for(e=b.charAt(0),g=1;g<b.length;g++){d=b.charAt(g);if(" "==d)break;if("r"==e||"a">d||"z"<d){b=b.substring(0,g)+" "+b.substring(g);
|
||||
break}}}}var n=b.split(" ");switch(n[0].charAt(0)){case "a":var p=ym(a,n[1],1);if(null!=p.ya)if(a.Lf=p,void 0===n[2])a.S("begin assemble @"+fm(p)),a.vg=!0,Xc(a.O);else{var w;a.S("not supported yet");w=[];if(w.length){for(var v=0;v<w.length;v++)a.ud(p,w[v],1);a.S(pm(a,a.Lf))}}break;case "b":a:{var E=n[1],P=n[0].charAt(1);if(P&&"?"!=P)if("l"==P)v=0,v+=om(a,a.Hc),v+=om(a,a.Ne),(v+=om(a,a.xd))||a.S("no breakpoints");else if(void 0===E)a.S("missing breakpoint address");else{v={};if("*"!=E&&(v=ym(a,E,1),
|
||||
null==v.ya))break a;E=null==v.ya?E:ia(v.ya);"c"==P?null==v.ya?(Gl(a),a.S("all breakpoints cleared")):mm(a,a.Hc,v,!0)||mm(a,a.Ne,v,!0)||mm(a,a.xd,v,!0)||a.S("breakpoint missing: "+fm(v)):"i"==P?a.S("breakpoint "+(nc(a.na,v.ya)?"enabled":"cleared")+": port "+E+" (input)"):"o"==P?a.S("breakpoint "+(rc(a.na,v.ya)?"enabled":"cleared")+": port "+E+" (output)"):null!=v.ya&&("p"==P?a.Te(a.Hc,v):"r"==P?a.Te(a.Ne,v):"w"==P?a.Te(a.xd,v):a.S("unknown breakpoint command: "+P))}else a.S("\nbreakpoint commands:"),
|
||||
a.S("\tbi [p]\ttoggle break on input port [p]"),a.S("\tbo [p]\ttoggle break on output port [p]"),a.S("\tbp [a]\tset exec breakpoint at addr [a]"),a.S("\tbr [a]\tset read breakpoint at addr [a]"),a.S("\tbw [a]\tset write breakpoint at addr [a]"),a.S("\tbc [a]\tclear breakpoint at addr [a]"),a.S("\tbl\tlist all breakpoints")}break;case "c":a.Eh&&(a.Eh.value="");break;case "d":a:{var N=n[0],v=n[1],G=n[2],O;if("?"==v){v="";for(O in Ql)a.wk[O]&&(v&&(v+=","),v+=O);v+=",state,symbols";a.S("\ndump commands:");
|
||||
|
|
@ -1123,21 +1123,21 @@ He.prototype={constructor:He,set:function(a,b){try{this[this.id][a]=b}catch(c){}
|
|||
a:JSON.stringify(a)},clear:function(a){Gm(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(g){}b.splice(c,1);c=0}},ta:function(a){return this.X?this.X.ta(null==a?16777216:a|16777216):!1},$a:function(a){this.X&&this.X.message(a)}};function Gm(a,b){a[a.id]={};b&&a.set("parms",b);a.$k=!1}
|
||||
function Hm(a){var b=!0;if(Ea()){var c=JSON.stringify(a[a.id]);Ia(a.key,c)||(Ba("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}
|
||||
function Im(a,b,c){Xa.call(this,"Computer",a,Im,67108864);this.ea.gc=!1;this.Ae=a.busWidth||a.buswidth;this.rd=Jm;this.ii=null;this.Vi=!1;this.url=b?b.url:null;this.rs=(Math.random()+.1).toString(36).substr(2,12);this.sd=Km(this);if(this.O=ib("CPU",this.id)){this.X=ib("Debugger",this.id);this.na=new Zb({id:this.Vn+".bus",buswidth:this.Ae},this.O,this.X);var d,e=gb(this.id);if((this.Ee=ib("Panel",this.id))&&this.Ee.Eh)for(b=0;b<e.length;b++)d=e[b],d.Fa=this.Ee.Fa,d.S=this.Ee.S,d.Eh=this.Ee.Eh;for(b=
|
||||
0;b<e.length;b++)d=e[b],d.Fc&&d.Fc(this,this.na,this.O,this.X);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.gk=d:this.rd=parseInt(d,10));var g;if(a=ab&&ab.state||(g=!0,a.state))b=this.Go=a,g||(this.Vi=!0,this.rd=Jm),this.rd&&(this.kk=new He(this,"1.17.6"),this.kk.load()?b=null:delete this.kk);!b&&this.rd&&(g=null,this.sd&&(g=Aa()+"/api/v1/user?req=load&user="+this.sd+"&state="+Fm(this,"1.17.6")),b=g)&&(this.Vi=!0);b?za(b,!0,null,this,this.Vq):qb(this);c||Lm(this,this.$j)}else Ba("Unable to find CPU component")}
|
||||
0;b<e.length;b++)d=e[b],d.Fc&&d.Fc(this,this.na,this.O,this.X);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.gk=d:this.rd=parseInt(d,10));var g;if(a=ab&&ab.state||(g=!0,a.state))b=this.Go=a,g||(this.Vi=!0,this.rd=Jm),this.rd&&(this.kk=new He(this,"1.18.0"),this.kk.load()?b=null:delete this.kk);!b&&this.rd&&(g=null,this.sd&&(g=Aa()+"/api/v1/user?req=load&user="+this.sd+"&state="+Fm(this,"1.18.0")),b=g)&&(this.Vi=!0);b?za(b,!0,null,this,this.Vq):qb(this);c||Lm(this,this.$j)}else Ba("Unable to find CPU component")}
|
||||
fb(Im);var Jm=0;f=Im.prototype;f.Cg=function(){return this.rs};f.ff=function(){return this.sd?this.sd:""};f.Vq=function(a,b,c){c?(this.gk=null,this.Vi=!1,this.Fa("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):this.ii=b;qb(this)};function Lm(a,b,c){for(var d=gb(a.id),e=0;e<=d.length;e++){var g=e<d.length?d[e]:a;if(!rb(g)){rb(g,function(){Lm(a,b,c)});return}}b.call(a,c)}
|
||||
function Mm(a,b){var c=new He(a,"1.17.6","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Fa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
f.$j=function(a){void 0===a&&(a=this.rd||(this.ii?1:Jm));var b=!1,c=!1;this.Kn=!1;var d=this.kk||new He(this,"1.17.6");if(-1==a)b=!0;else if(a>Jm){if(d.load(this.ii)){this.$f=new He(this,"1.17.6","failsafe");this.$f.load()&&(Nm(this,d),a=2,Gm(this.$f));this.$f.set("timestamp",ua());Hm(this.$f);var e=this.rd&&!this.Vi;if(1==a||Ca("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var g=d.get("code"),n=d.get("data");g&&("ok"==g?d.load(n):("error"==
|
||||
function Mm(a,b){var c=new He(a,"1.18.0","validate");if(c.load()&&c.parse()){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Fa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
f.$j=function(a){void 0===a&&(a=this.rd||(this.ii?1:Jm));var b=!1,c=!1;this.Kn=!1;var d=this.kk||new He(this,"1.18.0");if(-1==a)b=!0;else if(a>Jm){if(d.load(this.ii)){this.$f=new He(this,"1.18.0","failsafe");this.$f.load()&&(Nm(this,d),a=2,Gm(this.$f));this.$f.set("timestamp",ua());Hm(this.$f);var e=this.rd&&!this.Vi;if(1==a||Ca("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=d.parse()){var g=d.get("code"),n=d.get("data");g&&("ok"==g?d.load(n):("error"==
|
||||
g&&"no machine state"!=n?(this.Fa("Error: "+n),"unable to verify user"==n&&(Ia("user",""),this.sd=null)):this.S(g+": "+n),Gm(d),d.load()?(c=d.parse(),e=!0):c=!1))}e&&Mm(this,c?d:null)}else 2==a&&d.clear()}else Mm(this);delete this.ii;delete this.kk}e=gb(this.id);for(g=0;g<e.length;g++)n=e[g],n!==this&&n!=this.O&&(c=Om(this,n,d,b,c));b=[d,a,c];-1!=a?Lm(this,this.Bn,b):this.Bn(b)};
|
||||
function Om(a,b,c,d,e){if(!b.ea.gc){b.ea.gc=!0;if(b.jc){var g=null;e&&((g=c.get(b.id))||(g=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof g&&(g=null);!b.jc(g,d)&&g&&(Ba("Unable to restore state for "+b.type),a.Go&&!a.ii?(c.clear(),a.rd=Jm,window&&window.location.reload()):a.Kn=!0,b.jc(null),e=!1)}if(!d&&b.wn)for(a=b.wn.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
f.Bn=function(a){var b=a[0],c=0>a[1];a=a[2];this.ea.gc=!0;this.Hn||(this.S("PCjs v1.17.6\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Hn=!0);this.O&&(Om(this,this.O,b,c,a),Yc(this.O));this.Kn&&(Nm(this,b),b.clear());!c&&this.$f&&(this.$f.clear(),delete this.$f)};
|
||||
function Nm(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.ff(),d=b.toString(),e={app:"PCjs",ver:"1.17.6"};e.url=a.url;e.user=c;e.type="bug";e.data=d;za("http://www.pcjs.org/api/v1/report",!0,e)}}
|
||||
function Em(a,b,c){var d,e="none",g=new He(a,"1.17.6"),n=new He(a,"1.17.6","validate"),p=ua();n.set("timestamp",p);g.set("timestamp",p);g.set("version","1.17.6");g.set("url",window?window.location.href:null);g.set("browser",window?window.navigator.userAgent:"");a.O&&a.O.ic&&(c&&a.O.wb(),d=a.O.ic(b,c),"object"===typeof d&&g.set(a.O.id,d),c&&(a.O.ea.gc=!1,!1===d&&(e=null)));for(var p=gb(a.id),w=0;w<p.length;w++){var v=p[w];v.ea.gc&&(v.ic&&(d=v.ic(b,c),"object"===typeof d&&g.set(v.id,d)),c&&(v.ea.gc=
|
||||
f.Bn=function(a){var b=a[0],c=0>a[1];a=a[2];this.ea.gc=!0;this.Hn||(this.S("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.Hn=!0);this.O&&(Om(this,this.O,b,c,a),Yc(this.O));this.Kn&&(Nm(this,b),b.clear());!c&&this.$f&&(this.$f.clear(),delete this.$f)};
|
||||
function Nm(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.ff(),d=b.toString(),e={app:"PCjs",ver:"1.18.0"};e.url=a.url;e.user=c;e.type="bug";e.data=d;za("http://www.pcjs.org/api/v1/report",!0,e)}}
|
||||
function Em(a,b,c){var d,e="none",g=new He(a,"1.18.0"),n=new He(a,"1.18.0","validate"),p=ua();n.set("timestamp",p);g.set("timestamp",p);g.set("version","1.18.0");g.set("url",window?window.location.href:null);g.set("browser",window?window.navigator.userAgent:"");a.O&&a.O.ic&&(c&&a.O.wb(),d=a.O.ic(b,c),"object"===typeof d&&g.set(a.O.id,d),c&&(a.O.ea.gc=!1,!1===d&&(e=null)));for(var p=gb(a.id),w=0;w<p.length;w++){var v=p[w];v.ea.gc&&(v.ic&&(d=v.ic(b,c),"object"===typeof d&&g.set(v.id,d)),c&&(v.ea.gc=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(p=d=!1,b?(a.sd&&Pm(a,a.sd,g.toString()),Hm(n)&&Hm(g)||(e=null,d=p=!0)):a.rd&&(d=!0,p=3==a.rd),d&&g.clear(p)):e=g.toString());c&&(a.ea.gc=!1);return e}f.reset=function(){this.na&&this.na.reset&&(this.$a("Resetting "+this.na.type),this.na.reset());for(var a=gb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.na&&c.reset&&(this.$a("Resetting "+c.type),c.reset())}};
|
||||
f.start=function(a,b){for(var c=gb(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=gb(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.ua[b]=c,c.onclick=function(){var a=Km(d,!0);if(a){var b=!(!d.rd||d.gk),c=Em(d,b);b?Pm(d,a,c):d.Fa("Resume disabled, machine state not saved")}},!0;case "reset":return this.ua[b]=c,c.onclick=function(){dd(d)},!0}return!1};
|
||||
function Km(a,b){var c=a.sd;c||(c=Ha("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=Qm(a,c))||a.Fa("Your user ID has not been approved."))):b&&a.Fa("Browser local storage is not available"));return c}
|
||||
function Qm(a,b){a.sd=null;var c=za(Aa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Ia("user",c.data),a.sd=c.data)}catch(e){Ba(e.message+" ("+d+")")}return a.sd}
|
||||
function Pm(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Fm(a,"1.17.6");d.data=c;b=za(Aa()+"/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.Fa("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.Fa(c),Ia("user",""),a.sd=null)}}
|
||||
function Pm(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Fm(a,"1.18.0");d.data=c;b=za(Aa()+"/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.Fa("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.Fa(c),Ia("user",""),a.sd=null)}}
|
||||
function dd(a){if(a.rd&&!a.gk){var b=Ca("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Em(a,b,!0);!b&&a.Go?window&&window.location.reload():(b||(a.bl=!0),a.$j(Jm),a.bl=!1)}else a.reset(),a.O&&Yc(a.O)}function Ab(a,b,c){a=gb(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}
|
||||
Sa(function(){for(var a=mb(window.document,"pcjs-machine"),b=0;b<a.length;b++)for(var c=a[b],d=jb(c),c=mb(c,"pcjs","computer"),e=0;e<c.length;e++){var g=c[e],n=jb(g),n=new Im(n,d,!0);lb(n,g);Lm(n,n.$j)}});Oa.show.push(function(){for(var a=mb(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=jb(a[b]);(c=ib("Computer",c.id))&&c.Hn&&!c.ea.gc&&c.$j(-1)}});
|
||||
Oa.exit.push(function(){for(var a=mb(window.document,"pcjs","computer"),b=0;b<a.length;b++){var c=jb(a[b]);(c=ib("Computer",c.id))&&c.ea.gc&&Em(c,!(!c.rd||c.gk),!0)}});var Rm=0;function Sm(a,b,c,d,e,g){e("Loading "+a+"...");za(a,!0,null,null,function(n,p,w){w?(p||(p="unable to load "+a+" ("+w+")"),g(p,null)):Tm(p,a,b,c,d,e,g)})}
|
||||
|
|
@ -1145,6 +1145,6 @@ function Tm(a,b,c,d,e,g,n){function p(a,g){if(g)n(g,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?Wm(a,g,p):p(a,null):n("no data"+(b?" for file: "+b:""),null)}
|
||||
function Wm(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(g,n,p){if(p||!n)c(a,"unable to resolve XML reference: "+d[0]+" ("+p+")");else{if(g=d[3])if(p=n.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var w=p[0],v,E=/( [a-z]+=)(['"])(.*?)\2/g;v=E.exec(g);)w=0>w.indexOf(v[1])?w.replace(">",v[0]+">"):w.replace(new RegExp(v[1]+"(['\"])(.*?)\\1"),v[0]);p[0]!=w&&(n=n.replace(p[0],w))}else{c(a,"missing <"+d[1]+"> in "+e);return}n=n.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],n);Wm(a,b,c)}})}else c(a,null)}
|
||||
function Xm(a,b,c,d){function e(a){if(void 0===p){var b=n&&mb(n,"machine-warning");p=b&&b[0]||n}p&&(p.innerHTML=ma(a))}function g(a){e("Error: "+a);w&&(--Rm||Ua(!0));w=!1}var n,p,w=!0;Rm++;try{if(n=window.document.getElementById(a)){c||(c="/versions/pcjs/1.17.6/components.xsl");var v=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,--Rm||Ua(!0)):g("transformNodeToObject failed")}else window.document.implementation&&
|
||||
function Xm(a,b,c,d){function e(a){if(void 0===p){var b=n&&mb(n,"machine-warning");p=b&&b[0]||n}p&&(p.innerHTML=ma(a))}function g(a){e("Error: "+a);w&&(--Rm||Ua(!0));w=!1}var n,p,w=!0;Rm++;try{if(n=window.document.getElementById(a)){c||(c="/versions/pcjs/1.18.0/components.xsl");var v=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,--Rm||Ua(!0)):g("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),--Rm||Ua(!0)):g("invalid machine element: "+a):g("transformToFragment failed")):g("unable to transform XML: unsupported browser");else g("failed to load XSL file: "+c);else g(d)};p?Sm(c,null,null,!1,e,v):g("failed to load XML file: "+b)}else g(d)};"<"!=b.charAt(0)?Sm(b,a,d,!0,e,v):Tm(b,null,a,d,!1,e,v)}else g("missing machine element: "+
|
||||
a)}catch(E){g(E.message)}return w}window.embedPC=function(a,b,c,d){Ua(!1);return Xm(a,b,c,d)};window.enableEvents=Ua;window.sendEvent=Wa;})();
|
||||
|
|
|
|||
|
|
@ -1000,21 +1000,21 @@ Vd.prototype={constructor:Vd,set:function(a,b){try{this[this.id][a]=b}catch(c){}
|
|||
a:JSON.stringify(a)},clear:function(a){sk(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 sk(a,b){a[a.id]={};b&&a.set("parms",b);a.hk=!1}
|
||||
function tk(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 uk(a,b,c){Ha.call(this,"Computer",a,uk);this.ga.ac=!1;this.we=a.busWidth||a.buswidth;this.Yc=vk;this.mh=null;this.$h=!1;this.url=b?b.url:null;this.ir=(Math.random()+.1).toString(36).substr(2,12);this.Zc=wk(this);if(this.U=Ta("CPU",this.id)){this.Ta=Ta("Debugger",this.id);this.ma=new Cb({id:this.Ym+".bus",buswidth:this.we},this.U,this.Ta);var d,e=Qa(this.id);if((this.Ud=Ta("Panel",this.id))&&this.Ud.Vj)for(b=0;b<e.length;b++)d=e[b],d.wa=this.Ud.wa,d.mc=this.Ud.mc,d.Vj=this.Ud.Vj;for(b=0;b<
|
||||
e.length;b++)d=e[b],d.Dc&&d.Dc(this,this.ma,this.U,this.Ta);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.qj=d:this.Yc=parseInt(d,10));var m;if(a=Ka&&Ka.state||(m=!0,a.state))b=this.Dn=a,m||(this.$h=!0,this.Yc=vk),this.Yc&&(this.uj=new Vd(this,"1.17.6"),this.uj.load()?b=null:delete this.uj);!b&&this.Yc&&(m=null,this.Zc&&(m=ra()+"/api/v1/user?req=load&user="+this.Zc+"&state="+rk(this,"1.17.6")),b=m)&&(this.$h=!0);b?qa(b,!0,null,this,this.Qp):Ya(this);c||xk(this,this.gj)}else sa("Unable to find CPU component")}
|
||||
e.length;b++)d=e[b],d.Dc&&d.Dc(this,this.ma,this.U,this.Ta);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.qj=d:this.Yc=parseInt(d,10));var m;if(a=Ka&&Ka.state||(m=!0,a.state))b=this.Dn=a,m||(this.$h=!0,this.Yc=vk),this.Yc&&(this.uj=new Vd(this,"1.18.0"),this.uj.load()?b=null:delete this.uj);!b&&this.Yc&&(m=null,this.Zc&&(m=ra()+"/api/v1/user?req=load&user="+this.Zc+"&state="+rk(this,"1.18.0")),b=m)&&(this.$h=!0);b?qa(b,!0,null,this,this.Qp):Ya(this);c||xk(this,this.gj)}else sa("Unable to find CPU component")}
|
||||
Pa(uk);var vk=0;f=uk.prototype;f.Rf=function(){return this.ir};f.re=function(){return this.Zc?this.Zc:""};f.Qp=function(a,b,c){c?(this.qj=null,this.$h=!1,this.wa("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):this.mh=b;Ya(this)};function xk(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(){xk(a,b,c)});return}}b.call(a,c)}
|
||||
function yk(a,b){var c=new Vd(a,"1.17.6","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.gj=function(a){void 0===a&&(a=this.Yc||(this.mh?1:vk));var b=!1,c=!1;this.Mm=!1;var d=this.uj||new Vd(this,"1.17.6");if(-1==a)b=!0;else if(a>vk){if(d.load(this.mh)){this.sf=new Vd(this,"1.17.6","failsafe");this.sf.load()&&(zk(this,d),a=2,sk(this.sf));this.sf.set("timestamp",ma());tk(this.sf);var e=this.Yc&&!this.$h;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 yk(a,b){var c=new Vd(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.gj=function(a){void 0===a&&(a=this.Yc||(this.mh?1:vk));var b=!1,c=!1;this.Mm=!1;var d=this.uj||new Vd(this,"1.18.0");if(-1==a)b=!0;else if(a>vk){if(d.load(this.mh)){this.sf=new Vd(this,"1.18.0","failsafe");this.sf.load()&&(zk(this,d),a=2,sk(this.sf));this.sf.set("timestamp",ma());tk(this.sf);var e=this.Yc&&!this.$h;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.Zc=null)):this.mc(m+": "+n),sk(d),d.load()?(c=d.parse(),e=!0):c=!1))}e&&yk(this,c?d:null)}else 2==a&&d.clear()}else yk(this);delete this.mh;delete this.uj}e=Qa(this.id);for(m=0;m<e.length;m++)n=e[m],n!==this&&n!=this.U&&(c=Ak(this,n,d,b,c));b=[d,a,c];-1!=a?xk(this,this.Em,b):this.Em(b)};
|
||||
function Ak(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.Dn&&!a.mh?(c.clear(),a.Yc=vk,window&&window.location.reload()):a.Mm=!0,b.dc(null),e=!1)}if(!d&&b.Bm)for(a=b.Bm.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
f.Em=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga.ac=!0;this.Jm||(this.mc("PCjs v1.17.6\nCopyright \u00a9 2012-2015 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Jm=!0);this.U&&(Ak(this,this.U,b,c,a),rc(this.U));this.Mm&&(zk(this,b),b.clear());!c&&this.sf&&(this.sf.clear(),delete this.sf)};
|
||||
function zk(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.17.6"};e.url=a.url;e.user=c;e.type="bug";e.data=d;qa("http://www.pcjs.org/api/v1/report",!0,e)}}
|
||||
function Bk(a,b,c){var d,e="none",m=new Vd(a,"1.17.6"),n=new Vd(a,"1.17.6","validate"),p=ma();n.set("timestamp",p);m.set("timestamp",p);m.set("version","1.17.6");m.set("url",window?window.location.href:null);m.set("browser",window?window.navigator.userAgent:"");a.U&&a.U.cc&&(c&&tc(a.U),d=a.U.cc(b,c),"object"===typeof d&&m.set(a.U.id,d),c&&(a.U.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.Em=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga.ac=!0;this.Jm||(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.Jm=!0);this.U&&(Ak(this,this.U,b,c,a),rc(this.U));this.Mm&&(zk(this,b),b.clear());!c&&this.sf&&(this.sf.clear(),delete this.sf)};
|
||||
function zk(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 Bk(a,b,c){var d,e="none",m=new Vd(a,"1.18.0"),n=new Vd(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.U&&a.U.cc&&(c&&tc(a.U),d=a.U.cc(b,c),"object"===typeof d&&m.set(a.U.id,d),c&&(a.U.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.Zc&&Ck(a,a.Zc,m.toString()),tk(n)&&tk(m)||(e=null,d=p=!0)):a.Yc&&(d=!0,p=3==a.Yc),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=wk(d,!0);if(a){var b=!(!d.Yc||d.qj),c=Bk(d,b);b?Ck(d,a,c):d.wa("Resume disabled, machine state not saved")}},!0;case "reset":return this.qa[b]=c,c.onclick=function(){uc(d)},!0}return!1};
|
||||
function wk(a,b){var c=a.Zc;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=Dk(a,c))||a.wa("Your user ID has not been approved."))):b&&a.wa("Browser local storage is not available"));return c}
|
||||
function Dk(a,b){a.Zc=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.Zc=c.data)}catch(e){sa(e.message+" ("+d+")")}return a.Zc}
|
||||
function Ck(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=rk(a,"1.17.6");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.Zc=null)}}
|
||||
function Ck(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=rk(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.Zc=null)}}
|
||||
function uc(a){if(a.Yc&&!a.qj){var b=ta("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Bk(a,b,!0);!b&&a.Dn?window&&window.location.reload():(b||(a.ik=!0),a.gj(vk),a.ik=!1)}else a.reset(),a.U&&rc(a.U)}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 uk(n,d,!0);Va(n,m);xk(n,n.gj)}});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.Jm&&!c.ga.ac&&c.gj(-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&&Bk(c,!(!c.Yc||c.qj),!0)}});var Ek=0;function Fk(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)):Gk(p,a,b,c,d,e,m)})}
|
||||
|
|
@ -1022,6 +1022,6 @@ function Gk(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?Hk(a,m,p):p(a,null):n("no data"+(b?" for file: "+b:""),null)}
|
||||
function Hk(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);Hk(a,b,c)}})}else c(a,null)}
|
||||
function Ik(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&&(--Ek||Fa(!0));v=!1}var n,p,v=!0;Ek++;try{if(n=window.document.getElementById(a)){c||(c="/versions/pcjs/1.17.6/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,--Ek||Fa(!0)):m("transformNodeToObject failed")}else window.document.implementation&&
|
||||
function Ik(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&&(--Ek||Fa(!0));v=!1}var n,p,v=!0;Ek++;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,--Ek||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),--Ek||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?Fk(c,null,null,!1,e,v):m("failed to load XML file: "+b)}else m(d)};"<"!=b.charAt(0)?Fk(b,a,d,!0,e,w):Gk(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 Ik(a,b,c,d)};window.enableEvents=Fa;window.sendEvent=Ga;})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue