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
18
README.md
18
README.md
|
|
@ -1,3 +1,17 @@
|
|||
---
|
||||
layout: page
|
||||
permalink: /
|
||||
machines:
|
||||
- id: ibm5150
|
||||
type: pcx86
|
||||
resume: 1
|
||||
name: "IBM PC (Model 5150) with Monochrome Display"
|
||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
||||
- id: demoC1P
|
||||
type: c1p
|
||||
config: /devices/c1p/machine/8kb/large/machine.xml
|
||||
---
|
||||
|
||||
PCjs Machines
|
||||
=============
|
||||
|
||||
|
|
@ -14,7 +28,7 @@ All PCjs machine simulations are written entirely in [JavaScript](/modules/). N
|
|||
required. Supported browsers include modern versions of Chrome, Safari, Firefox, Internet Explorer (v9.0 and up), Edge,
|
||||
and assorted mobile browsers.
|
||||
|
||||
[Embedded IBM PC](/devices/pcx86/machine/5150/mda/64kb/ "PCx86:ibm5150")
|
||||
{% include machine.html id="ibm5150" %}
|
||||
|
||||
The [JavaScript Machine](/devices/pcx86/machine/5150/mda/64kb/) above uses [PCx86](/docs/pcx86/) configured with an Intel
|
||||
8088 running at 4.77Mhz, with 64Kb of RAM and an IBM Monochrome Display Adapter. For more control, there are also
|
||||
|
|
@ -62,7 +76,7 @@ Below is the [OSI Challenger C1P](/docs/c1pjs/), another simulation in the PCjs
|
|||
It simulates Ohio Scientific's 6502-based microcomputer, released in 1978. More details about this simulation
|
||||
and the original machine are available in the [C1Pjs Documentation](/docs/c1pjs/).
|
||||
|
||||
[Embedded OSI Challenger C1P](/devices/c1p/machine/8kb/large/ "C1Pjs:demoC1P")
|
||||
{% include machine.html id="demoC1P" %}
|
||||
|
||||
<!--BEGIN:EXCLUDE-->
|
||||
|
||||
|
|
|
|||
|
|
@ -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)}}}
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ function dc(a,b,c){if(!(b&a.C||!c||c&a.C)){for(var d=b>>>a.B;0<c;){var e=a.X[d];
|
|||
function Zb(a,b,c,d,e){for(var f=0,g=b>>>a.B;0<c&&g<a.X.length;){var h=d[f++];if(!h)break;if(void 0!==e){var l=new u(b),m=l,q=e,y=a.Ea;m.id=h.id|1;m.xe=h.xe;m.size=h.size;q&&(m.type=q,m.H=q==fc);rb?(m.L=h.L,m.K=h.K,m.Fa=h.Fa,m.rd=h.rd,m.T=h.T,bc(m,gc?hc:ic)):(m.T=h.T,bc(m,jc));Rb(m,y,h);h=l}a.X[g++]=h;c-=a.A}}k.Eb=function(a){return this.X[(a&this.D)>>>this.B].mc(a&this.C,a)};function kc(a,b){var c=b&a.C,d=(b&a.D)>>>a.B;return c!=a.C?a.X[d].cf(c,b):a.X[d++].Ad(c,b)|a.X[d&a.L].Ad(0,b+1)<<8}
|
||||
k.Dc=function(a,b){this.X[(a&this.D)>>>this.B].nc(a&this.C,b&255,a)};function lc(a,b,c){var d=b&a.C,e=(b&a.D)>>>a.B;d!=a.C?a.X[e].wh(d,c&65535,b):(a.X[e++].jf(d,c&255,b),a.X[e&a.L].jf(0,c>>8&255,b+1))}
|
||||
function mc(a,b){var c=0,d=[],e=!a.G&&a.W==a.D;e||Sb(a,!0);for(var f=0;f<a.H;f++){var g=a.X[f];if(b&&g.type!=fc||g.Da||g.oi){d[c++]=f;var h=c++;if(g=g.save()){for(var l=0,m=0,q=[];l<g.length;){for(var y=g[l],w=l+1;w<g.length&&g[w]===y;)w++;q[m++]=w-l;q[m++]=y;l=w}q.length<g.length&&(g=q)}d[h]=g}}e||Sb(a,!1);d[c]=e;return d}
|
||||
function nc(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 l=+e+d;l<=g;l++)void 0!==f.I[l]?r("Input port "+oa(l,4,!0)+" already registered"):f.I[l]=[h,!1]}}function oc(a,b,c,d){for(var e=0,f=0;0<c;){var g=a.I[b],h=a.M[b]||1,l=1==h?255:2==h?65535:-1,m=l;void 0!==g&&g[0]&&(m=g[0](b,d),void 0===m?m=l:m&=l);e|=m<<f;f+=h<<3;b+=h;c-=h}return e}
|
||||
function nc(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 l=+e+d;l<=g;l++)void 0!==f.I[l]?r("Input port "+oa(l,4,!0)+" already registered"):f.I[l]=[h,!1]}}function oc(a,b,c,d){for(var e=0,f=0;0<c;){var g=a.I[b],h=a.M[b]||1,l=1==h?255:2==h?65535:-1,m=l;void 0!==g&&g[0]&&(m=g[0](b,d),null==m?m=l:m&=l);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 l=+e+d;l<=g;l++)void 0!==f.J[l]?r("Output port "+oa(l,4,!0)+" already registered"):f.J[l]=[h,!1]}}function rc(a,b,c,d,e){for(var f=0;0<c;){var g=a.J[b],h=a.O[b]||1,l=1==h?255:2==h?65535:-1,l=(d>>>=f)&l;if(void 0!==g&&g[0])g[0](b,l,e);f+=h<<3;b+=h;c-=h}}function Ub(a,b,c,d,e){b="Memory block error ("+b+": "+oa(c)+","+oa(d)+")";e?a.Ea?a.Ea.message(b):a.log(b):r(b);return!1}
|
||||
var Fb,sc={Fj:20,count:8,Ho:1,type:3},tc=0,uc;for(uc in sc){var vc=sc[uc];sc[uc]={sg:(1<<vc)-1<<tc,shift:tc};tc+=vc}Fb=sc;var Vb=1,Yb=2,ac=3,cc=4,ec=5,wc;if(rb){var xc=new ArrayBuffer(2);(new DataView(xc)).setUint16(0,256,!0);wc=256===(new Uint16Array(xc))[0]}else wc=!1;var gc=wc;
|
||||
function u(a,b,c,d,e,f){this.id=yc+=2;this.T=null;this.G=0;this.ee=a;this.xe=b;this.size=c||0;this.type=d||zc;this.H=d==fc;this.controller=null;this.F=f;Rb(this);this.Da=this.oi=!1;if(c)if(e)this.controller=e,a=e.ui(a),this.T=a[0],this.G=a[1],bc(this,e.rg());else if(rb)this.L=new ArrayBuffer(c),this.K=new DataView(this.L,0,c),this.Fa=new Uint8Array(this.L,0,c),this.rd=new Uint16Array(this.L,0,c>>1),this.T=new Int32Array(this.L,0,c>>2),bc(this,gc?hc:ic);else{this.T=Array(c>>2);for(e=0;e<this.T.length;e++)this.T[e]=
|
||||
|
|
@ -521,13 +521,13 @@ function Yp(a,b){!b&&a.M&&(a.Hc?a.O.style.width=a.O.style.height="":a.M.style.wi
|
|||
function jq(a,b){var c=a.D;c&&!a.dc&&(c.addEventListener("touchstart",function(b){nq(a,b,!0)},!1),c.addEventListener("touchmove",function(b){nq(a,b)},!0),c.addEventListener("touchend",function(b){nq(a,b,!1)},!1),a.dc=b,a.bb=a.ib=a.Tc=-1,a.Wb=!1,a.sb=null,a.Vb=!1,a.nd=function(){a.Vb=!0;a.K.ie(oq,!0)})}k.Tf=function(a){this.C&&this.C.Tf(a)};
|
||||
function nq(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.X/a.O.offsetWidth,l=a.ja/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)*l;if(a.dc==lq)c&&mo(a.C,pq[e/(a.ja/3)|0][d/(a.X/3)|0],!0);else if(a.K){g=a.Wb;f=b.timeStamp-a.Tc;!0===c?(a.Wb=500<f,a.Tc=b.timeStamp,a.sb=setTimeout(a.nd,500)):null!=a.sb&&(clearTimeout(a.sb),a.sb=
|
||||
null);void 0===c&&(a.Wb=!1);g||b.preventDefault();if(!1===c){a.Vb?(a.K.ie(oq,!1),a.Vb=!1,b=!0):b=!1;if(b)return;if(200>f){a.K.ie(oq,!0);a.K.ie(oq,!1);return}}if(c||0>a.bb||0>a.ib)a.bb=d,a.ib=e;c=Math.round(d-a.bb);b=Math.round(e-a.ib);a.bb=d;a.ib=e;a.K.tg(c,b,a.bb,a.ib)}}k.Ob=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Nb=function(a){return a?this.save():!0};
|
||||
k.reset=function(){var a=!0,b=0;this.V&&(b=+gk(this.V,zj,void 0));this.ba||(this.Ma=b==hk?cq:$p);this.ca=qq;switch(this.Ma){case Un:b=7;break;case Sn:var c=rq[this.qb];c&&(b=c[0]);b||(b=4);break;case cq:b=hk;this.ca=sq;break;default:b=2}this.ea!==b&&(this.ea=b,a=!0);this.B=null;this.W=this.Bb=new bp(this,cq);this.I=this.rb=new bp(this,$p);this.Ma<Sn?this.A=new bp:(this.A=new bp(this,this.Ma,null,this.Wc),tq(this));uq(this);this.qa=null;this.ya=this.Z=-1;this.ua=0;vq(this,this.ca);if(this.B.Ya&&a){a=
|
||||
this.B.Ya+this.Xa;for(b=this.B.Ya;b<a;b+=2){var d=65536*Math.random()|0;4==this.ea||7==this.ea?(c=b>>1&255,d=d>>8&~wq,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?xq|yq:zq|Aq)|Bq&d>>8);lc(this.ma,b,c|d<<8)}mq(this,!0)}};function tq(a){a.A.ff&ip?(a.W=a.Bb,a.I=a.A):(a.W=a.A,a.I=a.rb)}k.save=function(){var a=new Te(this);a.set(0,wp(this.Bb));a.set(1,wp(this.rb));a.set(2,[this.ea,this.ca,this.qa]);a.set(3,wp(this.A));return a.data()};
|
||||
k.reset=function(){var a=!0,b=0;this.V&&(b=+gk(this.V,zj,void 0));this.ba||(this.Ma=b==hk?cq:$p);this.ca=qq;switch(this.Ma){case Un:b=7;break;case Sn:var c=rq[this.qb];c&&(b=c[0]);b||(b=4);break;case cq:b=hk;this.ca=sq;break;default:b=2}this.ea!==b&&(this.ea=b,a=!0);this.B=null;this.W=this.Bb=new bp(this,cq);this.I=this.rb=new bp(this,$p);this.Ma<Sn?this.A=new bp:(this.A=new bp(this,this.Ma,null,this.Wc),tq(this));uq(this);this.qa=null;vq(this,this.ca);if(this.B.Ya&&a){a=this.B.Ya+this.Xa;for(b=this.B.Ya;b<
|
||||
a;b+=2){var d=65536*Math.random()|0;4==this.ea||7==this.ea?(c=b>>1&255,d=d>>8&~wq,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?xq|yq:zq|Aq)|Bq&d>>8);lc(this.ma,b,c|d<<8)}mq(this,!0)}};function tq(a){a.A.ff&ip?(a.W=a.Bb,a.I=a.A):(a.W=a.A,a.I=a.rb)}k.save=function(){var a=new Te(this);a.set(0,wp(this.Bb));a.set(1,wp(this.rb));a.set(2,[this.ea,this.ca,this.qa]);a.set(3,wp(this.A));return a.data()};
|
||||
k.restore=function(a){var b=a[2];this.ea=b[0];this.ca=b[1];this.qa=b[2];this.B=null;this.W=this.Bb=new bp(this,cq,a[0]);this.I=this.rb=new bp(this,$p,a[1]);this.A=new bp(this,this.Ma,a[3],this.Wc);this.A.Ub&&tq(this);uq(this);if(!Cq(this))return!1;Dq(this);return!0};
|
||||
function Zp(a,b,c,d){if(d)a.wa("Unable to load font ROM (error "+d+": "+b+")");else{Ya(a.Wd,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){r("Empty font ROM: "+b);return}if(1==f.length){r(f[0]);return}if(8192==f.length)Tn(a,f,[6144,0]);else if(2048==f.length)Tn(a,f,[0]);else{a.wa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.wa("Font ROM data error: "+g.message);return}(a.J||a.Ea)&&pb(a)}}
|
||||
function Eq(a,b){if(1==b)return a.ga[0]=Fq[zq],a.ga[1]=Fq[xq],a.ga;if(2==b){var c=a.B.ef;if(a.B===a.A){var d=a.A.rc[0],c=d&7;d&16&&(c|=8);18!=a.A.rc[1]&&(c|=32)}a.ga[0]=Fq[c&15];c=c&32?Gq:Hq;for(d=0;d<c.length;d++)a.ga[d+1]=Fq[c[d]];return a.ga}if(a.I===a.rb)return Fq;a.Ga&&b&&!a.ga[16]&&(a.Ga=!1);if(!a.Ga){var c=a.A,d=c.we,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.ga[e]=[g,h,f,255];else{var l=d&&d[255];b=null!=c.rc[15]?c.rc:Iq;for(e=0;16>e;e++)f=b[e]&63,l?(f|=
|
||||
(c.rc[20]&12)<<4,c.rc[16]&128&&(f&=-49,f|=(c.rc[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.ga[e]=[g,h,f,255]}a.Ga=!0}return a.ga}function Tn(a,b,c,d){a.nb=b;a.Va=c;a.Ca=d}
|
||||
function uq(a,b){var c=!1;if(window&&a.nb&&(!b||a.G)){b=0;var d=a.Ca?a.Ca:8,e=Eq(a);null!=a.Va[0]&&Jq(a,Kq,a.Va[0],b,d,8,a.nb,e)&&(c=!0);b=a.Ca?0:2048;d=a.Ca?a.Ca:9;null!=a.Va[1]&&(Jq(a,Lq,a.Va[1],b,d,14,a.nb,Mq,Nq)&&(c=!0),a.Ca&&Jq(a,a.Ma,a.Va[1],0,a.Ca,14,a.nb,e)&&(c=!0))}return c}function Jq(a,b,c,d,e,f,g,h,l){var m=!1;null!=c&&(Oq(a,b,c,d,e,f,g,h,l)&&(m=!0),a.md&&Oq(a,b<<1,c,d,e,f,g,h,l)&&(m=!0));return m}
|
||||
function uq(a,b){var c=!1;if(window&&a.nb&&(!b||a.G)){var d=0,e=a.Ca?a.Ca:8,f=Eq(a);null!=a.Va[0]&&Jq(a,Kq,a.Va[0],d,e,8,a.nb,f)&&(c=!0);d=a.Ca?0:2048;e=a.Ca?a.Ca:9;null!=a.Va[1]&&(Jq(a,Lq,a.Va[1],d,e,14,a.nb,Mq,Nq)&&(c=!0),a.Ca&&Jq(a,a.Ma,a.Va[1],0,a.Ca,14,a.nb,f)&&(c=!0))}b||(a.Z=-1,a.ya=-1,a.ua=0);return c}function Jq(a,b,c,d,e,f,g,h,l){var m=!1;null!=c&&(Oq(a,b,c,d,e,f,g,h,l)&&(m=!0),a.md&&Oq(a,b<<1,c,d,e,f,g,h,l)&&(m=!0));return m}
|
||||
function Oq(a,b,c,d,e,f,g,h,l){var m=!1,q=b&1?0:1,y=a.ta[b],w=16>h.length?h.length:16;y||(y={oc:e<<q,pc:f<<q,ae:Array(w),Xh:h.slice(0,w),De:l,ig:Array(w)});for(l=0;l<w;l++){var z=h[l],B=y.ae[l]?y.Xh[l]:[];if(z[0]!==B[0]||z[1]!==B[1]||z[2]!==B[2]){var m=y,B=l,S=q,X=c,ca=d,$a=e,yb=f,Vh=g,Qt=[0,0,0,0],Pf=document.createElement("canvas");Pf.width=m.oc<<4;Pf.height=m.pc<<4;var Om=Pf.getContext("2d"),Lb,pd,pc,Qf=8>yb||!ca?yb:8,Wh=Om.createImageData(m.oc,m.pc);for(Lb=0;256>Lb;Lb++){for(pc=0;pc<yb;pc++)for(var Rt=
|
||||
m.De&&B&1&&pc>=yb-2,St=Vh[pc<Qf?X+Lb*Qf+pc:ca+Lb*Qf+pc-Qf],Xh=0;Xh<=S;Xh++)for(pd=0;pd<$a;pd++){var Pm=pd<<S,Qm=(pc<<S)+Xh,Rm=Rt||St&128>>(8<=pd&&192<=Lb&&223>=Lb?7:pd)?z:Qt;Pq(Wh,Pm,Qm,Rm);S&&Pq(Wh,Pm+1,Qm,Rm)}Om.putImageData(Wh,(Lb&15)*m.oc,(Lb>>4)*m.pc)}m.ae[B]="#"+oa(z[0],2)+oa(z[1],2)+oa(z[2],2);m.Xh[B]=z;m.ig[B]=Pf;m=!0}}a.ta[b]=y;return m}function Qq(a){0<a.ua||0<=a.Z?0>a.ya&&(a.ya=0):a.ya=-1}
|
||||
function Dq(a){if(a.G){for(var b=10;15>=b;b++)if(null==a.B.Oa[b])return;var c=a.B.Oa[10],b=c&31,d=a.B.Oa[11]&31,e=a.B.Oa[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)Rq(a);else{c=a.B.Oa[15]+((a.B.Oa[14]&63)<<8);a.Z!=c&&(Rq(a),a.Z=c);d=d-b+1;if(a.Uc!=b||a.xc!=d)a.Uc=b,a.xc=d;a.xa=e+1;Qq(a)}}}function Rq(a){if(0<=a.Z){if(void 0!==a.L){var b=Sq<<8,c=a.L[a.Z];if(c&b){var c=c&~b,b=a.Z%a.F,d=a.Z/a.F|0;a.G&&a.ta[a.G]&&(a.Ba&&Tq(a,b,d,c,a.Ba),Tq(a,b,d,c));a.L[a.Z]=c}}a.Z=-1}}
|
||||
|
|
|
|||
|
|
@ -1308,7 +1308,7 @@ class Bus extends Component {
|
|||
if (aNotify !== undefined) {
|
||||
if (aNotify[0]) {
|
||||
dataPort = aNotify[0](port, addrLIP);
|
||||
if (dataPort === undefined) {
|
||||
if (dataPort == null) {
|
||||
dataPort = maskPort;
|
||||
} else {
|
||||
dataPort &= maskPort;
|
||||
|
|
|
|||
|
|
@ -3166,10 +3166,6 @@ class Video extends Component {
|
|||
this.buildFonts();
|
||||
|
||||
this.nMode = null;
|
||||
this.iCellCursor = -1; // initially, there is no visible cursor cell
|
||||
this.cBlinks = -1; // initially, blinking is not active
|
||||
this.cBlinkVisible = 0; // no visible blinking characters (yet)
|
||||
|
||||
this.setMode(this.nModeDefault);
|
||||
|
||||
if (this.cardActive.addrBuffer && fRandomize) {
|
||||
|
|
@ -3697,6 +3693,14 @@ class Video extends Component {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!fRebuild) {
|
||||
/*
|
||||
* Perform some additional initialization common to both reset() and restore() sequences.
|
||||
*/
|
||||
this.iCellCursor = -1; // initially, there is no visible cursor cell
|
||||
this.cBlinks = -1; // initially, blinking is not active
|
||||
this.cBlinkVisible = 0; // no visible blinking characters (yet)
|
||||
}
|
||||
return fChanges;
|
||||
}
|
||||
|
||||
|
|
@ -6399,7 +6403,7 @@ class Video extends Component {
|
|||
* The IBM VGA ROM makes some hardware determinations based on how the CRTC controller responds when
|
||||
* the IO_SELECT bit in the Miscellaneous Output Register is cleared; normally, that would mean ports
|
||||
* 0x3B? are decoded and ports 0x3D? are ignored. We didn't used to bother ignoring them, but the
|
||||
* VGA ROM's logic requires it, so now we also check fActive. However, we ignore only CTRC reads;
|
||||
* VGA ROM's logic requires it, so now we also check fActive. However, we ignore only CRTC reads;
|
||||
* we retain any writes in case that information proves useful later.
|
||||
*
|
||||
* Note that returning an undefined value now signals the Bus component to return whatever default value
|
||||
|
|
@ -7328,7 +7332,7 @@ Video.TOUCH = {
|
|||
* Why simulate a SPACE if the tap is in the middle third (center) of the screen? Well, apparently
|
||||
* I didn't explain earlier that the WHOLE reason I originally added KEYGRID support (before it was
|
||||
* even called KEYGRID support) was to make the 1985 game "Rogue" (pcjs.org/apps/pcx86/1985/rogue)
|
||||
* more fun to play on an iPad, and space is a commonly required key.
|
||||
* more fun to play on an iPad (the space-bar is a commonly required key).
|
||||
*/
|
||||
Video.KEYGRID = [
|
||||
[Keyboard.SIMCODE.HOME, Keyboard.SIMCODE.UP, Keyboard.SIMCODE.PGUP],
|
||||
|
|
|
|||
|
|
@ -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)}}}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -9462,7 +9462,7 @@ class Bus extends Component {
|
|||
if (aNotify !== undefined) {
|
||||
if (aNotify[0]) {
|
||||
dataPort = aNotify[0](port, addrLIP);
|
||||
if (dataPort === undefined) {
|
||||
if (dataPort == null) {
|
||||
dataPort = maskPort;
|
||||
} else {
|
||||
dataPort &= maskPort;
|
||||
|
|
@ -49588,10 +49588,6 @@ class Video extends Component {
|
|||
this.buildFonts();
|
||||
|
||||
this.nMode = null;
|
||||
this.iCellCursor = -1; // initially, there is no visible cursor cell
|
||||
this.cBlinks = -1; // initially, blinking is not active
|
||||
this.cBlinkVisible = 0; // no visible blinking characters (yet)
|
||||
|
||||
this.setMode(this.nModeDefault);
|
||||
|
||||
if (this.cardActive.addrBuffer && fRandomize) {
|
||||
|
|
@ -50119,6 +50115,14 @@ class Video extends Component {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (!fRebuild) {
|
||||
/*
|
||||
* Perform some additional initialization common to both reset() and restore() sequences.
|
||||
*/
|
||||
this.iCellCursor = -1; // initially, there is no visible cursor cell
|
||||
this.cBlinks = -1; // initially, blinking is not active
|
||||
this.cBlinkVisible = 0; // no visible blinking characters (yet)
|
||||
}
|
||||
return fChanges;
|
||||
}
|
||||
|
||||
|
|
@ -52821,7 +52825,7 @@ class Video extends Component {
|
|||
* The IBM VGA ROM makes some hardware determinations based on how the CRTC controller responds when
|
||||
* the IO_SELECT bit in the Miscellaneous Output Register is cleared; normally, that would mean ports
|
||||
* 0x3B? are decoded and ports 0x3D? are ignored. We didn't used to bother ignoring them, but the
|
||||
* VGA ROM's logic requires it, so now we also check fActive. However, we ignore only CTRC reads;
|
||||
* VGA ROM's logic requires it, so now we also check fActive. However, we ignore only CRTC reads;
|
||||
* we retain any writes in case that information proves useful later.
|
||||
*
|
||||
* Note that returning an undefined value now signals the Bus component to return whatever default value
|
||||
|
|
@ -53750,7 +53754,7 @@ Video.TOUCH = {
|
|||
* Why simulate a SPACE if the tap is in the middle third (center) of the screen? Well, apparently
|
||||
* I didn't explain earlier that the WHOLE reason I originally added KEYGRID support (before it was
|
||||
* even called KEYGRID support) was to make the 1985 game "Rogue" (pcjs.org/apps/pcx86/1985/rogue)
|
||||
* more fun to play on an iPad, and space is a commonly required key.
|
||||
* more fun to play on an iPad (the space-bar is a commonly required key).
|
||||
*/
|
||||
Video.KEYGRID = [
|
||||
[Keyboard.SIMCODE.HOME, Keyboard.SIMCODE.UP, Keyboard.SIMCODE.PGUP],
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ function dc(a,b,c){if(!(b&a.C||!c||c&a.C)){for(var d=b>>>a.B;0<c;){var e=a.X[d];
|
|||
function Zb(a,b,c,d,e){for(var f=0,g=b>>>a.B;0<c&&g<a.X.length;){var h=d[f++];if(!h)break;if(void 0!==e){var l=new u(b),m=l,q=e,y=a.Ea;m.id=h.id|1;m.xe=h.xe;m.size=h.size;q&&(m.type=q,m.H=q==fc);rb?(m.L=h.L,m.K=h.K,m.Fa=h.Fa,m.rd=h.rd,m.T=h.T,bc(m,gc?hc:ic)):(m.T=h.T,bc(m,jc));Rb(m,y,h);h=l}a.X[g++]=h;c-=a.A}}k.Eb=function(a){return this.X[(a&this.D)>>>this.B].mc(a&this.C,a)};function kc(a,b){var c=b&a.C,d=(b&a.D)>>>a.B;return c!=a.C?a.X[d].cf(c,b):a.X[d++].Ad(c,b)|a.X[d&a.L].Ad(0,b+1)<<8}
|
||||
k.Dc=function(a,b){this.X[(a&this.D)>>>this.B].nc(a&this.C,b&255,a)};function lc(a,b,c){var d=b&a.C,e=(b&a.D)>>>a.B;d!=a.C?a.X[e].wh(d,c&65535,b):(a.X[e++].jf(d,c&255,b),a.X[e&a.L].jf(0,c>>8&255,b+1))}
|
||||
function mc(a,b){var c=0,d=[],e=!a.G&&a.W==a.D;e||Sb(a,!0);for(var f=0;f<a.H;f++){var g=a.X[f];if(b&&g.type!=fc||g.Da||g.oi){d[c++]=f;var h=c++;if(g=g.save()){for(var l=0,m=0,q=[];l<g.length;){for(var y=g[l],w=l+1;w<g.length&&g[w]===y;)w++;q[m++]=w-l;q[m++]=y;l=w}q.length<g.length&&(g=q)}d[h]=g}}e||Sb(a,!1);d[c]=e;return d}
|
||||
function nc(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 l=+e+d;l<=g;l++)void 0!==f.I[l]?r("Input port "+oa(l,4,!0)+" already registered"):f.I[l]=[h,!1]}}function oc(a,b,c,d){for(var e=0,f=0;0<c;){var g=a.I[b],h=a.M[b]||1,l=1==h?255:2==h?65535:-1,m=l;void 0!==g&&g[0]&&(m=g[0](b,d),void 0===m?m=l:m&=l);e|=m<<f;f+=h<<3;b+=h;c-=h}return e}
|
||||
function nc(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 l=+e+d;l<=g;l++)void 0!==f.I[l]?r("Input port "+oa(l,4,!0)+" already registered"):f.I[l]=[h,!1]}}function oc(a,b,c,d){for(var e=0,f=0;0<c;){var g=a.I[b],h=a.M[b]||1,l=1==h?255:2==h?65535:-1,m=l;void 0!==g&&g[0]&&(m=g[0](b,d),null==m?m=l:m&=l);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 l=+e+d;l<=g;l++)void 0!==f.J[l]?r("Output port "+oa(l,4,!0)+" already registered"):f.J[l]=[h,!1]}}function rc(a,b,c,d,e){for(var f=0;0<c;){var g=a.J[b],h=a.O[b]||1,l=1==h?255:2==h?65535:-1,l=(d>>>=f)&l;if(void 0!==g&&g[0])g[0](b,l,e);f+=h<<3;b+=h;c-=h}}function Ub(a,b,c,d,e){b="Memory block error ("+b+": "+oa(c)+","+oa(d)+")";e?a.Ea?a.Ea.message(b):a.log(b):r(b);return!1}
|
||||
var Fb,sc={Fj:20,count:8,Ho:1,type:3},tc=0,uc;for(uc in sc){var vc=sc[uc];sc[uc]={sg:(1<<vc)-1<<tc,shift:tc};tc+=vc}Fb=sc;var Vb=1,Yb=2,ac=3,cc=4,ec=5,wc;if(rb){var xc=new ArrayBuffer(2);(new DataView(xc)).setUint16(0,256,!0);wc=256===(new Uint16Array(xc))[0]}else wc=!1;var gc=wc;
|
||||
function u(a,b,c,d,e,f){this.id=yc+=2;this.T=null;this.G=0;this.ee=a;this.xe=b;this.size=c||0;this.type=d||zc;this.H=d==fc;this.controller=null;this.F=f;Rb(this);this.Da=this.oi=!1;if(c)if(e)this.controller=e,a=e.ui(a),this.T=a[0],this.G=a[1],bc(this,e.rg());else if(rb)this.L=new ArrayBuffer(c),this.K=new DataView(this.L,0,c),this.Fa=new Uint8Array(this.L,0,c),this.rd=new Uint16Array(this.L,0,c>>1),this.T=new Int32Array(this.L,0,c>>2),bc(this,gc?hc:ic);else{this.T=Array(c>>2);for(e=0;e<this.T.length;e++)this.T[e]=
|
||||
|
|
@ -521,13 +521,13 @@ function Yp(a,b){!b&&a.M&&(a.Hc?a.O.style.width=a.O.style.height="":a.M.style.wi
|
|||
function jq(a,b){var c=a.D;c&&!a.dc&&(c.addEventListener("touchstart",function(b){nq(a,b,!0)},!1),c.addEventListener("touchmove",function(b){nq(a,b)},!0),c.addEventListener("touchend",function(b){nq(a,b,!1)},!1),a.dc=b,a.bb=a.ib=a.Tc=-1,a.Wb=!1,a.sb=null,a.Vb=!1,a.nd=function(){a.Vb=!0;a.K.ie(oq,!0)})}k.Tf=function(a){this.C&&this.C.Tf(a)};
|
||||
function nq(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.X/a.O.offsetWidth,l=a.ja/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)*l;if(a.dc==lq)c&&mo(a.C,pq[e/(a.ja/3)|0][d/(a.X/3)|0],!0);else if(a.K){g=a.Wb;f=b.timeStamp-a.Tc;!0===c?(a.Wb=500<f,a.Tc=b.timeStamp,a.sb=setTimeout(a.nd,500)):null!=a.sb&&(clearTimeout(a.sb),a.sb=
|
||||
null);void 0===c&&(a.Wb=!1);g||b.preventDefault();if(!1===c){a.Vb?(a.K.ie(oq,!1),a.Vb=!1,b=!0):b=!1;if(b)return;if(200>f){a.K.ie(oq,!0);a.K.ie(oq,!1);return}}if(c||0>a.bb||0>a.ib)a.bb=d,a.ib=e;c=Math.round(d-a.bb);b=Math.round(e-a.ib);a.bb=d;a.ib=e;a.K.tg(c,b,a.bb,a.ib)}}k.Ob=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Nb=function(a){return a?this.save():!0};
|
||||
k.reset=function(){var a=!0,b=0;this.V&&(b=+gk(this.V,zj,void 0));this.ba||(this.Ma=b==hk?cq:$p);this.ca=qq;switch(this.Ma){case Un:b=7;break;case Sn:var c=rq[this.qb];c&&(b=c[0]);b||(b=4);break;case cq:b=hk;this.ca=sq;break;default:b=2}this.ea!==b&&(this.ea=b,a=!0);this.B=null;this.W=this.Bb=new bp(this,cq);this.I=this.rb=new bp(this,$p);this.Ma<Sn?this.A=new bp:(this.A=new bp(this,this.Ma,null,this.Wc),tq(this));uq(this);this.qa=null;this.ya=this.Z=-1;this.ua=0;vq(this,this.ca);if(this.B.Ya&&a){a=
|
||||
this.B.Ya+this.Xa;for(b=this.B.Ya;b<a;b+=2){var d=65536*Math.random()|0;4==this.ea||7==this.ea?(c=b>>1&255,d=d>>8&~wq,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?xq|yq:zq|Aq)|Bq&d>>8);lc(this.ma,b,c|d<<8)}mq(this,!0)}};function tq(a){a.A.ff&ip?(a.W=a.Bb,a.I=a.A):(a.W=a.A,a.I=a.rb)}k.save=function(){var a=new Te(this);a.set(0,wp(this.Bb));a.set(1,wp(this.rb));a.set(2,[this.ea,this.ca,this.qa]);a.set(3,wp(this.A));return a.data()};
|
||||
k.reset=function(){var a=!0,b=0;this.V&&(b=+gk(this.V,zj,void 0));this.ba||(this.Ma=b==hk?cq:$p);this.ca=qq;switch(this.Ma){case Un:b=7;break;case Sn:var c=rq[this.qb];c&&(b=c[0]);b||(b=4);break;case cq:b=hk;this.ca=sq;break;default:b=2}this.ea!==b&&(this.ea=b,a=!0);this.B=null;this.W=this.Bb=new bp(this,cq);this.I=this.rb=new bp(this,$p);this.Ma<Sn?this.A=new bp:(this.A=new bp(this,this.Ma,null,this.Wc),tq(this));uq(this);this.qa=null;vq(this,this.ca);if(this.B.Ya&&a){a=this.B.Ya+this.Xa;for(b=this.B.Ya;b<
|
||||
a;b+=2){var d=65536*Math.random()|0;4==this.ea||7==this.ea?(c=b>>1&255,d=d>>8&~wq,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?xq|yq:zq|Aq)|Bq&d>>8);lc(this.ma,b,c|d<<8)}mq(this,!0)}};function tq(a){a.A.ff&ip?(a.W=a.Bb,a.I=a.A):(a.W=a.A,a.I=a.rb)}k.save=function(){var a=new Te(this);a.set(0,wp(this.Bb));a.set(1,wp(this.rb));a.set(2,[this.ea,this.ca,this.qa]);a.set(3,wp(this.A));return a.data()};
|
||||
k.restore=function(a){var b=a[2];this.ea=b[0];this.ca=b[1];this.qa=b[2];this.B=null;this.W=this.Bb=new bp(this,cq,a[0]);this.I=this.rb=new bp(this,$p,a[1]);this.A=new bp(this,this.Ma,a[3],this.Wc);this.A.Ub&&tq(this);uq(this);if(!Cq(this))return!1;Dq(this);return!0};
|
||||
function Zp(a,b,c,d){if(d)a.wa("Unable to load font ROM (error "+d+": "+b+")");else{Ya(a.Wd,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){r("Empty font ROM: "+b);return}if(1==f.length){r(f[0]);return}if(8192==f.length)Tn(a,f,[6144,0]);else if(2048==f.length)Tn(a,f,[0]);else{a.wa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.wa("Font ROM data error: "+g.message);return}(a.J||a.Ea)&&pb(a)}}
|
||||
function Eq(a,b){if(1==b)return a.ga[0]=Fq[zq],a.ga[1]=Fq[xq],a.ga;if(2==b){var c=a.B.ef;if(a.B===a.A){var d=a.A.rc[0],c=d&7;d&16&&(c|=8);18!=a.A.rc[1]&&(c|=32)}a.ga[0]=Fq[c&15];c=c&32?Gq:Hq;for(d=0;d<c.length;d++)a.ga[d+1]=Fq[c[d]];return a.ga}if(a.I===a.rb)return Fq;a.Ga&&b&&!a.ga[16]&&(a.Ga=!1);if(!a.Ga){var c=a.A,d=c.we,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.ga[e]=[g,h,f,255];else{var l=d&&d[255];b=null!=c.rc[15]?c.rc:Iq;for(e=0;16>e;e++)f=b[e]&63,l?(f|=
|
||||
(c.rc[20]&12)<<4,c.rc[16]&128&&(f&=-49,f|=(c.rc[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.ga[e]=[g,h,f,255]}a.Ga=!0}return a.ga}function Tn(a,b,c,d){a.nb=b;a.Va=c;a.Ca=d}
|
||||
function uq(a,b){var c=!1;if(window&&a.nb&&(!b||a.G)){b=0;var d=a.Ca?a.Ca:8,e=Eq(a);null!=a.Va[0]&&Jq(a,Kq,a.Va[0],b,d,8,a.nb,e)&&(c=!0);b=a.Ca?0:2048;d=a.Ca?a.Ca:9;null!=a.Va[1]&&(Jq(a,Lq,a.Va[1],b,d,14,a.nb,Mq,Nq)&&(c=!0),a.Ca&&Jq(a,a.Ma,a.Va[1],0,a.Ca,14,a.nb,e)&&(c=!0))}return c}function Jq(a,b,c,d,e,f,g,h,l){var m=!1;null!=c&&(Oq(a,b,c,d,e,f,g,h,l)&&(m=!0),a.md&&Oq(a,b<<1,c,d,e,f,g,h,l)&&(m=!0));return m}
|
||||
function uq(a,b){var c=!1;if(window&&a.nb&&(!b||a.G)){var d=0,e=a.Ca?a.Ca:8,f=Eq(a);null!=a.Va[0]&&Jq(a,Kq,a.Va[0],d,e,8,a.nb,f)&&(c=!0);d=a.Ca?0:2048;e=a.Ca?a.Ca:9;null!=a.Va[1]&&(Jq(a,Lq,a.Va[1],d,e,14,a.nb,Mq,Nq)&&(c=!0),a.Ca&&Jq(a,a.Ma,a.Va[1],0,a.Ca,14,a.nb,f)&&(c=!0))}b||(a.Z=-1,a.ya=-1,a.ua=0);return c}function Jq(a,b,c,d,e,f,g,h,l){var m=!1;null!=c&&(Oq(a,b,c,d,e,f,g,h,l)&&(m=!0),a.md&&Oq(a,b<<1,c,d,e,f,g,h,l)&&(m=!0));return m}
|
||||
function Oq(a,b,c,d,e,f,g,h,l){var m=!1,q=b&1?0:1,y=a.ta[b],w=16>h.length?h.length:16;y||(y={oc:e<<q,pc:f<<q,ae:Array(w),Xh:h.slice(0,w),De:l,ig:Array(w)});for(l=0;l<w;l++){var z=h[l],B=y.ae[l]?y.Xh[l]:[];if(z[0]!==B[0]||z[1]!==B[1]||z[2]!==B[2]){var m=y,B=l,S=q,X=c,ca=d,$a=e,yb=f,Vh=g,Qt=[0,0,0,0],Pf=document.createElement("canvas");Pf.width=m.oc<<4;Pf.height=m.pc<<4;var Om=Pf.getContext("2d"),Lb,pd,pc,Qf=8>yb||!ca?yb:8,Wh=Om.createImageData(m.oc,m.pc);for(Lb=0;256>Lb;Lb++){for(pc=0;pc<yb;pc++)for(var Rt=
|
||||
m.De&&B&1&&pc>=yb-2,St=Vh[pc<Qf?X+Lb*Qf+pc:ca+Lb*Qf+pc-Qf],Xh=0;Xh<=S;Xh++)for(pd=0;pd<$a;pd++){var Pm=pd<<S,Qm=(pc<<S)+Xh,Rm=Rt||St&128>>(8<=pd&&192<=Lb&&223>=Lb?7:pd)?z:Qt;Pq(Wh,Pm,Qm,Rm);S&&Pq(Wh,Pm+1,Qm,Rm)}Om.putImageData(Wh,(Lb&15)*m.oc,(Lb>>4)*m.pc)}m.ae[B]="#"+oa(z[0],2)+oa(z[1],2)+oa(z[2],2);m.Xh[B]=z;m.ig[B]=Pf;m=!0}}a.ta[b]=y;return m}function Qq(a){0<a.ua||0<=a.Z?0>a.ya&&(a.ya=0):a.ya=-1}
|
||||
function Dq(a){if(a.G){for(var b=10;15>=b;b++)if(null==a.B.Oa[b])return;var c=a.B.Oa[10],b=c&31,d=a.B.Oa[11]&31,e=a.B.Oa[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)Rq(a);else{c=a.B.Oa[15]+((a.B.Oa[14]&63)<<8);a.Z!=c&&(Rq(a),a.Z=c);d=d-b+1;if(a.Uc!=b||a.xc!=d)a.Uc=b,a.xc=d;a.xa=e+1;Qq(a)}}}function Rq(a){if(0<=a.Z){if(void 0!==a.L){var b=Sq<<8,c=a.L[a.Z];if(c&b){var c=c&~b,b=a.Z%a.F,d=a.Z/a.F|0;a.G&&a.ta[a.G]&&(a.Ba&&Tq(a,b,d,c,a.Ba),Tq(a,b,d,c));a.L[a.Z]=c}}a.Z=-1}}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue