Starting on v1.21.7 (with live register display fixes)
This commit is contained in:
parent
fd80ab3812
commit
84d3f0da00
206 changed files with 286 additions and 260 deletions
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
<xsl:variable name="MACHINECLASS">pc</xsl:variable>
|
||||
<xsl:variable name="APPCLASS">pcjs</xsl:variable>
|
||||
<xsl:variable name="APPVERSION">1.21.6</xsl:variable>
|
||||
<xsl:variable name="APPVERSION">1.21.7</xsl:variable>
|
||||
<xsl:variable name="SITEHOST">www.pcjs.org</xsl:variable>
|
||||
|
||||
<xsl:template name="componentStyles">
|
||||
|
|
|
|||
|
|
@ -75,10 +75,10 @@ m.Qb=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.qa
|
|||
a=!0;break;case "speed":this.qa[b]=c;a=!0;break;case "setSpeed":this.qa[b]=c,c.onclick=function(){Xc(d,d.Y.Yd<<1,!0)},c.textContent=this.Y.Fe.toFixed(2)+"Mhz",a=!0}return a};function Yc(a,b){if(a.la.Ib){var c=a.A-b;a.A-=c;a.fb-=c}}function Zc(a,b,c){a.uc+=b;c&&(a.fb=a.A=0)}
|
||||
function $c(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.Y.Yd&&a.Y.pe&&(d=a.Y.pe/a.Y.ug);a.Y.Xi=Math.round(1E3/30);a.Y.km=Math.floor(a.Y.Jd/c*d);a.Y.rh=Math.floor(a.Y.Jd/30*d);a.Y.Zi=Math.floor(a.Y.Jd/60*d);a.Y.Yi=Math.floor(a.Y.Jd/2*d);b||(a.Y.mf=a.Y.rh,a.Y.Lf=a.Y.Zi,a.Y.Kf=a.Y.Yi);a.Y.sh=0}function Wc(a,b){var c=a.uc+a.Ub+a.fb-a.A;b&&1<a.Y.Yd&&a.Y.pe>a.Y.ug&&(c=Math.round(c/a.Y.Yd));return c}function Oc(a){a.Y.pe=0;a.uc=a.Ub=a.fb=a.A=0;Pc(a);Xc(a,1)}
|
||||
function Xc(a,b,c){var d=!1;if(void 0!==b){.8>a.Y.pe/a.Y.Fe?b=1:d=!0;a.Y.Yd=b;b=a.Y.ug*a.Y.Yd;if(a.Y.Fe!=b){a.Y.Fe=b;b=a.Y.Fe.toFixed(2)+"Mhz";var e=a.qa.setSpeed;e&&(e.textContent=b);a.O("target speed: "+b)}c&&a.V&&a.V.yd()}Zc(a,a.Ub);a.Ub=0;a.Y.hf=pa();a.Y.Ge=0;$c(a);return d}
|
||||
m.Ke=function(a){if(pb(this,!0)){if(!this.la.Ib){Xc(this);this.V&&this.V.start(this.Y.hf,Wc(this));this.la.Ib=!0;this.la.eh=!0;this.N&&ad(this.N);var b=this.qa.run;b&&(b.textContent="Halt");this.V&&(this.V.qd(),a&&this.V.yd(!0))}this.Y.sh>=this.Y.Jd&&$c(this,!0);this.Y.Mf=0;this.Y.vg=pa();this.Y.Ge&&(a=this.Y.vg-this.Y.Ge,a>this.Y.Xi&&(this.Y.hf+=a,this.Y.hf>this.Y.vg&&(this.Y.hf=this.Y.vg)));try{do{var c=this.la.Ye?1:this.Y.km;if(this.N){bd(this.N);var d=this.N;a=c;var e=d.W[0];if(e.Be){var f=(Wc(d.F,
|
||||
d.ka)-e.xd)/d.gb|0,g=cd(d,0)-f;6==e.mode&&(g-=f);var h=g*d.gb|0;6==e.mode&&(h>>=1);a>h&&(a=h)}var c=a,k=this.N;a=c;if(k.A&&k.A[11]&64){var l=k.ua-Wc(k.F,k.ka);0<l&&a>l&&(a=l)}c=a}try{this.vf(c)}catch(q){if("number"!=typeof q)throw q;}var n=this.fb-this.A;this.Ub+=n;this.Y.Mf+=n;Zc(this,0,!0);Vc(this,n);this.Y.Lf-=n;0>=this.Y.Lf&&(this.Y.Lf+=this.Y.Zi,this.V&&dd(this.V));this.Y.Kf-=n;0>=this.Y.Kf&&(this.Y.Kf+=this.Y.Yi,this.V&&this.V.qd());this.Y.mf-=n;if(0>=this.Y.mf){this.Y.mf+=this.Y.rh;break}}while(this.la.Ib)}catch(q){this.Wb();
|
||||
Qc(this);this.V&&this.V.stop(pa(),Wc(this));pb(this,!1);ub(this,q.stack||q.message);return}c=setTimeout;d=this.pi;this.Y.Ge=pa();e=this.Y.Xi;this.Y.Mf&&(e=Math.round(e*this.Y.Mf/this.Y.rh));e-=this.Y.Ge-this.Y.vg;if(f=this.Y.Ge-this.Y.hf)this.Y.pe=Math.round(this.Ub/(10*f))/100,864E5<=f&&(this.uc=0,this.N&&bd(this.N,!0),Xc(this));if(0>e||this.Y.pe<this.Y.Fe)e=0;this.Y.sh+=this.Y.Mf;this.Y.Ge+=e;c(d,e)}else Qc(this),this.V&&this.V.stop(pa(),Wc(this))};m.vf=function(){return 0};
|
||||
m.Wb=function(a){qb(this,!0);this.fb-=this.A;this.A=0;Zc(this,this.Ub);this.Ub=0;if(this.la.Ib){this.la.Ib=!1;this.N&&ad(this.N);var b=this.qa.run;b&&(b.textContent="Run")}this.la.Wd=a};function Qc(a,b){a.V&&(dd(a.V,b),a.V.qd())}
|
||||
m.Ke=function(a){if(pb(this,!0)){if(!this.la.Ib){Xc(this);this.V&&this.V.start(this.Y.hf,Wc(this));this.la.Ib=!0;this.la.eh=!0;this.N&&ad(this.N);var b=this.qa.run;b&&(b.textContent="Halt");this.V&&(this.V.qd(!0),a&&this.V.yd(!0))}this.Y.sh>=this.Y.Jd&&$c(this,!0);this.Y.Mf=0;this.Y.vg=pa();this.Y.Ge&&(a=this.Y.vg-this.Y.Ge,a>this.Y.Xi&&(this.Y.hf+=a,this.Y.hf>this.Y.vg&&(this.Y.hf=this.Y.vg)));try{do{var c=this.la.Ye?1:this.Y.km;if(this.N){bd(this.N);var d=this.N;a=c;var e=d.W[0];if(e.Be){var f=
|
||||
(Wc(d.F,d.ka)-e.xd)/d.gb|0,g=cd(d,0)-f;6==e.mode&&(g-=f);var h=g*d.gb|0;6==e.mode&&(h>>=1);a>h&&(a=h)}var c=a,k=this.N;a=c;if(k.A&&k.A[11]&64){var l=k.ua-Wc(k.F,k.ka);0<l&&a>l&&(a=l)}c=a}try{this.vf(c)}catch(q){if("number"!=typeof q)throw q;}var n=this.fb-this.A;this.Ub+=n;this.Y.Mf+=n;Zc(this,0,!0);Vc(this,n);this.Y.Lf-=n;0>=this.Y.Lf&&(this.Y.Lf+=this.Y.Zi,this.V&&dd(this.V));this.Y.Kf-=n;0>=this.Y.Kf&&(this.Y.Kf+=this.Y.Yi,this.V&&this.V.qd());this.Y.mf-=n;if(0>=this.Y.mf){this.Y.mf+=this.Y.rh;
|
||||
break}}while(this.la.Ib)}catch(q){this.Wb();Qc(this);this.V&&this.V.stop(pa(),Wc(this));pb(this,!1);ub(this,q.stack||q.message);return}c=setTimeout;d=this.pi;this.Y.Ge=pa();e=this.Y.Xi;this.Y.Mf&&(e=Math.round(e*this.Y.Mf/this.Y.rh));e-=this.Y.Ge-this.Y.vg;if(f=this.Y.Ge-this.Y.hf)this.Y.pe=Math.round(this.Ub/(10*f))/100,864E5<=f&&(this.uc=0,this.N&&bd(this.N,!0),Xc(this));if(0>e||this.Y.pe<this.Y.Fe)e=0;this.Y.sh+=this.Y.Mf;this.Y.Ge+=e;c(d,e)}else Qc(this),this.V&&this.V.stop(pa(),Wc(this))};
|
||||
m.vf=function(){return 0};m.Wb=function(a){qb(this,!0);this.fb-=this.A;this.A=0;Zc(this,this.Ub);this.Ub=0;if(this.la.Ib){this.la.Ib=!1;this.N&&ad(this.N);var b=this.qa.run;b&&(b.textContent="Run")}this.la.Wd=a};function Qc(a,b){a.V&&(dd(a.V,b),a.V.qd(b))}
|
||||
function ed(a,b,c,d){this.F=a;this.ha=a.ha;this.id=b;this.lc=c||"";this.Z=0;this.Ta=65535;this.Zb=this.Ta+1;this.Lb=this.Gc=this.ext=this.wb=this.type=this.Aa=0;this.Xb=-1;this.ba=this.Oc=2;this.R=this.Ba=65535;this.V=this.lh;this.ea=this.Di;this.qa=this.Fi;this.A={Z:-1,Aa:0,Ta:0,wb:0,type:0,ext:0,Xb:-1};1==this.id&&(this.Xf=0,this.C=null,this.cf=!1,this.N=Array(32),this.B=[]);fd(this,!0,d)}function gd(a,b){a.B.push(b);return[a.B.length,1]}m=ed.prototype;
|
||||
m.lh=function(a){this.Z=a&65535;return this.Aa=this.Z<<4};m.tg=function(a,b){var c,d,e=this.F;a&=65535;a&4?(c=e.Bc.Aa,d=c+e.Bc.Ta|0):(c=e.Ec,d=e.Ad);if(c){c=c+(a&65528)|0;if(d-c|0)return e.A-=15,hd(this,c,a,b);6>this.id&&C.call(e,b&&3==this.id?10:13,a&65532)}return-1};m.gm=function(a){var b=this.F;a=b.Mc+(a<<2);var c=b.na(a);b.ca&=-769;return this.load(b.na(a+2))+c|0};
|
||||
m.fm=function(a){var b=this.F;a<<=3;var c=b.Mc+a|0;if(7<=(b.Td-c|0))return this.C=!0,a=hd(this,c,a),-1!==a&&(a+=this.Xf),a;C.call(b,13,a|2);return-1};m.Di=function(a){return this.Aa+a|0};m.Fi=function(a){return this.Aa+a|0};m.Ci=function(a,b){return(a>>>0)+b<=this.Zb?this.Aa+a|0:this.og()};m.Ik=function(a,b){return(a>>>0)+b>this.Zb?this.Aa+a|0:this.og()};m.og=function(){C.call(this.F,13,0);return-1};m.Ei=function(a,b){return(a>>>0)+b<=this.Zb?this.Aa+a|0:this.pg()};
|
||||
|
|
@ -128,8 +128,8 @@ function Nf(a,b){a.$b=a.Ka;a.Ca=b&a.Ba;a.D=a.$b.nc(a.Ca,4);return a.S&1?0:a.oa(a
|
|||
m.Ma=function(){var a=mf(this,this.ba),b=this.tb(this.Ga);this.Ga=a;return b};m.T=function(){var a=mf(this,1),b=this.Qa(this.Ga)<<24>>24;this.Ga=a;return b};function D(a){var b=a.tb(a.ga);a.ga=a.ga+a.ba|0;var c=a.Lg-a.ga|0;0>c&&0<=(a.Lg^a.ga)&&(8088>=a.ia||!a.ta.cd&&a.ta.Ta==a.ta.Ba||a.ta.cd&&!a.ta.Ta?G(a,a.ga-a.ta.Aa&a.ta.Ba):-1>c&&C.call(a,12,0));return b}
|
||||
function pd(a,b,c,d){c=a.ga-c|0;0>(c-a.rd|0)&&0<=(a.rd^c)&&(8088>=a.ia||!a.ta.cd&&a.ta.Ta==a.ta.Ba||a.ta.cd&&!a.ta.Ta?(G(a,c-a.ta.Aa&a.ta.Ba),c=a.ga):C.call(a,12,0));switch(d){case 1:a.qc(c,b);break;case 2:a.jb(c,b);break;case 4:a.nb(c,b)}a.ga=c}function J(a,b){var c=a.ga-a.ba|0;0>(c-a.rd|0)&&0<=(a.rd^c)&&(8088>=a.ia||!a.ta.cd&&a.ta.Ta==a.ta.Ba||a.ta.cd&&!a.ta.Ta?(G(a,c-a.ta.Aa&a.ta.Ba),c=a.ga):C.call(a,12,0));a.rc(c,b);a.ga=c}
|
||||
function Sf(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.ia)2<b.length&&(b=b.substr(1,2));else if("PS"==b||2<b.length)d=8;a.qa[b]&&(void 0===c&&(ub(a,"Value for "+b+" is invalid"),a.Wb()),d=!a.la.Ib||a.la.Oi?r(c,d):"--------".substr(0,d),a.qa[b].textContent!=d&&(a.qa[b].textContent=d))}
|
||||
m.qd=function(a){if(this.Pg&&(a||!this.la.Ib||this.la.Oi)){Sf(this,"EAX",this.G);Sf(this,"EBX",this.H);Sf(this,"ECX",this.I);Sf(this,"EDX",this.M);Sf(this,"ESP",I(this));Sf(this,"EBP",this.P);Sf(this,"ESI",this.K);Sf(this,"EDI",this.J);Sf(this,"CS",this.va.Z);Sf(this,"DS",this.vb.Z);Sf(this,"SS",this.ta.Z);Sf(this,"ES",this.Xa.Z);Sf(this,"EIP",K(this));var b=xd(this);Sf(this,"PS",b);Sf(this,"V",b&2048);Sf(this,"D",b&1024);Sf(this,"I",b&512);Sf(this,"T",b&256);Sf(this,"S",b&128);Sf(this,"Z",b&64);
|
||||
Sf(this,"A",b&16);Sf(this,"P",b&4);Sf(this,"C",b&1);80386==this.ia&&(Sf(this,"FS",this.Ob.Z),Sf(this,"GS",this.Pb.Z),Sf(this,"CR0",this.Za),Sf(this,"CR2",this.te),Sf(this,"CR3",this.Pd))}if(b=this.qa.speed)b.textContent=this.la.Ib&&this.Y.pe?this.Y.pe.toFixed(2)+"Mhz":"Stopped";this.parent.qd.call(this,a)};
|
||||
m.qd=function(a){this.Pg&&(a||!this.la.Ib||this.la.Oi)&&(Sf(this,"EAX",this.G),Sf(this,"EBX",this.H),Sf(this,"ECX",this.I),Sf(this,"EDX",this.M),Sf(this,"ESP",I(this)),Sf(this,"EBP",this.P),Sf(this,"ESI",this.K),Sf(this,"EDI",this.J),Sf(this,"CS",this.va.Z),Sf(this,"DS",this.vb.Z),Sf(this,"SS",this.ta.Z),Sf(this,"ES",this.Xa.Z),Sf(this,"EIP",K(this)),a=xd(this),Sf(this,"PS",a),Sf(this,"V",a&2048),Sf(this,"D",a&1024),Sf(this,"I",a&512),Sf(this,"T",a&256),Sf(this,"S",a&128),Sf(this,"Z",a&64),Sf(this,
|
||||
"A",a&16),Sf(this,"P",a&4),Sf(this,"C",a&1),80386==this.ia&&(Sf(this,"FS",this.Ob.Z),Sf(this,"GS",this.Pb.Z),Sf(this,"CR0",this.Za),Sf(this,"CR2",this.te),Sf(this,"CR3",this.Pd)));if(a=this.qa.speed)a.textContent=this.la.Ib&&this.Y.pe?this.Y.pe.toFixed(2)+"Mhz":"Stopped"};
|
||||
m.vf=function(a){this.la.Wd=!0;var b=this.la.Mi=this.ha&&Tf(this.ha),c=a?this.la.eh?0:1:-1;this.la.eh=!1;this.fb=this.A=a;this.N&&!a&&bd(this.N);a||A(this,1024)||(this.S|=4);do{var d=this.S&3312;if(d)this.Ha|=d;else if(this.re=this.Ga,this.ka=this.vb,this.Ka=this.ta,this.D=this.C=-1,this.Ha&3072&&bf(this),this.Ha=this.S&256,this.ua){a:{if(!(this.S&4))for(var d=80286>this.ia?0:1,e=0;2>e;e++){switch(d){case 0:if(this.ua&1&&this.ca&512){var f=Uf(this.N);if(-1<=f&&(this.ua&=-2,0<=f)){this.ua&=-5;Vf.call(this,
|
||||
f);d=!0;break a}}break;case 1:if(this.ua&2){this.ua&=-3;80386<=this.ia&&(this.Ja[6]|=16384);Vf.call(this,1);d=!0;break a}}d=1-d}d=!1}if(d&&!a){this.O("interrupt dispatched");this.S=0;break}if(this.ua&4){this.S=this.A=0;break}}if(b){if(Wf(this.ha,this.Ga,c)){this.Wb();break}c=1}this.S=0;this.X[this.xa()].call(this)}while(0<this.A);return this.la.Wd?this.fb-this.A:void 0===this.la.Wd?0:-1};Qa(function(){for(var a=nb(document,"pcjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=jb(c),d=new Bd(d);mb(d,c)}});
|
||||
function Xf(a){Ua.call(this,"FPU",a,Xf);this.ia=a.model||8087;(a=a.stepping)&&ca(a,16);this.V=new Float64Array(8);this.aa=new Int32Array(this.V.buffer);this.pa=new Float32Array(1);this.ua=new Int32Array(this.pa.buffer);this.X=new Float64Array(1);this.L=new Int32Array(this.X.buffer);this.ea=Array(3);this.fa=this.ga=-1;this.W=this.U=this.ja=this.A=0;this.ka=new Float64Array(1);this.ra=new Int32Array(this.ka.buffer);this.ra[0]=0;this.ra[1]=268402688;Yf(this)}db(Xf);m=Xf.prototype;
|
||||
|
|
@ -775,7 +775,7 @@ g[1],xg=g[2];if(a.W){var Xn=1;"-"==xg.charAt(0)&&(Xn=-1,xg=xg.substr(1));var td=
|
|||
(Oa="keyboard");for(vc in wq)if(Oa==vc){ud=wq[vc];wc=!!(a.wc&ud);break}if(!ud){a.O("unknown message category: "+Oa);break a}}ud&&("on"==g[2]?(a.wc|=ud,wc=!0):"off"==g[2]&&(a.wc&=~ud,wc=!1))}var os=0,Uc="";for(vc in wq)if(!Oa||Oa==vc){var ps=!!(a.wc&wq[vc]);if(null===wc||wc==ps)Uc&&(Uc+=","),++os%10||(Uc+="\n\t"),"key"==vc&&(vc="keys"),Uc+=vc}void 0===Oa&&a.O("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.O((null!==wc?wc?"messages on: ":"messages off: ":"message categories:\n\t")+
|
||||
(Uc||"none"));kq(a)}break;case "o":var xi=g[1],qs=g[2];if(xi&&"?"!=xi){var yi=Eq(a,xi,"port #"),zi=Eq(a,qs);void 0!==yi&&void 0!==zi&&(mc(a.ea,yi,1,zi),a.O(u(yi)+": "+t(zi)))}else a.O("output commands:"),a.O("\to [p] [b]\twrite byte [b] to port [p]"),a.O("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){Kr(a,b.substr(5));break}var Yn="pr"==g[0]?1:0,fe=1+Yn;if(a.N)a.O("step in progress");else{var yg,Zn=!1,lb=iq(a,K(a.F),a.F.va.Z);do switch(yg=!1,a.Qa(lb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:Uq(a,
|
||||
lb,1);yg=!0;break;case 204:case 206:a.N=fe;Uq(a,lb,1);break;case 205:case 224:case 225:case 226:a.N=fe;Uq(a,lb,lb.Sb?4:2);break;case 232:a.N=fe;Uq(a,lb,lb.Sb?5:3);break;case 154:a.N=fe;Uq(a,lb,lb.Sb?7:5);break;case 255:var $n=a.tb(lb)&14591;if(4351==$n||6399==$n)a.N=fe,rr(a,lb);break;case 243:case 242:Uq(a,lb,1);Zn=yg=!0;break;case 108:case 109:case 110:case 111:case 164:case 165:case 166:case 167:case 170:case 171:case 172:case 173:case 174:case 175:Zn&&(a.N=fe,Uq(a,lb,1))}while(yg);a.N?(a.Sd(a.A,
|
||||
lb,!0),a.Ke()||(a.V&&a.V.yd(),a.N=0)):Mr(a,Yn?"tr":"t")}break;case "r":if("reset"==b){a.V&&a.V.reset();break}jr(a,g);break;case "t":Mr(a,g[0],g[1]);break;case "u":kr(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Hr(a,b.substr(3))||(d=!1);break}a.O("PCjs version 1.21.6 ("+a.F.ia+",RELEASE,NOPREFETCH"+(vb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(ya());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var $e;void 0!==g[3]&&($e=+g[3]);switch(g[2]){case "int":a.F.Y.jf=$e;break;case "start":a.F.Y.Jf=
|
||||
lb,!0),a.Ke()||(a.V&&a.V.yd(),a.N=0)):Mr(a,Yn?"tr":"t")}break;case "r":if("reset"==b){a.V&&a.V.reset();break}jr(a,g);break;case "t":Mr(a,g[0],g[1]);break;case "u":kr(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Hr(a,b.substr(3))||(d=!1);break}a.O("PCjs version 1.21.7 ("+a.F.ia+",RELEASE,NOPREFETCH"+(vb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(ya());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var $e;void 0!==g[3]&&($e=+g[3]);switch(g[2]){case "int":a.F.Y.jf=$e;break;case "start":a.F.Y.Jf=
|
||||
$e;break;case "stop":a.F.Y.lf=$e;break;default:a.O("unknown cs option");break a}void 0!==$e&&Pc(a.F);a.O("checksums "+(a.F.la.Ye?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(Xc(a.F,+g[2])||a.O("warning: using 1x multiplier, previous target not reached"));a.O("target speed: "+(a.F.Y.Fe.toFixed(2)+"Mhz")+" ("+a.F.Y.Yd+"x)");break;default:a.O("unknown option: "+g[1])}else a.O("execution options:"),a.O("\tcs int #\tset checksum cycle interval to #"),a.O("\tcs start #\tset checksum cycle start count to #"),
|
||||
a.O("\tcs stop #\tset checksum cycle stop count to #"),a.O("\tsp #\t\tset speed multiplier to #");break;case "?":if(g[1]){Kr(a,b.substr(1));break}var af="commands:",Ai;for(Ai in pq)af+="\n"+ma(Ai,7)+pq[Ai];Tf(a)||(af+="\nnote: frequency/history disabled if no exec breakpoints");a.O(af);break;default:a.O("unknown command: "+b),d=!1}}}catch(ao){a.O("debugger error: "+(ao.stack||ao.message)),d=!1}return d}function mq(a,b,c){b=cr(a,b,c);for(var d in b)if(!qr(a,b[d]))return!1;return!0}
|
||||
Qa(function(){for(var a=nb(document,"pcjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=jb(c),d=new hq(d);mb(d,c)}});function hf(a,b,c){this.id=a.id;this.key=Or(a,b,c);this.ha=a.ha;Pr(this,a.gk)}function Or(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
|
|
@ -783,7 +783,7 @@ hf.prototype={constructor:hf,value:function(){return this[this.id]},data:functio
|
|||
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function Pr(a,b){a[a.id]={};b&&N(a,"parms",b);a.A=!1}function Qr(a){var b=!0;if(Ca()){var c=JSON.stringify(a[a.id]);Fa(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Rr(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){w(c.message||c),b=!1}return b}function Sr(a,b){return a[a.id][b]||null}function N(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Tr(a,b,c){Ua.call(this,"Computer",a,Tr,67108864);this.la.cc=!1;Ur(this,b);this.ga=Nc(this,"autoPower",a);this.N=0;this.ua=a.busWidth||a.buswidth;this.A=Vr;this.aa=null;this.W=this.ra=!1;this.wa=Nc(this,"url")||"";this.ya=(Math.random()+.1).toString(36).substr(2,12);this.B=Wr(this);if(this.F=ib("CPU",this.id)){this.ha=ib("Debugger",this.id);this.L=[];for(b=null;b=Eb(this,"Video",b);)this.L.push(b);this.ea=new Lb({id:this.ve+".bus",buswidth:this.ua},this.F,this.ha);var d,e=gb(this.id);if((this.C=
|
||||
ib("Panel",this.id))&&this.C.Df)for(b=0;b<e.length;b++)d=e[b],d.Na=this.C.Na,d.O=this.C.O,d.Df=this.C.Df;for(b=0;b<e.length;b++)d=e[b],d.Ic&&d.Ic(this,this.ea,this.F,this.ha);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.X=d:this.A=parseInt(d,10));var f;if(a=Nc(this,"state")||(f=!0,a.state))b=this.ja=a,f||(this.W=!0,this.A=Vr),this.A&&(this.fa=new hf(this,Xr),this.fa.load()?b=null:delete this.fa);!b&&this.A&&(b=Yr(this))&&(this.W=!0);if(b){var g=this;va(b,null,!0,function(a,b,c){c?(g.X=null,g.W=
|
||||
!1,g.Na("Unable to load machine state from server (error "+c+(b?": "+na(b):"")+")")):(g.aa=b,g.ra=!0);rb(g)})}else rb(this);this.qa.power||(this.ga=!0);!c&&this.ga&&Zr(this,this.$f)}else w("Unable to find CPU component")}db(Tr);var Xr="1.21.6",Vr=0;m=Tr.prototype;m.ff=function(){return this.ya};function Ur(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.U=b}
|
||||
!1,g.Na("Unable to load machine state from server (error "+c+(b?": "+na(b):"")+")")):(g.aa=b,g.ra=!0);rb(g)})}else rb(this);this.qa.power||(this.ga=!0);!c&&this.ga&&Zr(this,this.$f)}else w("Unable to find CPU component")}db(Tr);var Xr="1.21.7",Vr=0;m=Tr.prototype;m.ff=function(){return this.ya};function Ur(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.U=b}
|
||||
function Nc(a,b,c){var d=b.toLowerCase(),d=Ya[b]||Ya[d];void 0===d&&a.U&&(d=a.U[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}m.ke=function(){return this.B||""};function Zr(a,b,c){for(var d=gb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!sb(f)){sb(f,function(){Zr(a,b,c)});return}}b.call(a,c)}
|
||||
function $r(a,b){var c=new hf(a,Xr,"validate");if(c.load()&&Rr(c)){var d=Sr(c,"timestamp"),e=b?Sr(b,"timestamp"):"unknown";d!=e&&(a.Na("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
m.$f=function(a){void 0===a&&(a=this.A||(this.aa?1:Vr));if(!this.N){this.N++;var b=!1,c=!1;this.pa=!1;var d=this.fa||new hf(this,Xr);if(-1==a)b=!0;else if(a>Vr){if(d.load(this.aa)){this.V=new hf(this,Xr,"failsafe");this.V.load()&&(as(this,d),a=2,Pr(this.V));N(this.V,"timestamp",qa());Qr(this.V);var e=this.A&&!this.W;if(1==a||za("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=Rr(d)){var f=Sr(d,"code"),g=Sr(d,"data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
|
||||
|
|
@ -791,7 +791,7 @@ g?(this.Na("Error: "+g),"unable to verify user"==g&&(Fa("user",""),this.B=null))
|
|||
function bs(a,b,c,d,e){if(!b.la.cc){b.la.cc=!0;if(b.ic){var f=null;e&&((f=Sr(c,b.id))||(f=Sr(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ic(f,d)&&f&&(w("Unable to restore state for "+b.type),a.ja&&!a.ra?(c.clear(),a.A=Vr,window&&window.location.reload()):a.pa=!0,b.ic(null),e=!1)}if(!d&&b.tk)for(a=b.tk.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.Ii=function(a){var b=a[0],c=0>a[1];a=a[2];this.la.cc=!0;var d=this.qa.power;d&&(d.textContent="Shutdown");this.ka||(this.O("PCjs v"+Xr+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.ka=!0);this.F&&(bs(this,this.F,b,c,a),Sc(this.F));this.pa&&(as(this,b),b.clear());!c&&this.V&&(this.V.clear(),delete this.V);this.N=0};
|
||||
function as(a,b){if(za("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.wa,d=a.ke(),e=b.toString(),f={app:"PCjs"};f.ver=Xr;f.url=c;f.user=d;f.type="bug";f.data=e;va("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Nr(a,b,c){var d,e="none";if(a.N)return null;a.N--;var f=new hf(a,Xr),g=new hf(a,Xr,"validate"),h=qa();N(g,"timestamp",h);N(f,"timestamp",h);N(f,"version","1.21.6");N(f,"url",window?window.location.href:null);N(f,"browser",ya());a.F&&a.F.hc&&(c&&a.F.Wb(),d=a.F.hc(b,c),"object"===typeof d&&N(f,a.F.id,d),c&&(a.F.la.cc=!1,!1===d&&(e=null)));for(var h=gb(a.id),k=0;k<h.length;k++){var l=h[k];l.la.cc&&(l.hc&&(d=l.hc(b,c),"object"===typeof d&&N(f,l.id,d)),c&&(l.la.cc=!1,!1===d&&(e=null)))}e&&(c?
|
||||
function Nr(a,b,c){var d,e="none";if(a.N)return null;a.N--;var f=new hf(a,Xr),g=new hf(a,Xr,"validate"),h=qa();N(g,"timestamp",h);N(f,"timestamp",h);N(f,"version","1.21.7");N(f,"url",window?window.location.href:null);N(f,"browser",ya());a.F&&a.F.hc&&(c&&a.F.Wb(),d=a.F.hc(b,c),"object"===typeof d&&N(f,a.F.id,d),c&&(a.F.la.cc=!1,!1===d&&(e=null)));for(var h=gb(a.id),k=0;k<h.length;k++){var l=h[k];l.la.cc&&(l.hc&&(d=l.hc(b,c),"object"===typeof d&&N(f,l.id,d)),c&&(l.la.cc=!1,!1===d&&(e=null)))}e&&(c?
|
||||
(h=d=!1,b?(a.B&&cs(a,a.B,f.toString()),Qr(g)&&Qr(f)||(e=null,d=h=!0)):a.A&&(d=!0,h=3==a.A),d&&f.clear(h)):e=f.toString());c&&(a.la.cc=!1,b=a.qa.power)&&(b.textContent="Power");a.N=0;return e}m.reset=function(){this.ea&&this.ea.reset&&(y(this,"Resetting "+this.ea.type),this.ea.reset());for(var a=gb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ea&&c.reset&&(y(this,"Resetting "+c.type),c.reset())}};
|
||||
m.start=function(a,b){for(var c=gb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=gb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
m.Qb=function(a,b,c){var d=this;switch(b){case "power":return this.qa[b]=c,c.onclick=function(){d.N||(d.la.cc?Nr(d,!1,!0):Zr(d,d.$f))},!0;case "reset":return this.qa[b]=c,c.onclick=function(){if(d.la.cc&&!d.N)if(d.A&&!d.X){var a=za("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Nr(d,a,!0);!a&&d.ja?window&&window.location.reload():(a||(d.dh=!0),d.$f(Vr),d.dh=!1)}else d.reset(),d.F&&Sc(d.F)},!0;case "save":if(ha(xa(),"pcjs.org")){c.parentNode.removeChild(c);
|
||||
|
|
@ -799,7 +799,7 @@ break}this.qa[b]=c;c.onclick=function(){var a=Wr(d,!0);if(a){var b=!!(d.A&&!d.X|
|
|||
function Wr(a,b){var c=a.B;c||(c=Ea("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=ds(a,c))||a.Na("The user ID is invalid."))):b&&a.Na("Browser local storage is not available"));return c}
|
||||
function ds(a,b){a.B=null;var c=va(xa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Fa("user",c.data),a.B=c.data)}catch(e){w(e.message+" ("+d+")")}return a.B}function Yr(a){var b=null;a.B&&(b=xa()+"/api/v1/user?req=load&user="+a.B+"&state="+Or(a,Xr));return b}
|
||||
function cs(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Or(a,Xr);d.data=c;b=va(xa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Na("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Na(c),Fa("user",""),a.B=null)}}
|
||||
function Eb(a,b,c){a=gb(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.yd=function(a){if(this.L.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.L[0];d.V&&d.V.focus();a&&window&&window.scrollTo(b,c)}};m.qd=function(){this.C&&this.C.qd()};
|
||||
function Eb(a,b,c){a=gb(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.yd=function(a){if(this.L.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.L[0];d.V&&d.V.focus();a&&window&&window.scrollTo(b,c)}};m.qd=function(a){this.F&&this.F.qd(a);this.C&&this.C.qd(a)};
|
||||
function dd(a,b){for(var c=0;c<a.L.length;c++)qn(a.L[c],b);if(a.C&&(c=a.C,c.Ja)){Ib(c,18,c.aa,c.Ia);if(c.gb){var d=c.ea,e=c.A,f,g;null==f&&(f=0);null==g&&(g=d.X-f|0);null==e&&(e={$g:0,Ud:0,Rg:[]});var h=f>>>d.La;f=f+g-1>>>d.La;e.$g=0;for(e.Ud=0;h<=f;)g=d.sa[h],e.$g+=g.size,g.size&&(e.Rg.push(sa(Hb,h,0,0,g.type)),e.Ud++),h++;c.A=e;c.ya=c.A.Ud*c.ea.Nb/691200;d=0;c.A.Ai=0;c.A.Af||(c.A.Af=[]);var e=-1,h=0,k=-1;for(f=0;f<c.A.Ud;f++){var l=c.A.Rg[f];g=ta(Hb.type,l);l=ta(Hb.$j,l);if(g!=e||l!=k+1)(k=f-h)&&
|
||||
(d+=Kb(c,h,k,e)),e=g,h=f;k=l}d+=Kb(c,h,f-h,e);e=c.A.Kk!=d;c.A.Kk=d;if(e){e=new Bb(0,0,c.aa.width,c.aa.height);c.A.Pe=[];h=c.A.Ud;for(d=0;d<c.A.Ai;d++)f=c.A.Af[d].Ud,c.A.Pe.push(Cb(e,f,h,!d)),h-=f;for(d=0;d<c.A.Pe.length;d++)e=c.A.Af[d],h=f=c.A.Pe[d],g=c.Ia,(k=xc[e.type])||(k=new Ab),g.strokeStyle="black",g.strokeRect(h.x,h.y,h.ad,h.A),g.fillStyle="string"==typeof k?k:k.toString(),g.fillRect(h.x,h.y,h.ad,h.A),h=c,g=f,h.ga=h.ua,h.X=h.wa,f=g.x+(g.ad>>1),k=g.y+(g.A>>1),l=g.A,g.ad<g.A&&(l=g.ad,h.ra=!0,
|
||||
h.N.save(),h.N.translate(f,k),h.N.rotate(-Math.PI/2),f=k=0),l<h.X&&(h.X=l,h.ga=h.X+"px Monaco, Lucida Console, Courier New"),g=k,h.C=f,h.U=g,h=c,e=sc[e.type]+" ("+(e.Ud*c.ea.Nb/1024|0)+"Kb)",h.N.font=h.ga,h.C-=h.N.measureText(e).width>>1,h.U+=(h.X>>1)-2,Jb(h,e),h.ra&&(h.N.restore(),h.ra=!1)}}else Jb(c,"This space intentionally left blank");c.context.drawImage(c.aa,0,0,c.aa.width,c.aa.height,c.sb,c.Jb,c.$a,c.fb);c.Ja=!1}}
|
||||
|
|
@ -810,9 +810,9 @@ function rs(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{if(c){fb(c,b,a);v
|
|||
function ss(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");va(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);ss(a,b,c)}})}else c(a,null)}
|
||||
function ts(a,b,c,d){function e(a){if(void 0===h){var b=g&&nb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=la(a))}function f(a){e("Error: "+a);k&&(--es||Sa(!0));k=!1}var g,h,k=!0;es++;eb[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));n.appendChild(q)}c||
|
||||
(c="/versions/pcjs/1.21.6/components.xsl");l=function(d,h){h?fs(c,null,null,!1,e,function(d,k){if(k)if(fb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(k);l?(g.outerHTML=l,--es||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--es||Sa(!0)):f("invalid machine element: "+
|
||||
(c="/versions/pcjs/1.21.7/components.xsl");l=function(d,h){h?fs(c,null,null,!1,e,function(d,k){if(k)if(fb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(k);l?(g.outerHTML=l,--es||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--es||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)?fs(b,a,d,!0,e,l):rs(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(p){f(p.message)}return k}window.embedPC=function(a,b,c,d){Sa(!1);return ts(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;
|
||||
function us(a,b,c,d){if(!c&&b){d.push(b);a=eb[d[0]];b=null;for(var e in a)if(ha(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?va(b,null,!0,function(a,b){vs(b,d)}):vs(null,d)}else w("Error ("+c+") requesting "+a)}
|
||||
function vs(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=eb[f],k={},l;for(l in h){var n=h[l],q=ga(l);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(h[l]);){var p=d[2];p&&(h[p]||(n=n.replace(d[0],"")))}d=l=fa(l)}else"xsl"==q&&(e=l=fa(l));k[l]=n}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),c=Ia(c,"javascript",!1,g),c=c+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n'),c+="...\n",c+='<script type="text/javascript" src="'+g+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",w(c)):w("Missing XML/XSL resources")}
|
||||
window.savePC=function(a,b,c){var d=ib("Computer",a),e=ib("Debugger",a);if(d){var f=Nr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcjs/1.21.6/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,gk:g}))return!0;va(b,null,!0,function(c,d,e){us(c,d,e,[a,fa(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();
|
||||
window.savePC=function(a,b,c){var d=ib("Computer",a),e=ib("Debugger",a);if(d){var f=Nr(d,!0),g=d.U?JSON.stringify(d.U):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,gk:g}))return!0;va(b,null,!0,function(c,d,e){us(c,d,e,[a,fa(b,!0),g,f])});return!0}w("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
|
|
@ -60,10 +60,10 @@ l.zb=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.ka
|
|||
a=!0;break;case "speed":this.ka[b]=c;a=!0;break;case "setSpeed":this.ka[b]=c,c.onclick=function(){pc(d,d.T.Cd<<1,!0)},c.textContent=this.T.te.toFixed(2)+"Mhz",a=!0}return a};function qc(a,b){if(a.ea.Sb){var c=a.A-b;a.A-=c;a.mc-=c}}function rc(a,b,c){a.$c+=b;c&&(a.mc=a.A=0)}
|
||||
function sc(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.T.Cd&&a.T.Bd&&(d=a.T.Bd/a.T.Df);a.T.Yh=Math.round(1E3/30);a.T.Xk=Math.floor(a.T.ad/c*d);a.T.tg=Math.floor(a.T.ad/30*d);a.T.$h=Math.floor(a.T.ad/60*d);a.T.Zh=Math.floor(a.T.ad/2*d);b||(a.T.Re=a.T.tg,a.T.Qe=a.T.$h,a.T.Pe=a.T.Zh);a.T.ug=0}function tc(a,b){var c=a.$c+a.zc+a.mc-a.A;b&&1<a.T.Cd&&a.T.Bd>a.T.Df&&(c=Math.round(c/a.T.Cd));return c}function kc(a){a.T.Bd=0;a.$c=a.zc=a.mc=a.A=0;lc(a);pc(a,1)}
|
||||
function pc(a,b,c){if(void 0!==b){.8>a.T.Bd/a.T.te&&(b=1);a.T.Cd=b;b=a.T.Df*a.T.Cd;if(a.T.te!=b){a.T.te=b;b=a.T.te.toFixed(2)+"Mhz";var d=a.ka.setSpeed;d&&(d.textContent=b);a.rc("target speed: "+b)}c&&a.aa&&uc(a.aa)}rc(a,a.zc);a.zc=0;a.T.ue=ka();a.T.Rd=0;sc(a)}
|
||||
l.mh=function(a){if($a(this,!0)){if(!this.ea.Sb){pc(this);this.aa&&this.aa.start(this.T.ue,tc(this));this.ea.Sb=!0;this.ea.Rh=!0;this.P&&vc(this.P);var b=this.ka.run;b&&(b.textContent="Halt");this.aa&&(this.aa.Xd(),a&&uc(this.aa,!0))}this.T.ug>=this.T.ad&&sc(this,!0);this.T.Se=0;this.T.Ef=ka();this.T.Rd&&(a=this.T.Ef-this.T.Rd,a>this.T.Yh&&(this.T.ue+=a,this.T.ue>this.T.Ef&&(this.T.ue=this.T.Ef)));try{do{var c=this.ea.zf?1:this.T.Xk;if(this.P){wc(this.P);var d=this.P;a=c;var e=d.K[0];if(e.Od){var f=
|
||||
l.mh=function(a){if($a(this,!0)){if(!this.ea.Sb){pc(this);this.aa&&this.aa.start(this.T.ue,tc(this));this.ea.Sb=!0;this.ea.Rh=!0;this.P&&vc(this.P);var b=this.ka.run;b&&(b.textContent="Halt");this.aa&&(this.aa.Xd(!0),a&&uc(this.aa,!0))}this.T.ug>=this.T.ad&&sc(this,!0);this.T.Se=0;this.T.Ef=ka();this.T.Rd&&(a=this.T.Ef-this.T.Rd,a>this.T.Yh&&(this.T.ue+=a,this.T.ue>this.T.Ef&&(this.T.ue=this.T.Ef)));try{do{var c=this.ea.zf?1:this.T.Xk;if(this.P){wc(this.P);var d=this.P;a=c;var e=d.K[0];if(e.Od){var f=
|
||||
(tc(d.A,d.ba)-e.ld)/d.Ga|0,g=xc(d,0)-f;6==e.mode&&(g-=f);var h=g*d.Ga|0;6==e.mode&&(h>>=1);a>h&&(a=h)}var c=a,k=this.P;a=c;if(k.B&&k.B[11]&64){var m=k.ia-tc(k.A,k.ba);0<m&&a>m&&(a=m)}c=a}try{this.nj(c)}catch(x){if("number"!=typeof x)throw x;}var p=this.mc-this.A;this.zc+=p;this.T.Se+=p;rc(this,0,!0);a=p;this.ea.zf&&(b=!1,this.T.Ff=this.T.Ff+this.Th()|0,this.T.ve-=a,0>=this.T.ve&&(this.T.ve+=this.T.Ne,b=!0),0<=this.T.Oe&&this.T.Oe<=tc(this)&&(this.T.Ne=this.T.Oe=-1,lc(this),oc(this),b=!0),b&&this.rc(tc(this)+
|
||||
" cycles: checksum="+ea(this.T.Ff)));this.T.Qe-=p;0>=this.T.Qe&&(this.T.Qe+=this.T.$h,this.aa&&yc(this.aa));this.T.Pe-=p;0>=this.T.Pe&&(this.T.Pe+=this.T.Zh,this.aa&&this.aa.Xd());this.T.Re-=p;if(0>=this.T.Re){this.T.Re+=this.T.tg;break}}while(this.ea.Sb)}catch(x){oc(this);mc(this);this.aa&&this.aa.stop(ka(),tc(this));$a(this,!1);cb(this,x.stack||x.message);return}c=setTimeout;d=this.xj;this.T.Rd=ka();e=this.T.Yh;this.T.Se&&(e=Math.round(e*this.T.Se/this.T.tg));e-=this.T.Rd-this.T.Ef;if(f=this.T.Rd-
|
||||
this.T.ue)this.T.Bd=Math.round(this.zc/(10*f))/100,864E5<=f&&(this.$c=0,this.P&&wc(this.P,!0),pc(this));if(0>e||this.T.Bd<this.T.te)e=0;this.T.ug+=this.T.Se;this.T.Rd+=e;c(d,e)}else mc(this),this.aa&&this.aa.stop(ka(),tc(this))};l.nj=function(){return 0};function oc(a,b){a.ea.Qc&&(a.ea.hg=!0);a.mc-=a.A;a.A=0;rc(a,a.zc);a.zc=0;if(a.ea.Sb){a.ea.Sb=!1;a.P&&vc(a.P);var c=a.ka.run;c&&(c.textContent="Run")}a.ea.Le=b}function mc(a){a.aa&&(yc(a.aa,void 0),a.aa.Xd())}
|
||||
this.T.ue)this.T.Bd=Math.round(this.zc/(10*f))/100,864E5<=f&&(this.$c=0,this.P&&wc(this.P,!0),pc(this));if(0>e||this.T.Bd<this.T.te)e=0;this.T.ug+=this.T.Se;this.T.Rd+=e;c(d,e)}else mc(this),this.aa&&this.aa.stop(ka(),tc(this))};l.nj=function(){return 0};function oc(a,b){a.ea.Qc&&(a.ea.hg=!0);a.mc-=a.A;a.A=0;rc(a,a.zc);a.zc=0;if(a.ea.Sb){a.ea.Sb=!1;a.P&&vc(a.P);var c=a.ka.run;c&&(c.textContent="Run")}a.ea.Le=b}function mc(a){a.aa&&(yc(a.aa,void 0),a.aa.Xd(void 0))}
|
||||
function zc(a,b,c,d){this.A=a;this.Ia=a.Ia;this.id=b;this.Tf=c||"";this.ja=0;this.Za=65535;this.C=this.Za+1;this.sb=this.nc=this.ext=this.lb=this.type=this.ya=0;this.hc=-1;this.U=this.Nc=2;this.N=this.sa=65535;this.L=this.Xh;this.I=this.Jh;this.K=this.Lh;this.B={ja:-1,ya:0,Za:0,lb:0,type:0,ext:0,hc:-1};1==this.id&&(this.cf=0,this.D=null,this.pe=!1,this.H=Array(32),this.G=[]);Ac(this,!0,d)}l=zc.prototype;l.Xh=function(a){this.ja=a&65535;return this.ya=this.ja<<4};
|
||||
l.Cf=function(a,b){var c,d,e=this.A;a&=65535;a&4?(c=e.Zb.ya,d=c+e.Zb.Za|0):(c=e.ub,d=e.wc);if(c){c=c+(a&65528)|0;if(d-c|0)return e.A-=15,Bc(this,c,a,b);6>this.id&&t.call(e,b&&3==this.id?10:13,a&65532)}return-1};l.Uk=function(a){var b=this.A;a=b.Ab+(a<<2);var c=b.ga(a);b.W&=-769;return this.load(b.ga(a+2))+c|0};l.Tk=function(a){var b=this.A;a<<=3;var c=b.Ab+a|0;if(7<=(b.xc-c|0))return this.D=!0,a=Bc(this,c,a),-1!==a&&(a+=this.cf),a;t.call(b,13,a|2);return-1};l.Jh=function(a){return this.ya+a|0};
|
||||
l.Lh=function(a){return this.ya+a|0};l.Ih=function(a,b){return(a>>>0)+b<=this.C?this.ya+a|0:this.wf()};l.zj=function(a,b){return(a>>>0)+b>this.C?this.ya+a|0:this.wf()};l.wf=function(){t.call(this.A,13,0);return-1};l.Kh=function(a,b){return(a>>>0)+b<=this.C?this.ya+a|0:this.xf()};l.Aj=function(a,b){return(a>>>0)+b>this.C?this.ya+a|0:this.xf()};l.xf=function(){t.call(this.A,13,0);return-1};
|
||||
|
|
@ -113,8 +113,8 @@ function Ge(a,b){a.L&2||a.Mc(a.Eb.Qb(a.La,1),b)}function He(a,b){a.L&2||a.bb(a.E
|
|||
l.O=function(){var a=ge(this,1),b=this.Jb(this.Y)<<24>>24;this.Y=a;return b};function u(a){var b=a.Tb(a.ra);a.ra=a.ra+a.U|0;var c=a.Xf-a.ra|0;0>c&&0<=(a.Xf^a.ra)&&(8088>=a.ca||!a.S.zd&&a.S.Za==a.S.sa||a.S.zd&&!a.S.Za?v(a,a.ra-a.S.ya&a.S.sa):-1>c&&t.call(a,12,0));return b}
|
||||
function Jc(a,b,c,d){c=a.ra-c|0;0>(c-a.$d|0)&&0<=(a.$d^c)&&(8088>=a.ca||!a.S.zd&&a.S.Za==a.S.sa||a.S.zd&&!a.S.Za?(v(a,c-a.S.ya&a.S.sa),c=a.ra):t.call(a,12,0));switch(d){case 1:a.Mc(c,b);break;case 2:a.bb(c,b);break;case 4:a.Va(c,b)}a.ra=c}function y(a,b){var c=a.ra-a.U|0;0>(c-a.$d|0)&&0<=(a.$d^c)&&(8088>=a.ca||!a.S.zd&&a.S.Za==a.S.sa||a.S.zd&&!a.S.Za?(v(a,c-a.S.ya&a.S.sa),c=a.ra):t.call(a,12,0));a.Xb(c,b);a.ra=c}
|
||||
function O(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.ca)2<b.length&&(b=b.substr(1,2));else if("PS"==b||2<b.length)d=8;a.ka[b]&&(void 0===c&&(cb(a,"Value for "+b+" is invalid"),oc(a)),d=!a.ea.Sb||a.ea.Qh?ea(c,d):"--------".substr(0,d),a.ka[b].textContent!=d&&(a.ka[b].textContent=d))}
|
||||
l.Xd=function(a){if(this.yh&&(a||!this.ea.Sb||this.ea.Qh)){O(this,"EAX",this.J);O(this,"EBX",this.D);O(this,"ECX",this.G);O(this,"EDX",this.M);O(this,"ESP",w(this));O(this,"EBP",this.K);O(this,"ESI",this.I);O(this,"EDI",this.H);O(this,"CS",this.Ca.ja);O(this,"DS",this.xa.ja);O(this,"SS",this.S.ja);O(this,"ES",this.pa.ja);O(this,"EIP",A(this));var b=Mc(this);O(this,"PS",b);O(this,"V",b&2048);O(this,"D",b&1024);O(this,"I",b&512);O(this,"T",b&256);O(this,"S",b&128);O(this,"Z",b&64);O(this,"A",b&16);
|
||||
O(this,"P",b&4);O(this,"C",b&1);80386==this.ca&&(O(this,"FS",this.Ta.ja),O(this,"GS",this.Xa.ja),O(this,"CR0",this.Pa),O(this,"CR2",this.rd),O(this,"CR3",this.dd))}if(b=this.ka.speed)b.textContent=this.ea.Sb&&this.T.Bd?this.T.Bd.toFixed(2)+"Mhz":"Stopped";this.parent.Xd.call(this,a)};
|
||||
l.Xd=function(a){this.yh&&(a||!this.ea.Sb||this.ea.Qh)&&(O(this,"EAX",this.J),O(this,"EBX",this.D),O(this,"ECX",this.G),O(this,"EDX",this.M),O(this,"ESP",w(this)),O(this,"EBP",this.K),O(this,"ESI",this.I),O(this,"EDI",this.H),O(this,"CS",this.Ca.ja),O(this,"DS",this.xa.ja),O(this,"SS",this.S.ja),O(this,"ES",this.pa.ja),O(this,"EIP",A(this)),a=Mc(this),O(this,"PS",a),O(this,"V",a&2048),O(this,"D",a&1024),O(this,"I",a&512),O(this,"T",a&256),O(this,"S",a&128),O(this,"Z",a&64),O(this,"A",a&16),O(this,
|
||||
"P",a&4),O(this,"C",a&1),80386==this.ca&&(O(this,"FS",this.Ta.ja),O(this,"GS",this.Xa.ja),O(this,"CR0",this.Pa),O(this,"CR2",this.rd),O(this,"CR3",this.dd)));if(a=this.ka.speed)a.textContent=this.ea.Sb&&this.T.Bd?this.T.Bd.toFixed(2)+"Mhz":"Stopped"};
|
||||
l.nj=function(a){this.ea.Le=!0;this.ea.Hj=!1;this.ea.Rh=!1;this.mc=this.A=a;this.P&&!a&&wc(this.P);a||(this.L|=4);do{if(a=this.L&3312)this.wa|=a;else if(this.Ed=this.Y,this.va=this.xa,this.rb=this.S,this.F=this.C=-1,this.wa&3072&&Yd(this),this.wa=this.L&256,this.Ea){a:if(!(this.L&4)){a=80286>this.ca?0:1;for(var b=0;2>b;b++){switch(a){case 0:if(this.Ea&1&&this.W&512){var c=Ke(this.P);if(-1<=c&&(this.Ea&=-2,0<=c)){this.Ea&=-5;Le.call(this,c);break a}}break;case 1:if(this.Ea&2){this.Ea&=-3;80386<=this.ca&&
|
||||
(this.qb[6]|=16384);Le.call(this,1);break a}}a=1-a}}if(this.Ea&4){this.L=this.A=0;break}}this.L=0;this.ma[this.na()].call(this)}while(0<this.A);return this.ea.Le?this.mc-this.A:void 0===this.ea.Le?0:-1};Ea(function(){for(var a=Za(document,"pcjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=Wa(c),d=new Rc(d);Ya(d,c)}});
|
||||
function Me(a){Ia.call(this,"FPU",a,Me);this.ca=a.model||8087;(a=a.stepping)&&ca(a,16);this.K=new Float64Array(8);this.da=new Int32Array(this.K.buffer);this.ba=new Float32Array(1);this.la=new Int32Array(this.ba.buffer);this.S=new Float64Array(1);this.I=new Int32Array(this.S.buffer);this.G=Array(3);this.ha=this.aa=-1;this.L=this.R=this.X=this.B=0;this.Y=new Float64Array(1);this.ia=new Int32Array(this.Y.buffer);this.ia[0]=0;this.ia[1]=268402688;Ne(this)}Qa(Me);l=Me.prototype;
|
||||
|
|
@ -600,7 +600,7 @@ ce.prototype={constructor:ce,value:function(){return this[this.id]},data:functio
|
|||
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function ln(a,b){a[a.id]={};b&&C(a,"parms",b);a.A=!1}function mn(a){var b=!0;if(ta()){var c=JSON.stringify(a[a.id]);xa(a.key,c)||(n("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function nn(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){n(c.message||c),b=!1}return b}function on(a,b){return a[a.id][b]||null}function C(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function pn(a,b,c){Ia.call(this,"Computer",a,pn);this.ea.Rb=!1;qn(this,b);this.aa=jc(this,"autoPower",a);this.G=0;this.ia=a.busWidth||a.buswidth;this.B=rn;this.R=null;this.K=this.da=!1;this.la=jc(this,"url")||"";this.ma=(Math.random()+.1).toString(36).substr(2,12);this.C=sn(this);if(this.A=Va("CPU",this.id)){this.Ia=Va("Debugger",this.id);this.I=[];for(b=null;b=kb(this,"Video",b);)this.I.push(b);this.ha=new rb({id:this.lf+".bus",buswidth:this.ia},this.A,this.Ia);var d,e=Ta(this.id);if((this.D=Va("Panel",
|
||||
this.id))&&this.D.gg)for(b=0;b<e.length;b++)d=e[b],d.Ba=this.D.Ba,d.rc=this.D.rc,d.gg=this.D.gg;for(b=0;b<e.length;b++)d=e[b],d.pc&&d.pc(this,this.ha,this.A,this.Ia);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.P=d:this.B=parseInt(d,10));var f;if(a=jc(this,"state")||(f=!0,a.state))b=this.X=a,f||(this.K=!0,this.B=rn),this.B&&(this.S=new ce(this,tn),this.S.load()?b=null:delete this.S);!b&&this.B&&(b=un(this))&&(this.K=!0);if(b){var g=this;pa(b,null,!0,function(a,b,c){c?(g.P=null,g.K=!1,g.Ba("Unable to load machine state from server (error "+
|
||||
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(g.R=b,g.da=!0);ab(g)})}else ab(this);this.ka.power||(this.aa=!0);!c&&this.aa&&vn(this,this.df)}else n("Unable to find CPU component")}Qa(pn);var tn="1.21.6",rn=0;l=pn.prototype;l.se=function(){return this.ma};function qn(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){n(d.message+" ("+c+")")}}a.L=b}
|
||||
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(g.R=b,g.da=!0);ab(g)})}else ab(this);this.ka.power||(this.aa=!0);!c&&this.aa&&vn(this,this.df)}else n("Unable to find CPU component")}Qa(pn);var tn="1.21.7",rn=0;l=pn.prototype;l.se=function(){return this.ma};function qn(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){n(d.message+" ("+c+")")}}a.L=b}
|
||||
function jc(a,b,c){var d=b.toLowerCase(),d=La[b]||La[d];void 0===d&&a.L&&(d=a.L[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}l.Ad=function(){return this.C||""};function vn(a,b,c){for(var d=Ta(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!bb(f)){bb(f,function(){vn(a,b,c)});return}}b.call(a,c)}
|
||||
function wn(a,b){var c=new ce(a,tn,"validate");if(c.load()&&nn(c)){var d=on(c,"timestamp"),e=b?on(b,"timestamp"):"unknown";d!=e&&(a.Ba("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
l.df=function(a){void 0===a&&(a=this.B||(this.R?1:rn));if(!this.G){this.G++;var b=!1,c=!1;this.ba=!1;var d=this.S||new ce(this,tn);if(-1==a)b=!0;else if(a>rn){if(d.load(this.R)){this.H=new ce(this,tn,"failsafe");this.H.load()&&(xn(this,d),a=2,ln(this.H));C(this.H,"timestamp",la());mn(this.H);var e=this.B&&!this.K;if(1==a||ra("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=nn(d)){var f=on(d,"code"),g=on(d,"data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
|
||||
|
|
@ -608,7 +608,7 @@ g?(this.Ba("Error: "+g),"unable to verify user"==g&&(xa("user",""),this.C=null))
|
|||
function yn(a,b,c,d,e){if(!b.ea.Rb){b.ea.Rb=!0;if(b.Vb){var f=null;e&&((f=on(c,b.id))||(f=on(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Vb(f,d)&&f&&(n("Unable to restore state for "+b.type),a.X&&!a.da?(c.clear(),a.B=rn,window&&window.location.reload()):a.ba=!0,b.Vb(null),e=!1)}if(!d&&b.zh)for(a=b.zh.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
l.Nh=function(a){var b=a[0],c=0>a[1];a=a[2];this.ea.Rb=!0;var d=this.ka.power;d&&(d.textContent="Shutdown");this.Y||(this.rc("PCjs v"+tn+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.Y=!0);this.A&&(yn(this,this.A,b,c,a),nc(this.A));this.ba&&(xn(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.G=0};
|
||||
function xn(a,b){if(ra("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.la,d=a.Ad(),e=b.toString(),f={app:"PCjs"};f.ver=tn;f.url=c;f.user=d;f.type="bug";f.data=e;pa("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function zn(a,b,c){var d,e="none";if(a.G)return null;a.G--;var f=new ce(a,tn),g=new ce(a,tn,"validate"),h=la();C(g,"timestamp",h);C(f,"timestamp",h);C(f,"version","1.21.6");C(f,"url",window?window.location.href:null);C(f,"browser",window?window.navigator.userAgent:"");a.A&&a.A.Ub&&(c&&oc(a.A),d=a.A.Ub(b,c),"object"===typeof d&&C(f,a.A.id,d),c&&(a.A.ea.Rb=!1,!1===d&&(e=null)));for(var h=Ta(a.id),k=0;k<h.length;k++){var m=h[k];m.ea.Rb&&(m.Ub&&(d=m.Ub(b,c),"object"===typeof d&&C(f,m.id,d)),c&&(m.ea.Rb=
|
||||
function zn(a,b,c){var d,e="none";if(a.G)return null;a.G--;var f=new ce(a,tn),g=new ce(a,tn,"validate"),h=la();C(g,"timestamp",h);C(f,"timestamp",h);C(f,"version","1.21.7");C(f,"url",window?window.location.href:null);C(f,"browser",window?window.navigator.userAgent:"");a.A&&a.A.Ub&&(c&&oc(a.A),d=a.A.Ub(b,c),"object"===typeof d&&C(f,a.A.id,d),c&&(a.A.ea.Rb=!1,!1===d&&(e=null)));for(var h=Ta(a.id),k=0;k<h.length;k++){var m=h[k];m.ea.Rb&&(m.Ub&&(d=m.Ub(b,c),"object"===typeof d&&C(f,m.id,d)),c&&(m.ea.Rb=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.C&&An(a,a.C,f.toString()),mn(g)&&mn(f)||(e=null,d=h=!0)):a.B&&(d=!0,h=3==a.B),d&&f.clear(h)):e=f.toString());c&&(a.ea.Rb=!1,b=a.ka.power)&&(b.textContent="Power");a.G=0;return e}l.reset=function(){this.ha&&this.ha.reset&&this.ha.reset();for(var a=Ta(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ha&&c.reset&&c.reset()}};l.start=function(a,b){for(var c=Ta(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
|
||||
l.stop=function(a,b){for(var c=Ta(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
l.zb=function(a,b,c){var d=this;switch(b){case "power":return this.ka[b]=c,c.onclick=function(){d.G||(d.ea.Rb?zn(d,!1,!0):vn(d,d.df))},!0;case "reset":return this.ka[b]=c,c.onclick=function(){if(d.ea.Rb&&!d.G)if(d.B&&!d.P){var a=ra("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");zn(d,a,!0);!a&&d.X?window&&window.location.reload():(a||(d.jg=!0),d.df(rn),d.jg=!1)}else d.reset(),d.A&&nc(d.A)},!0;case "save":if(ha(qa(),"pcjs.org")){c.parentNode.removeChild(c);
|
||||
|
|
@ -616,7 +616,7 @@ break}this.ka[b]=c;c.onclick=function(){var a=sn(d,!0);if(a){var b=!!(d.B&&!d.P|
|
|||
function sn(a,b){var c=a.C;c||(c=wa("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=Bn(a,c))||a.Ba("The user ID is invalid."))):b&&a.Ba("Browser local storage is not available"));return c}
|
||||
function Bn(a,b){a.C=null;var c=pa(qa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(xa("user",c.data),a.C=c.data)}catch(e){n(e.message+" ("+d+")")}return a.C}function un(a){var b=null;a.C&&(b=qa()+"/api/v1/user?req=load&user="+a.C+"&state="+kn(a,tn));return b}
|
||||
function An(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=kn(a,tn);d.data=c;b=pa(qa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Ba("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Ba(c),xa("user",""),a.C=null)}}
|
||||
function kb(a,b,c){a=Ta(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function uc(a,b){if(a.I.length){var c=0,d=0;b&&window&&(c=window.scrollX,d=window.scrollY);var e=a.I[0];e.G&&e.G.focus();b&&window&&window.scrollTo(c,d)}}l.Xd=function(){this.D&&this.D.Xd()};
|
||||
function kb(a,b,c){a=Ta(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function uc(a,b){if(a.I.length){var c=0,d=0;b&&window&&(c=window.scrollX,d=window.scrollY);var e=a.I[0];e.G&&e.G.focus();b&&window&&window.scrollTo(c,d)}}l.Xd=function(a){this.A&&this.A.Xd(a);this.D&&this.D.Xd(a)};
|
||||
function yc(a,b){for(var c=0;c<a.I.length;c++)kl(a.I[c],b);if(a.D&&(c=a.D,c.ua)){ob(c,18,c.P,c.ra);if(c.Ga){var d=c.ha,e=c.B,f,g;null==f&&(f=0);null==g&&(g=d.L-f|0);null==e&&(e={fg:0,hd:0,$f:[]});var h=f>>>d.da;f=f+g-1>>>d.da;e.fg=0;for(e.hd=0;h<=f;)g=d.R[h],e.fg+=g.size,g.size&&(e.$f.push(na(nb,h,0,0,g.type)),e.hd++),h++;c.B=e;c.ma=c.B.hd*c.ha.vb/691200;d=0;c.B.Hh=0;c.B.He||(c.B.He=[]);var e=-1,h=0,k=-1;for(f=0;f<c.B.hd;f++){var m=c.B.$f[f];g=oa(nb.type,m);m=oa(nb.bj,m);if(g!=e||m!=k+1)(k=f-h)&&
|
||||
(d+=qb(c,h,k,e)),e=g,h=f;k=m}d+=qb(c,h,f-h,e);e=c.B.Bj!=d;c.B.Bj=d;if(e){e=new ib(0,0,c.P.width,c.P.height);c.B.ce=[];h=c.B.hd;for(d=0;d<c.B.Hh;d++)f=c.B.He[d].hd,c.B.ce.push(jb(e,f,h,!d)),h-=f;for(d=0;d<c.B.ce.length;d++)e=c.B.He[d],h=f=c.B.ce[d],g=c.ra,(k=Wb[e.type])||(k=new hb),g.strokeStyle="black",g.strokeRect(h.x,h.y,h.Fc,h.A),g.fillStyle="string"==typeof k?k:k.toString(),g.fillRect(h.x,h.y,h.Fc,h.A),h=c,g=f,h.S=h.ia,h.L=h.la,f=g.x+(g.Fc>>1),k=g.y+(g.A>>1),m=g.A,g.Fc<g.A&&(m=g.Fc,h.da=!0,h.G.save(),
|
||||
h.G.translate(f,k),h.G.rotate(-Math.PI/2),f=k=0),m<h.L&&(h.L=m,h.S=h.L+"px Monaco, Lucida Console, Courier New"),g=k,h.D=f,h.K=g,h=c,e=Vb[e.type]+" ("+(e.hd*c.ha.vb/1024|0)+"Kb)",h.G.font=h.S,h.D-=h.G.measureText(e).width>>1,h.K+=(h.L>>1)-2,pb(h,e),h.da&&(h.G.restore(),h.da=!1)}}else pb(c,"This space intentionally left blank");c.context.drawImage(c.P,0,0,c.P.width,c.P.height,c.Oa,c.Xa,c.Da,c.Fa);c.ua=!1}}
|
||||
|
|
@ -627,9 +627,9 @@ function En(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{if(c){Sa(c,b,a);v
|
|||
function Fn(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");pa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Fn(a,b,c)}})}else c(a,null)}
|
||||
function Gn(a,b,c,d){function e(a){if(void 0===h){var b=g&&Za(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ja(a))}function f(a){e("Error: "+a);k&&(--Cn||Ga(!0));k=!1}var g,h,k=!0;Cn++;Ra[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],x=document.createElement("style");x.type="text/css";x.styleSheet?x.styleSheet.cssText=m:x.appendChild(document.createTextNode(m));p.appendChild(x)}c||
|
||||
(c="/versions/pcjs/1.21.6/components.xsl");m=function(d,h){h?Dn(c,null,null,!1,e,function(d,k){if(k)if(Sa(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=h.transformNode(k);m?(g.outerHTML=m,--Cn||Ga(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(k),(m=m.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Cn||Ga(!0)):f("invalid machine element: "+
|
||||
(c="/versions/pcjs/1.21.7/components.xsl");m=function(d,h){h?Dn(c,null,null,!1,e,function(d,k){if(k)if(Sa(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=h.transformNode(k);m?(g.outerHTML=m,--Cn||Ga(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(k),(m=m.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--Cn||Ga(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Dn(b,a,d,!0,e,m):En(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(r){f(r.message)}return k}window.embedPC=function(a,b,c,d){Ga(!1);return Gn(a,b,c,d)};window.enableEvents=Ga;window.sendEvent=Ha;
|
||||
function Hn(a,b,c,d){if(!c&&b){d.push(b);a=Ra[d[0]];b=null;for(var e in a)if(ha(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?pa(b,null,!0,function(a,b){In(b,d)}):In(null,d)}else n("Error ("+c+") requesting "+a)}
|
||||
function In(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Ra[f],k={},m;for(m in h){var p=h[m],x=ga(m);if("xml"==x){for(x=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=x.exec(h[m]);){var r=d[2];r&&(h[r]||(p=p.replace(d[0],"")))}d=m=fa(m)}else"xsl"==x&&(e=m=fa(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(m=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
|
||||
"©"),c=za(c,"javascript",!1,g),c=c+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n'),c+="...\n",c+='<script type="text/javascript" src="'+g+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",n(c)):n("Missing XML/XSL resources")}
|
||||
window.savePC=function(a,b,c){var d=Va("Computer",a),e=Va("Debugger",a);if(d){var f=zn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.21.6/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,fj:g}))return!0;pa(b,null,!0,function(c,d,e){Hn(c,d,e,[a,fa(b,!0),g,f])});return!0}n("Unable to identify machine '"+a+"'");return!1};})();
|
||||
window.savePC=function(a,b,c){var d=Va("Computer",a),e=Va("Debugger",a);if(d){var f=zn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,fj:g}))return!0;pa(b,null,!0,function(c,d,e){Hn(c,d,e,[a,fa(b,!0),g,f])});return!0}n("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue