From 6cf141baf924b5a850fda4c7953bf693da3b6b78 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Sun, 26 Feb 2017 12:17:21 -0800 Subject: [PATCH] getOpcode() can now handle infinite indirections without starving the emulator --- modules/pdp10/lib/cpuops.js | 1 + modules/pdp10/lib/cpustate.js | 70 +++---- modules/pdp10/lib/debugger.js | 14 +- versions/pdpjs/1.34.0/pdp10-dbg.js | 291 +++++++++++++++-------------- versions/pdpjs/1.34.0/pdp10.js | 132 ++++++------- 5 files changed, 259 insertions(+), 249 deletions(-) diff --git a/modules/pdp10/lib/cpuops.js b/modules/pdp10/lib/cpuops.js index 22f15ce4e..d314e14e7 100644 --- a/modules/pdp10/lib/cpuops.js +++ b/modules/pdp10/lib/cpuops.js @@ -4210,6 +4210,7 @@ PDP10.opIO = function(op) PDP10.opUndefined = function(op) { this.println("undefined opcode: " + Str.toOct(op)); + this.advancePC(-1); this.stopCPU(); }; diff --git a/modules/pdp10/lib/cpustate.js b/modules/pdp10/lib/cpustate.js index 5ea763f2d..b34e2db87 100644 --- a/modules/pdp10/lib/cpustate.js +++ b/modules/pdp10/lib/cpustate.js @@ -174,8 +174,7 @@ class CPUStatePDP10 extends CPUPDP10 { */ initCPU() { - this.regOP = 0; - this.regEA = 0; + this.regEA = this.regRA = this.regOP = 0; this.regPC = this.lastPC = this.addrReset; /* @@ -277,8 +276,9 @@ class CPUStatePDP10 extends CPUPDP10 { { var state = new State(this); state.set(0, [ - this.regOP, this.regEA, + this.regRA, + this.regOP, this.regPC, this.lastPC, this.lastAddr, @@ -305,8 +305,9 @@ class CPUStatePDP10 extends CPUPDP10 { * of what save() does when it collects a bunch of object properties into an array. */ [ - this.regOP, this.regEA, + this.regRA, + this.regOP, this.regPC, this.lastPC, this.lastAddr, @@ -326,42 +327,39 @@ class CPUStatePDP10 extends CPUPDP10 { /** * getOpcode() * - * This fetches the next opcode, decodes the low 23 bits (I,X,Y), sets regEA, and returns the - * the high 13 bits for further decoding. + * Normally, this fetches the next opcode in regOP, decodes the low 23 bits (I,X,Y), records the effective + * address (E) in regEA, updates regPC, and returns the high 13 bits of the opcode for further decoding. + * + * However, if a reference address still needs to be decoded (due to indirection), we take care of that first. * * @this {CPUStatePDP10} - * @return {number} + * @return {number} (-1 if the reference address in regRA has not yet been fully decoded) */ getOpcode() { - var pc = this.lastPC = this.regPC; - var r = this.regOP = this.readWord(pc); - this.regPC = (pc + 1) % PDP10.ADDR_LIMIT; - var e, x, nMaxIndirect = 4; - while (true) { - /* - * Bits 0-22 (I,X,Y) contain what we call a "reference address" (R), which is used to calculate the - * "effective address" (E). To determine E from R, we must extract I, X, and Y from R, set E to Y, - * then add [X] to E if X is non-zero. If I is zero, then we're done; otherwise, we must set R to [E] - * and repeat the process. - */ - e = r & PDP10.OPCODE.Y_MASK; - x = (r >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK; - if (x) e = (e + this.readWord(x)) & PDP10.ADDR_MASK; - if (!(r & PDP10.OPCODE.I_BIT)) break; - /* - * We allow this process to repeat only a few times, because more than that suggests we're executing - * garbage. Also, allowing this to loop endlessly would hang the simulation; if it turns out there is - * real-world PDP-10 code that requires a long series of indirections, we should factor this logic out - * as a separate operation. Note that would mean passing the full opcode on to the next level of decoding. - */ - if (--nMaxIndirect < 0) { - this.bus.fault(r); - break; - } - r = this.readWord(e); + if ((this.regRA & PDP10.OPCODE.I_BIT)) { + this.regRA = this.readWord(this.regEA); + } else { + this.regRA = this.regOP = this.readWord(this.lastPC = this.regPC); } - this.regEA = e; + + /* + * Bits 0-22 (I,X,Y) contain what we call a "reference address" (R), which is used to calculate the + * "effective address" (E). To determine E from R, we must extract I, X, and Y from R, set E to Y, + * then add [X] to E if X is non-zero. If I is zero, then we're done; otherwise, we must set R to [E] + * and repeat the process. + * + * However, we don't actually repeat the process immediately; we need to treat each indirection as a + * separate decoding step, to ensure that the emulator can "breathe" periodically. So instead, we + * return -1, indicating that the opcode is not fully decoded, and then on the next call, instead of + * fetching another opcode, we fetch [E], update R, and decode R again. + */ + this.regEA = this.regRA & PDP10.OPCODE.Y_MASK; + var x = (this.regRA >> PDP10.OPCODE.X_SHIFT) & PDP10.OPCODE.X_MASK; + if (x) this.regEA = (this.regEA + this.readWord(x)) & PDP10.ADDR_MASK; + if (this.regRA & PDP10.OPCODE.I_BIT) return -1; + + this.regPC = (this.regPC + 1) % PDP10.ADDR_LIMIT; return (this.regOP / PDP10.OPCODE.ACSHIFT)|0; } @@ -810,7 +808,9 @@ class CPUStatePDP10 extends CPUPDP10 { this.opFlags &= PDP10.OPFLAG.PRESERVE; var op = this.getOpcode(); - this.opDecode(op); + if (op >= 0) { + this.opDecode(op); + } } while (this.nStepCycles > 0); diff --git a/modules/pdp10/lib/debugger.js b/modules/pdp10/lib/debugger.js index e1f9b24be..736a72a3b 100644 --- a/modules/pdp10/lib/debugger.js +++ b/modules/pdp10/lib/debugger.js @@ -848,6 +848,12 @@ class DebuggerPDP10 extends Debugger { case DebuggerPDP10.REGS.PC: value = this.cpu.getPC(); break; + case DebuggerPDP10.REGS.RA: + value = this.cpu.regRA; + break; + case DebuggerPDP10.REGS.EA: + value = this.cpu.regEA; + break; } return value; } @@ -1924,7 +1930,7 @@ class DebuggerPDP10 extends Debugger { { var i; var sDump = ""; - sDump += this.getRegOutput(DebuggerPDP10.REGS.PC); + sDump += this.getRegOutput(DebuggerPDP10.REGS.RA) + this.getRegOutput(DebuggerPDP10.REGS.EA); if (fMisc) sDump += '\n' + this.getMiscDump(); return sDump; } @@ -3638,11 +3644,13 @@ if (DEBUGGER) { ]; DebuggerPDP10.REGS = { - PC: 0 + PC: 0, + RA: 1, + EA: 2 }; DebuggerPDP10.REGNAMES = [ - "PC" + "PC", "RA", "EA" ]; /* diff --git a/versions/pdpjs/1.34.0/pdp10-dbg.js b/versions/pdpjs/1.34.0/pdp10-dbg.js index 7a4bdaf91..6e3093cec 100644 --- a/versions/pdpjs/1.34.0/pdp10-dbg.js +++ b/versions/pdpjs/1.34.0/pdp10-dbg.js @@ -32,18 +32,18 @@ var l,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi function ha(){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 ia(this)}});ha=function(){}}function ia(a){var b=0;return ja(function(){return ba?-b:b}});ka("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); -var la=Math.pow(2,36),ma=-Math.pow(2,35),q={Zb:0,nb:1,ac:2,bc:3,cc:4,dc:5,ec:6,fc:7,Xa:8,gc:9,ob:10,hc:11,ic:12,pb:13,jc:14,kc:15,lc:16,mc:17,nc:18,oc:19,pc:20,qc:21,rc:22,sc:23,tc:24,uc:25,vc: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,Wa:65,Yb:66,$b:67,wc:68,E:69,xc:70,yc:71,zc:72,Ac:73,Bc:74,Cc:75,Dc:76,Ec:77,Fc:78,Gc:79,Hc:80,Q:81, -Ic:82,Jc:83,Kc:84,Lc:85,Mc:86,Nc:87,Oc:88,Pc:89,tb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Qc:97,Rc:98,Sc:99,d:100,e:101,Tc:102,Uc:103,Vc:104,Wc:105,Xc:106,k:107,Yc:108,Zc:109,n:110,$c:111,p:112,q:113,r:114,ad:115,t:116,cd:117,dd:118,ed:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,qb:127}; -function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ab=b.comment;this.sb=b;this.exports={};this.F=this.bindings={};a=this.id.indexOf(".");0>a?this.Ja=this.id:(this.Ka=this.id.substr(0,a),this.Ja=this.id.substr(a+1));this.j={ready:!1,Ea:!1,Ta:!1,T:!1,error:!1};this.Ma=null;this.j.error=!1;this.V=c||0;this.A=this.g=this.C=this.D=this.ka=null;v.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date} +var la=Math.pow(2,36),ma=-Math.pow(2,35),q={$b:0,nb:1,bc:2,cc:3,dc:4,ec:5,fc:6,gc:7,Ya:8,hc:9,ob:10,ic:11,jc:12,pb:13,kc:14,lc:15,mc:16,nc:17,oc:18,pc:19,qc:20,rc:21,sc:22,tc:23,uc:24,vc:25,wc: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,Xa:65,Zb:66,ac:67,xc:68,E:69,yc:70,zc:71,Ac:72,Bc:73,Cc:74,Dc:75,Ec:76,Fc:77,Gc:78,Hc:79,Ic:80,Q:81, +Jc:82,Kc:83,Lc:84,Mc:85,Nc:86,Oc:87,Pc:88,Qc:89,tb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Rc:97,Sc:98,Tc:99,d:100,e:101,Uc:102,Vc:103,Wc:104,Xc:105,Yc:106,k:107,Zc:108,$c:109,n:110,ad:111,p:112,q:113,r:114,bd:115,t:116,dd:117,ed:118,fd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,qb:127}; +function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.bb=b.comment;this.sb=b;this.exports={};this.G=this.bindings={};a=this.id.indexOf(".");0>a?this.Ja=this.id:(this.Ka=this.id.substr(0,a),this.Ja=this.id.substr(a+1));this.j={ready:!1,Ea:!1,Ua:!1,U:!1,error:!1};this.Ma=null;this.j.error=!1;this.V=c||0;this.A=this.g=this.C=this.D=this.ka=null;v.push(this)}function ta(a,b,c){ua[a]&&b&&(ua[a][b]=c)}function va(){return Date.now()||+new Date} function w(a){window&&window.alert(a)}function wa(a){var b=!1;window&&(b=window.confirm(a));return b}function x(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;bb?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 jb(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, f,e))});if(b&&"object"==typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} -function kb(a,b){var c,d={W:null,S:null,ja:null,ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ja=g.load;d.ia=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.S=g.symbols;d.W.length?1==d.W.length&&(w(d.W[0]),d=null):(w("Empty resource: "+a),d=null)}catch(h){w("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;cb.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.ja=g.load;d.ia=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.T=g.symbols;d.W.length?1==d.W.length&&(w(d.W[0]),d=null):(w("Empty resource: "+a),d=null)}catch(h){w("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca;a++)this.b["S"+a]=[0,0,!1,!1,this.Eb,a];this.A=this.g=this.C=this.D=null;this.exports={hold:this.wb,toggle:this.Rb,reset:this.Nb, -set:this.Qb};D(this)}p(Pb,t);l=Pb.prototype;l.reset=function(a){this.stop();a&&Rb(this,this.w=0)}; -l.ea=function(a,b,c,d){if(this.D&&this.D.ea(a,b,c,d)||this.g&&this.g.ea(a,b,c,d)||this.A&&this.A.ea(a,b,c,d))return!0;switch(b){case "PC":return this.F[b]=c,this.K++,!0;default:return"led"==a||"rled"==a?(this.F[b]=c,this.B[b]=d?1:0,this.K++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.F[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Sb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Tb(a,b)}}(this,b),a.ontouchstart= -function(a,b){return function(c){Sb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Tb(a,b)}}(this,b),!0):t.prototype.ea.call(this,a,b,c,d)}};l.ta=function(a,b,c,d){this.D=a;this.C=b;this.g=c;this.A=d;Ub(this);Vb(this)};l.ma=function(a,b){if(!b)if(this.U&&Wb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,[this.i,this.w,this.u]);return a.data()}; -l.restore=function(a){if(a=a[0])Xb(this,this.i=a[0]),Rb(this,this.w=a[1]),Yb(this,a[2]);return!0};l.Nb=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}Vb(this);return!0};function Zb(a,b,c){if(a=a.F[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Ub(a,b){for(var c in a.B)Zb(a,c,null!=b?b:a.B[c])}function $b(a,b,c){if(a=a.F[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Vb(a){for(var b in a.b)$b(a,b,a.b[b][1])} -l.wb=function(a,b,c){if(Sb(this,b)){if(c){var d=this;setTimeout(function(){Tb(d,b);a&&a()},+c);return!1}Tb(this,b)}return!0};l.Qb=function(a,b){if("SR"==a)return Yb(this,Qa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,$b(this,a,c[1]),!0):!1};l.Rb=function(a){return Sb(this,a)?(Tb(this,a),!0):!1};function Sb(a,b){var c=a.b[b];return c?($b(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=ac&&(a.N=b==bc,a.O=b==cc),!0):!1} -function Tb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&($b(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Fb=function(a){a||this.g.j.J||(this.g.i=this.i%Jb,this.b[dc]&&this.b[dc][1]&&ec(this.g))};l.Gb=function(){};l.Ab=function(a){a||this.g.R()}; -l.yb=function(a){if(!a&&!this.g.j.J)if(this.b[dc]&&this.b[dc][1])ec(this.g);else{if((a=this.A)&&!Na(a,!0))Oa(a,!0),fc(a,0,null),Oa(a,!1);else try{var b=this.g.Ia(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.u&1<a;a++)this.b["S"+a]=[0,0,!1,!1,this.Fb,a];this.A=this.g=this.C=this.D=null;this.exports={hold:this.xb,toggle:this.Sb,reset:this.Ob, +set:this.Rb};D(this)}p(Pb,t);l=Pb.prototype;l.reset=function(a){this.stop();a&&Rb(this,this.w=0)}; +l.ea=function(a,b,c,d){if(this.D&&this.D.ea(a,b,c,d)||this.g&&this.g.ea(a,b,c,d)||this.A&&this.A.ea(a,b,c,d))return!0;switch(b){case "PC":return this.G[b]=c,this.K++,!0;default:return"led"==a||"rled"==a?(this.G[b]=c,this.B[b]=d?1:0,this.K++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.G[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Sb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Tb(a,b)}}(this,b),a.ontouchstart= +function(a,b){return function(c){Sb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Tb(a,b)}}(this,b),!0):t.prototype.ea.call(this,a,b,c,d)}};l.ua=function(a,b,c,d){this.D=a;this.C=b;this.g=c;this.A=d;Ub(this);Vb(this)};l.ma=function(a,b){if(!b)if(this.S&&Wb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.save=function(){var a=new J(this);a.set(0,[this.i,this.w,this.u]);return a.data()}; +l.restore=function(a){if(a=a[0])Xb(this,this.i=a[0]),Rb(this,this.w=a[1]),Yb(this,a[2]);return!0};l.Ob=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}Vb(this);return!0};function Zb(a,b,c){if(a=a.G[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Ub(a,b){for(var c in a.B)Zb(a,c,null!=b?b:a.B[c])}function $b(a,b,c){if(a=a.G[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Vb(a){for(var b in a.b)$b(a,b,a.b[b][1])} +l.xb=function(a,b,c){if(Sb(this,b)){if(c){var d=this;setTimeout(function(){Tb(d,b);a&&a()},+c);return!1}Tb(this,b)}return!0};l.Rb=function(a,b){if("SR"==a)return Yb(this,Qa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,$b(this,a,c[1]),!0):!1};l.Sb=function(a){return Sb(this,a)?(Tb(this,a),!0):!1};function Sb(a,b){var c=a.b[b];return c?($b(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=ac&&(a.N=b==bc,a.O=b==cc),!0):!1} +function Tb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&($b(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Gb=function(a){a||this.g.j.J||(this.g.i=this.i%Jb,this.b[dc]&&this.b[dc][1]&&ec(this.g))};l.Hb=function(){};l.Bb=function(a){a||this.g.R()}; +l.zb=function(a){if(!a&&!this.g.j.J)if(this.b[dc]&&this.b[dc][1])ec(this.g);else{if((a=this.A)&&!Na(a,!0))Oa(a,!0),fc(a,0,null),Oa(a,!1);else try{var b=this.g.Ia(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.u&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.v)return h.Ha+=h.v-e,h.v=e,!0;if(e>=h.v+h.Ha){m=h.size-(e-k);m>f&&(m=f);h.Ha=e-h.v+m;e=k+16384;f-=m;g++;continue}}return qc(rc,e,f)}e=new L(a,e,m,16384,d);nc(e,a.A,h);a.b[g++]=e;e=k+16384;f-=m}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Ic[d]+" at "+Ra(b)),!0):qc(Jc,b,c)} function lc(a,b){var c=a.b[(b&a.u)>>>a.i];a.w++;b=c.i(b&16383,b);a.w--;return b}function kc(a,b,c){var d=a.b[(b&a.u)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function oc(a){for(var b=0,c=[],d=0;d=c+d?a>>c&(1<=a.aa&&(a.aa+=a.U,c=!0);0<=a.ba&&a.ba<=dd(a)&&(a.U=a.ba=-1,$c(a),a.R(),c=!0);c&&a.f(dd(a)+" cycles: checksum="+F(a.qa))}} -l.ea=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.F[b]=c,!0;case "run":return this.F[b]=c,c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.j.T)a=!0;else{var b=null,c,h=x(a.id);for(c=0;ca.M/a.N?b=1:d=!0;a.O=b;b=a.Ca*a.O;if(a.N!=b){a.N=b;b=a.N.toFixed(2)+"Mhz";var e=a.F.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.D&&hd(a.D)}hc(a,a.B);a.B=0;a.w=va();a.H=0;fd(a);return d}function id(a,b){for(var c=a.G.length-1;0<=c;c--){var d=a.G[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function jd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function kd(a,b){var c=a.I-=a.K;a.K=0;b&&(a.I=0);return c} -l.Ob=function(){if(this.j.J){this.xa>=this.Ra&&fd(this,!0);this.fa=0;this.pa=va();if(this.H){var a=this.pa-this.H;a>this.Qa&&(this.w+=a,this.w>this.pa&&(this.w=this.pa))}try{do{var b=id(this,this.j.Da?1:this.sa);try{this.Ia(b)}catch(e){if("number"!=typeof e)throw e;}b=kd(this,!0);this.fa+=b;this.B+=b;ic(this,b);gc(this,b);this.P-=b;if(0>=this.P){this.P+=this.sa;++this.Sa>=ld&&(this.D&&K(this.D,void 0),this.Sa=0);break}}while(this.j.J)}catch(e){this.R();this.D&&this.D.stop(va(),dd(this));Ka(this,e.stack|| -e.message);return}if(this.j.J){a=setTimeout;b=this.cb;this.H=va();var c=this.Qa;this.fa&&(c=Math.round(c*this.fa/this.sa));var c=c-(this.H-this.pa),d=this.H-this.w;d&&(this.M=Math.round(this.B/(10*d))/100,864E5<=d&&(this.L=0,ed(this)));if(0>c||this.Mc&&(this.w-=c),c=0;this.xa+=this.fa;this.H+=c;a(b,c)}}}; -function ec(a,b){if(!La(a))if(a.j.J)a.f(a.toString()+" busy");else{ed(a);a.j.J=!0;a.j.Pa=!0;var c=a.F.run;c&&(c.textContent="Halt");a.D&&(b&&hd(a.D,!0),a.D.start(a.w,dd(a)));a.A||a.status("Started");setTimeout(a.cb,0)}}l.Ia=function(){return 0};l.R=function(a){var b=!1;if(this.j.J){kd(this);hc(this,this.B);this.B=0;this.j.J=!1;if(b=this.F.run)b.textContent="Run";this.D&&this.D.stop(va(),dd(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var gd=30,ld=15,Xc=["power","reset"]; -function md(a){var b=+a.model||1001;Wc.call(this,a,1E6);this.bb=b;this.$a=+a.addrReset||0;this.rb=nd.bind(this);this.b=P.bind(this);this.ha=null;this.Za=[];this.j.complete=!1}p(md,Wc);l=md.prototype;l.reset=function(){this.status("Model "+this.bb);this.j.J&&this.R();this.ga=this.ya=0;this.na=this.i=this.oa=this.$a;this.u=0;this.Z=this.Kb;this.va=this.Xb;this.ha=null;Zc(this);this.j.error=!1;Wc.prototype.reset.call(this)};l.kb=function(){return 0}; -l.save=function(){var a=new J(this);a.set(0,[this.ya,this.ga,this.i,this.oa,this.na,this.u]);a.set(1,[]);a.set(2,[this.L,this.O,this.j.X]);a.set(3,od(this));a.set(4,jd(this));return a.data()}; -l.restore=function(a){var b;b=a[0];ha();ca();ha();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.ya=b.next().value;this.ga=b.next().value;this.i=b.next().value;this.oa=b.next().value;this.na=b.next().value;this.u=b.next().value;b=a[2];this.L=b[0];ed(this,b[1]);this.j.X=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].Z(a&16383,a)};l.Xb=function(a,b){var c=this.C;a=this.na=a;c.b[(a&c.u)>>>c.i].va(b,a&16383,a)}; -l.Ia=function(a){this.j.complete=!0;var b=this.A?pd(this.A)?1:this.j.Pa?-1:0:0,c=a?this.j.Pa?0:1:-1;this.j.Pa=!1;this.I=this.K=a;this.u=this.u&-5|(b?4:0);do{if(this.u){if(this.u&4){if(qd(this.A,this.i,c)){this.R();break}++b||(this.u&=-5);c||c++}if(a=this.u&11)this.u&2?this.ha||(this.u&=-3):this.u&1&&this.u++,a=!1;if(a){if(this.u&4&&qd(this.A,this.i,c)){this.R();break}if(0>c)break}}this.u&=15;var d=this.oa=this.i;a=this.ya=this.Z(d);this.i=(d+1)%Jb;for(var e,f=4;;){d=a&262143;(e=a>>18&15)&&(d=d+this.Z(e)& -Kb);if(!(a&4194304))break;if(0>--f){this.C.jb(a);break}a=this.Z(d)}this.ga=d;this.rb(this.ya/Ob|0)}while(0>4].call(this,a)}function Q(a){this.b(a)}function sd(a){this.b(a)}function td(a){this.b(a)}function ud(a){a&=15;var b=this.Z(this.ga),c=this.Z(a);this.va(a,(c&262143)+(b-(b&262143)))} -function R(a){this.b(a)}function P(a){this.f("undefined opcode: "+Ra(a));this.R()} -var rd=[Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, +l.wb=function(a){this.w||(this.A&&Pa(this.A,4)&&E(this.A,"memory fault on "+M(this.A,a),!0,!0),this.g.R())};function qc(a,b,c){w("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var rc=1,Jc=2;function Kc(a){t.call(this,"Device",a,256)}p(Kc,t);l=Kc.prototype;l.ua=function(a,b,c,d){this.C=b;this.D=a;this.g=c;this.A=d;D(this)};l.ma=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.da=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new J(this)).data()}; +l.restore=function(){return!0};vb(function(){for(var a=C(document,B,"device"),b=0;b=c+d?a>>c&(1<=a.fa&&(a.fa+=a.ba,c=!0);0<=a.ga&&a.ga<=dd(a)&&(a.ba=a.ga=-1,$c(a),a.R(),c=!0);c&&a.f(dd(a)+" cycles: checksum="+F(a.ra))}} +l.ea=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.G[b]=c,!0;case "run":return this.G[b]=c,c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.j.U)a=!0;else{var b=null,c,h=x(a.id);for(c=0;ca.O/a.P?b=1:d=!0;a.S=b;b=a.Qa*a.S;if(a.P!=b){a.P=b;b=a.P.toFixed(2)+"Mhz";var e=a.G.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.D&&hd(a.D)}hc(a,a.F);a.F=0;a.B=va();a.I=0;fd(a);return d}function id(a,b){for(var c=a.H.length-1;0<=c;c--){var d=a.H[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function jd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function kd(a,b){var c=a.K-=a.L;a.L=0;b&&(a.K=0);return c} +l.Pb=function(){if(this.j.J){this.ya>=this.Sa&&fd(this,!0);this.ha=0;this.qa=va();if(this.I){var a=this.qa-this.I;a>this.Ra&&(this.B+=a,this.B>this.qa&&(this.B=this.qa))}try{do{var b=id(this,this.j.Da?1:this.ta);try{this.Ia(b)}catch(e){if("number"!=typeof e)throw e;}b=kd(this,!0);this.ha+=b;this.F+=b;ic(this,b);gc(this,b);this.Y-=b;if(0>=this.Y){this.Y+=this.ta;++this.Ta>=ld&&(this.D&&K(this.D,void 0),this.Ta=0);break}}while(this.j.J)}catch(e){this.R();this.D&&this.D.stop(va(),dd(this));Ka(this,e.stack|| +e.message);return}if(this.j.J){a=setTimeout;b=this.eb;this.I=va();var c=this.Ra;this.ha&&(c=Math.round(c*this.ha/this.ta));var c=c-(this.I-this.qa),d=this.I-this.B;d&&(this.O=Math.round(this.F/(10*d))/100,864E5<=d&&(this.M=0,ed(this)));if(0>c||this.Oc&&(this.B-=c),c=0;this.ya+=this.ha;this.I+=c;a(b,c)}}}; +function ec(a,b){if(!La(a))if(a.j.J)a.f(a.toString()+" busy");else{ed(a);a.j.J=!0;a.j.Pa=!0;var c=a.G.run;c&&(c.textContent="Halt");a.D&&(b&&hd(a.D,!0),a.D.start(a.B,dd(a)));a.A||a.status("Started");setTimeout(a.eb,0)}}l.Ia=function(){return 0};l.R=function(a){var b=!1;if(this.j.J){kd(this);hc(this,this.F);this.F=0;this.j.J=!1;if(b=this.G.run)b.textContent="Run";this.D&&this.D.stop(va(),dd(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var gd=30,ld=15,Xc=["power","reset"]; +function md(a){var b=+a.model||1001;Wc.call(this,a,1E6);this.cb=b;this.ab=+a.addrReset||0;this.rb=nd.bind(this);this.b=P.bind(this);this.na=null;this.$a=[];this.j.complete=!1}p(md,Wc);l=md.prototype;l.reset=function(){this.status("Model "+this.cb);this.j.J&&this.R();this.w=this.N=this.za=0;this.oa=this.i=this.pa=this.ab;this.u=0;this.aa=this.Lb;this.wa=this.Yb;this.na=null;Zc(this);this.j.error=!1;Wc.prototype.reset.call(this)};l.kb=function(){return 0}; +l.save=function(){var a=new J(this);a.set(0,[this.w,this.N,this.za,this.i,this.pa,this.oa,this.u]);a.set(1,[]);a.set(2,[this.M,this.S,this.j.X]);a.set(3,od(this));a.set(4,jd(this));return a.data()}; +l.restore=function(a){var b;b=a[0];ha();ca();ha();var c=b[Symbol.iterator];b=c?c.call(b):ia(b);this.w=b.next().value;this.N=b.next().value;this.za=b.next().value;this.i=b.next().value;this.pa=b.next().value;this.oa=b.next().value;this.u=b.next().value;b=a[2];this.M=b[0];ed(this,b[1]);this.j.X=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].aa(a&16383,a)};l.Yb=function(a,b){var c=this.C;a=this.oa=a;c.b[(a&c.u)>>>c.i].wa(b,a&16383,a)}; +l.Ia=function(a){this.j.complete=!0;var b=this.A?qd(this.A)?1:this.j.Pa?-1:0:0,c=a?this.j.Pa?0:1:-1;this.j.Pa=!1;this.K=this.L=a;this.u=this.u&-5|(b?4:0);do{if(this.u){if(this.u&4){if(rd(this.A,this.i,c)){this.R();break}++b||(this.u&=-5);c||c++}if(a=this.u&11)this.u&2?this.na||(this.u&=-3):this.u&1&&this.u++,a=!1;if(a){if(this.u&4&&rd(this.A,this.i,c)){this.R();break}if(0>c)break}}this.u&=15;this.N=this.N&4194304?this.aa(this.w):this.za=this.aa(this.pa=this.i);this.w=this.N&262143;if(a=this.N>>18& +15)this.w=this.w+this.aa(a)&Kb;this.N&4194304?a=-1:(this.i=(this.i+1)%Jb,a=this.za/Ob|0);0<=a&&this.rb(a)}while(0>4].call(this,a)}function Q(a){this.b(a)}function td(a){this.b(a)}function ud(a){this.b(a)}function vd(a){a&=15;var b=this.aa(this.w),c=this.aa(a);this.wa(a,(c&262143)+(b-(b&262143)))} +function R(a){this.b(a)}function P(a){this.f("undefined opcode: "+Ra(a));pd(this,-1);this.R()} +var sd=[Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, -function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},sd,td,td,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},sd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, +function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},td,ud,ud,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},td,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},P,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, @@ -111,115 +111,116 @@ function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a) function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, -function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},ud,function(a){a&=15;var b=this.Z(a);this.va(a,b&262143)},function(a){a=this.Z(a&15);var b=this.Z(this.ga);this.va(this.ga,(b&262143)+(a-(a&262143)))},function(a){a&15&&ud.call(this, +function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},vd,function(a){a&=15;var b=this.aa(a);this.wa(a,b&262143)},function(a){a=this.aa(a&15);var b=this.aa(this.w);this.wa(this.w,(b&262143)+(a-(a&262143)))},function(a){a&15&&vd.call(this, a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)}, function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R]; -function vd(a){t.call(this,"ROM",a,128);this.S=this.b=null;this.B=+a.addr;this.u=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.G=Sa(this.w);if(this.w){a=this.w;var b=Ta(this.G);"json"!=b&&"hex"!=b&&(a=Va()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;jb(a,null,!0,function(a,b,f){f?(c.Y("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(ta(c.Ka,a,b),(a=kb(a,b))?(c.b=a.W,c.S=a.S):c.w=null);wd(c)})}}p(vd,t); -vd.prototype.ta=function(a,b,c,d){this.C=b;this.g=c;this.A=d;wd(this)};vd.prototype.ma=function(){this.S&&(this.A&&xd(this.A,this.id,this.B,this.u,this.S),delete this.S);return!0};vd.prototype.da=function(){return!0}; -function wd(a){if(!Ma(a)){if(a.w){if(!a.b||!a.C)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Ka(a,"ROM size ("+F(a.b.length,8,!0)+") does not match specified size ("+F(a.u,8,!0)+")");else{var b;b=a.B;if(pc(a.C,b,a.u,Nc)){var c;for(c=0;c>>f.i;0>>= -f.i;0>>a.i;0g&&g>=ma&&(g+=la);g=Math.trunc(Math.abs(g))%la;void 0===f&&(f=e.size);for(h=d;f--&&h=b.length){E(a,"invalid block at offset "+G(n),4096);break}for(var k=k+2,r=b[k++]&255|(b[k++]&255)<<8,u=b[k++]&255|(b[k++]&255)<<8,m=m+((r&255)+(r>>8)+(u&255)+(u>>8)),N=k,Da=r-=6;0=b.length){E(a,"insufficient data for block at offset "+G(n),4096);break}m+= -b[k++]&255;if(m&255){E(a,"invalid checksum ("+F(m,2,!0)+") for block at offset "+G(n),4096);break}if(Da)for(E(a,"loading "+G(Da)+" bytes at "+G(u)+"-"+G(u+Da),4096);Da--;)kc(a.C,u++,b[N++]);else u&1?g=!0:null==d&&(d=u),null!=d&&E(a,"starting address: "+G(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=q.Wa&&c<=q.tb&&(b=c-(q.Wa-q.nb));b&&(a.preventDefault&&a.preventDefault(),d.Na(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.pb&&(b=q.ob);d.Na(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.Na(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.ta=function(a,b,c,d){this.D=a;this.C=b;this.g=c;this.A=d;D(this)}; +function wd(a){t.call(this,"ROM",a,128);this.T=this.b=null;this.B=+a.addr;this.u=+a.size;this.i=a.alias;"string"==typeof this.i&&(this.i=eval(this.i));this.w=a.file;this.F=Sa(this.w);if(this.w){a=this.w;var b=Ta(this.F);"json"!=b&&"hex"!=b&&(a=Va()+"/api/v1/dump?file="+this.w+"&format=bytes&decimal=true");var c=this;jb(a,null,!0,function(a,b,f){f?(c.Z("Unable to load ROM resource (error "+f+": "+a+")"),c.w=null):(ta(c.Ka,a,b),(a=kb(a,b))?(c.b=a.W,c.T=a.T):c.w=null);xd(c)})}}p(wd,t); +wd.prototype.ua=function(a,b,c,d){this.C=b;this.g=c;this.A=d;xd(this)};wd.prototype.ma=function(){this.T&&(this.A&&yd(this.A,this.id,this.B,this.u,this.T),delete this.T);return!0};wd.prototype.da=function(){return!0}; +function xd(a){if(!Ma(a)){if(a.w){if(!a.b||!a.C)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Ka(a,"ROM size ("+F(a.b.length,8,!0)+") does not match specified size ("+F(a.u,8,!0)+")");else{var b;b=a.B;if(pc(a.C,b,a.u,Nc)){var c;for(c=0;c>>f.i;0>>= +f.i;0>>a.i;0g&&g>=ma&&(g+=la);g=Math.trunc(Math.abs(g))%la;void 0===f&&(f=e.size);for(h=d;f--&&h=b.length){E(a,"invalid block at offset "+G(n),4096);break}for(var k=k+2,r=b[k++]&255|(b[k++]&255)<<8,u=b[k++]&255|(b[k++]&255)<<8,m=m+((r&255)+(r>>8)+(u&255)+(u>>8)),N=k,Da=r-=6;0=b.length){E(a,"insufficient data for block at offset "+G(n),4096);break}m+= +b[k++]&255;if(m&255){E(a,"invalid checksum ("+F(m,2,!0)+") for block at offset "+G(n),4096);break}if(Da)for(E(a,"loading "+G(Da)+" bytes at "+G(u)+"-"+G(u+Da),4096);Da--;)kc(a.C,u++,b[N++]);else u&1?g=!0:null==d&&(d=u),null!=d&&E(a,"starting address: "+G(d),4096);h=!0}else k++;else k+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=q.Xa&&c<=q.tb&&(b=c-(q.Xa-q.nb));b&&(a.preventDefault&&a.preventDefault(),d.Na(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.pb&&(b=q.ob);d.Na(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.Na(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};l.ua=function(a,b,c,d){this.D=a;this.C=b;this.g=c;this.A=d;D(this)}; l.mb=function(a){if(!this.b){var b=Yc(this.D,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Za(c[0]);if(d!=this.Ja)return;c=Za(c[1]);if(this.b=xa(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.Ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.ma=function(a,b){if(!b)if(this.mb(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -l.da=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new J(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Na=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+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(Za(b.substring(c,f))),c=f+1}}return a} -function Fd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break; +l.da=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new J(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Na=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.w&&a.u.length&&(a.w=0);if(0>a.w||b!=a.u[a.w])a.u.splice(0,0,b),a.w=0;a.w--}else a.O?b="end":b=a.u[a.w+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(Za(b.substring(c,f))),c=f+1}}return a} +function Gd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break; case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0} -function Gd(a,b,c){var d;if(b){b=Hd(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1,N--;g=r+g;d>>=8}d=F(c,0,!0)+" "+c+". "+Ra(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e} -function Ld(a,b){if(b)return Kd(a,b,a.aa[b]);var c=0;for(b in a.aa)Kd(a,b,a.aa[b]),c++;return 0a&&-1>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c} -var Jd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; -function Md(a){Dd.call(this,a);this.xa=!1;this.na=!0;this.I=T();this.wa=T();this.N=T();this.H=[];this.b=this.K=this.G=[];Nd(this);this.P=this.ha=0;this.i=[];this.qa=void 0;Od(this);this.A=this;this.oa={};this.V=this.gb=0;this.U=null;this.M=[];Pd(this,a.messages);this.sa=a.commands;this.L=0;this.Ca=this.ra=null;this.B=this.Ba=this.ya=this.ga=this.pa=0;this.fa=this.ba=null;var b=this;window?void 0===window[B]&&(window[B]=function(a){return cd(b,a)}):void 0===global[B]&&(global[B]=function(a){return cd(b, -a)})}p(Md,Dd);function Y(a){a=a&&a.v;null==a&&(a=-1);return a}function T(a,b,c){return{v:void 0===a?null:a,vb:void 0===b?!1:b,la:!1,ca:c}}function Qd(a){return[a.v,a.vb,a.ca,a.la,a.Oa]}function Rd(a,b){var c=T(b[0],b[1],b[2]);c.la=b[3];b[4]&&(c.eb=Ed(a,c.Oa=b[4]));return c}l=Md.prototype; -l.ta=function(a,b,c,d){this.C=b;this.D=a;this.g=c;this.fa=a.u;(a=Yc(a,"messages"))&&Pd(this,a);Sd(this,function(a){a:{var b=d.C.b,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.C.i;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=Ic[c],n&&d.f(F(n.id,8)+" %"+F(e<=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1,N--;g=r+g;d>>=8}d=F(c,0,!0)+" "+c+". "+Ra(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e} +function Md(a,b){if(b)return Ld(a,b,a.Y[b]);var c=0;for(b in a.Y)Ld(a,b,a.Y[b]),c++;return 0a&&-1>2:0)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c} +var Kd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; +function Nd(a){Ed.call(this,a);this.xa=!1;this.na=!0;this.I=T();this.ta=T();this.N=T();this.H=[];this.b=this.K=this.F=[];Od(this);this.P=this.ha=0;this.i=[];this.qa=void 0;Pd(this);this.A=this;this.oa={};this.V=this.hb=0;this.S=null;this.M=[];Qd(this,a.messages);this.sa=a.commands;this.L=0;this.Ca=this.ra=null;this.B=this.za=this.ya=this.ga=this.pa=0;this.fa=this.ba=null;var b=this;window?void 0===window[B]&&(window[B]=function(a){return cd(b,a)}):void 0===global[B]&&(global[B]=function(a){return cd(b, +a)})}p(Nd,Ed);function Y(a){a=a&&a.v;null==a&&(a=-1);return a}function T(a,b,c){return{v:void 0===a?null:a,vb:void 0===b?!1:b,la:!1,ca:c}}function Rd(a){return[a.v,a.vb,a.ca,a.la,a.Oa]}function Sd(a,b){var c=T(b[0],b[1],b[2]);c.la=b[3];b[4]&&(c.fb=Fd(a,c.Oa=b[4]));return c}l=Nd.prototype; +l.ua=function(a,b,c,d){this.C=b;this.D=a;this.g=c;this.fa=a.u;(a=Yc(a,"messages"))&&Qd(this,a);Td(this,function(a){a:{var b=d.C.b,c=a[0],e=a=0,k=b.length;if(c){a=Y(Z(d,c));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.C.i;k=1}d.f("blockid physical blockaddr used size type");d.f("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.f("..."):(c=n.type,m=Ic[c],n&&d.f(F(n.id,8)+" %"+F(e<d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.g.oa==b)){b=a.g;var e=b.i;b.i=(e+1)%Jb;b=e}if(0d&&(d=a.g.Z(b)),0<=d&&(c=a.i[a.P],c.v=b,c.la=!1,c.ca=void 0,++a.P==a.i.length&&(a.P=0)));return!1} -function Fe(a,b,c,d){var e=T(b.v),f=a.Aa(b,1),g,h,k,m=0,n=f/Mb|0,r;for(r in Ge)if(g=Ge[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=He;m=n&3;break;case 32256:k=Ie;m=n&7;break;case 29248:k=Je,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&g>Ke&&(k="B");k=Le[g||0]+k;k=Ya(k,8);g?(k=28700==h?k+M(a,f/Nb&127,-1):k+M(a,f>>23&15,-1),k+=",",f&4194304&&(k+="@"),k+=M(a,f&262143,-1),(f=f>>18&15)&&(k+="("+M(a,f,-1)+")")):k+=Ud(f);f=k;g="";h=M(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.Aa(e,1),g+=" "+Ud(k),null== -e.v)break;while(e.v!=b.v)}h+=Ya(g,16)+f;c&&(h=Ya(h,60)+";"+(c||""),h=a.g.j.Da?h+("cycles="+dd(a.g).toString()+" cs="+F(a.g.qa)):h+(null!=d?"="+d.toString():""));return h}function Nd(a){var b,c;a.b=["bp"];if(a.K)for(b=1;b>>d.i],!1)}a.K=["br"];if(a.G)for(b=1;b>>d.i],!0);a.G=["bw"];a.pa=0;a.ha=0} -l.za=function(a,b,c){var d=!0;c||Me(this,a,b,!1,!0);if(a!=this.b){var e=Y(b);if(-1===e)this.f("invalid address: "+M(this,b.v)),d=!1;else{var f=this.C;f.b[e>>>f.i].za(e&16383,a==this.G)}}d&&(a.push(b),c?b.la=!0:(Ne(this,a,a.length-1,"set"),Od(this)));return d};function Me(a,b,c,d,e){var f=!1;c=Y(c);for(var g=1;g>>d.i],b==a.G));h.la||Od(a);break}}return f} -function Oe(a,b){for(var c=1;cb[0]?1:a[0]>>0,g],r=$a(n,k,a.hb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({bd:b,v:c,xb:d,S:e,fb:f})}function Qe(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b>>0,h=f.xb;if(e>=g&&eh[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(g=h[3],f=null);f=Fe(a,b,g,f);a.f(f);a.I=b;e-=b.v-k;c++}}} -function Pe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Be+b):(a.O&&(a.f("ended assemble at "+M(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.U=null;if(Ma(a)&&0n||"z"V.length&&(a.f("note: only "+V.length+" available"),O=V.length);S-=O;0>S&&(null==V[V.length-1].v?(O=S+O,S=0):S+=V.length);var wc=[];"call"==de&&(bb=1E5,wc=["CALL"]);for(void 0!==ce&&a.f(O+" instructions earlier:");0=V.length&&(S=0);a.qa=O;fe++;bb--}}fe||(a.f("no "+ee+"history available"), -a.qa=void 0)}else{var oa=Z(a,U);if(oa){var pa=0,ie="ds"==Ha;if(fa){if("l"==fa.charAt(0))fa=fa.substr(1)||yf,pa=Id(a,fa);else{var je=Z(a,fa);je&&(pa=je.v-oa.v)}0>pa&&(pa=0);65536ne;ne++)le+=String.fromCharCode((Eb%64|0)+32), -Eb/=64}qa&&(qa+="\n");qa=ie?qa+(ra+","):qa+(U+": "+ra+(0>me?" "+le:""))}qa&&a.f(qa);a.wa=oa;a.ca=Af}}}}break;case "e":if("else"==g[0])break;var oe,pe,qe=g[0],zc=g[1];"e"==qe||"ew"==qe?(oe=a.Aa,pe=a.Ya):zc=null;if(null==zc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Fb=Z(a,zc);if(Fb)for(var Gb=2;GbDc;){for(var sa=null,Ef=256;65536>eb.v>>>0;){Ec.v=a.Aa(eb,2);if(null==eb.v||!Ef--)break;if(!(Ec.v&1)){for(var Ff=a,Hb=Ec,se=null,fb=Hb.v,te=fb,Fc=1;6>=Fc&&fb;Fc++){if(2> ";vb(function(){for(var a=C(document,B,"debugger"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;bbf){if(cf(d,this.K)){this.B=new J(this,"1.34.0",mf);cf(this.B)&&(nf(this,d),a=of,pf(this.B));this.B.set(jf,ab());qf(this.B);var e=this.b&&!this.I;if(a==kf||wa("Click OK to restore the previous "+Db+" machine state, or CANCEL to reset the machine.")){if(c=hf(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?cf(d,g):("error"==f&&"no machine state"!= -g?(this.Y("Error: "+g),"unable to verify user"==g&&(ob(rf,""),this.i=null)):this.f(f+": "+g),pf(d),cf(d)?(c=hf(d),e=!0):c=!1))}e&&ff(this,c?d:null)}else a==of&&d.clear()}else ff(this);delete this.K;delete this.H}e=x(this.id);for(f=0;fa[1];a=a[2];this.P=!0;this.j.T=!0;var d=this.F.power;d&&(d.textContent="Shutdown");this.g&&(sf(this,this.g,b,c,a),K(this,-2),this.g.X());this.N&&(nf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0}; -function nf(a,b){if(wa("There may be a problem with your "+Db+" machine.\n\nTo help us diagnose it, click OK to send this "+Db+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Db;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;jb("http://www.pcjs.org/api/v1/report",d,!0)}} -function We(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new J(a,"1.34.0"),g=new J(a,"1.34.0",gf),h=ab();g.set(jf,h);f.set(jf,h);f.set(tf,"1.34.0");f.set(uf,window?window.location.href:null);f.set(vf,window?window.navigator.userAgent:"");a.g&&a.g.da&&(c&&(b&&(a.g.j.X=a.g.j.J),a.g.R()),d=a.g.da(b,c),"object"===typeof d&&f.set(a.g.id,d),c&&(a.g.j.T=!1,!1===d&&(e=null)));for(var h=x(a.id),k=0;kd&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.g.pa==b&&(b=pd(a.g,1)));if(0d&&(d=a.g.aa(b)),0<=d&&(c=a.i[a.P],c.v=b,c.la=!1,c.ca=void 0,++a.P==a.i.length&&(a.P=0)));return!1} +function Ie(a,b,c,d){var e=T(b.v),f=a.Ba(b,1),g,h,k,m=0,n=f/Mb|0,r;for(r in Je)if(g=Je[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=Ke;m=n&3;break;case 32256:k=Le;m=n&7;break;case 29248:k=Me,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&g>Ne&&(k="B");k=Oe[g||0]+k;k=Ya(k,8);g?(k=28700==h?k+M(a,f/Nb&127,-1):k+M(a,f>>23&15,-1),k+=",",f&4194304&&(k+="@"),k+=M(a,f&262143,-1),(f=f>>18&15)&&(k+="("+M(a,f,-1)+")")):k+=Vd(f);f=k;g="";h=M(a,e.v)+":";if(-1!==e.v&&-1!==b.v){do if(k=a.Ba(e,1),g+=" "+Vd(k),null== +e.v)break;while(e.v!=b.v)}h+=Ya(g,16)+f;c&&(h=Ya(h,60)+";"+(c||""),h=a.g.j.Da?h+("cycles="+dd(a.g).toString()+" cs="+F(a.g.ra)):h+(null!=d?"="+d.toString():""));return h}function Od(a){var b,c;a.b=["bp"];if(a.K)for(b=1;b>>d.i],!1)}a.K=["br"];if(a.F)for(b=1;b>>d.i],!0);a.F=["bw"];a.pa=0;a.ha=0} +l.Aa=function(a,b,c){var d=!0;c||Pe(this,a,b,!1,!0);if(a!=this.b){var e=Y(b);if(-1===e)this.f("invalid address: "+M(this,b.v)),d=!1;else{var f=this.C;f.b[e>>>f.i].Aa(e&16383,a==this.F)}}d&&(a.push(b),c?b.la=!0:(Qe(this,a,a.length-1,"set"),Pd(this)));return d};function Pe(a,b,c,d,e){var f=!1;c=Y(c);for(var g=1;g>>d.i],b==a.F));h.la||Pd(a);break}}return f} +function Re(a,b){for(var c=1;cb[0]?1:a[0]>>0,g],r=$a(n,k,a.ib);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({cd:b,v:c,yb:d,T:e,gb:f})} +function Ue(a,b,c){var d=[],e=Y(b)>>>0;for(b=0;b>>0,h=f.yb;if(e>=g&&eh[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(g=h[3],f=null);f=Ie(a,b,g,f);a.f(f);a.I=b;e-=b.v-k;c++}}} +function Se(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Ee+b):(a.O&&(a.f("ended assemble at "+M(a,a.N.v)),a.I=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.S=null;if(Ma(a)&&0n||"z"V.length&&(a.f("note: only "+V.length+" available"),O=V.length);S-=O;0>S&&(null==V[V.length-1].v?(O=S+O,S=0):S+=V.length);var wc=[];"call"==ge&&(bb=1E5,wc=["CALL"]);for(void 0!==fe&&a.f(O+" instructions earlier:");0=V.length&&(S=0);a.qa=O;ie++;bb--}}ie||(a.f("no "+he+"history available"), +a.qa=void 0)}else{var oa=Z(a,U);if(oa){var pa=0,le="ds"==Ha;if(fa){if("l"==fa.charAt(0))fa=fa.substr(1)||Cf,pa=Jd(a,fa);else{var me=Z(a,fa);me&&(pa=me.v-oa.v)}0>pa&&(pa=0);65536qe;qe++)oe+=String.fromCharCode((Eb%64|0)+32), +Eb/=64}qa&&(qa+="\n");qa=le?qa+(ra+","):qa+(U+": "+ra+(0>pe?" "+oe:""))}qa&&a.f(qa);a.ta=oa;a.ca=Ef}}}}break;case "e":if("else"==g[0])break;var re,se,te=g[0],zc=g[1];"e"==te||"ew"==te?(re=a.Ba,se=a.Za):zc=null;if(null==zc)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var Fb=Z(a,zc);if(Fb)for(var Gb=2;GbDc;){for(var sa=null,If=256;65536>eb.v>>>0;){Ec.v=a.Ba(eb,2);if(null==eb.v||!If--)break;if(!(Ec.v&1)){for(var Jf=a,Hb=Ec,ve=null,fb=Hb.v,we=fb,Fc=1;6>=Fc&&fb;Fc++){if(2> ";vb(function(){for(var a=C(document,B,"debugger"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;bff){if(gf(d,this.K)){this.B=new J(this,"1.34.0",qf);gf(this.B)&&(rf(this,d),a=sf,tf(this.B));this.B.set(nf,ab());uf(this.B);var e=this.b&&!this.I;if(a==of||wa("Click OK to restore the previous "+Db+" machine state, or CANCEL to reset the machine.")){if(c=mf(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?gf(d,g):("error"==f&&"no machine state"!= +g?(this.Z("Error: "+g),"unable to verify user"==g&&(ob(vf,""),this.i=null)):this.f(f+": "+g),tf(d),gf(d)?(c=mf(d),e=!0):c=!1))}e&&kf(this,c?d:null)}else a==sf&&d.clear()}else kf(this);delete this.K;delete this.H}e=x(this.id);for(f=0;fa[1];a=a[2];this.P=!0;this.j.U=!0;var d=this.G.power;d&&(d.textContent="Shutdown");this.g&&(wf(this,this.g,b,c,a),K(this,-2),this.g.X());this.N&&(rf(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.w=0}; +function rf(a,b){if(wa("There may be a problem with your "+Db+" machine.\n\nTo help us diagnose it, click OK to send this "+Db+" machine state to http://www.pcjs.org.")){var c=a.ba;a=a.i||"";b=b.toString();var d={};d.app=Db;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;jb("http://www.pcjs.org/api/v1/report",d,!0)}} +function $e(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new J(a,"1.34.0"),g=new J(a,"1.34.0",lf),h=ab();g.set(nf,h);f.set(nf,h);f.set(xf,"1.34.0");f.set(yf,window?window.location.href:null);f.set(zf,window?window.navigator.userAgent:"");a.g&&a.g.da&&(c&&(b&&(a.g.j.X=a.g.j.J),a.g.R()),d=a.g.da(b,c),"object"===typeof d&&f.set(a.g.id,d),c&&(a.g.j.U=!1,!1===d&&(e=null)));for(var h=x(a.id),k=0;k=d||30<=(c.Ba+=d))&&(e.textContent=c.j.J?c.M.toFixed(2)+"Mhz":"Stopped",c.Ba=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.g.j.J;d=!!(a.g.u&8);if(0>=b||60<=(a.I+=b)){e=a.g.i;if(a.F.PC){var f=a.A&&a.A.ca||8,e=e||0,e=8==f?Ra(e,void 0):F(e,void 0);a.F.PC.textContent!=e&&(a.F.PC.textContent=e)}a.I=0}-1>b?a.i=a.g.i: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"), -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(r){g=null,a=r.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");jb(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, -"");a=a.replace(d[0],g);Qf(a,b,c)}})}else c(a,null)} -function Rf(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&C(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Wa(a))}function g(a){f("Error: "+a);m&&(--Nf||zb(!0));m=!1}var h,k,m=!0;Nf++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=n:u.appendChild(document.createTextNode(n));r.appendChild(u)}d|| -(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Of(d,null,a,null,!1,f,function(a,e){e?(ta(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Nf||zb(!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),--Nf|| -zb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Of(c,b,a,e,!0,f,n):Pf(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(N){g(N.message)}return m}window.embedPDP10=function(a,b,c,d){zb(!1);return Rf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){zb(!1);return Rf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return y(b,a+".machine")}; +function K(a,b){if(a.g){var c=a.g,d=b||0,e=c.G.speed;e&&(0>=d||30<=(c.Ca+=d))&&(e.textContent=c.j.J?c.O.toFixed(2)+"Mhz":"Stopped",c.Ca=0)}if(a.u&&(a=a.u,b=b||0,a.K)){c=a.g.j.J;d=!!(a.g.u&8);if(0>=b||60<=(a.I+=b)){e=a.g.i;if(a.G.PC){var f=a.A&&a.A.ca||8,e=e||0,e=8==f?Ra(e,void 0):F(e,void 0);a.G.PC.textContent!=e&&(a.G.PC.textContent=e)}a.I=0}-1>b?a.i=a.g.i: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"), +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(r){g=null,a=r.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");jb(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(d[0],g);Uf(a,b,c)}})}else c(a,null)} +function Vf(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&C(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Wa(a))}function g(a){f("Error: "+a);m&&(--Rf||zb(!0));m=!1}var h,k,m=!0;Rf++;ua[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css";u.styleSheet?u.styleSheet.cssText=n:u.appendChild(document.createTextNode(n));r.appendChild(u)}d|| +(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.0/components.xsl");n=function(e,k){k?Sf(d,null,a,null,!1,f,function(a,e){e?(ta(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Rf||zb(!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),--Rf|| +zb(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Sf(c,b,a,e,!0,f,n):Tf(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(N){g(N.message)}return m}window.embedPDP10=function(a,b,c,d){zb(!1);return Vf("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){zb(!1);return Vf("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return y(b,a+".machine")}; window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Aa[a]){for(var c=!0,d=Aa,e=a,f=b.length,g=[],h=[],k="",m=null,n=0;na?-b:b}});ha("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); -var ia=Math.pow(2,36),ja=-Math.pow(2,35),r={Ab:0,Pa:1,Cb:2,Db:3,Eb:4,Fb:5,Gb:6,Hb:7,Ha:8,Ib:9,Qa:10,Jb:11,Kb:12,Ra:13,Lb:14,Mb:15,Nb:16,Ob:17,Pb:18,Qb:19,Rb:20,Sb:21,Tb:22,Ub:23,Vb:24,Wb:25,Xb: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,Ga:65,zb:66,Bb:67,Yb:68,E:69,Zb:70,$b:71,ac:72,bc:73,cc:74,dc:75,ec:76,fc:77,gc:78,hc:79,ic:80,Q:81, -jc:82,kc:83,lc:84,mc:85,nc:86,oc:87,pc:88,qc:89,Wa:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,rc:97,sc:98,tc:99,d:100,e:101,uc:102,vc:103,wc:104,xc:105,yc:106,k:107,zc:108,Ac:109,n:110,Bc:111,p:112,q:113,r:114,Cc:115,t:116,Dc:117,Ec:118,Fc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Sa:127}; -function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ka=b.comment;this.Va=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.la=this.id:(this.ma=this.id.substr(0,a),this.la=this.id.substr(a+1));this.b={ready:!1,ra:!1,Ea:!1,w:!1,error:!1};this.ua=null;this.b.error=!1;this.o=this.f=this.l=this.m=this.aa=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date} +var ia=Math.pow(2,36),ja=-Math.pow(2,35),r={Bb:0,Qa:1,Db:2,Eb:3,Fb:4,Gb:5,Hb:6,Ib:7,Ia:8,Jb:9,Ra:10,Kb:11,Lb:12,Sa:13,Mb:14,Nb:15,Ob:16,Pb:17,Qb:18,Rb:19,Sb:20,Tb:21,Ub:22,Vb:23,Wb:24,Xb:25,Yb: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,Ha:65,Ab:66,Cb:67,Zb:68,E:69,$b:70,ac:71,bc:72,cc:73,dc:74,ec:75,fc:76,gc:77,hc:78,ic:79,jc:80,Q:81, +kc:82,lc:83,mc:84,nc:85,oc:86,pc:87,qc:88,rc:89,Xa:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,sc:97,tc:98,uc:99,d:100,e:101,vc:102,wc:103,xc:104,yc:105,zc:106,k:107,Ac:108,Bc:109,n:110,Cc:111,p:112,q:113,r:114,Dc:115,t:116,Ec:117,Fc:118,Gc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ta:127}; +function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.La=b.comment;this.Wa=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.ma=this.id:(this.na=this.id.substr(0,a),this.ma=this.id.substr(a+1));this.b={ready:!1,sa:!1,Fa:!1,w:!1,error:!1};this.va=null;this.b.error=!1;this.o=this.f=this.l=this.m=this.aa=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date} function x(a){window&&window.alert(a)}function ma(a){var b=!1;window&&(b=window.confirm(a));return b}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba?"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 H(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, f,e))});if(b&&"object"==typeof b){var l="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} -function Ea(a,b){var c,d={F:null,J:null,S:null,R:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.S=g.load;d.R=g.exec;if(e=g.bytes)d.F=e;else if(e=g.words)for(d.F=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.F=Array(4*e.length),f=c=0;c>8&255,d.F[f++]=e[c]>>16&255,d.F[f++]=e[c]>>24&255;else d.F=g;d.J=g.symbols;d.F.length?1==d.F.length&&(x(d.F[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;cb.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.S=g.load;d.R=g.exec;if(e=g.bytes)d.F=e;else if(e=g.words)for(d.F=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.F=Array(4*e.length),f=c=0;c>8&255,d.F[f++]=e[c]>>16&255,d.F[f++]=e[c]>>24&255;else d.F=g;d.L=g.symbols;d.F.length?1==d.F.length&&(x(d.F[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca;a++)this.a["S"+a]=[0,0,!1,!1,this.fb,a];this.o=this.f=this.l=this.m=null;this.exports={hold:this.Ya,toggle:this.sb,reset:this.ob, -set:this.rb};E(this)}n(Wa,u);k=Wa.prototype;k.reset=function(a){this.stop();a&&M(this,this.h=0)}; +function Wa(a,b){u.call(this,"Panel",a);this.A=this.B=0;this.P=b;this.c=this.u=this.g=this.h=0;this.D=this.G=-1;this.J=this.K=this.s=!1;this.N=Xa;this.j={};this.a={START:[1,1,!0,!1,this.hb],STEP:[1,1,!1,!1,this.ib],ENABLE:[1,1,!1,!1,this.bb],CONT:[1,1,!0,!1,this.$a],DEP:[0,0,!0,!1,this.ab],EXAM:[1,1,!0,!1,this.cb],LOAD:[1,1,!0,!1,this.fb],TEST:[0,0,!0,!1,this.eb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.gb,a];this.o=this.f=this.l=this.m=null;this.exports={hold:this.Za,toggle:this.tb,reset:this.pb, +set:this.sb};E(this)}n(Wa,u);k=Wa.prototype;k.reset=function(a){this.stop();a&&M(this,this.h=0)}; k.T=function(a,b,c,d){if(this.m&&this.m.T(a,b,c,d)||this.f&&this.f.T(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Ya(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){N(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Ya(a, b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){N(a,b)}}(this,b),!0):u.prototype.T.call(this,a,b,c,d)}};k.X=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;Za(this);$a(this)};k.U=function(a,b){if(!b)if(this.P&&ab(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.c,this.h,this.g]);return a.data()}; -k.restore=function(a){if(a=a[0])Q(this,this.c=a[0]),M(this,this.h=a[1]),bb(this,a[2]);return!0};k.ob=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}$a(this);return!0};function cb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Za(a,b){for(var c in a.j)cb(a,c,null!=b?b:a.j[c])}function db(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function $a(a){for(var b in a.a)db(a,b,a.a[b][1])} -k.Ya=function(a,b,c){if(Ya(this,b)){if(c){var d=this;setTimeout(function(){N(d,b);a&&a()},+c);return!1}N(this,b)}return!0}; -k.rb=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d=a.charAt(0),e=0>>a.c];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.M(this.c);M(this,this.h=a)}};k.eb=function(a){a||this.f.b.v||Q(this,this.g)};k.cb=function(a){a?(this.s=!0,Za(this,!0)):(this.s=!1,Za(this),bb(this,0))};k.fb=function(a,b){this.g=a?this.g|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.a["S"+b][1]=a.g&1<>>a.c];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.M(this.c);M(this,this.h=a)}};k.fb=function(a){a||this.f.b.v||Q(this,this.g)};k.eb=function(a){a?(this.s=!0,Za(this,!0)):(this.s=!1,Za(this),bb(this,0))};k.gb=function(a,b){this.g=a?this.g|1<c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.a["S"+b][1]=a.g&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.c;0f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Z)return h.wa+=h.Z-e,h.Z=e,!0;if(e>=h.Z+h.wa){p=h.size-(e-l);p>f&&(p=f);h.wa=e-h.Z+p;e=l+16384;f-=p;g++;continue}}return sb(tb,e,f)}e=new T(a,e,p,16384,d);pb(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+ub[d]+" at "+wa(b)),!0):sb(vb,b,c)}function nb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--} -function qb(a){for(var b=0,c=[],d=0;d>>a.c;0f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Z)return h.xa+=h.Z-e,h.Z=e,!0;if(e>=h.Z+h.xa){p=h.size-(e-l);p>f&&(p=f);h.xa=e-h.Z+p;e=l+16384;f-=p;g++;continue}}return sb(tb,e,f)}e=new T(a,e,p,16384,d);pb(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+ub[d]+" at "+wa(b)),!0):sb(vb,b,c)}function nb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--} +function qb(a){for(var b=0,c=[],d=0;d=c+d?a>>c&(1<=a.L&&(a.L+=a.ja,c=!0);0<=a.ba&&a.ba<=Kb(a)&&(a.ja=a.ba=-1,Jb(a),R(a),c=!0);c&&a.I(Kb(a)+" cycles: checksum="+F(a.na))}} -k.T=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.H/a.K&&(b=1);a.N=b;b=a.Aa*a.N;if(a.K!=b){a.K=b;b=a.K.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.I("target speed: "+b)}c&&a.m&&(c=a.m,c.aa&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.aa.focus(),window&&window.scrollTo(b,d)))}kb(a,a.j);a.j=0;a.h=w();a.u=0;Mb(a)}function Ob(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Pb(a,b){var c=a.A-=a.B;a.B=0;b&&(a.A=0);return c} -k.pb=function(){if(this.b.v){this.pa>=this.Ca&&Mb(this,!0);this.V=0;this.ia=w();if(this.u){var a=this.ia-this.u;a>this.Ba&&(this.h+=a,this.h>this.ia&&(this.h=this.ia))}try{do{for(var b,c=this.b.sa?1:this.ca,d=this.s.length-1;0<=d;d--){var e=this.s[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.xa(b)}catch(f){if("number"!=typeof f)throw f;}b=Pb(this,!0);this.V+=b;this.j+=b;lb(this,b);jb(this,b);this.P-=b;if(0>=this.P){this.P+=this.ca;++this.Da>=Qb&&(this.m&&S(this.m,void 0),this.Da=0);break}}while(this.b.v)}catch(f){R(this); -this.m&&this.m.stop(w(),Kb(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.La;this.u=w();c=this.Ba;this.V&&(c=Math.round(c*this.V/this.ca));c-=this.u-this.ia;if(d=this.u-this.h)this.H=Math.round(this.j/(10*d))/100,864E5<=d&&(this.D=0,Lb(this));if(0>c||this.Hc&&(this.h-=c),c=0;this.pa+=this.V;this.u+=c;a(b,c)}}}; -function ib(a){var b;a.b.error?(a.I(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.I(a.toString()+" busy");else{Lb(a);a.b.v=!0;a.b.Fa=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.h,Kb(a));a.o||a.status("Started");setTimeout(a.La,0)}}k.xa=function(){return 0};function R(a){var b=!1;if(a.b.v){Pb(a);kb(a,a.j);a.j=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),Kb(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Nb=30,Qb=15,Hb=["power","reset"]; -function Rb(a){var b=+a.model||1001;Gb.call(this,a,1E6);this.Ta=b;this.Ja=+a.addrReset||0;this.Ua=Sb.bind(this);this.a=V.bind(this);this.fa=null;this.Ia=[];this.b.complete=!1}n(Rb,Gb);k=Rb.prototype;k.reset=function(){this.status("Model "+this.Ta);this.b.v&&R(this);this.W=this.qa=0;this.ha=this.g=this.za=this.Ja;this.c=0;this.M=this.lb;this.Y=this.yb;this.fa=null;Ib(this);this.b.error=!1;Gb.prototype.reset.call(this)};k.Na=function(){return 0}; -k.save=function(){var a=new O(this);a.set(0,[this.qa,this.W,this.g,this.za,this.ha,this.c]);a.set(1,[]);a.set(2,[this.D,this.N,this.b.G]);a.set(3,Tb(this));a.set(4,Ob(this));return a.data()}; -k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.qa=b.next().value;this.W=b.next().value;this.g=b.next().value;this.za=b.next().value;this.ha=b.next().value;this.c=b.next().value;b=a[2];this.D=b[0];Lb(this,b[1]);this.b.G=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.c].M(a&16383,a)};k.yb=function(a,b){var c=this.l;a=this.ha=a;c.a[(a&c.g)>>>c.c].Y(b,a&16383,a)}; -k.xa=function(a){this.b.complete=!0;var b=a?this.b.Fa?0:1:-1;this.b.Fa=!1;this.A=this.B=a;this.c=this.c&-5|0;do{if(a=this.c)if(a=this.c&11)this.c&2?this.fa||(this.c&=-3):this.c&1&&this.c++,a=!1;if(a){if(this.c&4&&this.o.h(this.g,b)){R(this);break}if(0>b)break}this.c&=15;var c=this.za=this.g;a=this.qa=this.M(c);this.g=(c+1)%Sa;for(var d,e=4;;){c=a&262143;(d=a>>18&15)&&(c=c+this.M(d)&Ta);if(!(a&4194304))break;if(0>--e){a=this.l;a.h||R(a.f);break}a=this.M(c)}this.W=c;this.Ua(this.qa/Va|0)}while(0>4].call(this,a)}function W(a){this.a(a)}function Vb(a){this.a(a)}function Wb(a){this.a(a)}function Xb(a){a&=15;var b=this.M(this.W),c=this.M(a);this.Y(a,(c&262143)+(b-(b&262143)))}function X(a){this.a(a)}function V(a){this.I("undefined opcode: "+wa(a));R(this)} +function T(a,b,c,d,e){this.h=a;this.id=xb+=2;this.Z=b;this.xa=c;this.size=d||0;this.type=e||yb;this.m=e==zb;this.M=this.o=this.c=this.ga;this.Y=this.l=this.g=this.ha;this.f=this.i=0;pb(this);this.ua=this.Ya=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b=c+d?a>>c&(1<=a.P&&(a.P+=a.ca,c=!0);0<=a.da&&a.da<=Kb(a)&&(a.ca=a.da=-1,Jb(a),R(a),c=!0);c&&a.I(Kb(a)+" cycles: checksum="+F(a.oa))}} +k.T=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;ca.J/a.N&&(b=1);a.V=b;b=a.Ba*a.V;if(a.N!=b){a.N=b;b=a.N.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.I("target speed: "+b)}c&&a.m&&(c=a.m,c.aa&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.aa.focus(),window&&window.scrollTo(b,d)))}kb(a,a.j);a.j=0;a.h=w();a.A=0;Mb(a)}function Ob(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Pb(a,b){var c=a.B-=a.D;a.D=0;b&&(a.B=0);return c} +k.qb=function(){if(this.b.v){this.qa>=this.Da&&Mb(this,!0);this.ba=0;this.ka=w();if(this.A){var a=this.ka-this.A;a>this.Ca&&(this.h+=a,this.h>this.ka&&(this.h=this.ka))}try{do{for(var b,c=this.b.ta?1:this.ea,d=this.u.length-1;0<=d;d--){var e=this.u[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.ya(b)}catch(f){if("number"!=typeof f)throw f;}b=Pb(this,!0);this.ba+=b;this.j+=b;lb(this,b);jb(this,b);this.W-=b;if(0>=this.W){this.W+=this.ea;++this.Ea>=Qb&&(this.m&&S(this.m,void 0),this.Ea=0);break}}while(this.b.v)}catch(f){R(this); +this.m&&this.m.stop(w(),Kb(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.Ma;this.A=w();c=this.Ca;this.ba&&(c=Math.round(c*this.ba/this.ea));c-=this.A-this.ka;if(d=this.A-this.h)this.J=Math.round(this.j/(10*d))/100,864E5<=d&&(this.G=0,Lb(this));if(0>c||this.Jc&&(this.h-=c),c=0;this.qa+=this.ba;this.A+=c;a(b,c)}}}; +function ib(a){var b;a.b.error?(a.I(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.I(a.toString()+" busy");else{Lb(a);a.b.v=!0;a.b.Ga=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.h,Kb(a));a.o||a.status("Started");setTimeout(a.Ma,0)}}k.ya=function(){return 0};function R(a){var b=!1;if(a.b.v){Pb(a);kb(a,a.j);a.j=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),Kb(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Nb=30,Qb=15,Hb=["power","reset"]; +function Rb(a){var b=+a.model||1001;Gb.call(this,a,1E6);this.Ua=b;this.Ka=+a.addrReset||0;this.Va=Sb.bind(this);this.a=V.bind(this);this.ia=null;this.Ja=[];this.b.complete=!1}n(Rb,Gb);k=Rb.prototype;k.reset=function(){this.status("Model "+this.Ua);this.b.v&&R(this);this.s=this.K=this.ra=0;this.ja=this.g=this.Aa=this.Ka;this.c=0;this.M=this.mb;this.Y=this.zb;this.ia=null;Ib(this);this.b.error=!1;Gb.prototype.reset.call(this)};k.Oa=function(){return 0}; +k.save=function(){var a=new O(this);a.set(0,[this.s,this.K,this.ra,this.g,this.Aa,this.ja,this.c]);a.set(1,[]);a.set(2,[this.G,this.V,this.b.H]);a.set(3,Tb(this));a.set(4,Ob(this));return a.data()}; +k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.s=b.next().value;this.K=b.next().value;this.ra=b.next().value;this.g=b.next().value;this.Aa=b.next().value;this.ja=b.next().value;this.c=b.next().value;b=a[2];this.G=b[0];Lb(this,b[1]);this.b.H=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.c].M(a&16383,a)};k.zb=function(a,b){var c=this.l;a=this.ja=a;c.a[(a&c.g)>>>c.c].Y(b,a&16383,a)}; +k.ya=function(a){this.b.complete=!0;var b=a?this.b.Ga?0:1:-1;this.b.Ga=!1;this.B=this.D=a;this.c=this.c&-5|0;do{if(a=this.c)if(a=this.c&11)this.c&2?this.ia||(this.c&=-3):this.c&1&&this.c++,a=!1;if(a){if(this.c&4&&this.o.h(this.g,b)){R(this);break}if(0>b)break}this.c&=15;this.K=this.K&4194304?this.M(this.s):this.ra=this.M(this.Aa=this.g);this.s=this.K&262143;if(a=this.K>>18&15)this.s=this.s+this.M(a)&Ta;this.K&4194304?a=-1:(this.g=(this.g+1)%Sa,a=this.ra/Va|0);0<=a&&this.Va(a)}while(0>4].call(this,a)}function W(a){this.a(a)}function Vb(a){this.a(a)}function Wb(a){this.a(a)}function Xb(a){a&=15;var b=this.M(this.s),c=this.M(a);this.Y(a,(c&262143)+(b-(b&262143)))}function X(a){this.a(a)}function V(a){this.I("undefined opcode: "+wa(a));this.g=(this.g+-1)%Sa;R(this)} var Ub=[W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,Wb,Wb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, @@ -106,49 +106,49 @@ function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a) function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, -function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Xb,function(a){a&=15;var b=this.M(a);this.Y(a,b&262143)},function(a){a=this.M(a&15);var b=this.M(this.W);this.Y(this.W,(b&262143)+(a-(a&262143)))},function(a){a&15&&Xb.call(this,a)}, +function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Xb,function(a){a&=15;var b=this.M(a);this.Y(a,b&262143)},function(a){a=this.M(a&15);var b=this.M(this.s);this.Y(this.s,(b&262143)+(a-(a&262143)))},function(a){a&15&&Xb.call(this,a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)}, function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X]; -function Yb(a){u.call(this,"ROM",a);this.J=this.a=null;this.j=+a.addr;this.g=+a.size;this.c=a.alias;"string"==typeof this.c&&(this.c=eval(this.c));this.h=a.file;this.s=xa(this.h);if(this.h){a=this.h;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(ka(c.ma,a,b),(a=Ea(a,b))?(c.a=a.F,c.J=a.J):c.h=null);Zb(c)})}}n(Yb,u); -Yb.prototype.X=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Zb(this)};Yb.prototype.U=function(){this.J&&(this.o&&this.o.a(this.id,this.j,this.g,this.J),delete this.J);return!0};Yb.prototype.O=function(){return!0}; -function Zb(a){if(!ua(a)){if(a.h){if(!a.a||!a.l)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+F(a.a.length,8,!0)+") does not match specified size ("+F(a.g,8,!0)+")";a.b.error=!0;a.C(b)}else{b=a.j;if(rb(a.l,b,a.g,zb)){var c;for(c=0;c>>f.c;0>>f.c;0>>=f.c;0>>a.c;0g&&g>=ja&&(g+=ia);g=Math.trunc(Math.abs(g))%ia;void 0===f&&(f=e.size);for(h=d;f--&&h=b.length)break;for(var l=l+2,q=b[l++]&255|(b[l++]&255)<<8,t=b[l++]&255|(b[l++]&255)<<8,p=p+((q&255)+(q>>8)+(t&255)+(t>>8)),P=l,ta=q-=6;0=b.length)break;p+=b[l++]&255;if(p&255)break;if(ta)for(;ta--;)nb(a.l,t++,b[P++]);else t&1?g=!0:null==d&&(d=t);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=r.Ga&&c<=r.Wa&&(b=c-(r.Ga-r.Pa));b&&(a.preventDefault&&a.preventDefault(),d.va(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==r.Ra&&(b=r.Qa);d.va(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.va(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.X=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;E(this)}; -k.Oa=function(a){if(!this.a){var b=U(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.la)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.ma+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.U=function(a,b){if(!b)if(this.Oa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0}; -k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new O(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.va=function(a){if("number"==typeof a)this.c.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d=b.length)break;for(var l=l+2,q=b[l++]&255|(b[l++]&255)<<8,t=b[l++]&255|(b[l++]&255)<<8,p=p+((q&255)+(q>>8)+(t&255)+(t>>8)),P=l,ua=q-=6;0=b.length)break;p+=b[l++]&255;if(p&255)break;if(ua)for(;ua--;)nb(a.l,t++,b[P++]);else t&1?g=!0:null==d&&(d=t);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h=r.Ha&&c<=r.Xa&&(b=c-(r.Ha-r.Qa));b&&(a.preventDefault&&a.preventDefault(),d.wa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==r.Sa&&(b=r.Ra);d.wa(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.wa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.X=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;E(this)}; +k.Pa=function(a){if(!this.a){var b=U(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.ma)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.na+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.U=function(a,b){if(!b)if(this.Pa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new O(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.wa=function(a){if("number"==typeof a)this.c.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d\nLicense: GPL version 3 or later ");for(b=0;bgc){if(Z(d,this.B)){this.j=new O(this,"1.34.0",pc);Z(this.j)&&(qc(this,d),a=rc,sc(this.j));this.j.set(mc,Da());tc(this.j);var e=this.a&&!this.A;if(a==nc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=lc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!= -g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(uc,""),this.c=null)):this.I(f+": "+g),sc(d),Z(d)?(c=lc(d),e=!0):c=!1))}e&&jc(this,c?d:null)}else a==rc&&d.clear()}else jc(this);delete this.B;delete this.u}e=y(this.id);for(f=0;fa[1];a=a[2];this.N=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(vc(this,this.f,b,c,a),S(this,-2),this.f.G());this.K&&(qc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0}; +k.fa=function(a){void 0===a&&(a=this.a||(this.B?nc:gc));if(!this.h){this.h++;var b=!1,c=!1;this.J=!1;var d=this.u||new O(this,"1.34.0");if(a==oc)b=!0;else if(a>gc){if(Z(d,this.B)){this.j=new O(this,"1.34.0",pc);Z(this.j)&&(qc(this,d),a=rc,sc(this.j));this.j.set(mc,Da());tc(this.j);var e=this.a&&!this.A;if(a==nc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=lc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!= +g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(uc,""),this.c=null)):this.I(f+": "+g),sc(d),Z(d)?(c=lc(d),e=!0):c=!1))}e&&jc(this,c?d:null)}else a==rc&&d.clear()}else jc(this);delete this.B;delete this.u}e=y(this.id);for(f=0;fa[1];a=a[2];this.N=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(vc(this,this.f,b,c,a),S(this,-2),this.f.H());this.J&&(qc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0}; function qc(a,b){if(ma("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.W;a=a.c||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}} -function wc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.0"),g=new O(a,"1.34.0",kc),h=Da();g.set(mc,h);f.set(mc,h);f.set(xc,"1.34.0");f.set(yc,window?window.location.href:null);f.set(zc,window?window.navigator.userAgent:"");a.f&&a.f.O&&(c&&(b&&(a.f.b.G=a.f.b.v),R(a.f)),d=a.f.O(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.b.w=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l=d||30<=(c.ya+=d))&&(e.textContent=c.b.v?c.H.toFixed(2)+"Mhz":"Stopped",c.ya=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.f.b.v;d=!!(a.f.c&8);if(0>=b||60<=(a.A+=b)){e=a.f.g;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.c=a.f.g:0=d||30<=(c.za+=d))&&(e.textContent=c.b.v?c.J.toFixed(2)+"Mhz":"Stopped",c.za=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.f.b.v;d=!!(a.f.c&8);if(0>=b||60<=(a.A+=b)){e=a.f.g;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.c=a.f.g:0/g.exec(a)){var e= "");a=a.replace(d[0],g);Hc(a,b,c)}})}else c(a,null)} function Ic(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&D(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=Aa(a))}function g(a){f("Error: "+a);p&&(--Ec||K(!0));p=!1}var h,l,p=!0;Ec++;la[b]={};try{if(h=document.getElementById(b)){var q;if("object"==typeof resources&&(q=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],P=document.createElement("style");P.type="text/css";P.styleSheet?P.styleSheet.cssText=q:P.appendChild(document.createTextNode(q));t.appendChild(P)}d|| (q=a,"pdp"==a.substr(0,3)&&(q="pdpjs"),d="/versions/"+q+"/1.34.0/components.xsl");q=function(e,l){l?Fc(d,null,a,null,!1,f,function(a,e){e?(ka(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Ec||K(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Ec|| -K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Fc(c,b,a,e,!0,f,q):Gc(c,null,b,a,e,!1,f,q)}else g("missing machine element: "+b)}catch(ta){g(ta.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Ic("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Ic("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")}; +K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Fc(c,b,a,e,!0,f,q):Gc(c,null,b,a,e,!1,f,q)}else g("missing machine element: "+b)}catch(ua){g(ua.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Ic("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Ic("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")}; window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!pa[a]){for(var c=!0,d=pa,e=a,f=b.length,g=[],h=[],l="",p=null,q=0;q