Save machine finally works
This commit is contained in:
parent
c69f2ee51f
commit
0e3de68273
11 changed files with 1573 additions and 1505 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -10,7 +10,7 @@ function wa(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"
|
|||
function Ea(a){if(za)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){g("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Fa(a){!za&&a?(za=!0,ya&&Ga("init")):za=a}function Ga(a){xa[a]&&Ea(xa[a])}Aa("onload",function(){ya=!0;Ea(xa.init)});Aa("onpageshow",function(){Ea(xa.show)});Aa(wa("Opera")||wa("iOS")?"onunload":"onbeforeunload",function(){Ea(xa.exit)});
|
||||
function Ha(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Ah=b.comment;this.pj=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.mf=this.id.substr(0,b),this.hf=this.id.substr(b+1)):this.hf=this.id;this[a]=c;this.ja={le:!1,Mc:!1,jg:!1,Qb:!1,Yc:!1};this.Df=null;this.ja.Yc=!1;this.pa={};this.Ta=null;Ia.push(this)}var Ja=void 0,Ka={};
|
||||
if(window){Ja||(Ja=window.location.search.substr(1));for(var La,Ma=/\+/g,Na=/([^&=]+)=?([^&]*)/g;La=Na.exec(Ja);)Ka[decodeURIComponent(La[1].replace(Ma," "))]=decodeURIComponent(La[2].replace(Ma," "))}function Oa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function Pa(a,b){b||(b=Ha);a.prototype=Oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Ia=[],Qa={};function Ra(a,b,c){Qa[a]&&(Qa[a][b]=c)}function Sa(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ia.length;b++){var d=Ia[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ta(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<Ia.length;c++)if(Ia[c].id===a)return Ia[c]}return null}
|
||||
function Pa(a,b){b||(b=Ha);a.prototype=Oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Ia=[],Qa={};function Ra(a,b,c){Qa[a]&&b&&(Qa[a][b]=c)}function Sa(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ia.length;b++){var d=Ia[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ta(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<Ia.length;c++)if(Ia[c].id===a)return Ia[c]}return null}
|
||||
function Ua(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<Ia.length;d++)if(c)c==Ia[d]&&(c=null);else if(!(a!=Ia[d].type||b&&Ia[d].id.indexOf(b)))return Ia[d]}return null}function Va(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){g(c.message+" ("+a+")")}return b}function Wa(a,b,c){var d;b&&(void 0===d&&(d="Panel"),(d=Ua(d,a.id))&&(b=d.pa[b])&&a.Eb(null,c,b))}document&&!document.ELEMENT_NODE&&(document.ELEMENT_NODE=1);
|
||||
function Xa(a,b){for(var c=Ya(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,k=0;k<e.length;k++){var l=e[k];if(l.nodeType===document.ELEMENT_NODE){var p=l.getAttribute("class");if(p)for(var q=p.split(" "),v=0;v<q.length;v++)switch(p=q[v],p){case "pcjs-binding":(p=Va(l))&&p.binding&&a.Eb(p.type,p.binding,l,p.value),v=q.length}}}}
|
||||
function Ya(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
|
|
@ -49,7 +49,7 @@ b)},Ob:function(a,b,c){Yb(this.A,c,!0).dc(a,b,c)},Nc:function(a,b,c){Yb(this.A,c
|
|||
1]},Ca:function(a){return this.O.getInt32(a,!0)},Fa:function(a){return a&3?this.Pa[a]|this.Pa[a+1]<<8|this.Pa[a+2]<<16|this.Pa[a+3]<<24:this.aa[a>>2]},Ka:function(a){this.B.aa[this.F]|=32;this.D.aa[this.H]|=32;return a&3?this.Pa[a]|this.Pa[a+1]<<8|this.Pa[a+2]<<16|this.Pa[a+3]<<24:this.aa[a>>2]},vb:function(a,b){this.Pa[a]=b;this.Oa=!0},Ab:function(a,b){this.Pa[a]=b;this.Oa=!0},Ib:function(a,b){this.Pa[a]=b;this.B.aa[this.F]|=32;this.D.aa[this.H]|=96;this.T.Oa=!0},vc:function(a,b){this.O.setUint16(a,
|
||||
b,!0);this.Oa=!0},xc:function(a,b){a&1?(this.Pa[a]=b,this.Pa[a+1]=b>>8):this.sd[a>>1]=b;this.Oa=!0},Fc:function(a,b){a&1?(this.Pa[a]=b,this.Pa[a+1]=b>>8):this.sd[a>>1]=b;this.B.aa[this.F]|=32;this.D.aa[this.H]|=96;this.T.Oa=!0},Pb:function(a,b){this.O.setInt32(a,b,!0);this.Oa=!0},kc:function(a,b){a&3?(this.Pa[a]=b,this.Pa[a+1]=b>>8,this.Pa[a+2]=b>>16,this.Pa[a+3]=b>>24):this.aa[a>>2]=b;this.Oa=!0},jc:function(a,b){a&3?(this.Pa[a]=b,this.Pa[a+1]=b>>8,this.Pa[a+2]=b>>16,this.Pa[a+3]=b>>24):this.aa[a>>
|
||||
2]=b;this.B.aa[this.F]|=32;this.D.aa[this.H]|=96;this.T.Oa=!0}};function rb(a,b,c){a.Ta=b;a.ee=a.fe=0;c&&(c.A&&(a.A=c.A),(a.ee=c.ee)&&Zb(a,$b,!1),(a.fe=c.fe)&&ac(a,$b,!1))}function ac(a,b,c){c&&a.fe||(a.dc=!a.K&&b[3]||a.Z,a.lf=!a.K&&b[4]||a.oa,a.kf=!a.K&&b[5]||a.pa);if(c||void 0===c)a.jf=b[3]||a.Z,a.qh=b[4]||a.oa,a.ka=b[5]||a.pa}function Zb(a,b,c){c&&a.ee||(a.cc=b[0]||a.ha,a.cf=b[1]||a.ta,a.Rd=b[2]||a.da);if(c||void 0===c)a.Bd=b[0]||a.ha,a.df=b[1]||a.ta,a.kh=b[2]||a.da}
|
||||
function Db(a,b,c){b||(b=5==a.type?bc:6==a.type?dc:ec);Zb(a,b,c);ac(a,b,c)}var ec=[],Jb=[h.prototype.ua,h.prototype.Wa,h.prototype.Ja,h.prototype.Fb,h.prototype.yc,h.prototype.lc],$b=[h.prototype.qa,h.prototype.Qa,h.prototype.Da,h.prototype.wb,h.prototype.wc,h.prototype.Vb],dc=[h.prototype.xa,h.prototype.fb,h.prototype.La,h.prototype.Jb,h.prototype.Gc,h.prototype.mc],bc=[h.prototype.ya,h.prototype.kb,h.prototype.Ma,h.prototype.Ob,h.prototype.Nc,h.prototype.rc];
|
||||
function Db(a,b,c){b||(b=5==a.type?bc:6==a.type?cc:ec);Zb(a,b,c);ac(a,b,c)}var ec=[],Jb=[h.prototype.ua,h.prototype.Wa,h.prototype.Ja,h.prototype.Fb,h.prototype.yc,h.prototype.lc],$b=[h.prototype.qa,h.prototype.Qa,h.prototype.Da,h.prototype.wb,h.prototype.wc,h.prototype.Vb],cc=[h.prototype.xa,h.prototype.fb,h.prototype.La,h.prototype.Jb,h.prototype.Gc,h.prototype.mc],bc=[h.prototype.ya,h.prototype.kb,h.prototype.Ma,h.prototype.Ob,h.prototype.Nc,h.prototype.rc];
|
||||
if(cb)var Ib=[h.prototype.na,h.prototype.Na,h.prototype.Ca,h.prototype.vb,h.prototype.vc,h.prototype.Pb],Hb=[h.prototype.sa,h.prototype.Va,h.prototype.Fa,h.prototype.Ab,h.prototype.xc,h.prototype.kc],fc=[h.prototype.va,h.prototype.ab,h.prototype.Ka,h.prototype.Ib,h.prototype.Fc,h.prototype.jc];
|
||||
function gc(a,b){Ha.call(this,"CPU",a,gc);var c=a.cycles||b,d=a.multiplier||1;this.Y={};this.Y.Zc=c;this.Y.zd=d;this.Y.Ff=Math.round(this.Y.Zc/1E4)/100;this.Y.re=this.Y.Ff*this.Y.zd;this.ja.Rb=!1;this.ja.Rh=!1;this.ja.ig=a.autoStart;this.ja.Qh=!1;c=Ka.autostart;void 0!==c&&(this.ja.ig="true"==c?!0:"false"==c?!1:null);this.ja.Bf=!1;this.Y.Hf=this.Y.te=0;this.Y.If=a.csStart;this.Y.Ke=a.csInterval;this.Y.Le=a.csStop;this.Vd=[];this.Aj=this.oh.bind(this);$a(this)}Pa(gc);var hc=["power","reset"];f=gc.prototype;
|
||||
f.nc=function(a,b,c,d){this.ta=a;this.oa=b;this.Ta=d;for(b=0;b<hc.length;b++)(c=this.pa[hc[b]])&&this.ta.Eb(null,hc[b],c);this.ld=jb(a,"FPU");for(b=null;b=jb(a,"Video",b);)this.Vd.push(b);this.T=jb(a,"ChipSet");$a(this)};f.reset=function(){};f.save=function(){return null};f.restore=function(){return!1};f.Tb=function(a,b){if(!b){if(a&&this.restore){ic(this);if(!this.restore(a))return!1;jc(this)}else this.reset();this.pc("No debugger detected")}kc(this);return!0};
|
||||
|
|
@ -81,11 +81,11 @@ r(d,d.la(p+l)));c&&d.gb(p+0,k);d.Ua|=8;return!0}f.save=function(){return[this.ra
|
|||
function yc(a,b,c,d){void 0===c&&(c=!!(a.A.Ua&1));a.wd=!1;if(c)if(a.load=a.Ef,a.Wh=a.Vk,a.gc=a.Jh,a.hc=a.Lh,void 0===d&&(d=!!(a.A.ca&131072)),d)a.load=a.T,a.gc=a.K,a.hc=a.N,a.Cb=a.uc=3,a.ba=a.Uc=2,a.C=a.wa=65535,a.cb=65535,a.D=a.cb+1,a.Uc=a.ba,a.fc=-1,a.ne=!1;else{if(!(a.ra&-4))a.gc=a.yf,a.hc=a.zf;else if(a.type&4096){6144==(a.type&6656)&&(a.gc=a.yf);if(a.type&2048||!(a.type&512))a.hc=a.zf;1024==(a.type&3072)&&(a.gc==a.Jh&&(a.gc=a.Cj),a.hc==a.Lh&&(a.hc=a.Dj),a.wd=!0);b&&6>a.id&&a.ra&-4&&-1!==a.fc&&
|
||||
(c=a.fc+5,d=a.A.Lb(c),d&1||a.A.Kc(c,d|1))}b&&(a.Cb=a.ra&3,a.uc=(a.rb&24576)>>13,80386>a.A.ia||!(a.ext&64)?(a.ba=2,a.C=65535):(a.ba=4,a.C=-1),a.Uc=a.ba,a.wa=a.C)}else a.load=a.Xh,a.Wh=a.Wk,a.gc=a.Kh,a.hc=a.Mh,a.Cb=a.uc=0,a.fc=-1,a.ne=!1}
|
||||
function Qc(a){this.ia=a.model||8088;var b=a.stepping;this.fd=this.ia+(b?ca(b,16):0);b=0;switch(this.ia){default:b=4772727;break;case 80286:b=6E6;break;case 80386:b=16E6}gc.call(this,a,b);this.sh=61442;this.ed=1792;this.rh=28672;this.nf=4;this.Ja=255;this.D=80286<=this.ia?eb:db;this.qa=Rc;this.vh=Sc;this.wh=Tc;this.xh=Uc;if(80186<=this.ia&&(this.qa=Rc.slice(),this.vh=Sc.slice(),this.wh=Tc.slice(),this.Ja=31,this.qa[15]=Vc,this.qa[96]=Wc,this.qa[97]=Xc,this.qa[98]=Yc,this.qa[99]=Vc,this.qa[100]=Vc,
|
||||
this.qa[101]=Vc,this.qa[102]=Vc,this.qa[103]=Vc,this.qa[104]=Zc,this.qa[105]=$c,this.qa[106]=ad,this.qa[107]=bd,this.qa[108]=cd,this.qa[109]=dd,this.qa[110]=ed,this.qa[111]=fd,this.qa[192]=gd,this.qa[193]=hd,this.qa[200]=id,this.qa[201]=jd,this.qa[241]=kd,this.vh[7]=ld,this.wh[7]=ld,80286<=this.ia)){this.sh=2;this.ed|=28672;this.nf=0;this.qa[15]=md;this.Fc=nd.slice();for(a=0;a<this.Fc.length;a++)this.Fc[a]||(this.Fc[a]=od);this.qa[84]=pd;this.qa[99]=rd;if(80386<=this.ia){var c;this.rh=0;this.ed|=
|
||||
this.qa[101]=Vc,this.qa[102]=Vc,this.qa[103]=Vc,this.qa[104]=Zc,this.qa[105]=$c,this.qa[106]=ad,this.qa[107]=bd,this.qa[108]=cd,this.qa[109]=dd,this.qa[110]=ed,this.qa[111]=fd,this.qa[192]=gd,this.qa[193]=hd,this.qa[200]=id,this.qa[201]=jd,this.qa[241]=kd,this.vh[7]=ld,this.wh[7]=ld,80286<=this.ia)){this.sh=2;this.ed|=28672;this.nf=0;this.qa[15]=md;this.Fc=nd.slice();for(a=0;a<this.Fc.length;a++)this.Fc[a]||(this.Fc[a]=od);this.qa[84]=pd;this.qa[99]=qd;if(80386<=this.ia){var c;this.rh=0;this.ed|=
|
||||
196608;this.qa[100]=sd;this.qa[101]=td;this.qa[102]=ud;this.qa[103]=vd;for(c in w)this.Fc[+c]=w[c];80546<=this.fd&&80562>=this.fd&&(this.Fc[166]=wd,this.Fc[167]=xd)}}this.qf=[];this.uh=[];this.Yf=0;ic(this);this.ja.Ie=this.ja.Mj=!1;this.zh=0;this.rc=this.W=[];this.ha=this.yb=this.ab=this.of=this.Xd=this.La=this.lc=0;yd(this)}Pa(Qc,gc);
|
||||
function zb(a){var b;if(a.W===a.rc){a.W=Array(a.of);a.rf=new h(null,0,0,5,null,a);rb(a.rf,a.Ta);for(b=0;b<a.of;b++)a.W[b]=a.rf;a.Yd=new h;a.th=Array(512);a.sf=0}else for(var c=0;c<a.pf.length;c++){b=a.pf[c];var d=a.W[b];512>a.sf&&(a.th[a.sf++]=d);a.W[b]=a.rf}a.pf=[]}
|
||||
function Yb(a,b,c,d){var e=(b&-4194304)>>>20,k=a.rc[(a.Nc+e&a.La)>>>a.ha],l=k.Rd(e);if(!(l&1))return d||zd.call(a,b,!1,c),a.Yd;if(!(l&4)&&3==a.Fa)return d||zd.call(a,b,!0,c),a.Yd;var p=(b&4190208)>>>10,l=a.rc[((l&-4096)+p&a.La)>>>a.ha],q=l.Rd(p);if(!(q&1))return d||zd.call(a,b,!1,c),a.Yd;if(!(q&4)&&3==a.Fa)return d||zd.call(a,b,!0,c),a.Yd;c=a.rc[((q&-4096)+(b&4095)&a.La)>>>a.ha];if(d)return c;d=b>>>a.ha;q=a.W[d];b=b&-4096;var v;0<a.sf?(v=a.th[--a.sf],v.Sk(b)):v=new h(b,0,0,6);b=v;b.T=c;b.B=k;b.F=
|
||||
e>>2;b.D=l;b.H=p>>2;cb&&Gb&&c.aa&&!c.controller&&!c.ee&&!c.fe?(b.Pa=c.Pa,b.sd=c.sd,b.aa=c.aa,Db(b,fc)):(b.N=c?Wb(32):0,b.W=c?Wb(96):0,Db(b,dc));rb(b,a.Ta,q);a.W[d]=b;a.pf.push(d);return b}function Ad(a){a.W!==a.rc&&(a.W=a.rc,a.rf=null,a.pf=null,a.Yd=null)}f=Qc.prototype;f.reset=function(){this.ja.Rb&&oc(this);yd(this);ic(this);this.ja.Yc=!1};
|
||||
e>>2;b.D=l;b.H=p>>2;cb&&Gb&&c.aa&&!c.controller&&!c.ee&&!c.fe?(b.Pa=c.Pa,b.sd=c.sd,b.aa=c.aa,Db(b,fc)):(b.N=c?Wb(32):0,b.W=c?Wb(96):0,Db(b,cc));rb(b,a.Ta,q);a.W[d]=b;a.pf.push(d);return b}function Ad(a){a.W!==a.rc&&(a.W=a.rc,a.rf=null,a.pf=null,a.Yd=null)}f=Qc.prototype;f.reset=function(){this.ja.Rb&&oc(this);yd(this);ic(this);this.ja.Yc=!1};
|
||||
function Bd(a,b){var c;switch(b){case 0:c=a.G;break;case 1:c=a.F;break;case 2:c=a.I;break;case 3:c=a.B;break;case 4:c=t(a);break;case 5:c=a.K;break;case 6:c=a.J;break;case 7:c=a.H}return c}function Cd(a,b,c){switch(b){case 0:a.G=c;break;case 1:a.F=c;break;case 2:a.I=c;break;case 3:a.B=c;break;case 4:r(a,c);break;case 5:a.K=c;break;case 6:a.J=c;break;case 7:a.H=c}}
|
||||
function yd(a){a.G=0;a.B=0;a.F=0;a.I=0;a.Ob=0;a.K=0;a.J=0;a.H=0;a.Jb=!1;a.ya=a.Ma=0;a.mc=0;a.yh=0;a.kd=0;a.Ua=65520;a.Ab=0;a.xc=1023;a.ca=a.Fb=0;a.qd=a.Gd=a.pd=a.Dd=0;a.Vb=-1;a.nd=a.Zd=-1;a.Qd=a.sa=-1;a.Ia=new xc(a,1,"CS");a.Ca=new xc(a,2,"DS");a.va=new xc(a,2,"ES");a.Z=new xc(a,3,"SS");r(a,0);Cc(a,0);if(80386<=a.ia){switch(a.fd){case 80562:case 80563:a.I=771;break;case 80578:a.I=772;break;case 80594:a.I=773;break;case 80595:case 80596:a.I=776}a.Ua=16;a.Ch=0;a.od=0;a.Nc=0;a.fb=[0,0,0,0,null,null,
|
||||
0,0];a.tf=[null,null,null,null,null,null,0,0];a.Qa=new xc(a,2,"FS");a.Va=new xc(a,2,"GS");Ad(a)}a.ag=new xc(a,0,"NULL");a.O=a.Ca;a.S=a.Z;a.N=a.Ba=0;a.U=a.na=-1;a.Pc=a.ag;a.Ka=0;if(80286>a.ia)Nc(a,0,65535);else{a.kb=0;a.wc=65535;a.Pb=new xc(a,5,"LDT",!0);a.ka=new xc(a,4,"TSS",!0);a.Na=new xc(a,6,"VER",!0);Nc(a,65520,61440);var b,c=u(a);b=a.Ia;var d=-65536;80386>b.A.ia&&(d&=16777215);b=b.Ea=d;a.da=b+c|0;a.Zf=b+a.Ia.cb|0}Mc(a,0);Ec(a)}
|
||||
|
|
@ -174,7 +174,7 @@ function yh(){this.A-=-1===this.U?2:this.D.$i;return 1}function zh(){var a=this.
|
|||
function m(a,b,c,d){var e=!1;this.ja.Ie?80186<=this.ia&&(e=!0,0>this.Vb?(-1!=this.nd&&(this.Ia.Cb=3,Vd(this,this.nd),this.nd=-1),Wd(this,this.Qd),-1!=this.Zd&&(Cc(this,this.Zd),this.Zd=-1),-1!==this.sa&&(r(this,this.Ob&~this.Z.wa|this.sa-this.Z.Ea),this.sa=-1)):8!=this.Vb?(b=0,a=8):(b=0,a=-1,yd(this),e=d=!1)):Wd(this,this.Qd);var k=a,l=b,p=se(this,this.da);204!=p||this.xc||(d=!1);this.ca&131072&&(6==k&&99==p||13==k&&205==p)&&(d=!1);983040<=this.da&&1048575>=this.da&&(d=!1);if(d){var q=this.ja.Rb,
|
||||
k="Fault 0x"+da(k,2)+(null!=l?" (0x"+da(l,4)+")":"")+" on opcode "+("0x"+da(p,2));d&&q&&(k+=" (blocked by PCjs Debugger)");this.Ha(k);oc(this)}if(d&&e)throw-1;if(e)throw this.Vb=a,tg.call(this,a,b,c),this.Qd=this.da,this.N=1==a?this.N|8192:this.N|4096,a;}function zd(a,b,c){this.od=a;a=0;b&&(a|=1);c&&(a|=2);3==this.Fa&&(a|=4);m.call(this,14,a)}function md(){this.Fc[this.X()].call(this)}function pd(){Kc(this,t(this)&this.C);this.A-=this.D.zc}
|
||||
function Wc(){this.sa=this.xa;var a=t(this)&this.C;Kc(this,this.G&this.C);Kc(this,this.F&this.C);Kc(this,this.I&this.C);Kc(this,this.B&this.C);Kc(this,a);Kc(this,this.K&this.C);Kc(this,this.J&this.C);Kc(this,this.H&this.C);this.A-=this.D.Ui;this.sa=-1}
|
||||
function Xc(){this.sa=this.xa;this.H=this.H&~this.C|n(this);this.J=this.J&~this.C|n(this);this.K=this.K&~this.C|n(this);r(this,t(this)+this.ba);this.B=this.B&~this.C|n(this);this.I=this.I&~this.C|n(this);this.F=this.F&~this.C|n(this);this.G=this.G&~this.C|n(this);this.A-=this.D.Si;this.sa=-1}function Yc(){this.ua[this.X()].call(this,Vf)}function rd(){!(this.Ua&1)||this.ca&131072?m.call(this,6):this.Da[this.X()].call(this,Uf)}function sd(){this.N|=20;this.O=this.S=this.Qa;this.A-=this.D.Oc}
|
||||
function Xc(){this.sa=this.xa;this.H=this.H&~this.C|n(this);this.J=this.J&~this.C|n(this);this.K=this.K&~this.C|n(this);r(this,t(this)+this.ba);this.B=this.B&~this.C|n(this);this.I=this.I&~this.C|n(this);this.F=this.F&~this.C|n(this);this.G=this.G&~this.C|n(this);this.A-=this.D.Si;this.sa=-1}function Yc(){this.ua[this.X()].call(this,Vf)}function qd(){!(this.Ua&1)||this.ca&131072?m.call(this,6):this.Da[this.X()].call(this,Uf)}function sd(){this.N|=20;this.O=this.S=this.Qa;this.A-=this.D.Oc}
|
||||
function td(){this.N|=20;this.O=this.S=this.Va;this.A-=this.D.Oc}function ud(){this.N|=1024;this.Ba&1024||(this.ba^=6,this.C^=-65536,Nd(this));this.A-=this.D.Oc}function vd(){this.N|=2048;this.Ba&2048||(this.Uc^=6,this.wa^=-65536,Ed(this));this.A-=this.D.Oc}function Zc(){Kc(this,this.Ga());this.A-=this.D.zc}function $c(){this.ua[this.X()].call(this,og)}function ad(){Kc(this,this.L());this.A-=this.D.zc}function bd(){this.ua[this.X()].call(this,mg)}
|
||||
function cd(){var a=1,b=0,c=this.wa,d=5;this.Ba&192&&(a=this.F&c,b=1,this.Ba&256&&(d=4));if(a--){var e=this.I&65535;re(this,e,1)&&(e=Nb(this.oa,e,1,this.da-b-1),this.Kc(this.va.hc(this.H&c,1),e),this.H=this.H&~c|this.H+(this.ca&1024?-1:1)&c,this.F=this.F&~c|this.F-b&c,this.A-=d,a&&(Yd(this),this.N|=256))}}
|
||||
function dd(){var a=1,b=0,c=this.wa,d=5;this.Ba&192&&(a=this.F&c,b=1,this.Ba&256&&(d=4));if(a--){var e=this.I&65535;re(this,e,this.ba)&&(e=Nb(this.oa,e,this.ba,this.da-b-1),this.Ub(this.va.hc(this.H&c,this.ba),e),this.H=this.H&~c|this.H+(this.ca&1024?-this.ba:this.ba)&c,this.F=this.F&~c|this.F-b&c,this.A-=d,a&&(Yd(this),this.N|=256))}}
|
||||
|
|
@ -899,8 +899,8 @@ f.yj=function(a,b,c){if(c)this.Ha("Unable to load font ROM (error "+c+": "+a+")"
|
|||
function $k(a,b){if(1==b)return a.ua[0]=xk[0],a.ua[1]=xk[7],a.ua;if(2==b){var c=a.F.ef;if(a.F===a.B){var d=a.B.Ic[0],c=d&7;d&16&&(c|=8);18!=a.B.Ic[1]&&(c|=32)}a.ua[0]=xk[c&15];c=c&32?zk:yk;for(d=0;d<c.length;d++)a.ua[d+1]=xk[c[d]];return a.ua}if(a.S===a.Jb)return xk;a.Va&&b&&!a.ua[16]&&(a.Va=!1);if(!a.Va){var c=a.B,d=c.we,e,k,l,p,q;if(8==b)for(k=0;256>k;k++)l=d[k]||0,p=l<<2&252,q=l>>4&252,l=l>>10&252,a.ua[k]=[p,q,l,255];else{var v=d&&d[255];e=null!=c.Ic[15]?c.Ic:Ak;for(k=0;16>k;k++)l=e[k]&63,v?(l|=
|
||||
(c.Ic[20]&12)<<4,c.Ic[16]&128&&(l&=-49,l|=(c.Ic[20]&3)<<4),l=d[l],p=l<<2&252,q=l>>4&252,l=l>>10&252):(p=(l&4?170:0)|(l&32?85:0),q=(l&2?170:0)|(l&16?85:0),l=(l&1?170:0)|(l&8?85:0)),a.ua[k]=[p,q,l,255]}a.Va=!0}return a.ua}function Kj(a,b,c,d){a.Fb=b;a.kc=c;a.Qa=d}
|
||||
function Wk(a,b){var c=!1;if(window&&a.Fb&&(!b||a.K)){var d=0,e=a.Qa?a.Qa:8,k=$k(a);al(a,3,a.kc[0],d,e,8,a.Fb,k)&&(c=!0);d=a.Qa?0:2048;e=a.Qa?a.Qa:9;al(a,1,a.kc[1],d,e,14,a.Fb,vk,wk)&&(c=!0);a.Qa&&al(a,a.nb,a.kc[1],0,a.Qa,14,a.Fb,k)&&(c=!0)}return c}function al(a,b,c,d,e,k,l,p,q){var v=!1;null!=c&&(bl(a,b,c,d,e,k,l,p,q)&&(v=!0),a.Xd&&bl(a,b<<1,c,d,e,k,l,p,q)&&(v=!0));return v}
|
||||
function bl(a,b,c,d,e,k,l,p,q){var v=!1,B=b&1?0:1,G=a.Fa[b],C=16>p.length?p.length:16;G||(G={sc:e<<B,tc:k<<B,$d:Array(C),Dh:p.slice(0,C),De:q,cg:Array(C)});for(q=0;q<C;q++){var K=p[q],V=G.$d[q]?G.Dh[q]:[];if(K[0]!==V[0]||K[1]!==V[1]||K[2]!==V[2]){var v=G,V=q,X=B,ja=c,ka=d,Ba=e,Ca=k,qd=l,Im=[0,0,0,0],xe=document.createElement("canvas");xe.width=v.sc<<4;xe.height=v.tc<<4;for(var ej=xe.getContext("2d"),Cb=void 0,Oc=void 0,cc=void 0,ye=8>Ca||!ka?Ca:8,Mf=ej.createImageData(v.sc,v.tc),Cb=0;256>Cb;Cb++){for(cc=
|
||||
0;cc<Ca;cc++)for(var Jm=v.De&&V&1&&cc>=Ca-2,Km=qd[cc<ye?ja+Cb*ye+cc:ka+Cb*ye+cc-ye],Nf=0;Nf<=X;Nf++)for(Oc=0;Oc<Ba;Oc++){var fj=Oc<<X,gj=(cc<<X)+Nf,hj=Jm||Km&128>>(8<=Oc&&192<=Cb&&223>=Cb?7:Oc)?K:Im;cl(Mf,fj,gj,hj);X&&cl(Mf,fj+1,gj,hj)}ej.putImageData(Mf,(Cb&15)*v.sc,(Cb>>4)*v.tc)}v.$d[V]="#"+da(K[0],2)+da(K[1],2)+da(K[2],2);v.Dh[V]=K;v.cg[V]=xe;v=!0}}a.Fa[b]=G;return v}function dl(a){0<a.Ja||0<=a.ha?0>a.La&&(a.La=0):a.La=-1}
|
||||
function bl(a,b,c,d,e,k,l,p,q){var v=!1,B=b&1?0:1,G=a.Fa[b],C=16>p.length?p.length:16;G||(G={sc:e<<B,tc:k<<B,$d:Array(C),Dh:p.slice(0,C),De:q,cg:Array(C)});for(q=0;q<C;q++){var K=p[q],V=G.$d[q]?G.Dh[q]:[];if(K[0]!==V[0]||K[1]!==V[1]||K[2]!==V[2]){var v=G,V=q,X=B,ja=c,ka=d,Ba=e,Ca=k,rd=l,Jm=[0,0,0,0],xe=document.createElement("canvas");xe.width=v.sc<<4;xe.height=v.tc<<4;for(var ej=xe.getContext("2d"),Cb=void 0,Oc=void 0,dc=void 0,ye=8>Ca||!ka?Ca:8,Mf=ej.createImageData(v.sc,v.tc),Cb=0;256>Cb;Cb++){for(dc=
|
||||
0;dc<Ca;dc++)for(var Km=v.De&&V&1&&dc>=Ca-2,Lm=rd[dc<ye?ja+Cb*ye+dc:ka+Cb*ye+dc-ye],Nf=0;Nf<=X;Nf++)for(Oc=0;Oc<Ba;Oc++){var fj=Oc<<X,gj=(dc<<X)+Nf,hj=Km||Lm&128>>(8<=Oc&&192<=Cb&&223>=Cb?7:Oc)?K:Jm;cl(Mf,fj,gj,hj);X&&cl(Mf,fj+1,gj,hj)}ej.putImageData(Mf,(Cb&15)*v.sc,(Cb>>4)*v.tc)}v.$d[V]="#"+da(K[0],2)+da(K[1],2)+da(K[2],2);v.Dh[V]=K;v.cg[V]=xe;v=!0}}a.Fa[b]=G;return v}function dl(a){0<a.Ja||0<=a.ha?0>a.La&&(a.La=0):a.La=-1}
|
||||
function Zk(a){if(a.K){for(var b=10;15>=b;b++)if(null==a.F.jb[b])return;var c=a.F.jb[10],b=c&31,d=a.F.jb[11]&31,e=a.F.jb[9]&31,k=!1;a.F===a.B&&(k=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!k||b>e)el(a);else{c=a.F.jb[15]+((a.F.jb[14]&63)<<8);a.ha!=c&&(el(a),a.ha=c);d=d-b+1;if(a.qd!=b||a.Nc!=d)a.qd=b,a.Nc=d;a.Ka=e+1;dl(a)}}}
|
||||
function el(a){if(0<=a.ha){if(void 0!==a.W){var b=a.W[a.ha];if(b&131072){var b=b&-131073,c=a.ha%a.H,d=a.ha/a.H|0;a.K&&a.Fa[a.K]&&(a.Na&&fl(a,c,d,b,a.Na),fl(a,c,d,b));a.W[a.ha]=b}}a.ha=-1}}
|
||||
function gl(a){var b,c=a.F;a.ed=!1;var d=c.Cd[5];if(null!=d){b=1024;var e=0,k=c.Cd[3]&31;switch(d&3){case 0:if(k){e=32;switch(k&24){case 8:e=96;break;case 16:e=160;break;case 24:e=224}c.Hc=k&7}break;case 1:e=1;break;case 2:switch(k&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.nb==Lj&&(e=3,c.Hc=k&7)}d&8&&(b=1280);c=c.ye[4];null!=c&&(c&4||(b|=4096,e|=16),d&64&&(c&8&&(b|=16384,e|=4),a.ed=!0));b|=e}return b}
|
||||
|
|
@ -914,7 +914,7 @@ function fl(a,b,c,d,e){var k=d&255,l=d>>8;d=l&15;var p=a.Fa[a.K];p.De&&(d=p.De[d
|
|||
e.fillRect(b,c+k,p.sc,l)):(a.Ka&&a.Ka!==a.Ca&&(k=k*a.Ca/a.Ka|0,l=l*a.Ca/a.Ka|0),a.da.fillStyle=p.$d[d],a.da.fillRect(b,c+k,a.ya,l)))}
|
||||
function nc(a,b){if(a.ja.Qb){var c=!1,d=a.F;d&&(d!==a.B?d.Jc&8&&(c=!0):d.Sd&32&&(c=!0));if(c||b){if(b)jl(a);else if(void 0===a.W)return;var e=!1;!(b||++a.Dd&15)&&0<=a.La&&(a.La++,e=!0);var k=0,l=a.ld,p=a.hb,c=p,q=c+a.Hb;19<=a.Da&&(p=c=655360,q=c+65536);if(kl(a,d)&8||d.ve&&d.ve<d.ih)d.af=(d.jb[12]<<8)+d.jb[13]|0,d.ve=0;var v=d.af;a.K&&(v<<=1);c+=v;v=a.fb;5<=a.nb&&d.jb[19]&&d.jb[19]<<1!=d.jb[1]+1&&(a.ab=d.jb[19]<<(a.K?1:d.jb[20]&64?3:4),v=(a.ab*(a.O-1)+a.H)/a.Pb|0,a.Da<=qk&&(v<<=1));c+v>q&&(v=q-c,0>
|
||||
v&&(v=0));q=c+v;if(d=!b&&a.xa){for(var d=a.oa,B=!0,G=c>>>d.ha;0<v&&G<d.W.length;)d.W[G].Oa&&(d.W[G].Oa=B=!1,d.W[G].Ph=!0),v-=d.yb,G++;d=B}if(d){if(!e)return;if(!a.Ja){if(0>a.ha)return;k=a.ha;l=k+1}}if(a.K){if(a.Fa[a.K]){e=0;p=a.Ja=0;d=1048575;v=a.F.Jc&32;5<=a.nb&&(v=a.F.Ic[16]&8);v&&(p=32768,d&=~p,a.La&2||(d&=-65537));for(c+=k<<1;c<q&&k<l;)v=Kb(a.oa,c),v|=65536,v&p&&(a.Ja++,v&=d),k==a.ha&&(v|=a.La&1?131072:0),a.xa&&v===a.W[k]||(fl(a,k%a.H,k/a.H|0,v,a.Na),a.W[k]=v,e++),c+=2,k++;a.xa=!0;e&&a.Na&&a.da.drawImage(a.Ma,
|
||||
0,0,a.kb,a.vb,a.Fc,a.Gc,a.mc,a.rc);dl(a)}}else if(a.jc){for(var l=q,C,q=c,k=a.Ja=0,e=a.Pb,p=16==e?65536:196608,d=16==e?1:2,v=$k(a,d),G=B=0,K=a.H,V=0,X=a.O,ja=0;q<l;){C=Kb(a.oa,q);if(a.xa&&C===a.W[k])B+=e;else{a.W[k]=C;C=C>>8|(C&255)<<8;var ka=p,Ba=16;B<K&&(K=B);for(var Ca=0;Ca<e;Ca++){var qd=(C&(ka>>=d))>>(Ba-=d);cl(a.Wa,B++,G,v[qd])}B>V&&(V=B);G<X&&(X=G);G>=ja&&(ja=G+1)}q+=2;k++;if(B>=a.H){B=0;G+=2;if(G>a.O)break;G==a.O&&(G=1,q=c+a.jc)}}a.xa=!0;K<a.H&&(a.Na.putImageData(a.Wa,0,0,K,X,V-K,ja-X),a.da.drawImage(a.Ma,
|
||||
0,0,a.kb,a.vb,a.Fc,a.Gc,a.mc,a.rc);dl(a)}}else if(a.jc){for(var l=q,C,q=c,k=a.Ja=0,e=a.Pb,p=16==e?65536:196608,d=16==e?1:2,v=$k(a,d),G=B=0,K=a.H,V=0,X=a.O,ja=0;q<l;){C=Kb(a.oa,q);if(a.xa&&C===a.W[k])B+=e;else{a.W[k]=C;C=C>>8|(C&255)<<8;var ka=p,Ba=16;B<K&&(K=B);for(var Ca=0;Ca<e;Ca++){var rd=(C&(ka>>=d))>>(Ba-=d);cl(a.Wa,B++,G,v[rd])}B>V&&(V=B);G<X&&(X=G);G>=ja&&(ja=G+1)}q+=2;k++;if(B>=a.H){B=0;G+=2;if(G>a.O)break;G==a.O&&(G=1,q=c+a.jc)}}a.xa=!0;K<a.H&&(a.Na.putImageData(a.Wa,0,0,K,X,V-K,ja-X),a.da.drawImage(a.Ma,
|
||||
0,0,a.H,a.O,0,0,a.na,a.va))}else if(a.ed){l=p;e=a.Ja=0;p=$k(a,8);d=a.F.rd;B=v=0;G=a.H;K=0;V=a.O;X=0;ja=a.F.ye[4]&8?4:1;C=a.F.Ic[19]&15;for(ka=a.ab>a.H?a.ab-a.H-C>>3:0;c<q;){k=d[c-l];Ca=4;C||(a.xa&&k===a.W[e]?(v+=Ca,Ca=0):a.W[e]=k,e++);if(Ca){v<G&&(G=v);for(Ba=0;Ba<Ca;Ba++)cl(a.Wa,v++,B,p[k&255]),k>>=8;v>K&&(K=v);B<V&&(V=B);B>=X&&(X=B+1)}c+=ja;if(v>=a.H){v=0;if(++B>a.O)break;c+=ka}}C||(a.xa=!0);G<a.H&&(a.Na.putImageData(a.Wa,0,0,G,V,K-G,X-V),a.da.drawImage(a.Ma,0,0,a.H,a.O,0,0,a.na,a.va))}else{l=p;
|
||||
k=a.Ja=0;e=$k(a);p=a.F.rd;v=d=0;B=a.H;G=0;K=a.O;V=0;X=a.F.Ic[19]&15;for(ja=a.ab>a.H?a.ab-a.H-X>>3:0;c<q;){C=c++-l;C=p[C];Ba=8;X?d?(ka=a.H-d,Ba>ka&&(Ba=ka)):(C<<=X,Ba-=X,a.xa=!1):(a.xa&&C===a.W[k]?(d+=Ba,Ba=0):a.W[k]=C,k++);if(Ba){d<B&&(B=d);for(ka=0;ka<Ba;ka++)Ca=Ck[C&-2139062144]||0,cl(a.Wa,d++,v,e[Ca]),C<<=1;d>G&&(G=d);v<K&&(K=v);v>=V&&(V=v+1)}if(d>=a.H){d=0;if(++v>a.O)break;c+=ja}}X||(a.xa=!0);B<a.H&&(a.Na.putImageData(a.Wa,0,0,B,K,G-B,V-K),a.da.drawImage(a.Ma,0,0,a.H,a.O,0,0,a.na,a.va))}}}}
|
||||
function kl(a,b){var c=0,d=tc(a.A)-b.yg;0>d&&(b.yg=d,d=-d|0);d%b.ug>b.Yk&&(c|=1);d%b.xg>b.$k&&(c|=9);b.ih=d/b.xg|0;return c}f.yk=function(){var a=this.ka,b;a.$b&&(b=a.qc);return b};f.Ll=function(a,b){var c=this.ka;c.Sf=c.qc;c.qc=b&31};f.xk=function(){return ll(this.ka)};f.Kl=function(a,b){ml(this,this.ka,b)};f.zk=function(){return this.ka.Jc};f.Ml=function(a,b){this.ka.Jc=b;Yk(this,!1)};f.Ak=function(){return nl(this,this.ka)};f.dj=function(a,b){this.B.Uf=this.B.Uf&-4|b&3};f.Xj=function(){return this.B.Sd};
|
||||
|
|
@ -949,9 +949,9 @@ f.he=function(a,b){if(this.$b&&this.A&&this.A.ja.Rb)switch(a){case Uk:this.O!=b&
|
|||
function Il(a,b,c){Ha.call(this,"Disk",{id:a.mf+".disk"+da(++Jl,4)},Il);this.controller=a;this.ta=a.ta;this.Ta=a.Ta;this.D=b;this.B=b.name;this.me=b.me;this.Cf=this.F=!1;Kl(this,c,b.ob,b.pb,b.ib,b.tb);this.K=[];this.O=[];this.H=null;this.W=0;this.S=!1;$a(this)}var Jl=0;Pa(Il);f=Il.prototype;f.nc=function(a,b,c,d){this.Ta=d};f.Tb=function(a,b){b||!this.Cf||this.F||($a(this,!1),this.load(this.B,this.J,null,this.Jj,this));return!0};f.Jj=function(){$a(this,!0)};
|
||||
f.Sb=function(a,b){if(this.F){var c,d=0;if(this.S&&!ra("Disk writes are still in progress, shut down anyway?"))return!1;for(;c=Ll(this,!1);)if(d=c[0]){this.controller.Ha('Unable to save "'+this.B+'" (error '+d+")");break}b&&this.F&&(c="action=close&volume="+this.J,c+="&machine="+this.controller.qe(),c+="&user="+this.controller.xd(),pa(qa()+"/api/v1/disk?"+c,!0),this.F=!1);!d&&a&&this.controller.Ha(this.B+" saved")}return!0};
|
||||
function Kl(a,b,c,d,e,k){a.mode=b;a.ob=c;a.pb=d;a.ib=e;a.tb=k;a.A=[];if("preload"!=a.mode){b=Array(a.ob);for(c=0;c<b.length;c++){d=Array(a.pb);for(e=0;e<d.length;e++){k=Array(a.ib);for(var l=1;l<=k.length;l++)k[l-1]=Ml(null,c,e,l,a.tb,"local"==a.mode?0:null);d[e]=k}b[c]=d}a.A=b}a.T=null}
|
||||
f.load=function(a,b,c,d,e){var k=b;if(!this.N)if(this.B=a,this.J=b,this.gj=ea(b),this.N=d,this.Z=e||this.controller,c){var l=this,p=new FileReader;p.onload=function(){var a=p.result,b,c=a?a.byteLength:0,d=ba[c];if(d){l.ob=d[0];l.pb=d[1];l.ib=d[2];l.tb=512;b=l.tb>>2;var e=d=0,a=new DataView(a,0,c);l.A=Array(l.ob);for(c=0;c<l.A.length;c++)for(var k=l.A[c]=Array(l.pb),V=0;V<k.length;V++)for(var X=k[V]=Array(l.ib),ja=0;ja<X.length;ja++){for(var ka=Ml(null,c,V,ja+1,l.tb,0),Ba=ka.data,Ca=0;Ca<b;Ca++,e+=
|
||||
4)var qd=Ba[Ca]=a.getInt32(e,!0),d=d+qd&-1;ka.Cc=b;X[ja]=ka}l.T=d;b=l}else l.Ha("Unrecognized diskette format ("+c+" bytes)");l.N&&(l.N.call(l.controller,l.D,b,l.B,l.J),l.N=null)};p.readAsArrayBuffer(c)}else 0>b.indexOf("/api/v1/dump")&&(a=fa(b),"json"==a||"gz"==a?k=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(k=Nl(this,b),this.Cf=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"):-1!==b.indexOf("/",
|
||||
b.length-1)&&(c="dir"),k=qa()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.me?"":d)+"&format=json")),pa(k,!0,null,this,this.rj)};
|
||||
f.load=function(a,b,c,d,e){var k=b;if(this.N)return!0;this.B=a;this.J=b;this.gj=ea(b);this.N=d;this.Z=e||this.controller;if(c){var l=this,p=new FileReader;p.onload=function(){var a=p.result,b,c=a?a.byteLength:0,d=ba[c];if(d){l.ob=d[0];l.pb=d[1];l.ib=d[2];l.tb=512;b=l.tb>>2;var e=d=0,a=new DataView(a,0,c);l.A=Array(l.ob);for(c=0;c<l.A.length;c++)for(var k=l.A[c]=Array(l.pb),V=0;V<k.length;V++)for(var X=k[V]=Array(l.ib),ja=0;ja<X.length;ja++){for(var ka=Ml(null,c,V,ja+1,l.tb,0),Ba=ka.data,Ca=0;Ca<b;Ca++,
|
||||
e+=4)var rd=Ba[Ca]=a.getInt32(e,!0),d=d+rd&-1;ka.Cc=b;X[ja]=ka}l.T=d;b=l}else l.Ha("Unrecognized diskette format ("+c+" bytes)");l.N&&(l.N.call(l.controller,l.D,b,l.B,l.J),l.N=null)};p.readAsArrayBuffer(c);return!0}0>b.indexOf("/api/v1/dump")&&(a=fa(b),"json"==a||"gz"==a?k=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(k=Nl(this,b),this.Cf=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"):-1!==
|
||||
b.indexOf("/",b.length-1)&&(c="dir"),k=qa()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.me?"":d)+"&format=json"));return 0<pa(k,!0,null,this,this.rj).length};
|
||||
f.rj=function(a,b,c){var d=null;this.pe=!1;var e=0>c&&this.ta&&!this.ta.ja.Qb;if(this.Cf)c?this.controller.Ha('Unable to connect to disk "'+this.J+'" (error '+c+": "+b+")",e):(this.F=!0,d=this);else if(c)this.controller.Ha('Unable to load disk "'+this.B+'" (error '+c+": "+a+")",e);else{Ra(this.controller.mf,a,b);try{if(0<ea(this.gj,!0).toLowerCase().indexOf("-readonly"))this.pe=!0;else{var k=b.indexOf("\n");0<k&&1024>k&&0<b.substring(0,k).indexOf("write-protected")&&(this.pe=!0)}var l;"<"==b.substr(0,
|
||||
1)?l=["Missing disk image: "+this.B]:l=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");if(l.length)if(1==l.length)g(l[0]);else{this.ob=l.length;this.pb=l[0].length;this.ib=l[0][0].length;var p=l[0][0][0];this.tb=p&&p.length||512;for(c=b=0;c<this.ob;c++)for(e=0;e<this.pb;e++)for(k=0;k<this.ib;k++)if(p=l[c][e][k]){var q=p.length;void 0===q&&(q=p.length=512);var q=q>>2,v=p.pattern;void 0===v&&(v=p.pattern=0);var B=p.data;
|
||||
if(void 0===B){var G=p.bytes;if(void 0!==G&&G.length){for(var C=q<<2,K=G.length;K<C;K++)G[K]=v;Ol(p,G,0)}else B=[],v=p.pattern=v|v<<8|v<<16|v<<24,p.data=B;delete p.bytes}Ml(p,c,e);for(C=0;C<B.length;C++)b=b+B[C]&-1}this.A=l;this.T=b;d=this}else g("Empty disk image: "+this.B)}catch(V){g("Disk image error ("+a+"): "+V.message)}}this.N&&(this.N.call(this.Z,this.D,d,this.B,this.J),this.N=null)};function Pl(a,b){var c=a.pb*a.ib,d=b/c|0;return d<a.ob?(c=b%c,a.seek(d,c/a.ib|0,c%a.ib+1)):null}
|
||||
|
|
@ -981,7 +981,7 @@ function $l(a,b){var c=0,d,e=!0;void 0===b&&(b=[0,0,128,Array(9),0,0,0,[]]);a.Xa
|
|||
B[G++];l.Ya=B[G++];l.Za=null;l.za||(l.Td="");C=B[G++];102==C&&(C=!1);if("boolean"==typeof C){var K=C,C=B[G++],B=B[G];K?(G=C,C=q.B[v],em(q,v,!0,!0),C.ke=!0,v=new Il(q,C,"preload"),q.Nh(C,v,G,B,!0)):gm(q,v,C,B,!0)?l.za&&B&&hm(q,C,B,l.za):$a(q,!1)}else void 0!==C&&l.za&&0>l.za.restore(C)&&(p=!1);p&&l.za&&void 0!==l.Ya&&(l.Za=l.za.seek(l.Bb,l.bb,l.sb));p||(e=!1)}a.O=b[c++]||0;a.J=b[c]||0;return e}
|
||||
function dm(a,b){b||(a.S=0);if(a.N)for(var c in a.N){var d=a.N[c],e=d.path,k;if(!(k=d.name))a:{if((k=a.pa.listDisks)&&k.options)for(var l=0;l<k.options.length;l++)if(k.options[l].value==e){k=k.options[l].innerText;break a}k=ea(e,!0)}if(e&&k&&(l=c.charCodeAt(0)-65,0<=l&&l<a.B.length)){!gm(a,l,k,e,!0)&&b&&$a(a,!1);continue}a.Ha("Incorrect auto-mount settings for drive "+c+" ("+JSON.stringify(d)+")")}return!!a.S}
|
||||
function Yl(a,b,c,d){var e,k=a.pa.listDrives;if(k&&!isNaN(e=ca(k.value,10))&&0<=e&&e<a.B.length)if(c)if("?"==c)a.Ha('Use "Choose File" and "Mount" to select and load a local disk.');else{if("??"==c){c=window.prompt("Enter the URL of a remote disk image.","")||"";if(!c)return;b=ea(c)}for(;gm(a,e,b,c,!1,d)&&window.confirm("Click OK to reload the original disk.\n(WARNING: All disk changes will be discarded)");){for(var k=a,l=c,p=void 0,p=0;p<k.D.length;p++)if(k.D[p][1]==l){k.D.splice(p,1);break}em(a,
|
||||
e,!1,!0)}}else em(a,e);else a.Ha("Unable to load the selected drive")}function gm(a,b,c,d,e,k){var l=a.B[b];if(d&&l.Td!=d){em(a,b,e,!0);if(l.Mc)return a.Ha("Drive "+b+" busy"),!0;l.Mc=!0;e&&(l.Jd=!0,a.S++);l.ke=!!k;(new Il(a,l,"preload")).load(c,d,k,a.Nh);return!1}return!0}
|
||||
e,!1,!0)}}else em(a,e);else a.Ha("Unable to load the selected drive")}function gm(a,b,c,d,e,k){var l=a.B[b];if(d&&l.Td!=d){em(a,b,e,!0);if(l.Mc)return a.Ha("Drive "+b+" busy"),!0;l.Mc=!0;e&&(l.Jd=!0,a.S++);l.ke=!!k;if(!(new Il(a,l,"preload")).load(c,d,k,a.Nh))return!1}return!0}
|
||||
f.Nh=function(a,b,c,d,e){var k;a.Mc=!1;b&&(k=b.info(),b&&k[0]>a.ob||k[1]>a.pb)&&(this.Ha('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Xa)),b=null);b?(a.za=b,a.hj=c,a.Td=d,hm(this,c,d,b),k=b.info(),this.O|=128,this.Ha('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Xa),a.Jd||e),a.Jf=k[0],a.Re=k[1],a.Se=k[2]):a.ke=!1;a.Jd&&(a.Jd=!1,--this.S||$a(this));Xl(this,a.Xa)};
|
||||
function cm(a,b,c){if((a=a.pa.listDisks)&&a.options){for(var d=0;d<a.options.length;d++)if(a.options[d].value==c)return;d=document.createElement("option");d.value=c;d.textContent=b;a.appendChild(d)}}
|
||||
function Xl(a,b){if(0<=b&&b<a.B.length){var c=a.B[b],d=a.pa.listDisks,e=a.pa.listDrives;if(d&&e&&d.options&&e.options&&(e=ca(e.value,10),c=c.ke?"?":c.Td,!isNaN(e)&&e==b)){for(e=0;e<d.options.length;e++)if(d.options[e].value==c){d.selectedIndex!=e&&(d.selectedIndex=e);break}e==d.options.length&&(d.selectedIndex=0)}}}function em(a,b,c,d){var e=a.B[b];e.za&&(fm(a,e.Td,e.za),e.hj="",e.Td="",e.za=null,e.ke=!1,a.O|=128,d||a.Ha("Drive "+String.fromCharCode(65+b)+" unloaded",c),c||d||Xl(a,b))}
|
||||
|
|
@ -1013,9 +1013,9 @@ f.$j=function(){var a=this.ga;this.ga&64&&(this.ga&=-129);return a};f.dl=functio
|
|||
function Em(a){var b=!1,c=a.va,d=a.ha&16?1:0,e=a.ha&15,k=a.qa|(a.na&3)<<8,l=a.sa,p=a.O||256;a.Xa=-1;a.D=null;a.N=0;a.ga=80;var q=a.B[d];q?(q.Ed=k,q.bb=e,q.sb=l,q.zb=p*q.tb,c=144<=c?c:c&240,q.Za=null,q.Ya=0,q.errorCode=0,a.Xa=d,a.D=q):c=-1;switch(c&240){case 16:b=!0;break;case 32:a.ga=128;Am(q,function(b){0<=b&&a.T?(Bm(a),a.ga=88):(a.ga=1,a.N=16)},!1);break;case 48:a.ga=8;break;case 64:b=!0;break;case 112:b=!0;break;case 144:a.N=1;b=!0;break;case 145:q.pb=e+1,q.ib=p,b=!0}b&&Bm(a)}
|
||||
function Bm(a){!a.T||a.W&2||Le(a.T,14,120)}
|
||||
function ym(a){a.H=0;var b=Fm(a),c=Fm(a),d=c&32,e=d>>5,k=c&31,l=Fm(a),p=Fm(a),q=l<<2&768|p,v=l&63,B=Fm(a),G=Fm(a),C=a.B[e];C&&(C.Ed=q,C.bb=k,C.sb=v,C.zb=B*C.tb);switch(b){case 3:Gm(a,C?C.errorCode:4);Hm(a,c);Hm(a,l);Hm(a,p);Hm(a,0|d);b=-1;break;case 12:for(c=0;0<=(b=Fm(a));)C&&c<C.be.length&&(C.be[c++]=b);C&&xm(a,C);b=0;C||a.da!=e||(a.da=-1,b=2);Gm(a,b|d);b=-1;break;case 224:case 228:Gm(a,0|d),b=-1}if(0<=b)switch(void 0===C?b=-1:(C.errorCode=0,C.ij=0),b){case 0:Gm(a,0|d);break;case 1:C.Fe=G;Gm(a,
|
||||
0|d);break;case 5:Gm(a,0|d);break;case 8:Lm(a,C,function(b){Gm(a,b|d)});break;case 10:Mm(a,C,function(b){Gm(a,b|d)});break;case 15:Nm(a,C,function(b){Gm(a,b|d)});break;default:Gm(a,2|d)}}function Fm(a){var b=-1;a.H<a.F&&(b=a.K[a.H++]);return b}function Gm(a,b){a.H=a.F=0;void 0!==b&&Hm(a,b);a.T&&Le(a.T,5);a.ga|=32}function Hm(a,b){a.K[a.F++]=b}f.uj=function(a,b,c){void 0===b||0>b?Am(a,c):c(-1,!1)};f.vj=function(a,b){return void 0!==b&&0<=b?Dm(a,b):-1};
|
||||
0|d);break;case 5:Gm(a,0|d);break;case 8:Im(a,C,function(b){Gm(a,b|d)});break;case 10:Mm(a,C,function(b){Gm(a,b|d)});break;case 15:Nm(a,C,function(b){Gm(a,b|d)});break;default:Gm(a,2|d)}}function Fm(a){var b=-1;a.H<a.F&&(b=a.K[a.H++]);return b}function Gm(a,b){a.H=a.F=0;void 0!==b&&Hm(a,b);a.T&&Le(a.T,5);a.ga|=32}function Hm(a,b){a.K[a.F++]=b}f.uj=function(a,b,c){void 0===b||0>b?Am(a,c):c(-1,!1)};f.vj=function(a,b){return void 0!==b&&0<=b?Dm(a,b):-1};
|
||||
f.Gj=function(a,b){var c;void 0!==b&&0<=b?(c=b,a.Ya<a.ce.length?a.ce[a.Ya++]=c:(a.errorCode=20,c=-1)):c=-1;return c};f.Hj=function(a,b){var c;if(void 0!==b&&0<=b)a:if(c=b,a.errorCode)c=-1;else{a.Lc[a.ge++]=c;if(a.ge==a.Lc.length){a.Ed=a.Lc[0];a.bb=a.Lc[1];a.sb=a.Lc[2];a.zb=128<<a.Lc[3];for(var d=a.ge=0;d<a.zb;d++)if(0>Dm(a,a.Gh)){c=-1;break a}a.xf++}a.xf>=a.ud&&(c=-1)}else c=-1;return c};
|
||||
function Lm(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaRead",b);ij(a.T,3,function(a){a||0!=b.errorCode||(b.errorCode=4);c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}function Mm(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaWrite",b);ij(a.T,3,function(a){a||(0==b.errorCode&&(b.errorCode=4),20==b.errorCode&&(b.errorCode=0));c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}
|
||||
function Im(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaRead",b);ij(a.T,3,function(a){a||0!=b.errorCode||(b.errorCode=4);c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}function Mm(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaWrite",b);ij(a.T,3,function(a){a||(0==b.errorCode&&(b.errorCode=4),20==b.errorCode&&(b.errorCode=0));c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}
|
||||
function Nm(a,b,c){b.errorCode=4;b.ce&&b.ce.length==b.zb||(b.ce=Array(b.zb));b.Ya=0;a.T?(b.errorCode=0,mj(a.T,3,a,"dmaWriteBuffer",b),ij(a.T,3,function(a){a||0!=b.errorCode||(b.errorCode=4);c(b.errorCode?2:0)})):c(b.errorCode?2:0)}
|
||||
function Am(a,b,c){var d=-1,e=null,k=0;if(a.errorCode)return b&&b(d,!1,e,k),d;var l=!1!==c?1:0;if(a.Za&&(k=a.Ya,d=a.za.read(a.Za,a.Ya),a.Ya+=l,0<=d))return e=a.Za,b&&b(d,!1,e,k),d;if(b){if(a.za)return a.za.seek(a.Ed,a.bb,a.sb+a.wf,!1,function(c,q){(a.Za=c)?(e=c,k=a.Ya=0,Om(a),d=a.za.read(a.Za,a.Ya),a.Ya+=l):a.errorCode=20;b(d,q,e,k)}),d;a.errorCode=20;b(d,!1,e,k)}return d}
|
||||
function Dm(a,b){if(a.errorCode)return-1;do{if(a.Za&&a.za.write(a.Za,a.Ya++,b))break;a.za&&a.za.seek(a.Ed,a.bb,a.sb+a.wf,!0,function(b){a.Za=b});if(!a.Za){a.errorCode=20;b=-1;break}a.Ya=0;Om(a)}while(1);return b}function Om(a){a.sb++;var b=1-a.wf;a.sb>=a.ib+b&&(a.sb=b,a.bb++,a.bb>=a.pb&&(a.bb=0,a.Ed++))}f.Tk=function(){var a=this.A.I&255;!(this.A.G>>8)&&128<a&&(this.da=a-128);return!0};f.Uk=function(){var a;(a=this.A.G>>8||!this.T)||(a=!(this.T.ec[0].Vc&64));return a?!0:!1};
|
||||
|
|
@ -1025,7 +1025,7 @@ Td.prototype={constructor:Td,value:function(){return this[this.id]},data:functio
|
|||
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function Qm(a,b){a[a.id]={};b&&D(a,"parms",b);a.A=!1}function Rm(a){var b=!0;if(ta()){var c=JSON.stringify(a[a.id]);va(a.key,c)||(g("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Sm(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){g(c.message||c),b=!1}return b}function Tm(a,b){return a[a.id][b]||null}function D(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Um(a,b,c){Ha.call(this,"Computer",a,Um);this.ja.Qb=!1;Vm(this,b);this.S=Zl(this,"autoPower",a);this.F=0;this.ta=a.busWidth||a.buswidth;this.B=Wm;this.T=null;this.J=this.ha=!1;this.ka=Zl(this,"url")||"";this.na=(Math.random()+.1).toString(36).substr(2,12);this.D=Xm(this);if(this.A=Ua("CPU",this.id)){this.Ta=Ua("Debugger",this.id);this.oa=new qb({id:this.mf+".bus",buswidth:this.ta},this.A,this.Ta);var d,e=Sa(this.id);if((this.md=Ua("Panel",this.id))&&this.md.hg)for(b=0;b<e.length;b++)d=e[b],
|
||||
d.Ha=this.md.Ha,d.pc=this.md.pc,d.hg=this.md.hg;for(b=0;b<e.length;b++)d=e[b],d.nc&&d.nc(this,this.oa,this.A,this.Ta);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.N=d:this.B=parseInt(d,10));var k;if(a=Ka&&Ka.state||Zl(this,"state")||(k=!0,a.state))b=this.W=a,k||(this.J=!0,this.B=Wm),this.B&&(this.O=new Td(this,Ym),this.O.load()?b=null:delete this.O);!b&&this.B&&(k=null,this.D&&(k=qa()+"/api/v1/user?req=load&user="+this.D+"&state="+Pm(this,Ym)),b=k)&&(this.J=!0);b?pa(b,!0,null,this,this.qj):$a(this);
|
||||
this.pa.power||(this.S=!0);!c&&this.S&&Zm(this,this.bf)}else g("Unable to find CPU component")}Pa(Um);var Ym="1.20.9",Wm=0;f=Um.prototype;f.qe=function(){return this.na};function Vm(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){g(d.message+" ("+c+")")}}a.K=b}function Zl(a,b,c){var d=null;a.K&&(d=a.K[b]);null==d&&c&&(d=c[b]);null==d&&"object"==typeof resources&&(d=resources[b]);return d}f.xd=function(){return this.D||""};
|
||||
this.pa.power||(this.S=!0);!c&&this.S&&Zm(this,this.bf)}else g("Unable to find CPU component")}Pa(Um);var Ym="1.20.9",Wm=0;f=Um.prototype;f.qe=function(){return this.na};function Vm(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){g(d.message+" ("+c+")")}}a.K=b}function Zl(a,b,c){var d=null;a.K&&(d=a.K[b]);null==d&&c&&(d=c[b]);null==d&&"object"==typeof resources&&resources[b]&&(d=b);return d}f.xd=function(){return this.D||""};
|
||||
f.qj=function(a,b,c){c?(this.N=null,this.J=!1,this.Ha("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(this.T=b,this.ha=!0);$a(this)};function Zm(a,b,c){for(var d=Sa(a.id),e=0;e<=d.length;e++){var k=e<d.length?d[e]:a;if(!ab(k)){ab(k,function(){Zm(a,b,c)});return}}b.call(a,c)}
|
||||
function $m(a,b){var c=new Td(a,Ym,"validate");if(c.load()&&Sm(c)){var d=Tm(c,"timestamp"),e=b?Tm(b,"timestamp"):"unknown";d!=e&&(a.Ha("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
f.bf=function(a){void 0===a&&(a=this.B||(this.T?1:Wm));if(!this.F){this.F++;var b=!1,c=!1;this.da=!1;var d=this.O||new Td(this,Ym);if(-1==a)b=!0;else if(a>Wm){if(d.load(this.T)){this.H=new Td(this,Ym,"failsafe");this.H.load()&&(an(this,d),a=2,Qm(this.H));D(this.H,"timestamp",la());Rm(this.H);var e=this.B&&!this.J;if(1==a||ra("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=Sm(d)){var k=Tm(d,"code"),l=Tm(d,"data");k&&("ok"==k?d.load(l):("error"==k&&"no machine state"!=
|
||||
|
|
@ -1042,13 +1042,14 @@ function en(a,b){a.D=null;var c=pa(qa()+"/api/v1/user?req=verify&user="+b),d=c[1
|
|||
function dn(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Pm(a,Ym);d.data=c;b=pa(qa()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Ha("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.Ha(c),va("user",""),a.D=null)}}
|
||||
function jb(a,b,c){a=Sa(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}Da(function(){for(var a=Ya(document,"pcjs-machine"),b=0;b<a.length;b++)for(var c=a[b],d=Va(c),c=Ya(c,"pcjs","computer"),e=0;e<c.length;e++){var k=c[e],l=Va(k),l=new Um(l,d,!0);Xa(l,k);l.S&&Zm(l,l.bf)}});xa.show.push(function(){for(var a=Ya(document,"pcjs","computer"),b=0;b<a.length;b++){var c=Va(a[b]);(c=Ua("Computer",c.id))&&c.Z&&!c.ja.Qb&&c.bf(-1)}});
|
||||
xa.exit.push(function(){for(var a=Ya(document,"pcjs","computer"),b=0;b<a.length;b++){var c=Va(a[b]);(c=Ua("Computer",c.id))&&c.ja.Qb&&cn(c,!(!c.B||c.N),!0)}});var fn=0;function gn(a,b,c,d,e,k){e("Loading "+a+"...");pa(a,!0,null,null,function(l,p,q){q?(p||(p="unable to load "+a+" ("+q+")"),k(p,null)):hn(p,a,b,c,d,e,k)})}
|
||||
function hn(a,b,c,d,e,k,l){function p(a,k){if(k)l(k,null);else{if(c){var p=b;p&&0>p.indexOf("/")&&(p=window.location.pathname+p);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+p+'"}';a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(p?' url="'+p+'"':""))}p=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(p=new window.ActiveXObject("Microsoft.XMLDOM"),
|
||||
p.async=!1,p.loadXML(a)):p=(new window.DOMParser).parseFromString(a,"text/xml")}catch(G){p=null,a=G.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);l(a,p)}}a?e?jn(a,k,p):p(a,null):l("no data"+(b?" for file: "+b:""),null)}
|
||||
function hn(a,b,c,d,e,k,l){function p(a,k){if(k)l(k,null);else{if(c){Ra(c,b,a);var p=b;p&&0>p.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(p=window.location.pathname+p);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+p+'"}';a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(p?' url="'+p+'"':""))}p=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in
|
||||
window?(p=new window.ActiveXObject("Microsoft.XMLDOM"),p.async=!1,p.loadXML(a)):p=(new window.DOMParser).parseFromString(a,"text/xml")}catch(G){p=null,a=G.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);l(a,p)}}a?e?jn(a,k,p):p(a,null):l("no data"+(b?" for file: "+b:""),null)}
|
||||
function jn(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");pa(e,!0,null,null,function(k,l,p){if(p||!l)c(a,"unable to resolve XML reference: "+d[0]+" ("+p+")");else{if(k=d[3])if(p=l.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var q=p[0],v,B=/( [a-z]+=)(['"])(.*?)\2/g;v=B.exec(k);)q=0>q.indexOf(v[1])?q.replace(">",v[0]+">"):q.replace(new RegExp(v[1]+"(['\"])(.*?)\\1"),v[0]);p[0]!=q&&(l=l.replace(p[0],q))}else{c(a,"missing <"+d[1]+"> in "+e);return}l=l.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],l);jn(a,b,c)}})}else c(a,null)}
|
||||
function kn(a,b,c,d){function e(a){if(void 0===p){var b=l&&Ya(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ha(a))}function k(a){e("Error: "+a);q&&(--fn||Fa(!0));q=!1}var l,p,q=!0;fn++;Qa[a]={};try{if(l=document.getElementById(a)){c||(c="/versions/pcjs/1.20.9/components.xsl");var v=function(d,p){p?(Ra(a,b,d),gn(c,null,null,!1,e,function(d,q){if(q)if(Ra(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var v=p.transformNode(q);v?(l.outerHTML=v,--fn||Fa(!0)):k("transformNodeToObject failed")}else document.implementation&&
|
||||
document.implementation.createDocument?(v=new XSLTProcessor,v.importStylesheet(q),(v=v.transformToFragment(p,document))?l.parentNode?(l.parentNode.replaceChild(v,l),--fn||Fa(!0)):k("invalid machine element: "+a):k("transformToFragment failed")):k("unable to transform XML: unsupported browser");else k(d)})):k(d)};"<"!=b.charAt(0)?gn(b,a,d,!0,e,v):hn(b,null,a,d,!1,e,v)}else k("missing machine element: "+a)}catch(B){k(B.message)}return q}window.embedPC=function(a,b,c,d){Fa(!1);return kn(a,b,c,d)};
|
||||
window.enableEvents=Fa;window.sendEvent=Ga;
|
||||
function ln(a,b,c,d){var e;c=d[0];var k,l;b&&((e=b.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/))||(b=""));if(b){b=Qa[c];var p={},q;for(q in b){var v=b[q],B=fa(q);if("xml"==B){for(B=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;k=B.exec(b[q]);){var G=k[2];G&&(b[G]||(v=v.replace(k[0],"")))}k=q=ea(q)}else"xsl"==B&&(l=q=ea(q));p[q]=v}d[1]&&(p[q="parms"]=d[1]);d[2]&&(p[q="state"]=d[2]);k&&l?(d=JSON.stringify(p),a=ea(a,!0),b=e[1]+"var resources="+d+";"+e[2]+e[3],e="data:application/javascript,"+
|
||||
encodeURI(b),d=document.createElement("a"),"string"==typeof d.download?(d.href=e,d.download=a+".json",document.body.appendChild(d),d.click(),document.body.removeChild(d),e='Check your Downloads folder for "'+a+'.json", '+('copy it to your web server as "'+a+'.js", and then add the following to your web page:\n\n'),e+='<div id="'+c+'"></div>\n',e+="...\n",e+='<script type="text/javascript" src="'+a+'.js">\x3c/script>\n',e+='<script type="text/javascript">embedPC("'+c+'","'+k+'","'+l+'");\x3c/script>\n\n',
|
||||
e+="The machine should appear where the <div> is located.",g(e)):window.open(e)):g("Missing XML/XSL resources")}else g("Unabled to download script")}window.savePC=function(a,b){var c=Ua("Computer",a),d=Ua("Debugger",a);if(c){var e=cn(c,!0),k=c.K?JSON.stringify(c.K):null;b||(b="/versions/pcjs/1.20.9/pc"+(d?"-dbg":"")+".js");pa(b,!0,null,null,ln,[a,k,e,c,d]);return!0}g("Unable to identify machine '"+a+"'");return!1};})();
|
||||
function kn(a,b,c,d){function e(a){if(void 0===p){var b=l&&Ya(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ha(a))}function k(a){e("Error: "+a);q&&(--fn||Fa(!0));q=!1}var l,p,q=!0;fn++;Qa[a]={};try{if(l=document.getElementById(a)){var v;if("object"==typeof resources&&(v=resources.css)){var B=document.head||document.getElementsByTagName("head")[0],G=document.createElement("style");G.type="text/css";G.styleSheet?G.styleSheet.cssText=v:G.appendChild(document.createTextNode(v));B.appendChild(G)}c||
|
||||
(c="/versions/pcjs/1.20.9/components.xsl");v=function(d,p){p?gn(c,null,null,!1,e,function(d,q){if(q)if(Ra(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var v=p.transformNode(q);v?(l.outerHTML=v,--fn||Fa(!0)):k("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(v=new XSLTProcessor,v.importStylesheet(q),(v=v.transformToFragment(p,document))?l.parentNode?(l.parentNode.replaceChild(v,l),--fn||Fa(!0)):k("invalid machine element: "+
|
||||
a):k("transformToFragment failed")):k("unable to transform XML: unsupported browser");else k(d)}):k(d)};"<"!=b.charAt(0)?gn(b,a,d,!0,e,v):hn(b,null,a,d,!1,e,v)}else k("missing machine element: "+a)}catch(C){k(C.message)}return q}window.embedPC=function(a,b,c,d){Fa(!1);return kn(a,b,c,d)};window.enableEvents=Fa;window.sendEvent=Ga;
|
||||
function ln(a,b,c,d){if(!c&&b){d.push(b);a=Qa[d[0]];b=null;for(var e in a)if(-1!==e.indexOf("components.xsl",e.length-14)){b=e.replace(".xsl",".css");break}b?pa(b,!0,null,null,mn,d):mn(0,null,0,d)}else g("Error ("+c+") requesting "+a)}
|
||||
function mn(a,b,c,d){var e,k,l;a=d[0];c=d[1];e=d[4];e=e.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var p=Qa[a],q={},v;for(v in p){var B=p[v],G=fa(v);if("xml"==G){for(G=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;k=G.exec(p[v]);){var C=k[2];C&&(p[C]||(B=B.replace(k[0],"")))}k=v=ea(v)}else"xsl"==G&&(l=v=ea(v));q[v]=B}b&&(q[v="css"]=b);d[2]&&(q[v="parms"]=d[2]);d[3]&&(q[v="state"]=d[3]);k&&l?(b=JSON.stringify(q),e=e[1]+"var resources="+b+";"+e[2]+e[3],b="data:application/javascript,"+
|
||||
(wa("Firefox")?encodeURIComponent(e):encodeURI(e)),d=document.createElement("a"),"string"==typeof d.download&&2E6>e.length?(d.href=b,d.download=c+".json",document.body.appendChild(d),d.click(),document.body.removeChild(d)):window.open(b),b='Check your Downloads folder for "'+c+'.json", '+('copy it to your web server as "'+c+'.js", and then add the following to your web page:\n\n'),b+='<div id="'+a+'"></div>\n',b+="...\n",b+='<script type="text/javascript" src="'+c+'.js">\x3c/script>\n',b+='<script type="text/javascript">embedPC("'+
|
||||
a+'","'+k+'","'+l+'");\x3c/script>\n\n',b+="The machine should appear where the <div> is located.",g(b)):g("Missing XML/XSL resources")}window.savePC=function(a,b){var c=Ua("Computer",a),d=Ua("Debugger",a);if(c){var e=cn(c,!0),c=c.K?JSON.stringify(c.K):null;b||(b="/versions/pcjs/1.20.9/pc"+(d?"-dbg":"")+".js");pa(b,!0,null,null,ln,[a,ea(b,!0),c,e]);return!0}g("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
|
|
@ -366,7 +366,9 @@ Computer.prototype.setMachineParms = function(parmsMachine)
|
|||
* If the machine parameter doesn't exist, we check for a matching component parameter (if parmsComponent is provided),
|
||||
* and failing that, we check the bundled resources (if any).
|
||||
*
|
||||
* At the moment, the only bundled resource match we expect to encounter is 'state'.
|
||||
* At the moment, the only bundled resource request we expect to encounter is 'state'; if it exists, then we return
|
||||
* 'state' back to the caller (ie, the name of the resource), so that the caller will then attempt to load the 'state'
|
||||
* resource to obtain the actual state.
|
||||
*
|
||||
* @param {string} sParm
|
||||
* @param {Object} [parmsComponent]
|
||||
|
|
@ -381,8 +383,8 @@ Computer.prototype.getMachineParm = function(sParm, parmsComponent)
|
|||
if (value == null && parmsComponent) {
|
||||
value = parmsComponent[sParm];
|
||||
}
|
||||
if (value == null && typeof resources == 'object') {
|
||||
value = resources[sParm];
|
||||
if (value == null && typeof resources == 'object' && resources[sParm]) {
|
||||
value = sParm;
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1011,6 +1011,7 @@ Disk.prototype.create = function(mode, nCylinders, nHeads, nSectors, cbSector)
|
|||
* @param {File} [file] is set if there's an associated File object
|
||||
* @param {function(...)} [fnNotify]
|
||||
* @param {Component} [controller]
|
||||
* @return {boolean} true if load completed (successfully or not), false if queued
|
||||
*/
|
||||
Disk.prototype.load = function(sDiskName, sDiskPath, file, fnNotify, controller)
|
||||
{
|
||||
|
|
@ -1027,7 +1028,7 @@ Disk.prototype.load = function(sDiskName, sDiskPath, file, fnNotify, controller)
|
|||
|
||||
if (this.fnNotify) {
|
||||
if (DEBUG) this.controller.log('too many load requests for "' + sDiskName + '" (' + sDiskPath + ')');
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
this.sDiskName = sDiskName;
|
||||
|
|
@ -1044,7 +1045,7 @@ Disk.prototype.load = function(sDiskName, sDiskPath, file, fnNotify, controller)
|
|||
disk.build(reader.result, true);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -1098,7 +1099,8 @@ Disk.prototype.load = function(sDiskName, sDiskPath, file, fnNotify, controller)
|
|||
}
|
||||
}
|
||||
}
|
||||
web.loadResource(sDiskURL, true, null, this, this.doneLoad);
|
||||
var result = web.loadResource(sDiskURL, true, null, this, this.doneLoad);
|
||||
return result.length > 0;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1332,8 +1332,9 @@ FDC.prototype.loadDiskette = function(iDrive, sDisketteName, sDiskettePath, fAut
|
|||
}
|
||||
drive.fLocal = !!file;
|
||||
var disk = new Disk(this, drive, DiskAPI.MODE.PRELOAD);
|
||||
disk.load(sDisketteName, sDiskettePath, file, this.doneLoadDiskette);
|
||||
return false;
|
||||
if (!disk.load(sDisketteName, sDiskettePath, file, this.doneLoadDiskette)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -252,13 +252,13 @@ Component.addMachine = function(idMachine)
|
|||
* Component.addMachineResource(idMachine, sName, data)
|
||||
*
|
||||
* @param {string} idMachine
|
||||
* @param {string} sName (name of the resource)
|
||||
* @param {string|null} sName (name of the resource)
|
||||
* @param {*} data
|
||||
*/
|
||||
Component.addMachineResource = function(idMachine, sName, data)
|
||||
{
|
||||
Component.assert(Component.machines[idMachine]);
|
||||
if (Component.machines[idMachine]) {
|
||||
if (Component.machines[idMachine] && sName) {
|
||||
Component.assert(Component.machines[idMachine][sName] === undefined);
|
||||
Component.machines[idMachine][sName] = data;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -123,8 +123,17 @@ function parseXML(sXML, sXMLFile, idMachine, sParms, fResolve, display, done)
|
|||
return;
|
||||
}
|
||||
if (idMachine) {
|
||||
|
||||
/*
|
||||
* A more sensible place to record the machine XML would be embedMachine(), like we do for the
|
||||
* XSL file, but since we're about to modify the original machine XML, it's best to record it now.
|
||||
*/
|
||||
Component.addMachineResource(idMachine, sXMLFile, sXML);
|
||||
|
||||
var sURL = sXMLFile;
|
||||
if (sURL && sURL.indexOf('/') < 0) sURL = window.location.pathname + sURL;
|
||||
if (sURL && sURL.indexOf('/') < 0 && window.location.pathname.slice(-1) == '/') {
|
||||
sURL = window.location.pathname + sURL;
|
||||
}
|
||||
/*
|
||||
* We embed the URL of the XML file both as a separate "xml" attribute for easy access from the
|
||||
* XSL file, and as part of the "parms" attribute for easy access from machines (see getMachineParm()).
|
||||
|
|
@ -361,6 +370,23 @@ function embedMachine(sName, sVersion, idMachine, sXMLFile, sXSLFile, sParms)
|
|||
try {
|
||||
eMachine = document.getElementById(idMachine);
|
||||
if (eMachine) {
|
||||
|
||||
/*
|
||||
* If we have a 'css' resource, add it to the page first.
|
||||
*/
|
||||
var css;
|
||||
if (typeof resources == "object" && (css = resources['css'])) {
|
||||
var head = document.head || document.getElementsByTagName('head')[0];
|
||||
var style = document.createElement('style');
|
||||
style.type = 'text/css';
|
||||
if (style.styleSheet) {
|
||||
style.styleSheet.cssText = css;
|
||||
} else {
|
||||
style.appendChild(document.createTextNode(css));
|
||||
}
|
||||
head.appendChild(style);
|
||||
}
|
||||
|
||||
var sAppClass = sName.toLowerCase(); // eg, "pcjs" or "c1pjs"
|
||||
if (!sXSLFile) {
|
||||
/*
|
||||
|
|
@ -381,7 +407,6 @@ function embedMachine(sName, sVersion, idMachine, sXMLFile, sXSLFile, sParms)
|
|||
displayError(sXML);
|
||||
return;
|
||||
}
|
||||
Component.addMachineResource(idMachine, sXMLFile, sXML);
|
||||
/*
|
||||
* Non-COMPILED kludge to extract the version number from the stylesheet path in the machine XML file;
|
||||
* we don't need this code in COMPILED (non-DEBUG) releases, because APPVERSION is hard-coded into them.
|
||||
|
|
@ -395,6 +420,9 @@ function embedMachine(sName, sVersion, idMachine, sXMLFile, sXSLFile, sParms)
|
|||
displayError(sXSL);
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* Record the XSL file, in case someone wants to save the entire machine later.
|
||||
*/
|
||||
Component.addMachineResource(idMachine, sXSLFile, sXSL);
|
||||
/*
|
||||
* The <machine> template in components.xsl now generates a "machine div" that makes
|
||||
|
|
|
|||
|
|
@ -55,13 +55,13 @@ function savePC(idMachine, sPCJSFile)
|
|||
var sState = cmp.powerOff(true);
|
||||
var sParms = cmp.saveMachineParms();
|
||||
if (!sPCJSFile) {
|
||||
if (MAXDEBUG) {
|
||||
if (DEBUG) {
|
||||
sPCJSFile = "/tmp/pcjs/" + (XMLVERSION || APPVERSION) + "/pc.js"
|
||||
} else {
|
||||
sPCJSFile = "/versions/pcjs/" + (XMLVERSION || APPVERSION) + "/pc" + (dbg? "-dbg" : "") + ".js";
|
||||
}
|
||||
}
|
||||
web.loadResource(sPCJSFile, true, null, null, downloadPC, [idMachine, sParms, sState, cmp, dbg]);
|
||||
web.loadResource(sPCJSFile, true, null, null, downloadCSS, [idMachine, str.getBaseName(sPCJSFile, true), sParms, sState]);
|
||||
return true;
|
||||
}
|
||||
web.alertUser("Unable to identify machine '" + idMachine + "'");
|
||||
|
|
@ -69,17 +69,50 @@ function savePC(idMachine, sPCJSFile)
|
|||
}
|
||||
|
||||
/**
|
||||
* downloadPC(sURL, sPCJS, nErrorCode, aMachineInfo)
|
||||
* downloadCSS(sURL, sPCJS, nErrorCode, aMachineInfo)
|
||||
*
|
||||
* @param {string} sURL
|
||||
* @param {string} sPCJS
|
||||
* @param {number} nErrorCode
|
||||
* @param {string} aMachineInfo ([0] = idMachine, [1] = sParms, [2] = sState, [3] = Computer component, [4] = Debugger component, if any)
|
||||
* @param {Array} aMachineInfo ([0] = idMachine, [1] = sScript, [2] = sParms, [3] = sState)
|
||||
*/
|
||||
function downloadPC(sURL, sPCJS, nErrorCode, aMachineInfo)
|
||||
function downloadCSS(sURL, sPCJS, nErrorCode, aMachineInfo)
|
||||
{
|
||||
var matchScript;
|
||||
var idMachine = aMachineInfo[0], sXMLFile, sXSLFile;
|
||||
if (!nErrorCode && sPCJS) {
|
||||
aMachineInfo.push(sPCJS);
|
||||
var res = Component.getMachineResources(aMachineInfo[0]);
|
||||
var sCSSFile = null;
|
||||
for (var sName in res) {
|
||||
if (str.endsWith(sName, "components.xsl")) {
|
||||
sCSSFile = sName.replace(".xsl", ".css");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!sCSSFile) {
|
||||
/*
|
||||
* This is probably a bad idea (ie, allowing downloadPC() to proceed with our stylesheet)...
|
||||
*/
|
||||
downloadPC(sURL, null, 0, aMachineInfo);
|
||||
} else {
|
||||
web.loadResource(sCSSFile, true, null, null, downloadPC, aMachineInfo);
|
||||
}
|
||||
return;
|
||||
}
|
||||
web.alertUser("Error (" + nErrorCode + ") requesting " + sURL);
|
||||
}
|
||||
|
||||
/**
|
||||
* downloadPC(sURL, sCSS, nErrorCode, aMachineInfo)
|
||||
*
|
||||
* @param {string} sURL
|
||||
* @param {string|null} sCSS
|
||||
* @param {number} nErrorCode
|
||||
* @param {Array} aMachineInfo ([0] = idMachine, [1] = sScript, [2] = sParms, [3] = sState, [4] = sPCJS)
|
||||
*/
|
||||
function downloadPC(sURL, sCSS, nErrorCode, aMachineInfo)
|
||||
{
|
||||
var matchScript, sXMLFile, sXSLFile;
|
||||
var idMachine = aMachineInfo[0], sScript = aMachineInfo[1], sPCJS = aMachineInfo[4];
|
||||
|
||||
/*
|
||||
* sPCJS is supposed to contain the entire PCjs script, which has been wrapped with:
|
||||
|
|
@ -101,103 +134,101 @@ function downloadPC(sURL, sPCJS, nErrorCode, aMachineInfo)
|
|||
* Note that the "resources" variable has been added to our externs.js, to prevent it from being renamed
|
||||
* by the Closure Compiler.
|
||||
*/
|
||||
if (sPCJS) {
|
||||
matchScript = sPCJS.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);
|
||||
if (!matchScript) {
|
||||
/*
|
||||
* If the match failed, we assume that a DEBUG (uncompiled) script is being used,
|
||||
* so we'll provide a fake match that should work with whatever script was provided.
|
||||
*/
|
||||
if (DEBUG) {
|
||||
matchScript = [sPCJS, "", sPCJS, ""];
|
||||
} else {
|
||||
sPCJS = "";
|
||||
}
|
||||
matchScript = sPCJS.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);
|
||||
if (!matchScript) {
|
||||
/*
|
||||
* If the match failed, we assume that a DEBUG (uncompiled) script is being used,
|
||||
* so we'll provide a fake match that should work with whatever script was provided.
|
||||
*/
|
||||
if (DEBUG) {
|
||||
matchScript = [sPCJS, "", sPCJS, ""];
|
||||
} else {
|
||||
sPCJS = "";
|
||||
}
|
||||
}
|
||||
|
||||
if (sPCJS) {
|
||||
var resOld = Component.getMachineResources(idMachine), resNew = {};
|
||||
for (var sName in resOld) {
|
||||
var data = resOld[sName];
|
||||
var sExt = str.getExtension(sName);
|
||||
if (sExt == "xml") {
|
||||
/*
|
||||
* Look through this resource for <disk> entries whose paths do not appear as one of the
|
||||
* other machine resources, and remove those entries.
|
||||
*/
|
||||
var matchDisk, reDisk = /[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;
|
||||
while (matchDisk = reDisk.exec(resOld[sName])) {
|
||||
var path = matchDisk[2];
|
||||
if (path) {
|
||||
if (resOld[path]) {
|
||||
Component.log("recording disk: '" + path + "'");
|
||||
} else {
|
||||
data = data.replace(matchDisk[0], "");
|
||||
}
|
||||
var resOld = Component.getMachineResources(idMachine), resNew = {};
|
||||
for (var sName in resOld) {
|
||||
var data = resOld[sName];
|
||||
var sExt = str.getExtension(sName);
|
||||
if (sExt == "xml") {
|
||||
/*
|
||||
* Look through this resource for <disk> entries whose paths do not appear as one of the
|
||||
* other machine resources, and remove those entries.
|
||||
*/
|
||||
var matchDisk, reDisk = /[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;
|
||||
while (matchDisk = reDisk.exec(resOld[sName])) {
|
||||
var path = matchDisk[2];
|
||||
if (path) {
|
||||
if (resOld[path]) {
|
||||
Component.log("recording disk: '" + path + "'");
|
||||
} else {
|
||||
data = data.replace(matchDisk[0], "");
|
||||
}
|
||||
}
|
||||
sXMLFile = sName = str.getBaseName(sName);
|
||||
}
|
||||
else if (sExt == "xsl") {
|
||||
sXSLFile = sName = str.getBaseName(sName);
|
||||
}
|
||||
Component.log("saving resource: '" + sName + "' (" + data.length + " bytes)");
|
||||
resNew[sName] = data;
|
||||
sXMLFile = sName = str.getBaseName(sName);
|
||||
}
|
||||
|
||||
if (aMachineInfo[1]) {
|
||||
var sParms = resNew[sName = 'parms'] = aMachineInfo[1];
|
||||
Component.log("saving resource: '" + sName + "' (" + sParms.length + " bytes)");
|
||||
else if (sExt == "xsl") {
|
||||
sXSLFile = sName = str.getBaseName(sName);
|
||||
}
|
||||
|
||||
if (aMachineInfo[2]) {
|
||||
var sState = resNew[sName = 'state'] = aMachineInfo[2];
|
||||
Component.log("saving resource: '" + sName + "' (" + sState.length + " bytes)");
|
||||
}
|
||||
|
||||
if (sXMLFile && sXSLFile) {
|
||||
var sResources = JSON.stringify(resNew);
|
||||
var sScriptFile = str.getBaseName(sURL, true);
|
||||
|
||||
sPCJS = matchScript[1] + "var resources=" + sResources + ";" + matchScript[2] + matchScript[3];
|
||||
Component.log("saving machine: '" + idMachine + "' (" + sPCJS.length + " bytes)");
|
||||
|
||||
var uri;
|
||||
if (MAXDEBUG) {
|
||||
sPCJS = sPCJS.replace(/[\u00A0-\u2666]/g, function(c) {
|
||||
return '&#' + c.charCodeAt(0) + ';';
|
||||
});
|
||||
uri = "data:application/javascript;base64," + btoa(sPCJS);
|
||||
} else {
|
||||
uri = "data:application/javascript," + (web.isUserAgent("Firefox")? encodeURIComponent(sPCJS) : encodeURI(sPCJS));
|
||||
}
|
||||
|
||||
var link = document.createElement('a');
|
||||
if (typeof link.download == 'string') {
|
||||
link.href = uri;
|
||||
link.download = sScriptFile + ".json";
|
||||
document.body.appendChild(link); // Firefox requires the link to be in the body (?)
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
} else {
|
||||
window.open(uri);
|
||||
}
|
||||
|
||||
var sAlert = 'Check your Downloads folder for "' + sScriptFile + '.json", ';
|
||||
sAlert += 'copy it to your web server as "' + sScriptFile + '.js", and then add the following to your web page:\n\n';
|
||||
sAlert += '<div id="' + idMachine + '"></div>\n';
|
||||
sAlert += '...\n';
|
||||
sAlert += '<script type="text/javascript" src="' + sScriptFile + '.js"></script>\n';
|
||||
sAlert += '<script type="text/javascript">embedPC("' + idMachine + '","' + sXMLFile + '","' + sXSLFile + '");</script>\n\n';
|
||||
sAlert += 'The machine should appear where the <div> is located.';
|
||||
web.alertUser(sAlert);
|
||||
} else {
|
||||
web.alertUser("Missing XML/XSL resources");
|
||||
}
|
||||
} else {
|
||||
web.alertUser("Unabled to download script");
|
||||
Component.log("saving resource: '" + sName + "' (" + data.length + " bytes)");
|
||||
resNew[sName] = data;
|
||||
}
|
||||
|
||||
if (sCSS) {
|
||||
resNew[sName = 'css'] = sCSS;
|
||||
Component.log("saving resource: '" + sName + "' (" + sCSS.length + " bytes)");
|
||||
}
|
||||
|
||||
if (aMachineInfo[2]) {
|
||||
var sParms = resNew[sName = 'parms'] = aMachineInfo[2];
|
||||
Component.log("saving resource: '" + sName + "' (" + sParms.length + " bytes)");
|
||||
}
|
||||
|
||||
if (aMachineInfo[3]) {
|
||||
var sState = resNew[sName = 'state'] = aMachineInfo[3];
|
||||
Component.log("saving resource: '" + sName + "' (" + sState.length + " bytes)");
|
||||
}
|
||||
|
||||
if (sXMLFile && sXSLFile) {
|
||||
var sResources = JSON.stringify(resNew);
|
||||
|
||||
sPCJS = matchScript[1] + "var resources=" + sResources + ";" + matchScript[2] + matchScript[3];
|
||||
Component.log("saving machine: '" + idMachine + "' (" + sPCJS.length + " bytes)");
|
||||
|
||||
var uri;
|
||||
if (MAXDEBUG) {
|
||||
sPCJS = sPCJS.replace(/[\u00A0-\u2666]/g, function(c) {
|
||||
return '&#' + c.charCodeAt(0) + ';';
|
||||
});
|
||||
uri = "data:application/javascript;base64," + btoa(sPCJS);
|
||||
} else {
|
||||
uri = "data:application/javascript," + (web.isUserAgent("Firefox")? encodeURIComponent(sPCJS) : encodeURI(sPCJS));
|
||||
}
|
||||
|
||||
var link = document.createElement('a');
|
||||
if (typeof link.download == 'string' && sPCJS.length < 2000000) {
|
||||
link.href = uri;
|
||||
link.download = sScript + ".json";
|
||||
document.body.appendChild(link); // Firefox requires the link to be in the body (?)
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
} else {
|
||||
window.open(uri);
|
||||
}
|
||||
|
||||
var sAlert = 'Check your Downloads folder for "' + sScript + '.json", ';
|
||||
sAlert += 'copy it to your web server as "' + sScript + '.js", and then add the following to your web page:\n\n';
|
||||
sAlert += '<div id="' + idMachine + '"></div>\n';
|
||||
sAlert += '...\n';
|
||||
sAlert += '<script type="text/javascript" src="' + sScript + '.js"></script>\n';
|
||||
sAlert += '<script type="text/javascript">embedPC("' + idMachine + '","' + sXMLFile + '","' + sXSLFile + '");</script>\n\n';
|
||||
sAlert += 'The machine should appear where the <div> is located.';
|
||||
web.alertUser(sAlert);
|
||||
return;
|
||||
}
|
||||
web.alertUser("Missing XML/XSL resources");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
(function(){var f;function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function p(a){return"0x"+n(a,2)}function q(a){return"0x"+n(a,4)}var aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function ba(a){return a.replace(/[&<>"']/g,function(a){return aa[a]})}var ca=Date.now||function(){return+new Date};
|
||||
(function(){var f;function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function p(a){return"0x"+n(a,2)}function r(a){return"0x"+n(a,4)}var aa={"&":"&","<":"<",">":">",'"':""","'":"'"};function ba(a){return a.replace(/[&<>"']/g,function(a){return aa[a]})}var ca=Date.now||function(){return+new Date};
|
||||
function t(a,b,c){var d=0,e=null;if("object"==typeof resources&&(e=resources[a]))c&&(b?c.call(b,a,e,d,void 0):c(a,e,d,void 0));else{var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");g.onreadystatechange=function(){4===g.readyState&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(d=g.status||-1),c&&(b?c.call(b,a,e,d,void 0):c(a,e,d,void 0)))};g.open("GET",a,!0);g.send()}}
|
||||
function u(a){window&&window.alert(a)}function v(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function da(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function ea(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);g=!0}}var w={init:[],show:[],exit:[]},fa=!1,ga=!0;function ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){w.init.push(a)}
|
||||
function ia(a){if(ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function y(a){!ga&&a?(ga=!0,fa&&ja("init")):ga=a}function ja(a){w[a]&&ia(w[a])}ha("onload",function(){fa=!0;ia(w.init)});ha("onpageshow",function(){ia(w.show)});ha(v("Opera")||v("iOS")?"onunload":"onbeforeunload",function(){ia(w.exit)});
|
||||
function z(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.rb=this.id.substr(0,b),this.qb=this.id.substr(b+1)):this.qb=this.id;this[a]=c;this.C={Za:!1,Ba:!1,jb:!1,M:!1,Ca:!1};this.cb=null;this.C.Ca=!1;this.H={};this.u=null;this.la=d||0;A.push(this)}var ka=void 0;
|
||||
if(window){ka||(ka=window.location.search.substr(1));for(var la,ma=/\+/g,na=/([^&=]+)=?([^&]*)/g;la=na.exec(ka);)la[1].replace(ma," "),la[2].replace(ma," ")}function oa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}function B(a){var b;b||(b=z);a.prototype=oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var A=[],C={};
|
||||
function pa(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<A.length;c++)if(A[c].id===a)return A[c]}return null}function D(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}document&&!document.ELEMENT_NODE&&(document.ELEMENT_NODE=1);
|
||||
function E(a,b){for(var c=F(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(h.nodeType===document.ELEMENT_NODE){var k=h.getAttribute("class");if(k)for(var l=k.split(" "),m=0;m<l.length;m++)switch(k=l[m],k){case "c1pjs-binding":(k=D(h))&&k.binding&&a.T(k.type,k.binding,h,k.value),m=l.length}}}}
|
||||
function F(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
if(window){ka||(ka=window.location.search.substr(1));for(var la,ma=/\+/g,na=/([^&=]+)=?([^&]*)/g;la=na.exec(ka);)la[1].replace(ma," "),la[2].replace(ma," ")}function oa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}function B(a){var b;b||(b=z);a.prototype=oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var A=[],D={};
|
||||
function pa(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<A.length;c++)if(A[c].id===a)return A[c]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}document&&!document.ELEMENT_NODE&&(document.ELEMENT_NODE=1);
|
||||
function F(a,b){for(var c=G(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(h.nodeType===document.ELEMENT_NODE){var k=h.getAttribute("class");if(k)for(var l=k.split(" "),m=0;m<l.length;m++)switch(k=l[m],k){case "c1pjs-binding":(k=E(h))&&k.binding&&a.T(k.type,k.binding,h,k.value),m=l.length}}}}
|
||||
function G(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
z.prototype={constructor:z,parent:null,toString:function(){return this.name?this.name:this.id||this.type},T:function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.gb=this.H[b]=c,c.value="",this.l=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.$a=function(a,b,c){this.l(a,"notice",c)}),!0;default:return!1}},log:function(){},l:function(){},status:function(a){this.l(this.qb+": "+a)},$a:function(a,b){b||u(a)},X:function(a){this.C.Ca||(this.C.Za=!1!==a,this.C.Za&&(a=this.cb,this.cb=null,a&&a()))}};function G(a,b){if(a.u){a===a.u?b|=0:b=b||a.la;var c=a.u.la&b;return!!b&&c===b||!!(c&a.u.Re)}return!1}function I(a,b){if(a.C.jb)return a.C.Ba&&(a.C.Ba=!1),a.C.jb=!1;if(a.C.Ca)return a.l(a.toString()+" error"),!1;a.C.Ba=b;return a.C.Ba}
|
||||
this.$a=function(a,b,c){this.l(a,"notice",c)}),!0;default:return!1}},log:function(){},l:function(){},status:function(a){this.l(this.qb+": "+a)},$a:function(a,b){b||u(a)},X:function(a){this.C.Ca||(this.C.Za=!1!==a,this.C.Za&&(a=this.cb,this.cb=null,a&&a()))}};function H(a,b){if(a.u){a===a.u?b|=0:b=b||a.la;var c=a.u.la&b;return!!b&&c===b||!!(c&a.u.Re)}return!1}function I(a,b){if(a.C.jb)return a.C.Ba&&(a.C.Ba=!1),a.C.jb=!1;if(a.C.Ca)return a.l(a.toString()+" error"),!1;a.C.Ba=b;return a.C.Ba}
|
||||
function J(a,b){a.C.Ba&&(b?a.C.jb=!0:void 0===b&&a.l(a.toString()+" busy"));return a.C.Ba}function K(a,b){b&&(a.C.Za?b():a.cb=b);return a.C.Za}function qa(a,b){a.C.Ca=!0;a.$a(b)}function ra(a){z.call(this,"C1PPanel",a);this.C.M=!1}B(ra);ra.prototype.T=function(a,b,c,d){return this.J&&this.J.T(a,b,c,d)||this.s&&this.s.T(a,b,c,d)||this.b&&this.b.T(a,b,c,d)||this.u&&this.u.T(a,b,c,d)?!0:z.prototype.T.call(this,a,b,c,d)};
|
||||
ra.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.s=L(b,"cpu"),this.b=L(b,"keyboard"),this.u=L(b,"debugger"),sa())};function sa(){for(var a=!1,b=F(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=D(d),g=pa(e.id);g||(a=!0,g=new ra(e));E(g,d);a&&g.X()}}x(sa);
|
||||
ra.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.s=L(b,"cpu"),this.b=L(b,"keyboard"),this.u=L(b,"debugger"),sa())};function sa(){for(var a=!1,b=G(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),g=pa(e.id);g||(a=!0,g=new ra(e));F(g,d);a&&g.X()}}x(sa);
|
||||
function ta(a){z.call(this,"C1PCPU",a);ua(this);this.C.M=!1;this.C.ma=!1;this.Ta=a.autoStart;this.Ra=0;this.Ob=1;this.eb=2;this.speed=this.Ra;this.Ja=30;this.Ia=5;this.Ma=8;this.Sa=["Slow","Fast","Max"];this.ib=["(1Mhz)","(up to "+this.Ma+"Mhz)","(unlimited)"];this.P=[];this.K=[];this.oa=65536;this.pa=0;this.da=65536;this.ia=0;this.Qa=32;this.bb=2;this.Nb=1;this.o=[this.yc,this.Sd,this.Je,this.m,this.m,this.Ud,this.oc,this.m,this.Xd,this.Rd,this.nc,this.m,this.m,this.Od,this.lc,this.m,this.xc,this.Td,
|
||||
this.m,this.m,this.m,this.Vd,this.pc,this.m,this.Bc,this.Qd,this.m,this.m,this.m,this.Pd,this.mc,this.m,this.pd,this.hc,this.m,this.m,this.uc,this.jc,this.ce,this.m,this.Zd,this.gc,this.be,this.m,this.tc,this.dc,this.$d,this.m,this.vc,this.ic,this.m,this.m,this.m,this.kc,this.de,this.m,this.te,this.fc,this.m,this.m,this.m,this.ec,this.ae,this.m,this.je,this.cd,this.m,this.m,this.m,this.ed,this.Ld,this.m,this.Wd,this.bd,this.Kd,this.m,this.od,this.Zc,this.Id,this.m,this.zc,this.dd,this.m,this.m,this.m,
|
||||
this.fd,this.Md,this.m,this.Dc,this.ad,this.m,this.m,this.m,this.$c,this.Jd,this.m,this.ke,this.yb,this.m,this.m,this.m,this.Ab,this.he,this.m,this.Yd,this.xb,this.ge,this.m,this.nd,this.ub,this.ee,this.m,this.Ac,this.zb,this.m,this.m,this.m,this.Bb,this.ie,this.m,this.ve,this.wb,this.m,this.m,this.m,this.vb,this.fe,this.m,this.m,this.ze,this.m,this.m,this.He,this.Be,this.Ee,this.m,this.Yc,this.m,this.Ne,this.m,this.Ge,this.we,this.De,this.m,this.qc,this.Ae,this.m,this.m,this.Ie,this.Ce,this.Fe,this.m,
|
||||
|
|
@ -29,7 +29,7 @@ function Da(a){var b=ca(),c=a.kb;a.$&&(c=Math.round(c*a.$/a.ra));c=c-(b-a.lb);if
|
|||
f.va=function(){if(I(this,!0)){this.C.ma||(M(this),this.J&&this.J.start(),this.C.ma=!0,this.H.run&&(this.H.run.innerHTML="Halt"),this.ca());1E6<=this.Aa&&Aa(this,!0);this.$=0;this.lb=ca();try{do{this.step(this.ja);var a=this.L-this.D;this.U+=a;this.$+=a;this.L=this.D=0;this.Z-=this.ja;0>=this.Z&&(this.Z+=this.Xa,this.hb());this.V-=this.ja;0>=this.V&&(this.V+=this.Wa,Ba(this));this.R-=this.ja;if(0>=this.R){this.R+=this.ra;break}}while(this.C.ma)}catch(b){this.aa();this.update();I(this,!1);qa(this,
|
||||
b.stack||b.message);return}setTimeout(function(a){return function(){a.va()}}(this),Da(this))}else this.update(),this.J&&this.J.stop(this.Oa,this.U)};
|
||||
f.step=function(a){var b=!0;this.b=this.g=-1;var c;if(c=a&&this.u)c=this.u,c=0<c.sa.length||0<c.wa.length||0<c.ya.length;this.L=this.D=a;do{a=this.a[this.f];var d;if(d=c){d=this.u;var e=a,g=!1;Ea(d,this.f,d.sa,"exec")?g=!0:(d.L++,d.B[e][1]++,d.xa[d.La++]=d.s.f,d.La>=d.xa.length&&(d.La=0));d=!!g}if(d){b=void 0;this.aa();break}this.f++;this.o[a].call(this);if(0<=this.b){this.b>=this.oa&&this.b<=this.pa&&ya(this,this.b,this.f);if(d=c)d=this.u,e=!1,Ea(d,this.b,d.wa,"read")&&(e=!0),d=!!e;if(d){b=!1;this.aa();
|
||||
break}this.b=-1}else if(0<=this.g){this.g>=this.da&&this.g<=this.ia&&za(this,this.g,this.f);if(d=c){d=this.u;var e=this.g,g=this.a[this.g],h=!1;(g&255)!=g&&(d.l("invalid value at "+q(e)+": "+g),h=!0);Ea(d,e,d.ya,"write")&&(h=!0);d=!!h}if(d){b=!1;this.aa();break}this.g=-1}this.D-=this.fb[a]}while(0<this.D);return b};function Fa(a){a.R=0;a.L-=a.D;a.D=0}f.aa=function(){J(this,!0);this.L-=this.D;this.D=0;this.C.ma&&(this.C.ma=!1,this.H.run&&(this.H.run.innerHTML="Run"))};
|
||||
break}this.b=-1}else if(0<=this.g){this.g>=this.da&&this.g<=this.ia&&za(this,this.g,this.f);if(d=c){d=this.u;var e=this.g,g=this.a[this.g],h=!1;(g&255)!=g&&(d.l("invalid value at "+r(e)+": "+g),h=!0);Ea(d,e,d.ya,"write")&&(h=!0);d=!!h}if(d){b=!1;this.aa();break}this.g=-1}this.D-=this.fb[a]}while(0<this.D);return b};function Fa(a){a.R=0;a.L-=a.D;a.D=0}f.aa=function(){J(this,!0);this.L-=this.D;this.D=0;this.C.ma&&(this.C.ma=!1,this.H.run&&(this.H.run.innerHTML="Run"))};
|
||||
f.update=function(){this.hb();Ba(this)};function Ga(a){return a.C.ma?a.U+a.L-a.D:0}f.S=function(a){return this.a[a]};f.W=function(a,b){this.a[a]=b};function Ca(a){var b=a.c&256?1:0,b=b|(a.j&255?0:2),b=b|((a.v&255^a.A^a.v>>1)&128?64:0),b=b|(a.i&128?128:0);return a.B&60|b}
|
||||
function Ha(a){a.B|=8;a.o[97]=a.$b;a.o[101]=a.bc;a.o[105]=a.Zb;a.o[109]=a.Wb;a.o[113]=a.ac;a.o[117]=a.cc;a.o[121]=a.Yb;a.o[125]=a.Xb;a.o[225]=a.pe;a.o[229]=a.re;a.o[233]=a.oe;a.o[237]=a.le;a.o[241]=a.qe;a.o[245]=a.se;a.o[249]=a.ne;a.o[253]=a.me}function Ia(a){a.B&=-9;a.o[97]=a.yb;a.o[101]=a.Ab;a.o[105]=a.xb;a.o[109]=a.ub;a.o[113]=a.zb;a.o[117]=a.Bb;a.o[121]=a.wb;a.o[125]=a.vb;a.o[225]=a.Gb;a.o[229]=a.Ib;a.o[233]=a.Fb;a.o[237]=a.Cb;a.o[241]=a.Hb;a.o[245]=a.Jb;a.o[249]=a.Eb;a.o[253]=a.Db}
|
||||
function P(a,b,c){var d=a.c&256?1:0,e=(b&15)+(c&15)+d;10<=e&&(e=e+6&15|16);e+=(b&240)+(c&240);a.A=b^c;a.v=e;a.i=e&255;160<=e&&(e+=96);512<=e&&(e-=256);a.c=e;a.j=b+c+d&255;a.D--;return e&255}function Q(a,b,c){var d=a.c&256?0:1,e=(b&15)-(c&15)-d;0>e&&(e=(e-6&15)-16);e+=(b&240)-(c&240);0>e&&(e-=96);a.i=a.j=(a.c=b-c-d)&255;a.A=b^c;a.v=a.c;a.c^=256;a.D--;return e&255}function ua(a){a.h=0;a.w=0;a.F=0;a.G=256;a.B=0;a.i=0;a.j=0;a.A=0;a.v=0;a.c=0;a.f=0;a.b=-1;a.g=-1;a.ta=0;a.U=a.L=a.D=0}
|
||||
|
|
@ -74,51 +74,51 @@ f.Hb=function(){this.b=this.a[this.f++];this.b=(this.a[this.b]|this.a[this.b+1]<
|
|||
f.Jb=function(){this.b=this.a[this.f++]+this.w&255;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.se=function(){this.b=this.a[this.f++]+this.w&255;this.h=Q(this,this.h,this.a[this.b])};f.kd=function(){this.g=this.a[this.f++]+this.w&255;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};f.ue=function(){Ha(this)};
|
||||
f.Eb=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.ne=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.F;this.h=Q(this,this.h,this.a[this.b])};
|
||||
f.Db=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.c=this.h-this.a[this.b]-(this.c&256?0:1);this.A=this.h^this.a[this.b];this.v=this.c;this.i=this.j=this.h=this.c&255;this.c^=256};f.me=function(){this.b=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.h=Q(this,this.h,this.a[this.b])};f.hd=function(){this.g=(this.a[this.f++]|this.a[this.f++]<<8)+this.w;this.i=this.j=this.a[this.g]=this.a[this.g]+1&255};
|
||||
f.Je=function(){var a;a=this.a[this.f++];switch(a){case 0:this.l("HALT");this.aa();break;case 1:a=this.f;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.f=a;b=b.replace(/%A/g,n(this.h,2)).replace(/%X/g,n(this.w,2)).replace(/%Y/g,n(this.F,2));this.l(b);Fa(this);break;default:this.f-=2,this.l("undefined opSim: "+p(a)+" at "+q(this.f)),this.aa()}};f.m=function(){var a=this.a[--this.f];this.l("undefined opcode: "+p(a)+" at "+q(this.f));this.aa()};
|
||||
x(function(){for(var a=F(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new ta(d);E(d,c)}});function R(a){z.call(this,"C1PROM",a);this.b=this.a=null;this.g=a.size;if(this.o=a.image){a=this.o;var b;b=this.o;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.o+"&format=bytes");t(a,this,this.A)}}B(R);
|
||||
R.prototype.ba=function(a,b,c,d){this.a=a;this.v=b;a=c-b+1;this.g||(this.g=a);a!=this.g?qa(this,"computer-specified ROM size ("+q(a)+") does not match component-specified size ("+q(this.g)+")"):(d&&(this.s=d,N(d,b,c,this,this.W)),Ja(this))};R.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};R.prototype.W=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.pb,!0);var c=a-this.v;this.a[this.v+c]=this.b?this.b[c]:0}};
|
||||
f.Je=function(){var a;a=this.a[this.f++];switch(a){case 0:this.l("HALT");this.aa();break;case 1:a=this.f;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.f=a;b=b.replace(/%A/g,n(this.h,2)).replace(/%X/g,n(this.w,2)).replace(/%Y/g,n(this.F,2));this.l(b);Fa(this);break;default:this.f-=2,this.l("undefined opSim: "+p(a)+" at "+r(this.f)),this.aa()}};f.m=function(){var a=this.a[--this.f];this.l("undefined opcode: "+p(a)+" at "+r(this.f));this.aa()};
|
||||
x(function(){for(var a=G(document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new ta(d);F(d,c)}});function R(a){z.call(this,"C1PROM",a);this.b=this.a=null;this.g=a.size;if(this.o=a.image){a=this.o;var b;b=this.o;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+(window?window.location.host:"www.pcjs.org")+"/api/v1/dump?file="+this.o+"&format=bytes");t(a,this,this.A)}}B(R);
|
||||
R.prototype.ba=function(a,b,c,d){this.a=a;this.v=b;a=c-b+1;this.g||(this.g=a);a!=this.g?qa(this,"computer-specified ROM size ("+r(a)+") does not match component-specified size ("+r(this.g)+")"):(d&&(this.s=d,N(d,b,c,this,this.W)),Ja(this))};R.prototype.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};R.prototype.W=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.pb,!0);var c=a-this.v;this.a[this.v+c]=this.b?this.b[c]:0}};
|
||||
R.prototype.A=function(a,b,c){if(c)this.l('Error loading ROM "'+a+'" ('+c+")");else{if("["==b.charAt(0)||"{"==b.charAt(0))try{var d=eval("("+b+")"),e=d.bytes;e?this.b=e:this.b=d}catch(g){this.l('Error processing ROM "'+a+'": '+g.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.b=Array(a.length),b=0;b<a.length;b++)this.b[b]=parseInt(a[b],16);Ja(this)}};
|
||||
function Ja(a){if(!K(a))if(!a.o)a.X();else if(a.b&&a.a){var b=a.b.length;if(b!=a.g)qa(a,"ROM image size ("+q(b)+") does not match component-specified size ("+q(a.g)+")");else{for(var c=0;c<b;c++)a.a[a.v+c]=a.b[c];a.X()}}}x(function(){for(var a=F(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new R(d);E(d,c)}});function Ka(a){z.call(this,"C1PRAM",a)}B(Ka);Ka.prototype.ba=function(a){this.a=a;this.X()};
|
||||
x(function(){for(var a=F(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Ka(d);E(d,c)}});
|
||||
function Ja(a){if(!K(a))if(!a.o)a.X();else if(a.b&&a.a){var b=a.b.length;if(b!=a.g)qa(a,"ROM image size ("+r(b)+") does not match component-specified size ("+r(a.g)+")");else{for(var c=0;c<b;c++)a.a[a.v+c]=a.b[c];a.X()}}}x(function(){for(var a=G(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new R(d);F(d,c)}});function Ka(a){z.call(this,"C1PRAM",a)}B(Ka);Ka.prototype.ba=function(a){this.a=a;this.X()};
|
||||
x(function(){for(var a=G(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Ka(d);F(d,c)}});
|
||||
function La(a){z.call(this,"C1PKeyboard",a);this.C.M=!1;this.Ia=a.model;this.da=8;this.fb=10;this.Xa=13;this.ia=27;this.Oa=this.da;this.Wa=this.fb;this.Ja=this.Xa;this.$=this.ia;this.L=241;this.Z=224;this.Sa=3;this.Ta=15;this.K=1;this.D=[];this.D["break"]=this.Z;this.D.esc=this.$;this.D["ctrl-c"]=this.Sa;this.D["ctrl-o"]=this.Ta;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
|
||||
29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.Oa]=22E3;this.b[this.Wa]=21504;this.b[this.Ja]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]=
|
||||
17904;this.b[116]=17408;this.b[84]=17648;this.b[121]=17152;this.b[89]=17392;this.b[117]=16896;this.b[85]=17136;this.b[105]=16640;this.b[73]=16880;this.b[115]=14080;this.b[83]=14320;this.b[100]=13824;this.b[68]=14064;this.b[102]=13568;this.b[70]=13808;this.b[103]=13312;this.b[71]=13552;this.b[104]=13056;this.b[72]=13296;this.b[106]=12800;this.b[74]=13040;this.b[107]=12544;this.b[75]=12784;this.b[91]=12784;this.b[120]=9984;this.b[88]=10224;this.b[99]=9728;this.b[67]=9968;this.b[118]=9472;this.b[86]=
|
||||
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.L]=1536;this.b[this.$]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}B(La);
|
||||
f=La.prototype;f.reset=function(){this.Na(this.Ia);this.g=this.K;this.oa=0;this.o=[this.K,0,0,0,0,0,0,0];this.P=[];if(this.v)for(var a in this.v)isNaN(+a)||this.v[a]&&clearTimeout(this.v[a]);this.v=[];this.Aa=this.A=0;this.pa=-1;this.ja=this.o;this.qa=this.V=0;this.B=""};
|
||||
f.T=function(a,b,c){if(void 0===this.H[b])switch(b){case "keyDown":return this.H[b]=c,c.onkeydown=function(a){return function(b){return Ma(a,b,!0)}}(this),!0;case "keyPress":return this.H[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.B="";a.g&8?a.g&=-9:c=!Na(a,b);a.u&&G(a.u,a.u.za)&&a.u.message("keyPress("+p(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.H[b]=c,c.onkeyup=function(a){return function(b){return Ma(a,b,
|
||||
f.T=function(a,b,c){if(void 0===this.H[b])switch(b){case "keyDown":return this.H[b]=c,c.onkeydown=function(a){return function(b){return Ma(a,b,!0)}}(this),!0;case "keyPress":return this.H[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.B="";a.g&8?a.g&=-9:c=!Na(a,b);a.u&&H(a.u,a.u.za)&&a.u.message("keyPress("+p(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.H[b]=c,c.onkeyup=function(a){return function(b){return Ma(a,b,
|
||||
!1)}}(this),!0;case "break":return this.H[b]=c,c.onclick=function(a){return function(){a.J&&a.J.reset(!0)}}(this),!0;default:if(void 0!==this.D[b])return this.H[b]=c,c.onclick=function(a,b,c){return function(){a.s&&a.s.ca();return!Na(a,c)}}(this,b,this.D[b]),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.ra=b;this.ib=c-b+1;this.lb=this.ra+this.ib;d&&(this.s=d,N(d,b,c,this,this.W));this.X()};f.Na=function(a){this.O=a;this.R=255;600!=this.O&&(this.R=0,this.l("updated keyboard model: "+this.O))};
|
||||
f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.u=L(b,"debugger"))};f.X=function(){this.U=(this.kb=v("iOS"))||v("Android");this.u&&G(this.u,this.u.za)&&this.u.message("mobile keyboard support: "+(this.U?"true":"false")+" ("+window.navigator.userAgent+")");z.prototype.X.call(this)};function Oa(a,b){var c=b?100:250;a.s&&a.s.ta&&(c/=a.s.ta);return c}function Pa(a,b){!a.A||void 0!==b&&b==a.A||(a.u&&G(a.u,a.u.za)&&a.u.message("autoClear("+p(a.A)+")"),clearTimeout(a.v[a.A]),T(a,a.A,!1,4))}
|
||||
f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.u=L(b,"debugger"))};f.X=function(){this.U=(this.kb=v("iOS"))||v("Android");this.u&&H(this.u,this.u.za)&&this.u.message("mobile keyboard support: "+(this.U?"true":"false")+" ("+window.navigator.userAgent+")");z.prototype.X.call(this)};function Oa(a,b){var c=b?100:250;a.s&&a.s.ta&&(c/=a.s.ta);return c}function Pa(a,b){!a.A||void 0!==b&&b==a.A||(a.u&&H(a.u,a.u.za)&&a.u.message("autoClear("+p(a.A)+")"),clearTimeout(a.v[a.A]),T(a,a.A,!1,4))}
|
||||
function U(a,b,c){a.B=b;Qa(a,c||300)}function Qa(a,b){if(0<a.B.length){var c=a.B.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.B=a.B.substr(1);Na(a,c)}0<a.B.length&&setTimeout(function(a){return function(){Qa(a,b)}}(a),b)}
|
||||
function Ma(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.Aa=b);16==b?(a.g&=-5,c&&(a.g|=4),b+=224,e=!1):18==b?(a.g&=-3,c&&(a.g|=2),b+=224,e=!1):b==a.L-224?(a.g&=-65,c&&(a.g|=64),b+=224,e=!1):20==b?(c=!c,a.g&=~a.K,c&&(a.g|=a.K),b+=224,e=!1):91==b?(a.g&=-9,c&&(a.g|=8),e=!1,d=!0):d=9==b?e=!1:b==a.ia||b==a.da?c?!Na(a,b):!1:!0;e&&(a.g&=-9,a.U||b!=a.Aa||Pa(a));void 0===d&&(d=!T(a,b,c,2));a.u&&G(a.u,a.u.za)&&a.u.message("key"+(c?"Down":"Up")+"("+p(b)+"): "+(d?"pass":"consume"));return d}
|
||||
function Na(a,b){var c=!1;b==a.Z?a.J&&(a.J.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Pa(a,b),T(a,b,!0,0)&&(a.s.speed==a.s.eb?T(a,b,!1,1):(c=!1,a.v[b]&&(clearTimeout(a.v[b]),c=!0),c=Oa(a,c),a.v[a.A=b]=setTimeout(function(a){return function(){T(a,b,!1,3)}}(a),c),a.u&&G(a.u,a.u.za)&&a.u.message("keyPressSimulate("+p(b)+"): setTimeout()")),c=!0));a.u&&G(a.u,a.u.za)&&a.u.message("keyPressSimulate("+p(b)+"): "+(c?"true":"false"));return c}
|
||||
function Ma(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.Aa=b);16==b?(a.g&=-5,c&&(a.g|=4),b+=224,e=!1):18==b?(a.g&=-3,c&&(a.g|=2),b+=224,e=!1):b==a.L-224?(a.g&=-65,c&&(a.g|=64),b+=224,e=!1):20==b?(c=!c,a.g&=~a.K,c&&(a.g|=a.K),b+=224,e=!1):91==b?(a.g&=-9,c&&(a.g|=8),e=!1,d=!0):d=9==b?e=!1:b==a.ia||b==a.da?c?!Na(a,b):!1:!0;e&&(a.g&=-9,a.U||b!=a.Aa||Pa(a));void 0===d&&(d=!T(a,b,c,2));a.u&&H(a.u,a.u.za)&&a.u.message("key"+(c?"Down":"Up")+"("+p(b)+"): "+(d?"pass":"consume"));return d}
|
||||
function Na(a,b){var c=!1;b==a.Z?a.J&&(a.J.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Pa(a,b),T(a,b,!0,0)&&(a.s.speed==a.s.eb?T(a,b,!1,1):(c=!1,a.v[b]&&(clearTimeout(a.v[b]),c=!0),c=Oa(a,c),a.v[a.A=b]=setTimeout(function(a){return function(){T(a,b,!1,3)}}(a),c),a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+p(b)+"): setTimeout()")),c=!0));a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+p(b)+"): "+(c?"true":"false"));return c}
|
||||
function T(a,b,c,d){var e=!1;c||(a.v[b]=null,a.A==b&&(a.A=0));var g=0,h=a.b[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.L),h=a.b[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.o[b]|=1<<e,a.o[0]=g==a.L?a.o[0]|64:240==g?a.o[0]|4:242==g?a.o[0]|2:a.o[0]&-71):(a.o[b]&=~(1<<e),a.o[0]&=-71,a.o[0]|=a.g&70),c=0==d&&!a.P.length,a.P.push(a.o.slice()),Ra(a,c),e=!0);return e}f.S=function(){};f.W=function(a){this.oa=this.s.S(a)^this.R;this.V++;Ra(this,!1,a)};
|
||||
function Ra(a,b,c){var d=Ga(a.s);b||(a.s.speed==a.s.eb?b=void 0!==c&&32<=a.V:(b=d-a.qa,b=0>b||8192<=b));b&&(b=a.P.shift(),void 0!==b&&(a.ja=b),a.V=0,a.qa=d);for(b=d=0;8>b;b++)a.oa&1<<b&&(d|=a.ja[b]);d^=a.R;if(void 0!==c)a.a[c]=d;else if(c=a.ra,d!=a.pa)for(;c<a.lb;c++)a.a[c]=d;a.pa=d}x(function(){for(var a=F(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new La(d);E(d,c)}});
|
||||
function Ra(a,b,c){var d=Ga(a.s);b||(a.s.speed==a.s.eb?b=void 0!==c&&32<=a.V:(b=d-a.qa,b=0>b||8192<=b));b&&(b=a.P.shift(),void 0!==b&&(a.ja=b),a.V=0,a.qa=d);for(b=d=0;8>b;b++)a.oa&1<<b&&(d|=a.ja[b]);d^=a.R;if(void 0!==c)a.a[c]=d;else if(c=a.ra,d!=a.pa)for(;c<a.lb;c++)a.a[c]=d;a.pa=d}x(function(){for(var a=G(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new La(d);F(d,c)}});
|
||||
function Sa(a,b,c,d){z.call(this,"C1PVideo",a);this.ja=a.model;this.Z=a.charCols;this.$=a.charRows;this.pa=a.screenWidth;this.qa=a.screenHeight;this.A=a.charWidth;this.B=a.charHeight;Ta(this);this.D=b;this.ia=c;this.o=d}B(Sa);f=Sa.prototype;f.reset=function(a){this.Na(this.ja);if(this.a)for(var b=this.K;b<this.P;b++)this.a[b]=a?Math.floor(256*Math.random()):32};f.T=function(a,b,c){switch(b){case "refresh":return this.H[b]=c,c.onclick=function(a){return function(){Ua(a);va(a)}}(this),!0}return!1};
|
||||
f.ba=function(a,b,c,d){this.a=a;this.K=b;this.oa=c-b+1;this.P=this.K+this.oa;d&&(this.s=d,wa(d,56832,56832,this,this.S),N(d,56832,56832,this,this.W));this.reset(!0)};function Ta(a,b,c,d,e){a.J=void 0!==b?b:a.Z;a.ra=void 0!==c?c:a.$;a.g=a.J*a.ra;a.P=a.K+a.g;a.V=void 0!==d?d:0;a.da=void 0!==e?e:c;a.R=Math.floor(a.pa/a.J);a.U=Math.floor(a.qa/a.da)}f.ca=function(){this.D.focus()};
|
||||
f.Na=function(a){this.O=a;600==this.O?(Ta(this,this.Z,this.$,3,25),1024==this.g&&this.s&&(this.v=this.P+this.g-1,N(this.s,this.v,this.v,this,this.Mb))):(this.l("updated video model: "+this.O),Ta(this,64,32));Ua(this);va(this)};f.ha=function(a,b){if(a&&!this.C.M&&K(this)){if(this.C.M=!0,this.u=L(b,"debugger"),this.b=L(b,"keyboard"))this.b.T("canvas","keyDown",this.D),this.b.T("canvas","keyPress",this.D),this.b.T("canvas","keyUp",this.D)}else!a&&this.C.M&&(this.C.M=!1)};
|
||||
f.X=function(){this.A||(this.A=Math.floor(this.o.width/16));this.B||(this.B=Math.floor(this.o.height/16));z.prototype.X.call(this)};f.S=function(a,b){var c=this.s.S(a);void 0!==b&&this.u&&S(this.u,this,a,b,this.u.ab);this.s.W(a,c&127|(Math.floor(Ga(this.s)/8333)&1?128:0))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.ab)};
|
||||
f.Mb=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.ab,!0);this.Na(540);this.b&&this.b.Na(542);var c=this.s,d=c.K,e=[],g=xa(d,this.v,this.v,this,this.Mb);if(0<=g){e.push(d[g][0]);e.push(d[g][1]);d.splice(g,1);for(var h=65536,k=0,g=0;g<d.length;g++)h>d[g][0]&&(h=d[g][0]),k<d[g][1]&&(k=d[g][1]);e.push(h);e.push(k)}4==e.length&&(c.da=e[2],c.ia=e[3])}};function Ua(a){a.L=Array(a.g);for(var b=0;b<=a.g;b++)a.L[b]=-1}
|
||||
function va(a){var b=0;if(a.C.M)for(;b<a.g;){var c=a.a[a.K+b];if(a.L[b]!=c){var d=Math.floor(b/a.J);if(d>=a.V&&(d-=a.V,d<a.da)){var e=c*a.A;a.ia.drawImage(a.o,e%a.o.width,Math.floor(e/a.o.width)*a.B,a.A,a.B,b%a.J*a.R,d*a.U,a.R,a.U)}a.L[b]=c}b++}}
|
||||
x(function(){for(var a=F(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=D(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
|
||||
e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",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.appendChild(e);var g=new Image,h=e.getContext("2d"),e=new Sa(d,e,h,g);g.onload=function(a){return function(){a.X()}}(e,d.charSet);g.src=d.charSet;E(e,c)}});
|
||||
x(function(){for(var a=G(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=E(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
|
||||
e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",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.appendChild(e);var g=new Image,h=e.getContext("2d"),e=new Sa(d,e,h,g);g.onload=function(a){return function(){a.X()}}(e,d.charSet);g.src=d.charSet;F(e,c)}});
|
||||
function Va(a){z.call(this,"C1PSerialPort",a);this.C.M=!1;this.O=a.demo;this.reset()}B(Va);f=Va.prototype;f.reset=function(){if(2!=this.g){this.v=this.B=0;var a=1;if(this.rb){var b=this.rb.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.o='10 PRINT "HELLO OSI #'+a+'"\n';this.g=this.A=0}};f.start=function(){this.b&&this.O&&(U(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.g=1;U(a.b,"LOAD\n")}}(this),12E3));this.O=!1};
|
||||
f.T=function(a,b,c){var d=this;switch(b){case "listSerial":return this.H[b]=c,!0;case "loadSerial":return this.H[b]=c,c.onclick=function(){d.H.listSerial&&t(d.H.listSerial.value,d,d.sb)},!0;case "mountSerial":return!v("Mobi")&&window&&"FileReader"in window?(this.H[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){d.sb(b.name,c.result.toString(),
|
||||
0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.D=b;this.L=c-b+1;this.K=this.D+this.L;if(this.s=d)wa(d,b,c,this,this.S),N(d,b,c,this,this.W);this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.b=L(b,"keyboard"),this.u=L(b,"debugger"))};
|
||||
f.sb=function(a,b,c){b?(this.o=b,this.g=this.A=0,this.J&&this.b&&this.s.C.ma?(this.l("auto-loading "+a),this.s.ca(),"."!=this.o.charAt(0)?(this.g=1,U(this.b,"NEW\nLOAD\n")):(this.g=2,this.J.reset(!0),U(this.b,"ML"))):this.l(a+" ready to load")):this.l(a+" load error ("+c+")")};f.S=function(a,b){void 0!==b&&(a&1?Wa(this):this.o&&!this.A&&Wa(this))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.Rb,!0)};
|
||||
function Wa(a){if(void 0!==a.o){a.B=0;a.v=0;if(a.A<a.o.length){var b=a.o.charCodeAt(a.A++);10==b&&(b=13);a.B=b;a.v=1}else 1==a.g&&a.b&&U(a.b," \nRUN\n"),a.g=0;for(b=a.D+0;b<a.K;b+=2)a.a[b]=a.v?1:0;for(b=a.D+1;b<a.K;b+=2)a.a[b]=a.v?a.B:0}}x(function(){for(var a=F(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Va(d);E(d,c)}});function Xa(a){z.call(this,"C1PDiskController",a);this.C.M=!1;this.reset(!0)}B(Xa);f=Xa.prototype;
|
||||
function Wa(a){if(void 0!==a.o){a.B=0;a.v=0;if(a.A<a.o.length){var b=a.o.charCodeAt(a.A++);10==b&&(b=13);a.B=b;a.v=1}else 1==a.g&&a.b&&U(a.b," \nRUN\n"),a.g=0;for(b=a.D+0;b<a.K;b+=2)a.a[b]=a.v?1:0;for(b=a.D+1;b<a.K;b+=2)a.a[b]=a.v?a.B:0}}x(function(){for(var a=G(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Va(d);F(d,c)}});function Xa(a){z.call(this,"C1PDiskController",a);this.C.M=!1;this.reset(!0)}B(Xa);f=Xa.prototype;
|
||||
f.reset=function(a){Ya(this);this.b=-1;a&&(this.g=[],this.g[0]={Se:0,tb:40,Sb:!0,Fa:20,na:0,Ea:-1,Va:[]})};
|
||||
function Ya(a){a.K={I:64,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.B.I&4||V(a,0,this)}}(a)};a.o={I:255,read:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.o.I:Za(a,c,a.A.I);c=(c|190)&-2;if(0<=a.b&&a.g[a.b].Va.length){var d=a.g[a.b];d.Sb&&(c&=-33);d.na||(c&=-3);10>=--d.Fa&&(0<d.Fa?(c&=-129,$a(a)):(d.Fa=100,0<=a.b&&(a.g[a.b].Ea=0,ab(a))))}this.I=c;a.B.I&4&&V(a,0,this)}}(a)};a.B={I:0,read:function(){},update:function(a){return function(c){void 0!==
|
||||
c&&(this.I=c&-193);V(a,1,this);a.o.update();a.K.update()}}(a)};a.L={I:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.D.I&4||V(a,2,this)}}(a)};a.A={I:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.A.I:Za(a,a.o.I,c);if(0<=a.b&&a.b<a.g.length){var d=a.g[a.b];d.Va.length&&a.A.I&8&&!(c&8)&&(c&4?d.na--:d.na++,a.u&&G(a.u,a.u.Ha)&&a.u.message("stepping "+(c&4?"down":"up")+" to track "+d.na),d.na>=d.tb&&(d.na=d.tb),0>d.na&&(d.na=0),d.Fa=20,
|
||||
c&&(this.I=c&-193);V(a,1,this);a.o.update();a.K.update()}}(a)};a.L={I:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.D.I&4||V(a,2,this)}}(a)};a.A={I:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.A.I:Za(a,a.o.I,c);if(0<=a.b&&a.b<a.g.length){var d=a.g[a.b];d.Va.length&&a.A.I&8&&!(c&8)&&(c&4?d.na--:d.na++,a.u&&H(a.u,a.u.Ha)&&a.u.message("stepping "+(c&4?"down":"up")+" to track "+d.na),d.na>=d.tb&&(d.na=d.tb),0>d.na&&(d.na=0),d.Fa=20,
|
||||
a.o.update(a.o.I|128),$a(a))}this.I=c;a.D.I&4&&V(a,2,this)}}(a)};a.D={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c&-193);V(a,3,this);a.A.update();a.L.update()}}(a)};a.P={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(3==(c&3)&&(a.v.I=14),this.I=c);a.v.update()}}(a)};a.v={I:14,read:function(){},update:function(a){return function(c){void 0===c&&(c=a.v.I);c&=-2;0<=a.b&&0<=a.g[a.b].Ea&&(c|=1);this.I=c;V(a,16,this)}}(a)};a.O={I:0,read:function(a){return function(){ab(a)}}(a),
|
||||
update:function(a){return function(c){void 0!==c&&(this.I=c);V(a,17,this)}}(a)};a.R={I:0,read:function(){},update:function(){return function(){}}(a)}}
|
||||
f.T=function(a,b,c){switch(b){case "listDisk":return this.H[b]=c,!0;case "loadDisk":return this.H[b]=c,c.onclick=function(a){return function(){if(a.H.listDisk){var b=a.H.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);var h=b,k=b.lastIndexOf("/");0<=k&&(h=b.substr(k+1));k=h.indexOf("&");0<k&&(h=h.substr(0,k));a.l("loading "+h+"...");t(c,a,a.Ub)}}}(this),!0}return!1};
|
||||
f.ba=function(a,b,c,d){this.a=a;this.J=b;if(this.s=d)wa(d,b,c,this,this.S),N(d,b,c,this,this.W);this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};
|
||||
f.Ub=function(a,b,c){if(c)this.l("disk load error ("+c+")");else{c=[];this.l("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.l("data error: "+d[0]);else if(this.g[0]){for(b=0;b<d.length;b++){var e,g=d[b],h=g.sectors;if(void 0===(e=g.trackNum)||void 0===h)throw Error("track "+b+" missing data");e!=b&&u("track "+e+" out of order (expected "+b+")");c=[];var k,l,m;if(e){bb(c,g,"trackSig");cb(c,g);W(c,g,"trackType");for(var r=0;r<h.length;r++){k=
|
||||
h[r];l=k.sectorData;W(c,k,"sectorSig");W(c,k,"sectorNum");W(c,k,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);bb(c,k,"sectorEndSig")}}else for(k=h[0],l=k.sectorData,W(c,g,"trackLoad",2),W(c,k,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[e].Lb=c;this.u&&G(this.u,this.u.Ha)&&this.u.message("track "+e+": "+c.length+" bytes")}this.g[0].Va=d;this.l("mount of "+a+" complete")}else this.l("no available drives")}else this.l("no tracks: "+a);else this.l("no data: "+a)}catch(H){this.l("disk data error: "+
|
||||
H.message)}}};function cb(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function W(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function bb(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
|
||||
f.Ub=function(a,b,c){if(c)this.l("disk load error ("+c+")");else{c=[];this.l("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.l("data error: "+d[0]);else if(this.g[0]){for(b=0;b<d.length;b++){var e,g=d[b],h=g.sectors;if(void 0===(e=g.trackNum)||void 0===h)throw Error("track "+b+" missing data");e!=b&&u("track "+e+" out of order (expected "+b+")");c=[];var k,l,m;if(e){bb(c,g,"trackSig");cb(c,g);W(c,g,"trackType");for(var q=0;q<h.length;q++){k=
|
||||
h[q];l=k.sectorData;W(c,k,"sectorSig");W(c,k,"sectorNum");W(c,k,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);bb(c,k,"sectorEndSig")}}else for(k=h[0],l=k.sectorData,W(c,g,"trackLoad",2),W(c,k,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[e].Lb=c;this.u&&H(this.u,this.u.Ha)&&this.u.message("track "+e+": "+c.length+" bytes")}this.g[0].Va=d;this.l("mount of "+a+" complete")}else this.l("no available drives")}else this.l("no tracks: "+a);else this.l("no data: "+a)}catch(C){this.l("disk data error: "+
|
||||
C.message)}}};function cb(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function W(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function bb(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
|
||||
function db(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.B.I&4?a.o:a.K;break;case 1:a=a.B;break;case 2:a=a.D.I&4?a.A:a.L;break;case 3:a=a.D;break;case 16:a=c?a.P:a.v;break;case 17:a=a.O;break;default:a=a.R}return a}f.S=function(a,b){if(void 0!==b){var c=db(this,a-this.J,!1);this.u&&S(this.u,this,a,b,this.u.Ha,!1,c.Kb);c.read()}};
|
||||
f.W=function(a,b){if(void 0!==b){var c=this.s.S(a),d=db(this,a-this.J,!0);if(this.u&&G(this.u,this.u.Ha|this.u.pb)&&(S(this.u,this,a,b,this.u.Ha,!0,d.Kb),d.Pb))for(var e=128,g=d.I^c;g&&e;)g&e&&this.u.message(" changed "+d.Kb+"."+d.Pb[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Za(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.o.I&64||(d|=1));a.b!=d&&(a.b=d,a.v.update())}function $a(a){0<=a.b&&(a.g[a.b].Ea=-1,a.O.update(255),a.v.update())}
|
||||
function ab(a){var b=null;if(0<=a.b){var b=a.g[a.b],c=b.Va[b.na];void 0!==c&&(0<=b.Ea&&b.Ea<c.Lb.length?(b.Fa=100,b=c.Lb[b.Ea++],a.O.update(b),a.v.update()):(b.Fa=10,$a(a)))}}function V(a,b,c){a.s.W(b+a.J,c.I)}x(function(){for(var a=F(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Xa(d);E(d,c)}});
|
||||
f.W=function(a,b){if(void 0!==b){var c=this.s.S(a),d=db(this,a-this.J,!0);if(this.u&&H(this.u,this.u.Ha|this.u.pb)&&(S(this.u,this,a,b,this.u.Ha,!0,d.Kb),d.Pb))for(var e=128,g=d.I^c;g&&e;)g&e&&this.u.message(" changed "+d.Kb+"."+d.Pb[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Za(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.o.I&64||(d|=1));a.b!=d&&(a.b=d,a.v.update())}function $a(a){0<=a.b&&(a.g[a.b].Ea=-1,a.O.update(255),a.v.update())}
|
||||
function ab(a){var b=null;if(0<=a.b){var b=a.g[a.b],c=b.Va[b.na];void 0!==c&&(0<=b.Ea&&b.Ea<c.Lb.length?(b.Fa=100,b=c.Lb[b.Ea++],a.O.update(b),a.v.update()):(b.Fa=10,$a(a)))}}function V(a,b,c){a.s.W(b+a.J,c.I)}x(function(){for(var a=G(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Xa(d);F(d,c)}});
|
||||
function eb(a){z.call(this,"C1PDebugger",a);this.u=this;this.L=-1;this.ua=0;this.nb=null;this.Ya=!1;this.ga=0;this.sa=[];this.wa=[];this.ya=[];this.La=0;this.xa=[];this.B=[];this.pb=1;this.za=16;this.ab=32;this.Ha=64;this.Rb=128;this.la=this.Z=0;this.Ua={port:1,kbd:16,video:32,disk:64,serial:128};this.Qa=28;this.bb=56;this.Ka="ADC AND ASL BCC BCS BEQ BIT BMI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX DEY EOR INC INX INY JMP JSR LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA STX STY TAX TAY TSX TXA TXS TYA SIM .DB".split(" ");
|
||||
this.V=["HLT","MSG"];fb(this,!0);this.fa=[[10],[34,1,this.D],[this.bb,1],[],[],[34,1,this.b],[2,1,this.b],[],[36],[34,1,this.v],[2,0,this.P],[],[],[34,2,this.N],[2,2,this.N],[],[9,1,this.ea],[34,1,this.J],[],[],[],[34,1,this.g],[2,1,this.g],[],[13],[34,2,this.A],[],[],[],[34,2,this.o],[2,2,this.o],[],[this.Qa,2,this.Pa],[1,1,this.D],[],[],[6,1,this.b],[1,1,this.b],[39,1,this.b],[],[38],[1,1,this.v],[39,0,this.P],[],[6,2,this.N],[1,2,this.N],[39,2,this.N],[],[7,1,this.ea],[1,1,this.J],[],[],[],[1,
|
||||
1,this.g],[39,1,this.g],[],[44],[1,2,this.A],[],[],[],[1,2,this.o],[39,2,this.o],[],[41],[23,1,this.D],[],[],[],[23,1,this.b],[32,1,this.b],[],[35],[23,1,this.v],[32,0,this.P],[],[27,2,this.Pa],[23,2,this.N],[32,2,this.N],[],[11,1,this.ea],[23,1,this.J],[],[],[],[23,1,this.g],[32,1,this.g],[],[15],[23,2,this.A],[],[],[],[23,2,this.o],[32,2,this.o],[],[42],[0,1,this.D],[],[],[],[0,1,this.b],[40,1,this.b],[],[37],[0,1,this.v],[40,0,this.P],[],[27,2,this.ob],[0,2,this.N],[40,2,this.N],[],[12,1,this.ea],
|
||||
|
|
@ -128,11 +128,11 @@ this.V=["HLT","MSG"];fb(this,!0);this.fa=[[10],[34,1,this.D],[this.bb,1],[],[],[
|
|||
f.T=function(a,b,c){var d=this;switch(b){case "debugInput":return this.R=this.H[b]=c,this.R.focus(),c.onkeypress=function(a,c){return function(d){13==d.keyCode&&(b=c.value,c.value="",gb(a,b))}}(this,c),!0;case "debugEnter":return this.H[b]=c,ea(c,function(){return d.R?(b=d.R.value,gb(d,b),!0):!1}),!0;case "step":return this.H[b]=c,ea(c,function(a){var b=!1;J(d,!0)||(I(d,!0),b=d.step(a?1:0),I(d,!1));return b}),!0}return!1};
|
||||
f.ba=function(a,b,c){this.a=a;this.O=b;this.qa=c-b+1;this.Ga=this.O+this.qa;this.X()};f.ha=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.s=L(b,"cpu"))};f.ca=function(){this.R.focus()};
|
||||
function fb(a,b){a.P=0;a.v=1;a.o=2;a.A=3;a.Pa=4;a.ob=5;a.g=6;a.U=7;a.D=8;a.J=9;a.N=10;a.b=11;a.ea=a.Pa;var c="",d,e;if(b)for(a.ka="A #$nn $nnnn,X $nnnn,Y $nnnn ($nnnn) $nn,X $nn,Y ($nn,X) ($nn),Y $nnnn $nn".split(" "),d=0;d<a.ka.length;d++)e=a.ka[d],c+="("+e.replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\$/g,"\\$")+"|)";else for(a.ka="A nn [nnnn+X] [nnnn+Y] nnnn [nnnn] [nn+X] [nn+Y] [[nn+X]] [[nn]+Y] [nnnn] [nn]".split(" "),
|
||||
d=0;d<a.ka.length;d++)e=a.ka[d],c+="("+e.replace(/\[/g,"\\[").replace(/]/g,"\\]").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\+/g,"\\+")+"|)";a.Qe=new RegExp(c);a.Qb=[27,a.Qa,9,7,11,12,3,4,8,5]}f.aa=function(){this.s.aa()};function S(a,b,c,d,e,g,h){(a.la&e)==e&&(e=a.s.S(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+q(c)+")"+(void 0!==d?" @"+q(d):"")+": "+(h?h+"=":"")+p(e)))}f.message=function(a){this.l(a);Fa(this.s)};f.Tb=function(){this.l("Type ? for list of debugger commands\n")};
|
||||
d=0;d<a.ka.length;d++)e=a.ka[d],c+="("+e.replace(/\[/g,"\\[").replace(/]/g,"\\]").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\+/g,"\\+")+"|)";a.Qe=new RegExp(c);a.Qb=[27,a.Qa,9,7,11,12,3,4,8,5]}f.aa=function(){this.s.aa()};function S(a,b,c,d,e,g,h){(a.la&e)==e&&(e=a.s.S(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+r(c)+")"+(void 0!==d?" @"+r(d):"")+": "+(h?h+"=":"")+p(e)))}f.message=function(a){this.l(a);Fa(this.s)};f.Tb=function(){this.l("Type ? for list of debugger commands\n")};
|
||||
f.va=function(){if(!hb(this))return!1;this.s.va();return!0};f.step=function(a){if(!hb(this))return!1;var b;try{b=this.s.step(a)}catch(c){b=void 0,qa(this.s,c.stack||c.message)}void 0!==b&&this.L++;this.s.update(!0);this.update(!0);return b};f.update=function(a){this.ua=this.s.f;a||this.Da?ib(this):jb(this)};function hb(a){a.s&&K(a.s)&&!J(a.s)?(a=a.s,a.C.Ca?(a.l(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}
|
||||
f.reset=function(){var a;this.xa.length||(this.xa=Array(1E3));for(a=0;a<this.xa.length;a++)this.xa[a]=-1;this.B.length||(this.B=Array(256));for(a=0;a<this.B.length;a++)this.B[a]=[a,0];this.L&&this.update();this.L=0};f.start=function(){this.Da||this.l("running")};f.stop=function(a,b){if(!this.Da&&(this.l("stopped"),b)){var c=ca();this.l(c-a+"ms ("+b+" cycles)")}this.update();this.ca();this.Da||(this.L=0);kb(this,this.s.f)};function lb(a,b){return a+(b<<24>>24)}
|
||||
f.S=function(a){var b;a>=this.O&&a<this.Ga&&(ya(this.s,a),b=this.a[this.O+a],b&=255);return b};f.W=function(a,b){a<this.O||a>=this.Ga?this.l("invalid address: "+q(a)):(this.a[this.O+a]=b&255,za(this.s,a),this.s.update())};function mb(a,b){X(a.sa,b,void 0)||a.sa.push(b);return!0}function X(a,b,c){for(var d=!1,e=0;e<a.length;e++)if(a[e]==b){c&&a.splice(e,1);d=!0;break}return d}function nb(a,b){void 0!==b&&(kb(a,a.K),mb(a,b)&&(a.K=b))}
|
||||
function kb(a,b){void 0!==a.K&&b==a.K&&X(a.sa,a.K,!0)&&(a.K=void 0);a.Da=!1}function Ea(a,b,c,d){for(var e=!1,g=0;g<c.length;g++)if(c[g]==b){b!=a.K&&a.l("breakpoint hit: "+q(b)+" ("+d+")");e=!0;break}return e}
|
||||
f.S=function(a){var b;a>=this.O&&a<this.Ga&&(ya(this.s,a),b=this.a[this.O+a],b&=255);return b};f.W=function(a,b){a<this.O||a>=this.Ga?this.l("invalid address: "+r(a)):(this.a[this.O+a]=b&255,za(this.s,a),this.s.update())};function mb(a,b){X(a.sa,b,void 0)||a.sa.push(b);return!0}function X(a,b,c){for(var d=!1,e=0;e<a.length;e++)if(a[e]==b){c&&a.splice(e,1);d=!0;break}return d}function nb(a,b){void 0!==b&&(kb(a,a.K),mb(a,b)&&(a.K=b))}
|
||||
function kb(a,b){void 0!==a.K&&b==a.K&&X(a.sa,a.K,!0)&&(a.K=void 0);a.Da=!1}function Ea(a,b,c,d){for(var e=!1,g=0;g<c.length;g++)if(c[g]==b){b!=a.K&&a.l("breakpoint hit: "+r(b)+" ("+d+")");e=!0;break}return e}
|
||||
function ob(a,b,c){var d=n(b,4),e=a.S(b++),g=a.fa[e],h=void 0===e?0:e,k=[],l=void 0===g[1]?0:g[1];do{d+=" "+n(h,2);if(!l--)break;h=a.S(b++);if(void 0===h)break;k.push(h)}while(1);void 0===g[0]&&(g=[57,1,a.v],k.push(e));var d=(d+" ").substr(0,15),d=d+a.Ka[g[0]],m=null;if(void 0!==g[2]){l=g[2];m=a.ka[l];if(1==g[1]&&l==a.ea)m=m.replace(/nnnn/,n(lb(b,h=k.pop()),4));else for(;k.length;)m=m.replace(/nn/,n(h=k.pop(),2));l==a.v&&1==g[1]&&32<=h&&128>h&&(m+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.s.bb&&
|
||||
(h<a.V.length&&(m=a.V[h]),h==a.s.Nb)){l=0;for(m='"';h=a.S(b++);)16>l?m+=String.fromCharCode(h):16==l&&(m+="\u2026"),l++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$=b;return d}
|
||||
function Y(a,b){var c=a.ua;if(void 0!==b){var d=16;"$"==b.charAt(0)?b=b.substr(1):"0x"==b.substr(0,2)?b=b.substr(2):"."==b.charAt(b.length-1)&&(d=10,b=b.substr(0,b.length-1));c=parseInt(b,d);isNaN(c)&&(a.l("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c<a.O||c>=a.Ga)&&(a.l("address out of range: "+n(c)),c=void 0);return c}
|
||||
|
|
@ -141,25 +141,25 @@ function ib(a,b,c,d){var e=Y(a,b);if(void 0!==e){void 0===d&&(d=1);b=a.Ga;if(voi
|
|||
function jb(a,b){if(b&&"?"==b[1])a.l("\nregister commands:"),a.l("r to display all"),a.l("r [target=value] to modify"),a.l("supported targets:"),a.l("A,X,Y,S,PC and flags C,Z,D,V,N");else{var c=!0;if(void 0!==b&&1<b.length){var c=!1,d=b[1],e=null,g=d.indexOf("=");if(0<g)e=d.substr(g+1),d=d.substr(0,g);else if(2<b.length)e=b[2];else{a.l("missing value for "+b[1]);return}g=parseInt(e,16);if(isNaN(g)){a.l("invalid value: "+e);return}switch(d.toUpperCase()){case "A":a.s.h=g&255;break;case "X":a.s.w=g&
|
||||
255;break;case "Y":a.s.F=g&255;break;case "C":a.s.c=g?256:0;break;case "Z":a.s.j=g?0:1;break;case "D":g?Ha(a.s):Ia(a.s);break;case "V":g?(d=a.s,d.v=0,d.A=128):(d=a.s,d.v=0,d.A=0);break;case "N":a.s.i=g?128:0;break;case "S":if(256!=(g&-256)){a.l("invalid stack pointer: "+e);return}a.s.G=g;break;case "PC":c=!0;a.s.f=g&65535;a.ua=a.s.f;break;default:a.l("unknown register: "+d);return}a.s.update()}a.l("A="+n(a.s.h,2)+" X="+n(a.s.w,2)+" Y="+n(a.s.F,2)+" P="+n(Ca(a.s),2)+" S="+n(a.s.G,4)+" PC="+n(a.s.f,
|
||||
4));c&&ib(a,n(a.ua=a.s.f,4))}}function qb(a,b){var c=void 0===b?1:parseInt(b,10),d=1==c?0:1;da(c,function(a){return function(){return I(a,!0)&&a.step(d)}}(a),function(a){return function(){I(a,!1)}}(a))}
|
||||
function gb(a,b){b.length||(a.Ya?(a.l("ended assemble @"+n(a.ga,4)),a.ua=a.ga,a.Ya=!1):a.nb&&(b=a.nb));if(K(a)&&!J(a,!0)&&0<b.length){a.Ya?b="a "+n(a.ga,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.nb=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.ga=d,void 0===c[2])a.l("begin assemble @"+q(a.ga)),a.Ya=!0,a.s.update();else{var e,g=c[2],h=c[3],c=a.ga,d=[];if(void 0!==g){var k,g=g.toUpperCase();"?"==g.charAt(g.length-
|
||||
function gb(a,b){b.length||(a.Ya?(a.l("ended assemble @"+n(a.ga,4)),a.ua=a.ga,a.Ya=!1):a.nb&&(b=a.nb));if(K(a)&&!J(a,!0)&&0<b.length){a.Ya?b="a "+n(a.ga,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.nb=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.ga=d,void 0===c[2])a.l("begin assemble @"+r(a.ga)),a.Ya=!0,a.s.update();else{var e,g=c[2],h=c[3],c=a.ga,d=[];if(void 0!==g){var k,g=g.toUpperCase();"?"==g.charAt(g.length-
|
||||
1)&&(h="?",g=g.substr(0,g.length-1));for(k=0;k<a.Ka.length&&g!=a.Ka[k];k++);k==a.Ka.length&&(a.l("unknown operation: "+g),k=-1);var l="",m;if(0<=k&&void 0!==h)if(l=h.toUpperCase(),"?"==l){for(h=m=0;h<a.fa.length;h++)a.fa[h][0]===k&&(m||a.l("supported opcodes:"),a.l(" "+n(h,2)+": "+g+(void 0!==a.fa[h][2]?" "+a.ka[a.fa[h][2]]:"")),m++);k=-1}else if(m=l.match(a.Qe),null!==m&&m[0]==l){for(h=1;h<m.length;h++)if(m[h]==l)if(void 0===e)e=h-1;else{a.l("too many operand matches (both "+a.ka[e]+" and "+
|
||||
a.ka[h-1]+")");k=-1;break}e==a.Pa&&0>a.Qb.indexOf(k)&&(e=a.N);e==a.ob&&27!=k&&(e=a.N)}else a.l("unknown operand: "+l),k=-1;if(0<=k){m=-1;for(h=0;h<a.fa.length;h++)if(a.fa[h][0]===k&&a.fa[h][2]===e)if(0>m)m=h;else{a.l("too many instruction matches (both "+p(m)+" and "+p(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.fa[m][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.ea&&(l-=c+2,-128>l||127<l)&&(a.l("branch out of range ("+l+")"),d=[],g=0),h=0;h<g;h++)d.push(l&255),
|
||||
l>>>=8;else g&&a.l("instruction missing "+g+" bytes")}else a.l("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;c<e.length;c++)a.W(a.ga+c,e[c]);a.l(ob(a,a.ga));a.ga+=e.length}}break;case "b":e=c[1];c=c[2];if(void 0===e||"?"==e)a.l("\nbreakpoint commands:"),a.l("bp [a]\tset exec breakpoint at [a]"),a.l("br [a]\tset read breakpoint at [a]"),a.l("bw [a]\tset write breakpoint at [a]"),a.l("bc [a]\tclear breakpoint at [a]"),a.l("bl\tlist all breakpoints");else if(void 0===c&&1<e.length&&(c=
|
||||
e.substr(1),e=e.substr(0,1)),"l"==e){e=0;d=a.sa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+q(d[c])+" (exec)"),e++;d=a.wa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+q(d[c])+" (read)"),e++;d=a.ya;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+q(d[c])+" (write)"),e++;e||a.l("no breakpoints")}else void 0===c?a.l("missing breakpoint address"):"c"==e&&"*"==c?(a.sa=[],a.wa=[],a.ya=[],a.l("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==e?mb(a,c)?a.l("breakpoint enabled: "+q(c)+" (exec)"):
|
||||
a.l("breakpoint not set: "+q(c)):"c"==e?X(a.sa,c,!0)?a.l("breakpoint cleared: "+q(c)+" (exec)"):X(a.wa,c,!0)?a.l("breakpoint cleared: "+q(c)+" (read)"):X(a.ya,c,!0)?a.l("breakpoint cleared: "+q(c)+" (write)"):a.l("breakpoint missing: "+q(c)):"r"==e?(X(a.wa,c,void 0)||a.wa.push(c),a.l("breakpoint enabled: "+q(c)+" (read)")):"w"==e?(X(a.ya,c,void 0)||a.ya.push(c),a.l("breakpoint enabled: "+q(c)+" (write)")):a.l("unknown breakpoint command: "+e)));break;case "d":e=c[1];d=c[2];if("?"==e)a.l("\ndump commands:"),
|
||||
e.substr(1),e=e.substr(0,1)),"l"==e){e=0;d=a.sa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (exec)"),e++;d=a.wa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (read)"),e++;d=a.ya;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (write)"),e++;e||a.l("no breakpoints")}else void 0===c?a.l("missing breakpoint address"):"c"==e&&"*"==c?(a.sa=[],a.wa=[],a.ya=[],a.l("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==e?mb(a,c)?a.l("breakpoint enabled: "+r(c)+" (exec)"):
|
||||
a.l("breakpoint not set: "+r(c)):"c"==e?X(a.sa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (exec)"):X(a.wa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (read)"):X(a.ya,c,!0)?a.l("breakpoint cleared: "+r(c)+" (write)"):a.l("breakpoint missing: "+r(c)):"r"==e?(X(a.wa,c,void 0)||a.wa.push(c),a.l("breakpoint enabled: "+r(c)+" (read)")):"w"==e?(X(a.ya,c,void 0)||a.ya.push(c),a.l("breakpoint enabled: "+r(c)+" (write)")):a.l("unknown breakpoint command: "+e)));break;case "d":e=c[1];d=c[2];if("?"==e)a.l("\ndump commands:"),
|
||||
a.l("d [a] [#] dump # lines of memory");else if(e=Y(a,e),void 0!==e){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),c=parseInt(d,10));c||(c=1);for(d=0;d<c;d++){l=g="";h=e;for(k=0;8>k&&e<a.Ga;k++)m=a.S(e),void 0===m&&(m=0),g+=n(m,2)+" ",l+=32<=m&&128>m?String.fromCharCode(m):".",e++;a.l(n(h,4)+" "+g+l)}a.ua=e}break;case "e":e=c[1];if(void 0===e)a.l("missing address");else if(e=Y(a,e),void 0!==e)for(d=2;d<c.length;d++)g=parseInt(c[d],16),a.W(e++,g);break;case "f":pb(a,c[1]);break;case "g":e=
|
||||
c[1];void 0!==e&&nb(a,Y(a,e));a.va()||a.s.ca();break;case "h":a.aa();break;case "o":if(void 0===c[1]||"?"==c[1])a.l("\noption commands:"),a.l("max\trun at maximum speed"),a.l("fast\trun faster (up to "+a.s.Ma+"Mhz)"),a.l("slow\trun at normal speed (1Mhz)"),a.l("classic\tuse classic operand syntax"),a.l("modern\tuse modern operand syntax"),a.l("msg\tenable message categories");else switch(e=c[1],e){case "slow":M(a.s,a.s.Ra);break;case "fast":M(a.s,a.s.Ob);break;case "max":M(a.s,a.s.eb);break;case "classic":fb(a,
|
||||
!0);a.l("classic syntax enabled");break;case "modern":fb(a,!1);a.l("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Ua[c[2]]&&(e=a.Ua[c[2]]),e&&("on"==c[3]?a.la|=e:"off"==c[3]&&(a.la&=~e)));for(d in a.Ua)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Ua[d],a.l(d+" messages: "+(a.la&e?"on":"off"));break;default:a.l("unknown option: "+e)}break;case "p":l=c[1];e=10;c=a.La;d=a.xa;if(void 0!==d){g=void 0===l?a.Vb:parseInt(l,10);void 0===g&&(g=10);g>d.length&&(a.l("note: only "+
|
||||
d.length+" available"),g=d.length);void 0!==l&&(a.mb=0,a.l(g+" instructions earlier:"));l=a.mb?a.mb:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.La;){h=d[c];if(0>h)break;a.l(ob(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Vb=g;a.mb=l}10==e&&a.l("no history available");break;case "r":jb(a,c);break;case "s":a.S(a.s.f)==a.s.Qa?(nb(a,a.s.f+3),a.Da=!0,a.va()||a.s.ca()):qb(a);break;case "t":qb(a,c[1]);break;case "u":ib(a,c[1],c[2],8);break;case "?":case "help":a.l("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
|
||||
a.l("note: frequency and history commands operate only when breakpoints are set");break;default:a.l("unknown command: "+b)}}}x(function(){for(var a=F(document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new eb(d);E(d,c)}});function Z(a,b){z.call(this,"C1PComputer",a);this.Y=b}B(Z);Z.prototype.reset=function(a){var b=null,c;for(c in this.Y)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.va())};
|
||||
a.l("note: frequency and history commands operate only when breakpoints are set");break;default:a.l("unknown command: "+b)}}}x(function(){for(var a=G(document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new eb(d);F(d,c)}});function Z(a,b){z.call(this,"C1PComputer",a);this.Y=b}B(Z);Z.prototype.reset=function(a){var b=null,c;for(c in this.Y)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.va())};
|
||||
Z.prototype.start=function(){for(var a in this.Y)if("cpu"!=a)for(var b=0;b<this.Y[a].length;b++){var c=this.Y[a][b];c&&c.start&&c.start()}};Z.prototype.stop=function(a,b){for(var c in this.Y)if("cpu"!=c)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.stop&&e.stop(a,b)}};Z.prototype.T=function(a,b,c){switch(b){case "reset":return this.H[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.Y[b]?a.Y[b][0]:null}
|
||||
function rb(a){var b=null,c;for(c in a.Y)for(var d=0;d<a.Y[c].length;d++){var e=a.Y[c][d];if(e){if(!K(e)){K(e,function(a){return function(){rb(a)}}(a));return}"cpu"==c?b=e:e.ha&&e.ha(!0,a)}}a.X();a.l("C1Pjs v1.20.9\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>");b&&b.ha(!0,a)}
|
||||
x(function(){for(var a=F(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=D(c),e,g={},h,k=0,l=0,m=0;m<d.modules.length;m++){var r=d.modules[m];if(!m){if("cpu"!=r.type)break;k=r.start;l=r.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=pa(r.refID,d.id)){var H=r.type;void 0===g[H]&&(g[H]=[]);g[H].push(e);e.ba&&void 0!==r.start&&e.ba(h,r.start,r.end,g.cpu[0])}else{u('no component for <module refid="'+r.refID+'">');return}}if(void 0===h){u('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(e=pa("debugger",d.id))g["debugger"]=[e],e.ba&&e.ba(h,k,l,g.cpu[0]);k=new Z(d,g);if(l=pa("panel",d.id))if(g.panel=[l],l.gb){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<A.length;d++)m=A[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.$a=l.$a,e.l=l.l,e.gb=l.gb)}E(k,c);rb(k)}});var sb=0;function tb(a,b,c,d,e,g){e("Loading "+a+"...");t(a,null,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):ub(k,a,b,c,d,e,g)})}
|
||||
function ub(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){var k=b;k&&0>k.indexOf("/")&&(k=window.location.pathname+k);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+k+'"}';a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(k?' url="'+k+'"':""))}k=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(k=new window.ActiveXObject("Microsoft.XMLDOM"),
|
||||
k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(H){k=null,a=H.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?vb(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function vb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");t(e,null,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,r=/( [a-z]+=)(['"])(.*?)\2/g;m=r.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
x(function(){for(var a=G(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=E(c),e,g={},h,k=0,l=0,m=0;m<d.modules.length;m++){var q=d.modules[m];if(!m){if("cpu"!=q.type)break;k=q.start;l=q.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=pa(q.refID,d.id)){var C=q.type;void 0===g[C]&&(g[C]=[]);g[C].push(e);e.ba&&void 0!==q.start&&e.ba(h,q.start,q.end,g.cpu[0])}else{u('no component for <module refid="'+q.refID+'">');return}}if(void 0===h){u('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
break}if(e=pa("debugger",d.id))g["debugger"]=[e],e.ba&&e.ba(h,k,l,g.cpu[0]);k=new Z(d,g);if(l=pa("panel",d.id))if(g.panel=[l],l.gb){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<A.length;d++)m=A[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.$a=l.$a,e.l=l.l,e.gb=l.gb)}F(k,c);rb(k)}});var sb=0;function tb(a,b,c,d,e,g){e("Loading "+a+"...");t(a,null,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):ub(k,a,b,c,d,e,g)})}
|
||||
function ub(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){D[c]&&b&&(D[c][b]=a);var k=b;k&&0>k.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(k=window.location.pathname+k);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+k+'"}';a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(k?' url="'+k+'"':""))}k=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||
|
||||
"ActiveXObject"in window?(k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(C){k=null,a=C.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?vb(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function vb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");t(e,null,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);vb(a,b,c)}})}else c(a,null)}
|
||||
function wb(a,b,c){function d(a){if(void 0===h){var b=g&&F(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ba(a))}function e(a){d("Error: "+a);k&&(--sb||y(!0));k=!1}var g,h,k=!0;sb++;C[a]={};try{if(g=document.getElementById(a)){c||(c="/versions/c1pjs/1.20.9/components.xsl");var l=function(h,k){k?(C[a]&&(C[a][b]=h),tb(c,null,null,!1,d,function(h,l){if(l)if(C[a]&&(C[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--sb||y(!0)):
|
||||
e("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--sb||y(!0)):e("invalid machine element: "+a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(h)})):e(h)};"<"!=b.charAt(0)?tb(b,a,void 0,!0,d,l):ub(b,null,a,void 0,!1,d,l)}else e("missing machine element: "+a)}catch(m){e(m.message)}return k}
|
||||
window.embedC1P=function(a,b,c){y(!1);return wb(a,b,c)};window.enableEvents=y;window.sendEvent=ja;})();
|
||||
function wb(a,b,c){function d(a){if(void 0===h){var b=g&&G(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ba(a))}function e(a){d("Error: "+a);k&&(--sb||y(!0));k=!1}var g,h,k=!0;sb++;D[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var m=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));m.appendChild(q)}c||(c=
|
||||
"/versions/c1pjs/1.20.9/components.xsl");l=function(h,k){k?tb(c,null,null,!1,d,function(h,l){if(l)if(D[a]&&c&&(D[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--sb||y(!0)):e("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--sb||y(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(h)}):e(h)};"<"!=b.charAt(0)?tb(b,a,void 0,!0,d,l):ub(b,null,a,void 0,!1,d,l)}else e("missing machine element: "+a)}catch(C){e(C.message)}return k}window.embedC1P=function(a,b,c){y(!1);return wb(a,b,c)};window.enableEvents=y;window.sendEvent=ja;})();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -10,7 +10,7 @@ function wa(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"
|
|||
function Ea(a){if(za)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){g("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Fa(a){!za&&a?(za=!0,ya&&Ga("init")):za=a}function Ga(a){xa[a]&&Ea(xa[a])}Aa("onload",function(){ya=!0;Ea(xa.init)});Aa("onpageshow",function(){Ea(xa.show)});Aa(wa("Opera")||wa("iOS")?"onunload":"onbeforeunload",function(){Ea(xa.exit)});
|
||||
function Ha(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Ah=b.comment;this.pj=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.mf=this.id.substr(0,b),this.hf=this.id.substr(b+1)):this.hf=this.id;this[a]=c;this.ja={le:!1,Mc:!1,jg:!1,Qb:!1,Yc:!1};this.Df=null;this.ja.Yc=!1;this.pa={};this.Ta=null;Ia.push(this)}var Ja=void 0,Ka={};
|
||||
if(window){Ja||(Ja=window.location.search.substr(1));for(var La,Ma=/\+/g,Na=/([^&=]+)=?([^&]*)/g;La=Na.exec(Ja);)Ka[decodeURIComponent(La[1].replace(Ma," "))]=decodeURIComponent(La[2].replace(Ma," "))}function Oa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function Pa(a,b){b||(b=Ha);a.prototype=Oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Ia=[],Qa={};function Ra(a,b,c){Qa[a]&&(Qa[a][b]=c)}function Sa(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ia.length;b++){var d=Ia[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ta(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<Ia.length;c++)if(Ia[c].id===a)return Ia[c]}return null}
|
||||
function Pa(a,b){b||(b=Ha);a.prototype=Oa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Ia=[],Qa={};function Ra(a,b,c){Qa[a]&&b&&(Qa[a][b]=c)}function Sa(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ia.length;b++){var d=Ia[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ta(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<Ia.length;c++)if(Ia[c].id===a)return Ia[c]}return null}
|
||||
function Ua(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<Ia.length;d++)if(c)c==Ia[d]&&(c=null);else if(!(a!=Ia[d].type||b&&Ia[d].id.indexOf(b)))return Ia[d]}return null}function Va(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){g(c.message+" ("+a+")")}return b}function Wa(a,b,c){var d;b&&(void 0===d&&(d="Panel"),(d=Ua(d,a.id))&&(b=d.pa[b])&&a.Eb(null,c,b))}document&&!document.ELEMENT_NODE&&(document.ELEMENT_NODE=1);
|
||||
function Xa(a,b){for(var c=Ya(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,k=0;k<e.length;k++){var l=e[k];if(l.nodeType===document.ELEMENT_NODE){var p=l.getAttribute("class");if(p)for(var q=p.split(" "),v=0;v<q.length;v++)switch(p=q[v],p){case "pcjs-binding":(p=Va(l))&&p.binding&&a.Eb(p.type,p.binding,l,p.value),v=q.length}}}}
|
||||
function Ya(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
|
|
@ -49,7 +49,7 @@ b)},Ob:function(a,b,c){Yb(this.A,c,!0).dc(a,b,c)},Nc:function(a,b,c){Yb(this.A,c
|
|||
1]},Ca:function(a){return this.O.getInt32(a,!0)},Fa:function(a){return a&3?this.Pa[a]|this.Pa[a+1]<<8|this.Pa[a+2]<<16|this.Pa[a+3]<<24:this.aa[a>>2]},Ka:function(a){this.B.aa[this.F]|=32;this.D.aa[this.H]|=32;return a&3?this.Pa[a]|this.Pa[a+1]<<8|this.Pa[a+2]<<16|this.Pa[a+3]<<24:this.aa[a>>2]},vb:function(a,b){this.Pa[a]=b;this.Oa=!0},Ab:function(a,b){this.Pa[a]=b;this.Oa=!0},Ib:function(a,b){this.Pa[a]=b;this.B.aa[this.F]|=32;this.D.aa[this.H]|=96;this.T.Oa=!0},vc:function(a,b){this.O.setUint16(a,
|
||||
b,!0);this.Oa=!0},xc:function(a,b){a&1?(this.Pa[a]=b,this.Pa[a+1]=b>>8):this.sd[a>>1]=b;this.Oa=!0},Fc:function(a,b){a&1?(this.Pa[a]=b,this.Pa[a+1]=b>>8):this.sd[a>>1]=b;this.B.aa[this.F]|=32;this.D.aa[this.H]|=96;this.T.Oa=!0},Pb:function(a,b){this.O.setInt32(a,b,!0);this.Oa=!0},kc:function(a,b){a&3?(this.Pa[a]=b,this.Pa[a+1]=b>>8,this.Pa[a+2]=b>>16,this.Pa[a+3]=b>>24):this.aa[a>>2]=b;this.Oa=!0},jc:function(a,b){a&3?(this.Pa[a]=b,this.Pa[a+1]=b>>8,this.Pa[a+2]=b>>16,this.Pa[a+3]=b>>24):this.aa[a>>
|
||||
2]=b;this.B.aa[this.F]|=32;this.D.aa[this.H]|=96;this.T.Oa=!0}};function rb(a,b,c){a.Ta=b;a.ee=a.fe=0;c&&(c.A&&(a.A=c.A),(a.ee=c.ee)&&Zb(a,$b,!1),(a.fe=c.fe)&&ac(a,$b,!1))}function ac(a,b,c){c&&a.fe||(a.dc=!a.K&&b[3]||a.Z,a.lf=!a.K&&b[4]||a.oa,a.kf=!a.K&&b[5]||a.pa);if(c||void 0===c)a.jf=b[3]||a.Z,a.qh=b[4]||a.oa,a.ka=b[5]||a.pa}function Zb(a,b,c){c&&a.ee||(a.cc=b[0]||a.ha,a.cf=b[1]||a.ta,a.Rd=b[2]||a.da);if(c||void 0===c)a.Bd=b[0]||a.ha,a.df=b[1]||a.ta,a.kh=b[2]||a.da}
|
||||
function Db(a,b,c){b||(b=5==a.type?bc:6==a.type?dc:ec);Zb(a,b,c);ac(a,b,c)}var ec=[],Jb=[h.prototype.ua,h.prototype.Wa,h.prototype.Ja,h.prototype.Fb,h.prototype.yc,h.prototype.lc],$b=[h.prototype.qa,h.prototype.Qa,h.prototype.Da,h.prototype.wb,h.prototype.wc,h.prototype.Vb],dc=[h.prototype.xa,h.prototype.fb,h.prototype.La,h.prototype.Jb,h.prototype.Gc,h.prototype.mc],bc=[h.prototype.ya,h.prototype.kb,h.prototype.Ma,h.prototype.Ob,h.prototype.Nc,h.prototype.rc];
|
||||
function Db(a,b,c){b||(b=5==a.type?bc:6==a.type?cc:ec);Zb(a,b,c);ac(a,b,c)}var ec=[],Jb=[h.prototype.ua,h.prototype.Wa,h.prototype.Ja,h.prototype.Fb,h.prototype.yc,h.prototype.lc],$b=[h.prototype.qa,h.prototype.Qa,h.prototype.Da,h.prototype.wb,h.prototype.wc,h.prototype.Vb],cc=[h.prototype.xa,h.prototype.fb,h.prototype.La,h.prototype.Jb,h.prototype.Gc,h.prototype.mc],bc=[h.prototype.ya,h.prototype.kb,h.prototype.Ma,h.prototype.Ob,h.prototype.Nc,h.prototype.rc];
|
||||
if(cb)var Ib=[h.prototype.na,h.prototype.Na,h.prototype.Ca,h.prototype.vb,h.prototype.vc,h.prototype.Pb],Hb=[h.prototype.sa,h.prototype.Va,h.prototype.Fa,h.prototype.Ab,h.prototype.xc,h.prototype.kc],fc=[h.prototype.va,h.prototype.ab,h.prototype.Ka,h.prototype.Ib,h.prototype.Fc,h.prototype.jc];
|
||||
function gc(a,b){Ha.call(this,"CPU",a,gc);var c=a.cycles||b,d=a.multiplier||1;this.Y={};this.Y.Zc=c;this.Y.zd=d;this.Y.Ff=Math.round(this.Y.Zc/1E4)/100;this.Y.re=this.Y.Ff*this.Y.zd;this.ja.Rb=!1;this.ja.Rh=!1;this.ja.ig=a.autoStart;this.ja.Qh=!1;c=Ka.autostart;void 0!==c&&(this.ja.ig="true"==c?!0:"false"==c?!1:null);this.ja.Bf=!1;this.Y.Hf=this.Y.te=0;this.Y.If=a.csStart;this.Y.Ke=a.csInterval;this.Y.Le=a.csStop;this.Vd=[];this.Aj=this.oh.bind(this);$a(this)}Pa(gc);var hc=["power","reset"];f=gc.prototype;
|
||||
f.nc=function(a,b,c,d){this.ta=a;this.oa=b;this.Ta=d;for(b=0;b<hc.length;b++)(c=this.pa[hc[b]])&&this.ta.Eb(null,hc[b],c);this.ld=jb(a,"FPU");for(b=null;b=jb(a,"Video",b);)this.Vd.push(b);this.T=jb(a,"ChipSet");$a(this)};f.reset=function(){};f.save=function(){return null};f.restore=function(){return!1};f.Tb=function(a,b){if(!b){if(a&&this.restore){ic(this);if(!this.restore(a))return!1;jc(this)}else this.reset();this.pc("No debugger detected")}kc(this);return!0};
|
||||
|
|
@ -81,11 +81,11 @@ r(d,d.la(p+l)));c&&d.gb(p+0,k);d.Ua|=8;return!0}f.save=function(){return[this.ra
|
|||
function yc(a,b,c,d){void 0===c&&(c=!!(a.A.Ua&1));a.wd=!1;if(c)if(a.load=a.Ef,a.Wh=a.Vk,a.gc=a.Jh,a.hc=a.Lh,void 0===d&&(d=!!(a.A.ca&131072)),d)a.load=a.T,a.gc=a.K,a.hc=a.N,a.Cb=a.uc=3,a.ba=a.Uc=2,a.C=a.wa=65535,a.cb=65535,a.D=a.cb+1,a.Uc=a.ba,a.fc=-1,a.ne=!1;else{if(!(a.ra&-4))a.gc=a.yf,a.hc=a.zf;else if(a.type&4096){6144==(a.type&6656)&&(a.gc=a.yf);if(a.type&2048||!(a.type&512))a.hc=a.zf;1024==(a.type&3072)&&(a.gc==a.Jh&&(a.gc=a.Cj),a.hc==a.Lh&&(a.hc=a.Dj),a.wd=!0);b&&6>a.id&&a.ra&-4&&-1!==a.fc&&
|
||||
(c=a.fc+5,d=a.A.Lb(c),d&1||a.A.Kc(c,d|1))}b&&(a.Cb=a.ra&3,a.uc=(a.rb&24576)>>13,80386>a.A.ia||!(a.ext&64)?(a.ba=2,a.C=65535):(a.ba=4,a.C=-1),a.Uc=a.ba,a.wa=a.C)}else a.load=a.Xh,a.Wh=a.Wk,a.gc=a.Kh,a.hc=a.Mh,a.Cb=a.uc=0,a.fc=-1,a.ne=!1}
|
||||
function Qc(a){this.ia=a.model||8088;var b=a.stepping;this.fd=this.ia+(b?ca(b,16):0);b=0;switch(this.ia){default:b=4772727;break;case 80286:b=6E6;break;case 80386:b=16E6}gc.call(this,a,b);this.sh=61442;this.ed=1792;this.rh=28672;this.nf=4;this.Ja=255;this.D=80286<=this.ia?eb:db;this.qa=Rc;this.vh=Sc;this.wh=Tc;this.xh=Uc;if(80186<=this.ia&&(this.qa=Rc.slice(),this.vh=Sc.slice(),this.wh=Tc.slice(),this.Ja=31,this.qa[15]=Vc,this.qa[96]=Wc,this.qa[97]=Xc,this.qa[98]=Yc,this.qa[99]=Vc,this.qa[100]=Vc,
|
||||
this.qa[101]=Vc,this.qa[102]=Vc,this.qa[103]=Vc,this.qa[104]=Zc,this.qa[105]=$c,this.qa[106]=ad,this.qa[107]=bd,this.qa[108]=cd,this.qa[109]=dd,this.qa[110]=ed,this.qa[111]=fd,this.qa[192]=gd,this.qa[193]=hd,this.qa[200]=id,this.qa[201]=jd,this.qa[241]=kd,this.vh[7]=ld,this.wh[7]=ld,80286<=this.ia)){this.sh=2;this.ed|=28672;this.nf=0;this.qa[15]=md;this.Fc=nd.slice();for(a=0;a<this.Fc.length;a++)this.Fc[a]||(this.Fc[a]=od);this.qa[84]=pd;this.qa[99]=rd;if(80386<=this.ia){var c;this.rh=0;this.ed|=
|
||||
this.qa[101]=Vc,this.qa[102]=Vc,this.qa[103]=Vc,this.qa[104]=Zc,this.qa[105]=$c,this.qa[106]=ad,this.qa[107]=bd,this.qa[108]=cd,this.qa[109]=dd,this.qa[110]=ed,this.qa[111]=fd,this.qa[192]=gd,this.qa[193]=hd,this.qa[200]=id,this.qa[201]=jd,this.qa[241]=kd,this.vh[7]=ld,this.wh[7]=ld,80286<=this.ia)){this.sh=2;this.ed|=28672;this.nf=0;this.qa[15]=md;this.Fc=nd.slice();for(a=0;a<this.Fc.length;a++)this.Fc[a]||(this.Fc[a]=od);this.qa[84]=pd;this.qa[99]=qd;if(80386<=this.ia){var c;this.rh=0;this.ed|=
|
||||
196608;this.qa[100]=sd;this.qa[101]=td;this.qa[102]=ud;this.qa[103]=vd;for(c in w)this.Fc[+c]=w[c];80546<=this.fd&&80562>=this.fd&&(this.Fc[166]=wd,this.Fc[167]=xd)}}this.qf=[];this.uh=[];this.Yf=0;ic(this);this.ja.Ie=this.ja.Mj=!1;this.zh=0;this.rc=this.W=[];this.ha=this.yb=this.ab=this.of=this.Xd=this.La=this.lc=0;yd(this)}Pa(Qc,gc);
|
||||
function zb(a){var b;if(a.W===a.rc){a.W=Array(a.of);a.rf=new h(null,0,0,5,null,a);rb(a.rf,a.Ta);for(b=0;b<a.of;b++)a.W[b]=a.rf;a.Yd=new h;a.th=Array(512);a.sf=0}else for(var c=0;c<a.pf.length;c++){b=a.pf[c];var d=a.W[b];512>a.sf&&(a.th[a.sf++]=d);a.W[b]=a.rf}a.pf=[]}
|
||||
function Yb(a,b,c,d){var e=(b&-4194304)>>>20,k=a.rc[(a.Nc+e&a.La)>>>a.ha],l=k.Rd(e);if(!(l&1))return d||zd.call(a,b,!1,c),a.Yd;if(!(l&4)&&3==a.Fa)return d||zd.call(a,b,!0,c),a.Yd;var p=(b&4190208)>>>10,l=a.rc[((l&-4096)+p&a.La)>>>a.ha],q=l.Rd(p);if(!(q&1))return d||zd.call(a,b,!1,c),a.Yd;if(!(q&4)&&3==a.Fa)return d||zd.call(a,b,!0,c),a.Yd;c=a.rc[((q&-4096)+(b&4095)&a.La)>>>a.ha];if(d)return c;d=b>>>a.ha;q=a.W[d];b=b&-4096;var v;0<a.sf?(v=a.th[--a.sf],v.Sk(b)):v=new h(b,0,0,6);b=v;b.T=c;b.B=k;b.F=
|
||||
e>>2;b.D=l;b.H=p>>2;cb&&Gb&&c.aa&&!c.controller&&!c.ee&&!c.fe?(b.Pa=c.Pa,b.sd=c.sd,b.aa=c.aa,Db(b,fc)):(b.N=c?Wb(32):0,b.W=c?Wb(96):0,Db(b,dc));rb(b,a.Ta,q);a.W[d]=b;a.pf.push(d);return b}function Ad(a){a.W!==a.rc&&(a.W=a.rc,a.rf=null,a.pf=null,a.Yd=null)}f=Qc.prototype;f.reset=function(){this.ja.Rb&&oc(this);yd(this);ic(this);this.ja.Yc=!1};
|
||||
e>>2;b.D=l;b.H=p>>2;cb&&Gb&&c.aa&&!c.controller&&!c.ee&&!c.fe?(b.Pa=c.Pa,b.sd=c.sd,b.aa=c.aa,Db(b,fc)):(b.N=c?Wb(32):0,b.W=c?Wb(96):0,Db(b,cc));rb(b,a.Ta,q);a.W[d]=b;a.pf.push(d);return b}function Ad(a){a.W!==a.rc&&(a.W=a.rc,a.rf=null,a.pf=null,a.Yd=null)}f=Qc.prototype;f.reset=function(){this.ja.Rb&&oc(this);yd(this);ic(this);this.ja.Yc=!1};
|
||||
function Bd(a,b){var c;switch(b){case 0:c=a.G;break;case 1:c=a.F;break;case 2:c=a.I;break;case 3:c=a.B;break;case 4:c=t(a);break;case 5:c=a.K;break;case 6:c=a.J;break;case 7:c=a.H}return c}function Cd(a,b,c){switch(b){case 0:a.G=c;break;case 1:a.F=c;break;case 2:a.I=c;break;case 3:a.B=c;break;case 4:r(a,c);break;case 5:a.K=c;break;case 6:a.J=c;break;case 7:a.H=c}}
|
||||
function yd(a){a.G=0;a.B=0;a.F=0;a.I=0;a.Ob=0;a.K=0;a.J=0;a.H=0;a.Jb=!1;a.ya=a.Ma=0;a.mc=0;a.yh=0;a.kd=0;a.Ua=65520;a.Ab=0;a.xc=1023;a.ca=a.Fb=0;a.qd=a.Gd=a.pd=a.Dd=0;a.Vb=-1;a.nd=a.Zd=-1;a.Qd=a.sa=-1;a.Ia=new xc(a,1,"CS");a.Ca=new xc(a,2,"DS");a.va=new xc(a,2,"ES");a.Z=new xc(a,3,"SS");r(a,0);Cc(a,0);if(80386<=a.ia){switch(a.fd){case 80562:case 80563:a.I=771;break;case 80578:a.I=772;break;case 80594:a.I=773;break;case 80595:case 80596:a.I=776}a.Ua=16;a.Ch=0;a.od=0;a.Nc=0;a.fb=[0,0,0,0,null,null,
|
||||
0,0];a.tf=[null,null,null,null,null,null,0,0];a.Qa=new xc(a,2,"FS");a.Va=new xc(a,2,"GS");Ad(a)}a.ag=new xc(a,0,"NULL");a.O=a.Ca;a.S=a.Z;a.N=a.Ba=0;a.U=a.na=-1;a.Pc=a.ag;a.Ka=0;if(80286>a.ia)Nc(a,0,65535);else{a.kb=0;a.wc=65535;a.Pb=new xc(a,5,"LDT",!0);a.ka=new xc(a,4,"TSS",!0);a.Na=new xc(a,6,"VER",!0);Nc(a,65520,61440);var b,c=u(a);b=a.Ia;var d=-65536;80386>b.A.ia&&(d&=16777215);b=b.Ea=d;a.da=b+c|0;a.Zf=b+a.Ia.cb|0}Mc(a,0);Ec(a)}
|
||||
|
|
@ -174,7 +174,7 @@ function yh(){this.A-=-1===this.U?2:this.D.$i;return 1}function zh(){var a=this.
|
|||
function m(a,b,c,d){var e=!1;this.ja.Ie?80186<=this.ia&&(e=!0,0>this.Vb?(-1!=this.nd&&(this.Ia.Cb=3,Vd(this,this.nd),this.nd=-1),Wd(this,this.Qd),-1!=this.Zd&&(Cc(this,this.Zd),this.Zd=-1),-1!==this.sa&&(r(this,this.Ob&~this.Z.wa|this.sa-this.Z.Ea),this.sa=-1)):8!=this.Vb?(b=0,a=8):(b=0,a=-1,yd(this),e=d=!1)):Wd(this,this.Qd);var k=a,l=b,p=se(this,this.da);204!=p||this.xc||(d=!1);this.ca&131072&&(6==k&&99==p||13==k&&205==p)&&(d=!1);983040<=this.da&&1048575>=this.da&&(d=!1);if(d){var q=this.ja.Rb,
|
||||
k="Fault 0x"+da(k,2)+(null!=l?" (0x"+da(l,4)+")":"")+" on opcode "+("0x"+da(p,2));d&&q&&(k+=" (blocked by PCjs Debugger)");this.Ha(k);oc(this)}if(d&&e)throw-1;if(e)throw this.Vb=a,tg.call(this,a,b,c),this.Qd=this.da,this.N=1==a?this.N|8192:this.N|4096,a;}function zd(a,b,c){this.od=a;a=0;b&&(a|=1);c&&(a|=2);3==this.Fa&&(a|=4);m.call(this,14,a)}function md(){this.Fc[this.X()].call(this)}function pd(){Kc(this,t(this)&this.C);this.A-=this.D.zc}
|
||||
function Wc(){this.sa=this.xa;var a=t(this)&this.C;Kc(this,this.G&this.C);Kc(this,this.F&this.C);Kc(this,this.I&this.C);Kc(this,this.B&this.C);Kc(this,a);Kc(this,this.K&this.C);Kc(this,this.J&this.C);Kc(this,this.H&this.C);this.A-=this.D.Ui;this.sa=-1}
|
||||
function Xc(){this.sa=this.xa;this.H=this.H&~this.C|n(this);this.J=this.J&~this.C|n(this);this.K=this.K&~this.C|n(this);r(this,t(this)+this.ba);this.B=this.B&~this.C|n(this);this.I=this.I&~this.C|n(this);this.F=this.F&~this.C|n(this);this.G=this.G&~this.C|n(this);this.A-=this.D.Si;this.sa=-1}function Yc(){this.ua[this.X()].call(this,Vf)}function rd(){!(this.Ua&1)||this.ca&131072?m.call(this,6):this.Da[this.X()].call(this,Uf)}function sd(){this.N|=20;this.O=this.S=this.Qa;this.A-=this.D.Oc}
|
||||
function Xc(){this.sa=this.xa;this.H=this.H&~this.C|n(this);this.J=this.J&~this.C|n(this);this.K=this.K&~this.C|n(this);r(this,t(this)+this.ba);this.B=this.B&~this.C|n(this);this.I=this.I&~this.C|n(this);this.F=this.F&~this.C|n(this);this.G=this.G&~this.C|n(this);this.A-=this.D.Si;this.sa=-1}function Yc(){this.ua[this.X()].call(this,Vf)}function qd(){!(this.Ua&1)||this.ca&131072?m.call(this,6):this.Da[this.X()].call(this,Uf)}function sd(){this.N|=20;this.O=this.S=this.Qa;this.A-=this.D.Oc}
|
||||
function td(){this.N|=20;this.O=this.S=this.Va;this.A-=this.D.Oc}function ud(){this.N|=1024;this.Ba&1024||(this.ba^=6,this.C^=-65536,Nd(this));this.A-=this.D.Oc}function vd(){this.N|=2048;this.Ba&2048||(this.Uc^=6,this.wa^=-65536,Ed(this));this.A-=this.D.Oc}function Zc(){Kc(this,this.Ga());this.A-=this.D.zc}function $c(){this.ua[this.X()].call(this,og)}function ad(){Kc(this,this.L());this.A-=this.D.zc}function bd(){this.ua[this.X()].call(this,mg)}
|
||||
function cd(){var a=1,b=0,c=this.wa,d=5;this.Ba&192&&(a=this.F&c,b=1,this.Ba&256&&(d=4));if(a--){var e=this.I&65535;re(this,e,1)&&(e=Nb(this.oa,e,1,this.da-b-1),this.Kc(this.va.hc(this.H&c,1),e),this.H=this.H&~c|this.H+(this.ca&1024?-1:1)&c,this.F=this.F&~c|this.F-b&c,this.A-=d,a&&(Yd(this),this.N|=256))}}
|
||||
function dd(){var a=1,b=0,c=this.wa,d=5;this.Ba&192&&(a=this.F&c,b=1,this.Ba&256&&(d=4));if(a--){var e=this.I&65535;re(this,e,this.ba)&&(e=Nb(this.oa,e,this.ba,this.da-b-1),this.Ub(this.va.hc(this.H&c,this.ba),e),this.H=this.H&~c|this.H+(this.ca&1024?-this.ba:this.ba)&c,this.F=this.F&~c|this.F-b&c,this.A-=d,a&&(Yd(this),this.N|=256))}}
|
||||
|
|
@ -899,8 +899,8 @@ f.yj=function(a,b,c){if(c)this.Ha("Unable to load font ROM (error "+c+": "+a+")"
|
|||
function $k(a,b){if(1==b)return a.ua[0]=xk[0],a.ua[1]=xk[7],a.ua;if(2==b){var c=a.F.ef;if(a.F===a.B){var d=a.B.Ic[0],c=d&7;d&16&&(c|=8);18!=a.B.Ic[1]&&(c|=32)}a.ua[0]=xk[c&15];c=c&32?zk:yk;for(d=0;d<c.length;d++)a.ua[d+1]=xk[c[d]];return a.ua}if(a.S===a.Jb)return xk;a.Va&&b&&!a.ua[16]&&(a.Va=!1);if(!a.Va){var c=a.B,d=c.we,e,k,l,p,q;if(8==b)for(k=0;256>k;k++)l=d[k]||0,p=l<<2&252,q=l>>4&252,l=l>>10&252,a.ua[k]=[p,q,l,255];else{var v=d&&d[255];e=null!=c.Ic[15]?c.Ic:Ak;for(k=0;16>k;k++)l=e[k]&63,v?(l|=
|
||||
(c.Ic[20]&12)<<4,c.Ic[16]&128&&(l&=-49,l|=(c.Ic[20]&3)<<4),l=d[l],p=l<<2&252,q=l>>4&252,l=l>>10&252):(p=(l&4?170:0)|(l&32?85:0),q=(l&2?170:0)|(l&16?85:0),l=(l&1?170:0)|(l&8?85:0)),a.ua[k]=[p,q,l,255]}a.Va=!0}return a.ua}function Kj(a,b,c,d){a.Fb=b;a.kc=c;a.Qa=d}
|
||||
function Wk(a,b){var c=!1;if(window&&a.Fb&&(!b||a.K)){var d=0,e=a.Qa?a.Qa:8,k=$k(a);al(a,3,a.kc[0],d,e,8,a.Fb,k)&&(c=!0);d=a.Qa?0:2048;e=a.Qa?a.Qa:9;al(a,1,a.kc[1],d,e,14,a.Fb,vk,wk)&&(c=!0);a.Qa&&al(a,a.nb,a.kc[1],0,a.Qa,14,a.Fb,k)&&(c=!0)}return c}function al(a,b,c,d,e,k,l,p,q){var v=!1;null!=c&&(bl(a,b,c,d,e,k,l,p,q)&&(v=!0),a.Xd&&bl(a,b<<1,c,d,e,k,l,p,q)&&(v=!0));return v}
|
||||
function bl(a,b,c,d,e,k,l,p,q){var v=!1,B=b&1?0:1,G=a.Fa[b],C=16>p.length?p.length:16;G||(G={sc:e<<B,tc:k<<B,$d:Array(C),Dh:p.slice(0,C),De:q,cg:Array(C)});for(q=0;q<C;q++){var K=p[q],V=G.$d[q]?G.Dh[q]:[];if(K[0]!==V[0]||K[1]!==V[1]||K[2]!==V[2]){var v=G,V=q,X=B,ja=c,ka=d,Ba=e,Ca=k,qd=l,Im=[0,0,0,0],xe=document.createElement("canvas");xe.width=v.sc<<4;xe.height=v.tc<<4;for(var ej=xe.getContext("2d"),Cb=void 0,Oc=void 0,cc=void 0,ye=8>Ca||!ka?Ca:8,Mf=ej.createImageData(v.sc,v.tc),Cb=0;256>Cb;Cb++){for(cc=
|
||||
0;cc<Ca;cc++)for(var Jm=v.De&&V&1&&cc>=Ca-2,Km=qd[cc<ye?ja+Cb*ye+cc:ka+Cb*ye+cc-ye],Nf=0;Nf<=X;Nf++)for(Oc=0;Oc<Ba;Oc++){var fj=Oc<<X,gj=(cc<<X)+Nf,hj=Jm||Km&128>>(8<=Oc&&192<=Cb&&223>=Cb?7:Oc)?K:Im;cl(Mf,fj,gj,hj);X&&cl(Mf,fj+1,gj,hj)}ej.putImageData(Mf,(Cb&15)*v.sc,(Cb>>4)*v.tc)}v.$d[V]="#"+da(K[0],2)+da(K[1],2)+da(K[2],2);v.Dh[V]=K;v.cg[V]=xe;v=!0}}a.Fa[b]=G;return v}function dl(a){0<a.Ja||0<=a.ha?0>a.La&&(a.La=0):a.La=-1}
|
||||
function bl(a,b,c,d,e,k,l,p,q){var v=!1,B=b&1?0:1,G=a.Fa[b],C=16>p.length?p.length:16;G||(G={sc:e<<B,tc:k<<B,$d:Array(C),Dh:p.slice(0,C),De:q,cg:Array(C)});for(q=0;q<C;q++){var K=p[q],V=G.$d[q]?G.Dh[q]:[];if(K[0]!==V[0]||K[1]!==V[1]||K[2]!==V[2]){var v=G,V=q,X=B,ja=c,ka=d,Ba=e,Ca=k,rd=l,Jm=[0,0,0,0],xe=document.createElement("canvas");xe.width=v.sc<<4;xe.height=v.tc<<4;for(var ej=xe.getContext("2d"),Cb=void 0,Oc=void 0,dc=void 0,ye=8>Ca||!ka?Ca:8,Mf=ej.createImageData(v.sc,v.tc),Cb=0;256>Cb;Cb++){for(dc=
|
||||
0;dc<Ca;dc++)for(var Km=v.De&&V&1&&dc>=Ca-2,Lm=rd[dc<ye?ja+Cb*ye+dc:ka+Cb*ye+dc-ye],Nf=0;Nf<=X;Nf++)for(Oc=0;Oc<Ba;Oc++){var fj=Oc<<X,gj=(dc<<X)+Nf,hj=Km||Lm&128>>(8<=Oc&&192<=Cb&&223>=Cb?7:Oc)?K:Jm;cl(Mf,fj,gj,hj);X&&cl(Mf,fj+1,gj,hj)}ej.putImageData(Mf,(Cb&15)*v.sc,(Cb>>4)*v.tc)}v.$d[V]="#"+da(K[0],2)+da(K[1],2)+da(K[2],2);v.Dh[V]=K;v.cg[V]=xe;v=!0}}a.Fa[b]=G;return v}function dl(a){0<a.Ja||0<=a.ha?0>a.La&&(a.La=0):a.La=-1}
|
||||
function Zk(a){if(a.K){for(var b=10;15>=b;b++)if(null==a.F.jb[b])return;var c=a.F.jb[10],b=c&31,d=a.F.jb[11]&31,e=a.F.jb[9]&31,k=!1;a.F===a.B&&(k=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!k||b>e)el(a);else{c=a.F.jb[15]+((a.F.jb[14]&63)<<8);a.ha!=c&&(el(a),a.ha=c);d=d-b+1;if(a.qd!=b||a.Nc!=d)a.qd=b,a.Nc=d;a.Ka=e+1;dl(a)}}}
|
||||
function el(a){if(0<=a.ha){if(void 0!==a.W){var b=a.W[a.ha];if(b&131072){var b=b&-131073,c=a.ha%a.H,d=a.ha/a.H|0;a.K&&a.Fa[a.K]&&(a.Na&&fl(a,c,d,b,a.Na),fl(a,c,d,b));a.W[a.ha]=b}}a.ha=-1}}
|
||||
function gl(a){var b,c=a.F;a.ed=!1;var d=c.Cd[5];if(null!=d){b=1024;var e=0,k=c.Cd[3]&31;switch(d&3){case 0:if(k){e=32;switch(k&24){case 8:e=96;break;case 16:e=160;break;case 24:e=224}c.Hc=k&7}break;case 1:e=1;break;case 2:switch(k&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.nb==Lj&&(e=3,c.Hc=k&7)}d&8&&(b=1280);c=c.ye[4];null!=c&&(c&4||(b|=4096,e|=16),d&64&&(c&8&&(b|=16384,e|=4),a.ed=!0));b|=e}return b}
|
||||
|
|
@ -914,7 +914,7 @@ function fl(a,b,c,d,e){var k=d&255,l=d>>8;d=l&15;var p=a.Fa[a.K];p.De&&(d=p.De[d
|
|||
e.fillRect(b,c+k,p.sc,l)):(a.Ka&&a.Ka!==a.Ca&&(k=k*a.Ca/a.Ka|0,l=l*a.Ca/a.Ka|0),a.da.fillStyle=p.$d[d],a.da.fillRect(b,c+k,a.ya,l)))}
|
||||
function nc(a,b){if(a.ja.Qb){var c=!1,d=a.F;d&&(d!==a.B?d.Jc&8&&(c=!0):d.Sd&32&&(c=!0));if(c||b){if(b)jl(a);else if(void 0===a.W)return;var e=!1;!(b||++a.Dd&15)&&0<=a.La&&(a.La++,e=!0);var k=0,l=a.ld,p=a.hb,c=p,q=c+a.Hb;19<=a.Da&&(p=c=655360,q=c+65536);if(kl(a,d)&8||d.ve&&d.ve<d.ih)d.af=(d.jb[12]<<8)+d.jb[13]|0,d.ve=0;var v=d.af;a.K&&(v<<=1);c+=v;v=a.fb;5<=a.nb&&d.jb[19]&&d.jb[19]<<1!=d.jb[1]+1&&(a.ab=d.jb[19]<<(a.K?1:d.jb[20]&64?3:4),v=(a.ab*(a.O-1)+a.H)/a.Pb|0,a.Da<=qk&&(v<<=1));c+v>q&&(v=q-c,0>
|
||||
v&&(v=0));q=c+v;if(d=!b&&a.xa){for(var d=a.oa,B=!0,G=c>>>d.ha;0<v&&G<d.W.length;)d.W[G].Oa&&(d.W[G].Oa=B=!1,d.W[G].Ph=!0),v-=d.yb,G++;d=B}if(d){if(!e)return;if(!a.Ja){if(0>a.ha)return;k=a.ha;l=k+1}}if(a.K){if(a.Fa[a.K]){e=0;p=a.Ja=0;d=1048575;v=a.F.Jc&32;5<=a.nb&&(v=a.F.Ic[16]&8);v&&(p=32768,d&=~p,a.La&2||(d&=-65537));for(c+=k<<1;c<q&&k<l;)v=Kb(a.oa,c),v|=65536,v&p&&(a.Ja++,v&=d),k==a.ha&&(v|=a.La&1?131072:0),a.xa&&v===a.W[k]||(fl(a,k%a.H,k/a.H|0,v,a.Na),a.W[k]=v,e++),c+=2,k++;a.xa=!0;e&&a.Na&&a.da.drawImage(a.Ma,
|
||||
0,0,a.kb,a.vb,a.Fc,a.Gc,a.mc,a.rc);dl(a)}}else if(a.jc){for(var l=q,C,q=c,k=a.Ja=0,e=a.Pb,p=16==e?65536:196608,d=16==e?1:2,v=$k(a,d),G=B=0,K=a.H,V=0,X=a.O,ja=0;q<l;){C=Kb(a.oa,q);if(a.xa&&C===a.W[k])B+=e;else{a.W[k]=C;C=C>>8|(C&255)<<8;var ka=p,Ba=16;B<K&&(K=B);for(var Ca=0;Ca<e;Ca++){var qd=(C&(ka>>=d))>>(Ba-=d);cl(a.Wa,B++,G,v[qd])}B>V&&(V=B);G<X&&(X=G);G>=ja&&(ja=G+1)}q+=2;k++;if(B>=a.H){B=0;G+=2;if(G>a.O)break;G==a.O&&(G=1,q=c+a.jc)}}a.xa=!0;K<a.H&&(a.Na.putImageData(a.Wa,0,0,K,X,V-K,ja-X),a.da.drawImage(a.Ma,
|
||||
0,0,a.kb,a.vb,a.Fc,a.Gc,a.mc,a.rc);dl(a)}}else if(a.jc){for(var l=q,C,q=c,k=a.Ja=0,e=a.Pb,p=16==e?65536:196608,d=16==e?1:2,v=$k(a,d),G=B=0,K=a.H,V=0,X=a.O,ja=0;q<l;){C=Kb(a.oa,q);if(a.xa&&C===a.W[k])B+=e;else{a.W[k]=C;C=C>>8|(C&255)<<8;var ka=p,Ba=16;B<K&&(K=B);for(var Ca=0;Ca<e;Ca++){var rd=(C&(ka>>=d))>>(Ba-=d);cl(a.Wa,B++,G,v[rd])}B>V&&(V=B);G<X&&(X=G);G>=ja&&(ja=G+1)}q+=2;k++;if(B>=a.H){B=0;G+=2;if(G>a.O)break;G==a.O&&(G=1,q=c+a.jc)}}a.xa=!0;K<a.H&&(a.Na.putImageData(a.Wa,0,0,K,X,V-K,ja-X),a.da.drawImage(a.Ma,
|
||||
0,0,a.H,a.O,0,0,a.na,a.va))}else if(a.ed){l=p;e=a.Ja=0;p=$k(a,8);d=a.F.rd;B=v=0;G=a.H;K=0;V=a.O;X=0;ja=a.F.ye[4]&8?4:1;C=a.F.Ic[19]&15;for(ka=a.ab>a.H?a.ab-a.H-C>>3:0;c<q;){k=d[c-l];Ca=4;C||(a.xa&&k===a.W[e]?(v+=Ca,Ca=0):a.W[e]=k,e++);if(Ca){v<G&&(G=v);for(Ba=0;Ba<Ca;Ba++)cl(a.Wa,v++,B,p[k&255]),k>>=8;v>K&&(K=v);B<V&&(V=B);B>=X&&(X=B+1)}c+=ja;if(v>=a.H){v=0;if(++B>a.O)break;c+=ka}}C||(a.xa=!0);G<a.H&&(a.Na.putImageData(a.Wa,0,0,G,V,K-G,X-V),a.da.drawImage(a.Ma,0,0,a.H,a.O,0,0,a.na,a.va))}else{l=p;
|
||||
k=a.Ja=0;e=$k(a);p=a.F.rd;v=d=0;B=a.H;G=0;K=a.O;V=0;X=a.F.Ic[19]&15;for(ja=a.ab>a.H?a.ab-a.H-X>>3:0;c<q;){C=c++-l;C=p[C];Ba=8;X?d?(ka=a.H-d,Ba>ka&&(Ba=ka)):(C<<=X,Ba-=X,a.xa=!1):(a.xa&&C===a.W[k]?(d+=Ba,Ba=0):a.W[k]=C,k++);if(Ba){d<B&&(B=d);for(ka=0;ka<Ba;ka++)Ca=Ck[C&-2139062144]||0,cl(a.Wa,d++,v,e[Ca]),C<<=1;d>G&&(G=d);v<K&&(K=v);v>=V&&(V=v+1)}if(d>=a.H){d=0;if(++v>a.O)break;c+=ja}}X||(a.xa=!0);B<a.H&&(a.Na.putImageData(a.Wa,0,0,B,K,G-B,V-K),a.da.drawImage(a.Ma,0,0,a.H,a.O,0,0,a.na,a.va))}}}}
|
||||
function kl(a,b){var c=0,d=tc(a.A)-b.yg;0>d&&(b.yg=d,d=-d|0);d%b.ug>b.Yk&&(c|=1);d%b.xg>b.$k&&(c|=9);b.ih=d/b.xg|0;return c}f.yk=function(){var a=this.ka,b;a.$b&&(b=a.qc);return b};f.Ll=function(a,b){var c=this.ka;c.Sf=c.qc;c.qc=b&31};f.xk=function(){return ll(this.ka)};f.Kl=function(a,b){ml(this,this.ka,b)};f.zk=function(){return this.ka.Jc};f.Ml=function(a,b){this.ka.Jc=b;Yk(this,!1)};f.Ak=function(){return nl(this,this.ka)};f.dj=function(a,b){this.B.Uf=this.B.Uf&-4|b&3};f.Xj=function(){return this.B.Sd};
|
||||
|
|
@ -949,9 +949,9 @@ f.he=function(a,b){if(this.$b&&this.A&&this.A.ja.Rb)switch(a){case Uk:this.O!=b&
|
|||
function Il(a,b,c){Ha.call(this,"Disk",{id:a.mf+".disk"+da(++Jl,4)},Il);this.controller=a;this.ta=a.ta;this.Ta=a.Ta;this.D=b;this.B=b.name;this.me=b.me;this.Cf=this.F=!1;Kl(this,c,b.ob,b.pb,b.ib,b.tb);this.K=[];this.O=[];this.H=null;this.W=0;this.S=!1;$a(this)}var Jl=0;Pa(Il);f=Il.prototype;f.nc=function(a,b,c,d){this.Ta=d};f.Tb=function(a,b){b||!this.Cf||this.F||($a(this,!1),this.load(this.B,this.J,null,this.Jj,this));return!0};f.Jj=function(){$a(this,!0)};
|
||||
f.Sb=function(a,b){if(this.F){var c,d=0;if(this.S&&!ra("Disk writes are still in progress, shut down anyway?"))return!1;for(;c=Ll(this,!1);)if(d=c[0]){this.controller.Ha('Unable to save "'+this.B+'" (error '+d+")");break}b&&this.F&&(c="action=close&volume="+this.J,c+="&machine="+this.controller.qe(),c+="&user="+this.controller.xd(),pa(qa()+"/api/v1/disk?"+c,!0),this.F=!1);!d&&a&&this.controller.Ha(this.B+" saved")}return!0};
|
||||
function Kl(a,b,c,d,e,k){a.mode=b;a.ob=c;a.pb=d;a.ib=e;a.tb=k;a.A=[];if("preload"!=a.mode){b=Array(a.ob);for(c=0;c<b.length;c++){d=Array(a.pb);for(e=0;e<d.length;e++){k=Array(a.ib);for(var l=1;l<=k.length;l++)k[l-1]=Ml(null,c,e,l,a.tb,"local"==a.mode?0:null);d[e]=k}b[c]=d}a.A=b}a.T=null}
|
||||
f.load=function(a,b,c,d,e){var k=b;if(!this.N)if(this.B=a,this.J=b,this.gj=ea(b),this.N=d,this.Z=e||this.controller,c){var l=this,p=new FileReader;p.onload=function(){var a=p.result,b,c=a?a.byteLength:0,d=ba[c];if(d){l.ob=d[0];l.pb=d[1];l.ib=d[2];l.tb=512;b=l.tb>>2;var e=d=0,a=new DataView(a,0,c);l.A=Array(l.ob);for(c=0;c<l.A.length;c++)for(var k=l.A[c]=Array(l.pb),V=0;V<k.length;V++)for(var X=k[V]=Array(l.ib),ja=0;ja<X.length;ja++){for(var ka=Ml(null,c,V,ja+1,l.tb,0),Ba=ka.data,Ca=0;Ca<b;Ca++,e+=
|
||||
4)var qd=Ba[Ca]=a.getInt32(e,!0),d=d+qd&-1;ka.Cc=b;X[ja]=ka}l.T=d;b=l}else l.Ha("Unrecognized diskette format ("+c+" bytes)");l.N&&(l.N.call(l.controller,l.D,b,l.B,l.J),l.N=null)};p.readAsArrayBuffer(c)}else 0>b.indexOf("/api/v1/dump")&&(a=fa(b),"json"==a||"gz"==a?k=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(k=Nl(this,b),this.Cf=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"):-1!==b.indexOf("/",
|
||||
b.length-1)&&(c="dir"),k=qa()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.me?"":d)+"&format=json")),pa(k,!0,null,this,this.rj)};
|
||||
f.load=function(a,b,c,d,e){var k=b;if(this.N)return!0;this.B=a;this.J=b;this.gj=ea(b);this.N=d;this.Z=e||this.controller;if(c){var l=this,p=new FileReader;p.onload=function(){var a=p.result,b,c=a?a.byteLength:0,d=ba[c];if(d){l.ob=d[0];l.pb=d[1];l.ib=d[2];l.tb=512;b=l.tb>>2;var e=d=0,a=new DataView(a,0,c);l.A=Array(l.ob);for(c=0;c<l.A.length;c++)for(var k=l.A[c]=Array(l.pb),V=0;V<k.length;V++)for(var X=k[V]=Array(l.ib),ja=0;ja<X.length;ja++){for(var ka=Ml(null,c,V,ja+1,l.tb,0),Ba=ka.data,Ca=0;Ca<b;Ca++,
|
||||
e+=4)var rd=Ba[Ca]=a.getInt32(e,!0),d=d+rd&-1;ka.Cc=b;X[ja]=ka}l.T=d;b=l}else l.Ha("Unrecognized diskette format ("+c+" bytes)");l.N&&(l.N.call(l.controller,l.D,b,l.B,l.J),l.N=null)};p.readAsArrayBuffer(c);return!0}0>b.indexOf("/api/v1/dump")&&(a=fa(b),"json"==a||"gz"==a?k=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(k=Nl(this,b),this.Cf=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"):-1!==
|
||||
b.indexOf("/",b.length-1)&&(c="dir"),k=qa()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.me?"":d)+"&format=json"));return 0<pa(k,!0,null,this,this.rj).length};
|
||||
f.rj=function(a,b,c){var d=null;this.pe=!1;var e=0>c&&this.ta&&!this.ta.ja.Qb;if(this.Cf)c?this.controller.Ha('Unable to connect to disk "'+this.J+'" (error '+c+": "+b+")",e):(this.F=!0,d=this);else if(c)this.controller.Ha('Unable to load disk "'+this.B+'" (error '+c+": "+a+")",e);else{Ra(this.controller.mf,a,b);try{if(0<ea(this.gj,!0).toLowerCase().indexOf("-readonly"))this.pe=!0;else{var k=b.indexOf("\n");0<k&&1024>k&&0<b.substring(0,k).indexOf("write-protected")&&(this.pe=!0)}var l;"<"==b.substr(0,
|
||||
1)?l=["Missing disk image: "+this.B]:l=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");if(l.length)if(1==l.length)g(l[0]);else{this.ob=l.length;this.pb=l[0].length;this.ib=l[0][0].length;var p=l[0][0][0];this.tb=p&&p.length||512;for(c=b=0;c<this.ob;c++)for(e=0;e<this.pb;e++)for(k=0;k<this.ib;k++)if(p=l[c][e][k]){var q=p.length;void 0===q&&(q=p.length=512);var q=q>>2,v=p.pattern;void 0===v&&(v=p.pattern=0);var B=p.data;
|
||||
if(void 0===B){var G=p.bytes;if(void 0!==G&&G.length){for(var C=q<<2,K=G.length;K<C;K++)G[K]=v;Ol(p,G,0)}else B=[],v=p.pattern=v|v<<8|v<<16|v<<24,p.data=B;delete p.bytes}Ml(p,c,e);for(C=0;C<B.length;C++)b=b+B[C]&-1}this.A=l;this.T=b;d=this}else g("Empty disk image: "+this.B)}catch(V){g("Disk image error ("+a+"): "+V.message)}}this.N&&(this.N.call(this.Z,this.D,d,this.B,this.J),this.N=null)};function Pl(a,b){var c=a.pb*a.ib,d=b/c|0;return d<a.ob?(c=b%c,a.seek(d,c/a.ib|0,c%a.ib+1)):null}
|
||||
|
|
@ -981,7 +981,7 @@ function $l(a,b){var c=0,d,e=!0;void 0===b&&(b=[0,0,128,Array(9),0,0,0,[]]);a.Xa
|
|||
B[G++];l.Ya=B[G++];l.Za=null;l.za||(l.Td="");C=B[G++];102==C&&(C=!1);if("boolean"==typeof C){var K=C,C=B[G++],B=B[G];K?(G=C,C=q.B[v],em(q,v,!0,!0),C.ke=!0,v=new Il(q,C,"preload"),q.Nh(C,v,G,B,!0)):gm(q,v,C,B,!0)?l.za&&B&&hm(q,C,B,l.za):$a(q,!1)}else void 0!==C&&l.za&&0>l.za.restore(C)&&(p=!1);p&&l.za&&void 0!==l.Ya&&(l.Za=l.za.seek(l.Bb,l.bb,l.sb));p||(e=!1)}a.O=b[c++]||0;a.J=b[c]||0;return e}
|
||||
function dm(a,b){b||(a.S=0);if(a.N)for(var c in a.N){var d=a.N[c],e=d.path,k;if(!(k=d.name))a:{if((k=a.pa.listDisks)&&k.options)for(var l=0;l<k.options.length;l++)if(k.options[l].value==e){k=k.options[l].innerText;break a}k=ea(e,!0)}if(e&&k&&(l=c.charCodeAt(0)-65,0<=l&&l<a.B.length)){!gm(a,l,k,e,!0)&&b&&$a(a,!1);continue}a.Ha("Incorrect auto-mount settings for drive "+c+" ("+JSON.stringify(d)+")")}return!!a.S}
|
||||
function Yl(a,b,c,d){var e,k=a.pa.listDrives;if(k&&!isNaN(e=ca(k.value,10))&&0<=e&&e<a.B.length)if(c)if("?"==c)a.Ha('Use "Choose File" and "Mount" to select and load a local disk.');else{if("??"==c){c=window.prompt("Enter the URL of a remote disk image.","")||"";if(!c)return;b=ea(c)}for(;gm(a,e,b,c,!1,d)&&window.confirm("Click OK to reload the original disk.\n(WARNING: All disk changes will be discarded)");){for(var k=a,l=c,p=void 0,p=0;p<k.D.length;p++)if(k.D[p][1]==l){k.D.splice(p,1);break}em(a,
|
||||
e,!1,!0)}}else em(a,e);else a.Ha("Unable to load the selected drive")}function gm(a,b,c,d,e,k){var l=a.B[b];if(d&&l.Td!=d){em(a,b,e,!0);if(l.Mc)return a.Ha("Drive "+b+" busy"),!0;l.Mc=!0;e&&(l.Jd=!0,a.S++);l.ke=!!k;(new Il(a,l,"preload")).load(c,d,k,a.Nh);return!1}return!0}
|
||||
e,!1,!0)}}else em(a,e);else a.Ha("Unable to load the selected drive")}function gm(a,b,c,d,e,k){var l=a.B[b];if(d&&l.Td!=d){em(a,b,e,!0);if(l.Mc)return a.Ha("Drive "+b+" busy"),!0;l.Mc=!0;e&&(l.Jd=!0,a.S++);l.ke=!!k;if(!(new Il(a,l,"preload")).load(c,d,k,a.Nh))return!1}return!0}
|
||||
f.Nh=function(a,b,c,d,e){var k;a.Mc=!1;b&&(k=b.info(),b&&k[0]>a.ob||k[1]>a.pb)&&(this.Ha('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Xa)),b=null);b?(a.za=b,a.hj=c,a.Td=d,hm(this,c,d,b),k=b.info(),this.O|=128,this.Ha('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Xa),a.Jd||e),a.Jf=k[0],a.Re=k[1],a.Se=k[2]):a.ke=!1;a.Jd&&(a.Jd=!1,--this.S||$a(this));Xl(this,a.Xa)};
|
||||
function cm(a,b,c){if((a=a.pa.listDisks)&&a.options){for(var d=0;d<a.options.length;d++)if(a.options[d].value==c)return;d=document.createElement("option");d.value=c;d.textContent=b;a.appendChild(d)}}
|
||||
function Xl(a,b){if(0<=b&&b<a.B.length){var c=a.B[b],d=a.pa.listDisks,e=a.pa.listDrives;if(d&&e&&d.options&&e.options&&(e=ca(e.value,10),c=c.ke?"?":c.Td,!isNaN(e)&&e==b)){for(e=0;e<d.options.length;e++)if(d.options[e].value==c){d.selectedIndex!=e&&(d.selectedIndex=e);break}e==d.options.length&&(d.selectedIndex=0)}}}function em(a,b,c,d){var e=a.B[b];e.za&&(fm(a,e.Td,e.za),e.hj="",e.Td="",e.za=null,e.ke=!1,a.O|=128,d||a.Ha("Drive "+String.fromCharCode(65+b)+" unloaded",c),c||d||Xl(a,b))}
|
||||
|
|
@ -1013,9 +1013,9 @@ f.$j=function(){var a=this.ga;this.ga&64&&(this.ga&=-129);return a};f.dl=functio
|
|||
function Em(a){var b=!1,c=a.va,d=a.ha&16?1:0,e=a.ha&15,k=a.qa|(a.na&3)<<8,l=a.sa,p=a.O||256;a.Xa=-1;a.D=null;a.N=0;a.ga=80;var q=a.B[d];q?(q.Ed=k,q.bb=e,q.sb=l,q.zb=p*q.tb,c=144<=c?c:c&240,q.Za=null,q.Ya=0,q.errorCode=0,a.Xa=d,a.D=q):c=-1;switch(c&240){case 16:b=!0;break;case 32:a.ga=128;Am(q,function(b){0<=b&&a.T?(Bm(a),a.ga=88):(a.ga=1,a.N=16)},!1);break;case 48:a.ga=8;break;case 64:b=!0;break;case 112:b=!0;break;case 144:a.N=1;b=!0;break;case 145:q.pb=e+1,q.ib=p,b=!0}b&&Bm(a)}
|
||||
function Bm(a){!a.T||a.W&2||Le(a.T,14,120)}
|
||||
function ym(a){a.H=0;var b=Fm(a),c=Fm(a),d=c&32,e=d>>5,k=c&31,l=Fm(a),p=Fm(a),q=l<<2&768|p,v=l&63,B=Fm(a),G=Fm(a),C=a.B[e];C&&(C.Ed=q,C.bb=k,C.sb=v,C.zb=B*C.tb);switch(b){case 3:Gm(a,C?C.errorCode:4);Hm(a,c);Hm(a,l);Hm(a,p);Hm(a,0|d);b=-1;break;case 12:for(c=0;0<=(b=Fm(a));)C&&c<C.be.length&&(C.be[c++]=b);C&&xm(a,C);b=0;C||a.da!=e||(a.da=-1,b=2);Gm(a,b|d);b=-1;break;case 224:case 228:Gm(a,0|d),b=-1}if(0<=b)switch(void 0===C?b=-1:(C.errorCode=0,C.ij=0),b){case 0:Gm(a,0|d);break;case 1:C.Fe=G;Gm(a,
|
||||
0|d);break;case 5:Gm(a,0|d);break;case 8:Lm(a,C,function(b){Gm(a,b|d)});break;case 10:Mm(a,C,function(b){Gm(a,b|d)});break;case 15:Nm(a,C,function(b){Gm(a,b|d)});break;default:Gm(a,2|d)}}function Fm(a){var b=-1;a.H<a.F&&(b=a.K[a.H++]);return b}function Gm(a,b){a.H=a.F=0;void 0!==b&&Hm(a,b);a.T&&Le(a.T,5);a.ga|=32}function Hm(a,b){a.K[a.F++]=b}f.uj=function(a,b,c){void 0===b||0>b?Am(a,c):c(-1,!1)};f.vj=function(a,b){return void 0!==b&&0<=b?Dm(a,b):-1};
|
||||
0|d);break;case 5:Gm(a,0|d);break;case 8:Im(a,C,function(b){Gm(a,b|d)});break;case 10:Mm(a,C,function(b){Gm(a,b|d)});break;case 15:Nm(a,C,function(b){Gm(a,b|d)});break;default:Gm(a,2|d)}}function Fm(a){var b=-1;a.H<a.F&&(b=a.K[a.H++]);return b}function Gm(a,b){a.H=a.F=0;void 0!==b&&Hm(a,b);a.T&&Le(a.T,5);a.ga|=32}function Hm(a,b){a.K[a.F++]=b}f.uj=function(a,b,c){void 0===b||0>b?Am(a,c):c(-1,!1)};f.vj=function(a,b){return void 0!==b&&0<=b?Dm(a,b):-1};
|
||||
f.Gj=function(a,b){var c;void 0!==b&&0<=b?(c=b,a.Ya<a.ce.length?a.ce[a.Ya++]=c:(a.errorCode=20,c=-1)):c=-1;return c};f.Hj=function(a,b){var c;if(void 0!==b&&0<=b)a:if(c=b,a.errorCode)c=-1;else{a.Lc[a.ge++]=c;if(a.ge==a.Lc.length){a.Ed=a.Lc[0];a.bb=a.Lc[1];a.sb=a.Lc[2];a.zb=128<<a.Lc[3];for(var d=a.ge=0;d<a.zb;d++)if(0>Dm(a,a.Gh)){c=-1;break a}a.xf++}a.xf>=a.ud&&(c=-1)}else c=-1;return c};
|
||||
function Lm(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaRead",b);ij(a.T,3,function(a){a||0!=b.errorCode||(b.errorCode=4);c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}function Mm(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaWrite",b);ij(a.T,3,function(a){a||(0==b.errorCode&&(b.errorCode=4),20==b.errorCode&&(b.errorCode=0));c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}
|
||||
function Im(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaRead",b);ij(a.T,3,function(a){a||0!=b.errorCode||(b.errorCode=4);c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}function Mm(a,b,c){b.errorCode=4;if(b.za&&(b.Za=null,a.T)){b.errorCode=0;mj(a.T,3,a,"dmaWrite",b);ij(a.T,3,function(a){a||(0==b.errorCode&&(b.errorCode=4),20==b.errorCode&&(b.errorCode=0));c(b.errorCode?2:0)});return}c(b.errorCode?2:0)}
|
||||
function Nm(a,b,c){b.errorCode=4;b.ce&&b.ce.length==b.zb||(b.ce=Array(b.zb));b.Ya=0;a.T?(b.errorCode=0,mj(a.T,3,a,"dmaWriteBuffer",b),ij(a.T,3,function(a){a||0!=b.errorCode||(b.errorCode=4);c(b.errorCode?2:0)})):c(b.errorCode?2:0)}
|
||||
function Am(a,b,c){var d=-1,e=null,k=0;if(a.errorCode)return b&&b(d,!1,e,k),d;var l=!1!==c?1:0;if(a.Za&&(k=a.Ya,d=a.za.read(a.Za,a.Ya),a.Ya+=l,0<=d))return e=a.Za,b&&b(d,!1,e,k),d;if(b){if(a.za)return a.za.seek(a.Ed,a.bb,a.sb+a.wf,!1,function(c,q){(a.Za=c)?(e=c,k=a.Ya=0,Om(a),d=a.za.read(a.Za,a.Ya),a.Ya+=l):a.errorCode=20;b(d,q,e,k)}),d;a.errorCode=20;b(d,!1,e,k)}return d}
|
||||
function Dm(a,b){if(a.errorCode)return-1;do{if(a.Za&&a.za.write(a.Za,a.Ya++,b))break;a.za&&a.za.seek(a.Ed,a.bb,a.sb+a.wf,!0,function(b){a.Za=b});if(!a.Za){a.errorCode=20;b=-1;break}a.Ya=0;Om(a)}while(1);return b}function Om(a){a.sb++;var b=1-a.wf;a.sb>=a.ib+b&&(a.sb=b,a.bb++,a.bb>=a.pb&&(a.bb=0,a.Ed++))}f.Tk=function(){var a=this.A.I&255;!(this.A.G>>8)&&128<a&&(this.da=a-128);return!0};f.Uk=function(){var a;(a=this.A.G>>8||!this.T)||(a=!(this.T.ec[0].Vc&64));return a?!0:!1};
|
||||
|
|
@ -1025,7 +1025,7 @@ Td.prototype={constructor:Td,value:function(){return this[this.id]},data:functio
|
|||
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function Qm(a,b){a[a.id]={};b&&D(a,"parms",b);a.A=!1}function Rm(a){var b=!0;if(ta()){var c=JSON.stringify(a[a.id]);va(a.key,c)||(g("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Sm(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){g(c.message||c),b=!1}return b}function Tm(a,b){return a[a.id][b]||null}function D(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
||||
function Um(a,b,c){Ha.call(this,"Computer",a,Um);this.ja.Qb=!1;Vm(this,b);this.S=Zl(this,"autoPower",a);this.F=0;this.ta=a.busWidth||a.buswidth;this.B=Wm;this.T=null;this.J=this.ha=!1;this.ka=Zl(this,"url")||"";this.na=(Math.random()+.1).toString(36).substr(2,12);this.D=Xm(this);if(this.A=Ua("CPU",this.id)){this.Ta=Ua("Debugger",this.id);this.oa=new qb({id:this.mf+".bus",buswidth:this.ta},this.A,this.Ta);var d,e=Sa(this.id);if((this.md=Ua("Panel",this.id))&&this.md.hg)for(b=0;b<e.length;b++)d=e[b],
|
||||
d.Ha=this.md.Ha,d.pc=this.md.pc,d.hg=this.md.hg;for(b=0;b<e.length;b++)d=e[b],d.nc&&d.nc(this,this.oa,this.A,this.Ta);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.N=d:this.B=parseInt(d,10));var k;if(a=Ka&&Ka.state||Zl(this,"state")||(k=!0,a.state))b=this.W=a,k||(this.J=!0,this.B=Wm),this.B&&(this.O=new Td(this,Ym),this.O.load()?b=null:delete this.O);!b&&this.B&&(k=null,this.D&&(k=qa()+"/api/v1/user?req=load&user="+this.D+"&state="+Pm(this,Ym)),b=k)&&(this.J=!0);b?pa(b,!0,null,this,this.qj):$a(this);
|
||||
this.pa.power||(this.S=!0);!c&&this.S&&Zm(this,this.bf)}else g("Unable to find CPU component")}Pa(Um);var Ym="1.20.9",Wm=0;f=Um.prototype;f.qe=function(){return this.na};function Vm(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){g(d.message+" ("+c+")")}}a.K=b}function Zl(a,b,c){var d=null;a.K&&(d=a.K[b]);null==d&&c&&(d=c[b]);null==d&&"object"==typeof resources&&(d=resources[b]);return d}f.xd=function(){return this.D||""};
|
||||
this.pa.power||(this.S=!0);!c&&this.S&&Zm(this,this.bf)}else g("Unable to find CPU component")}Pa(Um);var Ym="1.20.9",Wm=0;f=Um.prototype;f.qe=function(){return this.na};function Vm(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){g(d.message+" ("+c+")")}}a.K=b}function Zl(a,b,c){var d=null;a.K&&(d=a.K[b]);null==d&&c&&(d=c[b]);null==d&&"object"==typeof resources&&resources[b]&&(d=b);return d}f.xd=function(){return this.D||""};
|
||||
f.qj=function(a,b,c){c?(this.N=null,this.J=!1,this.Ha("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(this.T=b,this.ha=!0);$a(this)};function Zm(a,b,c){for(var d=Sa(a.id),e=0;e<=d.length;e++){var k=e<d.length?d[e]:a;if(!ab(k)){ab(k,function(){Zm(a,b,c)});return}}b.call(a,c)}
|
||||
function $m(a,b){var c=new Td(a,Ym,"validate");if(c.load()&&Sm(c)){var d=Tm(c,"timestamp"),e=b?Tm(b,"timestamp"):"unknown";d!=e&&(a.Ha("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
f.bf=function(a){void 0===a&&(a=this.B||(this.T?1:Wm));if(!this.F){this.F++;var b=!1,c=!1;this.da=!1;var d=this.O||new Td(this,Ym);if(-1==a)b=!0;else if(a>Wm){if(d.load(this.T)){this.H=new Td(this,Ym,"failsafe");this.H.load()&&(an(this,d),a=2,Qm(this.H));D(this.H,"timestamp",la());Rm(this.H);var e=this.B&&!this.J;if(1==a||ra("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=Sm(d)){var k=Tm(d,"code"),l=Tm(d,"data");k&&("ok"==k?d.load(l):("error"==k&&"no machine state"!=
|
||||
|
|
@ -1042,13 +1042,14 @@ function en(a,b){a.D=null;var c=pa(qa()+"/api/v1/user?req=verify&user="+b),d=c[1
|
|||
function dn(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Pm(a,Ym);d.data=c;b=pa(qa()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Ha("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.Ha(c),va("user",""),a.D=null)}}
|
||||
function jb(a,b,c){a=Sa(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}Da(function(){for(var a=Ya(document,"pcjs-machine"),b=0;b<a.length;b++)for(var c=a[b],d=Va(c),c=Ya(c,"pcjs","computer"),e=0;e<c.length;e++){var k=c[e],l=Va(k),l=new Um(l,d,!0);Xa(l,k);l.S&&Zm(l,l.bf)}});xa.show.push(function(){for(var a=Ya(document,"pcjs","computer"),b=0;b<a.length;b++){var c=Va(a[b]);(c=Ua("Computer",c.id))&&c.Z&&!c.ja.Qb&&c.bf(-1)}});
|
||||
xa.exit.push(function(){for(var a=Ya(document,"pcjs","computer"),b=0;b<a.length;b++){var c=Va(a[b]);(c=Ua("Computer",c.id))&&c.ja.Qb&&cn(c,!(!c.B||c.N),!0)}});var fn=0;function gn(a,b,c,d,e,k){e("Loading "+a+"...");pa(a,!0,null,null,function(l,p,q){q?(p||(p="unable to load "+a+" ("+q+")"),k(p,null)):hn(p,a,b,c,d,e,k)})}
|
||||
function hn(a,b,c,d,e,k,l){function p(a,k){if(k)l(k,null);else{if(c){var p=b;p&&0>p.indexOf("/")&&(p=window.location.pathname+p);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+p+'"}';a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(p?' url="'+p+'"':""))}p=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(p=new window.ActiveXObject("Microsoft.XMLDOM"),
|
||||
p.async=!1,p.loadXML(a)):p=(new window.DOMParser).parseFromString(a,"text/xml")}catch(G){p=null,a=G.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);l(a,p)}}a?e?jn(a,k,p):p(a,null):l("no data"+(b?" for file: "+b:""),null)}
|
||||
function hn(a,b,c,d,e,k,l){function p(a,k){if(k)l(k,null);else{if(c){Ra(c,b,a);var p=b;p&&0>p.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(p=window.location.pathname+p);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+p+'"}';a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(p?' url="'+p+'"':""))}p=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in
|
||||
window?(p=new window.ActiveXObject("Microsoft.XMLDOM"),p.async=!1,p.loadXML(a)):p=(new window.DOMParser).parseFromString(a,"text/xml")}catch(G){p=null,a=G.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);l(a,p)}}a?e?jn(a,k,p):p(a,null):l("no data"+(b?" for file: "+b:""),null)}
|
||||
function jn(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");pa(e,!0,null,null,function(k,l,p){if(p||!l)c(a,"unable to resolve XML reference: "+d[0]+" ("+p+")");else{if(k=d[3])if(p=l.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var q=p[0],v,B=/( [a-z]+=)(['"])(.*?)\2/g;v=B.exec(k);)q=0>q.indexOf(v[1])?q.replace(">",v[0]+">"):q.replace(new RegExp(v[1]+"(['\"])(.*?)\\1"),v[0]);p[0]!=q&&(l=l.replace(p[0],q))}else{c(a,"missing <"+d[1]+"> in "+e);return}l=l.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],l);jn(a,b,c)}})}else c(a,null)}
|
||||
function kn(a,b,c,d){function e(a){if(void 0===p){var b=l&&Ya(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ha(a))}function k(a){e("Error: "+a);q&&(--fn||Fa(!0));q=!1}var l,p,q=!0;fn++;Qa[a]={};try{if(l=document.getElementById(a)){c||(c="/versions/pcjs/1.20.9/components.xsl");var v=function(d,p){p?(Ra(a,b,d),gn(c,null,null,!1,e,function(d,q){if(q)if(Ra(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var v=p.transformNode(q);v?(l.outerHTML=v,--fn||Fa(!0)):k("transformNodeToObject failed")}else document.implementation&&
|
||||
document.implementation.createDocument?(v=new XSLTProcessor,v.importStylesheet(q),(v=v.transformToFragment(p,document))?l.parentNode?(l.parentNode.replaceChild(v,l),--fn||Fa(!0)):k("invalid machine element: "+a):k("transformToFragment failed")):k("unable to transform XML: unsupported browser");else k(d)})):k(d)};"<"!=b.charAt(0)?gn(b,a,d,!0,e,v):hn(b,null,a,d,!1,e,v)}else k("missing machine element: "+a)}catch(B){k(B.message)}return q}window.embedPC=function(a,b,c,d){Fa(!1);return kn(a,b,c,d)};
|
||||
window.enableEvents=Fa;window.sendEvent=Ga;
|
||||
function ln(a,b,c,d){var e;c=d[0];var k,l;b&&((e=b.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/))||(b=""));if(b){b=Qa[c];var p={},q;for(q in b){var v=b[q],B=fa(q);if("xml"==B){for(B=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;k=B.exec(b[q]);){var G=k[2];G&&(b[G]||(v=v.replace(k[0],"")))}k=q=ea(q)}else"xsl"==B&&(l=q=ea(q));p[q]=v}d[1]&&(p[q="parms"]=d[1]);d[2]&&(p[q="state"]=d[2]);k&&l?(d=JSON.stringify(p),a=ea(a,!0),b=e[1]+"var resources="+d+";"+e[2]+e[3],e="data:application/javascript,"+
|
||||
encodeURI(b),d=document.createElement("a"),"string"==typeof d.download?(d.href=e,d.download=a+".json",document.body.appendChild(d),d.click(),document.body.removeChild(d),e='Check your Downloads folder for "'+a+'.json", '+('copy it to your web server as "'+a+'.js", and then add the following to your web page:\n\n'),e+='<div id="'+c+'"></div>\n',e+="...\n",e+='<script type="text/javascript" src="'+a+'.js">\x3c/script>\n',e+='<script type="text/javascript">embedPC("'+c+'","'+k+'","'+l+'");\x3c/script>\n\n',
|
||||
e+="The machine should appear where the <div> is located.",g(e)):window.open(e)):g("Missing XML/XSL resources")}else g("Unabled to download script")}window.savePC=function(a,b){var c=Ua("Computer",a),d=Ua("Debugger",a);if(c){var e=cn(c,!0),k=c.K?JSON.stringify(c.K):null;b||(b="/versions/pcjs/1.20.9/pc"+(d?"-dbg":"")+".js");pa(b,!0,null,null,ln,[a,k,e,c,d]);return!0}g("Unable to identify machine '"+a+"'");return!1};})();
|
||||
function kn(a,b,c,d){function e(a){if(void 0===p){var b=l&&Ya(l,"machine-warning");p=b&&b[0]||l}p&&(p.innerHTML=ha(a))}function k(a){e("Error: "+a);q&&(--fn||Fa(!0));q=!1}var l,p,q=!0;fn++;Qa[a]={};try{if(l=document.getElementById(a)){var v;if("object"==typeof resources&&(v=resources.css)){var B=document.head||document.getElementsByTagName("head")[0],G=document.createElement("style");G.type="text/css";G.styleSheet?G.styleSheet.cssText=v:G.appendChild(document.createTextNode(v));B.appendChild(G)}c||
|
||||
(c="/versions/pcjs/1.20.9/components.xsl");v=function(d,p){p?gn(c,null,null,!1,e,function(d,q){if(q)if(Ra(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var v=p.transformNode(q);v?(l.outerHTML=v,--fn||Fa(!0)):k("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(v=new XSLTProcessor,v.importStylesheet(q),(v=v.transformToFragment(p,document))?l.parentNode?(l.parentNode.replaceChild(v,l),--fn||Fa(!0)):k("invalid machine element: "+
|
||||
a):k("transformToFragment failed")):k("unable to transform XML: unsupported browser");else k(d)}):k(d)};"<"!=b.charAt(0)?gn(b,a,d,!0,e,v):hn(b,null,a,d,!1,e,v)}else k("missing machine element: "+a)}catch(C){k(C.message)}return q}window.embedPC=function(a,b,c,d){Fa(!1);return kn(a,b,c,d)};window.enableEvents=Fa;window.sendEvent=Ga;
|
||||
function ln(a,b,c,d){if(!c&&b){d.push(b);a=Qa[d[0]];b=null;for(var e in a)if(-1!==e.indexOf("components.xsl",e.length-14)){b=e.replace(".xsl",".css");break}b?pa(b,!0,null,null,mn,d):mn(0,null,0,d)}else g("Error ("+c+") requesting "+a)}
|
||||
function mn(a,b,c,d){var e,k,l;a=d[0];c=d[1];e=d[4];e=e.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var p=Qa[a],q={},v;for(v in p){var B=p[v],G=fa(v);if("xml"==G){for(G=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;k=G.exec(p[v]);){var C=k[2];C&&(p[C]||(B=B.replace(k[0],"")))}k=v=ea(v)}else"xsl"==G&&(l=v=ea(v));q[v]=B}b&&(q[v="css"]=b);d[2]&&(q[v="parms"]=d[2]);d[3]&&(q[v="state"]=d[3]);k&&l?(b=JSON.stringify(q),e=e[1]+"var resources="+b+";"+e[2]+e[3],b="data:application/javascript,"+
|
||||
(wa("Firefox")?encodeURIComponent(e):encodeURI(e)),d=document.createElement("a"),"string"==typeof d.download&&2E6>e.length?(d.href=b,d.download=c+".json",document.body.appendChild(d),d.click(),document.body.removeChild(d)):window.open(b),b='Check your Downloads folder for "'+c+'.json", '+('copy it to your web server as "'+c+'.js", and then add the following to your web page:\n\n'),b+='<div id="'+a+'"></div>\n',b+="...\n",b+='<script type="text/javascript" src="'+c+'.js">\x3c/script>\n',b+='<script type="text/javascript">embedPC("'+
|
||||
a+'","'+k+'","'+l+'");\x3c/script>\n\n',b+="The machine should appear where the <div> is located.",g(b)):g("Missing XML/XSL resources")}window.savePC=function(a,b){var c=Ua("Computer",a),d=Ua("Debugger",a);if(c){var e=cn(c,!0),c=c.K?JSON.stringify(c.K):null;b||(b="/versions/pcjs/1.20.9/pc"+(d?"-dbg":"")+".js");pa(b,!0,null,null,ln,[a,ea(b,!0),c,e]);return!0}g("Unable to identify machine '"+a+"'");return!1};})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue