From 978d59efbf39fe4a47f24cd1a92d556f7f90ce09 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Fri, 22 Apr 2016 07:06:05 -0700 Subject: [PATCH] More 8080 opcodes --- docs/pcjs/examples/pc-dbg.js | 90 ++++---- docs/pcjs/examples/pc.js | 6 +- modules/pc8080/lib/cpuops.js | 181 +++++++++++++++- modules/pc8080/lib/cpusim.js | 30 +++ modules/pcjs/lib/x86ops.js | 8 + versions/pc8080/1.21.7/pc8080-dbg.js | 305 ++++++++++++++------------- versions/pc8080/1.21.7/pc8080.js | 161 +++++++------- 7 files changed, 498 insertions(+), 283 deletions(-) diff --git a/docs/pcjs/examples/pc-dbg.js b/docs/pcjs/examples/pc-dbg.js index b162d91d6..3f96d1922 100644 --- a/docs/pcjs/examples/pc-dbg.js +++ b/docs/pcjs/examples/pc-dbg.js @@ -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>8&255;9<(c&15)||rf(this)?(c+=6,80286<=this.ia&&255>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;cthis.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<>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<>9-d)&255,e=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>>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>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<>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<>17-d)&65535,e=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>>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>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<>>32-d,Af(this,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<>>32-d>>>1,Af(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<>> -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;127b?(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>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=32767c):(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>8&255;9<(c&15)||rf(this)?(c+=6,80286<=this.ia&&255>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;cthis.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<>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<>9-d)&255,e=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>>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>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<>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<>17-d)&65535,e=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>>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>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<>>32-d,Af(this,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<>>32-d>>>1,Af(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<>>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;127b?(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>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=32767c):(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= diff --git a/docs/pcjs/examples/pc.js b/docs/pcjs/examples/pc.js index 5c790ffe6..bb8d22e4d 100644 --- a/docs/pcjs/examples/pc.js +++ b/docs/pcjs/examples/pc.js @@ -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>8&255;9<(c&15)||le(this)?(c+=6,80286<=this.ca&&255>8&255;9<(c&15)||le(this)?(c+=6,80286<=this.ca&&255>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); diff --git a/modules/pc8080/lib/cpuops.js b/modules/pc8080/lib/cpuops.js index 951a97bb9..15f89928b 100644 --- a/modules/pc8080/lib/cpuops.js +++ b/modules/pc8080/lib/cpuops.js @@ -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, diff --git a/modules/pc8080/lib/cpusim.js b/modules/pc8080/lib/cpusim.js index afc620e51..335874b16 100644 --- a/modules/pc8080/lib/cpusim.js +++ b/modules/pc8080/lib/cpusim.js @@ -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() * diff --git a/modules/pcjs/lib/x86ops.js b/modules/pcjs/lib/x86ops.js index 87c8c8861..eb05fd458 100644 --- a/modules/pcjs/lib/x86ops.js +++ b/modules/pcjs/lib/x86ops.js @@ -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; diff --git a/versions/pc8080/1.21.7/pc8080-dbg.js b/versions/pc8080/1.21.7/pc8080-dbg.js index 805eab7f1..a2f648ffb 100644 --- a/versions/pc8080/1.21.7/pc8080-dbg.js +++ b/versions/pc8080/1.21.7/pc8080-dbg.js @@ -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=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":">",'"':""","'":"'"};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>1,h;h=c(b,a[k]);0a?"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>1,h;h=c(b,a[k]);0a?"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=this.K?12:24>=this.K?14:15;this.Z=1<>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>>a.P;0a.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>2),b=0;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<>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<>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=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;cc&&(c=60);2>c&&(c=2);var d=1;b&&1a.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>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>>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>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>>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>>e.P;0>>=e.P;0=this.K?12:24>=this.K?14:15;this.aa=1<>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>>a.P;0a.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>2),b=0;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<>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<>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=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;cc&&(c=60);2>c&&(c=2);var d=1;b&&1a.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>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>>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>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>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>>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>>e.P;0>>=e.P;0Missing <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<>>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;cc&&(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>>d.P],!1)}a.R=["br"];if(void 0!==a.F)for(b=1;b>>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>>d.P],b==a.F));h.oa||qd(a);break}}return f}function Sd(a,b){for(var c=1;c>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=":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<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":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<>>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;cc&&(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>>d.P],!1)}a.S=["br"];if(void 0!==a.F)for(b=1;b>>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>>d.P],b==a.F));h.oa||ud(a);break}}return f}function Wd(a,b){for(var c=1;c>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=":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<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":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>=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 0b[0]?1:a[0]>>0;for(b=0;b>>0,h=f.Xb;if(e>=k&&eh[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)&&0m||"z"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=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>4||1,Dc="dd"== -Da?4:"dw"==Da?2:1,ie=0;ieGc;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;QbQc;){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>>=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;bQe){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;fa[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 \nLicense: GPL version 3 or later "),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=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=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 0b[0]?1:a[0]>>0;for(b=0;b>>0,h=f.Yb;if(e>=k&&eh[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)&&0m||"z"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=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>4||1,Hc="dd"== +Ja?4:"dw"==Ja?2:1,me=0;meKc;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;TbUc;){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>>=$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;bUe){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;fa[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 \nLicense: GPL version 3 or later "),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;lh.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1pc8080$2")); -h=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\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/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]*]*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");0h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1pc8080$2")); +h=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\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/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]*]*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+='
\n',c+="...\n",c+='