More 8080 opcodes
This commit is contained in:
parent
4173aaca31
commit
978d59efbf
7 changed files with 498 additions and 283 deletions
|
|
@ -294,51 +294,51 @@ var Cd=[function(){this.$a.call(this,rh)},function(){this.fa.call(this,sh)},func
|
|||
ei)},function(){this.W.call(this,fi)},function(){this.G=this.G&-256|ei.call(this,this.G&255,this.xa());this.A--},function(){this.G=this.G&~this.R|fi.call(this,this.G&this.R,this.Ma());this.A--},function(){pd(this,this.va.Z,this.ba,2);this.A-=this.B.Ie},function(){kf(this,D(this));this.A-=this.B.zc},function(){this.$a.call(this,ph)},function(){this.fa.call(this,qh)},function(){this.Oa.call(this,ph)},function(){this.W.call(this,qh)},function(){this.G=this.G&-256|ph.call(this,this.G&255,this.xa());this.A--},
|
||||
function(){this.G=this.G&~this.R|qh.call(this,this.G&this.R,this.Ma());this.A--},function(){pd(this,this.ta.Z,this.ba,2);this.A-=this.B.Ie},function(){this.U=this.ga;kd(this,D(this));this.A-=this.B.zc;this.U=-1},function(){this.$a.call(this,gi)},function(){this.fa.call(this,hi)},function(){this.Oa.call(this,gi)},function(){this.W.call(this,hi)},function(){this.G=this.G&-256|gi.call(this,this.G&255,this.xa());this.A--},function(){this.G=this.G&~this.R|hi.call(this,this.G&this.R,this.Ma());this.A--},
|
||||
function(){pd(this,this.vb.Z,this.ba,2);this.A-=this.B.Ie},function(){this.U=this.ga;vd(this,D(this));this.A-=this.B.zc;this.U=-1},function(){this.$a.call(this,th)},function(){this.fa.call(this,uh)},function(){this.Oa.call(this,th)},function(){this.W.call(this,uh)},function(){this.G=this.G&-256|th.call(this,this.G&255,this.xa());this.A--},function(){this.G=this.G&~this.R|uh.call(this,this.G&this.R,this.Ma());this.A--},function(){this.S|=20;this.ka=this.Ka=this.Xa;this.A-=this.B.od},function(){var a=
|
||||
this.G&255,b=rf(this),c=pf(this);if(9<(a&15)||b)a+=6,b=16;if(159<a||c)a+=96,c=1;a&=255;this.G=this.G&-256|a;vf(this,a,128);c?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.$a.call(this,bj)},function(){this.fa.call(this,cj)},function(){this.Oa.call(this,bj)},function(){this.W.call(this,cj)},function(){this.G=this.G&-256|bj.call(this,this.G&255,this.xa());this.A--},function(){this.G=this.G&~this.R|cj.call(this,this.G&this.R,this.Ma());this.A--},function(){this.S|=20;this.ka=
|
||||
this.Ka=this.va;this.A-=this.B.od},function(){var a=this.G&255,b=rf(this),c=pf(this);if(9<(a&15)||b)a-=6,b=16;if(159<a||c)a-=96,c=1;a&=255;this.G=this.G&-256|a;vf(this,a,128);c?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.$a.call(this,jj)},function(){this.fa.call(this,kj)},function(){this.Oa.call(this,jj)},function(){this.W.call(this,kj)},function(){this.G=this.G&-256|jj.call(this,this.G&255,this.xa());this.A--},function(){this.G=this.G&~this.R|kj.call(this,this.G&this.R,
|
||||
this.Ma());this.A--},function(){this.S|=20;this.ka=this.Ka=this.ta;this.A-=this.B.od},function(){var a,b,c=this.G&255,d=this.G>>8&255;9<(c&15)||rf(this)?(c+=6,80286<=this.ia&&255<c&&d++,d++,a=b=1):a=b=0;this.G=this.G&-65536|(d<<8|c)&65295;a?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.$a.call(this,Hh)},function(){this.fa.call(this,Ih)},function(){this.Oa.call(this,Hh)},function(){this.W.call(this,Ih)},function(){Hh.call(this,this.G&255,this.xa());this.A--},function(){Ih.call(this,
|
||||
this.G&this.R,this.Ma());this.A--},function(){this.S|=20;this.ka=this.Ka=this.vb;this.A-=this.B.od},function(){var a,b,c=this.G&255,d=this.G>>8&255;9<(c&15)||rf(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.G=this.G&-65536|d<<8|c;a?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.G=oj.call(this,this.G)},function(){this.I=oj.call(this,this.I)},function(){this.M=oj.call(this,this.M)},function(){this.H=oj.call(this,this.H)},function(){G(this,oj.call(this,I(this)))},function(){this.P=
|
||||
oj.call(this,this.P)},function(){this.K=oj.call(this,this.K)},function(){this.J=oj.call(this,this.J)},function(){this.G=mj.call(this,this.G)},function(){this.I=mj.call(this,this.I)},function(){this.M=mj.call(this,this.M)},function(){this.H=mj.call(this,this.H)},function(){G(this,mj.call(this,I(this)))},function(){this.P=mj.call(this,this.P)},function(){this.K=mj.call(this,this.K)},function(){this.J=mj.call(this,this.J)},function(){J(this,this.G&this.R);this.A-=this.B.Sc},function(){J(this,this.I&
|
||||
this.R);this.A-=this.B.Sc},function(){J(this,this.M&this.R);this.A-=this.B.Sc},function(){J(this,this.H&this.R);this.A-=this.B.Sc},function(){J(this,I(this)-2&65535);this.A-=this.B.Sc},function(){J(this,this.P&this.R);this.A-=this.B.Sc},function(){J(this,this.K&this.R);this.A-=this.B.Sc},function(){J(this,this.J&this.R);this.A-=this.B.Sc},function(){this.G=this.G&~this.R|D(this);this.A-=this.B.zc},function(){this.I=this.I&~this.R|D(this);this.A-=this.B.zc},function(){this.M=this.M&~this.R|D(this);
|
||||
this.A-=this.B.zc},function(){this.H=this.H&~this.R|D(this);this.A-=this.B.zc},function(){G(this,I(this)&~this.R|D(this));this.A-=this.B.zc},function(){this.P=this.P&~this.R|D(this);this.A-=this.B.zc},function(){this.K=this.K&~this.R|D(this);this.A-=this.B.zc},function(){this.J=this.J&~this.R|D(this);this.A-=this.B.zc},Cj,Dj,Ej,Fj,Gj,Hj,Ij,Jj,Kj,Lj,Mj,Nj,Oj,Pj,Qj,Rj,Cj,Dj,Ej,Fj,Gj,Hj,Ij,Jj,Kj,Lj,Mj,Nj,Oj,Pj,Qj,Rj,Sj,function(){this.ya.call(this,hk,this.Ma);this.A-=-1===this.C?1:this.B.Dg},Sj,function(){this.ya.call(this,
|
||||
hk,this.T);this.A-=-1===this.C?1:this.B.Dg},function(){this.$a.call(this,dj)},function(){this.fa.call(this,ej)},function(){this.Oa.call(this,hj)},function(){this.W.call(this,ij)},Uj,Vj,Wj,Xj,function(){this.S|=1;this.fa.call(this,di)},function(){this.S|=1;this.ka=this.Ka=this.qf;this.W.call(this,Uh)},function(){var a;this.W.call(this,ci);switch(this.L>>3&7){case 0:a=this.G;this.G=this.aa;wd(this,a);break;case 1:a=this.I;this.I=this.aa;kf(this,a);break;case 2:a=this.M;this.M=this.aa;kd(this,a);break;
|
||||
case 3:a=this.H;this.H=this.aa;vd(this,a);break;case 4:a=I(this);G(this,this.aa);80386<=this.ia?this.Ob.load(a):wd(this,a);break;case 5:a=this.P;this.P=this.aa;80386<=this.ia?this.Pb.load(a):kf(this,a);break;case 6:a=this.K;this.K=this.aa;kd(this,a);break;case 7:a=this.J,this.J=this.aa,vd(this,a)}},function(){this.S|=1;this.U=this.ga;this.aa=D(this);this.ya.call(this,ik,vj);this.U=-1},function(){this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.I&this.R;this.I=this.I&~this.R|a&this.R;
|
||||
this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.M&this.R;this.M=this.M&~this.R|a&this.R;this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.H&this.R;this.H=this.H&~this.R|a&this.R;this.A-=3},function(){var a=this.G,b=I(this);this.G=this.G&~this.R|b&this.R;G(this,b&~this.R|a&this.R);this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.P&this.R;this.P=this.P&~this.R|a&this.R;this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.K&this.R;this.K=this.K&~this.R|
|
||||
a&this.R;this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.J&this.R;this.J=this.J&~this.R|a&this.R;this.A-=3},function(){this.G=2==this.ba?this.G&-65536|this.G<<24>>24&65535:this.G<<16>>16;this.A-=2},function(){this.M=2==this.ba?this.M&-65536|(this.G&32768?65535:0):this.G&-2147483648?-1:0;this.A-=this.B.dj},function(){wj.call(this,this.Ma(),Rf(this));this.A-=this.B.gj},function(){this.A-=3},function(){var a=xd(this);a&131072&&3>this.Pa?C.call(this,13,0):(J(this,a&-196609),this.A-=this.B.Sc)},
|
||||
function(){if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{var a=D(this),a=a&65535|this.ca&-65536;yd(this,a);this.A-=this.B.zc}},function(){var a=this.G>>8&255;a&1?wf(this):xf(this);a&4?(this.resultType&=-3,this.ca|=4):(this.resultType&=-3,this.ca&=-5);a&16?Ef(this):Cf(this);a&64?Ff(this):Df(this);a&128?(this.resultType&=-17,this.ca|=128):(this.resultType&=-17,this.ca&=-129);this.A-=this.B.gc},function(){this.G=this.G&-65281|(xd(this)&213)<<8;this.A-=this.B.gc},function(){var a=this.G&-256,b;
|
||||
b=T(this);b=this.Qa(this.ka.nc(b,1));this.G=a|b;this.A-=this.B.Jh},function(){this.G=this.G&~this.R|od(this,this.ka,T(this));this.A-=this.B.Jh},function(){var a=T(this),b=this.G;this.qc(this.ka.oc(a,1),b);this.A-=this.B.Kh},function(){var a=T(this),b=this.G;this.rc(this.ka.oc(a,this.ba),b);this.A-=this.B.Kh},function(){var a=1,b=0,c=this.Ba,d=this.B.Lh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Nh,this.Ha&256||(this.A-=this.B.Mh));if(a--){var e=this.Qa(this.ka.nc(this.K&c,1));this.qc(this.Xa.oc(this.J&
|
||||
c,1),e);e=this.ca&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Lh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Nh,this.Ha&256||(this.A-=this.B.Mh));if(a--){var e=od(this,this.ka,this.K&c);this.rc(this.Xa.oc(this.J&c,this.ba),e);e=this.ca&1024?-this.ba:this.ba;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(nf(this),this.S|=256)}},
|
||||
function(){var a=1,b=0,c=this.Ba,d=this.B.wh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.yh,this.Ha&256||(this.A-=this.B.xh));if(a--){var e=Jf(this,this.ka,this.K),f=Jf(this,this.Xa,this.J);this.C=this.D;Hh.call(this,e,f);e=this.ca&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.wh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.yh,this.Ha&256||(this.A-=this.B.xh));
|
||||
if(a--){var e=Lf(this,this.ka,this.K&c),f=Lf(this,this.Xa,this.J&c);this.C=this.D;Ih.call(this,e,f);e=this.ca&1024?-this.ba:this.ba;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),this.S|=256)}},function(){vf(this,this.G&this.xa(),128);this.A-=this.B.He},function(){vf(this,this.G&this.Ma(),this.Ia);this.A-=this.B.He},function(){var a=1,b=0,c=this.Ba,d=this.B.Wh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Yh,this.Ha&
|
||||
256||(this.A-=this.B.Xh));if(a--){var e=this.G;this.qc(this.Xa.oc(this.J&c,1),e);this.I=this.I&~c|this.I-b&c;80546<=this.Uc&&80564>=this.Uc&&!(this.Ha&2048)!=(103!=this.Qa(this.Ga))&&(c^=-65536);this.J=this.J&~c|this.J+(this.ca&1024?-1:1)&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Wh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Yh,this.Ha&256||(this.A-=this.B.Xh));if(a--){var e=this.G;this.rc(this.Xa.oc(this.J&c,this.ba),e);this.J=this.J&~c|this.J+(this.ca&1024?-this.ba:
|
||||
this.ba)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Dh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Fh,this.Ha&256||(this.A-=this.B.Eh));if(a--){var e=this.Qa(this.ka.nc(this.K&c,1));this.G=this.G&-256|e;this.K=this.K&~c|this.K+(this.ca&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Dh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Fh,this.Ha&256||(this.A-=this.B.Eh));if(a--){var e=
|
||||
od(this,this.ka,this.K&c);this.G=this.G&~this.R|e;this.K=this.K&~c|this.K+(this.ca&1024?-this.ba:this.ba)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Qh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Sh,this.Ha&256||(this.A-=this.B.Rh));if(a--){var e=this.G&255,f=Jf(this,this.Xa,this.J);this.C=this.D;Hh.call(this,e,f);this.J=this.J&~c|this.J+(this.ca&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),
|
||||
this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Qh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Sh,this.Ha&256||(this.A-=this.B.Rh));if(a--){var e=this.G&this.R,f=Lf(this,this.Xa,this.J&c);this.C=this.D;Ih.call(this,e,f);this.J=this.J&~c|this.J+(this.ca&1024?-this.ba:this.ba)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),this.S|=256)}},function(){this.G=this.G&-256|this.xa();this.A-=this.B.gc},function(){this.I=this.I&-256|this.xa();this.A-=this.B.gc},function(){this.M=
|
||||
this.M&-256|this.xa();this.A-=this.B.gc},function(){this.H=this.H&-256|this.xa();this.A-=this.B.gc},function(){this.G=this.G&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.I=this.I&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.M=this.M&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.H=this.H&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.G=this.G&~this.R|this.Ma();this.A-=this.B.gc},function(){this.I=this.I&~this.R|this.Ma();this.A-=this.B.gc},function(){this.M=this.M&
|
||||
~this.R|this.Ma();this.A-=this.B.gc},function(){this.H=this.H&~this.R|this.Ma();this.A-=this.B.gc},function(){G(this,I(this)&~this.R|this.Ma());this.A-=this.B.gc},function(){this.P=this.P&~this.R|this.Ma();this.A-=this.B.gc},function(){this.K=this.K&~this.R|this.Ma();this.A-=this.B.gc},function(){this.J=this.J&~this.R|this.Ma();this.A-=this.B.gc},bk,ck,bk,ck,function(){this.W.call(this,Vh)},function(){this.W.call(this,Th)},function(){this.S|=1;this.Jb.call(this,jk,this.xa)},function(){this.S|=1;this.ya.call(this,
|
||||
jk,this.Ma)},dk,ek,dk,ek,function(){if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{var a=this.B.xj;this.rb=-1;xj.call(this,3,null,a)}},function(){var a=this.xa();if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{var b;a:{b=this.Id[a];if(void 0!==b)for(var c=0;c<b.length;c++)if(!b[c](this.Ga)){b=!1;break a}this.la.Mi&&A(this,16)&&kk(this.ha,a,this.Ga);b=!0}b?(this.rb=-1,xj.call(this,a,null,0)):this.A--}},function(){if(uf(this))if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{var a=this.B.yj;
|
||||
this.rb=-1;xj.call(this,4,null,a)}else this.A-=this.B.zj},function(){if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{this.sb=this.ta.Z;this.U=this.ga;this.A-=this.B.vj;if(this.Za&1&&this.ca&16384){var a=this.na(this.Sa.Aa+0);ld(this.va,a,!1)}else{var a=this.pa,b=D(this),c=D(this),d=D(this);if(this.ca&131072)d=d&131071|this.ca&-131072;else if(d&131072){var e=D(this),f=D(this),g=D(this),h=D(this),k=D(this),l=D(this);md(this,!0,!0);kd(this,f);G(this,e);wd(this,g);vd(this,h);this.Ob.load(k);this.Pb.load(l)}null!=
|
||||
zd(this,b,c,!1)&&(yd(this,d,a),this.ne&&ef(this,this.Ga))}this.sb=this.U=-1}},function(){this.Jb.call(this,Yj,rj)},function(){this.ya.call(this,2==this.ba?Zj:ak,rj)},function(){this.Jb.call(this,Yj,sj)},function(){this.ya.call(this,2==this.ba?Zj:ak,sj)},function(){var a=this.xa();if(a){var b=this.G&255;this.G=this.G&-65536|b/a<<8|b%a;vf(this,this.G,128);this.A-=this.B.aj}else Aj.call(this)},function(){var a=this.G&255,b=(this.G>>8&255)*this.xa()|0,c=a+b|0;this.G=this.G&-65536|c&255;of(this,a,b,c,
|
||||
191);this.A-=this.B.$i},function(){this.G=this.G&-256|(pf(this)?255:0);this.A-=2},function(){this.G=this.G&-256|Jf(this,this.ka,this.H+(this.G&255));this.A-=this.B.Zj},function(){fk.call(this,216)},function(){fk.call(this,217)},function(){fk.call(this,218)},function(){fk.call(this,219)},function(){fk.call(this,220)},function(){fk.call(this,221)},function(){fk.call(this,222)},function(){fk.call(this,223)},function(){var a=this.T(),b=this.I-1&this.Ba;this.I=this.I&~this.Ba|b;b&&!sf(this)?(O(this,K(this)+
|
||||
a),this.A-=this.B.Gj):this.A-=this.B.Gh},function(){var a=this.T(),b=this.I-1&this.Ba;this.I=this.I&~this.Ba|b;b&&sf(this)?(O(this,K(this)+a),this.A-=this.B.Hh):this.A-=this.B.Ih},function(){var a=this.T(),b=this.I-1&this.Ba;this.I=this.I&~this.Ba|b;b?(O(this,K(this)+a),this.A-=this.B.Fj):this.A-=this.B.Gh},function(){var a=this.T();this.I&this.Ba?this.A-=this.B.Ih:(O(this,K(this)+a),this.A-=this.B.Hh)},function(){var a=this.xa();Hf(this,a,1,!0)&&(this.G=this.G&-256|ic(this.ea,a,1,this.Ga-2)&255,
|
||||
this.A-=this.B.Bh)},function(){var a=this.xa();Hf(this,a,this.ba,!0)&&(this.G=this.G&~this.R|ic(this.ea,a,this.ba,this.Ga-2)&this.R,this.A-=this.B.Bh)},function(){var a=this.xa();Hf(this,a,1,!1)&&(mc(this.ea,a,1,this.G&255,this.Ga-2),this.A-=this.B.Ph)},function(){var a=this.xa();Hf(this,a,this.ba,!1)&&(mc(this.ea,a,this.ba,this.G&this.R,this.Ga-2),this.A-=this.B.Ph)},function(){var a=this.Ma(),b=K(this),a=b+a;J(this,b);O(this,a);this.A-=this.B.ej},function(){var a=this.Ma();O(this,K(this)+a);this.A-=
|
||||
this.B.Ch},function(){zd(this,this.Ma(),Rf(this));this.A-=this.B.Bj},function(){var a=this.T();O(this,K(this)+a);this.A-=this.B.Ch},function(){var a=this.M&65535;Hf(this,a,1,!0)&&(this.G=this.G&-256|ic(this.ea,a,1,this.Ga-1)&255,this.A-=this.B.Ah)},function(){var a=this.M&65535;Hf(this,a,this.ba,!0)&&(this.G=this.G&~this.R|ic(this.ea,a,this.ba,this.Ga-1)&this.R,this.A-=this.B.Ah)},function(){var a=this.M&65535;Hf(this,a,1,!1)&&(mc(this.ea,a,1,this.G&255,this.Ga-1),this.A-=this.B.Oh)},function(){var a=
|
||||
this.M&65535;Hf(this,a,2,!1)&&(mc(this.ea,a,this.ba,this.G&this.R,this.Ga-1),this.A-=this.B.Oh)},gk,gk,function(){this.S|=132;this.A-=this.B.od},function(){this.S|=68;this.A-=this.B.od},function(){this.ca&131072?C.call(this,13,0):(this.ua|=4,this.A-=2,this.ha&&A(this,-2147483648)?(nf(this),this.ha.Wb()):this.ca&512||(this.ha&&nf(this),this.Wb()))},function(){pf(this)?xf(this):wf(this);this.A-=2},function(){this.cb=!1;this.Jb.call(this,lk,uj);this.cb&&(this.G=this.G&~this.R|this.ja&this.R)},function(){this.cb=
|
||||
!1;this.ya.call(this,mk,uj);this.cb&&(this.G=this.G&~this.R|this.ja&this.R,this.M=this.M&~this.R|this.wa&this.R)},function(){xf(this);this.A-=2},function(){wf(this);this.A-=2},function(){this.pa>this.Pa?C.call(this,13,0):(this.ca&=-513,this.A-=this.B.cj)},function(){this.pa>this.Pa?C.call(this,13,0):(this.ca|=512,this.S|=4,this.A-=2)},function(){this.ca&=-1025;this.A-=2},function(){this.ca|=1024;this.A-=2},function(){this.Jb.call(this,Dd,uj)},function(){this.ya.call(this,Ed,uj)}],Tj=[rh,ei,ph,gi,
|
||||
th,bj,jj,Hh],hk=[sh,fi,qh,hi,uh,cj,kj,Ih],ik=[function(a,b){this.A-=-1===this.C?this.B.zc:this.B.Rj;return b},Kh,Kh,Kh,Kh,Kh,Kh,Kh],jk=[function(a,b){this.A-=-1===this.C?this.B.Jj:this.B.Hj;return b},Lh,Lh,Lh,Lh,Lh,Lh,Lh],Yj=[function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=7)?(e=a<<d-1,c=(a<<d|a>>8-d)&255):e=a<<7;Af(this,c,e,128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=7)?(e=a<<8-d,c=(a>>>d|e)&255):e=a;Af(this,c,e,128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=
|
||||
Bf(this);(d%=9)?(c=(a<<d|e<<d-1|a>>9-d)&255,e=a<<d-1):e<<=7;Af(this,c,e,128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=Bf(this);(d%=9)?(c=(a>>d|e<<8-d|a<<9-d)&255,e=a<<8-d):e<<=7;Af(this,c,e,128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=0;8<d?c=0:(e=a<<d-1,c=e<<1&255);vf(this,c,128,e&128,(c^e)&128)}return c},function(a,b){var c=b&this.ra;c&&(c=8<c?0:a>>>c-1,a=c>>>1&255,vf(this,a,128,c&1,a&128));return a},Lh,function(a,b){var c=b&this.ra;c&&(9<c&&(c=9),c=a<<24>>24>>c-1,
|
||||
a=c>>1&255,vf(this,a,128,c&1));return a}],Zj=[function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=15)?(e=a<<d-1,c=(a<<d|a>>16-d)&65535):e=a<<15;Af(this,c,e,32768)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=15)?(e=a<<16-d,c=(a>>>d|e)&65535):e=a;Af(this,c,e,32768)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=Bf(this);(d%=17)?(c=(a<<d|e<<d-1|a>>17-d)&65535,e=a<<d-1):e<<=15;Af(this,c,e,32768)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=Bf(this);(d%=17)?(c=(a>>d|e<<
|
||||
16-d|a<<17-d)&65535,e=a<<16-d):e<<=15;Af(this,c,e,32768)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=0;16<d?c=0:(e=a<<d-1,c=e<<1&65535);vf(this,c,32768,e&32768,(c^e)&32768)}return c},function(a,b){var c=b&this.ra;c&&(c=16<c?0:a>>>c-1,a=c>>>1&65535,vf(this,a,32768,c&1,a&32768));return a},Lh,function(a,b){var c=b&this.ra;c&&(17<c&&(c=17),c=a<<16>>16>>c-1,a=c>>1&65535,vf(this,a,32768,c&1));return a}],ak=[function(a,b){var c=a,d=b&this.ra;d&&(c=a<<d|a>>>32-d,Af(this,c,a<<d-1,-2147483648));
|
||||
return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=a<<32-d,c=a>>>d|e;Af(this,c,e,-2147483648)}return c},function(a,b){var c=a,d=b&this.ra;d&&(c=Bf(this),c=a<<d|c<<d-1|a>>>32-d>>>1,Af(this,c,a<<d-1,-2147483648));return c},function(a,b){var c=a,d=b&this.ra;d&&(c=Bf(this),c=a>>>d|c<<32-d|a<<32-d<<1,Af(this,c,a<<32-d,-2147483648));return c},function(a,b){var c=a,d=b&this.ra;d&&(d=a<<d-1,c=d<<1,vf(this,c,-2147483648,d&-2147483648,(c^d)&-2147483648));return c},function(a,b){var c=b&this.ra;c&&(c=a>>>
|
||||
c-1,a=c>>>1,vf(this,a,-2147483648,c&1,a&-2147483648));return a},Lh,function(a,b){var c=b&this.ra;c&&(c=a>>c-1,a=c>>1,vf(this,a,-2147483648,c&1));return a}],lk=[function(a,b){b=this.xa();vf(this,a&b,128);this.A-=-1===this.D?this.B.$h:this.B.Zh;this.S|=2;return a},Lh,function(a){this.A-=-1===this.D?this.B.Sf:this.B.Rf;return a^255},function(a){var b=-a|0;of(this,0,a,b,191,!0);this.A-=-1===this.D?this.B.Sf:this.B.Rf;return b&255},function(a){this.ja=(this.G&255)*a&65535;this.ja&65280?(wf(this),yf(this)):
|
||||
(xf(this),zf(this));this.cb=!0;this.A-=-1===this.D?this.B.Nj:this.B.Mj;this.S|=2;return a},function(a){var b=(this.G<<24>>24)*(a<<24>>24)|0;this.ja=b&65535;127<b||-128>b?(wf(this),yf(this)):(xf(this),zf(this));this.cb=!0;this.A-=-1===this.D?this.B.sj:this.B.rj;this.S|=2;return a},function(a,b){if(!a)return Aj.call(this),a;var c=(b=this.G&65535)/a;if(255<c)return Aj.call(this),a;this.ja=c&255|(b%a&255)<<8;this.cb=!0;this.A-=-1===this.D?this.B.kj:this.B.jj;this.S|=2;return a},function(a,b){if(!a)return Aj.call(this),
|
||||
a;var c=a<<24>>24,d=(b=this.G<<16>>16)/c|0;if(d!=d<<24>>24||8086==this.ia&&-128==d)return Aj.call(this),a;this.ja=d&255|(b%c&255)<<8;this.cb=!0;this.A-=-1===this.D?this.B.oj:this.B.nj;this.S|=2;return a}],mk=[function(a,b){b=this.Ma();vf(this,a&b,this.Ia);this.A-=-1===this.D?this.B.$h:this.B.Zh;this.S|=2;return a},Lh,function(a){this.A-=-1===this.D?this.B.Sf:this.B.Rf;return a^this.R},function(a){var b=-a|0;of(this,0,a,b,this.Ia|63,!0);this.A-=-1===this.D?this.B.Sf:this.B.Rf;return b&this.R},function(a,
|
||||
b){if(2==this.ba){b=this.G&65535;var c=b*a|0;this.ja=c&65535;this.wa=c>>16&65535}else Rh.call(this,a,this.G),80563==this.Uc&&68657152==this.G&&129==a&&(this.wa=0);this.wa?(wf(this),yf(this)):(xf(this),zf(this));this.cb=!0;this.A-=-1===this.D?this.B.Pj:this.B.Oj;this.S|=2;return a},function(a,b){var c;2==this.ba?(b=this.G&65535,c=(b<<16>>16)*(a<<16>>16)|0,this.ja=c&65535,this.wa=c>>16&65535,c=32767<c||-32768>c):(Qh.call(this,a,this.G),c=this.wa!=this.ja>>31);c?(wf(this),yf(this)):(xf(this),zf(this));
|
||||
this.cb=!0;this.A-=-1===this.D?this.B.uj:this.B.tj;this.S|=2;return a},function(a,b){if(2==this.ba){if(!a)return Aj.call(this),a;b=65536*(this.M&65535)+(this.G&65535);var c=b/a;if(65536<=c)return Aj.call(this),a;this.ja=c&65535;this.wa=b%a&65535}else{if(!nj.call(this,this.G,this.M,a))return Aj.call(this),a;this.ja|=0;this.wa|=0}this.cb=!0;this.A-=-1===this.D?this.B.mj:this.B.lj;this.S|=2;return a},function(a,b){if(2==this.ba){if(!a)return Aj.call(this),a;var c=a<<16>>16,d=(b=this.M<<16|this.G&65535)/
|
||||
c|0;if(d!=d<<16>>16||8086==this.ia&&-32768==d)return Aj.call(this),a;this.ja=d&65535;this.wa=b%c&65535}else{var c=this.G,d=this.M,e=a,f=0,g=0;0>e&&(e=-e|0,f=1-f);0>d&&(c=-c|0,d=~d+(c?0:1)|0,g=1,f=1-f);!nj.call(this,c,d,e)||this.ja>2147483647+f||this.wa>2147483647+g?c=!1:(f&&(this.ja=-this.ja),g&&(this.wa=-this.wa),c=!0);if(!c)return Aj.call(this),a;this.ja|=0;this.wa|=0}this.cb=!0;this.A-=-1===this.D?this.B.qj:this.B.pj;this.S|=2;return a}],Dd=[function(a){var b=a+1|0;of(this,a,1,b,190);this.A-=-1===
|
||||
this.D?this.B.Qf:this.B.Pf;return b&255},function(a){var b=a-1|0;of(this,a,1,b,190,!0);this.A-=-1===this.D?this.B.Qf:this.B.Pf;return b&255},Lh,Lh,Lh,Lh,Lh,Lh],Ed=[function(a){var b=a+1|0;of(this,a,1,b,this.Ia|62);this.A-=-1===this.D?this.B.Qf:this.B.Pf;return b&this.R},function(a){var b=a-1|0;of(this,a,1,b,this.Ia|62,!0);this.A-=-1===this.D?this.B.Qf:this.B.Pf;return b&this.R},function(a){J(this,K(this));O(this,a);this.A-=-1===this.D?this.B.ij:this.B.hj;this.S|=2;return a},function(a){if(-1===this.D)return Lh.call(this,
|
||||
a);this.U=this.ga;wj.call(this,a,this.na(this.D+this.ba));this.A-=this.B.fj;this.S|=2;this.U=-1;return a},function(a){O(this,a);this.A-=-1===this.D?this.B.Dj:this.B.Cj;this.S|=2;return a},function(a){if(-1===this.D)return Lh.call(this,a);zd(this,a,this.na(this.D+this.ba));this.A-=this.B.Aj;this.S|=2;return a},function(a){var b=a;this.S&512&&(a=a-2&65535,80286>this.ia&&(b=a));J(this,b);this.A-=-1===this.D?this.B.Sc:this.B.Tj;this.S|=2;return a},Lh];
|
||||
function oe(){this.W.call(this,gj);this.A-=-1===this.D?6:13}function pe(){this.fa.call(this,fj);this.A-=-1===this.D?12:19}var ge=Array(256);ge[0]=function(){16>(this.Qa(this.Ga)&56)&&(this.S|=1);this.ya.call(this,this.hg,uj)};ge[1]=function(){this.Qa(this.Ga)&16||(this.S|=1);this.ya.call(this,nk,uj)};ge[2]=function(){!(this.Za&1)||this.ca&131072?C.call(this,6):this.W.call(this,Sh)};ge[3]=function(){!(this.Za&1)||this.ca&131072?C.call(this,6):this.W.call(this,Yh)};
|
||||
this.G&255,b=rf(this),c=pf(this);9<(a&15)||b?(a+=6,b=16):b=0;159<a||c?(a+=96,c=1):c=0;a&=255;this.G=this.G&-256|a;vf(this,a,128);c?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.$a.call(this,bj)},function(){this.fa.call(this,cj)},function(){this.Oa.call(this,bj)},function(){this.W.call(this,cj)},function(){this.G=this.G&-256|bj.call(this,this.G&255,this.xa());this.A--},function(){this.G=this.G&~this.R|cj.call(this,this.G&this.R,this.Ma());this.A--},function(){this.S|=20;
|
||||
this.ka=this.Ka=this.va;this.A-=this.B.od},function(){var a=this.G&255,b=rf(this),c=pf(this);9<(a&15)||b?(a-=6,b=16):b=0;159<a||c?(a-=96,c=1):c=0;a&=255;this.G=this.G&-256|a;vf(this,a,128);c?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.$a.call(this,jj)},function(){this.fa.call(this,kj)},function(){this.Oa.call(this,jj)},function(){this.W.call(this,kj)},function(){this.G=this.G&-256|jj.call(this,this.G&255,this.xa());this.A--},function(){this.G=this.G&~this.R|kj.call(this,
|
||||
this.G&this.R,this.Ma());this.A--},function(){this.S|=20;this.ka=this.Ka=this.ta;this.A-=this.B.od},function(){var a,b,c=this.G&255,d=this.G>>8&255;9<(c&15)||rf(this)?(c+=6,80286<=this.ia&&255<c&&d++,d++,a=b=1):a=b=0;this.G=this.G&-65536|(d<<8|c)&65295;a?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.$a.call(this,Hh)},function(){this.fa.call(this,Ih)},function(){this.Oa.call(this,Hh)},function(){this.W.call(this,Ih)},function(){Hh.call(this,this.G&255,this.xa());this.A--},
|
||||
function(){Ih.call(this,this.G&this.R,this.Ma());this.A--},function(){this.S|=20;this.ka=this.Ka=this.vb;this.A-=this.B.od},function(){var a,b,c=this.G&255,d=this.G>>8&255;9<(c&15)||rf(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.G=this.G&-65536|d<<8|c;a?wf(this):xf(this);b?Ef(this):Cf(this);this.A-=this.B.He},function(){this.G=oj.call(this,this.G)},function(){this.I=oj.call(this,this.I)},function(){this.M=oj.call(this,this.M)},function(){this.H=oj.call(this,this.H)},function(){G(this,oj.call(this,
|
||||
I(this)))},function(){this.P=oj.call(this,this.P)},function(){this.K=oj.call(this,this.K)},function(){this.J=oj.call(this,this.J)},function(){this.G=mj.call(this,this.G)},function(){this.I=mj.call(this,this.I)},function(){this.M=mj.call(this,this.M)},function(){this.H=mj.call(this,this.H)},function(){G(this,mj.call(this,I(this)))},function(){this.P=mj.call(this,this.P)},function(){this.K=mj.call(this,this.K)},function(){this.J=mj.call(this,this.J)},function(){J(this,this.G&this.R);this.A-=this.B.Sc},
|
||||
function(){J(this,this.I&this.R);this.A-=this.B.Sc},function(){J(this,this.M&this.R);this.A-=this.B.Sc},function(){J(this,this.H&this.R);this.A-=this.B.Sc},function(){J(this,I(this)-2&65535);this.A-=this.B.Sc},function(){J(this,this.P&this.R);this.A-=this.B.Sc},function(){J(this,this.K&this.R);this.A-=this.B.Sc},function(){J(this,this.J&this.R);this.A-=this.B.Sc},function(){this.G=this.G&~this.R|D(this);this.A-=this.B.zc},function(){this.I=this.I&~this.R|D(this);this.A-=this.B.zc},function(){this.M=
|
||||
this.M&~this.R|D(this);this.A-=this.B.zc},function(){this.H=this.H&~this.R|D(this);this.A-=this.B.zc},function(){G(this,I(this)&~this.R|D(this));this.A-=this.B.zc},function(){this.P=this.P&~this.R|D(this);this.A-=this.B.zc},function(){this.K=this.K&~this.R|D(this);this.A-=this.B.zc},function(){this.J=this.J&~this.R|D(this);this.A-=this.B.zc},Cj,Dj,Ej,Fj,Gj,Hj,Ij,Jj,Kj,Lj,Mj,Nj,Oj,Pj,Qj,Rj,Cj,Dj,Ej,Fj,Gj,Hj,Ij,Jj,Kj,Lj,Mj,Nj,Oj,Pj,Qj,Rj,Sj,function(){this.ya.call(this,hk,this.Ma);this.A-=-1===this.C?
|
||||
1:this.B.Dg},Sj,function(){this.ya.call(this,hk,this.T);this.A-=-1===this.C?1:this.B.Dg},function(){this.$a.call(this,dj)},function(){this.fa.call(this,ej)},function(){this.Oa.call(this,hj)},function(){this.W.call(this,ij)},Uj,Vj,Wj,Xj,function(){this.S|=1;this.fa.call(this,di)},function(){this.S|=1;this.ka=this.Ka=this.qf;this.W.call(this,Uh)},function(){var a;this.W.call(this,ci);switch(this.L>>3&7){case 0:a=this.G;this.G=this.aa;wd(this,a);break;case 1:a=this.I;this.I=this.aa;kf(this,a);break;
|
||||
case 2:a=this.M;this.M=this.aa;kd(this,a);break;case 3:a=this.H;this.H=this.aa;vd(this,a);break;case 4:a=I(this);G(this,this.aa);80386<=this.ia?this.Ob.load(a):wd(this,a);break;case 5:a=this.P;this.P=this.aa;80386<=this.ia?this.Pb.load(a):kf(this,a);break;case 6:a=this.K;this.K=this.aa;kd(this,a);break;case 7:a=this.J,this.J=this.aa,vd(this,a)}},function(){this.S|=1;this.U=this.ga;this.aa=D(this);this.ya.call(this,ik,vj);this.U=-1},function(){this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|
|
||||
this.I&this.R;this.I=this.I&~this.R|a&this.R;this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.M&this.R;this.M=this.M&~this.R|a&this.R;this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.H&this.R;this.H=this.H&~this.R|a&this.R;this.A-=3},function(){var a=this.G,b=I(this);this.G=this.G&~this.R|b&this.R;G(this,b&~this.R|a&this.R);this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.P&this.R;this.P=this.P&~this.R|a&this.R;this.A-=3},function(){var a=this.G;this.G=this.G&
|
||||
~this.R|this.K&this.R;this.K=this.K&~this.R|a&this.R;this.A-=3},function(){var a=this.G;this.G=this.G&~this.R|this.J&this.R;this.J=this.J&~this.R|a&this.R;this.A-=3},function(){this.G=2==this.ba?this.G&-65536|this.G<<24>>24&65535:this.G<<16>>16;this.A-=2},function(){this.M=2==this.ba?this.M&-65536|(this.G&32768?65535:0):this.G&-2147483648?-1:0;this.A-=this.B.dj},function(){wj.call(this,this.Ma(),Rf(this));this.A-=this.B.gj},function(){this.A-=3},function(){var a=xd(this);a&131072&&3>this.Pa?C.call(this,
|
||||
13,0):(J(this,a&-196609),this.A-=this.B.Sc)},function(){if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{var a=D(this),a=a&65535|this.ca&-65536;yd(this,a);this.A-=this.B.zc}},function(){var a=this.G>>8&255;a&1?wf(this):xf(this);a&4?(this.resultType&=-3,this.ca|=4):(this.resultType&=-3,this.ca&=-5);a&16?Ef(this):Cf(this);a&64?Ff(this):Df(this);a&128?(this.resultType&=-17,this.ca|=128):(this.resultType&=-17,this.ca&=-129);this.A-=this.B.gc},function(){this.G=this.G&-65281|(xd(this)&213)<<8;this.A-=
|
||||
this.B.gc},function(){var a=this.G&-256,b;b=T(this);b=this.Qa(this.ka.nc(b,1));this.G=a|b;this.A-=this.B.Jh},function(){this.G=this.G&~this.R|od(this,this.ka,T(this));this.A-=this.B.Jh},function(){var a=T(this),b=this.G;this.qc(this.ka.oc(a,1),b);this.A-=this.B.Kh},function(){var a=T(this),b=this.G;this.rc(this.ka.oc(a,this.ba),b);this.A-=this.B.Kh},function(){var a=1,b=0,c=this.Ba,d=this.B.Lh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Nh,this.Ha&256||(this.A-=this.B.Mh));if(a--){var e=this.Qa(this.ka.nc(this.K&
|
||||
c,1));this.qc(this.Xa.oc(this.J&c,1),e);e=this.ca&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Lh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Nh,this.Ha&256||(this.A-=this.B.Mh));if(a--){var e=od(this,this.ka,this.K&c);this.rc(this.Xa.oc(this.J&c,this.ba),e);e=this.ca&1024?-this.ba:this.ba;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-
|
||||
b&c;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.wh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.yh,this.Ha&256||(this.A-=this.B.xh));if(a--){var e=Jf(this,this.ka,this.K),f=Jf(this,this.Xa,this.J);this.C=this.D;Hh.call(this,e,f);e=this.ca&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.wh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.yh,
|
||||
this.Ha&256||(this.A-=this.B.xh));if(a--){var e=Lf(this,this.ka,this.K&c),f=Lf(this,this.Xa,this.J&c);this.C=this.D;Ih.call(this,e,f);e=this.ca&1024?-this.ba:this.ba;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),this.S|=256)}},function(){vf(this,this.G&this.xa(),128);this.A-=this.B.He},function(){vf(this,this.G&this.Ma(),this.Ia);this.A-=this.B.He},function(){var a=1,b=0,c=this.Ba,d=this.B.Wh;this.Ha&192&&
|
||||
(a=this.I&c,b=1,d=this.B.Yh,this.Ha&256||(this.A-=this.B.Xh));if(a--){var e=this.G;this.qc(this.Xa.oc(this.J&c,1),e);this.I=this.I&~c|this.I-b&c;80546<=this.Uc&&80564>=this.Uc&&!(this.Ha&2048)!=(103!=this.Qa(this.Ga))&&(c^=-65536);this.J=this.J&~c|this.J+(this.ca&1024?-1:1)&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Wh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Yh,this.Ha&256||(this.A-=this.B.Xh));if(a--){var e=this.G;this.rc(this.Xa.oc(this.J&c,this.ba),e);this.J=
|
||||
this.J&~c|this.J+(this.ca&1024?-this.ba:this.ba)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Dh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Fh,this.Ha&256||(this.A-=this.B.Eh));if(a--){var e=this.Qa(this.ka.nc(this.K&c,1));this.G=this.G&-256|e;this.K=this.K&~c|this.K+(this.ca&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Dh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Fh,
|
||||
this.Ha&256||(this.A-=this.B.Eh));if(a--){var e=od(this,this.ka,this.K&c);this.G=this.G&~this.R|e;this.K=this.K&~c|this.K+(this.ca&1024?-this.ba:this.ba)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Qh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Sh,this.Ha&256||(this.A-=this.B.Rh));if(a--){var e=this.G&255,f=Jf(this,this.Xa,this.J);this.C=this.D;Hh.call(this,e,f);this.J=this.J&~c|this.J+(this.ca&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=
|
||||
d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),this.S|=256)}},function(){var a=1,b=0,c=this.Ba,d=this.B.Qh;this.Ha&192&&(a=this.I&c,b=1,d=this.B.Sh,this.Ha&256||(this.A-=this.B.Rh));if(a--){var e=this.G&this.R,f=Lf(this,this.Xa,this.J&c);this.C=this.D;Ih.call(this,e,f);this.J=this.J&~c|this.J+(this.ca&1024?-this.ba:this.ba)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.B.Vb;a&&sf(this)==(this.Ha&64)&&(nf(this),this.S|=256)}},function(){this.G=this.G&-256|this.xa();this.A-=this.B.gc},function(){this.I=
|
||||
this.I&-256|this.xa();this.A-=this.B.gc},function(){this.M=this.M&-256|this.xa();this.A-=this.B.gc},function(){this.H=this.H&-256|this.xa();this.A-=this.B.gc},function(){this.G=this.G&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.I=this.I&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.M=this.M&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.H=this.H&-65281|this.xa()<<8;this.A-=this.B.gc},function(){this.G=this.G&~this.R|this.Ma();this.A-=this.B.gc},function(){this.I=this.I&
|
||||
~this.R|this.Ma();this.A-=this.B.gc},function(){this.M=this.M&~this.R|this.Ma();this.A-=this.B.gc},function(){this.H=this.H&~this.R|this.Ma();this.A-=this.B.gc},function(){G(this,I(this)&~this.R|this.Ma());this.A-=this.B.gc},function(){this.P=this.P&~this.R|this.Ma();this.A-=this.B.gc},function(){this.K=this.K&~this.R|this.Ma();this.A-=this.B.gc},function(){this.J=this.J&~this.R|this.Ma();this.A-=this.B.gc},bk,ck,bk,ck,function(){this.W.call(this,Vh)},function(){this.W.call(this,Th)},function(){this.S|=
|
||||
1;this.Jb.call(this,jk,this.xa)},function(){this.S|=1;this.ya.call(this,jk,this.Ma)},dk,ek,dk,ek,function(){if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{var a=this.B.xj;this.rb=-1;xj.call(this,3,null,a)}},function(){var a=this.xa();if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{var b;a:{b=this.Id[a];if(void 0!==b)for(var c=0;c<b.length;c++)if(!b[c](this.Ga)){b=!1;break a}this.la.Mi&&A(this,16)&&kk(this.ha,a,this.Ga);b=!0}b?(this.rb=-1,xj.call(this,a,null,0)):this.A--}},function(){if(uf(this))if(this.ca&
|
||||
131072&&3>this.Pa)C.call(this,13,0);else{var a=this.B.yj;this.rb=-1;xj.call(this,4,null,a)}else this.A-=this.B.zj},function(){if(this.ca&131072&&3>this.Pa)C.call(this,13,0);else{this.sb=this.ta.Z;this.U=this.ga;this.A-=this.B.vj;if(this.Za&1&&this.ca&16384){var a=this.na(this.Sa.Aa+0);ld(this.va,a,!1)}else{var a=this.pa,b=D(this),c=D(this),d=D(this);if(this.ca&131072)d=d&131071|this.ca&-131072;else if(d&131072){var e=D(this),f=D(this),g=D(this),h=D(this),k=D(this),l=D(this);md(this,!0,!0);kd(this,
|
||||
f);G(this,e);wd(this,g);vd(this,h);this.Ob.load(k);this.Pb.load(l)}null!=zd(this,b,c,!1)&&(yd(this,d,a),this.ne&&ef(this,this.Ga))}this.sb=this.U=-1}},function(){this.Jb.call(this,Yj,rj)},function(){this.ya.call(this,2==this.ba?Zj:ak,rj)},function(){this.Jb.call(this,Yj,sj)},function(){this.ya.call(this,2==this.ba?Zj:ak,sj)},function(){var a=this.xa();if(a){var b=this.G&255;this.G=this.G&-65536|b/a<<8|b%a;vf(this,this.G,128);this.A-=this.B.aj}else Aj.call(this)},function(){var a=this.G&255,b=(this.G>>
|
||||
8&255)*this.xa()|0,c=a+b|0;this.G=this.G&-65536|c&255;of(this,a,b,c,191);this.A-=this.B.$i},function(){this.G=this.G&-256|(pf(this)?255:0);this.A-=2},function(){this.G=this.G&-256|Jf(this,this.ka,this.H+(this.G&255));this.A-=this.B.Zj},function(){fk.call(this,216)},function(){fk.call(this,217)},function(){fk.call(this,218)},function(){fk.call(this,219)},function(){fk.call(this,220)},function(){fk.call(this,221)},function(){fk.call(this,222)},function(){fk.call(this,223)},function(){var a=this.T(),
|
||||
b=this.I-1&this.Ba;this.I=this.I&~this.Ba|b;b&&!sf(this)?(O(this,K(this)+a),this.A-=this.B.Gj):this.A-=this.B.Gh},function(){var a=this.T(),b=this.I-1&this.Ba;this.I=this.I&~this.Ba|b;b&&sf(this)?(O(this,K(this)+a),this.A-=this.B.Hh):this.A-=this.B.Ih},function(){var a=this.T(),b=this.I-1&this.Ba;this.I=this.I&~this.Ba|b;b?(O(this,K(this)+a),this.A-=this.B.Fj):this.A-=this.B.Gh},function(){var a=this.T();this.I&this.Ba?this.A-=this.B.Ih:(O(this,K(this)+a),this.A-=this.B.Hh)},function(){var a=this.xa();
|
||||
Hf(this,a,1,!0)&&(this.G=this.G&-256|ic(this.ea,a,1,this.Ga-2)&255,this.A-=this.B.Bh)},function(){var a=this.xa();Hf(this,a,this.ba,!0)&&(this.G=this.G&~this.R|ic(this.ea,a,this.ba,this.Ga-2)&this.R,this.A-=this.B.Bh)},function(){var a=this.xa();Hf(this,a,1,!1)&&(mc(this.ea,a,1,this.G&255,this.Ga-2),this.A-=this.B.Ph)},function(){var a=this.xa();Hf(this,a,this.ba,!1)&&(mc(this.ea,a,this.ba,this.G&this.R,this.Ga-2),this.A-=this.B.Ph)},function(){var a=this.Ma(),b=K(this),a=b+a;J(this,b);O(this,a);
|
||||
this.A-=this.B.ej},function(){var a=this.Ma();O(this,K(this)+a);this.A-=this.B.Ch},function(){zd(this,this.Ma(),Rf(this));this.A-=this.B.Bj},function(){var a=this.T();O(this,K(this)+a);this.A-=this.B.Ch},function(){var a=this.M&65535;Hf(this,a,1,!0)&&(this.G=this.G&-256|ic(this.ea,a,1,this.Ga-1)&255,this.A-=this.B.Ah)},function(){var a=this.M&65535;Hf(this,a,this.ba,!0)&&(this.G=this.G&~this.R|ic(this.ea,a,this.ba,this.Ga-1)&this.R,this.A-=this.B.Ah)},function(){var a=this.M&65535;Hf(this,a,1,!1)&&
|
||||
(mc(this.ea,a,1,this.G&255,this.Ga-1),this.A-=this.B.Oh)},function(){var a=this.M&65535;Hf(this,a,2,!1)&&(mc(this.ea,a,this.ba,this.G&this.R,this.Ga-1),this.A-=this.B.Oh)},gk,gk,function(){this.S|=132;this.A-=this.B.od},function(){this.S|=68;this.A-=this.B.od},function(){this.ca&131072?C.call(this,13,0):(this.ua|=4,this.A-=2,this.ha&&A(this,-2147483648)?(nf(this),this.ha.Wb()):this.ca&512||(this.ha&&nf(this),this.Wb()))},function(){pf(this)?xf(this):wf(this);this.A-=2},function(){this.cb=!1;this.Jb.call(this,
|
||||
lk,uj);this.cb&&(this.G=this.G&~this.R|this.ja&this.R)},function(){this.cb=!1;this.ya.call(this,mk,uj);this.cb&&(this.G=this.G&~this.R|this.ja&this.R,this.M=this.M&~this.R|this.wa&this.R)},function(){xf(this);this.A-=2},function(){wf(this);this.A-=2},function(){this.pa>this.Pa?C.call(this,13,0):(this.ca&=-513,this.A-=this.B.cj)},function(){this.pa>this.Pa?C.call(this,13,0):(this.ca|=512,this.S|=4,this.A-=2)},function(){this.ca&=-1025;this.A-=2},function(){this.ca|=1024;this.A-=2},function(){this.Jb.call(this,
|
||||
Dd,uj)},function(){this.ya.call(this,Ed,uj)}],Tj=[rh,ei,ph,gi,th,bj,jj,Hh],hk=[sh,fi,qh,hi,uh,cj,kj,Ih],ik=[function(a,b){this.A-=-1===this.C?this.B.zc:this.B.Rj;return b},Kh,Kh,Kh,Kh,Kh,Kh,Kh],jk=[function(a,b){this.A-=-1===this.C?this.B.Jj:this.B.Hj;return b},Lh,Lh,Lh,Lh,Lh,Lh,Lh],Yj=[function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=7)?(e=a<<d-1,c=(a<<d|a>>8-d)&255):e=a<<7;Af(this,c,e,128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=7)?(e=a<<8-d,c=(a>>>d|e)&255):e=a;Af(this,c,e,
|
||||
128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=Bf(this);(d%=9)?(c=(a<<d|e<<d-1|a>>9-d)&255,e=a<<d-1):e<<=7;Af(this,c,e,128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=Bf(this);(d%=9)?(c=(a>>d|e<<8-d|a<<9-d)&255,e=a<<8-d):e<<=7;Af(this,c,e,128)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=0;8<d?c=0:(e=a<<d-1,c=e<<1&255);vf(this,c,128,e&128,(c^e)&128)}return c},function(a,b){var c=b&this.ra;c&&(c=8<c?0:a>>>c-1,a=c>>>1&255,vf(this,a,128,c&1,a&128));return a},Lh,
|
||||
function(a,b){var c=b&this.ra;c&&(9<c&&(c=9),c=a<<24>>24>>c-1,a=c>>1&255,vf(this,a,128,c&1));return a}],Zj=[function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=15)?(e=a<<d-1,c=(a<<d|a>>16-d)&65535):e=a<<15;Af(this,c,e,32768)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e;(d&=15)?(e=a<<16-d,c=(a>>>d|e)&65535):e=a;Af(this,c,e,32768)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=Bf(this);(d%=17)?(c=(a<<d|e<<d-1|a>>17-d)&65535,e=a<<d-1):e<<=15;Af(this,c,e,32768)}return c},function(a,
|
||||
b){var c=a,d=b&this.ra;if(d){var e=Bf(this);(d%=17)?(c=(a>>d|e<<16-d|a<<17-d)&65535,e=a<<16-d):e<<=15;Af(this,c,e,32768)}return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=0;16<d?c=0:(e=a<<d-1,c=e<<1&65535);vf(this,c,32768,e&32768,(c^e)&32768)}return c},function(a,b){var c=b&this.ra;c&&(c=16<c?0:a>>>c-1,a=c>>>1&65535,vf(this,a,32768,c&1,a&32768));return a},Lh,function(a,b){var c=b&this.ra;c&&(17<c&&(c=17),c=a<<16>>16>>c-1,a=c>>1&65535,vf(this,a,32768,c&1));return a}],ak=[function(a,b){var c=
|
||||
a,d=b&this.ra;d&&(c=a<<d|a>>>32-d,Af(this,c,a<<d-1,-2147483648));return c},function(a,b){var c=a,d=b&this.ra;if(d){var e=a<<32-d,c=a>>>d|e;Af(this,c,e,-2147483648)}return c},function(a,b){var c=a,d=b&this.ra;d&&(c=Bf(this),c=a<<d|c<<d-1|a>>>32-d>>>1,Af(this,c,a<<d-1,-2147483648));return c},function(a,b){var c=a,d=b&this.ra;d&&(c=Bf(this),c=a>>>d|c<<32-d|a<<32-d<<1,Af(this,c,a<<32-d,-2147483648));return c},function(a,b){var c=a,d=b&this.ra;d&&(d=a<<d-1,c=d<<1,vf(this,c,-2147483648,d&-2147483648,(c^
|
||||
d)&-2147483648));return c},function(a,b){var c=b&this.ra;c&&(c=a>>>c-1,a=c>>>1,vf(this,a,-2147483648,c&1,a&-2147483648));return a},Lh,function(a,b){var c=b&this.ra;c&&(c=a>>c-1,a=c>>1,vf(this,a,-2147483648,c&1));return a}],lk=[function(a,b){b=this.xa();vf(this,a&b,128);this.A-=-1===this.D?this.B.$h:this.B.Zh;this.S|=2;return a},Lh,function(a){this.A-=-1===this.D?this.B.Sf:this.B.Rf;return a^255},function(a){var b=-a|0;of(this,0,a,b,191,!0);this.A-=-1===this.D?this.B.Sf:this.B.Rf;return b&255},function(a){this.ja=
|
||||
(this.G&255)*a&65535;this.ja&65280?(wf(this),yf(this)):(xf(this),zf(this));this.cb=!0;this.A-=-1===this.D?this.B.Nj:this.B.Mj;this.S|=2;return a},function(a){var b=(this.G<<24>>24)*(a<<24>>24)|0;this.ja=b&65535;127<b||-128>b?(wf(this),yf(this)):(xf(this),zf(this));this.cb=!0;this.A-=-1===this.D?this.B.sj:this.B.rj;this.S|=2;return a},function(a,b){if(!a)return Aj.call(this),a;var c=(b=this.G&65535)/a;if(255<c)return Aj.call(this),a;this.ja=c&255|(b%a&255)<<8;this.cb=!0;this.A-=-1===this.D?this.B.kj:
|
||||
this.B.jj;this.S|=2;return a},function(a,b){if(!a)return Aj.call(this),a;var c=a<<24>>24,d=(b=this.G<<16>>16)/c|0;if(d!=d<<24>>24||8086==this.ia&&-128==d)return Aj.call(this),a;this.ja=d&255|(b%c&255)<<8;this.cb=!0;this.A-=-1===this.D?this.B.oj:this.B.nj;this.S|=2;return a}],mk=[function(a,b){b=this.Ma();vf(this,a&b,this.Ia);this.A-=-1===this.D?this.B.$h:this.B.Zh;this.S|=2;return a},Lh,function(a){this.A-=-1===this.D?this.B.Sf:this.B.Rf;return a^this.R},function(a){var b=-a|0;of(this,0,a,b,this.Ia|
|
||||
63,!0);this.A-=-1===this.D?this.B.Sf:this.B.Rf;return b&this.R},function(a,b){if(2==this.ba){b=this.G&65535;var c=b*a|0;this.ja=c&65535;this.wa=c>>16&65535}else Rh.call(this,a,this.G),80563==this.Uc&&68657152==this.G&&129==a&&(this.wa=0);this.wa?(wf(this),yf(this)):(xf(this),zf(this));this.cb=!0;this.A-=-1===this.D?this.B.Pj:this.B.Oj;this.S|=2;return a},function(a,b){var c;2==this.ba?(b=this.G&65535,c=(b<<16>>16)*(a<<16>>16)|0,this.ja=c&65535,this.wa=c>>16&65535,c=32767<c||-32768>c):(Qh.call(this,
|
||||
a,this.G),c=this.wa!=this.ja>>31);c?(wf(this),yf(this)):(xf(this),zf(this));this.cb=!0;this.A-=-1===this.D?this.B.uj:this.B.tj;this.S|=2;return a},function(a,b){if(2==this.ba){if(!a)return Aj.call(this),a;b=65536*(this.M&65535)+(this.G&65535);var c=b/a;if(65536<=c)return Aj.call(this),a;this.ja=c&65535;this.wa=b%a&65535}else{if(!nj.call(this,this.G,this.M,a))return Aj.call(this),a;this.ja|=0;this.wa|=0}this.cb=!0;this.A-=-1===this.D?this.B.mj:this.B.lj;this.S|=2;return a},function(a,b){if(2==this.ba){if(!a)return Aj.call(this),
|
||||
a;var c=a<<16>>16,d=(b=this.M<<16|this.G&65535)/c|0;if(d!=d<<16>>16||8086==this.ia&&-32768==d)return Aj.call(this),a;this.ja=d&65535;this.wa=b%c&65535}else{var c=this.G,d=this.M,e=a,f=0,g=0;0>e&&(e=-e|0,f=1-f);0>d&&(c=-c|0,d=~d+(c?0:1)|0,g=1,f=1-f);!nj.call(this,c,d,e)||this.ja>2147483647+f||this.wa>2147483647+g?c=!1:(f&&(this.ja=-this.ja),g&&(this.wa=-this.wa),c=!0);if(!c)return Aj.call(this),a;this.ja|=0;this.wa|=0}this.cb=!0;this.A-=-1===this.D?this.B.qj:this.B.pj;this.S|=2;return a}],Dd=[function(a){var b=
|
||||
a+1|0;of(this,a,1,b,190);this.A-=-1===this.D?this.B.Qf:this.B.Pf;return b&255},function(a){var b=a-1|0;of(this,a,1,b,190,!0);this.A-=-1===this.D?this.B.Qf:this.B.Pf;return b&255},Lh,Lh,Lh,Lh,Lh,Lh],Ed=[function(a){var b=a+1|0;of(this,a,1,b,this.Ia|62);this.A-=-1===this.D?this.B.Qf:this.B.Pf;return b&this.R},function(a){var b=a-1|0;of(this,a,1,b,this.Ia|62,!0);this.A-=-1===this.D?this.B.Qf:this.B.Pf;return b&this.R},function(a){J(this,K(this));O(this,a);this.A-=-1===this.D?this.B.ij:this.B.hj;this.S|=
|
||||
2;return a},function(a){if(-1===this.D)return Lh.call(this,a);this.U=this.ga;wj.call(this,a,this.na(this.D+this.ba));this.A-=this.B.fj;this.S|=2;this.U=-1;return a},function(a){O(this,a);this.A-=-1===this.D?this.B.Dj:this.B.Cj;this.S|=2;return a},function(a){if(-1===this.D)return Lh.call(this,a);zd(this,a,this.na(this.D+this.ba));this.A-=this.B.Aj;this.S|=2;return a},function(a){var b=a;this.S&512&&(a=a-2&65535,80286>this.ia&&(b=a));J(this,b);this.A-=-1===this.D?this.B.Sc:this.B.Tj;this.S|=2;return a},
|
||||
Lh];function oe(){this.W.call(this,gj);this.A-=-1===this.D?6:13}function pe(){this.fa.call(this,fj);this.A-=-1===this.D?12:19}var ge=Array(256);ge[0]=function(){16>(this.Qa(this.Ga)&56)&&(this.S|=1);this.ya.call(this,this.hg,uj)};ge[1]=function(){this.Qa(this.Ga)&16||(this.S|=1);this.ya.call(this,nk,uj)};ge[2]=function(){!(this.Za&1)||this.ca&131072?C.call(this,6):this.W.call(this,Sh)};ge[3]=function(){!(this.Za&1)||this.ca&131072?C.call(this,6):this.W.call(this,Yh)};
|
||||
ge[5]=function(){this.pa?C.call(this,13,0,0,!0):(Gf(this,this.na(2054)),this.J=this.na(2086),this.K=this.na(2088),this.P=this.na(2090),this.H=this.na(2094),this.M=this.na(2096),this.I=this.na(2098),this.G=this.na(2100),jd(this.Xa,2102,this.na(2084)),jd(this.va,2108,this.na(2082)),jd(this.ta,2114,this.na(2080)),jd(this.vb,2120,this.na(2078)),yd(this,this.na(2072)),O(this,this.na(2074)),G(this,this.na(2092)),this.Ec=this.na(2126)|this.Qa(2128)<<16,this.Ad=this.Ec+this.na(2130),this.Mc=this.na(2138)|
|
||||
this.Qa(2140)<<16,this.Td=this.Mc+this.na(2142),jd(this.Bc,2132,this.na(2076)),jd(this.Sa,2144,this.na(2070)),this.A-=195)};ge[6]=function(){this.pa?C.call(this,13,0):(this.Za&=-9,this.A-=2)};ge[11]=Gd;ge[166]=Gd;ge[255]=Gd;var M=[];M[5]=Gd;
|
||||
M[7]=function(){if(this.pa)C.call(this,13,0,0,!0);else{var a=this.Xa.nc(this.J&this.Ba,204);if(-1!==a){pj.call(this,this.oa(a));var b=this.oa(a+168),c=(b&24576)>>13;yd(this,this.oa(a+4),c);this.Ec=this.oa(a+112);this.Ad=this.Ec+this.oa(a+116);this.Mc=this.oa(a+100);this.Td=this.Mc+this.oa(a+104);id(this.Bc,this.oa(a+56),this.oa(a+120),this.oa(a+124),this.oa(a+128));id(this.Sa,this.oa(a+52),this.oa(a+84),this.oa(a+88),this.oa(a+92));this.J=this.oa(a+12);this.K=this.oa(a+16);this.P=this.oa(a+20);this.H=
|
||||
|
|
|
|||
|
|
@ -279,9 +279,9 @@ var Sc=[function(){this.Gb.call(this,Yf)},function(){this.qa.call(this,Zf)},func
|
|||
Kg)},function(){this.Z.call(this,Lg)},function(){this.J=this.J&-256|Kg.call(this,this.J&255,this.na());this.A--},function(){this.J=this.J&~this.N|Lg.call(this,this.J&this.N,this.Aa());this.A--},function(){Jc(this,this.Ca.ja,this.U,2);this.A-=this.B.Td},function(){ee(this,u(this));this.A-=this.B.ec},function(){this.Gb.call(this,Wf)},function(){this.qa.call(this,Xf)},function(){this.Bb.call(this,Wf)},function(){this.Z.call(this,Xf)},function(){this.J=this.J&-256|Wf.call(this,this.J&255,this.na());this.A--},
|
||||
function(){this.J=this.J&~this.N|Xf.call(this,this.J&this.N,this.Aa());this.A--},function(){Jc(this,this.S.ja,this.U,2);this.A-=this.B.Td},function(){this.la=this.ra;Ec(this,u(this));this.A-=this.B.ec;this.la=-1},function(){this.Gb.call(this,Mg)},function(){this.qa.call(this,Ng)},function(){this.Bb.call(this,Mg)},function(){this.Z.call(this,Ng)},function(){this.J=this.J&-256|Mg.call(this,this.J&255,this.na());this.A--},function(){this.J=this.J&~this.N|Ng.call(this,this.J&this.N,this.Aa());this.A--},
|
||||
function(){Jc(this,this.xa.ja,this.U,2);this.A-=this.B.Td},function(){this.la=this.ra;Kc(this,u(this));this.A-=this.B.ec;this.la=-1},function(){this.Gb.call(this,$f)},function(){this.qa.call(this,ag)},function(){this.Bb.call(this,$f)},function(){this.Z.call(this,ag)},function(){this.J=this.J&-256|$f.call(this,this.J&255,this.na());this.A--},function(){this.J=this.J&~this.N|ag.call(this,this.J&this.N,this.Aa());this.A--},function(){this.L|=20;this.va=this.rb=this.pa;this.A-=this.B.Rc},function(){var a=
|
||||
this.J&255,b=le(this),c=je(this);if(9<(a&15)||b)a+=6,b=16;if(159<a||c)a+=96,c=1;a&=255;this.J=this.J&-256|a;F(this,a,128);c?pe(this):qe(this);b?ze(this):xe(this);this.A-=this.B.Sd},function(){this.Gb.call(this,oh)},function(){this.qa.call(this,ph)},function(){this.Bb.call(this,oh)},function(){this.Z.call(this,ph)},function(){this.J=this.J&-256|oh.call(this,this.J&255,this.na());this.A--},function(){this.J=this.J&~this.N|ph.call(this,this.J&this.N,this.Aa());this.A--},function(){this.L|=20;this.va=
|
||||
this.rb=this.Ca;this.A-=this.B.Rc},function(){var a=this.J&255,b=le(this),c=je(this);if(9<(a&15)||b)a-=6,b=16;if(159<a||c)a-=96,c=1;a&=255;this.J=this.J&-256|a;F(this,a,128);c?pe(this):qe(this);b?ze(this):xe(this);this.A-=this.B.Sd},function(){this.Gb.call(this,wh)},function(){this.qa.call(this,xh)},function(){this.Bb.call(this,wh)},function(){this.Z.call(this,xh)},function(){this.J=this.J&-256|wh.call(this,this.J&255,this.na());this.A--},function(){this.J=this.J&~this.N|xh.call(this,this.J&this.N,
|
||||
this.Aa());this.A--},function(){this.L|=20;this.va=this.rb=this.S;this.A-=this.B.Rc},function(){var a,b,c=this.J&255,d=this.J>>8&255;9<(c&15)||le(this)?(c+=6,80286<=this.ca&&255<c&&d++,d++,a=b=1):a=b=0;this.J=this.J&-65536|(d<<8|c)&65295;a?pe(this):qe(this);b?ze(this):xe(this);this.A-=this.B.Sd},function(){this.Gb.call(this,ng)},function(){this.qa.call(this,og)},function(){this.Bb.call(this,ng)},function(){this.Z.call(this,og)},function(){ng.call(this,this.J&255,this.na());this.A--},function(){og.call(this,
|
||||
this.J&255,b=le(this),c=je(this);9<(a&15)||b?(a+=6,b=16):b=0;159<a||c?(a+=96,c=1):c=0;a&=255;this.J=this.J&-256|a;F(this,a,128);c?pe(this):qe(this);b?ze(this):xe(this);this.A-=this.B.Sd},function(){this.Gb.call(this,oh)},function(){this.qa.call(this,ph)},function(){this.Bb.call(this,oh)},function(){this.Z.call(this,ph)},function(){this.J=this.J&-256|oh.call(this,this.J&255,this.na());this.A--},function(){this.J=this.J&~this.N|ph.call(this,this.J&this.N,this.Aa());this.A--},function(){this.L|=20;this.va=
|
||||
this.rb=this.Ca;this.A-=this.B.Rc},function(){var a=this.J&255,b=le(this),c=je(this);9<(a&15)||b?(a-=6,b=16):b=0;159<a||c?(a-=96,c=1):c=0;a&=255;this.J=this.J&-256|a;F(this,a,128);c?pe(this):qe(this);b?ze(this):xe(this);this.A-=this.B.Sd},function(){this.Gb.call(this,wh)},function(){this.qa.call(this,xh)},function(){this.Bb.call(this,wh)},function(){this.Z.call(this,xh)},function(){this.J=this.J&-256|wh.call(this,this.J&255,this.na());this.A--},function(){this.J=this.J&~this.N|xh.call(this,this.J&
|
||||
this.N,this.Aa());this.A--},function(){this.L|=20;this.va=this.rb=this.S;this.A-=this.B.Rc},function(){var a,b,c=this.J&255,d=this.J>>8&255;9<(c&15)||le(this)?(c+=6,80286<=this.ca&&255<c&&d++,d++,a=b=1):a=b=0;this.J=this.J&-65536|(d<<8|c)&65295;a?pe(this):qe(this);b?ze(this):xe(this);this.A-=this.B.Sd},function(){this.Gb.call(this,ng)},function(){this.qa.call(this,og)},function(){this.Bb.call(this,ng)},function(){this.Z.call(this,og)},function(){ng.call(this,this.J&255,this.na());this.A--},function(){og.call(this,
|
||||
this.J&this.N,this.Aa());this.A--},function(){this.L|=20;this.va=this.rb=this.xa;this.A-=this.B.Rc},function(){var a,b,c=this.J&255,d=this.J>>8&255;9<(c&15)||le(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.J=this.J&-65536|d<<8|c;a?pe(this):qe(this);b?ze(this):xe(this);this.A-=this.B.Sd},function(){this.J=Bh.call(this,this.J)},function(){this.G=Bh.call(this,this.G)},function(){this.M=Bh.call(this,this.M)},function(){this.D=Bh.call(this,this.D)},function(){v(this,Bh.call(this,w(this)))},function(){this.K=
|
||||
Bh.call(this,this.K)},function(){this.I=Bh.call(this,this.I)},function(){this.H=Bh.call(this,this.H)},function(){this.J=zh.call(this,this.J)},function(){this.G=zh.call(this,this.G)},function(){this.M=zh.call(this,this.M)},function(){this.D=zh.call(this,this.D)},function(){v(this,zh.call(this,w(this)))},function(){this.K=zh.call(this,this.K)},function(){this.I=zh.call(this,this.I)},function(){this.H=zh.call(this,this.H)},function(){y(this,this.J&this.N);this.A-=this.B.Ac},function(){y(this,this.G&
|
||||
this.N);this.A-=this.B.Ac},function(){y(this,this.M&this.N);this.A-=this.B.Ac},function(){y(this,this.D&this.N);this.A-=this.B.Ac},function(){y(this,w(this)-2&65535);this.A-=this.B.Ac},function(){y(this,this.K&this.N);this.A-=this.B.Ac},function(){y(this,this.I&this.N);this.A-=this.B.Ac},function(){y(this,this.H&this.N);this.A-=this.B.Ac},function(){this.J=this.J&~this.N|u(this);this.A-=this.B.ec},function(){this.G=this.G&~this.N|u(this);this.A-=this.B.ec},function(){this.M=this.M&~this.N|u(this);
|
||||
|
|
|
|||
|
|
@ -368,6 +368,179 @@ CPUDef.opRAR = function()
|
|||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x21 (LXI H,d16)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opLXIH = function()
|
||||
{
|
||||
this.setHL(this.getPCWord());
|
||||
this.nStepCycles -= 10;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x22 (SHLD a16)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opSHLD = function()
|
||||
{
|
||||
this.setWord(this.getPCWord(), this.getHL());
|
||||
this.nStepCycles -= 16;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x23 (INX H)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opINXH = function()
|
||||
{
|
||||
this.setHL(this.getHL() + 1);
|
||||
this.nStepCycles -= 5;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x24 (INR H)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opINRH = function()
|
||||
{
|
||||
this.regH = this.incByte(this.regH);
|
||||
this.nStepCycles -= 5;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x25 (DCR H)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opDCRH = function()
|
||||
{
|
||||
this.regH = this.decByte(this.regH);
|
||||
this.nStepCycles -= 5;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x26 (MVI H,d8)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opMVIH = function()
|
||||
{
|
||||
this.regH = this.getPCByte();
|
||||
this.nStepCycles -= 7;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x27 (DAA)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opDAA = function()
|
||||
{
|
||||
var acc = this.regA;
|
||||
var fCarry = !!this.getCF();
|
||||
var fAuxCarry = !!this.getAF();
|
||||
if ((acc & 0xf) > 9 || fAuxCarry) {
|
||||
acc += 0x6;
|
||||
fAuxCarry = true;
|
||||
} else {
|
||||
fAuxCarry = false;
|
||||
}
|
||||
if (acc >= 0xa0 || fCarry) {
|
||||
acc += 0x60;
|
||||
fCarry = true;
|
||||
} else {
|
||||
fCarry = false;
|
||||
}
|
||||
this.resultZeroCarry = this.resultParitySign = this.regA = (acc & 0xff);
|
||||
this.updateCF(fCarry);
|
||||
this.updateAF(fAuxCarry);
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x29 (DAD H)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opDADH = function()
|
||||
{
|
||||
var w;
|
||||
this.setHL(w = this.getHL() + this.getHL());
|
||||
this.resultZeroCarry = (this.resultZeroCarry & 0xff) | ((w >> 8) & 0x100);
|
||||
this.nStepCycles -= 10;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x2A (LHLD a16)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opLHLD = function()
|
||||
{
|
||||
this.setHL(this.getWord(this.getPCWord()));
|
||||
this.nStepCycles -= 16;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x2B (DCX H)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opDCXH = function()
|
||||
{
|
||||
this.setHL(this.getHL() - 1);
|
||||
this.nStepCycles -= 5;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x2C (INR L)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opINRL = function()
|
||||
{
|
||||
this.regL = this.incByte(this.regL);
|
||||
this.nStepCycles -= 5;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x2D (DCR L)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opDCRL = function()
|
||||
{
|
||||
this.regL = this.decByte(this.regL);
|
||||
this.nStepCycles -= 5;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x2E (MVI L,d8)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opMVIL = function()
|
||||
{
|
||||
this.regL = this.getPCByte();
|
||||
this.nStepCycles -= 7;
|
||||
};
|
||||
|
||||
/**
|
||||
* op=0x2F (CMA)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
*/
|
||||
CPUDef.opCMA = function()
|
||||
{
|
||||
this.regA = ~this.regA & 0xff;
|
||||
this.nStepCycles -= 4;
|
||||
};
|
||||
|
||||
/**
|
||||
* opTBD()
|
||||
*
|
||||
|
|
@ -396,10 +569,10 @@ CPUDef.aOps = [
|
|||
/* 0x14-0x17 */ CPUDef.opINRD, CPUDef.opDCRD, CPUDef.opMVID, CPUDef.opRAL,
|
||||
/* 0x18-0x1B */ CPUDef.opNOP, CPUDef.opDADD, CPUDef.opLDAXD, CPUDef.opDCXD,
|
||||
/* 0x1C-0x1F */ CPUDef.opINRE, CPUDef.opDCRE, CPUDef.opMVIE, CPUDef.opRAR,
|
||||
/* 0x20-0x23 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
|
||||
/* 0x24-0x27 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
|
||||
/* 0x28-0x2B */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
|
||||
/* 0x2C-0x2F */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
|
||||
/* 0x20-0x23 */ CPUDef.opNOP, CPUDef.opLXIH, CPUDef.opSHLD, CPUDef.opINXH,
|
||||
/* 0x24-0x27 */ CPUDef.opINRH, CPUDef.opDCRH, CPUDef.opMVIH, CPUDef.opDAA,
|
||||
/* 0x28-0x2B */ CPUDef.opNOP, CPUDef.opDADH, CPUDef.opLHLD, CPUDef.opDCXH,
|
||||
/* 0x2C-0x2F */ CPUDef.opINRL, CPUDef.opDCRL, CPUDef.opMVIL, CPUDef.opCMA,
|
||||
/* 0x30-0x33 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
|
||||
/* 0x34-0x37 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
|
||||
/* 0x38-0x3B */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
|
||||
|
|
|
|||
|
|
@ -660,6 +660,36 @@ CPUSim.prototype.setIF = function()
|
|||
this.regPS |= CPUDef.PS.IF;
|
||||
};
|
||||
|
||||
/**
|
||||
* updateAF(fAuxCarry)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
* @param {boolean} fAuxCarry
|
||||
*/
|
||||
CPUSim.prototype.updateAF = function(fAuxCarry)
|
||||
{
|
||||
if (fAuxCarry) {
|
||||
this.setAF();
|
||||
} else {
|
||||
this.clearAF();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* updateCF(fCarry)
|
||||
*
|
||||
* @this {CPUSim}
|
||||
* @param {boolean} fCarry
|
||||
*/
|
||||
CPUSim.prototype.updateCF = function(fCarry)
|
||||
{
|
||||
if (fCarry) {
|
||||
this.resultZeroCarry |= 0x100;
|
||||
} else {
|
||||
this.resultZeroCarry &= ~0x100;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* getPS()
|
||||
*
|
||||
|
|
|
|||
|
|
@ -561,10 +561,14 @@ X86.opDAA = function()
|
|||
if ((AL & 0xf) > 9 || AF) {
|
||||
AL += 0x6;
|
||||
AF = X86.PS.AF;
|
||||
} else {
|
||||
AF = 0;
|
||||
}
|
||||
if (AL > 0x9f || CF) {
|
||||
AL += 0x60;
|
||||
CF = X86.PS.CF;
|
||||
} else {
|
||||
CF = 0;
|
||||
}
|
||||
var b = (AL & 0xff);
|
||||
this.regEAX = (this.regEAX & ~0xff) | b;
|
||||
|
|
@ -665,10 +669,14 @@ X86.opDAS = function()
|
|||
if ((AL & 0xf) > 9 || AF) {
|
||||
AL -= 0x6;
|
||||
AF = X86.PS.AF;
|
||||
} else {
|
||||
AF = 0;
|
||||
}
|
||||
if (AL > 0x9f || CF) {
|
||||
AL -= 0x60;
|
||||
CF = X86.PS.CF;
|
||||
} else {
|
||||
CF = 0;
|
||||
}
|
||||
var b = (AL & 0xff);
|
||||
this.regEAX = (this.regEAX & ~0xff) | b;
|
||||
|
|
|
|||
|
|
@ -1,168 +1,171 @@
|
|||
(function(){var g;function da(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
|
||||
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function q(a){return"0x"+n(a,4)}function ea(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
|
||||
function ka(a,b){return-1!==a.indexOf(b,a.length-b.length)}var la={"&":"&","<":"<",">":">",'"':""","'":"'"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function ra(a,b){return(a+" ").slice(0,b)}function sa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
||||
function ta(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var k=d+e>>1,h;h=c(b,a[k]);0<h?d=k+1:(e=k,f=!h)}return f?d:~d}var ua=Date.now||function(){return+new Date};function va(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function ka(a,b){return-1!==a.indexOf(b,a.length-b.length)}var la={"&":"&","<":"<",">":">",'"':""","'":"'"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function na(a,b){return(a+" ").slice(0,b)}function oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
||||
function pa(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var k=d+e>>1,h;h=c(b,a[k]);0<h?d=k+1:(e=k,f=!h)}return f?d:~d}var ua=Date.now||function(){return+new Date};function va(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function wa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
|
||||
function u(a,b,c,d){var e=0,f=null,k=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),k;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,f,e))});if(b&&"object"==
|
||||
typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));l=l.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,!!c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),k=[f,e]);return k}function xa(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function ya(){return window?window.navigator.userAgent:""}function v(a){window&&window.alert(a)}function za(a){var b=!1;window&&(b=window.confirm(a));return b}var Aa=null;function Ea(){if(null==Aa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Aa=a}return Aa}
|
||||
function Ha(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Ia(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ja(a){if(window){var b=ya();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ka(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function La(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ma={init:[],show:[],exit:[]},Na=!1,Oa=!0;function Pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Qa(a){Ma.init.push(a)}
|
||||
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Sa(a){!Oa&&a?(Oa=!0,Na&&Ta("init")):Oa=a}function Ta(a){Ma[a]&&Ra(Ma[a])}Pa("onload",function(){Na=!0;Ra(Ma.init)});Pa("onpageshow",function(){Ra(Ma.show)});Pa(Ja("Opera")||Ja("iOS")?"onunload":"onbeforeunload",function(){Ra(Ma.exit)});
|
||||
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.vb=b.comment;this.Kb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.zb=this.id.substr(0,b),this.Wa=this.id.substr(b+1)):this.Wa=this.id;this[a]=c;this.j={Ka:!1,Ha:!1,ob:!1,W:!1,Ja:!1};this.lb=null;this.j.Ja=!1;this.G={};this.B=null;this.Y=d||0;y.push(this)}var Ua=void 0,Va={};
|
||||
function ya(){return window?window.navigator.userAgent:""}function v(a){window&&window.alert(a)}function za(a){var b=!1;window&&(b=window.confirm(a));return b}var Aa=null;function Ba(){if(null==Aa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Aa=a}return Aa}
|
||||
function Ca(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Da(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ea(a){if(window){var b=ya();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Fa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Ga(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ka={init:[],show:[],exit:[]},Na=!1,Oa=!0;function Pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Qa(a){Ka.init.push(a)}
|
||||
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Sa(a){!Oa&&a?(Oa=!0,Na&&Ta("init")):Oa=a}function Ta(a){Ka[a]&&Ra(Ka[a])}Pa("onload",function(){Na=!0;Ra(Ka.init)});Pa("onpageshow",function(){Ra(Ka.show)});Pa(Ea("Opera")||Ea("iOS")?"onunload":"onbeforeunload",function(){Ra(Ka.exit)});
|
||||
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.wb=b.comment;this.Lb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ab=this.id.substr(0,b),this.Xa=this.id.substr(b+1)):this.Xa=this.id;this[a]=c;this.j={La:!1,Ia:!1,ob:!1,W:!1,Ka:!1};this.lb=null;this.j.Ka=!1;this.H={};this.C=null;this.Z=d||0;y.push(this)}var Ua=void 0,Va={};
|
||||
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function z(a,b){b||(b=x);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var y=[],$a={};function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function C(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<y.length;b++){var d=y[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function lb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<y.length;d++)if(c)c==y[d]&&(c=null);else if(!(a!=y[d].type||b&&y[d].id.indexOf(b)))return y[d]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}
|
||||
function mb(a,b){for(var c=F(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var k=e[f];if(1===k.nodeType){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "pc8080-binding":(h=E(k))&&h.binding&&a.ha(h.type,h.binding,k,h.value),m=l.length}}}}
|
||||
function bb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<y.length;d++)if(c)c==y[d]&&(c=null);else if(!(a!=y[d].type||b&&y[d].id.indexOf(b)))return y[d]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}
|
||||
function cb(a,b){for(var c=F(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var k=e[f];if(1===k.nodeType){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "pc8080-binding":(h=E(k))&&h.binding&&a.ka(h.type,h.binding,k,h.value),m=l.length}}}}
|
||||
function F(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,c){switch(b){case "clear":return this.G[b]||(this.G[b]=c,c.onclick=function(a){return function(){a.G.print&&(a.G.print.value="")}}(this)),!0;case "print":return this.G[b]||(this.ya=this.G[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.da=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Wa+": "+a)},da:function(a,b){b||v(a)},sa:function(){return this.j.W=!0},ra:function(a,b){b&&(this.j.W=!1);return!0}};function nb(a,b,c){a.B&&(!0===c||ob(a,c|0))&&a.B.message(b,void 0)}function ob(a,b){if(a.B){a===a.B?b|=0:b=b||a.Y;var c=a.B.Y&b;return!!b&&c===b||!!(c&a.B.Rb)}return!1}
|
||||
function pb(a,b){if(a.j.ob)return a.j.Ha&&(a.j.Ha=!1),a.j.ob=!1;if(a.j.Ja)return a.g(a.toString()+" error"),!1;a.j.Ha=b;return a.j.Ha}function qb(a,b){a.j.Ha&&(b?a.j.ob=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.Ha}function G(a){if(!a.j.Ja&&(a.j.Ka=!0,a.j.Ka)){var b=a.lb;a.lb=null;b&&b()}}function rb(a,b){b&&(a.j.Ka?b():a.lb=b);return a.j.Ka}function sb(a,b){a.j.Ja=!0;a.da(b)}
|
||||
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ka:function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.ya=this.H[b]=c,c.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.fa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Xa+": "+a)},fa:function(a,b){b||v(a)},sa:function(){return this.j.W=!0},ra:function(a,b){b&&(this.j.W=!1);return!0}};function db(a,b,c){a.C&&(!0===c||eb(a,c|0))&&a.C.message(b,void 0)}function eb(a,b){if(a.C){a===a.C?b|=0:b=b||a.Z;var c=a.C.Z&b;return!!b&&c===b||!!(c&a.C.Sb)}return!1}
|
||||
function fb(a,b){if(a.j.ob)return a.j.Ia&&(a.j.Ia=!1),a.j.ob=!1;if(a.j.Ka)return a.g(a.toString()+" error"),!1;a.j.Ia=b;return a.j.Ia}function gb(a,b){a.j.Ia&&(b?a.j.ob=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.Ia}function G(a){if(!a.j.Ka&&(a.j.La=!0,a.j.La)){var b=a.lb;a.lb=null;b&&b()}}function rb(a,b){b&&(a.j.La?b():a.lb=b);return a.j.La}function sb(a,b){a.j.Ka=!0;a.fa(b)}
|
||||
var tb="undefined"!==typeof ArrayBuffer,ub=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
|
||||
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function vb(a){x.call(this,"Panel",a,vb)}z(vb);g=vb.prototype;g.ha=function(a,b,c,d){return this.s&&this.s.ha(a,b,c,d)||this.b&&this.b.ha(a,b,c,d)||this.w&&this.w.ha(a,b,c,d)||this.B&&this.B.ha(a,b,c,d)?!0:this.parent.ha.call(this,a,b,c,d)};g.La=function(a,b,c,d){this.s=a;this.A=b;this.b=c;this.B=d;this.w=wb(a,"Keyboard")};g.sa=function(a,b){b||xb();return!0};g.ra=function(){return!0};g.ka=function(){};
|
||||
function xb(){for(var a=!1,b=F(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),f;a:{f=e.id;if(void 0!==f)for(var k=void 0,k=0;k<y.length;k++)if(y[k].id===f){f=y[k];break a}f=null}f||(a=!0,f=new vb(e));mb(f,d);a&&G(f)}}Qa(xb);
|
||||
function yb(a,b,c){x.call(this,"Bus",a,yb);this.b=b;this.B=c;this.K=a.buswidth||16;this.N=Math.pow(2,this.K);this.w=this.N-1|0;this.P=20>=this.K?12:24>=this.K?14:15;this.Z=1<<this.P;this.R=this.Z>>2;this.s=this.Z-1;this.J=this.N/this.Z|0;this.L=this.J-1;this.C=[];this.D=[];this.F=this.H=!1;this.T=[];this.V=[];a=new H;zb(a,this.B);this.A=Array(this.J);for(b=0;b<this.J;b++)this.A[b]=a;a=this.b;b=this.A;c=this.P;var d=this.w;a.ia=b;a.P=c;a.Z=1<<a.P;a.H=a.Z-1;a.T=b.length;a.R=a.T-1;a.K=d;G(this)}z(yb);
|
||||
yb.prototype.reset=function(){};yb.prototype.sa=function(a,b){b||this.reset();return!0};function Ab(a,b,c,d){for(var e=b>>>a.P;0<c&&e<a.A.length;){var f=a.A[e],k=e*a.Z,h=c>a.Z?a.Z:c;if(f&&f.size){if(f.type==d){if(b+c<=f.u)return f.gb+=f.u-b,f.u=b,!0;if(b>=f.u+f.gb){h=f.size-(b-k);h>c&&(h=c);f.gb=b-f.u+h;c-=h;b=k+a.Z;continue}}return Bb(1,b,c)}f=a.A[e];b=new H(b,h,a.Z,d);zb(b,a.B,f);a.A[e++]=b;b=k+a.Z;c-=h}return 0>=c?!0:Bb(2,b,c)}function Cb(a,b){return a.A[(b&a.w)>>>a.P].eb(b&a.s,b)}
|
||||
function Db(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.C[b]&&(a.C[b]=[null,!1]);a.C[b][1]=!a.C[b][1];return a.C[b][1]}function Eb(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.D[b]&&(a.D[b]=[null,!1]);a.D[b][1]=!a.D[b][1];return a.D[b][1]}function Bb(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Fb;if(tb){var Gb=new ArrayBuffer(2);(new DataView(Gb)).setUint16(0,256,!0);Fb=256===(new Uint16Array(Gb))[0]}else Fb=!1;var Hb=Fb;
|
||||
function H(a,b,c,d){this.id=Ib+=2;this.b=null;this.u=a;this.gb=b;this.size=c||0;this.type=d||Jb;this.F=d==Wb;zb(this);this.ua=this.Ub=!1;if(c)if(tb)this.C=new ArrayBuffer(c),this.D=new DataView(this.C,0,c),this.G=new Uint8Array(this.C,0,c),this.H=new Uint16Array(this.C,0,c>>1),this.b=new Int32Array(this.C,0,c>>2),Xb(this,Hb?Yb:Zb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Xb(this,$b)}else Xb(this)}var Jb=0,Wb=2,ac=["NONE","RAM","ROM","VIDEO","H/W"],Ib=0;
|
||||
H.prototype={constructor:H,parent:null,save:function(){var a,b;if(tb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(tb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.ua=!0}return!1},xa:function(a,b){b?0===this.s++&&bc(this,cc,!1):0===this.A++&&dc(this,cc,!1)},J:function(){this.B&&ob(this.B,129)&&this.B.message("attempt to read invalid block %"+n(this.u),!0);
|
||||
return 255},w:function(a,b){this.B&&ob(this.B,129)&&this.B.message("attempt to write "+q(b)+" to invalid block %"+n(this.u),!0)},K:function(a,b){return this.Sa(a++,b++)|this.Sa(a,b)<<8},Wa:function(a,b,c){this.hb(a++,b&255,c++);this.hb(a,b>>8,c)},T:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ma:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},wa:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.ua=!0},jb:function(a,
|
||||
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.ua=!0},N:function(a,b){if(this.B&&null!=this.u){var c=this.B;ec(c,this.u+a,1,c.R)&&c.U(!0)}return this.eb(a,b)},ca:function(a,b){if(this.B&&null!=this.u){var c=this.B;ec(c,this.u+a,2,c.R)&&c.U(!0)}return this.tb(a,b)},pa:function(a,b,c){if(this.B&&null!=this.u){var d=this.B;ec(d,this.u+a,1,d.F)&&d.U(!0)}this.F?this.w(a,b,c):this.Ua(a,b,c)},Va:function(a,b,
|
||||
c){if(this.B&&null!=this.u){var d=this.B;ec(d,this.u+a,2,d.F)&&d.U(!0)}this.F?this.w(a,b,c):this.Ob(a,b,c)},L:function(a){return this.G[a]},R:function(a){return this.G[a]},V:function(a){return this.D.getUint16(a,!0)},ga:function(a){return a&1?this.G[a]|this.G[a+1]<<8:this.H[a>>1]},na:function(a,b){this.G[a]=b;this.ua=!0},va:function(a,b){this.G[a]=b;this.ua=!0},Ga:function(a,b){this.D.setUint16(a,b,!0);this.ua=!0},Xa:function(a,b){a&1?(this.G[a]=b,this.G[a+1]=b>>8):this.H[a>>1]=b;this.ua=!0}};
|
||||
function zb(a,b,c){a.B=b;a.A=a.s=0;c&&((a.A=c.A)&&dc(a,cc,!1),(a.s=c.s)&&bc(a,cc,!1))}function fc(a,b){b?0===--a.s&&(a.hb=a.F?a.w:a.Ua):0===--a.A&&(a.Sa=a.eb,a.Lb=a.tb)}function bc(a,b,c){c&&a.s||(a.hb=!a.F&&b[2]||a.w);if(c||void 0===c)a.Ua=b[2]||a.w,a.Ob=b[3]||a.Wa}function dc(a,b,c){c&&a.A||(a.Sa=b[0]||a.J,a.Lb=b[1]||a.K);if(c||void 0===c)a.eb=b[0]||a.J,a.tb=b[1]||a.K}function Xb(a,b){b||(b=gc);dc(a,b,void 0);bc(a,b,void 0)}
|
||||
var gc=[],$b=[H.prototype.T,H.prototype.ma,H.prototype.wa,H.prototype.jb],cc=[H.prototype.N,H.prototype.ca,H.prototype.pa,H.prototype.Va];if(tb)var Zb=[H.prototype.L,H.prototype.V,H.prototype.na,H.prototype.Ga],Yb=[H.prototype.R,H.prototype.ga,H.prototype.va,H.prototype.Xa];
|
||||
function hc(a,b){x.call(this,"CPU",a,hc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Ra=c;this.i.Ca=d;this.i.qb=Math.round(this.i.Ra/1E4)/100;this.i.Aa=this.i.qb*this.i.Ca;this.j.X=!1;this.j.pb=!1;this.j.Db=a.autoStart;this.j.Eb=!1;this.j.Ia=!1;this.i.Ya=this.i.Oa=0;this.i.Za=a.csStart;this.i.Na=a.csInterval;this.i.Pa=a.csStop;this.ga=this.Fa.bind(this);G(this)}z(hc);var ic=["power","reset"];g=hc.prototype;
|
||||
g.La=function(a,b,c,d){this.s=a;this.A=b;this.B=d;for(b=0;b<ic.length;b++)(c=this.G[ic[b]])&&this.s.ha(null,ic[b],c);wb(a,"FPU");this.w=wb(a,"ChipSet");a=jc(a,"autoStart");null!=a&&(this.j.Db="true"==a?!0:"false"==a?!1:!!a);G(this)};g.reset=function(){};g.save=function(){return null};g.restore=function(){return!1};
|
||||
g.sa=function(a,b){if(!b){if(a&&this.restore){kc(this);if(!this.restore(a))return!1;lc(this)}else this.reset();if(this.B){var c=this.B;c.g("Type ? for help with PC8080 Debugger commands");c.ka();if(c.Xa){var d=c.Xa;c.Xa=null;mc(c,d)}}else this.g("No debugger detected")}I(this);return!0};g.ra=function(a){return a?this.save():!0};function nc(a){(a.j.Db||!a.B&&void 0===a.G.run)&&a.Fa(!0)}g.Fb=function(){return 0};
|
||||
function lc(a){void 0===a.i.Za&&(a.i.Za=0);void 0===a.i.Na&&(a.i.Na=-1);void 0===a.i.Pa&&(a.i.Pa=-1);a.j.Ia=0<=a.i.Za&&0<a.i.Na;a.j.Ia&&(a.i.Ya=0,a.i.Oa=a.i.Za-a.J)}function oc(a,b){if(a.j.Ia){var c=!1;a.i.Ya=a.i.Ya+a.Fb()|0;a.i.Oa-=b;0>=a.i.Oa&&(a.i.Oa+=a.i.Na,c=!0);0<=a.i.Pa&&a.i.Pa<=pc(a)&&(a.i.Na=a.i.Pa=-1,lc(a),a.U(),c=!0);c&&a.g(pc(a)+" cycles: checksum="+n(a.i.Ya))}}
|
||||
g.ha=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.G[b]=c;a=!0;break;case "run":this.G[b]=c;c.onclick=function(){var a;if(a=d.s)if(a=d.s,a.j.W)a=!0;else{var b=null,c,h=C(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.Ka);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.W);c++);c==h.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.j.Ka?"powered yet":"ready yet"+(b.lb?" (waiting for notification)":""))+".");a=!1}a&&(d.j.X?d.U(!0):d.Fa(!0))};a=!0;break;
|
||||
case "speed":this.G[b]=c;a=!0;break;case "setSpeed":this.G[b]=c,c.onclick=function(){qc(d,d.i.Ca<<1,!0)},c.textContent=this.i.Aa.toFixed(2)+"Mhz",a=!0}return a};function rc(a,b,c){a.J+=b;c&&(a.D=a.b=0)}
|
||||
function sc(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.i.Ca&&a.i.za&&(d=a.i.za/a.i.qb);a.i.Hb=Math.round(1E3/30);a.i.Yb=Math.floor(a.i.Ra/c*d);a.i.rb=Math.floor(a.i.Ra/30*d);a.i.Jb=Math.floor(a.i.Ra/60*d);a.i.Ib=Math.floor(a.i.Ra/2*d);b||(a.i.Qa=a.i.rb,a.i.ab=a.i.Jb,a.i.$a=a.i.Ib);a.i.sb=0}function pc(a){return a.J+a.F+a.D-a.b}function kc(a){a.i.za=0;a.J=a.F=a.D=a.b=0;lc(a);qc(a,1)}
|
||||
function qc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.za/a.i.Aa?b=1:d=!0;a.i.Ca=b;b=a.i.qb*a.i.Ca;if(a.i.Aa!=b){a.i.Aa=b;b=a.i.Aa.toFixed(2)+"Mhz";var e=a.G.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.s&&a.s.fb()}rc(a,a.F);a.F=0;a.i.Ma=ua();a.i.Ba=0;sc(a);return d}
|
||||
g.Fa=function(a){if(pb(this,!0)){if(!this.j.X){qc(this);this.s&&this.s.start(this.i.Ma,pc(this));this.j.X=!0;this.j.pb=!0;this.w&&this.w.Zb();var b=this.G.run;b&&(b.textContent="Halt");this.s&&(this.s.ka(!0),a&&this.s.fb(!0))}this.i.sb>=this.i.Ra&&sc(this,!0);this.i.bb=0;this.i.mb=ua();this.i.Ba&&(a=this.i.mb-this.i.Ba,a>this.i.Hb&&(this.i.Ma+=a,this.i.Ma>this.i.mb&&(this.i.Ma=this.i.mb)));try{do{var c=this.j.Ia?1:this.i.Yb;this.w&&(this.w.Nb(),c=this.w.ac(0,c),c=this.w.$b(c));try{this.Ta(c)}catch(e){if("number"!=
|
||||
typeof e)throw e;}var d=this.D-this.b;this.F+=d;this.i.bb+=d;rc(this,0,!0);oc(this,d);this.i.ab-=d;0>=this.i.ab&&(this.i.ab+=this.i.Jb);this.i.$a-=d;0>=this.i.$a&&(this.i.$a+=this.i.Ib,this.s&&this.s.ka());this.i.Qa-=d;if(0>=this.i.Qa){this.i.Qa+=this.i.rb;break}}while(this.j.X)}catch(e){this.U();I(this);this.s&&this.s.stop(ua(),pc(this));pb(this,!1);sb(this,e.stack||e.message);return}c=setTimeout;d=this.ga;this.i.Ba=ua();a=this.i.Hb;this.i.bb&&(a=Math.round(a*this.i.bb/this.i.rb));a-=this.i.Ba-this.i.mb;
|
||||
if(b=this.i.Ba-this.i.Ma)this.i.za=Math.round(this.F/(10*b))/100,864E5<=b&&(this.J=0,this.w&&this.w.Nb(!0),qc(this));if(0>a||this.i.za<this.i.Aa)a=0;this.i.sb+=this.i.bb;this.i.Ba+=a;c(d,a)}else I(this),this.s&&this.s.stop(ua(),pc(this))};g.Ta=function(){return 0};g.U=function(a){qb(this,!0);this.D-=this.b;this.b=0;rc(this,this.F);this.F=0;if(this.j.X){this.j.X=!1;this.w&&this.w.Zb();var b=this.G.run;b&&(b.textContent="Run")}this.j.kb=a};function I(a,b){a.s&&a.s.ka(b)}
|
||||
function tc(a){this.Gb=a.model||8080;hc.call(this,a,1E6);this.ca=uc;kc(this);this.j.kb=this.j.Tb=!1;this.V=0;this.ia=[];this.P=this.Z=this.H=this.T=this.R=this.K=0;vc(this)}z(tc,hc);g=tc.prototype;g.reset=function(){this.j.X&&this.U();vc(this);kc(this);this.j.Ja=!1};function vc(a){a.S=0;a.aa=0;a.ea=0;a.ba=0;a.fa=0;a.ja=0;a.la=0;a.Ea=0;a.O=0;wc(a,0);a.N=0}g.Fb=function(){var a=this.S+this.aa+this.ea+this.ba+this.fa+this.ja+this.la|0;return a=a+this.Ea+this.O+xc(this)|0};
|
||||
g.save=function(){var a=new J(this);M(a,0,[this.S,this.aa,this.ea,this.ba,this.fa,this.ja,this.la,this.Ea,this.O,xc(this)]);M(a,1,[this.L,this.N,this.J,this.i.Ca]);for(var b=this.A,c=0,d=[],e=0;e<b.J;e++){var f=b.A[e];if(f.ua||f.Ub){d[c++]=e;var k=c++;a:if(f=f.save()){for(var h=0,l=0,m=[];h<f.length;){for(var p=f[h],r=h+1;r<f.length&&f[r]===p;)r++;m[l++]=r-h;m[l++]=p;h=r}if(m.length<f.length){f=m;break a}}d[k]=f}}M(a,2,d);return a.data()};
|
||||
g.restore=function(a){var b=a[0];this.S=b[0];this.aa=b[1];this.ea=b[2];this.ba=b[3];this.fa=b[4];this.ja=b[5];this.la=b[6];this.Ea=b[7]&65535;this.O=b[8]&65535;wc(this,b[9]);b=a[1];this.L=b[0];this.N=b[1];this.J=b[2];qc(this,b[3]);a:{b=this.A;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.R){for(var f=0,k=Array(b.R),h=0;h<e.length-1;)for(var l=e[h++],m=e[h++];l--;)k[f++]=m;e=k}f=b.A[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
g.ha=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "D":case "E":case "H":case "L":case "SP":case "PC":case "F":case "SF":case "ZF":case "AF":case "PF":case "CF":this.G[b]=c;this.V++;d=!0;break;default:d=this.parent.ha.call(this,a,b,c)}return d};function yc(a){return a.aa<<8|a.ea}function zc(a,b){a.aa=b>>8&255;a.ea=b&255}function Zc(a){return a.ba<<8|a.fa}function $c(a,b){a.ba=b>>8&255;a.fa=b&255}
|
||||
function xc(a){return a.Da&-214|(a.M&128?128:0)|(a.I&255?0:64)|((a.M^a.C)&16?16:0)|(ub[a.M&255]?4:0)|(a.I&256?1:0)}function wc(a,b){a.I=a.M=a.C=0;b&1&&(a.I|=256);b&4||(a.M|=1);b&16&&(a.C|=16);b&64||(a.I|=255);b&128&&(a.M^=192);a.Da=a.Da&-513|b&512|2}function ad(a,b){a.C=b;b=(a.M=b+1)&255;a.I=a.I&-256|b;return b}function bd(a,b){a.C=b;b=(a.M=b-1)&255;a.I=a.I&-256|b;return b}function cd(a,b){return a.ia[(b&a.K)>>>a.P].Sa(b&a.H,b)}function dd(a){var b=cd(a,a.O);a.O=a.O+1&65535;return b}
|
||||
function ed(a){var b;b=a.O;var c=b&a.H,d=(b&a.K)>>>a.P;c<a.H?b=a.ia[d].Lb(c,b):(c=a.ia[d].Sa(c,b),b=c|=a.ia[d+1&a.R].Sa(0,b+1)<<8);a.O=a.O+2&65535;return b}function N(a,b,c,d){d=d||2;a.G[b]&&(void 0===c&&(sb(a,"Value for "+b+" is invalid"),a.U()),c=!a.j.X||a.j.Eb?n(c,d):"--------".substr(0,d),a.G[b].textContent!=c&&(a.G[b].textContent=c))}
|
||||
g.ka=function(a){this.V&&(a||!this.j.X||this.j.Eb)&&(N(this,"A",this.S),N(this,"B",this.aa),N(this,"C",this.ea),N(this,"D",this.ba),N(this,"E",this.fa),N(this,"H",this.ja),N(this,"L",this.la),N(this,"SP",this.Ea,4),N(this,"PC",this.O,4),a=xc(this),N(this,"F",a,2),N(this,"SF",a&128,1),N(this,"ZF",a&64,1),N(this,"AF",a&16,1),N(this,"PF",a&4,1),N(this,"CF",a&1,1));if(a=this.G.speed)a.textContent=this.j.X&&this.i.za?this.i.za.toFixed(2)+"Mhz":"Stopped"};
|
||||
g.Ta=function(a){this.j.kb=!0;var b=this.j.Tb=this.B&&fd(this.B),c=a?this.j.pb?0:1:-1;this.j.pb=!1;this.D=this.b=a;this.w&&!a&&this.w.Nb();a||(this.L|=4);do{if(this.N&&this.N&4){this.L=this.b=0;break}if(b){if(gd(this.B,this.O,c)){this.U();break}c=1}this.L=0;this.ca[dd(this)].call(this)}while(0<this.b);return this.j.kb?this.D-this.b:void 0===this.j.kb?0:-1};Qa(function(){for(var a=F(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new tc(d);mb(d,c)}});function hd(){this.b-=4}
|
||||
function O(){this.O=this.O-1&65535;nb(this,"unimplemented opcode",!0);this.U()}
|
||||
var uc=[hd,function(){zc(this,ed(this));this.b-=10},function(){var a=yc(this);this.ia[(a&this.K)>>>this.P].hb(a&this.H,this.S&255,a);this.b-=7},function(){zc(this,yc(this)+1);this.b-=5},function(){this.aa=ad(this,this.aa);this.b-=5},function(){this.aa=bd(this,this.aa);this.b-=5},function(){this.aa=dd(this);this.b-=7},function(){var a=this.S<<1;this.S=a&255|a>>8;this.I=this.I&255|a&256;this.b-=4},hd,function(){var a,b=a=(this.ja<<8|this.la)+yc(this);this.ja=b>>8&255;this.la=b&255;this.I=this.I&255|
|
||||
a>>8&256;this.b-=10},function(){this.S=cd(this,yc(this));this.b-=7},function(){zc(this,yc(this)-1);this.b-=5},function(){this.ea=ad(this,this.ea);this.b-=5},function(){this.ea=bd(this,this.ea);this.b-=5},function(){this.ea=dd(this);this.b-=7},function(){var a=this.S<<8&256;this.S=(a|this.S)>>1;this.I=this.I&255|a;this.b-=4},hd,function(){$c(this,ed(this));this.b-=10},function(){var a=Zc(this);this.ia[(a&this.K)>>>this.P].hb(a&this.H,this.S&255,a);this.b-=7},function(){$c(this,Zc(this)+1);this.b-=
|
||||
5},function(){this.ba=ad(this,this.ba);this.b-=5},function(){this.ba=bd(this,this.ba);this.b-=5},function(){this.ba=dd(this);this.b-=7},function(){var a=this.S<<1;this.S=a&255|this.I>>8;this.I=this.I&255|a&256;this.b-=4},hd,function(){var a,b=a=(this.ja<<8|this.la)+Zc(this);this.ja=b>>8&255;this.la=b&255;this.I=this.I&255|a>>8&256;this.b-=10},function(){this.S=cd(this,Zc(this));this.b-=7},function(){$c(this,Zc(this)-1);this.b-=5},function(){this.fa=ad(this,this.fa);this.b-=5},function(){this.fa=bd(this,
|
||||
this.fa);this.b-=5},function(){this.fa=dd(this);this.b-=7},function(){var a=this.S<<8&256;this.S=(this.I&256|this.S)>>1;this.I=this.I&255|a;this.b-=4},O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,
|
||||
O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O];function id(a){x.call(this,"ROM",a,id);this.s=null;this.F=a.addr;this.w=a.size;this.C=a.alias;this.D=a.file;this.H=ea(this.D);if(this.D){a=this.D;var b=fa(this.H);"json"!=b&&"hex"!=b&&(a=xa()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;u(a,null,!0,function(a,b,f){jd(c,a,b,f)})}}z(id);id.prototype.La=function(a,b,c,d){this.A=b;this.b=c;this.B=d;kd(this)};
|
||||
id.prototype.sa=function(){if(this.qa){if(this.B){var a=this.B,b=this.id,c=this.F,d=this.w,e=this.qa,f=[],k;for(k in e){var h=e[k];"number"==typeof h&&(e[k]=h={o:h});var l=h.o,m=h.a;if(void 0!==l){var p=f,l=[l>>>0,k],r=ta(p,l,a.wb);0>r&&p.splice(-(r+1),0,l)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({bc:b,u:c,Xb:d,qa:e,xb:f})}delete this.qa}return!0};id.prototype.ra=function(){return!0};
|
||||
function jd(a,b,c,d){if(d)a.da("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.zb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,k=e.data;if(f)a.s=f;else if(k)for(a.s=Array(4*k.length),d=c=0;c<k.length;c++)a.s[d++]=k[c]&255,a.s[d++]=k[c]>>8&255,a.s[d++]=k[c]>>16&255,a.s[d++]=k[c]>>24&255;else a.s=e;a.qa=e.symbols;if(!a.s.length){v("Empty ROM: "+b);return}if(1==a.s.length){v(a.s[0]);return}}catch(h){a.da("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.s=Array(b.length),e=0;e<b.length;e++)a.s[e]=da(b[e],16);kd(a)}}
|
||||
function kd(a){if(!rb(a))if(!a.D)G(a);else if(a.s&&a.A){if(a.s.length!=a.w)sb(a,"ROM size (0x"+n(a.s.length)+") does not match specified size ("+("0x"+n(a.w))+")");else{var b;b=a.F;if(Ab(a.A,b,a.w,Wb)){for(var c=0;c<a.s.length;c++){var d=a.A,e=b+c;d.A[(e&d.w)>>>d.P].Ua(e&d.s,a.s[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.C?b.push(a.C):null!=a.C&&a.C.length&&(b=a.C);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.A,k=f.w,h=[],l=f.F>>>e.P;0<k&&l<e.A.length;)h.push(e.A[l++]),k-=e.Z;e=f.A;
|
||||
f=f.w;k=0;for(d>>>=e.P;0<f&&d<e.A.length;){l=h[k++];if(!l)break;e.A[d++]=l;f-=e.Z}}delete a.s}}G(a)}}Qa(function(){for(var a=F(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new id(d);mb(d,c)}});function ld(a){x.call(this,"RAM",a,ld);this.C=a.addr;this.w=a.size;this.s=!1}z(ld);g=ld.prototype;g.La=function(a,b,c,d){this.A=b;this.b=c;this.B=d;G(this)};g.sa=function(a,b){b||this.reset();return!0};g.ra=function(a){return a?this.save():!0};
|
||||
g.reset=function(){!this.s&&this.w&&Ab(this.A,this.C,this.w,1)&&(this.s=!0,this.status(Math.floor(this.w/1024)+"Kb allocated"));this.s||v("No RAM allocated")};g.save=function(){return null};g.restore=function(){return!0};Qa(function(){for(var a=F(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new ld(d);mb(d,c)}});function md(a){x.call(this,"Keyboard",a,md,65536);G(this)}z(md);
|
||||
Qa(function(){for(var a=F(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new md(d);mb(d,c)}});function nd(a){x.call(this,"Video",a,nd,262144);G(this)}z(nd);
|
||||
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function vb(a){x.call(this,"Panel",a,vb)}z(vb);g=vb.prototype;g.ka=function(a,b,c,d){return this.s&&this.s.ka(a,b,c,d)||this.b&&this.b.ka(a,b,c,d)||this.w&&this.w.ka(a,b,c,d)||this.C&&this.C.ka(a,b,c,d)?!0:this.parent.ka.call(this,a,b,c,d)};g.Ma=function(a,b,c,d){this.s=a;this.A=b;this.b=c;this.C=d;this.w=wb(a,"Keyboard")};g.sa=function(a,b){b||xb();return!0};g.ra=function(){return!0};g.la=function(){};
|
||||
function xb(){for(var a=!1,b=F(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),f;a:{f=e.id;if(void 0!==f)for(var k=void 0,k=0;k<y.length;k++)if(y[k].id===f){f=y[k];break a}f=null}f||(a=!0,f=new vb(e));cb(f,d);a&&G(f)}}Qa(xb);
|
||||
function yb(a,b,c){x.call(this,"Bus",a,yb);this.b=b;this.C=c;this.K=a.buswidth||16;this.N=Math.pow(2,this.K);this.w=this.N-1|0;this.P=20>=this.K?12:24>=this.K?14:15;this.aa=1<<this.P;this.S=this.aa>>2;this.s=this.aa-1;this.J=this.N/this.aa|0;this.M=this.J-1;this.B=[];this.D=[];this.F=this.I=!1;this.T=[];this.V=[];a=new H;zb(a,this.C);this.A=Array(this.J);for(b=0;b<this.J;b++)this.A[b]=a;a=this.b;b=this.A;c=this.P;var d=this.w;a.Y=b;a.P=c;a.aa=1<<a.P;a.D=a.aa-1;a.T=b.length;a.S=a.T-1;a.K=d;G(this)}
|
||||
z(yb);yb.prototype.reset=function(){};yb.prototype.sa=function(a,b){b||this.reset();return!0};function Ab(a,b,c,d){for(var e=b>>>a.P;0<c&&e<a.A.length;){var f=a.A[e],k=e*a.aa,h=c>a.aa?a.aa:c;if(f&&f.size){if(f.type==d){if(b+c<=f.u)return f.hb+=f.u-b,f.u=b,!0;if(b>=f.u+f.hb){h=f.size-(b-k);h>c&&(h=c);f.hb=b-f.u+h;c-=h;b=k+a.aa;continue}}return Bb(1,b,c)}f=a.A[e];b=new H(b,h,a.aa,d);zb(b,a.C,f);a.A[e++]=b;b=k+a.aa;c-=h}return 0>=c?!0:Bb(2,b,c)}
|
||||
function Cb(a,b){return a.A[(b&a.w)>>>a.P].fb(b&a.s,b)}function Db(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Eb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.D[b]&&(a.D[b]=[null,!1]);a.D[b][1]=!a.D[b][1];return a.D[b][1]}function Bb(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Fb;
|
||||
if(tb){var Gb=new ArrayBuffer(2);(new DataView(Gb)).setUint16(0,256,!0);Fb=256===(new Uint16Array(Gb))[0]}else Fb=!1;var Hb=Fb;
|
||||
function H(a,b,c,d){this.id=Ib+=2;this.b=null;this.u=a;this.hb=b;this.size=c||0;this.type=d||Jb;this.A=d==Kb;zb(this);this.ua=this.Vb=!1;if(c)if(tb)this.D=new ArrayBuffer(c),this.F=new DataView(this.D,0,c),this.H=new Uint8Array(this.D,0,c),this.J=new Uint16Array(this.D,0,c>>1),this.b=new Int32Array(this.D,0,c>>2),Lb(this,Hb?Mb:Zb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Lb(this,$b)}else Lb(this)}var Jb=0,Kb=2,ac=["NONE","RAM","ROM","VIDEO","H/W"],Ib=0;
|
||||
H.prototype={constructor:H,parent:null,save:function(){var a,b;if(tb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.F.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(tb)for(b=0;b<a.length;b++)this.F.setInt32(b<<2,a[b],!0);else this.b=a;return this.ua=!0}return!1},xa:function(a,b){b?0===this.w++&&bc(this,cc,!1):0===this.s++&&dc(this,cc,!1)},K:function(){this.C&&eb(this.C,129)&&this.C.message("attempt to read invalid block %"+n(this.u),!0);
|
||||
return 255},B:function(a,b){this.C&&eb(this.C,129)&&this.C.message("attempt to write "+q(b)+" to invalid block %"+n(this.u),!0)},M:function(a,b){return this.Ta(a++,b++)|this.Ta(a,b)<<8},I:function(a,b,c){this.Ga(a++,b&255,c++);this.Ga(a,b>>8,c)},V:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},na:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},Ha:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.ua=!0},jb:function(a,
|
||||
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.ua=!0},S:function(a,b){if(this.C&&null!=this.u){var c=this.C;ec(c,this.u+a,1,c.S)&&c.U(!0)}return this.fb(a,b)},ja:function(a,b){if(this.C&&null!=this.u){var c=this.C;ec(c,this.u+a,2,c.S)&&c.U(!0)}return this.tb(a,b)},va:function(a,b,c){if(this.C&&null!=this.u){var d=this.C;ec(d,this.u+a,1,d.F)&&d.U(!0)}this.A?this.B(a,b,c):this.Va(a,b,c)},Xa:function(a,b,
|
||||
c){if(this.C&&null!=this.u){var d=this.C;ec(d,this.u+a,2,d.F)&&d.U(!0)}this.A?this.B(a,b,c):this.ub(a,b,c)},N:function(a){return this.H[a]},T:function(a){return this.H[a]},ea:function(a){return this.F.getUint16(a,!0)},ma:function(a){return a&1?this.H[a]|this.H[a+1]<<8:this.J[a>>1]},pa:function(a,b){this.H[a]=b;this.ua=!0},wa:function(a,b){this.H[a]=b;this.ua=!0},Wa:function(a,b){this.F.setUint16(a,b,!0);this.ua=!0},Ya:function(a,b){a&1?(this.H[a]=b,this.H[a+1]=b>>8):this.J[a>>1]=b;this.ua=!0}};
|
||||
function zb(a,b,c){a.C=b;a.s=a.w=0;c&&((a.s=c.s)&&dc(a,cc,!1),(a.w=c.w)&&bc(a,cc,!1))}function fc(a,b){b?0===--a.w&&(a.Ga=a.A?a.B:a.Va,a.Pb=a.A?a.I:a.ub):0===--a.s&&(a.Ta=a.fb,a.Mb=a.tb)}function bc(a,b,c){c&&a.w||(a.Ga=!a.A&&b[2]||a.B,a.Pb=!a.A&&b[3]||a.I);if(c||void 0===c)a.Va=b[2]||a.B,a.ub=b[3]||a.I}function dc(a,b,c){c&&a.s||(a.Ta=b[0]||a.K,a.Mb=b[1]||a.M);if(c||void 0===c)a.fb=b[0]||a.K,a.tb=b[1]||a.M}function Lb(a,b){b||(b=gc);dc(a,b,void 0);bc(a,b,void 0)}
|
||||
var gc=[],$b=[H.prototype.V,H.prototype.na,H.prototype.Ha,H.prototype.jb],cc=[H.prototype.S,H.prototype.ja,H.prototype.va,H.prototype.Xa];if(tb)var Zb=[H.prototype.N,H.prototype.ea,H.prototype.pa,H.prototype.Wa],Mb=[H.prototype.T,H.prototype.ma,H.prototype.wa,H.prototype.Ya];
|
||||
function hc(a,b){x.call(this,"CPU",a,hc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Sa=c;this.i.Ca=d;this.i.qb=Math.round(this.i.Sa/1E4)/100;this.i.Aa=this.i.qb*this.i.Ca;this.j.X=!1;this.j.pb=!1;this.j.Eb=a.autoStart;this.j.Fb=!1;this.j.Ja=!1;this.i.Za=this.i.Pa=0;this.i.$a=a.csStart;this.i.Oa=a.csInterval;this.i.Qa=a.csStop;this.ja=this.Fa.bind(this);G(this)}z(hc);var ic=["power","reset"];g=hc.prototype;
|
||||
g.Ma=function(a,b,c,d){this.s=a;this.A=b;this.C=d;for(b=0;b<ic.length;b++)(c=this.H[ic[b]])&&this.s.ka(null,ic[b],c);wb(a,"FPU");this.w=wb(a,"ChipSet");a=jc(a,"autoStart");null!=a&&(this.j.Eb="true"==a?!0:"false"==a?!1:!!a);G(this)};g.reset=function(){};g.save=function(){return null};g.restore=function(){return!1};
|
||||
g.sa=function(a,b){if(!b){if(a&&this.restore){kc(this);if(!this.restore(a))return!1;lc(this)}else this.reset();if(this.C){var c=this.C;c.g("Type ? for help with PC8080 Debugger commands");c.la();if(c.Ya){var d=c.Ya;c.Ya=null;mc(c,d)}}else this.g("No debugger detected")}I(this);return!0};g.ra=function(a){return a?this.save():!0};function nc(a){(a.j.Eb||!a.C&&void 0===a.H.run)&&a.Fa(!0)}g.Gb=function(){return 0};
|
||||
function lc(a){void 0===a.i.$a&&(a.i.$a=0);void 0===a.i.Oa&&(a.i.Oa=-1);void 0===a.i.Qa&&(a.i.Qa=-1);a.j.Ja=0<=a.i.$a&&0<a.i.Oa;a.j.Ja&&(a.i.Za=0,a.i.Pa=a.i.$a-a.J)}function oc(a,b){if(a.j.Ja){var c=!1;a.i.Za=a.i.Za+a.Gb()|0;a.i.Pa-=b;0>=a.i.Pa&&(a.i.Pa+=a.i.Oa,c=!0);0<=a.i.Qa&&a.i.Qa<=pc(a)&&(a.i.Oa=a.i.Qa=-1,lc(a),a.U(),c=!0);c&&a.g(pc(a)+" cycles: checksum="+n(a.i.Za))}}
|
||||
g.ka=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.H[b]=c;a=!0;break;case "run":this.H[b]=c;c.onclick=function(){var a;if(a=d.s)if(a=d.s,a.j.W)a=!0;else{var b=null,c,h=C(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.La);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.W);c++);c==h.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.j.La?"powered yet":"ready yet"+(b.lb?" (waiting for notification)":""))+".");a=!1}a&&(d.j.X?d.U(!0):d.Fa(!0))};a=!0;break;
|
||||
case "speed":this.H[b]=c;a=!0;break;case "setSpeed":this.H[b]=c,c.onclick=function(){qc(d,d.i.Ca<<1,!0)},c.textContent=this.i.Aa.toFixed(2)+"Mhz",a=!0}return a};function rc(a,b,c){a.J+=b;c&&(a.F=a.b=0)}
|
||||
function sc(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.i.Ca&&a.i.za&&(d=a.i.za/a.i.qb);a.i.Ib=Math.round(1E3/30);a.i.Zb=Math.floor(a.i.Sa/c*d);a.i.rb=Math.floor(a.i.Sa/30*d);a.i.Kb=Math.floor(a.i.Sa/60*d);a.i.Jb=Math.floor(a.i.Sa/2*d);b||(a.i.Ra=a.i.rb,a.i.bb=a.i.Kb,a.i.ab=a.i.Jb);a.i.sb=0}function pc(a){return a.J+a.I+a.F-a.b}function kc(a){a.i.za=0;a.J=a.I=a.F=a.b=0;lc(a);qc(a,1)}
|
||||
function qc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.za/a.i.Aa?b=1:d=!0;a.i.Ca=b;b=a.i.qb*a.i.Ca;if(a.i.Aa!=b){a.i.Aa=b;b=a.i.Aa.toFixed(2)+"Mhz";var e=a.H.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.s&&a.s.gb()}rc(a,a.I);a.I=0;a.i.Na=ua();a.i.Ba=0;sc(a);return d}
|
||||
g.Fa=function(a){if(fb(this,!0)){if(!this.j.X){qc(this);this.s&&this.s.start(this.i.Na,pc(this));this.j.X=!0;this.j.pb=!0;this.w&&this.w.$b();var b=this.H.run;b&&(b.textContent="Halt");this.s&&(this.s.la(!0),a&&this.s.gb(!0))}this.i.sb>=this.i.Sa&&sc(this,!0);this.i.cb=0;this.i.mb=ua();this.i.Ba&&(a=this.i.mb-this.i.Ba,a>this.i.Ib&&(this.i.Na+=a,this.i.Na>this.i.mb&&(this.i.Na=this.i.mb)));try{do{var c=this.j.Ja?1:this.i.Zb;this.w&&(this.w.Ob(),c=this.w.bc(0,c),c=this.w.ac(c));try{this.Ua(c)}catch(e){if("number"!=
|
||||
typeof e)throw e;}var d=this.F-this.b;this.I+=d;this.i.cb+=d;rc(this,0,!0);oc(this,d);this.i.bb-=d;0>=this.i.bb&&(this.i.bb+=this.i.Kb);this.i.ab-=d;0>=this.i.ab&&(this.i.ab+=this.i.Jb,this.s&&this.s.la());this.i.Ra-=d;if(0>=this.i.Ra){this.i.Ra+=this.i.rb;break}}while(this.j.X)}catch(e){this.U();I(this);this.s&&this.s.stop(ua(),pc(this));fb(this,!1);sb(this,e.stack||e.message);return}c=setTimeout;d=this.ja;this.i.Ba=ua();a=this.i.Ib;this.i.cb&&(a=Math.round(a*this.i.cb/this.i.rb));a-=this.i.Ba-this.i.mb;
|
||||
if(b=this.i.Ba-this.i.Na)this.i.za=Math.round(this.I/(10*b))/100,864E5<=b&&(this.J=0,this.w&&this.w.Ob(!0),qc(this));if(0>a||this.i.za<this.i.Aa)a=0;this.i.sb+=this.i.cb;this.i.Ba+=a;c(d,a)}else I(this),this.s&&this.s.stop(ua(),pc(this))};g.Ua=function(){return 0};g.U=function(a){gb(this,!0);this.F-=this.b;this.b=0;rc(this,this.I);this.I=0;if(this.j.X){this.j.X=!1;this.w&&this.w.$b();var b=this.H.run;b&&(b.textContent="Run")}this.j.kb=a};function I(a,b){a.s&&a.s.la(b)}
|
||||
function tc(a){this.Hb=a.model||8080;hc.call(this,a,1E6);this.ea=uc;kc(this);this.j.kb=this.j.Ub=!1;this.V=0;this.Y=[];this.P=this.aa=this.D=this.T=this.S=this.K=0;vc(this)}z(tc,hc);g=tc.prototype;g.reset=function(){this.j.X&&this.U();vc(this);kc(this);this.j.Ka=!1};function vc(a){a.O=0;a.ba=0;a.ga=0;a.ca=0;a.ha=0;a.da=0;a.ia=0;a.Ea=0;a.R=0;wc(a,0);a.N=0}g.Gb=function(){var a=this.O+this.ba+this.ga+this.ca+this.ha+this.da+this.ia|0;return a=a+this.Ea+this.R+xc(this)|0};
|
||||
g.save=function(){var a=new J(this);M(a,0,[this.O,this.ba,this.ga,this.ca,this.ha,this.da,this.ia,this.Ea,this.R,xc(this)]);M(a,1,[this.M,this.N,this.J,this.i.Ca]);for(var b=this.A,c=0,d=[],e=0;e<b.J;e++){var f=b.A[e];if(f.ua||f.Vb){d[c++]=e;var k=c++;a:if(f=f.save()){for(var h=0,l=0,m=[];h<f.length;){for(var p=f[h],r=h+1;r<f.length&&f[r]===p;)r++;m[l++]=r-h;m[l++]=p;h=r}if(m.length<f.length){f=m;break a}}d[k]=f}}M(a,2,d);return a.data()};
|
||||
g.restore=function(a){var b=a[0];this.O=b[0];this.ba=b[1];this.ga=b[2];this.ca=b[3];this.ha=b[4];this.da=b[5];this.ia=b[6];this.Ea=b[7]&65535;this.R=b[8]&65535;wc(this,b[9]);b=a[1];this.M=b[0];this.N=b[1];this.J=b[2];qc(this,b[3]);a:{b=this.A;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.S){for(var f=0,k=Array(b.S),h=0;h<e.length-1;)for(var l=e[h++],m=e[h++];l--;)k[f++]=m;e=k}f=b.A[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
g.ka=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "D":case "E":case "H":case "L":case "SP":case "PC":case "F":case "SF":case "ZF":case "AF":case "PF":case "CF":this.H[b]=c;this.V++;d=!0;break;default:d=this.parent.ka.call(this,a,b,c)}return d};function yc(a){return a.ba<<8|a.ga}function zc(a,b){a.ba=b>>8&255;a.ga=b&255}function Ac(a){return a.ca<<8|a.ha}function Bc(a,b){a.ca=b>>8&255;a.ha=b&255}function Cc(a){return a.da<<8|a.ia}function Dc(a,b){a.da=b>>8&255;a.ia=b&255}
|
||||
function cd(a){return(a.L^a.B)&16?16:0}function xc(a){return a.Da&-214|(a.L&128?128:0)|(a.G&255?0:64)|cd(a)|(ub[a.L&255]?4:0)|(a.G&256?1:0)}function wc(a,b){a.G=a.L=a.B=0;b&1&&(a.G|=256);b&4||(a.L|=1);b&16&&(a.B|=16);b&64||(a.G|=255);b&128&&(a.L^=192);a.Da=a.Da&-513|b&512|2}function dd(a,b){a.B=b;b=(a.L=b+1)&255;a.G=a.G&-256|b;return b}function ed(a,b){a.B=b;b=(a.L=b-1)&255;a.G=a.G&-256|b;return b}function fd(a,b){return a.Y[(b&a.K)>>>a.P].Ta(b&a.D,b)}
|
||||
function gd(a,b){var c=b&a.D,d=(b&a.K)>>>a.P;if(c<a.D)return a.Y[d].Mb(c,b);c=a.Y[d].Ta(c,b);return c|=a.Y[d+1&a.S].Ta(0,b+1)<<8}function hd(a){var b=fd(a,a.R);a.R=a.R+1&65535;return b}function id(a){var b=gd(a,a.R);a.R=a.R+2&65535;return b}function N(a,b,c,d){d=d||2;a.H[b]&&(void 0===c&&(sb(a,"Value for "+b+" is invalid"),a.U()),c=!a.j.X||a.j.Fb?n(c,d):"--------".substr(0,d),a.H[b].textContent!=c&&(a.H[b].textContent=c))}
|
||||
g.la=function(a){this.V&&(a||!this.j.X||this.j.Fb)&&(N(this,"A",this.O),N(this,"B",this.ba),N(this,"C",this.ga),N(this,"D",this.ca),N(this,"E",this.ha),N(this,"H",this.da),N(this,"L",this.ia),N(this,"SP",this.Ea,4),N(this,"PC",this.R,4),a=xc(this),N(this,"F",a,2),N(this,"SF",a&128,1),N(this,"ZF",a&64,1),N(this,"AF",a&16,1),N(this,"PF",a&4,1),N(this,"CF",a&1,1));if(a=this.H.speed)a.textContent=this.j.X&&this.i.za?this.i.za.toFixed(2)+"Mhz":"Stopped"};
|
||||
g.Ua=function(a){this.j.kb=!0;var b=this.j.Ub=this.C&&jd(this.C),c=a?this.j.pb?0:1:-1;this.j.pb=!1;this.F=this.b=a;this.w&&!a&&this.w.Ob();a||(this.M|=4);do{if(this.N&&this.N&4){this.M=this.b=0;break}if(b){if(kd(this.C,this.R,c)){this.U();break}c=1}this.M=0;this.ea[hd(this)].call(this)}while(0<this.b);return this.j.kb?this.F-this.b:void 0===this.j.kb?0:-1};Qa(function(){for(var a=F(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new tc(d);cb(d,c)}});function ld(){this.b-=4}
|
||||
function O(){this.R=this.R-1&65535;db(this,"unimplemented opcode",!0);this.U()}
|
||||
var uc=[ld,function(){zc(this,id(this));this.b-=10},function(){var a=yc(this);this.Y[(a&this.K)>>>this.P].Ga(a&this.D,this.O&255,a);this.b-=7},function(){zc(this,yc(this)+1);this.b-=5},function(){this.ba=dd(this,this.ba);this.b-=5},function(){this.ba=ed(this,this.ba);this.b-=5},function(){this.ba=hd(this);this.b-=7},function(){var a=this.O<<1;this.O=a&255|a>>8;this.G=this.G&255|a&256;this.b-=4},ld,function(){var a;Dc(this,a=Cc(this)+yc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.O=
|
||||
fd(this,yc(this));this.b-=7},function(){zc(this,yc(this)-1);this.b-=5},function(){this.ga=dd(this,this.ga);this.b-=5},function(){this.ga=ed(this,this.ga);this.b-=5},function(){this.ga=hd(this);this.b-=7},function(){var a=this.O<<8&256;this.O=(a|this.O)>>1;this.G=this.G&255|a;this.b-=4},ld,function(){Bc(this,id(this));this.b-=10},function(){var a=Ac(this);this.Y[(a&this.K)>>>this.P].Ga(a&this.D,this.O&255,a);this.b-=7},function(){Bc(this,Ac(this)+1);this.b-=5},function(){this.ca=dd(this,this.ca);this.b-=
|
||||
5},function(){this.ca=ed(this,this.ca);this.b-=5},function(){this.ca=hd(this);this.b-=7},function(){var a=this.O<<1;this.O=a&255|this.G>>8;this.G=this.G&255|a&256;this.b-=4},ld,function(){var a;Dc(this,a=Cc(this)+Ac(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.O=fd(this,Ac(this));this.b-=7},function(){Bc(this,Ac(this)-1);this.b-=5},function(){this.ha=dd(this,this.ha);this.b-=5},function(){this.ha=ed(this,this.ha);this.b-=5},function(){this.ha=hd(this);this.b-=7},function(){var a=
|
||||
this.O<<8&256;this.O=(this.G&256|this.O)>>1;this.G=this.G&255|a;this.b-=4},ld,function(){Dc(this,id(this));this.b-=10},function(){var a=id(this),b=Cc(this),c=a&this.D,d=(a&this.K)>>>this.P;c<this.D?this.Y[d].Pb(c,b&65535,a):(this.Y[d++].Ga(c,b&255,a),this.Y[d&this.S].Ga(0,b>>8&255,a+1));this.b-=16},function(){Dc(this,Cc(this)+1);this.b-=5},function(){this.da=dd(this,this.da);this.b-=5},function(){this.da=ed(this,this.da);this.b-=5},function(){this.da=hd(this);this.b-=7},function(){var a=this.O,b=
|
||||
!!(this.G&256),c=!!cd(this);9<(a&15)||c?(a+=6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.G=this.L=this.O=a&255;this.G=b?this.G|256:this.G&-257;this.B=c?~this.L&16|this.B&-17:this.L&16|this.B&-17;this.b-=4},ld,function(){var a;Dc(this,a=Cc(this)+Cc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){Dc(this,gd(this,id(this)));this.b-=16},function(){Dc(this,Cc(this)-1);this.b-=5},function(){this.ia=dd(this,this.ia);this.b-=5},function(){this.ia=ed(this,this.ia);this.b-=5},function(){this.ia=hd(this);
|
||||
this.b-=7},function(){this.O=~this.O&255;this.b-=4},O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O];
|
||||
function md(a){x.call(this,"ROM",a,md);this.s=null;this.F=a.addr;this.w=a.size;this.B=a.alias;this.D=a.file;this.I=ea(this.D);if(this.D){a=this.D;var b=fa(this.I);"json"!=b&&"hex"!=b&&(a=xa()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;u(a,null,!0,function(a,b,f){nd(c,a,b,f)})}}z(md);md.prototype.Ma=function(a,b,c,d){this.A=b;this.b=c;this.C=d;od(this)};
|
||||
md.prototype.sa=function(){if(this.qa){if(this.C){var a=this.C,b=this.id,c=this.F,d=this.w,e=this.qa,f=[],k;for(k in e){var h=e[k];"number"==typeof h&&(e[k]=h={o:h});var l=h.o,m=h.a;if(void 0!==l){var p=f,l=[l>>>0,k],r=pa(p,l,a.xb);0>r&&p.splice(-(r+1),0,l)}m&&(h.a=m.replace(/''/g,'"'))}a.I.push({cc:b,u:c,Yb:d,qa:e,yb:f})}delete this.qa}return!0};md.prototype.ra=function(){return!0};
|
||||
function nd(a,b,c,d){if(d)a.fa("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.Ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,k=e.data;if(f)a.s=f;else if(k)for(a.s=Array(4*k.length),d=c=0;c<k.length;c++)a.s[d++]=k[c]&255,a.s[d++]=k[c]>>8&255,a.s[d++]=k[c]>>16&255,a.s[d++]=k[c]>>24&255;else a.s=e;a.qa=e.symbols;if(!a.s.length){v("Empty ROM: "+b);return}if(1==a.s.length){v(a.s[0]);return}}catch(h){a.fa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.s=Array(b.length),e=0;e<b.length;e++)a.s[e]=da(b[e],16);od(a)}}
|
||||
function od(a){if(!rb(a))if(!a.D)G(a);else if(a.s&&a.A){if(a.s.length!=a.w)sb(a,"ROM size (0x"+n(a.s.length)+") does not match specified size ("+("0x"+n(a.w))+")");else{var b;b=a.F;if(Ab(a.A,b,a.w,Kb)){for(var c=0;c<a.s.length;c++){var d=a.A,e=b+c;d.A[(e&d.w)>>>d.P].Va(e&d.s,a.s[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.A,k=f.w,h=[],l=f.F>>>e.P;0<k&&l<e.A.length;)h.push(e.A[l++]),k-=e.aa;e=f.A;
|
||||
f=f.w;k=0;for(d>>>=e.P;0<f&&d<e.A.length;){l=h[k++];if(!l)break;e.A[d++]=l;f-=e.aa}}delete a.s}}G(a)}}Qa(function(){for(var a=F(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new md(d);cb(d,c)}});function pd(a){x.call(this,"RAM",a,pd);this.B=a.addr;this.w=a.size;this.s=!1}z(pd);g=pd.prototype;g.Ma=function(a,b,c,d){this.A=b;this.b=c;this.C=d;G(this)};g.sa=function(a,b){b||this.reset();return!0};g.ra=function(a){return a?this.save():!0};
|
||||
g.reset=function(){!this.s&&this.w&&Ab(this.A,this.B,this.w,1)&&(this.s=!0,this.status(Math.floor(this.w/1024)+"Kb allocated"));this.s||v("No RAM allocated")};g.save=function(){return null};g.restore=function(){return!0};Qa(function(){for(var a=F(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new pd(d);cb(d,c)}});function qd(a){x.call(this,"Keyboard",a,qd,65536);G(this)}z(qd);
|
||||
Qa(function(){for(var a=F(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new qd(d);cb(d,c)}});function rd(a){x.call(this,"Video",a,rd,262144);G(this)}z(rd);
|
||||
Qa(function(){for(var a=F(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=E(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=ya().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
|
||||
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(Pa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ja("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e.getContext("2d");d=new nd(d);mb(d,c)}});
|
||||
function od(a){x.call(this,"Debugger",a,od);this.V=this.Ga=this.K=0;this.N=P();this.yb=P();this.D=-1;this.C=[];this.ma=!1;this.ca=P();this.H=[];this.ga={};this.w=this.R=this.F=[];pd(this);this.va=0;qd(this);this.Va=[];rd(this,a.messages);this.Xa=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return mc(b,a)}):void 0===global.$&&(global.$=function(a){return mc(b,a)})}z(od);
|
||||
var sd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine","t [#]":"trace","u [#]":"unassemble",x:"execution options",v:"print version","var":"assign variable"},td="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),
|
||||
ud="B C D E H L M A F BC DE HL PSW SP PC".split(" "),vd=[[45],[42,2323,32],[71,2387],[29,2323],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,6419],[40,2387],[23,2323],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2579,32],[71,2643],[29,2579],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,6675],[40,2643],[23,2579],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2835,32],[68,99],[29,2835],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,6931],[41,99],[23,2835],[28,1297],[22,1297],[44,
|
||||
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Va.aspect);f&&.3<=f&&3.33>=f&&(Pa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ea("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e.getContext("2d");d=new rd(d);cb(d,c)}});
|
||||
function sd(a){x.call(this,"Debugger",a,sd);this.V=this.Ha=this.K=0;this.N=P();this.zb=P();this.D=-1;this.B=[];this.ma=!1;this.ea=P();this.I=[];this.ja={};this.w=this.S=this.F=[];td(this);this.va=0;ud(this);this.Wa=[];vd(this,a.messages);this.Ya=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return mc(b,a)}):void 0===global.$&&(global.$=function(a){return mc(b,a)})}z(sd);
|
||||
var wd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine","t [#]":"trace","u [#]":"unassemble",x:"execution options",v:"print version","var":"assign variable"},xd="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),
|
||||
yd="B C D E H L M A F BC DE HL PSW SP PC".split(" "),zd=[[45],[42,2323,32],[71,2387],[29,2323],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,6419],[40,2387],[23,2323],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2579,32],[71,2643],[29,2579],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,6675],[40,2643],[23,2579],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2835,32],[68,99],[29,2835],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,6931],[41,99],[23,2835],[28,1297],[22,1297],[44,
|
||||
1297,32],[16],[45,32768],[42,3347,32],[70,97],[29,3347],[28,1553],[22,1553],[44,1553,32],[72],[45,32768],[21,7443],[39,97],[23,3347],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1553],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1553],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,785],[43,529,1041],[43,529,1297],[43,529,1553],[43,529,1809],[43,785,17],[43,785,
|
||||
273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1553],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1553],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1553],[43,1297,1809],[43,1553,17],[43,1553,273],[43,1553,529],[43,1553,785],[43,1553,1041],[43,1553,1297],[43,1553,1553],[43,1553,1809],[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],
|
||||
[43,1809,1297],[43,1809,1553],[43,1809,1809],[3,17],[3,273],[3,529],[3,785],[3,1041],[3,1297],[3,1553],[3,1809],[2,17],[2,273],[2,529],[2,785],[2,1041],[2,1297],[2,1553],[2,1809],[73,17],[73,273],[73,529],[73,785],[73,1041],[73,1297],[73,1553],[73,1809],[66,17],[66,273],[66,529],[66,785],[66,1041],[66,1297],[66,1553],[66,1809],[5,17],[5,273],[5,529],[5,785],[5,1041],[5,1297],[5,1553],[5,1809],[76,17],[76,273],[76,529],[76,785],[76,1041],[76,1297],[76,1553],[76,1809],[46,17],[46,273],[46,529],[46,
|
||||
785],[46,1041],[46,1297],[46,1553],[46,1809],[18,17],[18,273],[18,529],[18,785],[18,1041],[18,1297],[18,1553],[18,1809],[58],[50,2323],[34,35],[30,35],[11,35],[51,2323],[4,33],[65],[62],[54],[38,35],[30,32803],[15,35],[7,35],[1,33],[65],[57],[50,2579],[33,35],[48,33],[10,35],[51,2579],[74,33],[65],[55],[54,32768],[31,35],[27,33],[8,35],[7,32803],[67,33],[65],[61],[50,2835],[37,35],[78],[14,35],[51,2835],[6,33],[65],[60],[49],[36,35],[75],[13,35],[7,32803],[77,33],[65],[59],[50,3091],[35,35],[24],
|
||||
[12,35],[51,3091],[47,33],[65],[56],[69],[32,35],[25],[9,35],[7,32803],[19,33],[65]],Q={cpu:1,bus:64,mem:128,port:256,timer:2048,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};g=od.prototype;
|
||||
g.La=function(a,b,c,d){this.A=b;this.b=c;this.s=a;(a=jc(a,"messages"))&&rd(this,a);this.jb=vd;wd(this,function(a){a:{var b=d.b.ia,c=a[0],h=a=0,l=b.length;if(c){a=T(U(d,c));if(-1===a){d.g("invalid address: "+c);break a}h=a>>>d.b.P;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,m=0;l--;){var p=b[h];p.type==c?m++||d.g("..."):(c=p.type,m=ac[c],p&&d.g(n(p.id)+" %"+n(h<<d.b.P)+" %%"+n(p.u)+" "+q(p.gb)+" "+q(p.size)+
|
||||
" "+m),c!=Jb&&(c=-1),m=0);a+=d.b.Z;h++}}});G(this)};
|
||||
g.ha=function(a,b,c){var d=this;switch(b){case "debugInput":return this.pa=this.G[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",mc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.D<d.C.length-1&&(b=d.C[++d.D]):40==a.keyCode&&(0<d.D?b=d.C[--d.D]:(b="",d.D=-1)),null!=b){var k=b.length;c.value=b;c.setSelectionRange(k,k)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.G[b]=c,La(c,function(){if(d.pa){var a=d.pa.value;d.pa.value=
|
||||
"";mc(d,a,!0);return!0}return!1}),!0;case "step":return this.G[b]=c,La(c,function(a){var b=!1;qb(d,!0)||(pb(d,!0),b=d.Ta(a?1:0),pb(d,!1));return b}),!0}return!1};g.fb=function(){this.pa&&this.pa.focus()};function T(a){a=a&&a.u;null==a&&(a=-1);return a}g.ta=function(a,b){var c=255,d=T(a);-1!==d&&(c=Cb(this.A,d),b&&xd(a,b));return c};g.ib=function(a,b){var c=65535,d=T(a);if(-1!==d){var c=this.A,e=d&c.s,f=(d&c.w)>>>c.P,c=e!=c.s?c.A[f].tb(e,d):c.A[f++].eb(e,d)|c.A[f&c.L].eb(0,d+1)<<8;b&&xd(a,b)}return c};
|
||||
g.ub=function(a,b,c){var d=T(a);if(-1!==d){var e=this.A;e.A[(d&e.w)>>>e.P].Ua(d&e.s,b&255,d);c&&xd(a,c);I(this.b,!0)}};g.Pb=function(a,b,c){var d=T(a);if(-1!==d){var e=this.A,f=d&e.s,k=(d&e.w)>>>e.P;f!=e.s?e.A[k].Ob(f,b&65535,d):(e.A[k++].Ua(f,b&255,d),e.A[k&e.L].Ua(0,b>>8&255,d+1));c&&xd(a,c);I(this.b,!0)}};function P(a){return{u:a||0,oa:!1}}function yd(a){return[a.u,a.oa]}function zd(a){return{u:a[0],oa:a[1]}}
|
||||
function U(a,b,c){var d;c=(c?a.N:a.yb).u;if(void 0!==b){d=b=Ad(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.H.length;c++){var f=a.H[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=P(d));break}}if(d=e)return d;c=Bd(a,b,void 0)}null!=c&&(d=P(c));return d}function Cd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Qb=Dd(a,b.Mb=c[2]))}function xd(a,b){null!=a.u&&(a.u+=b||1)}
|
||||
function Ed(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ta(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function rd(a,b){a.B=a;a.Y=a.Rb=1073741824;a.wa=null;var c=Dd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Q)0<=wa(c,d)&&(a.Y|=Q[d],a.g(d+" messages enabled"))}function wd(a,b){for(var c in Q)if(64==Q[c]){a.Va[c]=b;break}}
|
||||
function Fd(a,b){var c;a=a.toUpperCase();null==b?c=wa(ud,a):(c=wa(ud,a.substr(b,3)),0>c&&(c=wa(ud,a.substr(b,2))));return c}function Gd(a,b){var c=0,d=Hd(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 8:c=2;break;case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"}
|
||||
function Hd(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.S;break;case 8:c=xc(d)&255;break;case 0:c=d.aa;break;case 1:c=d.ea;break;case 9:c=d.aa<<8|d.ea;break;case 2:c=d.ba;break;case 3:c=d.fa;break;case 10:c=d.ba<<8|d.fa;break;case 4:c=d.ja;break;case 5:c=d.la;break;case 11:c=d.ja<<8|d.la;break;case 12:c=d.S<<8|xc(d)&255;break;case 13:c=d.Ea;break;case 14:c=d.O}}return c}
|
||||
function Id(a,b){b=Ad(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Fd(b,c+1),0<=e&&(b=b.substr(0,c)+Gd(a,e)+b.substr(c+1+ud[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=U(a,e))?(d=e+' "'+Ed(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=U(a,e))?(xd(d),d=e+' "'+
|
||||
Ed(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}g.message=function(a,b){b&&(a+=" at "+n(P(this.b.O).u,4));if(!this.wa||a!=this.wa)if(this.wa=a,this.Y&-2147483648&&(this.U(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Qa=0;c.D-=c.b;c.b=0;I(c)}};function Jd(a,b,c,d){a.message(b.Wa+"."+(null!=d?"outPort":"inPort")+"("+q(c)+",unknown"+(null!=d?",0x"+n(d,2):"")+")")}
|
||||
function qd(a){var b;if(fd(a)){if(!a.L||!a.L.length){a.L=Array(1E3);for(b=0;b<a.L.length;b++)a.L[b]=P();a.na=0;a.g("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.L&&a.L.length&&a.g("instruction history buffer freed"),a.na=0,a.L=[],a.J=[]}g.Fa=function(a){if(!Kd(this))return!1;this.b.Fa(a);return!0};
|
||||
g.Ta=function(a,b,c){if(!Kd(this))return!1;this.K=0;a||fd(this)&&gd(this,this.b.O,0);try{var d=this.b.Ta(a);0<d&&(this.K+=d,rc(this.b,d,!0),oc(this.b,d),this.V++)}catch(e){"number"!=typeof e&&(this.K=0,sb(this.b,e.stack||e.message))}!1!==c&&I(this.b);this.ka(b||!1);return 0<this.K};g.U=function(a){this.b&&this.b.U(a)};g.ka=function(a){void 0===a&&(a=!0);this.N=P(this.b.O);a&&1!=this.T?Ld(this):Md(this)};
|
||||
function Kd(a){var b;if(b=a.b&&rb(a.b))b=a.b,b.j.W?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!qb(a.b)?(a=a.b,a.j.Ja?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}g.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};g.ra=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};g.reset=function(a){qd(this);this.V=this.Ga=0;this.wa=null;this.K=0;this.N=P(this.b.O);this.j.X=!1;Nd(this);a||this.ka()};
|
||||
g.save=function(){var a=new J(this);M(a,0,yd(this.N));M(a,1,yd(this.ca));M(a,2,[this.C,this.ma,this.Y]);M(a,3,this.H);return a.data()};g.restore=function(a){var b=0;void 0!==a[2]&&(this.N=zd(a[b++]),this.ca=zd(a[b++]),this.C=a[b][0],"string"==typeof this.C&&(this.C=[this.C]),this.ma=a[b][1],this.Y|=a[b][2]);a[3]&&(this.H=a[3]);return!0};g.start=function(a,b){this.T||this.g("running");this.j.X=!0;this.Sb=a;this.Vb=b};
|
||||
g.stop=function(a,b){if(this.j.X){this.j.X=!1;this.K=b-this.Vb;if(!this.T){var c="stopped";if(this.K){var d=a-this.Sb,e=0<d?Math.round(1E3*this.K/d):0,c=c+" (";fd(this)&&(c+=this.V+" opcodes, ",this.Ga-=this.V,this.V=0);c+=this.K+" cycles, "+d+" ms, "+e+" hz)"}else ob(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.ka(!0);this.fb();Nd(this,this.b.O)}};function fd(a){return 1<a.w.length||!!a.va}
|
||||
function gd(a,b,c){var d=a.b;if(0<c&&(a.va&&!--a.va||ec(a,b,1,a.w)))return!0;0<=c&&a.J.length&&(a.V++,b=Cb(a.A,b),null!=b&&(a.J[b][1]++,b=a.L[a.na],b.u=d.O,b.oa=!1,++a.na==a.L.length&&(a.na=0)));return!1}function Od(a,b,c){a.g("break on input from port "+q(b)+": "+n(c));a.U(!0)}function Pd(a,b,c){a.g("break on output to port "+q(b)+": "+n(c));a.U(!0)}
|
||||
function pd(a){var b,c;a.w=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){c=a.R[b];var d=a.b;fc(d.ia[T(c)>>>d.P],!1)}a.R=["br"];if(void 0!==a.F)for(b=1;b<a.F.length;b++)c=a.F[b],d=a.b,fc(d.ia[T(c)>>>d.P],!0);a.F=["bw"];a.Ab=0}g.xa=function(a,b,c){var d=!0;c||Qd(this,a,b,!1,!0);if(a!=this.w){var e=T(b);if(-1===e)this.g("invalid address: "+n(b.u,4)),d=!1;else{var f=this.b;f.ia[e>>>f.P].xa(e&f.H,a==this.F)}}d&&(a.push(b),c?b.oa=!0:(Rd(this,a,a.length-1,"set"),qd(this)));return d};
|
||||
function Qd(a,b,c,d,e){var f=!1;c=T(c);for(var k=1;k<b.length;k++){var h=b[k];if(c==T(h)&&(!d||h.oa)){f=!0;h.oa||e||Rd(a,b,k,"cleared");b.splice(k,1);b!=a.w&&(d=a.b,fc(d.ia[c>>>d.P],b==a.F));h.oa||qd(a);break}}return f}function Sd(a,b){for(var c=1;c<b.length;c++)Rd(a,b,c);return b.length-1}function Rd(a,b,c,d){c=b[c];a.g(b[0]+" "+n(c.u,4)+(d?" "+d:c.Mb?' "'+c.Mb+'"':""))}
|
||||
function Nd(a,b){if(void 0!==b)ec(a,b,1,a.w,!0),a.T=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.oa){if(!Qd(a,a.w,d,!0))break;c=0}}}
|
||||
function ec(a,b,c,d,e){var f=!1;if(!a.Ab++)for(var k=1;!f&&k<d.length;k++){var h=d[k];if(!e||h.oa)for(var l=T(h),m=0;m<c;m++)if(b+m==l){var p,f=!0;h.oa&&(Qd(a,d,h,!0),e=!0);if(p=h.Qb){for(var f=!1,r=0;r<p.length;r++)if(!Td(a,p[r],!0)){if(p[r].indexOf("if")){f=!0;break}for(var t=r+1;t<p.length&&p[t].indexOf("else");t++)r++;if(t==p.length){f=!0;break}}a.b.j.X||(f=!0)}if(f){e||Rd(a,d,k,"hit");break}}}a.Ab--;return f}
|
||||
function Ud(a,b,c,d){for(var e=P(b.u),f=a.ta(b,1),k=a.jb[f],f="",h=null,l=td[k[0]],m=k.length-1,p=1;p<=m;p++){var r="",t=k[p];if(void 0!==t){var K=t&15;if(0==K){if(null==h)continue;K=h}h=K;K=t&240;if(32==K){var r=a,K=b,B=" ";switch(t&15){case 1:t&12288&&(B=n(r.ta(K,1),2));break;case 2:B=n(r.ta(K,1)<<24>>24,4);break;case 3:B=n(r.ib(K,2),4);break;default:B="imm("+q(t)+")"}r=B}else 16==K&&(r=ud[(t&3840)>>8]);if(!r||!r.length){f="INVALID";break}0<f.length&&(f+=",");f+=r||"???"}}k="";h=n(e.u,4)+" ";if(-1!==
|
||||
e.u&&-1!==b.u){do if(k+=n(a.ta(e,1),2),null==e.u)break;while(e.u!=b.u)}h+=ra(k,11);h+=ra(l,7);f&&(h+=" "+f);c&&(h=ra(h,40)+";"+c,h=a.b.j.Ia?h+("cycles="+pc(a.b).toString()+" cs="+n(a.b.i.Ya)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function Vd(a,b){var c;switch(b){case "I":c=a.b.Da&512;break;case "S":c=a.b.M&128?128:0;break;case "Z":c=a.b.I&255?0:64;break;case "A":c=a.b;c=(c.M^c.C)&16?16:0;break;case "P":c=ub[a.b.M&255]?4:0;break;case "C":c=a.b.I&256?1:0;break;default:c=0}return b+(c?"1":"0")+" "}function V(a,b){return ud[b]+"="+Gd(a,b)+" "}var Wd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function Xd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
[12,35],[51,3091],[47,33],[65],[56],[69],[32,35],[25],[9,35],[7,32803],[19,33],[65]],Q={cpu:1,bus:64,mem:128,port:256,timer:2048,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};g=sd.prototype;
|
||||
g.Ma=function(a,b,c,d){this.A=b;this.b=c;this.s=a;(a=jc(a,"messages"))&&vd(this,a);this.jb=zd;Ad(this,function(a){a:{var b=d.b.Y,c=a[0],h=a=0,l=b.length;if(c){a=T(U(d,c));if(-1===a){d.g("invalid address: "+c);break a}h=a>>>d.b.P;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,m=0;l--;){var p=b[h];p.type==c?m++||d.g("..."):(c=p.type,m=ac[c],p&&d.g(n(p.id)+" %"+n(h<<d.b.P)+" %%"+n(p.u)+" "+q(p.hb)+" "+q(p.size)+
|
||||
" "+m),c!=Jb&&(c=-1),m=0);a+=d.b.aa;h++}}});G(this)};
|
||||
g.ka=function(a,b,c){var d=this;switch(b){case "debugInput":return this.pa=this.H[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",mc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.D<d.B.length-1&&(b=d.B[++d.D]):40==a.keyCode&&(0<d.D?b=d.B[--d.D]:(b="",d.D=-1)),null!=b){var k=b.length;c.value=b;c.setSelectionRange(k,k)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.H[b]=c,Ga(c,function(){if(d.pa){var a=d.pa.value;d.pa.value=
|
||||
"";mc(d,a,!0);return!0}return!1}),!0;case "step":return this.H[b]=c,Ga(c,function(a){var b=!1;gb(d,!0)||(fb(d,!0),b=d.Ua(a?1:0),fb(d,!1));return b}),!0}return!1};g.gb=function(){this.pa&&this.pa.focus()};function T(a){a=a&&a.u;null==a&&(a=-1);return a}g.ta=function(a,b){var c=255,d=T(a);-1!==d&&(c=Cb(this.A,d),b&&Bd(a,b));return c};g.ib=function(a,b){var c=65535,d=T(a);if(-1!==d){var c=this.A,e=d&c.s,f=(d&c.w)>>>c.P,c=e!=c.s?c.A[f].tb(e,d):c.A[f++].fb(e,d)|c.A[f&c.M].fb(0,d+1)<<8;b&&Bd(a,b)}return c};
|
||||
g.vb=function(a,b,c){var d=T(a);if(-1!==d){var e=this.A;e.A[(d&e.w)>>>e.P].Va(d&e.s,b&255,d);c&&Bd(a,c);I(this.b,!0)}};g.Qb=function(a,b,c){var d=T(a);if(-1!==d){var e=this.A,f=d&e.s,k=(d&e.w)>>>e.P;f!=e.s?e.A[k].ub(f,b&65535,d):(e.A[k++].Va(f,b&255,d),e.A[k&e.M].Va(0,b>>8&255,d+1));c&&Bd(a,c);I(this.b,!0)}};function P(a){return{u:a||0,oa:!1}}function Cd(a){return[a.u,a.oa]}function Dd(a){return{u:a[0],oa:a[1]}}
|
||||
function U(a,b,c){var d;c=(c?a.N:a.zb).u;if(void 0!==b){d=b=Ed(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.I.length;c++){var f=a.I[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=P(d));break}}if(d=e)return d;c=Fd(a,b,void 0)}null!=c&&(d=P(c));return d}function Gd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Rb=Hd(a,b.Nb=c[2]))}function Bd(a,b){null!=a.u&&(a.u+=b||1)}
|
||||
function Id(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ta(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function vd(a,b){a.C=a;a.Z=a.Sb=1073741824;a.wa=null;var c=Hd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Q)0<=wa(c,d)&&(a.Z|=Q[d],a.g(d+" messages enabled"))}function Ad(a,b){for(var c in Q)if(64==Q[c]){a.Wa[c]=b;break}}
|
||||
function Jd(a,b){var c;a=a.toUpperCase();null==b?c=wa(yd,a):(c=wa(yd,a.substr(b,3)),0>c&&(c=wa(yd,a.substr(b,2))));return c}function Kd(a,b){var c=0,d=Ld(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 8:c=2;break;case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"}
|
||||
function Ld(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.O;break;case 8:c=xc(d)&255;break;case 0:c=d.ba;break;case 1:c=d.ga;break;case 9:c=d.ba<<8|d.ga;break;case 2:c=d.ca;break;case 3:c=d.ha;break;case 10:c=d.ca<<8|d.ha;break;case 4:c=d.da;break;case 5:c=d.ia;break;case 11:c=d.da<<8|d.ia;break;case 12:c=d.O<<8|xc(d)&255;break;case 13:c=d.Ea;break;case 14:c=d.R}}return c}
|
||||
function Md(a,b){b=Ed(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Jd(b,c+1),0<=e&&(b=b.substr(0,c)+Kd(a,e)+b.substr(c+1+yd[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=U(a,e))?(d=e+' "'+Id(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=U(a,e))?(Bd(d),d=e+' "'+
|
||||
Id(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}g.message=function(a,b){b&&(a+=" at "+n(P(this.b.R).u,4));if(!this.wa||a!=this.wa)if(this.wa=a,this.Z&-2147483648&&(this.U(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Ra=0;c.F-=c.b;c.b=0;I(c)}};function Nd(a,b,c,d){a.message(b.Xa+"."+(null!=d?"outPort":"inPort")+"("+q(c)+",unknown"+(null!=d?",0x"+n(d,2):"")+")")}
|
||||
function ud(a){var b;if(jd(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=P();a.na=0;a.g("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.g("instruction history buffer freed"),a.na=0,a.M=[],a.J=[]}g.Fa=function(a){if(!Od(this))return!1;this.b.Fa(a);return!0};
|
||||
g.Ua=function(a,b,c){if(!Od(this))return!1;this.K=0;a||jd(this)&&kd(this,this.b.R,0);try{var d=this.b.Ua(a);0<d&&(this.K+=d,rc(this.b,d,!0),oc(this.b,d),this.V++)}catch(e){"number"!=typeof e&&(this.K=0,sb(this.b,e.stack||e.message))}!1!==c&&I(this.b);this.la(b||!1);return 0<this.K};g.U=function(a){this.b&&this.b.U(a)};g.la=function(a){void 0===a&&(a=!0);this.N=P(this.b.R);a&&1!=this.T?Pd(this):Qd(this)};
|
||||
function Od(a){var b;if(b=a.b&&rb(a.b))b=a.b,b.j.W?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!gb(a.b)?(a=a.b,a.j.Ka?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}g.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};g.ra=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};g.reset=function(a){ud(this);this.V=this.Ha=0;this.wa=null;this.K=0;this.N=P(this.b.R);this.j.X=!1;Rd(this);a||this.la()};
|
||||
g.save=function(){var a=new J(this);M(a,0,Cd(this.N));M(a,1,Cd(this.ea));M(a,2,[this.B,this.ma,this.Z]);M(a,3,this.I);return a.data()};g.restore=function(a){var b=0;void 0!==a[2]&&(this.N=Dd(a[b++]),this.ea=Dd(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.ma=a[b][1],this.Z|=a[b][2]);a[3]&&(this.I=a[3]);return!0};g.start=function(a,b){this.T||this.g("running");this.j.X=!0;this.Tb=a;this.Wb=b};
|
||||
g.stop=function(a,b){if(this.j.X){this.j.X=!1;this.K=b-this.Wb;if(!this.T){var c="stopped";if(this.K){var d=a-this.Tb,e=0<d?Math.round(1E3*this.K/d):0,c=c+" (";jd(this)&&(c+=this.V+" opcodes, ",this.Ha-=this.V,this.V=0);c+=this.K+" cycles, "+d+" ms, "+e+" hz)"}else eb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.la(!0);this.gb();Rd(this,this.b.R)}};function jd(a){return 1<a.w.length||!!a.va}
|
||||
function kd(a,b,c){var d=a.b;if(0<c&&(a.va&&!--a.va||ec(a,b,1,a.w)))return!0;0<=c&&a.J.length&&(a.V++,b=Cb(a.A,b),null!=b&&(a.J[b][1]++,b=a.M[a.na],b.u=d.R,b.oa=!1,++a.na==a.M.length&&(a.na=0)));return!1}function Sd(a,b,c){a.g("break on input from port "+q(b)+": "+n(c));a.U(!0)}function Td(a,b,c){a.g("break on output to port "+q(b)+": "+n(c));a.U(!0)}
|
||||
function td(a){var b,c;a.w=["bp"];if(void 0!==a.S)for(b=1;b<a.S.length;b++){c=a.S[b];var d=a.b;fc(d.Y[T(c)>>>d.P],!1)}a.S=["br"];if(void 0!==a.F)for(b=1;b<a.F.length;b++)c=a.F[b],d=a.b,fc(d.Y[T(c)>>>d.P],!0);a.F=["bw"];a.Bb=0}g.xa=function(a,b,c){var d=!0;c||Ud(this,a,b,!1,!0);if(a!=this.w){var e=T(b);if(-1===e)this.g("invalid address: "+n(b.u,4)),d=!1;else{var f=this.b;f.Y[e>>>f.P].xa(e&f.D,a==this.F)}}d&&(a.push(b),c?b.oa=!0:(Vd(this,a,a.length-1,"set"),ud(this)));return d};
|
||||
function Ud(a,b,c,d,e){var f=!1;c=T(c);for(var k=1;k<b.length;k++){var h=b[k];if(c==T(h)&&(!d||h.oa)){f=!0;h.oa||e||Vd(a,b,k,"cleared");b.splice(k,1);b!=a.w&&(d=a.b,fc(d.Y[c>>>d.P],b==a.F));h.oa||ud(a);break}}return f}function Wd(a,b){for(var c=1;c<b.length;c++)Vd(a,b,c);return b.length-1}function Vd(a,b,c,d){c=b[c];a.g(b[0]+" "+n(c.u,4)+(d?" "+d:c.Nb?' "'+c.Nb+'"':""))}
|
||||
function Rd(a,b){if(void 0!==b)ec(a,b,1,a.w,!0),a.T=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.oa){if(!Ud(a,a.w,d,!0))break;c=0}}}
|
||||
function ec(a,b,c,d,e){var f=!1;if(!a.Bb++)for(var k=1;!f&&k<d.length;k++){var h=d[k];if(!e||h.oa)for(var l=T(h),m=0;m<c;m++)if(b+m==l){var p,f=!0;h.oa&&(Ud(a,d,h,!0),e=!0);if(p=h.Rb){for(var f=!1,r=0;r<p.length;r++)if(!Xd(a,p[r],!0)){if(p[r].indexOf("if")){f=!0;break}for(var t=r+1;t<p.length&&p[t].indexOf("else");t++)r++;if(t==p.length){f=!0;break}}a.b.j.X||(f=!0)}if(f){e||Vd(a,d,k,"hit");break}}}a.Bb--;return f}
|
||||
function Yd(a,b,c,d){for(var e=P(b.u),f=a.ta(b,1),k=a.jb[f],f="",h=null,l=xd[k[0]],m=k.length-1,p=1;p<=m;p++){var r="",t=k[p];if(void 0!==t){var K=t&15;if(0==K){if(null==h)continue;K=h}h=K;K=t&240;if(32==K){var r=a,K=b,B=" ";switch(t&15){case 1:t&12288&&(B=n(r.ta(K,1),2));break;case 2:B=n(r.ta(K,1)<<24>>24,4);break;case 3:B=n(r.ib(K,2),4);break;default:B="imm("+q(t)+")"}r=B}else 16==K&&(r=yd[(t&3840)>>8]);if(!r||!r.length){f="INVALID";break}0<f.length&&(f+=",");f+=r||"???"}}k="";h=n(e.u,4)+" ";if(-1!==
|
||||
e.u&&-1!==b.u){do if(k+=n(a.ta(e,1),2),null==e.u)break;while(e.u!=b.u)}h+=na(k,11);h+=na(l,7);f&&(h+=" "+f);c&&(h=na(h,40)+";"+c,h=a.b.j.Ja?h+("cycles="+pc(a.b).toString()+" cs="+n(a.b.i.Za)):h+(null!=d?"="+d.toString():""));return h}function Zd(a,b){var c;switch(b){case "I":c=a.b.Da&512;break;case "S":c=a.b.L&128?128:0;break;case "Z":c=a.b.G&255?0:64;break;case "A":c=cd(a.b);break;case "P":c=ub[a.b.L&255]?4:0;break;case "C":c=a.b.G&256?1:0;break;default:c=0}return b+(c?"1":"0")+" "}
|
||||
function V(a,b){return yd[b]+"="+Kd(a,b)+" "}var $d={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function ae(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
|
||||
function Bd(a,b,c){var d;if(b){b=Ad(a,b);for(var e=0,f=!1,k=b,h=[],l=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var p=m[e++],r=p.length,p=sa(p);if(!p){f=!0;break}p=Yd(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}h.push(p);if(e==m.length)break;var p=m[e++],t=p.length;l.length&&Wd[p]<Wd[l[l.length-1]]&&Xd(h,l,1);l.push(p);b=b.substr(r+t)}Xd(h,l)&&1==h.length||(f=!0);f?c&&a.g("error parsing '"+k+"' at character "+(k.length-b.length)):(d=h.pop(),c&&ye(a,null,
|
||||
d))}return d}function Ad(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Bd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=U(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.ib(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.V-a.Ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function Yd(a,b,c,d){var e;void 0!==b?(e=Fd(b),0<=e?e=Hd(a,e):(e=a.ga[b],void 0===e&&(e=da(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
|
||||
function ye(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,k="";if(!f||4<f)f=4;for(var h=0;h<f;h++){k&&(k=","+k);var l=d&255,m=8,p="";void 0===m?m=32:32<m&&(m=32);if(null==l||isNaN(l))for(;0<m--;)p="?"+p;else for(;0<m--;)p=(l&1?"1":"0")+p,l>>=1;k=p+"b"+k;d>>=8}d="0x"+n(c)+" "+c+". ("+k+")"}a.g((null!=b?b+": ":"")+d);return e}function ze(a,b){if(b)return ye(a,b,a.ga[b]);var c=0;for(b in a.ga)ye(a,b,a.ga[b]),c++;return 0<c}od.prototype.wb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Ae(a,b,c){var d=[],e=T(b)>>>0;for(b=0;b<a.H.length;b++){var f=a.H[b],k=f.u>>>0,h=f.Xb;if(e>=k&&e<k+h){e=ta(f.xb,[e-k],a.wb);0<=e?Be(a,b,e,d):c&&(e=~e,Be(a,b,e-1,d),Be(a,b,e,d));break}}return d}function Be(a,b,c,d){var e={},f=a.H[b].xb,k=0,h=null;0<=c&&c<f.length&&(k=f[c][0],h=f[c][1]);h&&(e=a.H[b].qa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(k);d.push(e.a);d.push(e.c)}
|
||||
function Ce(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],k=e[c][1];k&&(a.g((td[a.jb[f][0]]+" ").substr(0,5)+" ("+("0x"+n(f,2))+"): "+k+" times"),d++)}}d||a.g("no frequency data available")}}
|
||||
function De(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return ze(a)||a.g("no variables"),!0;if(!c[2])return ze(a,c[1]);if(!c[3])return delete a.ga[c[1]],!0;var d=Bd(a,c[3]);return void 0!==d?(a.ga[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Ee(a,b,c){var d=null;if(b=U(a,b,!0)){var e=Ae(a,b,!0);if(e.length){var f,k;e[0]&&(k="",(f=b.u-e[1])&&(k=" + "+q(f)),f=e[0]+" ("+n(e[1],4)+")"+k,c&&a.g(f),d=f);4<e.length&&e[4]&&(k="",(f=e[5]-b.u)&&(k=" - "+q(f)),f=e[4]+" ("+n(e[5],4)+")"+k,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
|
||||
function Ld(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{null==c&&(c=!0);if(null!=b&&1<b.length){var d=b[1],e=null,f=d.indexOf("=");if(0<f)e=d.substr(f+1),d=d.substr(0,f);else if(2<b.length)e=b[2];else{a.g("missing value for "+b[1]);return}var f=!1,k=Bd(a,e);if(void 0!==k){var f=!0,h=d.toUpperCase();"E"==h.charAt(0)&&(h=null);switch(h){case "A":a.b.S=k&255;break;case "B":a.b.aa=k&255;break;case "BC":a.b.aa=k<<8&
|
||||
255;case "C":a.b.ea=k&255;break;case "D":a.b.ba=k&255;break;case "DE":a.b.ba=k<<8&255;case "E":a.b.fa=k&255;break;case "H":a.b.ja=k&255;break;case "HL":a.b.ja=k<<8&255;case "L":a.b.la=k&255;break;case "SP":a.b.Ea=k&65535;break;case "PC":a.b.O=k&65535;a.N=P(a.b.O);break;case "PS":wc(a.b,k);break;case "C":k?(d=a.b,d.I|=256):(d=a.b,d.I&=255);break;case "P":k?(d=a.b,ub[d.M&255]||(d.M^=1)):(d=a.b,ub[d.M&255]&&(d.M^=1));break;case "A":k?(d=a.b,d.C=~d.M&16|d.C&-17):(d=a.b,d.C=d.M&16|d.C&-17);break;case "Z":k?
|
||||
(d=a.b,d.I&=-256):(d=a.b,d.I|=255);break;case "S":k?(d=a.b,d.M&128||(d.M^=192)):(d=a.b,d.M&128&&(d.M^=192));break;case "I":k?(d=a.b,d.Da|=512):(d=a.b,d.Da&=-513);break;default:a.g("unknown register: "+d);return}}if(!f){a.g("invalid value: "+e);return}I(a.b);a.g("updated registers:")}a.g(V(a,7)+V(a,8)+V(a,0)+V(a,1)+V(a,2)+V(a,3)+V(a,4)+V(a,5)+V(a,13)+Vd(a,"I")+Vd(a,"S")+Vd(a,"Z")+Vd(a,"A")+Vd(a,"P")+Vd(a,"C"));c&&(a.N=P(a.b.O),Md(a,n(a.N.u,4)))}}
|
||||
function Fe(a,b){b=sa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Id(a,c[2])):Bd(a,b,!0)}function Ge(a,b,c){var d="t"!=b;c=Yd(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ka(c,function(){return pb(a,!0)&&a.Ta(e,d,!1)},function(){I(a.b);pb(a,!1)})}
|
||||
function Md(a,b,c,d){if(b=U(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=U(a,c,!0);if(!d||d.u<b.u)return;e=d.u-b.u;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=qb(a,!1)||a.T?a.K:null;var k=null!=f?"cycles":null,h=Ae(a,b),l=b.u;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.g(m)}h[3]&&(k=h[3],f=null);f=Ud(a,b,k,f);a.g(f);a.N=b;e-=b.u-l;c++}}}
|
||||
function Dd(a,b,c,d){if(c)if(b){0>a.D&&a.C.length&&(a.D=0);if(0>a.D||b!=a.C[a.D])a.C.splice(0,0,b),a.D=0;a.D--}else b=a.C[a.D+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var k=b.charAt(f);if('"'==k||"'"==k)e?k==e&&(e=null):e=k;else if(k==d&&!e||!k)a.push(sa(b.substring(c,f))),c=f+1}}return a}
|
||||
function Td(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ma&&(a.g("ended assemble at "+n(a.ca.u,4)),a.N=a.ca,a.ma=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.wa=null;if(rb(a)&&0<b.length){a.ma&&(b="a "+n(a.ca.u,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var k=f[0],h=k.charAt(0),l=1;l<k.length;l++){var m=k.charAt(l);if("?"==h||"r"==h||"a">m||"z"<m){f[0]=k.substr(l);f.unshift(k.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var p=U(a,f[1],!0);if(p)if(a.ca=
|
||||
p,void 0===f[2])a.g("begin assemble at "+n(p.u,4)),a.ma=!0,I(a.b);else{var r;a.g("not supported yet");r=[];if(r.length){for(var t=0;t<r.length;t++)a.ub(p,r[t],1);a.g(Ud(a,a.ca))}}break;case "b":a:{var K=f[0],B=f[1],af=b;if("?"==B)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
|
||||
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var X=K.charAt(1);if("l"==X){var Ba=0,Ba=Ba+Sd(a,a.w),Ba=Ba+Sd(a,a.R);(Ba+=Sd(a,a.F))||a.g("no breakpoints")}else if("n"==X)a.va=Yd(a,B),a.g("break after "+a.va+" instruction(s)");else if(void 0===B)a.g("missing breakpoint address");else{var A=P();if("*"!=B&&(A=U(a,B,!0),!A))break a;B=q(A.u);"c"==X?null==A.u?(pd(a),a.g("all breakpoints cleared")):Qd(a,a.w,A)||Qd(a,a.R,
|
||||
A)||Qd(a,a.F,A)||a.g("breakpoint missing: "+n(A.u,4)):"i"==X?a.g("breakpoint "+(Db(a.A,A.u)?"enabled":"cleared")+": port "+B+" (input)"):"o"==X?a.g("breakpoint "+(Eb(a.A,A.u)?"enabled":"cleared")+": port "+B+" (output)"):null!=A.u&&(Cd(a,A,af),"p"==X?a.xa(a.w,A):"r"==X?a.xa(a.R,A):"w"==X?a.xa(a.F,A):a.g("unknown breakpoint command: "+X))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ca,Da=f[0],Y=f[1],na=f[2],bf=f[3];if("?"==Y){var Z="";for(Ca in Q)a.Va[Ca]&&(Z&&(Z+=","),Z+=Ca);Z+=",state,symbols";
|
||||
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Z.length&&a.g("dump extension commands:\n\t"+Z)}else if("state"==Y){var Zd=He(a.s,!0);"console"==na?console.log(Zd):(a.ya&&(a.ya.value=""),a.g(Zd))}else if("symbols"==Y)for(var Ac=0;Ac<a.H.length;Ac++){var Bc=a.H[Ac],Fa;for(Fa in Bc.qa)if("."!=Fa.charAt(0)){var $d=Bc.qa[Fa].o;
|
||||
if(void 0!==$d){var ae=Bc.qa[Fa].l;ae&&(Fa=ae);a.g(n($d,4)+" "+Fa)}}}else{if("d"==Da){for(Ca in Q)if(f[1]==Ca){var be=a.Va[Ca];be?(f.shift(),f.shift(),be(f)):a.g("no dump registered for "+Y);break a}Y||(Da=a.Wb||"db")}else a.Wb=Da;if("dh"==Da){var ce=Y,de=na,ee="",fe=0,D=a.na,aa=a.L;if(aa.length){var L=+ce||a.Bb,Ga=+de||10;isNaN(L)?L=Ga:ee="more ";L>aa.length&&(a.g("note: only "+aa.length+" available"),L=aa.length);D-=L;0>D&&(null==aa[aa.length-1].u?(L=D+L,D=0):D+=aa.length);var Cc=[];"call"==de&&
|
||||
(Ga=1E5,Cc=["CALL"]);for(void 0!==ce&&a.g(L+" instructions earlier:");0<Ga&&D!=a.na;){var ge=aa[D++];if(null==ge.u)break;var bb=P(ge.u),cf=L--,he=Ud(a,bb,"history",cf);(!Cc.length||0<=he.indexOf(Cc[0]))&&a.g(he);bb.nb&&(D+=bb.nb,Ga-=bb.nb,L-=bb.nb);D>=aa.length&&(D=0);a.Bb=L;fe++;Ga--}}fe||(a.g("no "+ee+"history available"),a.Bb=void 0)}else{var Kb=U(a,Y);if(Kb){var Lb=0;na&&("l"==na.charAt(0)&&(na=na.substr(1)||bf),Lb=Yd(a,na)>>>0,65536<Lb&&(Lb=65536));for(var oa="",df=(Lb||128)+15>>4||1,Dc="dd"==
|
||||
Da?4:"dw"==Da?2:1,ie=0;ie<df;ie++){for(var Mb=0,Ec=0,cb="",Fc="",Y=n(Kb.u,4),Gc=0;16>Gc;Gc++){var Nb=a.ta(Kb,1),Mb=Mb|Nb<<(Ec++<<3);Ec==Dc&&(cb+=n(Mb,2*Dc),cb+=1==Dc?7==Gc?"-":" ":" ",Mb=Ec=0);Fc+=32<=Nb&&128>Nb?String.fromCharCode(Nb):"."}oa&&(oa+="\n");oa+=Y+" "+cb+" "+Fc}oa&&a.g(oa);a.yb=Kb}}}}break;case "e":if("else"==f[0])break;var Ob=1,je=255,ke=a.ta,le=a.ub;"ew"==f[0]&&(Ob=2,je=65535,ke=a.ib,le=a.Pb);var me=Ob<<1,ne=f[1];if(null==ne)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),
|
||||
a.g("\tew [a] [...] edit words at address a");else{var Pb=U(a,ne);if(Pb)for(var Qb=2;Qb<f.length;Qb++){var db=Bd(a,f[Qb]);if(void 0===db){a.g("unrecognized value: "+f[Qb]);break}db&~je&&a.g("warning: "+n(db)+" exceeds "+Ob+"-byte value");var ef=ke.call(a,Pb);a.g("changing "+n(Pb.u,4)+" from 0x"+n(ef,me)+" to 0x"+n(db,me));le.call(a,Pb,db,Ob)}}break;case "f":Ce(a,f[1]);break;case "g":a:{var oe=f[1],ff=b;if(void 0!==oe){var Hc=U(a,oe,!0);if(!Hc)break a;Cd(a,Hc,ff);a.xa(a.w,Hc,!0)}a.Fa(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
|
||||
case "h":var Ic;a.j.X?(Ic="halting",a.U()):Ic="already halted";c||a.g(Ic);break;case "i":if("if"==f[0]){var Jc;var eb=b.substr(2),eb=sa(eb);Bd(a,eb)?(c||a.g("true: "+eb),Jc=!0):(c||a.g("false: "+eb),Jc=!1);Jc||(d=!1);break}var Kc=f[1];if(Kc&&"?"!=Kc){var Lc=Yd(a,Kc);if(void 0!==Lc){for(var R=a.A,ga=Lc,Mc=1,Nc=0,Oc=0;0<Mc;){var Rb=R.C[ga],fb=R.T[ga]||1,Pc=1==fb?255:2==fb?65535:-1,ha=Pc;void 0!==Rb?(Rb[0]&&(ha=Rb[0](ga,void 0),void 0===ha?ha=Pc:ha&=Pc),R.B&&R.F!=Rb[1]&&Od(R.B,ga,ha)):R.B&&(Jd(R.B,R,
|
||||
ga,null),R.F&&Od(R.B,ga,ha));Nc|=ha<<Oc;Oc+=fb<<3;ga+=fb;Mc-=fb}a.g(q(Lc)+": "+("0x"+n(Nc,2)))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var gf=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var Qc=0,pe=P(),gb=P(a.b.Ea);for(a.g("stack trace for "+n(gb.u,4));10>Qc;){for(var pa=null,hf=256;65536>gb.u>>>0;){pe.u=a.ib(gb,2);if(null==gb.u||!hf--)break;
|
||||
for(var jf=a,Sb=pe,qe=null,hb=Sb.u,re=hb,Rc=1;6>=Rc&&hb;Rc++){if(2<Rc){Sb.u=hb;var Tb=Ud(jf,Sb);if(0<Tb.indexOf("CALL")){var se=Tb.indexOf(" ");if(hb+(Tb.indexOf(" ",se+1)-se-1)/2==re){qe=Tb;break}}}hb--}Sb.u=re;if(pa=qe)break}if(!pa||null==pa)break;var te=null;if("ks"==gf){var ue=pa.match(/[0-9A-F]+$/);ue&&(te=Ee(a,ue[0]))}pa=ra(pa,50)+" ;"+(te||"stack="+n(gb.u,4));a.g(pa);Qc++}Qc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ee(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,
|
||||
w=f[1];"?"==w&&(w=void 0);if(void 0!==w){var qa=0;if("all"==w)qa=1610481663,w=null;else if("on"==w)ca=!0,w=null;else if("off"==w)ca=!1,w=null;else{"keys"==w&&(w="key");"kbd"==w&&(w="keyboard");for(ba in Q)if(w==ba){qa=Q[ba];ca=!!(a.Y&qa);break}if(!qa){a.g("unknown message category: "+w);break a}}qa&&("on"==f[2]?(a.Y|=qa,ca=!0):"off"==f[2]&&(a.Y&=~qa,ca=!1))}var kf=0,ia="";for(ba in Q)if(!w||w==ba){var lf=!!(a.Y&Q[ba]);if(null===ca||ca==lf)ia&&(ia+=","),++kf%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),
|
||||
ia+=ba}void 0===w&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));qd(a)}break;case "o":var Sc=f[1],mf=f[2];if(Sc&&"?"!=Sc){var Tc=Yd(a,Sc,"port #"),Uc=Yd(a,mf);if(void 0!==Tc&&void 0!==Uc){for(var S=a.A,ja=Tc,ve=Uc,Vc=1,Wc=0;0<Vc;){var Ub=S.D[ja],ib=S.V[ja]||1,nf=1==ib?255:2==ib?65535:-1,Vb=(ve>>>=Wc)&nf;if(void 0!==Ub){if(Ub[0])Ub[0](ja,Vb,void 0);S.B&&S.H!=Ub[1]&&Pd(S.B,ja,Vb)}else S.B&&
|
||||
(Jd(S.B,S,ja,Vb),S.H&&Pd(S.B,ja,Vb));Wc+=ib<<3;ja+=ib;Vc-=ib}a.g(q(Tc)+": "+("0x"+n(Uc,2)))}}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Fe(a,b.substr(5));break}var we="pr"==f[0]?1:0,of=1+we;if(a.T)a.g("step in progress");else{var Xc=P(a.b.O);switch(a.ta(Xc)){case 205:a.T=of,xd(Xc,3)}a.T?(a.xa(a.w,Xc,!0),a.Fa()||(a.s&&a.s.fb(),a.T=0)):Ge(a,we?"tr":"t")}break;case "r":if("reset"==
|
||||
b){a.s&&a.s.reset();break}Ld(a,f);break;case "t":Ge(a,f[0],f[1]);break;case "u":Md(a,f[1],f[2],8);break;case "v":if("var"==f[0]){De(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.21.7 ("+a.b.Gb+",RELEASE"+(tb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ya());break;case "x":a:if(f[1]&&"?"!=f[1])switch(f[1]){case "cs":var jb;void 0!==f[3]&&(jb=+f[3]);switch(f[2]){case "int":a.b.i.Na=jb;break;case "start":a.b.i.Za=jb;break;case "stop":a.b.i.Pa=jb;break;default:a.g("unknown cs option");break a}void 0!==
|
||||
jb&&lc(a.b);a.g("checksums "+(a.b.j.Ia?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(qc(a.b,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Aa.toFixed(2)+"Mhz")+" ("+a.b.i.Ca+"x)");break;default:a.g("unknown option: "+f[1])}else a.g("execution options:"),a.g("\tcs int #\tset checksum cycle interval to #"),a.g("\tcs start #\tset checksum cycle start count to #"),a.g("\tcs stop #\tset checksum cycle stop count to #"),a.g("\tsp #\t\tset speed multiplier to #");
|
||||
break;case "?":if(f[1]){Fe(a,b.substr(1));break}var kb="commands:",Yc;for(Yc in sd)kb+="\n"+ra(Yc,7)+sd[Yc];fd(a)||(kb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(kb);break;default:a.g("unknown command: "+b),d=!1}}}catch(xe){a.g("debugger error: "+(xe.stack||xe.message)),d=!1}return d}function mc(a,b,c){b=Dd(a,b,c);for(var d in b)if(!Td(a,b[d]))return!1;return!0}Qa(function(){for(var a=F(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new od(d);mb(d,c)}});
|
||||
function J(a,b,c){this.id=a.id;this.key=Ie(a,b,c);this.B=a.B;Je(this,a.Kb)}function Ie(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
J.prototype={constructor:J,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Je(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(e){}b.splice(c,1);c=0}}};
|
||||
function Je(a,b){a[a.id]={};b&&M(a,"parms",b);a.b=!1}function Ke(a){var b=!0;if(Ea()){var c=JSON.stringify(a[a.id]);Ia(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Le(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Me(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Ea()&&(b=Ha(a.key))?(a[a.id]=b,a.b=!0):!1}function Ne(a,b){return a[a.id][b]||null}function M(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Oe(a,b,c){x.call(this,"Computer",a,Oe,67108864);this.j.W=!1;Pe(this,b);this.R=jc(this,"autoPower",a);this.C=0;this.ma=a.busWidth||a.buswidth;this.s=Qe;this.L=null;this.H=this.ga=!1;this.na=jc(this,"url")||"";(Math.random()+.1).toString(36);this.w=Re(this);if(this.b=lb("CPU",this.id)){this.B=lb("Debugger",this.id);this.pa=[];for(b=null;b=wb(this,"Video",b);)this.pa.push(b);this.A=new yb({id:this.zb+".bus",buswidth:this.ma},this.b,this.B);var d,e=C(this.id);if((this.D=lb("Panel",this.id))&&
|
||||
this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.da=this.D.da,d.g=this.D.g,d.ya=this.D.ya;for(b=0;b<e.length;b++)d=e[b],d.La&&d.La(this,this.A,this.b,this.B);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.K=d:this.s=parseInt(d,10));var f;if(a=jc(this,"state")||(f=!0,a.state))b=this.T=a,f||(this.H=!0,this.s=Qe),this.s&&(this.N=new J(this,W),Me(this.N)?b=null:delete this.N);!b&&this.s&&(b=Se(this))&&(this.H=!0);if(b){var k=this;u(b,null,!0,function(a,b,c){c?(k.K=null,k.H=!1,k.da("Unable to load machine state from server (error "+
|
||||
c+(b?": "+sa(b):"")+")")):(k.L=b,k.ga=!0);G(k)})}else G(this);this.G.power||(this.R=!0);!c&&this.R&&Te(this,this.cb)}else v("Unable to find CPU component")}z(Oe);var W="1.21.7",Qe=0;function Pe(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.J=b}
|
||||
function jc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.J&&(d=a.J[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Te(a,b,c){for(var d=C(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!rb(f)){rb(f,function(){Te(a,b,c)});return}}b.call(a,c)}
|
||||
function Ue(a,b){var c=new J(a,W,"validate");if(Me(c)&&Le(c)){var d=Ne(c,"timestamp"),e=b?Ne(b,"timestamp"):"unknown";d!=e&&(a.da("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}g=Oe.prototype;
|
||||
g.cb=function(a){void 0===a&&(a=this.s||(this.L?1:Qe));if(!this.C){this.C++;var b=!1,c=!1;this.ca=!1;var d=this.N||new J(this,W);if(-1==a)b=!0;else if(a>Qe){if(Me(d,this.L)){this.F=new J(this,W,"failsafe");Me(this.F)&&(Ve(this,d),a=2,Je(this.F));M(this.F,"timestamp",va());Ke(this.F);var e=this.s&&!this.H;if(1==a||za("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Le(d)){var f=Ne(d,"code"),k=Ne(d,"data");f&&("ok"==f?Me(d,k):("error"==f&&"no machine state"!=
|
||||
k?(this.da("Error: "+k),"unable to verify user"==k&&(Ia("user",""),this.w=null)):this.g(f+": "+k),Je(d),Me(d)?(c=Le(d),e=!0):c=!1))}e&&Ue(this,c?d:null)}else 2==a&&d.clear()}else Ue(this);delete this.L;delete this.N}e=C(this.id);for(f=0;f<e.length;f++)k=e[f],k!==this&&k!=this.b&&(c=We(this,k,d,b,c));b=[d,a,c];-1!=a?Te(this,this.Cb,b):this.Cb(b)}};
|
||||
function We(a,b,c,d,e){if(!b.j.W){b.j.W=!0;if(b.sa){var f=null;e&&((f=Ne(c,b.id))||(f=Ne(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(v("Unable to restore state for "+b.type),a.T&&!a.ga?(c.clear(),a.s=Qe,window&&window.location.reload()):a.ca=!0,b.sa(null),e=!1)}if(!d&&b.vb)for(a=b.vb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
g.Cb=function(a){var b=a[0],c=0>a[1];a=a[2];this.j.W=!0;var d=this.G.power;d&&(d.textContent="Shutdown");this.V||(this.g("PC8080 v"+W+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.V=!0);this.b&&(We(this,this.b,b,c,a),nc(this.b));this.ca&&(Ve(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0};
|
||||
function Ve(a,b){if(za("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.na,d=a.w||"",e=b.toString(),f={app:"PC8080"};f.ver=W;f.url=c;f.user=d;f.type="bug";f.data=e;u("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function He(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new J(a,W),k=new J(a,W,"validate"),h=va();M(k,"timestamp",h);M(f,"timestamp",h);M(f,"version","1.21.7");M(f,"url",window?window.location.href:null);M(f,"browser",ya());a.b&&a.b.ra&&(c&&a.b.U(),d=a.b.ra(b,c),"object"===typeof d&&M(f,a.b.id,d),c&&(a.b.j.W=!1,!1===d&&(e=null)));for(var h=C(a.id),l=0;l<h.length;l++){var m=h[l];m.j.W&&(m.ra&&(d=m.ra(b,c),"object"===typeof d&&M(f,m.id,d)),c&&(m.j.W=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.w&&
|
||||
Xe(a,a.w,f.toString()),Ke(k)&&Ke(f)||(e=null,d=h=!0)):a.s&&(d=!0,h=3==a.s),d&&f.clear(h)):e=f.toString());c&&(a.j.W=!1,b=a.G.power)&&(b.textContent="Power");a.C=0;return e}g.reset=function(){this.A&&this.A.reset&&(nb(this,"Resetting "+this.A.type),this.A.reset());for(var a=C(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.A&&c.reset&&(nb(this,"Resetting "+c.type),c.reset())}};
|
||||
function Fd(a,b,c){var d;if(b){b=Ed(a,b);for(var e=0,f=!1,k=b,h=[],l=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var p=m[e++],r=p.length,p=oa(p);if(!p){f=!0;break}p=be(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}h.push(p);if(e==m.length)break;var p=m[e++],t=p.length;l.length&&$d[p]<$d[l[l.length-1]]&&ae(h,l,1);l.push(p);b=b.substr(r+t)}ae(h,l)&&1==h.length||(f=!0);f?c&&a.g("error parsing '"+k+"' at character "+(k.length-b.length)):(d=h.pop(),c&&Ce(a,null,
|
||||
d))}return d}function Ed(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Fd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=U(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.ib(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.V-a.Ha}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function be(a,b,c,d){var e;void 0!==b?(e=Jd(b),0<=e?e=Ld(a,e):(e=a.ja[b],void 0===e&&(e=da(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
|
||||
function Ce(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,k="";if(!f||4<f)f=4;for(var h=0;h<f;h++){k&&(k=","+k);var l=d&255,m=8,p="";void 0===m?m=32:32<m&&(m=32);if(null==l||isNaN(l))for(;0<m--;)p="?"+p;else for(;0<m--;)p=(l&1?"1":"0")+p,l>>=1;k=p+"b"+k;d>>=8}d="0x"+n(c)+" "+c+". ("+k+")"}a.g((null!=b?b+": ":"")+d);return e}function De(a,b){if(b)return Ce(a,b,a.ja[b]);var c=0;for(b in a.ja)Ce(a,b,a.ja[b]),c++;return 0<c}sd.prototype.xb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Ee(a,b,c){var d=[],e=T(b)>>>0;for(b=0;b<a.I.length;b++){var f=a.I[b],k=f.u>>>0,h=f.Yb;if(e>=k&&e<k+h){e=pa(f.yb,[e-k],a.xb);0<=e?Fe(a,b,e,d):c&&(e=~e,Fe(a,b,e-1,d),Fe(a,b,e,d));break}}return d}function Fe(a,b,c,d){var e={},f=a.I[b].yb,k=0,h=null;0<=c&&c<f.length&&(k=f[c][0],h=f[c][1]);h&&(e=a.I[b].qa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(k);d.push(e.a);d.push(e.c)}
|
||||
function Ge(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],k=e[c][1];k&&(a.g((xd[a.jb[f][0]]+" ").substr(0,5)+" ("+("0x"+n(f,2))+"): "+k+" times"),d++)}}d||a.g("no frequency data available")}}
|
||||
function He(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return De(a)||a.g("no variables"),!0;if(!c[2])return De(a,c[1]);if(!c[3])return delete a.ja[c[1]],!0;var d=Fd(a,c[3]);return void 0!==d?(a.ja[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
|
||||
function Ie(a,b,c){var d=null;if(b=U(a,b,!0)){var e=Ee(a,b,!0);if(e.length){var f,k;e[0]&&(k="",(f=b.u-e[1])&&(k=" + "+q(f)),f=e[0]+" ("+n(e[1],4)+")"+k,c&&a.g(f),d=f);4<e.length&&e[4]&&(k="",(f=e[5]-b.u)&&(k=" - "+q(f)),f=e[4]+" ("+n(e[5],4)+")"+k,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
|
||||
function Pd(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{null==c&&(c=!0);if(null!=b&&1<b.length){var d=b[1],e=null,f=d.indexOf("=");if(0<f)e=d.substr(f+1),d=d.substr(0,f);else if(2<b.length)e=b[2];else{a.g("missing value for "+b[1]);return}var f=!1,k=Fd(a,e);if(void 0!==k){var f=!0,h=d.toUpperCase();"E"==h.charAt(0)&&(h=null);switch(h){case "A":a.b.O=k&255;break;case "B":a.b.ba=k&255;break;case "BC":a.b.ba=k<<8&
|
||||
255;case "C":a.b.ga=k&255;break;case "D":a.b.ca=k&255;break;case "DE":a.b.ca=k<<8&255;case "E":a.b.ha=k&255;break;case "H":a.b.da=k&255;break;case "HL":a.b.da=k<<8&255;case "L":a.b.ia=k&255;break;case "SP":a.b.Ea=k&65535;break;case "PC":a.b.R=k&65535;a.N=P(a.b.R);break;case "PS":wc(a.b,k);break;case "C":k?(d=a.b,d.G|=256):(d=a.b,d.G&=255);break;case "P":k?(d=a.b,ub[d.L&255]||(d.L^=1)):(d=a.b,ub[d.L&255]&&(d.L^=1));break;case "A":k?(d=a.b,d.B=~d.L&16|d.B&-17):(d=a.b,d.B=d.L&16|d.B&-17);break;case "Z":k?
|
||||
(d=a.b,d.G&=-256):(d=a.b,d.G|=255);break;case "S":k?(d=a.b,d.L&128||(d.L^=192)):(d=a.b,d.L&128&&(d.L^=192));break;case "I":k?(d=a.b,d.Da|=512):(d=a.b,d.Da&=-513);break;default:a.g("unknown register: "+d);return}}if(!f){a.g("invalid value: "+e);return}I(a.b);a.g("updated registers:")}a.g(V(a,7)+V(a,8)+V(a,0)+V(a,1)+V(a,2)+V(a,3)+V(a,4)+V(a,5)+V(a,13)+Zd(a,"I")+Zd(a,"S")+Zd(a,"Z")+Zd(a,"A")+Zd(a,"P")+Zd(a,"C"));c&&(a.N=P(a.b.R),Qd(a,n(a.N.u,4)))}}
|
||||
function Je(a,b){b=oa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Md(a,c[2])):Fd(a,b,!0)}function Ke(a,b,c){var d="t"!=b;c=be(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Fa(c,function(){return fb(a,!0)&&a.Ua(e,d,!1)},function(){I(a.b);fb(a,!1)})}
|
||||
function Qd(a,b,c,d){if(b=U(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=U(a,c,!0);if(!d||d.u<b.u)return;e=d.u-b.u;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=gb(a,!1)||a.T?a.K:null;var k=null!=f?"cycles":null,h=Ee(a,b),l=b.u;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.g(m)}h[3]&&(k=h[3],f=null);f=Yd(a,b,k,f);a.g(f);a.N=b;e-=b.u-l;c++}}}
|
||||
function Hd(a,b,c,d){if(c)if(b){0>a.D&&a.B.length&&(a.D=0);if(0>a.D||b!=a.B[a.D])a.B.splice(0,0,b),a.D=0;a.D--}else b=a.B[a.D+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var k=b.charAt(f);if('"'==k||"'"==k)e?k==e&&(e=null):e=k;else if(k==d&&!e||!k)a.push(oa(b.substring(c,f))),c=f+1}}return a}
|
||||
function Xd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ma&&(a.g("ended assemble at "+n(a.ea.u,4)),a.N=a.ea,a.ma=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.wa=null;if(rb(a)&&0<b.length){a.ma&&(b="a "+n(a.ea.u,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var k=f[0],h=k.charAt(0),l=1;l<k.length;l++){var m=k.charAt(l);if("?"==h||"r"==h||"a">m||"z"<m){f[0]=k.substr(l);f.unshift(k.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var p=U(a,f[1],!0);if(p)if(a.ea=
|
||||
p,void 0===f[2])a.g("begin assemble at "+n(p.u,4)),a.ma=!0,I(a.b);else{var r;a.g("not supported yet");r=[];if(r.length){for(var t=0;t<r.length;t++)a.vb(p,r[t],1);a.g(Yd(a,a.ea))}}break;case "b":a:{var K=f[0],B=f[1],ef=b;if("?"==B)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
|
||||
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var X=K.charAt(1);if("l"==X){var Ha=0,Ha=Ha+Wd(a,a.w),Ha=Ha+Wd(a,a.S);(Ha+=Wd(a,a.F))||a.g("no breakpoints")}else if("n"==X)a.va=be(a,B),a.g("break after "+a.va+" instruction(s)");else if(void 0===B)a.g("missing breakpoint address");else{var A=P();if("*"!=B&&(A=U(a,B,!0),!A))break a;B=q(A.u);"c"==X?null==A.u?(td(a),a.g("all breakpoints cleared")):Ud(a,a.w,A)||Ud(a,a.S,
|
||||
A)||Ud(a,a.F,A)||a.g("breakpoint missing: "+n(A.u,4)):"i"==X?a.g("breakpoint "+(Db(a.A,A.u)?"enabled":"cleared")+": port "+B+" (input)"):"o"==X?a.g("breakpoint "+(Eb(a.A,A.u)?"enabled":"cleared")+": port "+B+" (output)"):null!=A.u&&(Gd(a,A,ef),"p"==X?a.xa(a.w,A):"r"==X?a.xa(a.S,A):"w"==X?a.xa(a.F,A):a.g("unknown breakpoint command: "+X))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ia,Ja=f[0],Y=f[1],qa=f[2],ff=f[3];if("?"==Y){var Z="";for(Ia in Q)a.Wa[Ia]&&(Z&&(Z+=","),Z+=Ia);Z+=",state,symbols";
|
||||
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");Z.length&&a.g("dump extension commands:\n\t"+Z)}else if("state"==Y){var ce=Le(a.s,!0);"console"==qa?console.log(ce):(a.ya&&(a.ya.value=""),a.g(ce))}else if("symbols"==Y)for(var Ec=0;Ec<a.I.length;Ec++){var Fc=a.I[Ec],La;for(La in Fc.qa)if("."!=La.charAt(0)){var de=Fc.qa[La].o;
|
||||
if(void 0!==de){var ee=Fc.qa[La].l;ee&&(La=ee);a.g(n(de,4)+" "+La)}}}else{if("d"==Ja){for(Ia in Q)if(f[1]==Ia){var fe=a.Wa[Ia];fe?(f.shift(),f.shift(),fe(f)):a.g("no dump registered for "+Y);break a}Y||(Ja=a.Xb||"db")}else a.Xb=Ja;if("dh"==Ja){var ge=Y,he=qa,ie="",je=0,D=a.na,aa=a.M;if(aa.length){var L=+ge||a.Cb,Ma=+he||10;isNaN(L)?L=Ma:ie="more ";L>aa.length&&(a.g("note: only "+aa.length+" available"),L=aa.length);D-=L;0>D&&(null==aa[aa.length-1].u?(L=D+L,D=0):D+=aa.length);var Gc=[];"call"==he&&
|
||||
(Ma=1E5,Gc=["CALL"]);for(void 0!==ge&&a.g(L+" instructions earlier:");0<Ma&&D!=a.na;){var ke=aa[D++];if(null==ke.u)break;var hb=P(ke.u),gf=L--,le=Yd(a,hb,"history",gf);(!Gc.length||0<=le.indexOf(Gc[0]))&&a.g(le);hb.nb&&(D+=hb.nb,Ma-=hb.nb,L-=hb.nb);D>=aa.length&&(D=0);a.Cb=L;je++;Ma--}}je||(a.g("no "+ie+"history available"),a.Cb=void 0)}else{var Nb=U(a,Y);if(Nb){var Ob=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||ff),Ob=be(a,qa)>>>0,65536<Ob&&(Ob=65536));for(var ra="",hf=(Ob||128)+15>>4||1,Hc="dd"==
|
||||
Ja?4:"dw"==Ja?2:1,me=0;me<hf;me++){for(var Pb=0,Ic=0,ib="",Jc="",Y=n(Nb.u,4),Kc=0;16>Kc;Kc++){var Qb=a.ta(Nb,1),Pb=Pb|Qb<<(Ic++<<3);Ic==Hc&&(ib+=n(Pb,2*Hc),ib+=1==Hc?7==Kc?"-":" ":" ",Pb=Ic=0);Jc+=32<=Qb&&128>Qb?String.fromCharCode(Qb):"."}ra&&(ra+="\n");ra+=Y+" "+ib+" "+Jc}ra&&a.g(ra);a.zb=Nb}}}}break;case "e":if("else"==f[0])break;var Rb=1,ne=255,oe=a.ta,pe=a.vb;"ew"==f[0]&&(Rb=2,ne=65535,oe=a.ib,pe=a.Qb);var qe=Rb<<1,re=f[1];if(null==re)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),
|
||||
a.g("\tew [a] [...] edit words at address a");else{var Sb=U(a,re);if(Sb)for(var Tb=2;Tb<f.length;Tb++){var jb=Fd(a,f[Tb]);if(void 0===jb){a.g("unrecognized value: "+f[Tb]);break}jb&~ne&&a.g("warning: "+n(jb)+" exceeds "+Rb+"-byte value");var jf=oe.call(a,Sb);a.g("changing "+n(Sb.u,4)+" from 0x"+n(jf,qe)+" to 0x"+n(jb,qe));pe.call(a,Sb,jb,Rb)}}break;case "f":Ge(a,f[1]);break;case "g":a:{var se=f[1],kf=b;if(void 0!==se){var Lc=U(a,se,!0);if(!Lc)break a;Gd(a,Lc,kf);a.xa(a.w,Lc,!0)}a.Fa(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
|
||||
case "h":var Mc;a.j.X?(Mc="halting",a.U()):Mc="already halted";c||a.g(Mc);break;case "i":if("if"==f[0]){var Nc;var kb=b.substr(2),kb=oa(kb);Fd(a,kb)?(c||a.g("true: "+kb),Nc=!0):(c||a.g("false: "+kb),Nc=!1);Nc||(d=!1);break}var Oc=f[1];if(Oc&&"?"!=Oc){var Pc=be(a,Oc);if(void 0!==Pc){for(var R=a.A,ga=Pc,Qc=1,Rc=0,Sc=0;0<Qc;){var Ub=R.B[ga],lb=R.T[ga]||1,Tc=1==lb?255:2==lb?65535:-1,ha=Tc;void 0!==Ub?(Ub[0]&&(ha=Ub[0](ga,void 0),void 0===ha?ha=Tc:ha&=Tc),R.C&&R.F!=Ub[1]&&Sd(R.C,ga,ha)):R.C&&(Nd(R.C,R,
|
||||
ga,null),R.F&&Sd(R.C,ga,ha));Rc|=ha<<Sc;Sc+=lb<<3;ga+=lb;Qc-=lb}a.g(q(Pc)+": "+("0x"+n(Rc,2)))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var lf=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var Uc=0,te=P(),mb=P(a.b.Ea);for(a.g("stack trace for "+n(mb.u,4));10>Uc;){for(var sa=null,mf=256;65536>mb.u>>>0;){te.u=a.ib(mb,2);if(null==mb.u||!mf--)break;
|
||||
for(var nf=a,Vb=te,ue=null,nb=Vb.u,ve=nb,Vc=1;6>=Vc&&nb;Vc++){if(2<Vc){Vb.u=nb;var Wb=Yd(nf,Vb);if(0<Wb.indexOf("CALL")){var we=Wb.indexOf(" ");if(nb+(Wb.indexOf(" ",we+1)-we-1)/2==ve){ue=Wb;break}}}nb--}Vb.u=ve;if(sa=ue)break}if(!sa||null==sa)break;var xe=null;if("ks"==lf){var ye=sa.match(/[0-9A-F]+$/);ye&&(xe=Ie(a,ye[0]))}sa=na(sa,50)+" ;"+(xe||"stack="+n(mb.u,4));a.g(sa);Uc++}Uc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ie(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,
|
||||
w=f[1];"?"==w&&(w=void 0);if(void 0!==w){var ta=0;if("all"==w)ta=1610481663,w=null;else if("on"==w)ca=!0,w=null;else if("off"==w)ca=!1,w=null;else{"keys"==w&&(w="key");"kbd"==w&&(w="keyboard");for(ba in Q)if(w==ba){ta=Q[ba];ca=!!(a.Z&ta);break}if(!ta){a.g("unknown message category: "+w);break a}}ta&&("on"==f[2]?(a.Z|=ta,ca=!0):"off"==f[2]&&(a.Z&=~ta,ca=!1))}var of=0,ia="";for(ba in Q)if(!w||w==ba){var pf=!!(a.Z&Q[ba]);if(null===ca||ca==pf)ia&&(ia+=","),++of%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),
|
||||
ia+=ba}void 0===w&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));ud(a)}break;case "o":var Wc=f[1],qf=f[2];if(Wc&&"?"!=Wc){var Xc=be(a,Wc,"port #"),Yc=be(a,qf);if(void 0!==Xc&&void 0!==Yc){for(var S=a.A,ja=Xc,ze=Yc,Zc=1,$c=0;0<Zc;){var Xb=S.D[ja],ob=S.V[ja]||1,rf=1==ob?255:2==ob?65535:-1,Yb=(ze>>>=$c)&rf;if(void 0!==Xb){if(Xb[0])Xb[0](ja,Yb,void 0);S.C&&S.I!=Xb[1]&&Td(S.C,ja,Yb)}else S.C&&
|
||||
(Nd(S.C,S,ja,Yb),S.I&&Td(S.C,ja,Yb));$c+=ob<<3;ja+=ob;Zc-=ob}a.g(q(Xc)+": "+("0x"+n(Yc,2)))}}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){Je(a,b.substr(5));break}var Ae="pr"==f[0]?1:0,sf=1+Ae;if(a.T)a.g("step in progress");else{var ad=P(a.b.R);switch(a.ta(ad)){case 205:a.T=sf,Bd(ad,3)}a.T?(a.xa(a.w,ad,!0),a.Fa()||(a.s&&a.s.gb(),a.T=0)):Ke(a,Ae?"tr":"t")}break;case "r":if("reset"==
|
||||
b){a.s&&a.s.reset();break}Pd(a,f);break;case "t":Ke(a,f[0],f[1]);break;case "u":Qd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){He(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.21.7 ("+a.b.Hb+",RELEASE"+(tb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ya());break;case "x":a:if(f[1]&&"?"!=f[1])switch(f[1]){case "cs":var pb;void 0!==f[3]&&(pb=+f[3]);switch(f[2]){case "int":a.b.i.Oa=pb;break;case "start":a.b.i.$a=pb;break;case "stop":a.b.i.Qa=pb;break;default:a.g("unknown cs option");break a}void 0!==
|
||||
pb&&lc(a.b);a.g("checksums "+(a.b.j.Ja?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(qc(a.b,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Aa.toFixed(2)+"Mhz")+" ("+a.b.i.Ca+"x)");break;default:a.g("unknown option: "+f[1])}else a.g("execution options:"),a.g("\tcs int #\tset checksum cycle interval to #"),a.g("\tcs start #\tset checksum cycle start count to #"),a.g("\tcs stop #\tset checksum cycle stop count to #"),a.g("\tsp #\t\tset speed multiplier to #");
|
||||
break;case "?":if(f[1]){Je(a,b.substr(1));break}var qb="commands:",bd;for(bd in wd)qb+="\n"+na(bd,7)+wd[bd];jd(a)||(qb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(qb);break;default:a.g("unknown command: "+b),d=!1}}}catch(Be){a.g("debugger error: "+(Be.stack||Be.message)),d=!1}return d}function mc(a,b,c){b=Hd(a,b,c);for(var d in b)if(!Xd(a,b[d]))return!1;return!0}Qa(function(){for(var a=F(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new sd(d);cb(d,c)}});
|
||||
function J(a,b,c){this.id=a.id;this.key=Me(a,b,c);this.C=a.C;Ne(this,a.Lb)}function Me(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
J.prototype={constructor:J,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Ne(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(e){}b.splice(c,1);c=0}}};
|
||||
function Ne(a,b){a[a.id]={};b&&M(a,"parms",b);a.b=!1}function Oe(a){var b=!0;if(Ba()){var c=JSON.stringify(a[a.id]);Da(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Pe(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Qe(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Ba()&&(b=Ca(a.key))?(a[a.id]=b,a.b=!0):!1}function Re(a,b){return a[a.id][b]||null}function M(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Se(a,b,c){x.call(this,"Computer",a,Se,67108864);this.j.W=!1;Te(this,b);this.S=jc(this,"autoPower",a);this.B=0;this.ma=a.busWidth||a.buswidth;this.s=Ue;this.M=null;this.I=this.ja=!1;this.na=jc(this,"url")||"";(Math.random()+.1).toString(36);this.w=Ve(this);if(this.b=bb("CPU",this.id)){this.C=bb("Debugger",this.id);this.pa=[];for(b=null;b=wb(this,"Video",b);)this.pa.push(b);this.A=new yb({id:this.Ab+".bus",buswidth:this.ma},this.b,this.C);var d,e=C(this.id);if((this.D=bb("Panel",this.id))&&
|
||||
this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.fa=this.D.fa,d.g=this.D.g,d.ya=this.D.ya;for(b=0;b<e.length;b++)d=e[b],d.Ma&&d.Ma(this,this.A,this.b,this.C);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.K=d:this.s=parseInt(d,10));var f;if(a=jc(this,"state")||(f=!0,a.state))b=this.T=a,f||(this.I=!0,this.s=Ue),this.s&&(this.N=new J(this,W),Qe(this.N)?b=null:delete this.N);!b&&this.s&&(b=We(this))&&(this.I=!0);if(b){var k=this;u(b,null,!0,function(a,b,c){c?(k.K=null,k.I=!1,k.fa("Unable to load machine state from server (error "+
|
||||
c+(b?": "+oa(b):"")+")")):(k.M=b,k.ja=!0);G(k)})}else G(this);this.H.power||(this.S=!0);!c&&this.S&&Xe(this,this.eb)}else v("Unable to find CPU component")}z(Se);var W="1.21.7",Ue=0;function Te(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.J=b}
|
||||
function jc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.J&&(d=a.J[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Xe(a,b,c){for(var d=C(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!rb(f)){rb(f,function(){Xe(a,b,c)});return}}b.call(a,c)}
|
||||
function Ye(a,b){var c=new J(a,W,"validate");if(Qe(c)&&Pe(c)){var d=Re(c,"timestamp"),e=b?Re(b,"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())}}g=Se.prototype;
|
||||
g.eb=function(a){void 0===a&&(a=this.s||(this.M?1:Ue));if(!this.B){this.B++;var b=!1,c=!1;this.ea=!1;var d=this.N||new J(this,W);if(-1==a)b=!0;else if(a>Ue){if(Qe(d,this.M)){this.F=new J(this,W,"failsafe");Qe(this.F)&&(Ze(this,d),a=2,Ne(this.F));M(this.F,"timestamp",va());Oe(this.F);var e=this.s&&!this.I;if(1==a||za("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Pe(d)){var f=Re(d,"code"),k=Re(d,"data");f&&("ok"==f?Qe(d,k):("error"==f&&"no machine state"!=
|
||||
k?(this.fa("Error: "+k),"unable to verify user"==k&&(Da("user",""),this.w=null)):this.g(f+": "+k),Ne(d),Qe(d)?(c=Pe(d),e=!0):c=!1))}e&&Ye(this,c?d:null)}else 2==a&&d.clear()}else Ye(this);delete this.M;delete this.N}e=C(this.id);for(f=0;f<e.length;f++)k=e[f],k!==this&&k!=this.b&&(c=$e(this,k,d,b,c));b=[d,a,c];-1!=a?Xe(this,this.Db,b):this.Db(b)}};
|
||||
function $e(a,b,c,d,e){if(!b.j.W){b.j.W=!0;if(b.sa){var f=null;e&&((f=Re(c,b.id))||(f=Re(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(v("Unable to restore state for "+b.type),a.T&&!a.ja?(c.clear(),a.s=Ue,window&&window.location.reload()):a.ea=!0,b.sa(null),e=!1)}if(!d&&b.wb)for(a=b.wb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
g.Db=function(a){var b=a[0],c=0>a[1];a=a[2];this.j.W=!0;var d=this.H.power;d&&(d.textContent="Shutdown");this.V||(this.g("PC8080 v"+W+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.V=!0);this.b&&($e(this,this.b,b,c,a),nc(this.b));this.ea&&(Ze(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0};
|
||||
function Ze(a,b){if(za("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.na,d=a.w||"",e=b.toString(),f={app:"PC8080"};f.ver=W;f.url=c;f.user=d;f.type="bug";f.data=e;u("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Le(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new J(a,W),k=new J(a,W,"validate"),h=va();M(k,"timestamp",h);M(f,"timestamp",h);M(f,"version","1.21.7");M(f,"url",window?window.location.href:null);M(f,"browser",ya());a.b&&a.b.ra&&(c&&a.b.U(),d=a.b.ra(b,c),"object"===typeof d&&M(f,a.b.id,d),c&&(a.b.j.W=!1,!1===d&&(e=null)));for(var h=C(a.id),l=0;l<h.length;l++){var m=h[l];m.j.W&&(m.ra&&(d=m.ra(b,c),"object"===typeof d&&M(f,m.id,d)),c&&(m.j.W=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.w&&
|
||||
af(a,a.w,f.toString()),Oe(k)&&Oe(f)||(e=null,d=h=!0)):a.s&&(d=!0,h=3==a.s),d&&f.clear(h)):e=f.toString());c&&(a.j.W=!1,b=a.H.power)&&(b.textContent="Power");a.B=0;return e}g.reset=function(){this.A&&this.A.reset&&(db(this,"Resetting "+this.A.type),this.A.reset());for(var a=C(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.A&&c.reset&&(db(this,"Resetting "+c.type),c.reset())}};
|
||||
g.start=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};g.stop=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
g.ha=function(a,b,c){var d=this;switch(b){case "power":return this.G[b]=c,c.onclick=function(){d.C||(d.j.W?He(d,!1,!0):Te(d,d.cb))},!0;case "reset":return this.G[b]=c,c.onclick=function(){if(d.j.W&&!d.C)if(d.s&&!d.K){var a=za("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");He(d,a,!0);!a&&d.T?window&&window.location.reload():d.cb(Qe)}else d.reset(),d.b&&nc(d.b)},!0;case "save":if(ka(xa(),"pcjs.org")){c.parentNode.removeChild(c);break}this.G[b]=
|
||||
c;c.onclick=function(){var a=Re(d,!0);if(a){var b=!!(d.s&&!d.K||d.T),c=He(d,b);b?Xe(d,a,c):d.da("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Re(a,b){var c=a.w;c||(c=Ha("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Ye(a,c))||a.da("The user ID is invalid."))):b&&a.da("Browser local storage is not available"));return c}
|
||||
function Ye(a,b){a.w=null;var c=u(xa()+"/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.w=c.data)}catch(e){v(e.message+" ("+d+")")}return a.w}function Se(a){var b=null;a.w&&(b=xa()+"/api/v1/user?req=load&user="+a.w+"&state="+Ie(a,W));return b}
|
||||
function Xe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ie(a,W);d.data=c;b=u(xa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.da("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.da(c),Ia("user",""),a.w=null)}}
|
||||
function wb(a,b,c){a=C(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}g.fb=function(){};g.ka=function(a){this.b&&this.b.ka(a);this.D&&this.D.ka(a)};Qa(function(){for(var a=F(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=E(c),c=F(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],k=E(f),k=new Oe(k,d,!0);mb(k,f);k.R&&Te(k,k.cb)}});
|
||||
Ma.show.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=lb("Computer",c.id))&&c.V&&!c.j.W&&c.cb(-1)}});Ma.exit.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=lb("Computer",c.id))&&c.j.W&&He(c,!(!c.s||c.K),!0)}});var Ze=0;function $e(a,b,c,d,e,f){e("Loading "+a+"...");u(a,null,!0,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):pf(h,a,b,c,d,e,f)})}
|
||||
function pf(a,b,c,d,e,f,k){function h(a,f){if(f)k(f,null);else{if(c){ab(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
h=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){h=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?e?qf(a,f,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function qf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");u(e,null,!0,function(f,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);qf(a,b,c)}})}else c(a,null)}
|
||||
function rf(a,b,c,d){function e(a){if(void 0===h){var b=k&&F(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=ma(a))}function f(a){e("Error: "+a);l&&(--Ze||Sa(!0));l=!1}var k,h,l=!0;Ze++;$a[a]={};try{if(k=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));p.appendChild(r)}c||
|
||||
(c="/versions/pc8080/1.21.7/components.xsl");m=function(d,h){h?$e(c,null,null,!1,e,function(d,m){if(m)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(m);l?(k.outerHTML=l,--Ze||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(m),(l=l.transformToFragment(h,document))?k.parentNode?(k.parentNode.replaceChild(l,k),--Ze||Sa(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?$e(b,a,d,!0,e,m):pf(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(t){f(t.message)}return l}window.embedPC8080=function(a,b,c,d){Sa(!1);return rf(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;
|
||||
function sf(a,b,c,d){if(!c&&b){d.push(b);a=$a[d[0]];b=null;for(var e in a)if(ka(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?u(b,null,!0,function(a,b){tf(b,d)}):tf(null,d)}else v("Error ("+c+") requesting "+a)}
|
||||
function tf(a,b){var c,d,e,f=b[0],k=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=$a[f],l={},m;for(m in h){var p=h[m],r=fa(m);if("xml"==r){for(r=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=r.exec(h[m]);){var t=d[2];t&&(h[t]||(p=p.replace(d[0],"")))}d=m=ea(m)}else"xsl"==r&&(e=m=ea(m));l[m]=p}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(m=JSON.stringify(l),k+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),m=k,h=null,l="data:application/javascript,",l=Ja("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),m&&(h=document.createElement("a"),"string"!=typeof h.download&&(h=null)),h?(h.href=l,h.download=m,document.body.appendChild(h),h.click(),document.body.removeChild(h),c="Check your Downloads folder for "+m+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(m?" ("+m+")":"")+"."),c+=', copy it to your web server as "'+k+'", and then add the following to your web page:\n\n',
|
||||
g.ka=function(a,b,c){var d=this;switch(b){case "power":return this.H[b]=c,c.onclick=function(){d.B||(d.j.W?Le(d,!1,!0):Xe(d,d.eb))},!0;case "reset":return this.H[b]=c,c.onclick=function(){if(d.j.W&&!d.B)if(d.s&&!d.K){var a=za("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Le(d,a,!0);!a&&d.T?window&&window.location.reload():d.eb(Ue)}else d.reset(),d.b&&nc(d.b)},!0;case "save":if(ka(xa(),"pcjs.org")){c.parentNode.removeChild(c);break}this.H[b]=
|
||||
c;c.onclick=function(){var a=Ve(d,!0);if(a){var b=!!(d.s&&!d.K||d.T),c=Le(d,b);b?af(d,a,c):d.fa("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Ve(a,b){var c=a.w;c||(c=Ca("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=bf(a,c))||a.fa("The user ID is invalid."))):b&&a.fa("Browser local storage is not available"));return c}
|
||||
function bf(a,b){a.w=null;var c=u(xa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Da("user",c.data),a.w=c.data)}catch(e){v(e.message+" ("+d+")")}return a.w}function We(a){var b=null;a.w&&(b=xa()+"/api/v1/user?req=load&user="+a.w+"&state="+Me(a,W));return b}
|
||||
function af(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Me(a,W);d.data=c;b=u(xa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"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),Da("user",""),a.w=null)}}
|
||||
function wb(a,b,c){a=C(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}g.gb=function(){};g.la=function(a){this.b&&this.b.la(a);this.D&&this.D.la(a)};Qa(function(){for(var a=F(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=E(c),c=F(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],k=E(f),k=new Se(k,d,!0);cb(k,f);k.S&&Xe(k,k.eb)}});
|
||||
Ka.show.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=bb("Computer",c.id))&&c.V&&!c.j.W&&c.eb(-1)}});Ka.exit.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=bb("Computer",c.id))&&c.j.W&&Le(c,!(!c.s||c.K),!0)}});var cf=0;function df(a,b,c,d,e,f){e("Loading "+a+"...");u(a,null,!0,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):tf(h,a,b,c,d,e,f)})}
|
||||
function tf(a,b,c,d,e,f,k){function h(a,f){if(f)k(f,null);else{if(c){ab(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
h=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){h=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?e?uf(a,f,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function uf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");u(e,null,!0,function(f,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);uf(a,b,c)}})}else c(a,null)}
|
||||
function vf(a,b,c,d){function e(a){if(void 0===h){var b=k&&F(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=ma(a))}function f(a){e("Error: "+a);l&&(--cf||Sa(!0));l=!1}var k,h,l=!0;cf++;$a[a]={};try{if(k=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));p.appendChild(r)}c||
|
||||
(c="/versions/pc8080/1.21.7/components.xsl");m=function(d,h){h?df(c,null,null,!1,e,function(d,m){if(m)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(m);l?(k.outerHTML=l,--cf||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(m),(l=l.transformToFragment(h,document))?k.parentNode?(k.parentNode.replaceChild(l,k),--cf||Sa(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?df(b,a,d,!0,e,m):tf(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(t){f(t.message)}return l}window.embedPC8080=function(a,b,c,d){Sa(!1);return vf(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;
|
||||
function wf(a,b,c,d){if(!c&&b){d.push(b);a=$a[d[0]];b=null;for(var e in a)if(ka(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?u(b,null,!0,function(a,b){xf(b,d)}):xf(null,d)}else v("Error ("+c+") requesting "+a)}
|
||||
function xf(a,b){var c,d,e,f=b[0],k=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=$a[f],l={},m;for(m in h){var p=h[m],r=fa(m);if("xml"==r){for(r=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=r.exec(h[m]);){var t=d[2];t&&(h[t]||(p=p.replace(d[0],"")))}d=m=ea(m)}else"xsl"==r&&(e=m=ea(m));l[m]=p}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(m=JSON.stringify(l),k+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),m=k,h=null,l="data:application/javascript,",l=Ea("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),m&&(h=document.createElement("a"),"string"!=typeof h.download&&(h=null)),h?(h.href=l,h.download=m,document.body.appendChild(h),h.click(),document.body.removeChild(h),c="Check your Downloads folder for "+m+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(m?" ("+m+")":"")+"."),c+=', copy it to your web server as "'+k+'", and then add the following to your web page:\n\n',
|
||||
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+k+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",v(c)):v("Missing XML/XSL resources")}
|
||||
window.savePC=function(a,b,c){var d=lb("Computer",a),e=lb("Debugger",a);if(d){var f=He(d,!0),k=d.J?JSON.stringify(d.J):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Kb:k}))return!0;u(b,null,!0,function(c,d,e){sf(c,d,e,[a,ea(b,!0),k,f])});return!0}v("Unable to identify machine '"+a+"'");return!1};})();
|
||||
window.savePC=function(a,b,c){var d=bb("Computer",a),e=bb("Debugger",a);if(d){var f=Le(d,!0),k=d.J?JSON.stringify(d.J):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Lb:k}))return!0;u(b,null,!0,function(c,d,e){wf(c,d,e,[a,ea(b,!0),k,f])});return!0}v("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
|
|
@ -6,91 +6,92 @@ typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encod
|
|||
function u(a){window&&window.alert(a)}function ha(a){var b=!1;window&&(b=window.confirm(a));return b}var ia=null;function ja(){if(null==ia){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}ia=a}return ia}function ka(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function la(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ma(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var v={init:[],show:[],exit:[]},na=!1,oa=!0;function pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function w(a){v.init.push(a)}
|
||||
function qa(a){if(oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function x(a){!oa&&a?(oa=!0,na&&ra("init")):oa=a}function ra(a){v[a]&&qa(v[a])}pa("onload",function(){na=!0;qa(v.init)});pa("onpageshow",function(){qa(v.show)});pa(ma("Opera")||ma("iOS")?"onunload":"onbeforeunload",function(){qa(v.exit)});
|
||||
function y(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Ka=b.comment;this.Wa=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ma=this.id.substr(0,b),this.La=this.id.substr(b+1)):this.La=this.id;this[a]=c;this.c={ca:!1,ja:!1,Fa:!1,B:!1,X:!1};this.ya=null;this.c.X=!1;this.i={};this.D=null;z.push(this)}var sa=void 0,ta={};
|
||||
if(window){sa||(sa=window.location.search.substr(1));for(var ua,wa=/\+/g,xa=/([^&=]+)=?([^&]*)/g;ua=xa.exec(sa);)ta[decodeURIComponent(ua[1].replace(wa," "))]=decodeURIComponent(ua[2].replace(wa," "))}function ya(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function B(a,b){b||(b=y);a.prototype=ya(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var z=[],C={};function za(a,b,c){C[a]&&b&&(C[a][b]=c)}function D(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<z.length;b++){var d=z[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function y(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Ka=b.comment;this.Wa=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ma=this.id.substr(0,b),this.La=this.id.substr(b+1)):this.La=this.id;this[a]=c;this.c={ca:!1,la:!1,Fa:!1,F:!1,X:!1};this.za=null;this.c.X=!1;this.i={};this.H=null;z.push(this)}var sa=void 0,ta={};
|
||||
if(window){sa||(sa=window.location.search.substr(1));for(var ua,va=/\+/g,wa=/([^&=]+)=?([^&]*)/g;ua=wa.exec(sa);)ta[decodeURIComponent(ua[1].replace(va," "))]=decodeURIComponent(ua[2].replace(va," "))}function xa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function B(a,b){b||(b=y);a.prototype=xa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var z=[],C={};function za(a,b,c){C[a]&&b&&(C[a][b]=c)}function D(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<z.length;b++){var d=z[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function E(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<z.length;d++)if(c)c==z[d]&&(c=null);else if(!(a!=z[d].type||b&&z[d].id.indexOf(b)))return z[d]}return null}function F(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}
|
||||
function G(a,b){for(var c=H(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,g=0;g<f.length;g++){var k=f[g];if(1===k.nodeType){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "pc8080-binding":(h=F(k))&&h.binding&&a.M(h.type,h.binding,k,h.value),m=l.length}}}}
|
||||
function H(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
y.prototype={constructor:y,parent:null,toString:function(){return this.name?this.name:this.id||this.type},M:function(a,b,c){switch(b){case "clear":return this.i[b]||(this.i[b]=c,c.onclick=function(a){return function(){a.i.print&&(a.i.print.value="")}}(this)),!0;case "print":return this.i[b]||(this.Ea=this.i[b]=c,c.value="",this.L=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.C=function(a,b,c){this.L(a,"notice",c)}),!0;default:return!1}},log:function(){},L:function(){},status:function(a){this.L(this.La+": "+a)},C:function(a,b){b||u(a)},T:function(){return this.c.B=!0},S:function(a,b){b&&(this.c.B=!1);return!0}};function Aa(a,b){if(a.c.Fa)return a.c.ja&&(a.c.ja=!1),a.c.Fa=!1;if(a.c.X)return a.L(a.toString()+" error"),!1;a.c.ja=b;return a.c.ja}function I(a){if(!a.c.X&&(a.c.ca=!0,a.c.ca)){var b=a.ya;a.ya=null;b&&b()}}
|
||||
function Ba(a,b){b&&(a.c.ca?b():a.ya=b);return a.c.ca}
|
||||
var J="undefined"!==typeof ArrayBuffer,Ca=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
|
||||
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Da(a){y.call(this,"Panel",a,Da)}B(Da);e=Da.prototype;e.M=function(a,b,c,d){return this.g&&this.g.M(a,b,c,d)||this.a&&this.a.M(a,b,c,d)||this.b&&this.b.M(a,b,c,d)?!0:this.parent.M.call(this,a,b,c,d)};e.ka=function(a,b,c,d){this.g=a;this.o=b;this.a=c;this.D=d;this.b=Ea(a,"Keyboard")};e.T=function(a,b){b||Fa();return!0};e.S=function(){return!0};e.$=function(){};
|
||||
function Fa(){for(var a=!1,b=H(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],f=F(d),g;a:{g=f.id;if(void 0!==g)for(var k=void 0,k=0;k<z.length;k++)if(z[k].id===g){g=z[k];break a}g=null}g||(a=!0,g=new Da(f));G(g,d);a&&I(g)}}w(Fa);
|
||||
function K(a,b,c){y.call(this,"Bus",a,K);this.a=b;this.D=c;this.g=a.buswidth||16;this.o=Math.pow(2,this.g);this.h=this.o-1|0;this.l=20>=this.g?12:24>=this.g?14:15;this.j=1<<this.l;this.m=this.j>>2;this.s=this.j-1;this.f=this.o/this.j|0;a=new L;Ga(a,this.D);this.b=Array(this.f);for(b=0;b<this.f;b++)this.b[b]=a;a=this.a;b=this.b;c=this.l;var d=this.h;a.J=b;a.l=c;a.j=1<<a.l;a.P=a.j-1;a.ua=b.length;a.ta=a.ua-1;a.U=d;I(this)}B(K);K.prototype.reset=function(){};
|
||||
K.prototype.T=function(a,b){b||this.reset();return!0};function Ha(a,b,c,d){for(var f=b>>>a.l;0<c&&f<a.b.length;){var g=a.b[f],k=f*a.j,h=c>a.j?a.j:c;if(g&&g.size){if(g.type==d){if(b+c<=g.ia)return g.Ca+=g.ia-b,g.ia=b,!0;if(b>=g.ia+g.Ca){h=g.size-(b-k);h>c&&(h=c);g.Ca=b-g.ia+h;c-=h;b=k+a.j;continue}}return Ia(1,b,c)}g=a.b[f];b=new L(b,h,a.j,d);Ga(b,a.D,g);a.b[f++]=b;b=k+a.j;c-=h}return 0>=c?!0:Ia(2,b,c)}function Ia(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Ja;
|
||||
if(J){var Ka=new ArrayBuffer(2);(new DataView(Ka)).setUint16(0,256,!0);Ja=256===(new Uint16Array(Ka))[0]}else Ja=!1;var La=Ja;
|
||||
function L(a,b,c,d){this.id=Ma+=2;this.a=null;this.ia=a;this.Ca=b;this.size=c||0;this.type=d||Na;this.o=d==Oa;Ga(this);this.R=this.eb=!1;if(c)if(J)this.i=new ArrayBuffer(c),this.f=new DataView(this.i,0,c),this.b=new Uint8Array(this.i,0,c),this.j=new Uint16Array(this.i,0,c>>1),this.a=new Int32Array(this.i,0,c>>2),Pa(this,La?Qa:Ra);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;Pa(this,Sa)}else Pa(this)}var Na=0,Oa=2,Ma=0;
|
||||
L.prototype={constructor:L,parent:null,save:function(){var a,b;if(J)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(J)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.R=!0}return!1},l:function(){return 255},s:function(){},m:function(a,b){return this.sa(a++,b++)|this.sa(a,b)<<8},ba:function(a,b,c){this.Da(a++,b&255,c++);this.Da(a,b>>8,c)},F:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},K:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},V:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.R=!0},va:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.R=!0},v:function(a,b){return this.A(a,b)},H:function(a,b){return this.I(a,b)},P:function(a,b,c){this.o||this.Za(a,b,c)},aa:function(a,b,
|
||||
c){this.o||this.ta(a,b,c)},u:function(a){return this.b[a]},w:function(a){return this.b[a]},G:function(a){return this.f.getUint16(a,!0)},J:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.j[a>>1]},O:function(a,b){this.b[a]=b;this.R=!0},U:function(a,b){this.b[a]=b;this.R=!0},W:function(a,b){this.f.setUint16(a,b,!0);this.R=!0},ua:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.j[a>>1]=b;this.R=!0}};function Ga(a,b,c){a.D=b;a.g=a.h=0;c&&((a.g=c.g)&&Ta(a,Ua,!1),(a.h=c.h)&&Va(a,Ua,!1))}
|
||||
function Va(a,b,c){c&&a.h||(a.Da=!a.o&&b[2]||a.s);if(c||void 0===c)a.Za=b[2]||a.s,a.ta=b[3]||a.ba}function Ta(a,b,c){c&&a.g||(a.sa=b[0]||a.l,a.gb=b[1]||a.m);if(c||void 0===c)a.A=b[0]||a.l,a.I=b[1]||a.m}function Pa(a,b){b||(b=Wa);Ta(a,b,void 0);Va(a,b,void 0)}var Wa=[],Sa=[L.prototype.F,L.prototype.K,L.prototype.V,L.prototype.va],Ua=[L.prototype.v,L.prototype.H,L.prototype.P,L.prototype.aa];
|
||||
if(J)var Ra=[L.prototype.u,L.prototype.G,L.prototype.O,L.prototype.W],Qa=[L.prototype.w,L.prototype.J,L.prototype.U,L.prototype.ua];
|
||||
function M(a,b){y.call(this,"CPU",a,M);var c=a.cycles||b,d=a.multiplier||1;this.a={};this.a.ha=c;this.a.ga=d;this.a.Ga=Math.round(this.a.ha/1E4)/100;this.a.da=this.a.Ga*this.a.ga;this.c.N=!1;this.c.Ra=!1;this.c.Pa=a.autoStart;this.c.Qa=!1;this.c.wa=!1;this.a.Aa=this.a.fa=0;this.a.Ba=a.csStart;this.a.la=a.csInterval;this.a.ma=a.csStop;this.bb=this.Ja.bind(this);I(this)}B(M);var Xa=["power","reset"];e=M.prototype;
|
||||
e.ka=function(a,b,c,d){this.g=a;this.o=b;this.D=d;for(b=0;b<Xa.length;b++)(c=this.i[Xa[b]])&&this.g.M(null,Xa[b],c);Ea(a,"FPU");this.m=Ea(a,"ChipSet");a=Ya(a,"autoStart");null!=a&&(this.c.Pa="true"==a?!0:"false"==a?!1:!!a);I(this)};e.reset=function(){};e.save=function(){return null};e.restore=function(){return!1};e.T=function(a,b){if(!b){if(a&&this.restore){Za(this);if(!this.restore(a))return!1;$a(this)}else this.reset();this.L("No debugger detected")}ab(this);return!0};
|
||||
e.S=function(a){return a?this.save():!0};function bb(a){(a.c.Pa||void 0===a.i.run)&&a.Ja()}e.Sa=function(){return 0};function $a(a){void 0===a.a.Ba&&(a.a.Ba=0);void 0===a.a.la&&(a.a.la=-1);void 0===a.a.ma&&(a.a.ma=-1);a.c.wa=0<=a.a.Ba&&0<a.a.la;a.c.wa&&(a.a.Aa=0,a.a.fa=a.a.Ba-a.O)}
|
||||
e.M=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.i[b]=c;a=!0;break;case "run":this.i[b]=c;c.onclick=function(){var a;if(a=d.g)if(a=d.g,a.c.B)a=!0;else{var b=null,c,h=D(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.c.ca);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.c.B);c++);c==h.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.c.ca?"powered yet":"ready yet"+(b.ya?" (waiting for notification)":""))+".");a=!1}a&&(d.c.N?N(d,!0):d.Ja())};a=!0;break;
|
||||
case "speed":this.i[b]=c;a=!0;break;case "setSpeed":this.i[b]=c,c.onclick=function(){O(d,d.a.ga<<1)},c.textContent=this.a.da.toFixed(2)+"Mhz",a=!0}return a};function cb(a,b,c){a.O+=b;c&&(a.K=a.b=0)}function db(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.a.ga&&a.a.Y&&(d=a.a.Y/a.a.Ga);a.a.Ta=Math.round(1E3/30);a.a.fb=Math.floor(a.a.ha/c*d);a.a.Ha=Math.floor(a.a.ha/30*d);a.a.Va=Math.floor(a.a.ha/60*d);a.a.Ua=Math.floor(a.a.ha/2*d);b||(a.a.pa=a.a.Ha,a.a.oa=a.a.Va,a.a.na=a.a.Ua);a.a.Ia=0}
|
||||
function P(a){return a.O+a.G+a.K-a.b}function Za(a){a.a.Y=0;a.O=a.G=a.K=a.b=0;$a(a);O(a,1)}function O(a,b){if(void 0!==b){.8>a.a.Y/a.a.da&&(b=1);a.a.ga=b;var c=a.a.Ga*a.a.ga;if(a.a.da!=c){a.a.da=c;var c=a.a.da.toFixed(2)+"Mhz",d=a.i.setSpeed;d&&(d.textContent=c);a.L("target speed: "+c)}}cb(a,a.G);a.G=0;a.a.ea=p();a.a.Z=0;db(a)}
|
||||
e.Ja=function(){if(Aa(this,!0)){if(!this.c.N){O(this);this.g&&this.g.start(this.a.ea,P(this));this.c.N=!0;this.c.Ra=!0;this.m&&this.m.hb();var a=this.i.run;a&&(a.textContent="Halt");this.g&&this.g.$(!0)}this.a.Ia>=this.a.ha&&db(this,!0);this.a.qa=0;this.a.za=p();this.a.Z&&(a=this.a.za-this.a.Z,a>this.a.Ta&&(this.a.ea+=a,this.a.ea>this.a.za&&(this.a.ea=this.a.za)));try{do{var b=this.c.wa?1:this.a.fb;this.m&&(this.m.Ya(),b=this.m.jb(0,b),b=this.m.ib(b));try{this.Xa(b)}catch(f){if("number"!=typeof f)throw f;
|
||||
}var c=this.K-this.b;this.G+=c;this.a.qa+=c;cb(this,0,!0);a=c;if(this.c.wa){var d=!1;this.a.Aa=this.a.Aa+this.Sa()|0;this.a.fa-=a;0>=this.a.fa&&(this.a.fa+=this.a.la,d=!0);0<=this.a.ma&&this.a.ma<=P(this)&&(this.a.la=this.a.ma=-1,$a(this),N(this),d=!0);d&&this.L(P(this)+" cycles: checksum="+n(this.a.Aa))}this.a.oa-=c;0>=this.a.oa&&(this.a.oa+=this.a.Va);this.a.na-=c;0>=this.a.na&&(this.a.na+=this.a.Ua,this.g&&this.g.$());this.a.pa-=c;if(0>=this.a.pa){this.a.pa+=this.a.Ha;break}}while(this.c.N)}catch(f){N(this);
|
||||
ab(this);this.g&&this.g.stop(p(),P(this));Aa(this,!1);b=f.stack||f.message;this.c.X=!0;this.C(b);return}b=setTimeout;c=this.bb;this.a.Z=p();a=this.a.Ta;this.a.qa&&(a=Math.round(a*this.a.qa/this.a.Ha));a-=this.a.Z-this.a.za;if(d=this.a.Z-this.a.ea)this.a.Y=Math.round(this.G/(10*d))/100,864E5<=d&&(this.O=0,this.m&&this.m.Ya(!0),O(this));if(0>a||this.a.Y<this.a.da)a=0;this.a.Ia+=this.a.qa;this.a.Z+=a;b(c,a)}else ab(this),this.g&&this.g.stop(p(),P(this))};e.Xa=function(){return 0};
|
||||
function N(a,b){a.c.ja&&(a.c.Fa=!0);a.K-=a.b;a.b=0;cb(a,a.G);a.G=0;if(a.c.N){a.c.N=!1;a.m&&a.m.hb();var c=a.i.run;c&&(c.textContent="Run")}a.c.xa=b}function ab(a){a.g&&a.g.$(void 0)}function eb(a){this.ab=a.model||8080;M.call(this,a,1E6);this.$a=fb;Za(this);this.c.xa=this.c.cb=!1;this.va=0;this.J=[];this.l=this.j=this.P=this.ua=this.ta=this.U=0;gb(this)}B(eb,M);e=eb.prototype;e.reset=function(){this.c.N&&N(this);gb(this);Za(this);this.c.X=!1};
|
||||
function gb(a){a.h=0;a.u=0;a.v=0;a.A=0;a.w=0;a.H=0;a.I=0;a.ba=0;a.s=0;hb(a,0);a.aa=0}e.Sa=function(){var a=this.h+this.u+this.v+this.A+this.w+this.H+this.I|0;return a=a+this.ba+this.s+ib(this)|0};
|
||||
e.save=function(){var a=new Q(this);R(a,0,[this.h,this.u,this.v,this.A,this.w,this.H,this.I,this.ba,this.s,ib(this)]);R(a,1,[this.V,this.aa,this.O,this.a.ga]);for(var b=this.o,c=0,d=[],f=0;f<b.f;f++){var g=b.b[f];if(g.R||g.eb){d[c++]=f;var k=c++;a:if(g=g.save()){for(var h=0,l=0,m=[];h<g.length;){for(var A=g[h],r=h+1;r<g.length&&g[r]===A;)r++;m[l++]=r-h;m[l++]=A;h=r}if(m.length<g.length){g=m;break a}}d[k]=g}}R(a,2,d);return a.data()};
|
||||
e.restore=function(a){var b=a[0];this.h=b[0];this.u=b[1];this.v=b[2];this.A=b[3];this.w=b[4];this.H=b[5];this.I=b[6];this.ba=b[7]&65535;this.s=b[8]&65535;hb(this,b[9]);b=a[1];this.V=b[0];this.aa=b[1];this.O=b[2];O(this,b[3]);a:{b=this.o;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.m){for(var g=0,k=Array(b.m),h=0;h<f.length-1;)for(var l=f[h++],m=f[h++];l--;)k[g++]=m;f=k}g=b.b[d];if(!g||!g.restore(f)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
e.M=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "D":case "E":case "H":case "L":case "SP":case "PC":case "F":case "SF":case "ZF":case "AF":case "PF":case "CF":this.i[b]=c;this.va++;d=!0;break;default:d=this.parent.M.call(this,a,b,c)}return d};function S(a){return a.u<<8|a.v}function jb(a,b){a.u=b>>8&255;a.v=b&255}function kb(a){return a.A<<8|a.w}function lb(a,b){a.A=b>>8&255;a.w=b&255}
|
||||
function ib(a){return a.Na&-214|(a.F&128?128:0)|(a.f&255?0:64)|((a.F^a.W)&16?16:0)|(Ca[a.F&255]?4:0)|(a.f&256?1:0)}function hb(a,b){a.f=a.F=a.W=0;b&1&&(a.f|=256);b&4||(a.F|=1);b&16&&(a.W|=16);b&64||(a.f|=255);b&128&&(a.F^=192);a.Na=a.Na&-513|b&512|2}function mb(a,b){a.W=b;b=(a.F=b+1)&255;a.f=a.f&-256|b;return b}function nb(a,b){a.W=b;b=(a.F=b-1)&255;a.f=a.f&-256|b;return b}function ob(a,b){return a.J[(b&a.U)>>>a.l].sa(b&a.P,b)}function pb(a){var b=ob(a,a.s);a.s=a.s+1&65535;return b}
|
||||
function qb(a){var b;b=a.s;var c=b&a.P,d=(b&a.U)>>>a.l;c<a.P?b=a.J[d].gb(c,b):(c=a.J[d].sa(c,b),b=c|=a.J[d+1&a.ta].sa(0,b+1)<<8);a.s=a.s+2&65535;return b}function T(a,b,c,d){d=d||2;a.i[b]&&(void 0===c&&(a.c.X=!0,a.C("Value for "+b+" is invalid"),N(a)),c=!a.c.N||a.c.Qa?n(c,d):"--------".substr(0,d),a.i[b].textContent!=c&&(a.i[b].textContent=c))}
|
||||
e.$=function(a){this.va&&(a||!this.c.N||this.c.Qa)&&(T(this,"A",this.h),T(this,"B",this.u),T(this,"C",this.v),T(this,"D",this.A),T(this,"E",this.w),T(this,"H",this.H),T(this,"L",this.I),T(this,"SP",this.ba,4),T(this,"PC",this.s,4),a=ib(this),T(this,"F",a,2),T(this,"SF",a&128,1),T(this,"ZF",a&64,1),T(this,"AF",a&16,1),T(this,"PF",a&4,1),T(this,"CF",a&1,1));if(a=this.i.speed)a.textContent=this.c.N&&this.a.Y?this.a.Y.toFixed(2)+"Mhz":"Stopped"};
|
||||
e.Xa=function(a){this.c.xa=!0;this.c.cb=!1;this.c.Ra=!1;this.K=this.b=a;this.m&&!a&&this.m.Ya();a||(this.V|=4);do{if(this.aa&&this.aa&4){this.V=this.b=0;break}this.V=0;this.$a[pb(this)].call(this)}while(0<this.b);return this.c.xa?this.K-this.b:void 0===this.c.xa?0:-1};w(function(){for(var a=H(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new eb(d);G(d,c)}});function rb(){this.b-=4}function U(){this.s=this.s-1&65535;N(this)}
|
||||
var fb=[rb,function(){jb(this,qb(this));this.b-=10},function(){var a=S(this);this.J[(a&this.U)>>>this.l].Da(a&this.P,this.h&255,a);this.b-=7},function(){jb(this,S(this)+1);this.b-=5},function(){this.u=mb(this,this.u);this.b-=5},function(){this.u=nb(this,this.u);this.b-=5},function(){this.u=pb(this);this.b-=7},function(){var a=this.h<<1;this.h=a&255|a>>8;this.f=this.f&255|a&256;this.b-=4},rb,function(){var a,b=a=(this.H<<8|this.I)+S(this);this.H=b>>8&255;this.I=b&255;this.f=this.f&255|a>>8&256;this.b-=
|
||||
10},function(){this.h=ob(this,S(this));this.b-=7},function(){jb(this,S(this)-1);this.b-=5},function(){this.v=mb(this,this.v);this.b-=5},function(){this.v=nb(this,this.v);this.b-=5},function(){this.v=pb(this);this.b-=7},function(){var a=this.h<<8&256;this.h=(a|this.h)>>1;this.f=this.f&255|a;this.b-=4},rb,function(){lb(this,qb(this));this.b-=10},function(){var a=kb(this);this.J[(a&this.U)>>>this.l].Da(a&this.P,this.h&255,a);this.b-=7},function(){lb(this,kb(this)+1);this.b-=5},function(){this.A=mb(this,
|
||||
this.A);this.b-=5},function(){this.A=nb(this,this.A);this.b-=5},function(){this.A=pb(this);this.b-=7},function(){var a=this.h<<1;this.h=a&255|this.f>>8;this.f=this.f&255|a&256;this.b-=4},rb,function(){var a,b=a=(this.H<<8|this.I)+kb(this);this.H=b>>8&255;this.I=b&255;this.f=this.f&255|a>>8&256;this.b-=10},function(){this.h=ob(this,kb(this));this.b-=7},function(){lb(this,kb(this)-1);this.b-=5},function(){this.w=mb(this,this.w);this.b-=5},function(){this.w=nb(this,this.w);this.b-=5},function(){this.w=
|
||||
pb(this);this.b-=7},function(){var a=this.h<<8&256;this.h=(this.f&256|this.h)>>1;this.f=this.f&255|a;this.b-=4},U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,
|
||||
U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U];function V(a){y.call(this,"ROM",a,V);this.b=null;this.l=a.addr;this.f=a.size;this.g=a.alias;this.h=a.file;this.m=ba(this.h);if(this.h){a=this.h;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=t()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;q(a,null,!0,function(a,b,g){sb(c,a,b,g)})}}B(V);V.prototype.ka=function(a,b,c,d){this.o=b;this.a=c;this.D=d;tb(this)};
|
||||
V.prototype.T=function(){this.j&&(this.D&&this.D.a(this.id,this.l,this.f,this.j),delete this.j);return!0};V.prototype.S=function(){return!0};
|
||||
function sb(a,b,c,d){if(d)a.C("Unable to load system ROM (error "+d+": "+b+")");else{za(a.Ma,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes,k=f.data;if(g)a.b=g;else if(k)for(a.b=Array(4*k.length),d=c=0;c<k.length;c++)a.b[d++]=k[c]&255,a.b[d++]=k[c]>>8&255,a.b[d++]=k[c]>>16&255,a.b[d++]=k[c]>>24&255;else a.b=f;a.j=f.symbols;if(!a.b.length){u("Empty ROM: "+b);return}if(1==a.b.length){u(a.b[0]);return}}catch(h){a.C("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);tb(a)}}
|
||||
function tb(a){if(!Ba(a))if(!a.h)I(a);else if(a.b&&a.o){if(a.b.length!=a.f){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.f))+")";a.c.X=!0;a.C(b)}else{b=a.l;if(Ha(a.o,b,a.f,Oa)){for(var c=0;c<a.b.length;c++){var d=a.o,f=b+c;d.b[(f&d.h)>>>d.l].Za(f&d.s,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.g?b.push(a.g):null!=a.g&&a.g.length&&(b=a.g);for(c=0;c<b.length;c++){for(var g=a,d=b[c],f=g.o,k=g.f,h=[],l=g.l>>>f.l;0<k&&l<f.b.length;)h.push(f.b[l++]),k-=
|
||||
f.j;f=g.o;g=g.f;k=0;for(d>>>=f.l;0<g&&d<f.b.length;){l=h[k++];if(!l)break;f.b[d++]=l;g-=f.j}}delete a.b}}I(a)}}w(function(){for(var a=H(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new V(d);G(d,c)}});function ub(a){y.call(this,"RAM",a,ub);this.g=a.addr;this.f=a.size;this.b=!1}B(ub);e=ub.prototype;e.ka=function(a,b,c,d){this.o=b;this.a=c;this.D=d;I(this)};e.T=function(a,b){b||this.reset();return!0};e.S=function(a){return a?this.save():!0};
|
||||
e.reset=function(){!this.b&&this.f&&Ha(this.o,this.g,this.f,1)&&(this.b=!0,this.status(Math.floor(this.f/1024)+"Kb allocated"));this.b||u("No RAM allocated")};e.save=function(){return null};e.restore=function(){return!0};w(function(){for(var a=H(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new ub(d);G(d,c)}});function vb(a){y.call(this,"Keyboard",a,vb);I(this)}B(vb);w(function(){for(var a=H(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new vb(d);G(d,c)}});
|
||||
function wb(a){y.call(this,"Video",a,wb);I(this)}B(wb);
|
||||
this.G=function(a,b,c){this.L(a,"notice",c)}),!0;default:return!1}},log:function(){},L:function(){},status:function(a){this.L(this.La+": "+a)},G:function(a,b){b||u(a)},V:function(){return this.c.F=!0},U:function(a,b){b&&(this.c.F=!1);return!0}};function Aa(a,b){if(a.c.Fa)return a.c.la&&(a.c.la=!1),a.c.Fa=!1;if(a.c.X)return a.L(a.toString()+" error"),!1;a.c.la=b;return a.c.la}function I(a){if(!a.c.X&&(a.c.ca=!0,a.c.ca)){var b=a.za;a.za=null;b&&b()}}
|
||||
function Ba(a,b){b&&(a.c.ca?b():a.za=b);return a.c.ca}
|
||||
var Ca="undefined"!==typeof ArrayBuffer,Da=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
|
||||
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Ea(a){y.call(this,"Panel",a,Ea)}B(Ea);e=Ea.prototype;e.M=function(a,b,c,d){return this.h&&this.h.M(a,b,c,d)||this.a&&this.a.M(a,b,c,d)||this.b&&this.b.M(a,b,c,d)?!0:this.parent.M.call(this,a,b,c,d)};e.ma=function(a,b,c,d){this.h=a;this.o=b;this.a=c;this.H=d;this.b=Fa(a,"Keyboard")};e.V=function(a,b){b||Ga();return!0};e.U=function(){return!0};e.$=function(){};
|
||||
function Ga(){for(var a=!1,b=H(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],f=F(d),g;a:{g=f.id;if(void 0!==g)for(var k=void 0,k=0;k<z.length;k++)if(z[k].id===g){g=z[k];break a}g=null}g||(a=!0,g=new Ea(f));G(g,d);a&&I(g)}}w(Ga);
|
||||
function Ha(a,b,c){y.call(this,"Bus",a,Ha);this.a=b;this.H=c;this.g=a.buswidth||16;this.o=Math.pow(2,this.g);this.h=this.o-1|0;this.j=20>=this.g?12:24>=this.g?14:15;this.l=1<<this.j;this.m=this.l>>2;this.s=this.l-1;this.f=this.o/this.l|0;a=new J;Ia(a,this.H);this.b=Array(this.f);for(b=0;b<this.f;b++)this.b[b]=a;a=this.a;b=this.b;c=this.j;var d=this.h;a.I=b;a.j=c;a.l=1<<a.j;a.K=a.l-1;a.va=b.length;a.ja=a.va-1;a.S=d;I(this)}B(Ha);Ha.prototype.reset=function(){};
|
||||
Ha.prototype.V=function(a,b){b||this.reset();return!0};function Ja(a,b,c,d){for(var f=b>>>a.j;0<c&&f<a.b.length;){var g=a.b[f],k=f*a.l,h=c>a.l?a.l:c;if(g&&g.size){if(g.type==d){if(b+c<=g.ka)return g.Da+=g.ka-b,g.ka=b,!0;if(b>=g.ka+g.Da){h=g.size-(b-k);h>c&&(h=c);g.Da=b-g.ka+h;c-=h;b=k+a.l;continue}}return Ka(1,b,c)}g=a.b[f];b=new J(b,h,a.l,d);Ia(b,a.H,g);a.b[f++]=b;b=k+a.l;c-=h}return 0>=c?!0:Ka(2,b,c)}function Ka(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var La;
|
||||
if(Ca){var Ma=new ArrayBuffer(2);(new DataView(Ma)).setUint16(0,256,!0);La=256===(new Uint16Array(Ma))[0]}else La=!1;var Na=La;
|
||||
function J(a,b,c,d){this.id=Oa+=2;this.a=null;this.ka=a;this.Da=b;this.size=c||0;this.type=d||Pa;this.g=d==Qa;Ia(this);this.T=this.eb=!1;if(c)if(Ca)this.f=new ArrayBuffer(c),this.i=new DataView(this.f,0,c),this.b=new Uint8Array(this.f,0,c),this.j=new Uint16Array(this.f,0,c>>1),this.a=new Int32Array(this.f,0,c>>2),Ra(this,Na?Sa:Ta);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;Ra(this,Ua)}else Ra(this)}var Pa=0,Qa=2,Oa=0;
|
||||
J.prototype={constructor:J,parent:null,save:function(){var a,b;if(Ca)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.i.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Ca)for(b=0;b<a.length;b++)this.i.setInt32(b<<2,a[b],!0);else this.a=a;return this.T=!0}return!1},l:function(){return 255},s:function(){},m:function(a,b){return this.ua(a++,b++)|this.ua(a,b)<<8},u:function(a,b,c){this.ia(a++,b&255,c++);this.ia(a,b>>8,c)},C:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},N:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},W:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.T=!0},wa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.T=!0},A:function(a,b){return this.w(a,b)},I:function(a,b){return this.J(a,b)},R:function(a,b,c){this.g||this.Za(a,b,c)},ba:function(a,b,
|
||||
c){this.g||this.ja(a,b,c)},v:function(a){return this.b[a]},B:function(a){return this.b[a]},D:function(a){return this.i.getUint16(a,!0)},K:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.j[a>>1]},P:function(a,b){this.b[a]=b;this.T=!0},S:function(a,b){this.b[a]=b;this.T=!0},aa:function(a,b){this.i.setUint16(a,b,!0);this.T=!0},va:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.j[a>>1]=b;this.T=!0}};function Ia(a,b,c){a.H=b;a.h=a.o=0;c&&((a.h=c.h)&&Va(a,Wa,!1),(a.o=c.o)&&Xa(a,Wa,!1))}
|
||||
function Xa(a,b,c){c&&a.o||(a.ia=!a.g&&b[2]||a.s,a.ib=!a.g&&b[3]||a.u);if(c||void 0===c)a.Za=b[2]||a.s,a.ja=b[3]||a.u}function Va(a,b,c){c&&a.h||(a.ua=b[0]||a.l,a.gb=b[1]||a.m);if(c||void 0===c)a.w=b[0]||a.l,a.J=b[1]||a.m}function Ra(a,b){b||(b=Ya);Va(a,b,void 0);Xa(a,b,void 0)}var Ya=[],Ua=[J.prototype.C,J.prototype.N,J.prototype.W,J.prototype.wa],Wa=[J.prototype.A,J.prototype.I,J.prototype.R,J.prototype.ba];
|
||||
if(Ca)var Ta=[J.prototype.v,J.prototype.D,J.prototype.P,J.prototype.aa],Sa=[J.prototype.B,J.prototype.K,J.prototype.S,J.prototype.va];
|
||||
function Za(a,b){y.call(this,"CPU",a,Za);var c=a.cycles||b,d=a.multiplier||1;this.a={};this.a.ha=c;this.a.ga=d;this.a.Ga=Math.round(this.a.ha/1E4)/100;this.a.da=this.a.Ga*this.a.ga;this.c.O=!1;this.c.Ra=!1;this.c.Pa=a.autoStart;this.c.Qa=!1;this.c.xa=!1;this.a.Ba=this.a.fa=0;this.a.Ca=a.csStart;this.a.na=a.csInterval;this.a.oa=a.csStop;this.bb=this.Ja.bind(this);I(this)}B(Za);var $a=["power","reset"];e=Za.prototype;
|
||||
e.ma=function(a,b,c,d){this.h=a;this.o=b;this.H=d;for(b=0;b<$a.length;b++)(c=this.i[$a[b]])&&this.h.M(null,$a[b],c);Fa(a,"FPU");this.s=Fa(a,"ChipSet");a=ab(a,"autoStart");null!=a&&(this.c.Pa="true"==a?!0:"false"==a?!1:!!a);I(this)};e.reset=function(){};e.save=function(){return null};e.restore=function(){return!1};e.V=function(a,b){if(!b){if(a&&this.restore){bb(this);if(!this.restore(a))return!1;cb(this)}else this.reset();this.L("No debugger detected")}db(this);return!0};
|
||||
e.U=function(a){return a?this.save():!0};function eb(a){(a.c.Pa||void 0===a.i.run)&&a.Ja()}e.Sa=function(){return 0};function cb(a){void 0===a.a.Ca&&(a.a.Ca=0);void 0===a.a.na&&(a.a.na=-1);void 0===a.a.oa&&(a.a.oa=-1);a.c.xa=0<=a.a.Ca&&0<a.a.na;a.c.xa&&(a.a.Ba=0,a.a.fa=a.a.Ca-a.R)}
|
||||
e.M=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.i[b]=c;a=!0;break;case "run":this.i[b]=c;c.onclick=function(){var a;if(a=d.h)if(a=d.h,a.c.F)a=!0;else{var b=null,c,h=D(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.c.ca);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.c.F);c++);c==h.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.c.ca?"powered yet":"ready yet"+(b.za?" (waiting for notification)":""))+".");a=!1}a&&(d.c.O?K(d,!0):d.Ja())};a=!0;break;
|
||||
case "speed":this.i[b]=c;a=!0;break;case "setSpeed":this.i[b]=c,c.onclick=function(){fb(d,d.a.ga<<1)},c.textContent=this.a.da.toFixed(2)+"Mhz",a=!0}return a};function gb(a,b,c){a.R+=b;c&&(a.P=a.b=0)}function hb(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.a.ga&&a.a.Y&&(d=a.a.Y/a.a.Ga);a.a.Ta=Math.round(1E3/30);a.a.fb=Math.floor(a.a.ha/c*d);a.a.Ha=Math.floor(a.a.ha/30*d);a.a.Va=Math.floor(a.a.ha/60*d);a.a.Ua=Math.floor(a.a.ha/2*d);b||(a.a.ra=a.a.Ha,a.a.qa=a.a.Va,a.a.pa=a.a.Ua);a.a.Ia=0}
|
||||
function ib(a){return a.R+a.N+a.P-a.b}function bb(a){a.a.Y=0;a.R=a.N=a.P=a.b=0;cb(a);fb(a,1)}function fb(a,b){if(void 0!==b){.8>a.a.Y/a.a.da&&(b=1);a.a.ga=b;var c=a.a.Ga*a.a.ga;if(a.a.da!=c){a.a.da=c;var c=a.a.da.toFixed(2)+"Mhz",d=a.i.setSpeed;d&&(d.textContent=c);a.L("target speed: "+c)}}gb(a,a.N);a.N=0;a.a.ea=p();a.a.Z=0;hb(a)}
|
||||
e.Ja=function(){if(Aa(this,!0)){if(!this.c.O){fb(this);this.h&&this.h.start(this.a.ea,ib(this));this.c.O=!0;this.c.Ra=!0;this.s&&this.s.hb();var a=this.i.run;a&&(a.textContent="Halt");this.h&&this.h.$(!0)}this.a.Ia>=this.a.ha&&hb(this,!0);this.a.sa=0;this.a.Aa=p();this.a.Z&&(a=this.a.Aa-this.a.Z,a>this.a.Ta&&(this.a.ea+=a,this.a.ea>this.a.Aa&&(this.a.ea=this.a.Aa)));try{do{var b=this.c.xa?1:this.a.fb;this.s&&(this.s.Ya(),b=this.s.kb(0,b),b=this.s.jb(b));try{this.Xa(b)}catch(f){if("number"!=typeof f)throw f;
|
||||
}var c=this.P-this.b;this.N+=c;this.a.sa+=c;gb(this,0,!0);a=c;if(this.c.xa){var d=!1;this.a.Ba=this.a.Ba+this.Sa()|0;this.a.fa-=a;0>=this.a.fa&&(this.a.fa+=this.a.na,d=!0);0<=this.a.oa&&this.a.oa<=ib(this)&&(this.a.na=this.a.oa=-1,cb(this),K(this),d=!0);d&&this.L(ib(this)+" cycles: checksum="+n(this.a.Ba))}this.a.qa-=c;0>=this.a.qa&&(this.a.qa+=this.a.Va);this.a.pa-=c;0>=this.a.pa&&(this.a.pa+=this.a.Ua,this.h&&this.h.$());this.a.ra-=c;if(0>=this.a.ra){this.a.ra+=this.a.Ha;break}}while(this.c.O)}catch(f){K(this);
|
||||
db(this);this.h&&this.h.stop(p(),ib(this));Aa(this,!1);b=f.stack||f.message;this.c.X=!0;this.G(b);return}b=setTimeout;c=this.bb;this.a.Z=p();a=this.a.Ta;this.a.sa&&(a=Math.round(a*this.a.sa/this.a.Ha));a-=this.a.Z-this.a.Aa;if(d=this.a.Z-this.a.ea)this.a.Y=Math.round(this.N/(10*d))/100,864E5<=d&&(this.R=0,this.s&&this.s.Ya(!0),fb(this));if(0>a||this.a.Y<this.a.da)a=0;this.a.Ia+=this.a.sa;this.a.Z+=a;b(c,a)}else db(this),this.h&&this.h.stop(p(),ib(this))};e.Xa=function(){return 0};
|
||||
function K(a,b){a.c.la&&(a.c.Fa=!0);a.P-=a.b;a.b=0;gb(a,a.N);a.N=0;if(a.c.O){a.c.O=!1;a.s&&a.s.hb();var c=a.i.run;c&&(c.textContent="Run")}a.c.ya=b}function db(a){a.h&&a.h.$(void 0)}function jb(a){this.ab=a.model||8080;Za.call(this,a,1E6);this.$a=kb;bb(this);this.c.ya=this.c.cb=!1;this.wa=0;this.I=[];this.j=this.l=this.K=this.va=this.ja=this.S=0;lb(this)}B(jb,Za);e=jb.prototype;e.reset=function(){this.c.O&&K(this);lb(this);bb(this);this.c.X=!1};
|
||||
function lb(a){a.g=0;a.v=0;a.A=0;a.w=0;a.B=0;a.C=0;a.D=0;a.ba=0;a.u=0;mb(a,0);a.aa=0}e.Sa=function(){var a=this.g+this.v+this.A+this.w+this.B+this.C+this.D|0;return a=a+this.ba+this.u+nb(this)|0};
|
||||
e.save=function(){var a=new L(this);M(a,0,[this.g,this.v,this.A,this.w,this.B,this.C,this.D,this.ba,this.u,nb(this)]);M(a,1,[this.W,this.aa,this.R,this.a.ga]);for(var b=this.o,c=0,d=[],f=0;f<b.f;f++){var g=b.b[f];if(g.T||g.eb){d[c++]=f;var k=c++;a:if(g=g.save()){for(var h=0,l=0,m=[];h<g.length;){for(var A=g[h],r=h+1;r<g.length&&g[r]===A;)r++;m[l++]=r-h;m[l++]=A;h=r}if(m.length<g.length){g=m;break a}}d[k]=g}}M(a,2,d);return a.data()};
|
||||
e.restore=function(a){var b=a[0];this.g=b[0];this.v=b[1];this.A=b[2];this.w=b[3];this.B=b[4];this.C=b[5];this.D=b[6];this.ba=b[7]&65535;this.u=b[8]&65535;mb(this,b[9]);b=a[1];this.W=b[0];this.aa=b[1];this.R=b[2];fb(this,b[3]);a:{b=this.o;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.m){for(var g=0,k=Array(b.m),h=0;h<f.length-1;)for(var l=f[h++],m=f[h++];l--;)k[g++]=m;f=k}g=b.b[d];if(!g||!g.restore(f)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
e.M=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "D":case "E":case "H":case "L":case "SP":case "PC":case "F":case "SF":case "ZF":case "AF":case "PF":case "CF":this.i[b]=c;this.wa++;d=!0;break;default:d=this.parent.M.call(this,a,b,c)}return d};function ob(a){return a.v<<8|a.A}function pb(a,b){a.v=b>>8&255;a.A=b&255}function qb(a){return a.w<<8|a.B}function rb(a,b){a.w=b>>8&255;a.B=b&255}function N(a){return a.C<<8|a.D}function O(a,b){a.C=b>>8&255;a.D=b&255}
|
||||
function nb(a){return a.Na&-214|(a.m&128?128:0)|(a.f&255?0:64)|((a.m^a.J)&16?16:0)|(Da[a.m&255]?4:0)|(a.f&256?1:0)}function mb(a,b){a.f=a.m=a.J=0;b&1&&(a.f|=256);b&4||(a.m|=1);b&16&&(a.J|=16);b&64||(a.f|=255);b&128&&(a.m^=192);a.Na=a.Na&-513|b&512|2}function P(a,b){a.J=b;b=(a.m=b+1)&255;a.f=a.f&-256|b;return b}function Q(a,b){a.J=b;b=(a.m=b-1)&255;a.f=a.f&-256|b;return b}function sb(a,b){return a.I[(b&a.S)>>>a.j].ua(b&a.K,b)}
|
||||
function tb(a,b){var c=b&a.K,d=(b&a.S)>>>a.j;if(c<a.K)return a.I[d].gb(c,b);c=a.I[d].ua(c,b);return c|=a.I[d+1&a.ja].ua(0,b+1)<<8}function R(a){var b=sb(a,a.u);a.u=a.u+1&65535;return b}function ub(a){var b=tb(a,a.u);a.u=a.u+2&65535;return b}function S(a,b,c,d){d=d||2;a.i[b]&&(void 0===c&&(a.c.X=!0,a.G("Value for "+b+" is invalid"),K(a)),c=!a.c.O||a.c.Qa?n(c,d):"--------".substr(0,d),a.i[b].textContent!=c&&(a.i[b].textContent=c))}
|
||||
e.$=function(a){this.wa&&(a||!this.c.O||this.c.Qa)&&(S(this,"A",this.g),S(this,"B",this.v),S(this,"C",this.A),S(this,"D",this.w),S(this,"E",this.B),S(this,"H",this.C),S(this,"L",this.D),S(this,"SP",this.ba,4),S(this,"PC",this.u,4),a=nb(this),S(this,"F",a,2),S(this,"SF",a&128,1),S(this,"ZF",a&64,1),S(this,"AF",a&16,1),S(this,"PF",a&4,1),S(this,"CF",a&1,1));if(a=this.i.speed)a.textContent=this.c.O&&this.a.Y?this.a.Y.toFixed(2)+"Mhz":"Stopped"};
|
||||
e.Xa=function(a){this.c.ya=!0;this.c.cb=!1;this.c.Ra=!1;this.P=this.b=a;this.s&&!a&&this.s.Ya();a||(this.W|=4);do{if(this.aa&&this.aa&4){this.W=this.b=0;break}this.W=0;this.$a[R(this)].call(this)}while(0<this.b);return this.c.ya?this.P-this.b:void 0===this.c.ya?0:-1};w(function(){for(var a=H(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new jb(d);G(d,c)}});function T(){this.b-=4}function U(){this.u=this.u-1&65535;K(this)}
|
||||
var kb=[T,function(){pb(this,ub(this));this.b-=10},function(){var a=ob(this);this.I[(a&this.S)>>>this.j].ia(a&this.K,this.g&255,a);this.b-=7},function(){pb(this,ob(this)+1);this.b-=5},function(){this.v=P(this,this.v);this.b-=5},function(){this.v=Q(this,this.v);this.b-=5},function(){this.v=R(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;this.f=this.f&255|a&256;this.b-=4},T,function(){var a;O(this,a=N(this)+ob(this));this.f=this.f&255|a>>8&256;this.b-=10},function(){this.g=sb(this,ob(this));
|
||||
this.b-=7},function(){pb(this,ob(this)-1);this.b-=5},function(){this.A=P(this,this.A);this.b-=5},function(){this.A=Q(this,this.A);this.b-=5},function(){this.A=R(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;this.f=this.f&255|a;this.b-=4},T,function(){rb(this,ub(this));this.b-=10},function(){var a=qb(this);this.I[(a&this.S)>>>this.j].ia(a&this.K,this.g&255,a);this.b-=7},function(){rb(this,qb(this)+1);this.b-=5},function(){this.w=P(this,this.w);this.b-=5},function(){this.w=Q(this,
|
||||
this.w);this.b-=5},function(){this.w=R(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|this.f>>8;this.f=this.f&255|a&256;this.b-=4},T,function(){var a;O(this,a=N(this)+qb(this));this.f=this.f&255|a>>8&256;this.b-=10},function(){this.g=sb(this,qb(this));this.b-=7},function(){rb(this,qb(this)-1);this.b-=5},function(){this.B=P(this,this.B);this.b-=5},function(){this.B=Q(this,this.B);this.b-=5},function(){this.B=R(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(this.f&256|this.g)>>1;
|
||||
this.f=this.f&255|a;this.b-=4},T,function(){O(this,ub(this));this.b-=10},function(){var a=ub(this),b=N(this),c=a&this.K,d=(a&this.S)>>>this.j;c<this.K?this.I[d].ib(c,b&65535,a):(this.I[d++].ia(c,b&255,a),this.I[d&this.ja].ia(0,b>>8&255,a+1));this.b-=16},function(){O(this,N(this)+1);this.b-=5},function(){this.C=P(this,this.C);this.b-=5},function(){this.C=Q(this,this.C);this.b-=5},function(){this.C=R(this);this.b-=7},function(){var a=this.g,b=!!(this.f&256),c=!!((this.m^this.J)&16);9<(a&15)||c?(a+=
|
||||
6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.f=this.m=this.g=a&255;this.f=b?this.f|256:this.f&-257;this.J=c?~this.m&16|this.J&-17:this.m&16|this.J&-17;this.b-=4},T,function(){var a;O(this,a=N(this)+N(this));this.f=this.f&255|a>>8&256;this.b-=10},function(){O(this,tb(this,ub(this)));this.b-=16},function(){O(this,N(this)-1);this.b-=5},function(){this.D=P(this,this.D);this.b-=5},function(){this.D=Q(this,this.D);this.b-=5},function(){this.D=R(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},
|
||||
U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U];
|
||||
function V(a){y.call(this,"ROM",a,V);this.b=null;this.l=a.addr;this.f=a.size;this.g=a.alias;this.h=a.file;this.m=ba(this.h);if(this.h){a=this.h;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=t()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;q(a,null,!0,function(a,b,g){vb(c,a,b,g)})}}B(V);V.prototype.ma=function(a,b,c,d){this.o=b;this.a=c;this.H=d;wb(this)};V.prototype.V=function(){this.j&&(this.H&&this.H.a(this.id,this.l,this.f,this.j),delete this.j);return!0};V.prototype.U=function(){return!0};
|
||||
function vb(a,b,c,d){if(d)a.G("Unable to load system ROM (error "+d+": "+b+")");else{za(a.Ma,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes,k=f.data;if(g)a.b=g;else if(k)for(a.b=Array(4*k.length),d=c=0;c<k.length;c++)a.b[d++]=k[c]&255,a.b[d++]=k[c]>>8&255,a.b[d++]=k[c]>>16&255,a.b[d++]=k[c]>>24&255;else a.b=f;a.j=f.symbols;if(!a.b.length){u("Empty ROM: "+b);return}if(1==a.b.length){u(a.b[0]);return}}catch(h){a.G("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);wb(a)}}
|
||||
function wb(a){if(!Ba(a))if(!a.h)I(a);else if(a.b&&a.o){if(a.b.length!=a.f){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.f))+")";a.c.X=!0;a.G(b)}else{b=a.l;if(Ja(a.o,b,a.f,Qa)){for(var c=0;c<a.b.length;c++){var d=a.o,f=b+c;d.b[(f&d.h)>>>d.j].Za(f&d.s,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.g?b.push(a.g):null!=a.g&&a.g.length&&(b=a.g);for(c=0;c<b.length;c++){for(var g=a,d=b[c],f=g.o,k=g.f,h=[],l=g.l>>>f.j;0<k&&l<f.b.length;)h.push(f.b[l++]),k-=
|
||||
f.l;f=g.o;g=g.f;k=0;for(d>>>=f.j;0<g&&d<f.b.length;){l=h[k++];if(!l)break;f.b[d++]=l;g-=f.l}}delete a.b}}I(a)}}w(function(){for(var a=H(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new V(d);G(d,c)}});function xb(a){y.call(this,"RAM",a,xb);this.g=a.addr;this.f=a.size;this.b=!1}B(xb);e=xb.prototype;e.ma=function(a,b,c,d){this.o=b;this.a=c;this.H=d;I(this)};e.V=function(a,b){b||this.reset();return!0};e.U=function(a){return a?this.save():!0};
|
||||
e.reset=function(){!this.b&&this.f&&Ja(this.o,this.g,this.f,1)&&(this.b=!0,this.status(Math.floor(this.f/1024)+"Kb allocated"));this.b||u("No RAM allocated")};e.save=function(){return null};e.restore=function(){return!0};w(function(){for(var a=H(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new xb(d);G(d,c)}});function yb(a){y.call(this,"Keyboard",a,yb);I(this)}B(yb);w(function(){for(var a=H(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=F(c),d=new yb(d);G(d,c)}});
|
||||
function zb(a){y.call(this,"Video",a,zb);I(this)}B(zb);
|
||||
w(function(){for(var a=H(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=F(c),f=document.createElement("canvas");if(void 0===f||!f.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}f.setAttribute("class","pcjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.style.backgroundColor=d.screenColor;f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,
|
||||
b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight),c.onresize());var g=+(d.aspect||ta.aspect);g&&.3<=g&&3.33>=g&&(pa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,f,g)),window.onresize());c.appendChild(f);g=document.createElement("textarea");ma("iOS")&&(g.setAttribute("autocapitalize","off"),g.setAttribute("autocorrect","off"));c.appendChild(g);f.getContext("2d");d=new wb(d);G(d,c)}});
|
||||
function Q(a,b,c){this.id=a.id;this.key=xb(a,b,c);this.D=a.D;yb(this,a.Wa)}function xb(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
Q.prototype={constructor:Q,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){yb(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}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(f){}b.splice(c,1);c=0}}};
|
||||
function yb(a,b){a[a.id]={};b&&R(a,"parms",b);a.a=!1}function zb(a){var b=!0;if(ja()){var c=JSON.stringify(a[a.id]);la(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Ab(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){u(c.message||c),b=!1}return b}function W(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:ja()&&(b=ka(a.key))?(a[a.id]=b,a.a=!0):!1}function X(a,b){return a[a.id][b]||null}function R(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Bb(a,b,c){y.call(this,"Computer",a,Bb);this.c.B=!1;Cb(this,b);this.A=Ya(this,"autoPower",a);this.g=0;this.I=a.busWidth||a.buswidth;this.b=Y;this.u=null;this.l=this.H=!1;this.J=Ya(this,"url")||"";(Math.random()+.1).toString(36);this.f=Db(this);if(this.a=E("CPU",this.id)){this.D=E("Debugger",this.id);this.K=[];for(b=null;b=Ea(this,"Video",b);)this.K.push(b);this.o=new K({id:this.Ma+".bus",buswidth:this.I},this.a,this.D);var d,f=D(this.id);if((this.h=E("Panel",this.id))&&this.h.Ea)for(b=0;b<
|
||||
f.length;b++)d=f[b],d.C=this.h.C,d.L=this.h.L,d.Ea=this.h.Ea;for(b=0;b<f.length;b++)d=f[b],d.ka&&d.ka(this,this.o,this.a,this.D);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.s=d:this.b=parseInt(d,10));var g;if(a=Ya(this,"state")||(g=!0,a.state))b=this.w=a,g||(this.l=!0,this.b=Y),this.b&&(this.v=new Q(this,Z),W(this.v)?b=null:delete this.v);!b&&this.b&&(b=Eb(this))&&(this.l=!0);if(b){var k=this;q(b,null,!0,function(a,b,c){c?(k.s=null,k.l=!1,k.C("Unable to load machine state from server (error "+
|
||||
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(k.u=b,k.H=!0);I(k)})}else I(this);this.i.power||(this.A=!0);!c&&this.A&&Fb(this,this.ra)}else u("Unable to find CPU component")}B(Bb);var Z="1.21.7",Y=0;function Cb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.m=b}
|
||||
function Ya(a,b,c){var d=b.toLowerCase(),d=ta[b]||ta[d];void 0===d&&a.m&&(d=a.m[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Fb(a,b,c){for(var d=D(a.id),f=0;f<=d.length;f++){var g=f<d.length?d[f]:a;if(!Ba(g)){Ba(g,function(){Fb(a,b,c)});return}}b.call(a,c)}
|
||||
function Gb(a,b){var c=new Q(a,Z,"validate");if(W(c)&&Ab(c)){var d=X(c,"timestamp"),f=b?X(b,"timestamp"):"unknown";d!=f&&(a.C("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}e=Bb.prototype;
|
||||
e.ra=function(a){void 0===a&&(a=this.b||(this.u?1:Y));if(!this.g){this.g++;var b=!1,c=!1;this.G=!1;var d=this.v||new Q(this,Z);if(-1==a)b=!0;else if(a>Y){if(W(d,this.u)){this.j=new Q(this,Z,"failsafe");W(this.j)&&(Hb(this,d),a=2,yb(this.j));R(this.j,"timestamp",ga());zb(this.j);var f=this.b&&!this.l;if(1==a||ha("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Ab(d)){var g=X(d,"code"),k=X(d,"data");g&&("ok"==g?W(d,k):("error"==g&&"no machine state"!=k?
|
||||
(this.C("Error: "+k),"unable to verify user"==k&&(la("user",""),this.f=null)):this.L(g+": "+k),yb(d),W(d)?(c=Ab(d),f=!0):c=!1))}f&&Gb(this,c?d:null)}else 2==a&&d.clear()}else Gb(this);delete this.u;delete this.v}f=D(this.id);for(g=0;g<f.length;g++)k=f[g],k!==this&&k!=this.a&&(c=Ib(this,k,d,b,c));b=[d,a,c];-1!=a?Fb(this,this.Oa,b):this.Oa(b)}};
|
||||
function Ib(a,b,c,d,f){if(!b.c.B){b.c.B=!0;if(b.T){var g=null;f&&((g=X(c,b.id))||(g=X(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof g&&(g=null);!b.T(g,d)&&g&&(u("Unable to restore state for "+b.type),a.w&&!a.H?(c.clear(),a.b=Y,window&&window.location.reload()):a.G=!0,b.T(null),f=!1)}if(!d&&b.Ka)for(a=b.Ka.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
e.Oa=function(a){var b=a[0],c=0>a[1];a=a[2];this.c.B=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.F||(this.L("PC8080 v"+Z+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.F=!0);this.a&&(Ib(this,this.a,b,c,a),bb(this.a));this.G&&(Hb(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.g=0};
|
||||
function Hb(a,b){if(ha("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.J,d=a.f||"",f=b.toString(),g={app:"PC8080"};g.ver=Z;g.url=c;g.user=d;g.type="bug";g.data=f;q("http://www.pcjs.org/api/v1/report",g,!0)}}
|
||||
function Jb(a,b,c){var d,f="none";if(a.g)return null;a.g--;var g=new Q(a,Z),k=new Q(a,Z,"validate"),h=ga();R(k,"timestamp",h);R(g,"timestamp",h);R(g,"version","1.21.7");R(g,"url",window?window.location.href:null);R(g,"browser",window?window.navigator.userAgent:"");a.a&&a.a.S&&(c&&N(a.a),d=a.a.S(b,c),"object"===typeof d&&R(g,a.a.id,d),c&&(a.a.c.B=!1,!1===d&&(f=null)));for(var h=D(a.id),l=0;l<h.length;l++){var m=h[l];m.c.B&&(m.S&&(d=m.S(b,c),"object"===typeof d&&R(g,m.id,d)),c&&(m.c.B=!1,!1===d&&(f=
|
||||
null)))}f&&(c?(h=d=!1,b?(a.f&&Kb(a,a.f,g.toString()),zb(k)&&zb(g)||(f=null,d=h=!0)):a.b&&(d=!0,h=3==a.b),d&&g.clear(h)):f=g.toString());c&&(a.c.B=!1,b=a.i.power)&&(b.textContent="Power");a.g=0;return f}e.reset=function(){this.o&&this.o.reset&&this.o.reset();for(var a=D(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.o&&c.reset&&c.reset()}};e.start=function(a,b){for(var c=D(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight),c.onresize());var g=+(d.aspect||ta.aspect);g&&.3<=g&&3.33>=g&&(pa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,f,g)),window.onresize());c.appendChild(f);g=document.createElement("textarea");ma("iOS")&&(g.setAttribute("autocapitalize","off"),g.setAttribute("autocorrect","off"));c.appendChild(g);f.getContext("2d");d=new zb(d);G(d,c)}});
|
||||
function L(a,b,c){this.id=a.id;this.key=Ab(a,b,c);this.H=a.H;Bb(this,a.Wa)}function Ab(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
L.prototype={constructor:L,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Bb(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}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(f){}b.splice(c,1);c=0}}};
|
||||
function Bb(a,b){a[a.id]={};b&&M(a,"parms",b);a.a=!1}function Cb(a){var b=!0;if(ja()){var c=JSON.stringify(a[a.id]);la(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Db(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){u(c.message||c),b=!1}return b}function W(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:ja()&&(b=ka(a.key))?(a[a.id]=b,a.a=!0):!1}function X(a,b){return a[a.id][b]||null}function M(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Eb(a,b,c){y.call(this,"Computer",a,Eb);this.c.F=!1;Fb(this,b);this.A=ab(this,"autoPower",a);this.g=0;this.I=a.busWidth||a.buswidth;this.b=Y;this.u=null;this.l=this.D=!1;this.J=ab(this,"url")||"";(Math.random()+.1).toString(36);this.f=Gb(this);if(this.a=E("CPU",this.id)){this.H=E("Debugger",this.id);this.K=[];for(b=null;b=Fa(this,"Video",b);)this.K.push(b);this.o=new Ha({id:this.Ma+".bus",buswidth:this.I},this.a,this.H);var d,f=D(this.id);if((this.h=E("Panel",this.id))&&this.h.Ea)for(b=0;b<
|
||||
f.length;b++)d=f[b],d.G=this.h.G,d.L=this.h.L,d.Ea=this.h.Ea;for(b=0;b<f.length;b++)d=f[b],d.ma&&d.ma(this,this.o,this.a,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.s=d:this.b=parseInt(d,10));var g;if(a=ab(this,"state")||(g=!0,a.state))b=this.w=a,g||(this.l=!0,this.b=Y),this.b&&(this.v=new L(this,Z),W(this.v)?b=null:delete this.v);!b&&this.b&&(b=Hb(this))&&(this.l=!0);if(b){var k=this;q(b,null,!0,function(a,b,c){c?(k.s=null,k.l=!1,k.G("Unable to load machine state from server (error "+
|
||||
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(k.u=b,k.D=!0);I(k)})}else I(this);this.i.power||(this.A=!0);!c&&this.A&&Ib(this,this.ta)}else u("Unable to find CPU component")}B(Eb);var Z="1.21.7",Y=0;function Fb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.m=b}
|
||||
function ab(a,b,c){var d=b.toLowerCase(),d=ta[b]||ta[d];void 0===d&&a.m&&(d=a.m[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Ib(a,b,c){for(var d=D(a.id),f=0;f<=d.length;f++){var g=f<d.length?d[f]:a;if(!Ba(g)){Ba(g,function(){Ib(a,b,c)});return}}b.call(a,c)}
|
||||
function Jb(a,b){var c=new L(a,Z,"validate");if(W(c)&&Db(c)){var d=X(c,"timestamp"),f=b?X(b,"timestamp"):"unknown";d!=f&&(a.G("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}e=Eb.prototype;
|
||||
e.ta=function(a){void 0===a&&(a=this.b||(this.u?1:Y));if(!this.g){this.g++;var b=!1,c=!1;this.C=!1;var d=this.v||new L(this,Z);if(-1==a)b=!0;else if(a>Y){if(W(d,this.u)){this.j=new L(this,Z,"failsafe");W(this.j)&&(Kb(this,d),a=2,Bb(this.j));M(this.j,"timestamp",ga());Cb(this.j);var f=this.b&&!this.l;if(1==a||ha("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Db(d)){var g=X(d,"code"),k=X(d,"data");g&&("ok"==g?W(d,k):("error"==g&&"no machine state"!=k?
|
||||
(this.G("Error: "+k),"unable to verify user"==k&&(la("user",""),this.f=null)):this.L(g+": "+k),Bb(d),W(d)?(c=Db(d),f=!0):c=!1))}f&&Jb(this,c?d:null)}else 2==a&&d.clear()}else Jb(this);delete this.u;delete this.v}f=D(this.id);for(g=0;g<f.length;g++)k=f[g],k!==this&&k!=this.a&&(c=Lb(this,k,d,b,c));b=[d,a,c];-1!=a?Ib(this,this.Oa,b):this.Oa(b)}};
|
||||
function Lb(a,b,c,d,f){if(!b.c.F){b.c.F=!0;if(b.V){var g=null;f&&((g=X(c,b.id))||(g=X(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof g&&(g=null);!b.V(g,d)&&g&&(u("Unable to restore state for "+b.type),a.w&&!a.D?(c.clear(),a.b=Y,window&&window.location.reload()):a.C=!0,b.V(null),f=!1)}if(!d&&b.Ka)for(a=b.Ka.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
e.Oa=function(a){var b=a[0],c=0>a[1];a=a[2];this.c.F=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.B||(this.L("PC8080 v"+Z+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.B=!0);this.a&&(Lb(this,this.a,b,c,a),eb(this.a));this.C&&(Kb(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.g=0};
|
||||
function Kb(a,b){if(ha("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.J,d=a.f||"",f=b.toString(),g={app:"PC8080"};g.ver=Z;g.url=c;g.user=d;g.type="bug";g.data=f;q("http://www.pcjs.org/api/v1/report",g,!0)}}
|
||||
function Mb(a,b,c){var d,f="none";if(a.g)return null;a.g--;var g=new L(a,Z),k=new L(a,Z,"validate"),h=ga();M(k,"timestamp",h);M(g,"timestamp",h);M(g,"version","1.21.7");M(g,"url",window?window.location.href:null);M(g,"browser",window?window.navigator.userAgent:"");a.a&&a.a.U&&(c&&K(a.a),d=a.a.U(b,c),"object"===typeof d&&M(g,a.a.id,d),c&&(a.a.c.F=!1,!1===d&&(f=null)));for(var h=D(a.id),l=0;l<h.length;l++){var m=h[l];m.c.F&&(m.U&&(d=m.U(b,c),"object"===typeof d&&M(g,m.id,d)),c&&(m.c.F=!1,!1===d&&(f=
|
||||
null)))}f&&(c?(h=d=!1,b?(a.f&&Nb(a,a.f,g.toString()),Cb(k)&&Cb(g)||(f=null,d=h=!0)):a.b&&(d=!0,h=3==a.b),d&&g.clear(h)):f=g.toString());c&&(a.c.F=!1,b=a.i.power)&&(b.textContent="Power");a.g=0;return f}e.reset=function(){this.o&&this.o.reset&&this.o.reset();for(var a=D(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.o&&c.reset&&c.reset()}};e.start=function(a,b){for(var c=D(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
e.stop=function(a,b){for(var c=D(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
e.M=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.g||(d.c.B?Jb(d,!1,!0):Fb(d,d.ra))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.c.B&&!d.g)if(d.b&&!d.s){var a=ha("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Jb(d,a,!0);!a&&d.w?window&&window.location.reload():d.ra(Y)}else d.reset(),d.a&&bb(d.a)},!0;case "save":if(da(t(),"pcjs.org")){c.parentNode.removeChild(c);break}this.i[b]=
|
||||
c;c.onclick=function(){var a=Db(d,!0);if(a){var b=!!(d.b&&!d.s||d.w),c=Jb(d,b);b?Kb(d,a,c):d.C("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Db(a,b){var c=a.f;c||(c=ka("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Lb(a,c))||a.C("The user ID is invalid."))):b&&a.C("Browser local storage is not available"));return c}
|
||||
function Lb(a,b){a.f=null;var c=q(t()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(la("user",c.data),a.f=c.data)}catch(f){u(f.message+" ("+d+")")}return a.f}function Eb(a){var b=null;a.f&&(b=t()+"/api/v1/user?req=load&user="+a.f+"&state="+xb(a,Z));return b}
|
||||
function Kb(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=xb(a,Z);d.data=c;b=q(t()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.C("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.C(c),la("user",""),a.f=null)}}
|
||||
function Ea(a,b,c){a=D(a.id);for(var d=0;d<a.length;d++){var f=a[d];if(c)c==f&&(c=null);else if(f.type==b)return f}return null}e.$=function(a){this.a&&this.a.$(a);this.h&&this.h.$(a)};w(function(){for(var a=H(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=F(c),c=H(c,"pc8080","computer"),f=0;f<c.length;f++){var g=c[f],k=F(g),k=new Bb(k,d,!0);G(k,g);k.A&&Fb(k,k.ra)}});
|
||||
v.show.push(function(){for(var a=H(document,"pc8080","computer"),b=0;b<a.length;b++){var c=F(a[b]);(c=E("Computer",c.id))&&c.F&&!c.c.B&&c.ra(-1)}});v.exit.push(function(){for(var a=H(document,"pc8080","computer"),b=0;b<a.length;b++){var c=F(a[b]);(c=E("Computer",c.id))&&c.c.B&&Jb(c,!(!c.b||c.s),!0)}});var Mb=0;function Nb(a,b,c,d,f,g){f("Loading "+a+"...");q(a,null,!0,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):Ob(h,a,b,c,d,f,g)})}
|
||||
function Ob(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){za(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}f||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
h=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){h=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?Pb(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Pb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");q(f,null,!0,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,A=/( [a-z]+=)(['"])(.*?)\2/g;m=A.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);Pb(a,b,c)}})}else c(a,null)}
|
||||
function Qb(a,b,c,d){function f(a){if(void 0===h){var b=k&&H(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=fa(a))}function g(a){f("Error: "+a);l&&(--Mb||x(!0));l=!1}var k,h,l=!0;Mb++;C[a]={};try{if(k=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var A=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));A.appendChild(r)}c||(c=
|
||||
"/versions/pc8080/1.21.7/components.xsl");m=function(d,h){h?Nb(c,null,null,!1,f,function(d,m){if(m)if(za(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(m);l?(k.outerHTML=l,--Mb||x(!0)):g("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(m),(l=l.transformToFragment(h,document))?k.parentNode?(k.parentNode.replaceChild(l,k),--Mb||x(!0)):g("invalid machine element: "+
|
||||
a):g("transformToFragment failed")):g("unable to transform XML: unsupported browser");else g(d)}):g(d)};"<"!=b.charAt(0)?Nb(b,a,d,!0,f,m):Ob(b,null,a,d,!1,f,m)}else g("missing machine element: "+a)}catch(va){g(va.message)}return l}window.embedPC8080=function(a,b,c,d){x(!1);return Qb(a,b,c,d)};window.enableEvents=x;window.sendEvent=ra;
|
||||
function Rb(a,b,c,d){if(!c&&b){d.push(b);a=C[d[0]];b=null;for(var f in a)if(da(f,"components.xsl")){b=f.replace(".xsl",".css");break}b?q(b,null,!0,function(a,b){Sb(b,d)}):Sb(null,d)}else u("Error ("+c+") requesting "+a)}
|
||||
function Sb(a,b){var c,d,f,g=b[0],k=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=C[g],l={},m;for(m in h){var A=h[m],r=ca(m);if("xml"==r){for(r=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=r.exec(h[m]);){var va=d[2];va&&(h[va]||(A=A.replace(d[0],"")))}d=m=ba(m)}else"xsl"==r&&(f=m=ba(m));l[m]=A}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&f?(m=JSON.stringify(l),k+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
e.M=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.g||(d.c.F?Mb(d,!1,!0):Ib(d,d.ta))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.c.F&&!d.g)if(d.b&&!d.s){var a=ha("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Mb(d,a,!0);!a&&d.w?window&&window.location.reload():d.ta(Y)}else d.reset(),d.a&&eb(d.a)},!0;case "save":if(da(t(),"pcjs.org")){c.parentNode.removeChild(c);break}this.i[b]=
|
||||
c;c.onclick=function(){var a=Gb(d,!0);if(a){var b=!!(d.b&&!d.s||d.w),c=Mb(d,b);b?Nb(d,a,c):d.G("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function Gb(a,b){var c=a.f;c||(c=ka("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Ob(a,c))||a.G("The user ID is invalid."))):b&&a.G("Browser local storage is not available"));return c}
|
||||
function Ob(a,b){a.f=null;var c=q(t()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(la("user",c.data),a.f=c.data)}catch(f){u(f.message+" ("+d+")")}return a.f}function Hb(a){var b=null;a.f&&(b=t()+"/api/v1/user?req=load&user="+a.f+"&state="+Ab(a,Z));return b}
|
||||
function Nb(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ab(a,Z);d.data=c;b=q(t()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.G("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.G(c),la("user",""),a.f=null)}}
|
||||
function Fa(a,b,c){a=D(a.id);for(var d=0;d<a.length;d++){var f=a[d];if(c)c==f&&(c=null);else if(f.type==b)return f}return null}e.$=function(a){this.a&&this.a.$(a);this.h&&this.h.$(a)};w(function(){for(var a=H(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=F(c),c=H(c,"pc8080","computer"),f=0;f<c.length;f++){var g=c[f],k=F(g),k=new Eb(k,d,!0);G(k,g);k.A&&Ib(k,k.ta)}});
|
||||
v.show.push(function(){for(var a=H(document,"pc8080","computer"),b=0;b<a.length;b++){var c=F(a[b]);(c=E("Computer",c.id))&&c.B&&!c.c.F&&c.ta(-1)}});v.exit.push(function(){for(var a=H(document,"pc8080","computer"),b=0;b<a.length;b++){var c=F(a[b]);(c=E("Computer",c.id))&&c.c.F&&Mb(c,!(!c.b||c.s),!0)}});var Pb=0;function Qb(a,b,c,d,f,g){f("Loading "+a+"...");q(a,null,!0,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):Rb(h,a,b,c,d,f,g)})}
|
||||
function Rb(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){za(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}f||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
|
||||
h=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){h=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?Sb(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Sb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");q(f,null,!0,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,A=/( [a-z]+=)(['"])(.*?)\2/g;m=A.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],k);Sb(a,b,c)}})}else c(a,null)}
|
||||
function Tb(a,b,c,d){function f(a){if(void 0===h){var b=k&&H(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=fa(a))}function g(a){f("Error: "+a);l&&(--Pb||x(!0));l=!1}var k,h,l=!0;Pb++;C[a]={};try{if(k=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var A=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));A.appendChild(r)}c||(c=
|
||||
"/versions/pc8080/1.21.7/components.xsl");m=function(d,h){h?Qb(c,null,null,!1,f,function(d,m){if(m)if(za(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(m);l?(k.outerHTML=l,--Pb||x(!0)):g("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(m),(l=l.transformToFragment(h,document))?k.parentNode?(k.parentNode.replaceChild(l,k),--Pb||x(!0)):g("invalid machine element: "+
|
||||
a):g("transformToFragment failed")):g("unable to transform XML: unsupported browser");else g(d)}):g(d)};"<"!=b.charAt(0)?Qb(b,a,d,!0,f,m):Rb(b,null,a,d,!1,f,m)}else g("missing machine element: "+a)}catch(ya){g(ya.message)}return l}window.embedPC8080=function(a,b,c,d){x(!1);return Tb(a,b,c,d)};window.enableEvents=x;window.sendEvent=ra;
|
||||
function Ub(a,b,c,d){if(!c&&b){d.push(b);a=C[d[0]];b=null;for(var f in a)if(da(f,"components.xsl")){b=f.replace(".xsl",".css");break}b?q(b,null,!0,function(a,b){Vb(b,d)}):Vb(null,d)}else u("Error ("+c+") requesting "+a)}
|
||||
function Vb(a,b){var c,d,f,g=b[0],k=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=C[g],l={},m;for(m in h){var A=h[m],r=ca(m);if("xml"==r){for(r=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=r.exec(h[m]);){var ya=d[2];ya&&(h[ya]||(A=A.replace(d[0],"")))}d=m=ba(m)}else"xsl"==r&&(f=m=ba(m));l[m]=A}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&f?(m=JSON.stringify(l),k+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),m=k,h=null,l="data:application/javascript,",l=ma("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),m&&(h=document.createElement("a"),"string"!=typeof h.download&&(h=null)),h?(h.href=l,h.download=m,document.body.appendChild(h),h.click(),document.body.removeChild(h),c="Check your Downloads folder for "+m+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(m?" ("+m+")":"")+"."),c+=', copy it to your web server as "'+k+'", and then add the following to your web page:\n\n',
|
||||
c+='<div id="'+g+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+k+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+g+'","'+d+'","'+f+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",u(c)):u("Missing XML/XSL resources")}
|
||||
window.savePC=function(a,b,c){var d=E("Computer",a),f=E("Debugger",a);if(d){var g=Jb(d,!0),k=d.m?JSON.stringify(d.m):null;b||(b="/versions/pcjs/1.21.7/pc"+(f?"-dbg":"")+".js");if(c&&c({state:g,Wa:k}))return!0;q(b,null,!0,function(c,d,f){Rb(c,d,f,[a,ba(b,!0),k,g])});return!0}u("Unable to identify machine '"+a+"'");return!1};})();
|
||||
window.savePC=function(a,b,c){var d=E("Computer",a),f=E("Debugger",a);if(d){var g=Mb(d,!0),k=d.m?JSON.stringify(d.m):null;b||(b="/versions/pcjs/1.21.7/pc"+(f?"-dbg":"")+".js");if(c&&c({state:g,Wa:k}))return!0;q(b,null,!0,function(c,d,f){Ub(c,d,f,[a,ba(b,!0),k,g])});return!0}u("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue