Fixed an old annoying bug where a restored video card wouldn't properly display a blinking cursor; originally, I assumed it was a CRTC register restoration bug, but actually, some supporting variables (eg, cBlinks) were not getting initialized in both the reset() and restore() code paths. This is also a good time to remember that when an uninitialized array from some hardware state gets serialized and deserialized to/from JSON, the array is restored as a series of "null" values, not as "undefined" values, so it's best for any code checking for undefined values to use "== null" rather than "=== undefined".
This commit is contained in:
parent
4a2ab39ad6
commit
ed75397b83
10 changed files with 58 additions and 36 deletions
|
|
@ -110,7 +110,7 @@ function Ec(a,b,c){if(!(b&a.D||!c||c&a.D)){for(var d=b>>>a.A;0<c;){var e=a.aa[d]
|
|||
function zc(a,b,c,d,e){for(var f=0,g=b>>>a.A;0<c&&g<a.aa.length;){var h=d[f++];if(!h)break;if(void 0!==e){var k=new x(b),m=k,p=e,v=a.ba;m.id=h.id|1;m.we=h.we;m.size=h.size;p&&(m.type=p,m.D=p==Gc);Qb?(m.I=h.I,m.G=h.G,m.Pa=h.Pa,m.Sd=h.Sd,m.X=h.X,Cc(m,Hc?Ic:Jc)):(m.X=h.X,Cc(m,Kc));pc(m,v,h);h=k}a.aa[g++]=h;c-=a.B}}l.Ia=function(a){return this.aa[(a&this.C)>>>this.A].Bc(a&this.D,a)};function Mc(a,b){var c=b&a.D,d=(b&a.C)>>>a.A;return c!=a.D?a.aa[d].Of(c,b):a.aa[d++].$d(c,b)|a.aa[d&a.W].$d(0,b+1)<<8}
|
||||
l.fc=function(a,b){this.aa[(a&this.C)>>>this.A].Dc(a&this.D,b&255,a)};function Nc(a,b,c){var d=b&a.D,e=(b&a.C)>>>a.A;d!=a.D?a.aa[e].ti(d,c&65535,b):(a.aa[e++].cf(d,c&255,b),a.aa[e&a.W].cf(0,c>>8&255,b+1))}l.yj=function(){return null};
|
||||
function Oc(a,b){var c=0,d=[],e=!a.J&&a.N==a.C;e||qc(a,!0);for(var f=0;f<a.M;f++){var g=a.aa[f];if(b&&g.type!=Gc||g.Oa||g.sj){d[c++]=f;var h=c++;if(g=g.save()){for(var k=0,m=0,p=[];k<g.length;){for(var v=g[k],u=k+1;u<g.length&&g[u]===v;)u++;p[m++]=u-k;p[m++]=v;k=u}p.length<g.length&&(g=p)}d[h]=g}}e||qc(a,!1);d[c]=e;return d}function Pc(a,b){if(null==b)return a.K=!a.K,a.K;void 0===a.F[b]&&(a.F[b]=[null,!1]);a.F[b][1]=!a.F[b][1];return a.F[b][1]}
|
||||
function Qc(a,b,c,d){void 0===d&&(d=0);for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.F[k]?kb("Input port "+sa(k)+" already registered"):f.F[k]=[h,!1]}}function Rc(a,b,c,d){for(var e=0,f=0;0<c;){var g=a.F[b],h=a.Y[b]||1,k=1==h?255:2==h?65535:-1,m=k;void 0!==g?(g[0]&&(m=g[0](b,d),void 0===m?m=k:m&=k),a.ba&&a.K!=g[1]&&Sc(a.ba,b,m)):a.ba&&(Pb(a.ba,a,b,null,d),a.K&&Sc(a.ba,b,m));e|=m<<f;f+=h<<3;b+=h;c-=h}return e}
|
||||
function Qc(a,b,c,d){void 0===d&&(d=0);for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.F[k]?kb("Input port "+sa(k)+" already registered"):f.F[k]=[h,!1]}}function Rc(a,b,c,d){for(var e=0,f=0;0<c;){var g=a.F[b],h=a.Y[b]||1,k=1==h?255:2==h?65535:-1,m=k;void 0!==g?(g[0]&&(m=g[0](b,d),null==m?m=k:m&=k),a.ba&&a.K!=g[1]&&Sc(a.ba,b,m)):a.ba&&(Pb(a.ba,a,b,null,d),a.K&&Sc(a.ba,b,m));e|=m<<f;f+=h<<3;b+=h;c-=h}return e}
|
||||
function Tc(a,b){if(null==b)return a.L=!a.L,a.L;void 0===a.G[b]&&(a.G[b]=[null,!1]);a.G[b][1]=!a.G[b][1];return a.G[b][1]}function Uc(a,b,c,d){void 0===d&&(d=0);for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.G[k]?kb("Output port "+sa(k)+" already registered"):f.G[k]=[h,!1]}}
|
||||
function Vc(a,b,c,d,e){for(var f=0;0<c;){var g=a.G[b],h=a.Z[b]||1,k=1==h?255:2==h?65535:-1,k=(d>>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,e);a.ba&&a.L!=g[1]&&Wc(a.ba,b,k)}else a.ba&&(Pb(a.ba,a,b,k,e),a.L&&Wc(a.ba,b,k));f+=h<<3;b+=h;c-=h}}function tc(a,b,c,d,e){b="Memory block error ("+b+": "+q(c)+","+q(d)+")";e?a.ba?a.ba.message(b):a.log(b):kb(b);return!1}var ec,Xc={Jk:20,count:8,fq:1,type:3},Yc=0,Zc;for(Zc in Xc){var $c=Xc[Zc];Xc[Zc]={ph:(1<<$c)-1<<Yc,shift:Yc};Yc+=$c}ec=Xc;
|
||||
var uc=1,yc=2,Bc=3,Dc=4,Fc=5,ad;if(Qb){var bd=new ArrayBuffer(2);(new DataView(bd)).setUint16(0,256,!0);ad=256===(new Uint16Array(bd))[0]}else ad=!1;var Hc=ad;
|
||||
|
|
@ -557,13 +557,13 @@ function ps(a,b){!b&&a.N&&(a.Tc?a.O.style.width=a.O.style.height="":a.N.style.wi
|
|||
function Bs(a,b){var c=a.D;c&&!a.tc&&(c.addEventListener("touchstart",function(b){Fs(a,b,!0)},!1),c.addEventListener("touchmove",function(b){Fs(a,b)},!0),c.addEventListener("touchend",function(b){Fs(a,b,!1)},!1),a.tc=b,a.hb=a.ib=a.md=-1,a.lc=!1,a.Db=null,a.kc=!1,a.Qd=function(){a.kc=!0;a.G.Wd(Gs,!0)})}l.Dg=function(a){this.C&&this.C.Dg(a)};
|
||||
function Fs(a,b,c){var d,e,f=0,g=0;d=a.O;do isNaN(d.offsetLeft)||(f+=d.offsetLeft,g+=d.offsetTop);while(d=d.offsetParent);var h=a.Z/a.O.offsetWidth,k=a.la/a.O.offsetHeight;b.targetTouches&&b.targetTouches.length?(d=b.targetTouches[0].pageX,e=b.targetTouches[0].pageY):(d=b.pageX,e=b.pageY);d=(d-f)*h;e=(e-g)*k;if(a.tc==Ds)c&&xq(a.C,Hs[e/(a.la/3)|0][d/(a.Z/3)|0],!0);else if(a.G){g=a.lc;f=b.timeStamp-a.md;!0===c?(a.lc=500<f,a.md=b.timeStamp,a.Db=setTimeout(a.Qd,500)):null!=a.Db&&(clearTimeout(a.Db),a.Db=
|
||||
null);void 0===c&&(a.lc=!1);g||b.preventDefault();if(!1===c){a.kc?(a.G.Wd(Gs,!1),a.kc=!1,b=!0):b=!1;if(b)return;if(200>f){a.G.Wd(Gs,!0);a.G.Wd(Gs,!1);return}}if(c||0>a.hb||0>a.ib)a.hb=d,a.ib=e;c=Math.round(d-a.hb);b=Math.round(e-a.ib);a.hb=d;a.ib=e;a.G.uf(c,b,a.hb,a.ib)}}l.Xb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Wb=function(a){return a?this.save():!0};
|
||||
l.reset=function(){var a=!0,b=0;this.W&&(b=+Vl(this.W,jl,void 0));this.ca||(this.La=b==Wl?us:rs);this.ea=Is;switch(this.La){case fq:b=7;break;case dq:var c=Js[this.xb];c&&(b=c[0]);b||(b=4);break;case us:b=Wl;this.ea=Ks;break;default:b=2}this.ga!==b&&(this.ga=b,a=!0);this.B=null;this.Y=this.Kb=new nr(this,us);this.K=this.yb=new nr(this,rs);this.La<dq?this.A=new nr:(this.A=new nr(this,this.La,null,this.sd),Ls(this));Ms(this);this.oa=null;this.Aa=this.aa=-1;this.xa=0;Ns(this,this.ea);if(this.B.bb&&a){a=
|
||||
this.B.bb+this.Xa;for(b=this.B.bb;b<a;b+=2){var d=65536*Math.random()|0;4==this.ga||7==this.ga?(c=b>>1&255,d=d>>8&~Os,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?Ps|Qs:Rs|Ss)|Ts&d>>8);Nc(this.ka,b,c|d<<8)}Es(this,!0)}};function Ls(a){a.A.bf&wr?(a.Y=a.Kb,a.K=a.A):(a.Y=a.A,a.K=a.yb)}l.save=function(){var a=new Zf(this);a.set(0,Nr(this.Kb));a.set(1,Nr(this.yb));a.set(2,[this.ga,this.ea,this.oa]);a.set(3,Nr(this.A));return a.data()};
|
||||
l.reset=function(){var a=!0,b=0;this.W&&(b=+Vl(this.W,jl,void 0));this.ca||(this.La=b==Wl?us:rs);this.ea=Is;switch(this.La){case fq:b=7;break;case dq:var c=Js[this.xb];c&&(b=c[0]);b||(b=4);break;case us:b=Wl;this.ea=Ks;break;default:b=2}this.ga!==b&&(this.ga=b,a=!0);this.B=null;this.Y=this.Kb=new nr(this,us);this.K=this.yb=new nr(this,rs);this.La<dq?this.A=new nr:(this.A=new nr(this,this.La,null,this.sd),Ls(this));Ms(this);this.oa=null;Ns(this,this.ea);if(this.B.bb&&a){a=this.B.bb+this.Xa;for(b=this.B.bb;b<
|
||||
a;b+=2){var d=65536*Math.random()|0;4==this.ga||7==this.ga?(c=b>>1&255,d=d>>8&~Os,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?Ps|Qs:Rs|Ss)|Ts&d>>8);Nc(this.ka,b,c|d<<8)}Es(this,!0)}};function Ls(a){a.A.bf&wr?(a.Y=a.Kb,a.K=a.A):(a.Y=a.A,a.K=a.yb)}l.save=function(){var a=new Zf(this);a.set(0,Nr(this.Kb));a.set(1,Nr(this.yb));a.set(2,[this.ga,this.ea,this.oa]);a.set(3,Nr(this.A));return a.data()};
|
||||
l.restore=function(a){var b=a[2];this.ga=b[0];this.ea=b[1];this.oa=b[2];this.B=null;this.Y=this.Kb=new nr(this,us,a[0]);this.K=this.yb=new nr(this,rs,a[1]);this.A=new nr(this,this.La,a[3],this.sd);this.A.rc&&Ls(this);Ms(this);if(!Us(this))return!1;Vs(this);return!0};
|
||||
function qs(a,b,c,d){if(d)a.Da("Unable to load font ROM (error "+d+": "+b+")");else{sb(a.ye,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){kb("Empty font ROM: "+b);return}if(1==f.length){kb(f[0]);return}if(8192==f.length)eq(a,f,[6144,0]);else if(2048==f.length)eq(a,f,[0]);else{a.Da("Unrecognized font data length ("+f.length+")");return}}catch(g){a.Da("Font ROM data error: "+g.message);return}(a.L||a.ba)&&Lb(a)}}
|
||||
function Ws(a,b){if(1==b)return a.ha[0]=Xs[Rs],a.ha[1]=Xs[Ps],a.ha;if(2==b){var c=a.B.$e;if(a.B===a.A){var d=a.A.Cc[0],c=d&7;d&16&&(c|=8);18!=a.A.Cc[1]&&(c|=32)}a.ha[0]=Xs[c&15];c=c&32?Ys:Zs;for(d=0;d<c.length;d++)a.ha[d+1]=Xs[c[d]];return a.ha}if(a.K===a.yb)return Xs;a.Ga&&b&&!a.ha[16]&&(a.Ga=!1);if(!a.Ga){var c=a.A,d=c.af,e,f,g,h;if(8==b)for(e=0;256>e;e++)f=d[e]||0,g=f<<2&252,h=f>>4&252,f=f>>10&252,a.ha[e]=[g,h,f,255];else{var k=d&&d[255];b=null!=c.Cc[15]?c.Cc:$s;for(e=0;16>e;e++)f=b[e]&63,k?(f|=
|
||||
(c.Cc[20]&12)<<4,c.Cc[16]&128&&(f&=-49,f|=(c.Cc[20]&3)<<4),f=d[f],g=f<<2&252,h=f>>4&252,f=f>>10&252):(g=(f&4?170:0)|(f&32?85:0),h=(f&2?170:0)|(f&16?85:0),f=(f&1?170:0)|(f&8?85:0)),a.ha[e]=[g,h,f,255]}a.Ga=!0}return a.ha}function eq(a,b,c,d){a.wb=b;a.Ua=c;a.Ea=d}
|
||||
function Ms(a,b){var c=!1;if(window&&a.wb&&(!b||a.I)){b=0;var d=a.Ea?a.Ea:8,e=Ws(a);null!=a.Ua[0]&&at(a,bt,a.Ua[0],b,d,8,a.wb,e)&&(c=!0);b=a.Ea?0:2048;d=a.Ea?a.Ea:9;null!=a.Ua[1]&&(at(a,ct,a.Ua[1],b,d,14,a.wb,dt,et)&&(c=!0),a.Ea&&at(a,a.La,a.Ua[1],0,a.Ea,14,a.wb,e)&&(c=!0))}return c}function at(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(ft(a,b,c,d,e,f,g,h,k)&&(m=!0),a.Dd&&ft(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m}
|
||||
function Ms(a,b){var c=!1;if(window&&a.wb&&(!b||a.I)){var d=0,e=a.Ea?a.Ea:8,f=Ws(a);null!=a.Ua[0]&&at(a,bt,a.Ua[0],d,e,8,a.wb,f)&&(c=!0);d=a.Ea?0:2048;e=a.Ea?a.Ea:9;null!=a.Ua[1]&&(at(a,ct,a.Ua[1],d,e,14,a.wb,dt,et)&&(c=!0),a.Ea&&at(a,a.La,a.Ua[1],0,a.Ea,14,a.wb,f)&&(c=!0))}b||(a.aa=-1,a.Aa=-1,a.xa=0);return c}function at(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(ft(a,b,c,d,e,f,g,h,k)&&(m=!0),a.Dd&&ft(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m}
|
||||
function ft(a,b,c,d,e,f,g,h,k){var m=!1,p=b&1?0:1,v=a.va[b],u=16>h.length?h.length:16;v||(v={Fc:e<<p,Gc:f<<p,Ce:Array(u),Si:h.slice(0,u),kf:k,Ug:Array(u)});for(k=0;k<u;k++){var E=h[k],G=v.Ce[k]?v.Si[k]:[];if(E[0]!==G[0]||E[1]!==G[1]||E[2]!==G[2]){var m=v,G=k,I=p,J=c,T=d,L=e,ua=f,ca=g,xb=[0,0,0,0],za=document.createElement("canvas");za.width=m.Fc<<4;za.height=m.Gc<<4;var cb=za.getContext("2d"),Sa,rb,db,rc=8>ua||!T?ua:8,ib=cb.createImageData(m.Fc,m.Gc);for(Sa=0;256>Sa;Sa++){for(db=0;db<ua;db++)for(var df=
|
||||
m.kf&&G&1&&db>=ua-2,Ld=ca[db<rc?J+Sa*rc+db:T+Sa*rc+db-rc],ef=0;ef<=I;ef++)for(rb=0;rb<L;rb++){var xg=rb<<I,ff=(db<<I)+ef,yg=df||Ld&128>>(8<=rb&&192<=Sa&&223>=Sa?7:rb)?E:xb;gt(ib,xg,ff,yg);I&>(ib,xg+1,ff,yg)}cb.putImageData(ib,(Sa&15)*m.Fc,(Sa>>4)*m.Gc)}m.Ce[G]="#"+q(E[0],2)+q(E[1],2)+q(E[2],2);m.Si[G]=E;m.Ug[G]=za;m=!0}}a.va[b]=v;return m}function ht(a){0<a.xa||0<=a.aa?0>a.Aa&&(a.Aa=0):a.Aa=-1}
|
||||
function Vs(a){if(a.I){for(var b=10;15>=b;b++)if(null==a.B.Sa[b])return;var c=a.B.Sa[10],b=c&31,d=a.B.Sa[11]&31,e=a.B.Sa[9]&31,f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)it(a);else{c=a.B.Sa[15]+((a.B.Sa[14]&63)<<8);a.aa!=c&&(it(a),a.aa=c);d=d-b+1;if(a.od!=b||a.Hc!=d)a.od=b,a.Hc=d;a.za=e+1;ht(a)}}}
|
||||
|
|
|
|||
Loading…
Reference in a new issue