Since writeBitsMemory() must preserve unwritten bits, it can't use bit-wise operators (unless of course no bits above bit 31 are set, but it's not clear checking for that would be a win)

This commit is contained in:
Jeff 2017-02-22 15:33:18 -08:00 • committed by Jeff Parsons
commit 2ed076503f
2 changed files with 2 additions and 2 deletions

View file

@ -79,7 +79,7 @@ l.ta=function(a,b,c,d){this.B=b;this.C=a;this.b=c;this.A=d;F(this)};l.la=functio
function V(a,b,c,d,e){this.id=Gc+=2;this.u=b;this.Ga=c;this.size=d||0;this.type=e||Hc;this.F=e==Ic;this.b=null;this.g=this.mb;this.pa=this.Oa=this.Wa;this.j=this.Sa;this.Ca=this.Ha=this.Ta;this.B=this.C=0;ic(this);this.Ma=this.tb=!1;if(this.size){a=this.A=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Jc(this,Kc)}else Jc(this)}l=V.prototype;l.save=function(){return this.A};l.restore=function(a){return a&&this.size==a.length?(this.A=a,this.Ma=!0):!1};
function Jc(a,b){b||(b=Lc);Mc(a,b,void 0);Nc(a,b,void 0)}function Mc(a,b,c){c&&a.B||(a.pa=b[2]||a.Wa);if(c||void 0===c)a.g=b[0]||a.mb,a.Oa=b[2]||a.Wa}function Nc(a,b,c){c&&a.C||(a.Ca=!a.F&&b[3]||a.Ta);if(c||void 0===c)a.j=b[1]||a.Sa,a.Ha=b[3]||a.Ta}l.ua=function(a,b){b?this.C++||Nc(this,Oc,!1):this.B++||Mc(this,Oc,!1)};function Pc(a,b){b?--a.C||(a.Ca=a.F?a.Ta:a.Ha):--a.B||(a.pa=a.Oa)}function ic(a,b,c){a.b=b;a.B=a.C=0;c&&((a.B=c.B)&&Mc(a,Oc,!1),(a.C=c.C)&&Nc(a,Oc,!1))}
l.mb=function(a,b){this.b&&Na(this.b,32)&&G(this.b,"attempt to read invalid address "+W(this.b,b),!0);return 0};l.Sa=function(a,b,c){this.b&&Na(this.b,32)&&G(this.b,"attempt to write "+W(this.b,a)+" to invalid addresses "+W(this.b,c),!0)};l.Wa=function(a,b){return this.pa(a,b)};l.Ta=function(a,b,c){this.Ca(a,b,c)};l.Hb=function(a,b,c){c=this.A[c];return c=32>=a+b?c>>a&(1<<b)-1:Math.trunc(c/Math.pow(2,a))%Math.pow(2,b)};l.Kb=function(a){return this.A[a]};
l.Tb=function(a,b,c,d){var e=this.A[d];if(32>=a+b)var f=(1<<b)-1<<a,e=e&~f|c<<a&f;else f=Math.pow(2,a),c%=Math.pow(2,b),a=e%Math.pow(2,a+b),e=e-a+c*f+a%f;this.A[d]!=e&&(this.A[d]=e,this.Ma=!0)};l.Vb=function(a,b){this.A[b]=a;this.Ma=!0};l.Gb=function(a,b,c,d){if(this.b&&null!=this.u){var e=this.b;Qc(e,this.u+c,1,e.K)&&e.T(!1)}return this.g(a,b,c,d)};l.Ib=function(a,b){if(this.b&&null!=this.u){var c=this.b;Qc(c,this.u+a,2,c.K)&&c.T(!1)}return this.Oa(a,b)};
l.Tb=function(a,b,c,d){var e=this.A[d],f=Math.pow(2,a);c%=Math.pow(2,b);a=e%Math.pow(2,a+b);e=e-a+c*f+a%f;this.A[d]!=e&&(this.A[d]=e,this.Ma=!0)};l.Vb=function(a,b){this.A[b]=a;this.Ma=!0};l.Gb=function(a,b,c,d){if(this.b&&null!=this.u){var e=this.b;Qc(e,this.u+c,1,e.K)&&e.T(!1)}return this.g(a,b,c,d)};l.Ib=function(a,b){if(this.b&&null!=this.u){var c=this.b;Qc(c,this.u+a,2,c.K)&&c.T(!1)}return this.Oa(a,b)};
l.Sb=function(a,b,c,d,e){if(this.b&&null!=this.u){var f=this.b;Qc(f,this.u+d,1,f.G)&&f.T(!1)}this.F?this.Sa(c,0,e):this.j(a,b,c,d,e)};l.Ub=function(a,b,c){if(this.b&&null!=this.u){var d=this.b;Qc(d,this.u+b,2,d.G)&&d.T(!1)}this.F?this.Sa(a,0,c):this.Ha(a,b,c)};var Hc=0,Ic=2,nc=["NONE","RAM","ROM"],Gc=0,Lc=[],Kc=[V.prototype.Hb,V.prototype.Tb,V.prototype.Kb,V.prototype.Vb],Oc=[V.prototype.Gb,V.prototype.Sb,V.prototype.Ib,V.prototype.Ub];
function Rc(a,b){u.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.wa=0;this.za=b;this.N=c;this.xa=Math.round(this.za/1E4)/100;this.M=this.xa*this.N;this.ya=this.oa=this.O=this.ra=0;this.i.J=this.i.Ra=!1;this.i.X=a.autoStart;"string"==typeof this.i.X&&(this.i.X="true"==this.i.X);this.i.Ba=!1;this.ma=this.U=0;this.na=+a.csStart;this.P=+a.csInterval;this.Z=+a.csStop;this.D=[];this.bb=this.Nb.bind(this);this.K=this.w=this.H=this.I=this.v=this.ga=this.G=this.aa=this.Aa=this.L=0;this.qa=
null;F(this)}q(Rc,u);l=Rc.prototype;l.ta=function(a,b,c,d){this.C=a;this.B=b;this.A=d;this.qa=a.v;for(a=0;a<Sc.length;a++)(b=this.F[Sc[a]])&&this.C.da(null,Sc[a],b);F(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};