diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js index e5d8bcbff..ec53adcac 100644 --- a/modules/pdp10/lib/cpuops.js +++ b/modules/pdp10/lib/cpuops.js @@ -6314,7 +6314,7 @@ PDP10.doDIV = function(dst, ext, src) }; /** - * doMUL(dst, src, fTruncate) + * doMUL(dst, src, fTruncate, fExternal) * * Performs the multiplication (MUL) of two signed 36-bit operands. * @@ -6353,10 +6353,11 @@ PDP10.doDIV = function(dst, ext, src) * @this {CPUStatePDP10} * @param {number} dst (36-bit value) * @param {number} src (36-bit value) - * @param {boolean} [fTruncate] (true to truncate the result to 36 bits) + * @param {boolean} [fTruncate] (true to truncate the result to 36 bits; used by IMUL instructions) + * @param {boolean} [fExternal] (true if external caller; avoids modifying the CPU state) * @return {number} (dst * src) (the high 36 bits of the result; the low 36 bits are stored in regEX) */ -PDP10.doMUL = function(dst, src, fTruncate) +PDP10.doMUL = function(dst, src, fTruncate, fExternal) { var n1 = dst, n2 = src; var fNeg = false, res, ext; @@ -6366,7 +6367,7 @@ PDP10.doMUL = function(dst, src, fTruncate) * we'll negate the result afterward if necessary. */ if (n1 > PDP10.INT_MASK) { - if (this.model != PDP10.MODEL_KA10 || n1 != PDP10.INT_LIMIT) { + if (fExternal || this.model != PDP10.MODEL_KA10 || n1 != PDP10.INT_LIMIT) { n1 = PDP10.WORD_LIMIT - n1; fNeg = !fNeg; } @@ -6408,8 +6409,10 @@ PDP10.doMUL = function(dst, src, fTruncate) /* * If ext is something OTHER than an extension of the res sign bit, then we have overflow. */ - if ((ext || res > PDP10.INT_MASK) && (ext != PDP10.WORD_MASK || res <= PDP10.INT_MASK)) { - this.regPS |= PDP10.PSFLAG.AROV; + if (!fExternal) { + if ((ext || res > PDP10.INT_MASK) && (ext != PDP10.WORD_MASK || res <= PDP10.INT_MASK)) { + this.regPS |= PDP10.PSFLAG.AROV; + } } /* * Also note that, in the truncate case, we return the low order bits (res), rather than the @@ -6418,7 +6421,7 @@ PDP10.doMUL = function(dst, src, fTruncate) return res; } - return PDP10.split72.call(this, res, ext); + return PDP10.split72.call(this, res, ext, fExternal); }; /** @@ -6503,16 +6506,17 @@ PDP10.merge72 = function(dst, ext) }; /** - * split72(res, ext) + * split72(res, ext, fExternal) * * Returns two 36-bit values with matching sign bits from a unified 72-bit result. * * @this {CPUStatePDP10} * @param {number} res (36-bit value) * @param {number} ext (36-bit value) + * @param {boolean} [fExternal] (true if external caller; avoids modifying the CPU state) * @return {number} (returns the upper 36 bits; the lower 36 bits are stored in regEX) */ -PDP10.split72 = function(res, ext) +PDP10.split72 = function(res, ext, fExternal) { /* * We just produced a signed 72-bit result, whereas the PDP-10 stores 72-bit arithmetic values as two @@ -6525,6 +6529,7 @@ PDP10.split72 = function(res, ext) var sign = ext - (ext % PDP10.INT_LIMIT); ext = ((ext * 2) % PDP10.WORD_LIMIT) + Math.trunc(res / PDP10.INT_LIMIT); res = sign + (res % PDP10.INT_LIMIT); + if (fExternal) return res; var signNew = ext - (ext % PDP10.INT_LIMIT); if (sign != signNew) { ext = sign + (ext - signNew); diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js index 56d52fa05..aaa5c7915 100644 --- a/modules/pdp10/lib/debugger.js +++ b/modules/pdp10/lib/debugger.js @@ -507,6 +507,21 @@ class DebuggerPDP10 extends Debugger { } } + /** + * evalMUL(dst, src) + * + * Overrides the standard multiplication function with one that honors PDP-10 semantics and precision. + * + * @this {DebuggerPDP10} + * @param {number} dst + * @param {number} src + * @return {number} (dst * src) + */ + evalMUL(dst, src) + { + return PDP10.doMUL.call(this.cpu, dst, src, false, true); + } + /** * parseAddr(sAddr, dbgAddr) * diff --git a/modules/shared/lib/debugger.js b/modules/shared/lib/debugger.js index 82eac2ae6..75d30a05d 100644 --- a/modules/shared/lib/debugger.js +++ b/modules/shared/lib/debugger.js @@ -426,6 +426,22 @@ class Debugger extends Component return ((((dst / Debugger.TWO_POW32)|0) ^ ((src / Debugger.TWO_POW32)|0)) * Debugger.TWO_POW32) + ((dst ^ src) >>> 0); } + /** + * evalMUL(dst, src) + * + * I could have adapted the code from /modules/pdp10/lib/cpuops.js:PDP10.doMUL(), but it was simpler to + * write this base method and let the PDP-10 Debugger override it with a call to the *actual* doMUL() method. + * + * @this {Debugger} + * @param {number} dst + * @param {number} src + * @return {number} (dst * src) + */ + evalMUL(dst, src) + { + return dst * src; + } + /** * truncate(v, nBits, fUnsigned) * @@ -513,7 +529,7 @@ class Debugger extends Component var val1 = aVals.pop(); switch(chOp) { case '*': - valNew = val1 * val2; + valNew = this.evalMUL(val1, val2); break; case '/': if (!val2) return false; diff --git a/versions/pdpjs/1.34.3/pdp10-dbg.js b/versions/pdpjs/1.34.3/pdp10-dbg.js index cd0108247..180e9cd2e 100644 --- a/versions/pdpjs/1.34.3/pdp10-dbg.js +++ b/versions/pdpjs/1.34.3/pdp10-dbg.js @@ -31,12 +31,12 @@ var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi function ga(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});ga=function(){}}function ha(a){var b=0;return ia(function(){return ba?-b:b}});ma("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); -var na={tc:0,Mb:1,vc:2,wc:3,xc:4,yc:5,zc:6,Ac:7,yb:8,Bc:9,Nb:10,Cc:11,Dc:12,Ob:13,Ec:14,Fc:15,Gc:16,Hc:17,Ic:18,Jc:19,Kc:20,Lc:21,Mc:22,Nc:23,Oc:24,Pc:25,Qc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,xb:65,sc:66,uc:67,Rc:68,E:69,Sc:70,Tc:71,Uc:72,Vc:73,Wc:74,Xc:75,Yc:76,Zc:77,$c:78,ad:79,bd:80,Q:81,cd:82,dd:83,ed:84,fd:85,gd:86,hd:87, -jd:88,kd:89,Qb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,ld:97,md:98,nd:99,d:100,e:101,od:102,pd:103,qd:104,rd:105,sd:106,k:107,td:108,ud:109,n:110,vd:111,p:112,q:113,r:114,wd:115,t:116,yd:117,zd:118,Ad:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Pb:127}; +var na={uc:0,Nb:1,wc:2,xc:3,yc:4,zc:5,Ac:6,Bc:7,yb:8,Cc:9,Ob:10,Dc:11,Ec:12,Pb:13,Fc:14,Gc:15,Hc:16,Ic:17,Jc:18,Kc:19,Lc:20,Mc:21,Nc:22,Oc:23,Pc:24,Qc:25,Rc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,xb:65,tc:66,vc:67,Sc:68,E:69,Tc:70,Uc:71,Vc:72,Wc:73,Xc:74,Yc:75,Zc:76,$c:77,ad:78,bd:79,cd:80,Q:81,dd:82,ed:83,fd:84,gd:85,hd:86,jd:87, +kd:88,ld:89,Rb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,md:97,nd:98,od:99,d:100,e:101,pd:102,qd:103,rd:104,sd:105,td:106,k:107,ud:108,vd:109,n:110,wd:111,p:112,q:113,r:114,xd:115,t:116,zd:117,Ad:118,Bd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Qb:127}; function oa(a,b){var c;if(a){b||(b=10);var d,e,f=0g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function va(a,b,c){b?12=b?6:16777215>=b?8:12);return ua(a,8,b,c?"0o":"")} -function wa(a,b){b?11=Math.abs(a)?5:11;return ua(a,10,b)}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return ua(a,16,b,c?"0x":"")}function xa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function va(a,b,c){b?12=b?6:16777215>=b?8:12);return pa(a,8,b,c?"0o":"")} +function wa(a,b){b?11=Math.abs(a)?5:11;return pa(a,10,b)}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return pa(a,16,b,c?"0x":"")}function xa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Ba[a]})}function Ca(a,b){return(a+" ").slice(0,b)}function Da(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ba={"&":"&","<":"<",">":">",'"':""","'":"'"};function Ga(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function Ia(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, @@ -48,7 +48,7 @@ function Ra(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return function Ta(a){if(!Ua){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ua=c}return Ua[a]}function Va(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0a?this.bb=this.id:(this.cb=this.id.substr(0,a),this.bb=this.id.substr(a+1));this.A={ready:!1,Wa:!1,rb:!1,aa:!1,error:!1};this.gb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.za=null;fb.push(this)}function lb(a,b,c){mb[a]&&b&&(mb[a][b]=c)}function nb(){return Date.now()||+new Date} +function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Eb=b.comment;this.Ub=b;this.exports={};this.J=this.bindings={};a=this.id.indexOf(".");0>a?this.bb=this.id:(this.cb=this.id.substr(0,a),this.bb=this.id.substr(a+1));this.A={ready:!1,Wa:!1,rb:!1,aa:!1,error:!1};this.gb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.za=null;fb.push(this)}function gb(a,b,c){mb[a]&&b&&(mb[a][b]=c)}function nb(){return Date.now()||+new Date} function q(a){window&&window.alert(a)}function ob(a){var b=!1;window&&(b=window.confirm(a));return b}function pb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.cc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Ub,toggle:this.nc,reset:this.jc, -set:this.mc};Mb(this)}ja(cc,r);m=cc.prototype;m.reset=function(a){this.stop();a&&ec(this,this.w=0)}; +function cc(a,b){r.call(this,"Panel",a,512);this.K=this.L=0;this.V=b;this.i=this.I=this.j=this.w=0;this.M=this.N=-1;this.O=this.R=this.F=!1;this.T=dc;this.C={};this.b={START:[1,1,!0,!1,this.ec],STEP:[1,1,!1,!1,this.fc],ENABLE:[1,1,!1,!1,this.$b],CONT:[1,1,!0,!1,this.Yb],DEP:[0,0,!0,!1,this.Zb],EXAM:[1,1,!0,!1,this.ac],LOAD:[1,1,!0,!1,this.cc],TEST:[0,0,!0,!1,this.bc]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.dc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Vb,toggle:this.oc,reset:this.kc, +set:this.nc};Mb(this)}ja(cc,r);m=cc.prototype;m.reset=function(a){this.stop();a&&ec(this,this.w=0)}; m.ta=function(a,b,c,d){if(this.H&&this.H.ta(a,b,c,d)||this.v&&this.v.ta(a,b,c,d)||this.D&&this.D.ta(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){fc(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){gc(a,b)}}(this,b),a.ontouchstart= function(a,b){return function(c){fc(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){gc(a,b)}}(this,b),!0):r.prototype.ta.call(this,a,b,c,d)}};m.Ma=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;hc(this);ic(this)};m.Ba=function(a,b){if(!b)if(this.V&&jc(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.sa=function(a){return a?this.save():!0};m.save=function(){var a=new F(this);a.set(0,[this.i,this.w,this.j]);return a.data()}; -m.restore=function(a){if(a=a[0])kc(this,this.i=a[0]),ec(this,this.w=a[1]),lc(this,a[2]);return!0};m.jc=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}ic(this);return!0};function mc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function hc(a,b){for(var c in a.C)mc(a,c,null!=b?b:a.C[c])}function nc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function ic(a){for(var b in a.b)nc(a,b,a.b[b][1])} -m.Ub=function(a,b,c){if(fc(this,b)){if(c){var d=this;setTimeout(function(){gc(d,b);a&&a()},+c);return!1}gc(this,b)}return!0};m.mc=function(a,b){if("SR"==a)return lc(this,oa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,nc(this,a,c[1]),!0):!1};m.nc=function(a){return fc(this,a)?(gc(this,a),!0):!1};function fc(a,b){var c=a.b[b];return c?(nc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=oc&&(a.O=b==pc,a.R=b==qc),!0):!1} -function gc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(nc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.dc=function(a){a||this.v.A.P||(H(this.v,this.i),this.b[rc]&&this.b[rc][1]&&sc(this.v))};m.ec=function(){};m.Zb=function(a){a||this.v.Y()}; -m.Xb=function(a){if(!a&&!this.v.A.P)if(this.b[rc]&&this.b[rc][1])sc(this.v);else{if((a=this.D)&&!Nb(a,!0))Ob(a,!0),tc(a,0,null),Ob(a,!1);else try{var b=this.v.$a(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Ya+=h.B-e,h.B=e,!0;if(e>=h.B+h.Ya){l=h.size-(e-k);l>f&&(l=f);h.Ya=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Fc(Gc,e,f)}e=new Bc(a,e,l,16384,d);Cc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Hc[d]+" at "+va(b)),!0):Fc(Lc,b,c)} -function zc(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function yc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Dc(a){for(var b=0,c=[],d=0;d>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function yc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Dc(a){for(var b=0,c=[],d=0;d=a.qa&&(a.qa+=a.pa,c=!0);0<=a.ua&&a.ua<=fd(a)&&(a.pa=a.ua=-1,bd(a),a.Y(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Ha))}} +m.sa=function(a){return a?this.save():!0};m.fa=function(){return this.A.P?!0:this.A.fa?(sc(this),!0):!1};m.Lb=function(){return 0};function bd(a){void 0===a.Ia&&(a.Ia=0);void 0===a.pa&&(a.pa=-1);void 0===a.ua&&(a.ua=-1);a.A.Va=0<=a.Ia&&0=a.qa&&(a.qa+=a.pa,c=!0);0<=a.ua&&a.ua<=fd(a)&&(a.pa=a.ua=-1,bd(a),a.Y(),c=!0);c&&a.u(fd(a)+" cycles: checksum="+n(a.Ha))}} m.ta=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.aa)a=!0;else{var b=null,c,h=pb(a.id);for(c=0;ca.ba/a.ga?b=1:d=!0;a.ka=b;b=a.mb*a.ka;if(a.ga!=b){a.ga=b;b=a.ga.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&jd(a.H)}vc(a,a.M);a.M=0;a.L=nb();a.T=0;hd(a);return d}function kd(a,b){for(var c=a.R.length-1;0<=c;c--){var d=a.R[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function ld(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function md(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c} -m.kc=function(){if(this.A.P){this.eb>=this.pb&&hd(this,!0);this.va=0;this.Ga=nb();if(this.T){var a=this.Ga-this.T;a>this.ob&&(this.L+=a,this.L>this.Ga&&(this.L=this.Ga))}try{do{var b=kd(this,this.A.Va?1:this.Ja);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.va+=b;this.M+=b;wc(this,b);uc(this,b);this.na-=b;if(0>=this.na){this.na+=this.Ja;++this.qb>=nd&&(this.H&&J(this.H,void 0),this.qb=0);break}}while(this.A.P)}catch(e){this.Y();this.H&&this.H.stop(nb(),fd(this));yb(this, +m.lc=function(){if(this.A.P){this.eb>=this.pb&&hd(this,!0);this.va=0;this.Ga=nb();if(this.T){var a=this.Ga-this.T;a>this.ob&&(this.L+=a,this.L>this.Ga&&(this.L=this.Ga))}try{do{var b=kd(this,this.A.Va?1:this.Ja);try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}b=md(this,!0);this.va+=b;this.M+=b;wc(this,b);uc(this,b);this.na-=b;if(0>=this.na){this.na+=this.Ja;++this.qb>=nd&&(this.H&&J(this.H,void 0),this.qb=0);break}}while(this.A.P)}catch(e){this.Y();this.H&&this.H.stop(nb(),fd(this));yb(this, e.stack||e.message);return}if(this.A.P){a=setTimeout;b=this.Gb;this.T=nb();var c=this.ob;this.va&&(c=Math.round(c*this.va/this.Ja));var c=c-(this.T-this.Ga),d=this.T-this.L;d&&(this.ba=Math.round(this.M/(10*d))/100,864E5<=d&&(this.W=0,gd(this)));if(0>c||this.bac&&(this.L-=c),c=0;this.eb+=this.va;this.T+=c;a(b,c)}}}; function sc(a,b){if(!zb(a))if(a.A.P)a.u(a.toString()+" busy");else{gd(a);a.A.P=!0;a.A.jb=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&jd(a.H,!0),a.H.start(a.L,fd(a)));a.D||a.status("Started");setTimeout(a.Gb,0)}}m.$a=function(){return 0};m.Y=function(a){var b=!1;if(this.A.P){md(this);vc(this,this.M);this.M=0;this.A.P=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(nb(),fd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var id=30,nd=15,Zc=["power","reset"]; -function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.nb=b;this.ab=+a.addrReset||0;this.Rb=pd.bind(this);this.w=L.bind(this);this.Da=null;this.Db=[];this.A.complete=!1}ja(od,Yc);m=od.prototype; -m.reset=function(){this.status("Model "+this.nb);this.A.P&&this.Y();this.Ka=this.La=this.b=this.I=0;this.i=this.Ea=this.ab;this.K=this.O=-1;this.F=this.j=0;this.kb=[0,0];this.wa=[0,0];this.oa=[0,0];this.xa=[0,0];this.Ca=this.i;this.C=0;this.f=this.gc;this.g=this.rc;this.Da=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Kb=function(){return 0}; +function od(a){var b=+a.model||1001;Yc.call(this,a,1E6);this.nb=b;this.ab=+a.addrReset||0;this.Sb=pd.bind(this);this.w=L.bind(this);this.Da=null;this.Db=[];this.A.complete=!1}ja(od,Yc);m=od.prototype; +m.reset=function(){this.status("Model "+this.nb);this.A.P&&this.Y();this.Ka=this.La=this.b=this.I=0;this.i=this.Ea=this.ab;this.K=this.O=-1;this.F=this.j=0;this.kb=[0,0];this.wa=[0,0];this.oa=[0,0];this.xa=[0,0];this.Ca=this.i;this.C=0;this.f=this.hc;this.g=this.sc;this.Da=null;ad(this);this.A.error=!1;Yc.prototype.reset.call(this)};m.Lb=function(){return 0}; m.save=function(){var a=new F(this);a.set(0,[this.b,this.I,this.Ka,this.La,this.i,this.O,this.K,this.j,this.C,this.Ea,this.Ca,this.ab]);a.set(1,[]);a.set(2,[this.W,this.ka,this.A.fa]);a.set(3,qd(this));a.set(4,ld(this));return a.data()}; m.restore=function(a){var b;b=a[0];ga();ca();ga();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ka=b.next().value;this.La=b.next().value;this.i=b.next().value;this.O=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.Ea=b.next().value;this.Ca=b.next().value;this.ab=b.next().value;b=a[2];this.W=b[0];gd(this,b[1]);this.A.fa=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)}; -m.rc=function(a,b){var c=this.G;a=this.Ca=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; +if(e.pc===b[c]){d=e;break a}}d=null}d&&(d.next=this.Da,this.Da=d)}a=a[4];for(b=0;b>>b.i].f(a&16383,a)}; +m.sc=function(a,b){var c=this.G;a=this.Ca=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; m.$a=function(a){this.A.complete=!0;var b=this.D?td(this.D)?1:this.A.jb?-1:0:0,c=a?this.A.jb?0:1:-1;this.A.jb=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(ud(this.D,this.i,c)){this.Y();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Da||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&ud(this.D,this.i,c)){this.Y();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ka=this.f(this.b):0<=this.O?(this.I=this.La=this.f(this.O),this.O=-1):(this.I=this.La= -this.f(this.Ea=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ka=this.f(a))&Sb;a=this.I&4194304?-1:this.La/$b|0;0<=a&&this.Rb(a);this.N--}while(0>4].call(this,a,a&15)}function O(a){this.w(a)} +this.f(this.Ea=this.i),this.i=(this.i+1)%Tb);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ka=this.f(a))&Sb;a=this.I&4194304?-1:this.La/$b|0;0<=a&&this.Sb(a);this.N--}while(0>4].call(this,a,a&15)}function O(a){this.w(a)} function wd(){var a=0,b=this.f(this.b),c=b/ac&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=64-d));b=c*ac+(d<<24)+(b&16777215);a&&(b=(b+a)%D);this.g(this.b,b)}function xd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/ac&63,d=this.K>>24&63;a=32>=c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}} function yd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/ac&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%D;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function zd(a,b){this.g(b,this.f(this.b))}function Ad(a,b){this.g(b,this.b)}function Bd(a,b){this.g(this.b,this.f(b))}function Cd(a,b){this.g(b,0)}function Dd(a,b){this.g(b,C-this.f(b))}function Ed(a,b){this.g(b,C)} function Fd(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Gd(a,d,c)+(c-(c&x)))}function Hd(a,b){var c=this.f(b);this.g(b,Gd(a,c,0))}function Id(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Gd(a,c,b)+(b-(b&x)))}function Jd(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Kd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Gd(a,d,c)+c)} @@ -111,7 +111,7 @@ function ie(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x function oe(){}function pe(){}function L(a){this.u("undefined opcode: "+va(a));sd(this,-1);this.Y()}function qe(a){a>z&&(a!=B?a=Xb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%D;re.call(this,a,b,c);return c} function se(a,b,c){var d=!1,e=!1,f=b-b%B;a=a%B+b*B%D;b=this.F=f+Math.trunc(b/2);c>z&&(c=D-c,d=!d);b>z&&(a?(b=C-b,a=D-a):b&&(b=D-b),e=!0,d=!d);if(b>=c)return this.j|=131104,-1;f=this.kb;f[0]=0;f[1]=0;f=this.wa;f[0]=1;f[1]=0;f=this.oa;f[0]=c;f[1]=0;c=this.xa;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=D,b[1]--),ue(this.kb,this.wa),ve(this.xa)))break;we(this.oa);we(this.wa)}while(!ve(this.wa)); a=this.kb[0];this.F=this.xa[0];d&&a&&(a=D-a);e&&this.F&&(this.F=D-this.F);return a} -function xe(a,b,c){var d=a,e=b;b=!1;var f;d>z&&(1001!=this.nb||d!=B)&&(d=D-d,b=!b);e>z&&(e=D-e,b=!b);if(dz)&&(f!=C||a<=z)&&(this.j|=131072),a;c=a;b=f;a=b-b%B;b=2*b%D+Math.trunc(c/B);c=a+c%B;d=b-b%B;a!=d&&(b=a+(b-d),this.j|=131072);this.F=c;return b} +function xe(a,b,c,d){var e=a,f=b;b=!1;var g;e>z&&(d||1001!=this.nb||e!=B)&&(e=D-e,b=!b);f>z&&(f=D-f,b=!b);if(ez)&&(g!=C||a<=z)&&(this.j|=131072),a;c=a;b=g;a=b-b%B;b=2*b%D+Math.trunc(c/B);c=a+c%B;d?d=c:(d=b-b%B,a!=d&&(b=a+(b-d),this.j|=131072),this.F=c,d=b);return d} function ye(a){a?a==B?this.j|=163840:a=Xb-a:this.j|=98304;return a}function ze(a,b){var c=a-b;0>c&&(c+=D);re.call(this,c,b,a);return c}function re(a,b,c){a=Math.trunc(a/Wb);b=Math.trunc(b/Wb);c=Math.trunc(c/Wb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function T(a,b){return(a>>0)}function U(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function V(a){return a>>0)}function X(a){return(a/y|0)+(a&x)*y}function fe(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Ub?x*y:0}return b}function Gd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b} function ue(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=D&&(a[0]%=D,a[1]++)}function te(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function we(a){a[1]%2&&(a[0]+=D);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function ve(a){return!a[0]&&!a[1]} @@ -154,32 +154,32 @@ this.g(b,U(a,this.b))},function(a,b){a=this.f(b);R(a,this.b*y)||H(this,this.i+1) function(a,b){a=this.f(b);var c=this.f(this.b);R(a,c)||H(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));R(a,c)||H(this,this.i+1);this.g(b,U(a,c))},function(a,b){H(this,this.i+1);this.g(b,U(this.f(b),this.f(this.b)))},function(a,b){H(this,this.i+1);this.g(b,U(this.f(b),X(this.f(this.b))))},function(a,b){a=this.f(b);var c=this.f(this.b);R(a,c)&&H(this,this.i+1);this.g(b,U(a,c))},function(a,b){a=this.f(b);var c=X(this.f(this.b));R(a,c)&&H(this,this.i+1);this.g(b,U(a, c))},P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P],ne=[function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a,b){switch(b){case 0:a=this.f(this.b);a&8&&(this.j&=-131073);a&131072&&(this.j&=-262145);break;default:this.w(a)}},function(a,b){switch(b){case 0:a=0;this.j&131072&&(a|=8);this.j&262144&&(a|=65536);this.g(this.b,a);break;default:this.w(a)}},function(a){this.w(a)}, function(a){this.w(a)}]; -function Be(a){r.call(this,"ROM",a,128);this.Z=this.b=null;this.C=+a.addr;this.j=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=xa(this.w);if(this.w){a=this.w;var b=ya(this.F);"json"!=b&&"hex"!=b&&(a=Ka()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;Ia(a,null,!0,function(a,b,f){f?(c.ha("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(lb(c.cb,a,b),(a=Ja(a,b))?(c.b=a.da,c.Z=a.Z):c.w=null);Ce(c)})}}ja(Be,r); +function Be(a){r.call(this,"ROM",a,128);this.Z=this.b=null;this.C=+a.addr;this.j=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=xa(this.w);if(this.w){a=this.w;var b=ya(this.F);"json"!=b&&"hex"!=b&&(a=Ka()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;Ia(a,null,!0,function(a,b,f){f?(c.ha("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(gb(c.cb,a,b),(a=Ja(a,b))?(c.b=a.da,c.Z=a.Z):c.w=null);Ce(c)})}}ja(Be,r); Be.prototype.Ma=function(a,b,c,d){this.G=b;this.v=c;this.D=d;Ce(this)};Be.prototype.Ba=function(){this.Z&&(this.D&&De(this.D,this.id,this.C,this.j,this.Z),delete this.Z);return!0};Be.prototype.sa=function(){return!0}; function Ce(a){if(!Bb(a)){if(a.w){if(!a.b||!a.G)return;a.j||(a.j=a.b.length);if(a.b.length!=a.j)yb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.j,8,!0)+")");else{var b;b=a.C;if(Ec(a.G,b,a.j,Pc)){var c;for(c=0;c>>f.i;0>>= f.i;0>>a.i;0g&&g>=-B&&(g+=D);for(var g=Math.trunc(Math.abs(g))%D,h=d;f--&&h=na.xb&&c<=na.Qb&&(b=c-(na.xb-na.Mb));b&&(a.preventDefault&&a.preventDefault(),d.hb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==na.Ob&&(b=na.Nb);d.hb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +function He(a){r.call(this,"SerialPort",a,1048576);this.w=a.upperCase;"string"==typeof this.w&&(this.w="true"==this.w);this.j=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=Ie;b&&(void 0===c&&(c="Panel"),(c=rb(c,this.id))&&(b=c.J[b])&&this.ta(null,a,b))}this.b=this.C=null;this.exports={connect:this.Mb,receiveData:this.hb,receiveStatus:this.jc,setConnection:this.mc}}ja(He,r);m=He.prototype; +m.ta=function(a,b,c){var d=this;switch(b){case Ie:return this.J[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?na.yb:na.Qb:46==c?b=na.yb:a.ctrlKey&&c>=na.xb&&c<=na.Rb&&(b=c-(na.xb-na.Nb));b&&(a.preventDefault&&a.preventDefault(),d.hb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==na.Pb&&(b=na.Ob);d.hb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.hb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ma=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Mb(this)}; -m.Lb=function(a){if(!this.b){var b=$c(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Da(c[0]);if(d!=this.bb)return;c=Da(c[1]);if(this.b=qb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.cb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Lb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -m.sa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.hb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d");if(2==c.length){var d=Da(c[0]);if(d!=this.bb)return;c=Da(c[1]);if(this.b=qb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.cb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Mb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +m.sa=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new F(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.hb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.C&&a.w.length&&(a.C=0);if(0>a.C||b!=a.w[a.C])a.w.splice(0,0,b),a.C=0;a.C--}else a.V?b="end":b=a.w[a.C+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Da(b.substring(c,f))),c=f+1}}return a}function Le(a,b,c){if(32>=a.L)return b&c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)&(c/Me|0))*Me+((b&c)>>>0)} -function Ne(a,b,c){if(32>=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)^(c/Me|0))*Me+((b^c)>>>0)}function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b} -function Oe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f*=g;break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "^/":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1:0;break; -case "&":f=Le(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Me|0|g/Me|0)*Me+((f|g)>>>0));break;case "^!":f=Ne(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=a.L)return b|c;b=Y(a,b,0,!0);c=Y(a,c,0,!0);return((b/Me|0)^(c/Me|0))*Me+((b^c)>>>0)}Je.prototype.Jb=function(a,b){return a*b};function Y(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b|0:(a=Math.pow(2,c-1),b<-a?(b<2*-a&&(e=b%(2*a)),e+=2*a):e>=a&&(b>=2*a&&(e=b%(2*a)),e-=2*a));b!=e&&(b=e);return b} +function Oe(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f=a.Jb(f,g);break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "^/":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1: +0;break;case "&":f=Le(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=Y(e,f,0,!0),g=Y(e,g,0,!0),f=(f/Me|0|g/Me|0)*Me+((f|g)>>>0));break;case "^!":f=Ne(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=Y(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*| )/);d=Pe(a,b,0,b.length,a.U,c);void 0!==d&&!1===c&&Ve(a,null,d)}return d} function Qe(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b){f=a.ub(b);if(0<=f)f=a.vb(f);else if(f=a.i[b]&&a.i[b].value,null!=f){var g=a.i[b]&&a.i[b].ja;g&&(a.ja?(d||(a.u(b+" has too many undefined values ("+g+","+a.ja+")"),d=!0),f=void 0):a.ja=g)}else f=oa(b,1>>=2}f=Y(a,f)}else d||a.u("invalid "+(c?c:"value")+": "+b)}else d||a.u("missing "+(c|| "value"));return f}function Ve(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.U?K(a,c,a.L,8,1)+" "+c+".":K(a,c,a.L,16,1)+" "+K(a,c,a.L,8,1)+" "+K(a,c,a.L,2,32>=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function We(a){var b=a.i;a.i={};return b}function Xe(a,b){if(b)return Ve(a,b,a.i[b].value);var c=0;for(b in a.i)Ve(a,b,a.i[b].value),c++;return 0=a?8:262143>=a?18:36);b=ua(b,2,a,"",e);break;case 8:b=va(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +function K(a,b,c,d,e){c=void 0===c?0:c;e=void 0===e?0:e;switch((void 0===d?0:d)||a.U){case 2:(a=0=a?8:262143>=a?18:36);b=pa(b,2,a,"",e);break;case 8:b=va(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} var Se={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},Re={"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20},Me=Math.pow(2,32); function Ye(a){Je.call(this,a);this.Ja=!1;this.Ga=18;this.L=36;this.T=["<",">"];this.ua=[];this.Ia=Z();this.M=Z(0);this.pa=Z(0);this.ka=Z(0);this.I=[];this.b=this.N=this.K=[];Ze(this);this.W=this.qa=0;this.j=[];this.Da=void 0;$e(this);this.D=this;this.wa={};this.ca=this.Fb=0;this.ba=null;this.R=[];af(this,a.messages);this.va=a.commands;this.Ha=[];this.O=0;this.Oa=this.Ea=null;this.F=this.La=this.Ka=this.oa=this.Ca=0;this.xa=this.na=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return ed(b, a)}):void 0===global[v]&&(global[v]=function(a){return ed(b,a)})}ja(Ye,Je);function bf(a){a=a&&a.B;null==a&&(a=-1);return a}function Z(a,b,c){return{B:void 0===a?null:a,fb:void 0===b?!1:b,ra:!1,U:c}}function cf(a,b,c,d){a.B=b;a.fb=c||!1;a.ra=!1;a.U=d}function df(a){return[a.B,a.fb,a.ra,a.U,a.ib]}function ef(a,b){var c=Z(b[0],b[1],b[2]);c.ra=b[3];b[4]&&(c.Ab=Ke(a,c.ib=b[4]));return c}m=Ye.prototype; @@ -187,6 +187,7 @@ m.Ma=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.na=a.j;this.Ga=b.F;(b=$c( n(e<a&&a>=-B&&(a+=D);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function kf(a,b){return K(a,b/Tb,18)+" "+K(a,b%Tb,18)} @@ -208,7 +209,7 @@ m.Ra=function(a,b,c){var d=!0;c||Lf(this,a,b,!1,!0);if(a!=this.b){var e=bf(b);if function Nf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=va(d,2);cf(e.Ia,d);f+="="+K(e,e.Na(e.Ia),36)+" ";c+=f}if(b){b="";for(d=0;d=qf?1:d==nf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Hb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],u=Ga(p,k,a.Hb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.I.push({xd:b,B:c,Vb:d,Z:e,Cb:f})}function Qf(a,b,c){var d=[],e=bf(b)>>>0;for(b=0;b>>0,h=f.Vb;if(e>=g&&e>>0,g],u=Ga(p,k,a.Hb);0>u&&p.splice(-(u+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.I.push({yd:b,B:c,Wb:d,Z:e,Cb:f})}function Qf(a,b,c){var d=[],e=bf(b)>>>0;for(b=0;b>>0,h=f.Wb;if(e>=g&&e>>d.i].g(a,b&16383,b);null==f&&(f=b);b>g&&(g=b);e++});e?(b="start address ",null!=c?(H(a.v,c),b+=K(a,c)):b+="unspecified",a.u(e+" words loaded at "+K(a,f)+"-"+K(a,g)+", "+b),cd(a)):a.u("no data")}function qg(a,b,c,d){var e={},f=a.I[b].Cb,g=0,h=null;0<=c&&c=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=gf(a,d,a.ka);if(!e)return a.u("begin assemble at "+K(a,f.B,18)),a.V=!0,J(a.H),!0;var g=e.match(/^(['"]?)(.*\.klm|.*\.mac|.*\.html|.*\.txt)\1$/i);if(g){f=gf(a,d);if(a.xa)a.u("assembly already in progress");else var h=g[2],k=f.B,l=a.xa=new ug(h,k,c,a,function(b,c){if(!b)try{var d=l.H;null==d&&(d=k);sg(a,l.S,d)}catch(I){"number"==typeof I?b=I||-1:(a.u(I.message),b=-1)}b&&a.u("error ("+b+") processing "+ (c||h));a.xa=null;b||ed(a)});return!1}b.shift();b.shift();b.shift();b=Kf(a,e,b.join(""),f.B||0);0<=b&&(a.zb(f,b),a.u(Cf(a,f)));return!0}function vg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Xe(a)||a.u("no variables"),!0;if(!c[2])return Xe(a,c[1]);if(!c[3])return delete a.i[c[1]],!0;b=Ue(a,c[3]);return void 0!==b?(a.i[c[1]]={value:b,ja:void 0},!0):!1}a.u("invalid assignment:"+b);return!1} @@ -219,17 +220,17 @@ function yg(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instr function Af(a,b,c,d){b=gf(a,b,a.M);void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Qe(a,c.substr(1)),null!=c&&(d=c);else{d=gf(a,c);if(d.Bh[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ka;l=b;h.B=l.B;h.fb=l.fb;h.ra=l.ra;h.U=l.U;a.u(Cf(a,b,g,f));e-=b.B-k;c++}} function Of(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(yf+b):(a.V&&(a.u("ended assemble at "+K(a,a.ka.B,18)),a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ba=null;if(Bb(a)&&0p||"z"qa.length&&(a.u("note: only "+qa.length+" available"),ea=qa.length);la-=ea;0>la&&(null==qa[qa.length-1].B?(ea=la+ea,la=0):la+=qa.length);var Od=[];"call"==Vf&&(Cb= -1E5,Od=["CALL"]);for(void 0!==Uf&&a.u(ea+" instructions earlier:");0=qa.length&&(la=0);a.Da=ea;Xf++;Cb--}}Xf||(a.u("no "+Wf+"history available"),a.Da=void 0)}else{var Na=0,$f="ds"==hb,Eb=gf(a,pa,a.pa);Ea&&("l"==Ea.charAt(0)?(Ea=Ea.substr(1)||Ih,Na=Qe(a,Ea)):Na=gf(a,Ea).B-Eb.B,0>Na&&(Na=0),65536Fb?".":String.fromCharCode(Fb)),Ic=Ic-7}Oa&&(Oa+="\n");Oa=$f?Oa+(ra+","):Oa+(pa+": "+ra+(0>bg?" "+Rd:""))}Oa&&a.u(Oa);a.U=Kh}}}break;case "e":if("else"== +A)a.u("missing breakpoint address");else{var G="*"==A?Z():gf(a,A,a.M);"c"==M?null==G.B?(Ze(a),a.u("all breakpoints cleared")):Lf(a,a.b,G)||Lf(a,a.N,G)||Lf(a,a.K,G)||a.u("breakpoint missing: "+K(a,G.B,18)):null!=G.B&&(jf(a,G,I),"p"==M?a.Ra(a.b,G):"r"==M?a.Ra(a.N,G):"w"==M?a.Ra(a.K,G):a.u("unknown breakpoint command: "+M))}}break;case "c":a.za&&(a.za.value="");break;case "d":a:{var hb,ib=g[0],qa=g[1],Ea=g[2],Ih=g[3];if("?"==qa){var jb="";for(hb in bc)a.wa[hb]&&(jb&&(jb+=","),jb+=hb);jb+=",state,symbols"; +a.u("dump memory commands:");a.u("\tdw [a] [n] dump n words at address a");a.u("\tds [a] [n] dump n words at address a as JSON");a.u("\tdh [p] [n] dump n instructions from history position p");jb.length&&a.u("dump extension commands:\n\t"+jb)}else if("state"==qa){var Ld=zg(a.H,!0);"console"==Ea?console.log(Ld):(a.za&&(a.za.value=""),Ld&&a.u(Ld))}else if("symbols"==qa)for(var Md=0;Mdra.length&&(a.u("note: only "+ra.length+" available"),ea=ra.length);la-=ea;0>la&&(null==ra[ra.length-1].B?(ea=la+ea,la=0):la+=ra.length);var Od=[];"call"==Vf&&(Cb= +1E5,Od=["CALL"]);for(void 0!==Uf&&a.u(ea+" instructions earlier:");0=ra.length&&(la=0);a.Da=ea;Xf++;Cb--}}Xf||(a.u("no "+Wf+"history available"),a.Da=void 0)}else{var Na=0,$f="ds"==ib,Eb=gf(a,qa,a.pa);Ea&&("l"==Ea.charAt(0)?(Ea=Ea.substr(1)||Ih,Na=Qe(a,Ea)):Na=gf(a,Ea).B-Eb.B,0>Na&&(Na=0),65536Fb?".":String.fromCharCode(Fb)),Ic=Ic-7}Oa&&(Oa+="\n");Oa=$f?Oa+(sa+","):Oa+(qa+": "+sa+(0>bg?" "+Rd:""))}Oa&&a.u(Oa);a.U=Kh}}}break;case "e":if("else"== g[0])break;var cg,dg,eg=g[0],Td=g[1];"e"==eg||"ew"==eg?(cg=a.Na,dg=a.zb):Td=null;if(null==Td)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else for(var Ud=gf(a,Td,a.pa),Vd=2;VdXd;){for(var Pa=null,Ph=256;65536>Ib.B>>>0;){Yd.B=a.Na(Ib,2);if(null==Ib.B||!Ph--)break;if(!(Yd.B& -1)){for(var Qh=a,Jc=Yd,hg=null,Jb=Jc.B,ig=Jb,Zd=1;6>=Zd&&Jb;Zd++){if(2og)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update"); -else if(a.O)a.u("step in progress");else{var pg=Z(a.v.i);a.Na(pg);a.O?(a.Ra(a.b,pg,!0),wf(a)||(a.H&&jd(a.H),a.O=0)):yg(a,og?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}zf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var kb=+g[2];if(2==kb||8==kb||10==kb||16==kb)a.U=kb;else{a.u("invalid base: "+kb);break}}a.u("default base: "+a.U);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.pa=Lb;break;case "start":a.v.Ia=Lb;break;case "stop":a.v.ua=Lb; +1)){for(var Qh=a,Jc=Yd,hg=null,Jb=Jc.B,ig=Jb,Zd=1;6>=Zd&&Jb;Zd++){if(2og)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update"); +else if(a.O)a.u("step in progress");else{var pg=Z(a.v.i);a.Na(pg);a.O?(a.Ra(a.b,pg,!0),wf(a)||(a.H&&jd(a.H),a.O=0)):yg(a,og?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}zf(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var lb=+g[2];if(2==lb||8==lb||10==lb||16==lb)a.U=lb;else{a.u("invalid base: "+lb);break}}a.u("default base: "+a.U);break;case "cs":var Lb;void 0!==g[3]&&(Lb=+g[3]);switch(g[2]){case "int":a.v.pa=Lb;break;case "start":a.v.Ia=Lb;break;case "stop":a.v.ua=Lb; break;default:a.u("unknown cs option");break a}void 0!==Lb&&bd(a.v);a.u("checksums "+(a.v.A.Va?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(gd(a.v,+g[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ga.toFixed(2)+"Mhz")+" ("+a.v.ka+"x)");break;default:if(g[1]){a.u("unknown option: "+g[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"), a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":yg(a,g[0],g[1]);break;case "u":Af(a,g[1],g[2],8);break;case "v":if("var"==g[0]){vg(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.u((Rb||"PDP10")+" version 1.34.3 ("+a.v.nb+",RELEASE)");a.u(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){xg(a,b.substr(1));break}var $d="commands:",ae;for(ae in Ag)$d+="\n"+Ca(ae,9)+Ag[ae];td(a)||($d+="\nnote: history disabled if no exec breakpoints"); a.u($d);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(rg){a.u("Debugger "+(rg.stack||rg.message)),d=!1}return d}function ed(a,b,c){null!=b&&(a.Ha=Ke(a,b,c));for(;b=a.Ha.shift();)if(!Of(a,b))return!1;return!0} @@ -260,7 +261,7 @@ function Ug(a,b,c){var d,e,f,g,h,k;a.J="<";a.I=">";g=h=k=[];if(b==gh){e=c.match( b+" in '"+c+"'"),c;f=e[1];b=wh;c=2}else if(b==Vg)a.J="[",a.I="]",f="?"+wa(++a.ba,5),a.v[f]&&a.error("literal symbol '"+f+"' redefined"),e=[c[0],c.substr(1)],b=Dh,c=0;else if(b==Pg||b==Qg){a.j||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" operands '"+c+"'"),c;for(d=0;d=D)&&Eg(a,"truncated value "+va(b)+" at location "+va(c)+" to "+va(d));return d}ug.prototype.error=function(a,b){throw Error("error in "+Fg(this,b)+": "+a);};function Eg(a,b){a.u("warning in "+Fg(a,void 0)+": "+b)}ug.prototype.u=function(a){this.b?this.b.u(a):console.log(a)}; var Ig=1,Rg=2,Sg=4,Yg="ASCII",Zg="ASCIZ",ah="BLOCK",gh="DEFINE",bh="END",ch="EXP",hh="IFDEF",ih="IFE",jh="IFG",kh="IFL",lh="IFN",mh="IFNDEF",Pg="IRP",Qg="IRPC",ph="LALL",Vg="LITERAL",qh="LIST",eh="LOC",rh="NOSYM",nh="OPDEF",sh="PAGE",oh="REPEAT",$g="SIXBIT",th="SUBTTL",uh="TITLE",fh="XWD",vh="XLIST",Ch=-1,wh=-2,Dh=-3,Bh=-4; function Eh(a,b,c){r.call(this,"Computer",a,33554432);this.A.aa=!1;this.R=null;Fh(this,b);this.N=$c(this,"autoPower",a,6);this.w=0;this.W=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.T=this.O=!1;this.ba=$c(this,"url")||"";(Math.random()+.1).toString(36);this.i=Gh(this);if(this.v=rb("CPU",this.id)){this.D=rb("Debugger",this.id);this.G=new Ac({id:this.cb+".bus",busWidth:this.W},this.v,this.D);var d,e=pb(this.id);if((this.j=rb("Panel",this.id))&&this.j.za)for(b= @@ -284,15 +285,15 @@ function Gh(a,b){var c=a.i;c||((c=Qa(gi),void 0!==c)?!c&&b&&(b=null,window&&(b=w function ni(a,b){a.i=null;b=Ia(Ka()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ra(gi,b.data),a.i=b.data)}catch(d){q(d.message+" ("+c+")")}return a.i}function Uh(a){var b=null;a.i&&(b=Ka()+"/api/v1/user?req=load&user="+a.i+"&state="+oi(a,"1.34.3"));return b} function li(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=oi(a,"1.34.3");d.data=c;b=Ia(Ka()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), +function ri(a,b,c,d,e,f,g,h){function k(a,g){if(g)h(g,null);else{c&&(gb(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"), a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){g=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ia(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, "");a=a.replace(d[0],g);si(a,b,c)}})}else c(a,null)} function ti(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Aa(a))}function g(a){f("Error: "+a);l&&(--pi||bb(!0));l=!1}var h,k,l=!0;pi++;mb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],A=document.createElement("style");A.type="text/css";A.styleSheet?A.styleSheet.cssText=p:A.appendChild(document.createTextNode(p));u.appendChild(A)}d|| -(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?qi(d,null,a,null,!1,f,function(a,e){e?(lb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--pi||bb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--pi|| +(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?qi(d,null,a,null,!1,f,function(a,e){e?(gb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--pi||bb(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--pi|| bb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?qi(c,b,a,e,!0,f,p):ri(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(I){g(I.message)}return l}window.embedPDP10=function(a,b,c,d){bb(!1);return ti("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){bb(!1);return ti("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return rb(b,a+".machine")}; window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!ub[a]){for(var c=!0,d=ub,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p>3&127)}function Nc(){}function Oc(){}function O(a){this.M("undefined opcode: "+ka(a));this.f=(this.f+-1)%$a;N(this)}function Pc(a){a>F&&(a!=G?a=db-a:this.g|=163840);return a}function R(a,b){var c=(a+b)%J;Qc.call(this,a,b,c);return c} function S(a,b,c){var d=!1,e=!1,f=b-b%G;a=a%G+b*G%J;b=this.o=f+Math.trunc(b/2);c>F&&(c=J-c,d=!d);b>F&&(a?(b=I-b,a=J-a):b&&(b=J-b),e=!0,d=!d);if(b>=c)return this.g|=131104,-1;f=this.Na;f[0]=0;f[1]=0;f=this.da;f[0]=1;f[1]=0;f=this.X;f[0]=c;f[1]=0;c=this.ea;c[0]=a;for(c[1]=b;0b[0]&&(b[0]+=J,b[1]--),Sc(this.Na,this.da),Tc(this.ea)))break;Uc(this.X);Uc(this.da)}while(!Tc(this.da)); a=this.Na[0];this.o=this.ea[0];d&&a&&(a=J-a);e&&this.o&&(this.o=J-this.o);return a} -function Vc(a,b,c){var d=a,e=b;b=!1;var f;d>F&&(1001!=this.Wa||d!=G)&&(d=J-d,b=!b);e>F&&(e=J-e,b=!b);if(dF)&&(f!=I||a<=F)&&(this.g|=131072),a;c=a;b=f;a=b-b%G;b=2*b%J+Math.trunc(c/G);c=a+c%G;d=b-b%G;a!=d&&(b=a+(b-d),this.g|=131072);this.o=c;return b} +function Vc(a,b,c,d){var e=a,f=b;b=!1;var g;e>F&&(d||1001!=this.Wa||e!=G)&&(e=J-e,b=!b);f>F&&(f=J-f,b=!b);if(eF)&&(g!=I||a<=F)&&(this.g|=131072),a;c=a;b=g;a=b-b%G;b=2*b%J+Math.trunc(c/G);c=a+c%G;d?d=c:(d=b-b%G,a!=d&&(b=a+(b-d),this.g|=131072),this.o=c,d=b);return d} function Wc(a){a?a==G?this.g|=163840:a=db-a:this.g|=98304;return a}function Xc(a,b){var c=a-b;0>c&&(c+=J);Qc.call(this,c,b,a);return c}function Qc(a,b,c){a=Math.trunc(a/cb);b=Math.trunc(b/cb);c=Math.trunc(c/cb);var d=a^(a^b)&(b^c);this.g=this.g|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function T(a,b){return((a/K|0)&(b/K|0))*K+((a&b)>>>0)}function U(a,b){return T(a,(~(b/K|0)&15)*K+(~b>>>0))}function V(a,b){return(a>>0)}function W(a,b){return(a/K|0|b/K|0)*K+((a|b)>>>0)}function X(a){return a>>0)}function Z(a){return(a/E|0)+(a&C)*E}function Ec(a,b,c){switch(a&384){case 0:b-=b&C;break;case 128:b=0;break;case 256:b=C*E;break;case 384:b=c>ab?C*E:0}return b}function vc(a,b,c){switch(a&384){case 0:b&=C;break;case 128:b=0;break;case 256:b=C;break;case 384:b=c>F?C:0}return b} function Sc(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=J&&(a[0]%=J,a[1]++)}function Rc(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Uc(a){a[1]%2&&(a[0]+=J);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function Tc(a){return!a[0]&&!a[1]}