From 0607d65b703955cf42260b9059227cf25299ff62 Mon Sep 17 00:00:00 2001 From: Jeff Date: Sun, 13 Nov 2016 21:17:46 -0800 Subject: [PATCH] Fixed RTI on older PDP-11s (ie, 11/20); the old RTI behaves like the new RTT, which did not exist on older machines --- modules/pdp11/lib/cpuops.js | 11 ++- modules/pdp11/lib/cpustate.js | 20 ++++- modules/pdp11/lib/debugger.js | 20 ++--- modules/pdp11/lib/defines.js | 89 ++++++++++----------- modules/pdp11/lib/panel.js | 12 +-- modules/pdp11/lib/serialport.js | 4 +- versions/pdpjs/1.30.3/pdp11-dbg.js | 121 +++++++++++++++-------------- versions/pdpjs/1.30.3/pdp11.js | 26 +++---- 8 files changed, 163 insertions(+), 140 deletions(-) diff --git a/modules/pdp11/lib/cpuops.js b/modules/pdp11/lib/cpuops.js index 03affedf4..b73681308 100644 --- a/modules/pdp11/lib/cpuops.js +++ b/modules/pdp11/lib/cpuops.js @@ -1507,7 +1507,12 @@ PDP11.opRTI = function(opCode) { this.trapReturn(); /* - * Unlike RTT, RTI enables immediate trace + * Unlike RTT, RTI permits an immediate trace, which we resolve by propagating PSW.TF to OPFLAG.TRAP_TF + * (which, as written, requires that both flags have the same bit value; see defines.js). + * + * NOTE: This trace behavior is NEW for machines that have both RTI and RTT. Early models didn't have RTT; ie, + * the old RTI instruction behaved exactly like the new RTT instruction. This is why the 11/20 jump table below + * for RTI calls opRTT() instead of opRTI(). */ this.opFlags |= (this.regPSW & PDP11.PSW.TF); this.nStepCycles -= (10 + 3); @@ -1528,7 +1533,7 @@ PDP11.opRTS = function(opCode) var src = this.popWord(); var reg = opCode & PDP11.OPREG.MASK; /* - * When the popular "RTS PC" form is used, we might as well eliminate the useless setting of PC to + * When the popular "RTS PC" form is used, we might as well eliminate the useless setting of PC */ if (reg == PDP11.REG.PC) { this.setPC(src); @@ -2057,7 +2062,7 @@ PDP11.aOp00Xn_1120 = [ PDP11.aOp000X_1120 = [ PDP11.opHALT, // 0x0000 000000 11/20+ 1.8 PDP11.opWAIT, // 0x0001 000001 11/20+ 1.8 - PDP11.opRTI, // 0x0002 000002 11/20+ 4.8 + PDP11.opRTT, // 0x0002 000002 11/20+ 4.8 (this is really RTI, but on the 11/20, it behaves like RTT) PDP11.opBPT, // 0x0003 PDP11.opIOT, // 0x0004 000004 11/20+ 9.3 PDP11.opRESET, // 0x0005 000005 11/20+ 20ms diff --git a/modules/pdp11/lib/cpustate.js b/modules/pdp11/lib/cpustate.js index c76afbb85..f53568b06 100644 --- a/modules/pdp11/lib/cpustate.js +++ b/modules/pdp11/lib/cpustate.js @@ -394,7 +394,13 @@ CPUStatePDP11.prototype.setMMR3 = function(newMMR3) CPUStatePDP11.prototype.setReset = function(addr, fReset) { this.addrReset = addr; + + /* + * If we're going to slam this new address straight into PC, then it seems wise to reset the PSW as well. + */ this.setPC(addr); + this.setPSW(0); + if (!fReset && this.dbg) { /* * TODO: Review the decision to always stop the CPU if the Debugger is loaded. Note that @@ -2343,7 +2349,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) * nDebugCheck is 1 if we want the Debugger's checkInstruction() to check every instruction, * -1 if we want it to check just the first instruction, and 0 if there's no need for any checks. */ - var nDebugCheck = (DEBUGGER && this.dbg && this.dbg.checksEnabled())? 1 : (this.flags.starting? -1 : 0); + var nDebugCheck = (DEBUGGER && this.dbg)? (this.dbg.checksEnabled()? 1 : (this.flags.starting? -1 : 0)) : 0; /* * nDebugState is needed only when nDebugCheck is non-zero; it is -1 if this is a single-step, 0 if @@ -2367,7 +2373,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) do { if (DEBUGGER && nDebugCheck) { - if (this.dbg && this.dbg.checkInstruction(this.getPC(), nDebugState)) { + if (this.dbg.checkInstruction(this.getPC(), nDebugState)) { this.stopCPU(); break; } @@ -2376,6 +2382,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) } if (this.opFlags) { + /* * If we're in the INTQ or WAIT state, check for any pending interrupts. * @@ -2386,6 +2393,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) */ if ((this.opFlags & (PDP11.OPFLAG.INTQ_MASK | PDP11.OPFLAG.WAIT)) /* && nDebugState >= 0 */) { if (this.checkInterrupts()) { + if (DEBUGGER && nDebugCheck && this.dbg.checkInstruction(this.getPC(), nDebugState)) { + this.stopCPU(); + break; + } /* * Since an interrupt was just dispatched, altering the normal flow of time and changing * the future as we knew it, let's break out immediately if we're single-stepping, so that @@ -2396,6 +2407,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) if (nDebugState < 0) break; } } + /* * Next, check for any pending traps (which, as noted above, must be done after checkInterrupts()). * @@ -2405,6 +2417,10 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles) */ if (this.opFlags & PDP11.OPFLAG.TRAP_MASK) { if (this.checkTraps()) { + if (DEBUGGER && nDebugCheck && this.dbg.checkInstruction(this.getPC(), nDebugState)) { + this.stopCPU(); + break; + } if (nDebugState < 0) break; } } diff --git a/modules/pdp11/lib/debugger.js b/modules/pdp11/lib/debugger.js index b1343f5ea..3bc8b29cd 100644 --- a/modules/pdp11/lib/debugger.js +++ b/modules/pdp11/lib/debugger.js @@ -266,7 +266,7 @@ if (DEBUGGER) { * Register numbers 0-7 are reserved for cpu.regsGen, 8-15 are reserved for cpu.regsAlt, and 16-19 for cpu.regsStack. */ DebuggerPDP11.REG_PSW = 20; - DebuggerPDP11.REG_SW = 21; + DebuggerPDP11.REG_SR = 21; // SWITCH register; see Panel's getSR() and setSR() /* * Operand type masks; anything that's not covered by OP_SRC or OP_DST must be a OP_OTHER value. @@ -1127,7 +1127,7 @@ if (DEBUGGER) { case "PC": iReg = 7; break; - case "SW": + case "SR": iReg = 21; break; default: @@ -1156,7 +1156,7 @@ if (DEBUGGER) { * getRegValue(iReg) * * Register numbers 0-7 are reserved for cpu.regsGen, 8-15 are reserved for cpu.regsAlt, - * 16-19 for cpu.regsAltStack, 20 for regPSW, and 21 for regSW. + * 16-19 for cpu.regsAltStack, 20 for regPSW, and 21 for SR (SWITCH register). * * @this {DebuggerPDP11} * @param {number} iReg @@ -1178,8 +1178,8 @@ if (DEBUGGER) { else if (iReg == DebuggerPDP11.REG_PSW) { value = this.cpu.getPSW(); } - else if (iReg == DebuggerPDP11.REG_SW && this.panel && this.panel.hasSwitches()) { - value = this.panel.getSW(); + else if (iReg == DebuggerPDP11.REG_SR && this.panel && this.panel.hasSwitches()) { + value = this.panel.getSR(); } } return value; @@ -2392,8 +2392,8 @@ if (DEBUGGER) { else if (iReg == DebuggerPDP11.REG_PSW) { sReg = "PS=" + this.toStrBase(cpu.getPSW()); } - else if (iReg == DebuggerPDP11.REG_SW && this.panel && this.panel.hasSwitches()) { - sReg = "SW=" + this.toStrBase(this.panel.getSW(), 3); + else if (iReg == DebuggerPDP11.REG_SR && this.panel && this.panel.hasSwitches()) { + sReg = "SR=" + this.toStrBase(this.panel.getSR(), 3); } if (sReg) sReg += ' '; return sReg; @@ -2419,7 +2419,7 @@ if (DEBUGGER) { } sDump += '\n'; sDump += this.getRegOutput(PDP11.REG.SP) + this.getRegOutput(PDP11.REG.PC); - sDump += this.getRegOutput(DebuggerPDP11.REG_PSW) + this.getRegOutput(DebuggerPDP11.REG_SW); + sDump += this.getRegOutput(DebuggerPDP11.REG_PSW) + this.getRegOutput(DebuggerPDP11.REG_SR); sDump += this.getFlagOutput('T') + this.getFlagOutput('N') + this.getFlagOutput('Z') + this.getFlagOutput('V') + this.getFlagOutput('C'); return sDump; }; @@ -3435,9 +3435,9 @@ if (DEBUGGER) { case "C": if (w) cpu.setCF(); else cpu.clearCF(); break; - case "SW": + case "SR": if (this.panel && this.panel.hasSwitches()) { - this.panel.setSW(w); + this.panel.setSR(w); break; } /* falls through */ diff --git a/modules/pdp11/lib/defines.js b/modules/pdp11/lib/defines.js index 53fdac475..85c152e22 100644 --- a/modules/pdp11/lib/defines.js +++ b/modules/pdp11/lib/defines.js @@ -158,7 +158,7 @@ var PDP11 = { MASK: 0x3 }, /* - * Processor Status flag definitions (stored in regPSW) + * Processor Status Word definitions (stored in regPSW) */ PSW: { CF: 0x0001, // bit 0 (000001) Carry Flag @@ -185,6 +185,49 @@ var PDP11 = { CMODE: 14 } }, + /* + * PDP-11 trap vectors + */ + TRAP: { + UNDEFINED: 0x00, // 000 (reserved) + BUS: 0x04, // 004 unaligned address, non-existent memory, illegal instruction, etc + RESERVED: 0x08, // 010 reserved instructions + BPT: 0x0C, // 014 BPT: breakpoint trap (trace) + IOT: 0x10, // 020 IOT: input/output trap + PF: 0x14, // 024 power fail + EMT: 0x18, // 030 EMT: emulator trap + TRAP: 0x1C, // 034 TRAP instruction + PIRQ: 0xA0, // 240 PIRQ: program interrupt request + MMU: 0xA8 // 250 MMU: aborts and traps + }, + /* + * PDP-11 trap reasons; the reason may also be a non-negative address indicating a BUS memory error + * (unaligned address or non-existent memory). Any reason >= RED (which includes BUS memory errors) generate + * immediate (thrown) traps, as they are considered ABORTs; the rest generate synchronous traps. + */ + REASON: { + ABORT: -1, // immediate MMU fault + ILLEGAL: -2, // immediate invalid opcode (BUS) + RED: -3, // immediate stack overflow fault (BUS) + YELLOW: -4, // deferred stack overflow fault (BUS) + FAULT: -5, // deferred MMU fault + TRACE: -6, // deferred TF fault (BPT) + HALT: -7, // illegal HALT (BUS) + OPCODE: -8, // opcode-generated trap (eg, BPT, EMT, IOT, TRAP, or RESERVED opcode) + INTERRUPT: -9, // device-generated trap (vector is device-specific) + }, + REASONS: [ + "UNKNOWN", + "ABORT", + "ILLEGAL", + "RED", + "YELLOW", + "FAULT", + "TRACE", + "HALT", + "OPCODE", + "INTERRUPT" + ], /* * Assorted common opcodes */ @@ -202,7 +245,7 @@ var PDP11 = { INTQ_MASK: 0x03, WAIT: 0x04, // WAIT operation in progress TRAP: 0x08, // set if last operation was a trap (see trapLast for the vector, and trapReason for the reason) - TRAP_TF: 0x10, // aka PDP11.PSW.TF + TRAP_TF: 0x10, // aka PDP11.PSW.TF (WARNING: do not change this bit, or you will likely break opRTI()) TRAP_SP: 0x20, // set for a deferred BUS trap (due to a "yellow" stack overflow condition) TRAP_MMU: 0x40, TRAP_MASK: 0x70, @@ -246,48 +289,6 @@ var PDP11 = { SP: 6, PC: 7, }, - /* - * PDP-11 trap vectors - */ - TRAP: { - UNDEFINED: 0x00, // 000 (reserved) - BUS: 0x04, // 004 unaligned address, non-existent memory, illegal instruction, etc - RESERVED: 0x08, // 010 reserved instructions - BPT: 0x0C, // 014 BPT: breakpoint trap (trace) - IOT: 0x10, // 020 IOT: input/output trap - PF: 0x14, // 024 power fail - EMT: 0x18, // 030 EMT: emulator trap - TRAP: 0x1C, // 034 TRAP instruction - PIRQ: 0xA0, // 240 PIRQ: program interrupt request - MMU: 0xA8 // 250 MMU: aborts and traps - }, - /* - * PDP-11 trap reasons; the reason may also be a non-negative address indicating a BUS memory error - * (unaligned address or non-existent memory). Any reason >= RED (which includes BUS memory errors) generate - * immediate (thrown) traps; the rest generate synchronous traps. - */ - REASON: { - ABORT: -1, // immediate MMU fault - ILLEGAL: -2, // immediate invalid opcode (BUS) - RED: -3, // immediate stack overflow fault (BUS) - YELLOW: -4, // deferred stack overflow fault (BUS) - FAULT: -5, // deferred MMU fault - TRACE: -6, // deferred TF fault (BPT) - HALT: -7, // illegal HALT (BUS) - OPCODE: -8, // opcode-generated trap (eg, BPT, EMT, IOT, TRAP, or RESERVED opcode) - INTERRUPT: -9, // device-generated trap (vector is device-specific) - }, - REASONS: [ - "ABORT", - "ILLEGAL", - "RED", - "YELLOW", - "FAULT", - "TRACE", - "HALT", - "OPCODE", - "INTERRUPT" - ], /* * Internal memory access flags */ diff --git a/modules/pdp11/lib/panel.js b/modules/pdp11/lib/panel.js index 1fa6f1a9a..7d7c6da7f 100644 --- a/modules/pdp11/lib/panel.js +++ b/modules/pdp11/lib/panel.js @@ -176,23 +176,23 @@ PanelPDP11.LED = { }; /** - * getSW() + * getSR() * * @this {PanelPDP11} - * @return {number} + * @return {number} (current SWITCH register) */ -PanelPDP11.prototype.getSW = function() +PanelPDP11.prototype.getSR = function() { return this.regSwitches; }; /** - * setSW(value) + * setSR(value) * * @this {PanelPDP11} - * @param {number} value + * @param {number} value (new SWITCH register) */ -PanelPDP11.prototype.setSW = function(value) +PanelPDP11.prototype.setSR = function(value) { this.setSwitches(value); }; diff --git a/modules/pdp11/lib/serialport.js b/modules/pdp11/lib/serialport.js index 28c28df2e..1e3a94d25 100644 --- a/modules/pdp11/lib/serialport.js +++ b/modules/pdp11/lib/serialport.js @@ -662,12 +662,12 @@ SerialPortPDP11.prototype.readXCSR = function(addr) SerialPortPDP11.prototype.writeXCSR = function(data, addr) { /* - * If the device is READY, and TIE is being set, then request an interrupt. + * If the device is READY, and TIE is being set, then request a hardware interrupt. * * Conversely, if TIE is being cleared, remove the request; this satisfies a test in MAINDEC TEST 15, * which appears to clear, set, and clear the Transmitter Interrupt Enable (TIE) bit in rapid succession, * with the expectation that NO interrupt will be generated. However, this fix also required a - * complementary change in setTrigger(), to signal an interrupt using INTQ_DELAY rather than INTQ. + * complementary change in setTrigger(), to request hardware interrupts with INTQ_DELAY rather than INTQ. */ if (this.xcsr & PDP11.DL11.XCSR.READY) { if (data & PDP11.DL11.XCSR.TIE) { diff --git a/versions/pdpjs/1.30.3/pdp11-dbg.js b/versions/pdpjs/1.30.3/pdp11-dbg.js index 871b63de7..6a58ba7bf 100644 --- a/versions/pdpjs/1.30.3/pdp11-dbg.js +++ b/versions/pdpjs/1.30.3/pdp11-dbg.js @@ -40,8 +40,8 @@ function wa(a,b){return(a+" ").slice(0,b) function za(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function Ca(a,b,c,d){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="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));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={da:null,ga:null,La:null,Ka: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.La=g.load;d.Ka=g.exec;if(e=g.bytes)d.da=e;else if(e=g.words)for(d.da=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.da=Array(4*e.length),f=c=0;c>8&255,d.da[f++]=e[c]>>16&255,d.da[f++]=e[c]>>24&255;else d.da=g;d.ga=g.symbols;d.da.length?1==d.da.length&&(q(d.da[0]),d=null):(q("Empty resource: "+a),d=null)}catch(h){q("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.La=g.load;d.Ka=g.exec;if(e=g.bytes)d.ea=e;else if(e=g.words)for(d.ea=Array(2*e.length),f=c=0;c>8&255;else if(e=g.data)for(d.ea=Array(4*e.length),f=c=0;c>8&255,d.ea[f++]=e[c]>>16&255,d.ea[f++]=e[c]>>24&255;else d.ea=g;d.ga=g.symbols;d.ea.length?1==d.ea.length&&(q(d.ea[0]),d=null):(q("Empty resource: "+a),d=null)}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca;a++)this.g["S"+a]=[0,0,!1,!1,this.hd,a]}z(Cb);var Db=7;function Eb(a,b){return a.g[b]&&a.g[b][1]}k=Cb.prototype;k.reset=function(){this.stop()}; k.sa=function(a,b,c,d){if(this.C&&this.C.sa(a,b,c,d)||this.b&&this.b.sa(a,b,c,d)||this.i&&this.i.sa(a,b,c,d))return!0;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":return this.G[b]=c,this.H++,!0;default:return"led"==a||"rled"==a?(this.G[b]=c,this.B[b]=d?1:0,this.H++,!0):"switch"==a?(void 0===this.g[b]&&(this.g[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(){Fb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Gb(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Fb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Gb(a,b)}}(this,b),!0):this.parent.sa.call(this,a,b,c,d)}};k.Ea=function(a,b,c,d){this.C=a;this.v=b;this.b=c;this.i=d;Hb(b,this,Ib);Jb(b,this.reset.bind(this));Kb(this);Lb(this)};k.Ga=function(a,b){b||(Mb(),this.reset());return!0};k.Fa=function(){return!0}; -function Nb(a,b,c){if(a=a.G[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Kb(a,b){for(var c in a.B)Nb(a,c,null!=b?b:a.B[c])}function Ob(a,b,c){if(a=a.G[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Lb(a){for(var b in a.g)Ob(a,b,a.g[b][1])}function ac(a,b,c,d){a.G[b]&&(void 0===c&&(yb(a,"Value for "+b+" is invalid"),a.b.fa()),c=8==(a.i&&a.i.ca||8)?qa(c,d):p(c,d),a.G[b].textContent!=c&&(a.G[b].textContent=c))} -function Fb(a,b){var c=a.g[b];Ob(a,b,c[1]=1-c[1]);c[3]=!0;c[4]&&c[4].call(a,c[1],c[5]);"STEP"!=b&&(a.L="DEP"==b,a.M="EXAM"==b)}function Gb(a,b){var c=a.g[b];c[2]&&c[3]&&(Ob(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5]));c[3]=!1}k.fd=function(a){a||this.b.w.W||(this.v.reset(),bc(this.b),Eb(this,"ENABLE")&&this.b.hb())};k.gd=function(){};k.bd=function(a){a||this.b.fa()}; +function Nb(a,b,c){if(a=a.G[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Kb(a,b){for(var c in a.B)Nb(a,c,null!=b?b:a.B[c])}function Ob(a,b,c){if(a=a.G[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Lb(a){for(var b in a.g)Ob(a,b,a.g[b][1])}function ac(a,b,c,d){a.G[b]&&(void 0===c&&(yb(a,"Value for "+b+" is invalid"),a.b.da()),c=8==(a.i&&a.i.ca||8)?qa(c,d):p(c,d),a.G[b].textContent!=c&&(a.G[b].textContent=c))} +function Fb(a,b){var c=a.g[b];Ob(a,b,c[1]=1-c[1]);c[3]=!0;c[4]&&c[4].call(a,c[1],c[5]);"STEP"!=b&&(a.L="DEP"==b,a.M="EXAM"==b)}function Gb(a,b){var c=a.g[b];c[2]&&c[3]&&(Ob(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5]));c[3]=!1}k.fd=function(a){a||this.b.w.W||(this.v.reset(),bc(this.b),Eb(this,"ENABLE")&&this.b.hb())};k.gd=function(){};k.bd=function(a){a||this.b.da()}; k.$c=function(a){if(!a&&!this.b.w.W)if(Eb(this,"ENABLE"))this.b.hb();else{if((a=this.i)&&!vb(a,!0))ub(a,!0),a.ib(0),ub(a,!1);else try{var b=this.b.ib(1);0a.b.cb?8:16,c=65472<=a.f&&a.f<65472+b,b=c?1:2,c=c?15:a.v.Na;Eb(a,"STEP")||(b=-b);hc(a,a.f&~c|a.f+b&c)} function hc(a,b){a.f=b&a.v.Na;b=a.f;for(var c=0;22>c;c++)jc(a,"A"+c,b&1<c;c++)jc(a,"D"+c,b&1<c;c++)a.g["S"+c][1]=b&1<>>a.ja;0>>=a.ja;0>>=a.ja;0>>this.ja].Vb(a&this.v,a)};k.Ub=function(a){3932160<=a&&(a=Cc(this.b,a));this.f=!1;this.la++;a=this.Y[(a&this.Na)>>>this.ja].gc(a&this.v,a);this.la--;return a}; k.na=function(a){3932160<=a&&(a=Cc(this.b,a));return this.Y[(a&this.Na)>>>this.ja].ra(a&this.v,a)};k.bb=function(a){3932160<=a&&(a=Cc(this.b,a));var b=a&this.v,c=(a&this.Na)>>>this.ja;this.f=!1;this.la++;a=this.Y[c].hc(b,a);this.la--;return a};k.Ab=function(a,b){3932160<=a&&(a=Cc(this.b,a));this.Y[(a&this.Na)>>>this.ja].Yb(a&this.v,b&255,a)};k.rb=function(a,b){3932160<=a&&(a=Cc(this.b,a));this.f=!1;this.la++;this.Y[(a&this.Na)>>>this.ja].Zb(a&this.v,b&255,a);this.la--}; k.gb=function(a,b){3932160<=a&&(a=Cc(this.b,a));this.Y[(a&this.Na)>>>this.ja].Pb(a&this.v,b&65535,a)};k.Bb=function(a,b){3932160<=a&&(a=Cc(this.b,a));var c=a&this.v,d=(a&this.Na)>>>this.ja;this.f=!1;this.la++;this.Y[d].mc(c,b&65535,a);this.la--}; -function Dc(a){for(var b=0,c=[],d=0;da.b.cb)){var l=h[0]?h[0].bind(b):null,m=h[1]?h[1].bind(b):null,n=h[2]?h[2].bind(b):null,v=h[3]?h[3].bind(b):null,r=h[5]||1;65472<=g&&65487>=g&&(!l&&n&&(l=function(a){return function(b){return a(b)&255}.bind(b)}(n)),!m&&v&&(m=function(a){return function(b,c){return a(b,c)}.bind(b)}(v)));for(var w=h[4],y=0;ya.b.cb)){var l=h[0]?h[0].bind(b):null,m=h[1]?h[1].bind(b):null,n=h[2]?h[2].bind(b):null,v=h[3]?h[3].bind(b):null,r=h[5]||1;65472<=g&&65487>=g&&(!l&&n&&(l=function(a){return function(b){return a(b)&255}.bind(b)}(n)),!m&&v&&(m=function(a){return function(b,c){return a(b,c)}.bind(b)}(v)));for(var w=h[4],y=0;y>5&3;b.jb=a>>1&15;var c=0;a&257&&(c=4,a&1&&(c|=2));b.Va!=c&&(b.Va=c,Sc(b))}};k.vd=function(){var a=this.b;a.J&57344||(a.Ac=a.S&65535);a=a.Ac;a&65280&&(a=(a<<8|a>>8)&65535);return a};k.wd=function(){var a=this.b;a.J&57344||(a.Bc=a.Ib);return a.Bc};k.xd=function(){return this.b.qb};k.pe=function(a){var b=this.b;1170>b.cb&&(a&=-49);b.qb!=a&&(b.qb=a,b.Ja=a&16?4194303:262143,Sc(b))}; k.Yd=function(a){a=a>>1&63;var b=this.b.Nb[a>>1];return a&1?b>>16:b&65535};k.Qe=function(a,b){b=b>>1&63;var c=b>>1;this.b.Nb[c]=b&1?this.b.Nb[c]&65535|(a&63)<<16:this.b.Nb[c]&-65536|a&65534};k.Rd=function(a){return this.b.V[1][a>>1&7]};k.Je=function(a,b){this.b.V[1][b>>1&7]=a&65295};k.Pd=function(a){return this.b.V[1][(a>>1&7)+8]};k.He=function(a,b){this.b.V[1][(b>>1&7)+8]=a&65295};k.Qd=function(a){return this.b.ya[1][a>>1&7]};k.Ie=function(a,b){b=b>>1&7;this.b.ya[1][b]=a;this.b.V[1][b]&=65295}; @@ -100,29 +100,29 @@ function I(a,b,c,d,e,f){this.v=a;this.id=Zc+=2;this.b=null;this.F=b;this.Ob=c;th 2);for(f=0;f>2),b=0;b>8,c)},S:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ca:function(a,b){a&1&&this.v.Da(b,64,2);b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+ -1]&255)<<8},Za:function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<>8);this.Ta=!0},O:function(a,b){if(this.i&&null!=this.F){var c=this.i;id(c,this.F+a,1,c.M)&&c.fa(!0)}return this.gc(a,b)},$:function(a,b){if(this.i&&null!=this.F){var c=this.i;id(c,this.F+a,2,c.M)&&c.fa(!0)}return this.hc(a,b)},ka:function(a, -b,c){if(this.i&&null!=this.F){var d=this.i;id(d,this.F+a,1,d.D)&&d.fa(!0)}this.f?this.B(a,b,c):this.Zb(a,b,c)},wa:function(a,b,c){if(this.i&&null!=this.F){var d=this.i;id(d,this.F+a,2,d.D)&&d.fa(!0)}this.f?this.B(a,b,c):this.mc(a,b,c)},M:function(a){return this.G[a]},R:function(a,b){a=this.G[a];this.i&&F(this.i,128)&&E(this.i,"Memory.readByte("+J(this.i,b)+"): "+J(this.i,a),!0);return a},X:function(a,b){a&1&&this.v.Da(b,64,2);return this.D.getUint16(a,!0)},Qa:function(a,b){a&1&&this.v.Da(b,64,2); +1]&255)<<8},Za:function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<>8);this.Ta=!0},O:function(a,b){if(this.i&&null!=this.F){var c=this.i;id(c,this.F+a,1,c.M)&&c.da(!0)}return this.gc(a,b)},$:function(a,b){if(this.i&&null!=this.F){var c=this.i;id(c,this.F+a,2,c.M)&&c.da(!0)}return this.hc(a,b)},ka:function(a, +b,c){if(this.i&&null!=this.F){var d=this.i;id(d,this.F+a,1,d.D)&&d.da(!0)}this.f?this.B(a,b,c):this.Zb(a,b,c)},wa:function(a,b,c){if(this.i&&null!=this.F){var d=this.i;id(d,this.F+a,2,d.D)&&d.da(!0)}this.f?this.B(a,b,c):this.mc(a,b,c)},M:function(a){return this.G[a]},R:function(a,b){a=this.G[a];this.i&&F(this.i,128)&&E(this.i,"Memory.readByte("+J(this.i,b)+"): "+J(this.i,a),!0);return a},X:function(a,b){a&1&&this.v.Da(b,64,2);return this.D.getUint16(a,!0)},Qa:function(a,b){a&1&&this.v.Da(b,64,2); a=this.I[a>>1];this.i&&F(this.i,128)&&E(this.i,"Memory.readWord("+J(this.i,b)+"): "+J(this.i,a),!0);return a},ia:function(a,b){this.G[a]=b;this.Ta=!0},pa:function(a,b,c){this.G[a]=b;this.Ta=!0;this.i&&F(this.i,128)&&E(this.i,"Memory.writeByte("+J(this.i,c)+","+J(this.i,b)+")",!0)},va:function(a,b,c){a&1&&this.v.Da(c,64,4);this.D.setUint16(a,b,!0);this.Ta=!0},xa:function(a,b,c){a&1&&this.v.Da(c,64,4);this.I[a>>1]=b;this.Ta=!0;this.i&&F(this.i,128)&&E(this.i,"Memory.writeWord("+J(this.i,c)+","+J(this.i, b)+")",!0)}};function sc(a,b,c){a.i=b;a.g=a.C=0;c&&((a.g=c.g)&&hd(a,gd,!1),(a.C=c.C)&&fd(a,gd,!1))}function jd(a,b){b?--a.C||(a.Yb=a.f?a.B:a.Zb,a.Pb=a.f?a.H:a.mc):--a.g||(a.Vb=a.gc,a.ra=a.hc)}function fd(a,b,c){c&&a.C||(a.Yb=!a.f&&b[1]||a.B,a.Pb=!a.f&&b[3]||a.H);if(c||void 0===c)a.Zb=b[1]||a.B,a.mc=b[3]||a.H}function hd(a,b,c){c&&a.g||(a.Vb=b[0]||a.J,a.ra=b[2]||a.L);if(c||void 0===c)a.gc=b[0]||a.J,a.hc=b[2]||a.L}function bd(a,b){b||(b=kd);hd(a,b,void 0);fd(a,b,void 0)} var kd=[],ed=[I.prototype.S,I.prototype.Za,I.prototype.ca,I.prototype.Ja],gd=[I.prototype.O,I.prototype.ka,I.prototype.$,I.prototype.wa];if(zb)var dd=[I.prototype.M,I.prototype.ia,I.prototype.X,I.prototype.va],cd=[I.prototype.R,I.prototype.pa,I.prototype.Qa,I.prototype.xa]; function ld(a,b){t.call(this,"CPU",a,ld,1);var c=a.multiplier||1;this.nb=a.cycles||b;this.eb=c;this.Fb=Math.round(this.nb/1E4)/100;this.pb=this.Fb*this.eb;this.w.W=!1;this.w.Xb=!1;this.w.tb=a.autoStart;this.w.ub=!1;this.Kb=this.va=0;this.Lb=a.csStart;this.vb=a.csInterval;this.wb=a.csStop;this.L=[];this.zc=this.be.bind(this);H(this)}z(ld);var md=["power","reset"];k=ld.prototype; k.Ea=function(a,b,c,d){this.C=a;this.v=b;this.i=d;this.B=a.B;for(b=0;b=a.va&&(a.va+=a.vb,c=!0);0<=a.wb&&a.wb<=sd(a)&&(a.vb=a.wb=-1,pd(a),a.fa(),c=!0);c&&a.j(sd(a)+" cycles: checksum="+p(a.Kb))}} -k.sa=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.C)if(a=d.C,a.w.ha)a=!0;else{var b=null,c,h=rb(a.id);for(c=0;c=a.va&&(a.va+=a.vb,c=!0);0<=a.wb&&a.wb<=sd(a)&&(a.vb=a.wb=-1,pd(a),a.da(),c=!0);c&&a.j(sd(a)+" cycles: checksum="+p(a.Kb))}} +k.sa=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.C)if(a=d.C,a.w.ha)a=!0;else{var b=null,c,h=rb(a.id);for(c=0;ca.ca/a.pb?b=1:d=!0;a.eb=b;b=a.Fb*a.eb;if(a.pb!=b){a.pb=b;b=a.pb.toFixed(2)+"Mhz";var e=a.G.setSpeed;e&&(e.textContent=b);a.j("target speed: "+b)}c&&a.C&&a.C.sb()}dc(a,a.$);a.$=0;a.X=Aa();a.ia=0;ud(a);return d}function Nc(a,b){var c=a.L.length;a.L.push([-1,b]);return c}function Pc(a,b,c,d){0<=b&&ba.L[b][0])&&(c=a.nb*a.eb/1E3*c|0,a.w.W&&(c+=vd(a)),a.L[b][0]=c)} function wd(a,b){for(var c=a.L.length-1;0<=c;c--){var d=a.L[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function cc(a,b){for(var c=a.L.length-1;0<=c;c--){var d=a.L[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function vd(a,b){var c=a.ka-=a.b;a.b=a.I=0;b&&(a.ka=0);return c} -k.be=function(){if(this.w.W){this.Gb>=this.nb&&ud(this,!0);this.Ra=0;this.lb=Aa();if(this.ia){var a=this.lb-this.ia;a>this.wc&&(this.X+=a,this.X>this.lb&&(this.X=this.lb))}try{do{var b=wd(this,this.w.ub?1:this.ob);try{this.ib(b)}catch(e){if("number"!=typeof e)throw e;}b=vd(this,!0);this.Ra+=b;this.$+=b;ec(this,b);cc(this,b);this.wa-=b;if(0>=this.wa){this.wa+=this.ob;15<=++this.yc&&(this.oa(),this.yc=0);break}}while(this.w.W)}catch(e){this.fa();this.C&&this.C.stop(Aa(),sd(this));yb(this,e.stack||e.message); +k.be=function(){if(this.w.W){this.Gb>=this.nb&&ud(this,!0);this.Ra=0;this.lb=Aa();if(this.ia){var a=this.lb-this.ia;a>this.wc&&(this.X+=a,this.X>this.lb&&(this.X=this.lb))}try{do{var b=wd(this,this.w.ub?1:this.ob);try{this.ib(b)}catch(e){if("number"!=typeof e)throw e;}b=vd(this,!0);this.Ra+=b;this.$+=b;ec(this,b);cc(this,b);this.wa-=b;if(0>=this.wa){this.wa+=this.ob;15<=++this.yc&&(this.oa(),this.yc=0);break}}while(this.w.W)}catch(e){this.da();this.C&&this.C.stop(Aa(),sd(this));yb(this,e.stack||e.message); return}if(this.w.W){a=setTimeout;b=this.zc;this.ia=Aa();var c=this.wc;this.Ra&&(c=Math.round(c*this.Ra/this.ob));var c=c-(this.ia-this.lb),d=this.ia-this.X;d&&(this.ca=Math.round(this.$/(10*d))/100,864E5<=d&&(this.pa=0,td(this)));if(0>c||this.cac&&(this.X-=c),c=0;this.Gb+=this.Ra;this.ia+=c;a(b,c)}}}; -k.hb=function(a){if(xb(this))return!1;if(this.w.W)return this.j(this.toString()+" busy"),!1;td(this);this.w.W=!0;this.w.Xb=!0;var b=this.G.run;b&&(b.textContent="Halt");this.C&&(a&&this.C.sb(!0),this.C.start(this.X,sd(this)));setTimeout(this.zc,0);return!0};k.ib=function(){return 0};k.fa=function(a){var b=!1;if(this.w.W){vd(this);dc(this,this.$);this.$=0;this.w.W=!1;if(b=this.G.run)b.textContent="Run";this.C&&this.C.stop(Aa(),sd(this));b=!0}this.w.complete=a;return b}; -function xd(a){this.cb=+a.model||1170;this.Tb=a.addrReset||0;ld.call(this,a,6666667);this.decode=1120==this.cb?yd.bind(this):zd.bind(this);Ad(this);this.M=0;this.O=null;this.w.complete=!1}z(xd,ld);k=xd.prototype;k.reset=function(){this.status("model "+this.cb);this.w.W&&this.fa();Ad(this);od(this);this.w.error=!1;this.parent.reset.call(this)}; +k.hb=function(a){if(xb(this))return!1;if(this.w.W)return this.j(this.toString()+" busy"),!1;td(this);this.w.W=!0;this.w.Xb=!0;var b=this.G.run;b&&(b.textContent="Halt");this.C&&(a&&this.C.sb(!0),this.C.start(this.X,sd(this)));setTimeout(this.zc,0);return!0};k.ib=function(){return 0};k.da=function(a){var b=!1;if(this.w.W){vd(this);dc(this,this.$);this.$=0;this.w.W=!1;if(b=this.G.run)b.textContent="Run";this.C&&this.C.stop(Aa(),sd(this));b=!0}this.w.complete=a;return b}; +function xd(a){this.cb=+a.model||1170;this.Tb=a.addrReset||0;ld.call(this,a,6666667);this.decode=1120==this.cb?yd.bind(this):zd.bind(this);Ad(this);this.M=0;this.O=null;this.w.complete=!1}z(xd,ld);k=xd.prototype;k.reset=function(){this.status("model "+this.cb);this.w.W&&this.da();Ad(this);od(this);this.w.error=!1;this.parent.reset.call(this)}; function Ad(a){a.T=65536;a.U=32768;a.aa=65535;a.Z=32768;a.N=15;a.u=[0,0,0,0,0,0,0,a.Tb];a.Xa=[0,0,0,0,0,0];a.Ia=[0,0,0,0];a.A=0;a.jb=0;a.Xc=[4,2,0,1];a.V=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];a.ya=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];a.Nb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0];a.Gc=[0,0,0,0,0,0,0,0];a.Fc=0;a.K=0;a.D=a.H=0;a.g=a.f=a.Eb=0;a.xa=-1;bc(a)}function bc(a){a.Wb=255;a.Ha=0;a.jc=0;a.J=0;a.Ac=0;a.Bc=0;a.qb=0;a.Va=0;a.kb=0;a.Ja=262143;a.S=0;a.Ib=0;a.O=null;a.v&&Sc(a)}function Sc(a){a.Va?(a.R=65536,a.ba=a.Vc,a.ra=a.Zd,a.Pb=a.Re,uc(a.v,a.qb&16?22:18)):(a.R=0,a.ba=a.Uc,a.ra=a.Ec,a.Pb=a.Lc,uc(a.v,16))}k.sc=function(){return 0};k.save=function(){var a=new N(this);a.set(0,[]);a.set(1,[this.pa,this.eb]);a.set(2,Dc(this.v));return a.data()}; k.restore=function(a){var b=a[1];this.pa=b[1];td(this,b[3]);a:{b=this.v;a=a[2];var c;for(c=0;c>14&3;c=a.N>>14&3;a.A!=c&&(a.Ia[c]=a.u[6],a.u[6]=a.Ia[a.A]);a.N=b;a.K|=2}function Q(a,b){a.K&128||(a.Z=a.aa=b,a.U=0)}function Id(a,b,c){a.K&128||(a.Z=a.aa=a.T=b,a.U=c||0)} -function de(a,b,c,d){a.K&128||(a.Z=a.aa=a.T=b,a.U=(c^b)&(d^b))}function ee(a,b){a.K&128||(a.Z=a.aa=a.T=b,a.U=a.Z^a.T>>1)}function fe(a,b,c,d){a.K&128||(a.Z=a.aa=a.T=b,a.U=(c^d)&(d^b))} +function Jd(a,b,c,d){a.K&128||(a.Z=a.aa=a.T=b,a.U=(c^b)&(d^b))}function ee(a,b){a.K&128||(a.Z=a.aa=a.T=b,a.U=a.Z^a.T>>1)}function fe(a,b,c,d){a.K&128||(a.Z=a.aa=a.T=b,a.U=(c^d)&(d^b))} k.ta=function(a,b,c){if(!this.M){0>this.xa?this.xa=Tc(this):this.A||(a=4,this.Ha|=4,this.u[6]=4,c=-3);this.Ib=a;this.A=this.S=0;var d=this.ra(a|this.R),e=this.ra(a+2&65535|this.R);Uc(this,e&-12289|this.xa>>2&12288);ge(this,this.xa);ge(this,this.u[7]);O(this,d);this.K&=~(b|18);this.K|=9;this.xa=-1;this.jd=a;this.Zc=c;if(-3<=c)throw a;}};function he(a){var b=ie(a),c=ie(a)&-1793;a.N&49152&&(c=c&-225|a.N&63712);O(a,b);Uc(a,c);a.K&=-17} function Cc(a,b){var c=b>>13&31;31>c&&a.qb&32&&(b=a.Nb[c]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)"));return b} function je(a,b,c){var d,e,f;if(!(c&a.Va))return b;d=b>>13;a.qb&a.Xc[a.A]||(d&=7);e=a.V[a.A][d];f=(a.ya[a.A][d]<<6)+(b&8191)&a.Ja;var g=0;switch(e&7){case 1:g=4096;case 2:e|=128;c&4&&(g=8192);break;case 4:g=4096;case 5:c&4&&(g=4096);case 6:e|=c&4?192:128;break;default:g=32768}32512!=(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(g|=16384):(b&8128)>(e>>2&8128)&&(g|=16384));a.V[a.A][d]=e;if(f!=(4194170&a.Ja)||a.A)a.kb=a.A,a.jb=d;b=!1;g&&(g&57344&&(0<=a.xa&&(g|=128),a.J&57344||(a.J=a.J|g|a.kb<<5|a.jb<< @@ -134,41 +134,42 @@ function ne(a,b,c){var d=a.f=b&7;(b=a.g=(b&56)>>3)?(d=me(a,b,d,2),c&65536||61440 function pe(a,b){b>>=6;var c=a.H=b&7;return(b=a.D=(b&56)>>3)?ke(a,a.ba(b,c,3)):-c-1}function qe(a,b){var c;b>>=6;var d=a.H=b&7;(b=a.D=(b&56)>>3)?c=a.v.na(a.ba(b,d,2)):c=-d-1;return c}function re(a,b){var c=a.f=b&7;b=a.g=(b&56)>>3;return me(a,b,c,8)}function se(a,b){var c=a.f=b&7;return(b=a.g=(b&56)>>3)?ke(a,a.ba(b,c,3)):a.u[c]&255}function te(a,b){var c=a.f=b&7;return(b=a.g=(b&56)>>3)?a.v.na(a.ba(b,c,2)):a.u[c]} function R(a,b,c,d){var e=a.f=b&7;(b=a.g=(b&56)>>3)?(e=a.Eb=a.ba(b,e,7),c=0>c?a.u[-c-1]&255:c,c=d.call(a,c,ke(a,e)),e&1&&a.b--,a.v.Ab(e,c)):(b=a.u[e],c=0>c?a.u[-c-1]&255:c,a.u[e]=b&65280|d.call(a,c,b&255))}function S(a,b,c,d){var e=a.f=b&7;(b=a.g=(b&56)>>3)?(e=a.ba(b,e,6),a.v.gb(e,d.call(a,0>c?a.u[-c-1]:c,a.v.na(e)))):a.u[e]=d.call(a,0>c?a.u[-c-1]:c,a.u[e])} function ue(a,b,c,d){var e=a.f=b&7;(b=a.g=(b&56)>>3)?(d=a.ba(b,e,5),e=c=0>c?a.u[-c-1]&255:c,d&1&&a.b--,a.v.Ab(d,e)):c?(c=0>c?a.u[-c-1]&255:c,a.u[e]=a.u[e]&~d|c<<24>>24&d):a.u[e]&=~d;return c}function ve(a,b,c){var d=a.f=b&7;(b=a.g=(b&56)>>3)?(d=a.ba(b,d,4),a.v.gb(d,c=0>c?a.u[-c-1]:c)):a.u[d]=c=0>c?a.u[-c-1]:c;return c}function T(a,b,c){c&&(O(a,a.u[7]+(b<<24>>23)),a.b-=2);a.b-=3} -k.ib=function(a){this.w.complete=!0;var b=this.i&&we(this.i)?1:this.w.Xb?-1:0,c=a?this.w.Xb?0:1:-1;this.w.Xb=!1;this.ka=this.b=a;do{if(b){if(this.i&&xe(this.i,this.u[7],c)){this.fa();break}c||c++;b++}if(this.K){if(a=this.K&7){a=!1;if(this.K&2){this.K&=-3;var d=160,e=(this.jc&224)>>5,f=this.O&&this.O.xb>e?this.O:null;f&&(d=f.de,e=f.xb);e>(this.N&224)>>5?(this.K&4&&(Fd(this,2),this.K&=-5),this.ta(d,0,-9),e=!0):e=!1;e&&(f&&Gd(this,f),a=!0)}else this.K&1&&this.K++;a=a&&0>c}if(a)break;if(this.K&112&&Hd(this)&& -0>c)break}this.K=this.K&7|this.N&16;this.decode(Ed(this))}while(0>1|b<<16;ee(this,a);return a&65535}function De(a,b){a=b&128|b>>1|b<<8;ee(this,a<<8);return a&255}function Ee(a,b){a=b&~a;Q(this,a);return a}function Fe(a,b){a=b&~a;Q(this,a<<8);return a}function Ge(a,b){a|=b;Q(this,a);return a}function He(a,b){a|=b;Q(this,a<<8);return a}function Ie(a,b){a=~b|65536;Id(this,a);return a&65535}function Je(a,b){a=~b|256;Id(this,a<<8);return a&255}function Ke(a,b){a=b-a;this.K&128||(this.Z=this.aa=a,this.U=b&(b^a));return a&65535} -function Le(a,b){a=b-a;var c=a<<8;b<<=8;this.K&128||(this.Z=this.aa=c,this.U=b&(b^c));return a&255}function Me(a,b){a=b+a;this.K&128||(this.Z=this.aa=a,this.U=a&(b^a));return a&65535}function Ne(a,b){a=b+a;var c=a<<8;this.K&128||(this.Z=this.aa=c,this.U=c&(b<<8^c));return a&255}function Oe(a,b){a=-b;Id(this,a,a&b&32768);return a&65535}function Pe(a,b){a=-b;Id(this,a<<8,(a&b&128)<<8);return a&255}function Qe(a,b){a=b<<1|this.T>>16&1;ee(this,a);return a&65535} -function Re(a,b){a=b<<1|this.T>>16&1;ee(this,a<<8);return a&255}function Se(a,b){a=(this.T&65536|b)>>1|b<<16;ee(this,a);return a&65535}function Te(a,b){a=((this.T&65536)>>8|b)>>1|b<<8;ee(this,a<<8);return a&255}function Ue(a,b){var c=b-a;fe(this,c,a,b);return c&65535}function Ve(a,b){var c=b-a;fe(this,c<<8,a<<8,b<<8);return c&255}function We(a,b){this.K&128||(this.Z=this.aa=b&65280,this.U=this.T=0);return(b<<8|b>>8)&65535}function Xe(a,b){a^=b;Q(this,a);return a&65535} -function Ye(a){S(this,a,qe(this,a),ye);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)}function Ze(a){var b=te(this,a);a=a>>6&7;var c=this.u[a];c&32768&&(c|=4294901760);this.T=this.U=0;b&=63;if(b&32)b=64-b,16>=b;else if(b)if(16>15&65535;d&&65535!==d&&(this.U=32768)}this.u[a]=c&65535;this.Z=this.aa=c;this.b-=(this.g?6:7)+b} +k.ib=function(a){this.w.complete=!0;var b=this.i?we(this.i)?1:this.w.Xb?-1:0:0,c=a?this.w.Xb?0:1:-1;this.w.Xb=!1;this.ka=this.b=a;do{if(b){if(xe(this.i,this.u[7],c)){this.da();break}c||c++;b++}if(this.K){if(a=this.K&7)if(a=!1,this.K&2){this.K&=-3;var d=160,e=(this.jc&224)>>5,f=this.O&&this.O.xb>e?this.O:null;f&&(d=f.de,e=f.xb);e>(this.N&224)>>5?(this.K&4&&(Fd(this,2),this.K&=-5),this.ta(d,0,-9),e=!0):e=!1;e&&(f&&Gd(this,f),a=!0)}else this.K&1&&this.K++;if(a){if(b&&xe(this.i,this.u[7],c)){this.da(); +break}if(0>c)break}if(this.K&112&&Hd(this)){if(b&&xe(this.i,this.u[7],c)){this.da();break}if(0>c)break}}this.K=this.K&7|this.N&16;this.decode(Ed(this))}while(0>1|b<<16;ee(this,a);return a&65535}function De(a,b){a=b&128|b>>1|b<<8;ee(this,a<<8);return a&255}function Ee(a,b){a=b&~a;Q(this,a);return a}function Fe(a,b){a=b&~a;Q(this,a<<8);return a}function Ge(a,b){a|=b;Q(this,a);return a}function He(a,b){a|=b;Q(this,a<<8);return a}function Ie(a,b){a=~b|65536;Id(this,a);return a&65535} +function Je(a,b){a=~b|256;Id(this,a<<8);return a&255}function Ke(a,b){a=b-a;this.K&128||(this.Z=this.aa=a,this.U=b&(b^a));return a&65535}function Le(a,b){a=b-a;var c=a<<8;b<<=8;this.K&128||(this.Z=this.aa=c,this.U=b&(b^c));return a&255}function Me(a,b){a=b+a;this.K&128||(this.Z=this.aa=a,this.U=a&(b^a));return a&65535}function Ne(a,b){a=b+a;var c=a<<8;this.K&128||(this.Z=this.aa=c,this.U=c&(b<<8^c));return a&255}function Oe(a,b){a=-b;Id(this,a,a&b&32768);return a&65535} +function Pe(a,b){a=-b;Id(this,a<<8,(a&b&128)<<8);return a&255}function Qe(a,b){a=b<<1|this.T>>16&1;ee(this,a);return a&65535}function Re(a,b){a=b<<1|this.T>>16&1;ee(this,a<<8);return a&255}function Se(a,b){a=(this.T&65536|b)>>1|b<<16;ee(this,a);return a&65535}function Te(a,b){a=((this.T&65536)>>8|b)>>1|b<<8;ee(this,a<<8);return a&255}function Ue(a,b){var c=b-a;fe(this,c,a,b);return c&65535}function Ve(a,b){var c=b-a;fe(this,c<<8,a<<8,b<<8);return c&255} +function We(a,b){this.K&128||(this.Z=this.aa=b&65280,this.U=this.T=0);return(b<<8|b>>8)&65535}function Xe(a,b){a^=b;Q(this,a);return a&65535}function Ye(a){S(this,a,qe(this,a),ye);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)} +function Ze(a){var b=te(this,a);a=a>>6&7;var c=this.u[a];c&32768&&(c|=4294901760);this.T=this.U=0;b&=63;if(b&32)b=64-b,16>=b;else if(b)if(16>15&65535;d&&65535!==d&&(this.U=32768)}this.u[a]=c&65535;this.Z=this.aa=c;this.b-=(this.g?6:7)+b} function $e(a){var b=te(this,a);a=a>>6&7;var c=this.u[a]<<16|this.u[a|1];this.T=this.U=0;b&=63;if(b&32){b=64-b;32>b-1;this.T=d<<16;d>>=1;c&2147483648&&(d|=4294967295<<32-b)}else b?(d=c<>15,d<<=1,32>=32-b)&&4294967295!==(c|4294967295<>16&65535;this.u[a|1]=d&65535;this.Z=d>>16;this.aa=d>>16|d;this.b-=(this.g?6:7)+b}function af(a){T(this,a,!Bd(this))}function bf(a){T(this,a,Bd(this))} function cf(a){S(this,a,qe(this,a),Ee);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)}function df(a){R(this,a,pe(this,a),Fe);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)}function ef(a){S(this,a,qe(this,a),Ge);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)}function ff(a){R(this,a,pe(this,a),He);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)} function gf(a){var b=qe(this,a);a=te(this,a);Q(this,(0>b?this.u[-b-1]:b)&a);this.b-=this.g?4+(this.H&&6<=this.f?1:0):(this.D?4:3)+(7==this.f?2:0)}function hf(a){var b=pe(this,a);a=se(this,a);Q(this,((0>b?this.u[-b-1]&255:b)&a)<<8);this.b-=this.g?4+(this.H&&6<=this.f?1:0):(this.D?4:3)+(7==this.f?2:0)}function jf(a){T(this,a,Dd(this))}function kf(a){T(this,a,!this.Ua()==!Cd(this))}function lf(a){T(this,a,!Dd(this)&&!this.Ua()==!Cd(this))}function mf(a){T(this,a,!Bd(this)&&!Dd(this))} function nf(a){T(this,a,Dd(this)||!this.Ua()!=!Cd(this))}function of(a){T(this,a,Bd(this)||Dd(this))}function pf(a){T(this,a,!this.Ua()!=!Cd(this))}function qf(a){T(this,a,this.Ua())}function rf(a){T(this,a,!Dd(this))}function sf(a){T(this,a,!this.Ua())}function tf(){this.ta(12,0,-8);this.b-=5}function uf(a){T(this,a,!0)}function vf(a){T(this,a,!Cd(this))}function wf(a){T(this,a,Cd(this))}function U(a){a&1&&(this.T=0);a&2&&(this.U=0);a&4&&(this.aa=1);a&8&&(this.Z=0);this.b-=5} function xf(a){var b=qe(this,a);a=te(this,a);var c=(b=0>b?this.u[-b-1]:b)-a;fe(this,c,a,b);this.b-=this.g?4+(this.H&&6<=this.f?1:0):(this.D?4:3)+(7==this.f?2:0)}function yf(a){var b=pe(this,a);a=se(this,a);var c=(b=(0>b?this.u[-b-1]&255:b)<<8)-(a<<=8);fe(this,c,a,b);this.b-=this.g?4+(this.H&&6<=this.f?1:0):(this.D?4:3)+(7==this.f?2:0)} function zf(a){var b=te(this,a);if(b){a=a>>6&7;var c=this.u[a]<<16|this.u[a|1];this.T=this.U=0;b&32768&&(b|=-65536);var d=~~(c/b);-32768<=d&&32767>=d?(this.u[a]=d&65535,this.u[a|1]=c-d*b&65535,this.aa=d>>16|d,this.Z=d>>16):(this.U=32768,this.aa=d>>15|d,this.Z=c>>16,-1===b&&65534===this.u[a]&&(this.u[a]=this.u[a|1]=1));this.b-=53}else this.aa=this.Z=0,this.U=32768,this.T=65536,this.b-=7}function Af(){this.ta(24,0,-8);this.b-=25} -function Bf(){this.N&49152?(this.Ha|=128,this.ta(4,0,-7)):(this.B&&this.B.setData(this.u[0],!0),this.i?Cf(this.i):this.fa());this.b-=7}function Df(){this.ta(16,0,-8);this.b-=25}var Ef=[0,7,7,10,7,11,9,13];function Ff(a){this.I=this.b;O(this,re(this,a));this.b=this.I-Ef[this.g]}var Gf=[0,14,14,17,14,18,16,20];function Hf(a){this.I=this.b;var b=re(this,a);a=a>>6&7;ge(this,this.u[a]);this.u[a]=this.u[7];O(this,b);this.b=this.I-Gf[this.g]}var If=[3,9,9,13,10,14,12,16,4,9,9,13,10,14,13,17]; +function Bf(){this.N&49152?(this.Ha|=128,this.ta(4,0,-7)):(this.B&&this.B.setData(this.u[0],!0),this.i?Cf(this.i):this.da());this.b-=7}function Df(){this.ta(16,0,-8);this.b-=25}var Ef=[0,7,7,10,7,11,9,13];function Ff(a){this.I=this.b;O(this,re(this,a));this.b=this.I-Ef[this.g]}var Gf=[0,14,14,17,14,18,16,20];function Hf(a){this.I=this.b;var b=re(this,a);a=a>>6&7;ge(this,this.u[a]);this.u[a]=this.u[7];O(this,b);this.b=this.I-Gf[this.g]}var If=[3,9,9,13,10,14,12,16,4,9,9,13,10,14,13,17]; function Jf(a){var b=qe(this,a);this.I=this.b;Q(this,ve(this,a,b));this.b=this.I-If[(this.D?8:0)+this.g]+(7!=this.f||this.g?0:2)}function Kf(a){var b=pe(this,a);Q(this,ue(this,a,b,65535)<<8);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)}var Lf=[7,13,13,17,14,18,17,21]; -function Mf(a){var b=te(this,a);a=a>>6&7;b&32768&&(b|=-65536);var c=this.u[a];c&32768&&(c|=-65536);b=~~(b*c);this.u[a]=b>>16&65535;this.u[a|1]=b&65535;this.K&128||(this.Z=b>>16,this.aa=this.Z|b,this.U=0,this.T=-32768>b||32767>6;if(this.u[b]=this.u[b]-1&65535)O(this,this.u[7]-((a&63)<<1)),this.b+=1;this.b-=6}function Sf(a){S(this,a,qe(this,a),Ue);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)} -function Tf(a){S(this,a,0,We);this.b-=this.g?9:3+(7==this.f?2:0)}function Uf(){this.ta(28,0,-8);this.b-=5}function Vf(){this.B&&(this.B.kc(this.u[7],!0),this.B.setData(this.u[0],!0));this.K|=4;Fd(this,-2);this.b-=3}function Wf(a){S(this,a,qe(this,a),Xe);this.b-=this.g?9:3+(7==this.f?2:0)}function V(a){var b;if(b=this.i)b=this.i,F(b,1)?(E(b,"undefined opcode "+J(b,a),!0,!0),b=Cf(b)):b=!1;b||this.ta(8,0,-8)}function yd(a){Xf[a>>12].call(this,a)}function Yf(a){Zf[a>>6&3].call(this,a)} -function $f(a){ag[a>>6&3].call(this,a)}function bg(a){cg[a>>6&3].call(this,a)}function dg(a){eg[a&15].call(this,a)}function fg(a){gg[a&15].call(this,a)}function hg(a){ig[a>>6&3].call(this,a)}function jg(a){kg[a>>6&3].call(this,a)}function lg(a){mg[a>>6&3].call(this,a)} +function Mf(a){var b=te(this,a);a=a>>6&7;b&32768&&(b|=-65536);var c=this.u[a];c&32768&&(c|=-65536);b=~~(b*c);this.u[a]=b>>16&65535;this.u[a|1]=b&65535;this.K&128||(this.Z=b>>16,this.aa=this.Z|b,this.U=0,this.T=-32768>b||32767>6;if(this.u[b]=this.u[b]-1&65535)O(this,this.u[7]-((a&63)<<1)),this.b+=1;this.b-=6}function Sf(a){S(this,a,qe(this,a),Ue);this.b-=this.g?9+(this.H&&6<=this.f?1:0):(this.D?5:3)+(7==this.f?2:0)}function Tf(a){S(this,a,0,We);this.b-=this.g?9:3+(7==this.f?2:0)}function Uf(){this.ta(28,0,-8);this.b-=5} +function Vf(){this.B&&(this.B.kc(this.u[7],!0),this.B.setData(this.u[0],!0));this.K|=4;Fd(this,-2);this.b-=3}function Wf(a){S(this,a,qe(this,a),Xe);this.b-=this.g?9:3+(7==this.f?2:0)}function V(a){var b;if(b=this.i)b=this.i,F(b,1)?(E(b,"undefined opcode "+J(b,a),!0,!0),b=Cf(b)):b=!1;b||this.ta(8,0,-8)}function yd(a){Xf[a>>12].call(this,a)}function Yf(a){Zf[a>>6&3].call(this,a)}function $f(a){ag[a>>6&3].call(this,a)}function bg(a){cg[a>>6&3].call(this,a)}function dg(a){eg[a&15].call(this,a)} +function fg(a){gg[a&15].call(this,a)}function hg(a){ig[a>>6&3].call(this,a)}function jg(a){kg[a>>6&3].call(this,a)}function lg(a){mg[a>>6&3].call(this,a)} var Xf=[function(a){ng[a>>8&15].call(this,a)},Jf,xf,gf,cf,ef,Ye,V,function(a){og[a>>8&15].call(this,a)},Kf,yf,hf,df,ff,Sf,V],ng=[function(a){pg[a>>4&15].call(this,a)},uf,rf,jf,kf,pf,lf,nf,Hf,Hf,Yf,$f,bg,V,V,V],Zf=[function(a){Id(this,ve(this,a,0));this.b-=this.g?9:3+(7==this.f?2:0)},function(a){S(this,a,0,Ie);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){S(this,a,1,Me);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){S(this,a,1,Ke);this.b-=this.g?9:3+(7==this.f?2:0)}],ag=[function(a){S(this,a,0, Oe);this.b-=this.g?11:6},function(a){S(this,a,Bd(this)?1:0,ye);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){S(this,a,Bd(this)?1:0,Ue);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){a=te(this,a);Id(this,a);this.b-=this.g?4:3+(7==this.f?2:0)}],cg=[function(a){S(this,a,0,Se);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){S(this,a,0,Qe);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){S(this,a,0,Ce);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){S(this,a,0,Ae);this.b-=this.g?9:3+(7==this.f?2:0)}], -pg=[function(a){qg[a&15].call(this,a)},V,V,V,Ff,Ff,Ff,Ff,Qf,V,dg,fg,Tf,Tf,Tf,Tf],qg=[Bf,Vf,Pf,tf,Df,Of,V,V,V,V,V,V,V,V,V,V],eg=[Nf,function(){this.T=0;this.b-=5},function(){this.U=0;this.b-=5},U,function(){this.aa=1;this.b-=5},U,U,U,function(){this.Z=0;this.b-=5},U,U,U,U,U,U,U],gg=[Nf,function(){this.T=65536;this.b-=5},function(){this.U=32768;this.b-=5},W,function(){this.aa=0;this.b-=5},W,W,W,function(){this.Z=32768;this.b-=5},W,W,W,W,W,W,W],og=[sf,qf,mf,of,vf,wf,af,bf,Af,Uf,hg,jg,lg,V,V,V],ig=[function(a){Id(this, +pg=[function(a){qg[a&15].call(this,a)},V,V,V,Ff,Ff,Ff,Ff,Pf,V,dg,fg,Tf,Tf,Tf,Tf],qg=[Bf,Vf,Qf,tf,Df,Of,V,V,V,V,V,V,V,V,V,V],eg=[Nf,function(){this.T=0;this.b-=5},function(){this.U=0;this.b-=5},U,function(){this.aa=1;this.b-=5},U,U,U,function(){this.Z=0;this.b-=5},U,U,U,U,U,U,U],gg=[Nf,function(){this.T=65536;this.b-=5},function(){this.U=32768;this.b-=5},W,function(){this.aa=0;this.b-=5},W,W,W,function(){this.Z=32768;this.b-=5},W,W,W,W,W,W,W],og=[sf,qf,mf,of,vf,wf,af,bf,Af,Uf,hg,jg,lg,V,V,V],ig=[function(a){Id(this, ue(this,a,0,255));this.b-=this.g?9:3+(7==this.f?2:0)},function(a){R(this,a,0,Je);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){R(this,a,1,Ne);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){R(this,a,1,Le);this.b-=this.g?9:3+(7==this.f?2:0)}],kg=[function(a){R(this,a,0,Pe);this.b-=this.g?11:6},function(a){R(this,a,Bd(this)?1:0,ze);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){R(this,a,Bd(this)?1:0,Ve);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){a=se(this,a);Id(this,a<<8);this.b-=this.g?4:3+ (7==this.f?2:0)}],mg=[function(a){R(this,a,0,Te);this.b-=this.g?9+(this.Eb&1):3+(7==this.f?2:0)},function(a){R(this,a,0,Re);this.b-=this.g?9:3+(7==this.f?2:0)},function(a){R(this,a,0,De);this.b-=this.g?9+(this.Eb&1):3+(7==this.f?2:0)},function(a){R(this,a,0,Be);this.b-=this.g?9:3+(7==this.f?2:0)}];function zd(a){rg[a>>12].call(this,a)} var rg=[function(a){sg[a>>8&15].call(this,a)},Jf,xf,gf,cf,ef,Ye,function(a){tg[a>>8&15].call(this,a)},function(a){ug[a>>8&15].call(this,a)},Kf,yf,hf,df,ff,Sf,V],sg=[function(a){vg[a>>4&15].call(this,a)},uf,rf,jf,kf,pf,lf,nf,Hf,Hf,Yf,$f,bg,function(a){wg[a>>6&3].call(this,a)},V,V],wg=[function(a){a=this.u[7]+((a&63)<<1)&65535;var b=this.ra(a|this.R);O(this,this.u[5]);this.u[6]=a+2&65535;this.u[5]=b;this.b-=8},function(a){a=ne(this,a,0);ge(this,a);Q(this,a);this.b-=11},function(a){var b=ie(this);this.I= -this.b;oe(this,a,0,b);Q(this,b);this.b=this.I-Lf[this.g]},function(a){Q(this,ve(this,a,this.Ua?65535:0));this.b-=this.g?9:3+(7==this.f?2:0)}],vg=[function(a){xg[a&15].call(this,a)},V,V,V,Ff,Ff,Ff,Ff,Qf,function(a){a&8?(this.N&49152||(this.N=this.N&-2017|(a&7)<<5,this.K|=1),this.b-=5):V.call(this,a)},dg,fg,Tf,Tf,Tf,Tf],xg=[Bf,Vf,Pf,tf,Df,Of,function(){he(this);this.b-=13},function(){this.ta(8,0,-8)},V,V,V,V,V,V,V,V],tg=[Mf,Mf,zf,zf,Ze,Ze,$e,$e,Wf,Wf,V,V,V,V,Rf,Rf],ug=[sf,qf,mf,of,vf,wf,af,bf,Af,Uf, -hg,jg,lg,function(a){yg[a>>6&3].call(this,a)},V,V],yg=[V,function(a){a=ne(this,a,65536);ge(this,a);Q(this,a);this.b-=11},function(a){var b=ie(this);this.I=this.b;oe(this,a,65536,b);Q(this,b);this.b=this.I-Lf[this.g]},V]; -function zg(a){t.call(this,"ROM",a,zg);this.ga=this.g=null;this.A=a.addr;this.f=a.size;this.D=!1;this.B=a.alias;this.C=a.file;this.H=ra(this.C);if(this.C){a=this.C;var b=sa(this.H);"json"!=b&&"hex"!=b&&(a=Fa()+"/api/v1/dump?file="+this.C+"&format=bytes&decimal=true");var c=this;Ca(a,null,!0,function(a,b,f){f?(c.P("Unable to load ROM resource (error "+f+": "+a+")"),c.C=null):(qb(c.Qa,a,b),(a=Ea(a,b))?(c.g=a.da,c.ga=a.ga):c.C=null);Ag(c)})}}z(zg);k=zg.prototype; +this.b;oe(this,a,0,b);Q(this,b);this.b=this.I-Lf[this.g]},function(a){Q(this,ve(this,a,this.Ua?65535:0));this.b-=this.g?9:3+(7==this.f?2:0)}],vg=[function(a){xg[a&15].call(this,a)},V,V,V,Ff,Ff,Ff,Ff,Pf,function(a){a&8?(this.N&49152||(this.N=this.N&-2017|(a&7)<<5,this.K|=1),this.b-=5):V.call(this,a)},dg,fg,Tf,Tf,Tf,Tf],xg=[Bf,Vf,function(){he(this);this.K|=this.N&16;this.b-=13},tf,Df,Of,Qf,function(){this.ta(8,0,-8)},V,V,V,V,V,V,V,V],tg=[Mf,Mf,zf,zf,Ze,Ze,$e,$e,Wf,Wf,V,V,V,V,Rf,Rf],ug=[sf,qf,mf,of, +vf,wf,af,bf,Af,Uf,hg,jg,lg,function(a){yg[a>>6&3].call(this,a)},V,V],yg=[V,function(a){a=ne(this,a,65536);ge(this,a);Q(this,a);this.b-=11},function(a){var b=ie(this);this.I=this.b;oe(this,a,65536,b);Q(this,b);this.b=this.I-Lf[this.g]},V]; +function zg(a){t.call(this,"ROM",a,zg);this.ga=this.g=null;this.A=a.addr;this.f=a.size;this.D=!1;this.B=a.alias;this.C=a.file;this.H=ra(this.C);if(this.C){a=this.C;var b=sa(this.H);"json"!=b&&"hex"!=b&&(a=Fa()+"/api/v1/dump?file="+this.C+"&format=bytes&decimal=true");var c=this;Ca(a,null,!0,function(a,b,f){f?(c.P("Unable to load ROM resource (error "+f+": "+a+")"),c.C=null):(qb(c.Qa,a,b),(a=Ea(a,b))?(c.g=a.ea,c.ga=a.ga):c.C=null);Ag(c)})}}z(zg);k=zg.prototype; k.Ea=function(a,b,c,d){this.v=b;this.b=c;this.i=d;Ag(this)};k.Ga=function(){this.ga&&(this.i&&Tg(this.i,this.id,this.A,this.f,this.ga),delete this.ga);return!0};k.Fa=function(){return!0}; function Ag(a){if(!wb(a)){if(a.C){if(!a.g||!a.v)return;a.f||(a.f=a.g.length);if(a.g.length!=a.f)yb(a,"ROM size ("+p(a.g.length,8,!0)+") does not match specified size ("+p(a.f,8,!0)+")");else{var b;a:{b=a.A;a.status(a.f+"-byte ROM at "+qa(b));if(57344<=b&&b<57344+nc){var c={};b=(c[b]=[zg.prototype.Nd,zg.prototype.Fe,null,null,null,a.f>>1],c);if(Hb(a.v,a,b,256,a.Za)){b=a.D=!0;break a}}else if(xc(a.v,b,a.f,ad)){for(c=0;c>>a.ja;0=b.length)break;for(var h=h+2,m=b[h++]&255|(b[h++]&255)<<8,n=b[h++]&255|(b[h++]&255)<<8,l=l+((m&255)+(m>>8)+(n&255)+(n>>8)),v=h,r=m-=6;0=b.length)break;l+=b[h++]&255;if(l&255)break;if(r)for(E(a,"loading "+p(r,4,!0)+" bytes at "+p(n,4,!0)+"-"+p(n+r-1,4,!0),1048576);r--;)a.b.rb(n++,b[v++]&255);else n&1?a.b.fa():null==d&& -(d=n),null!=d&&E(a,"starting address: "+p(d,4,!0),1048576);g=!0}else h++;else h+=2}if(!g&&(null==c&&(c=e),null!=c)){for(g=0;g=b.length)break;for(var h=h+2,m=b[h++]&255|(b[h++]&255)<<8,n=b[h++]&255|(b[h++]&255)<<8,l=l+((m&255)+(m>>8)+(n&255)+(n>>8)),v=h,r=m-=6;0=b.length)break;l+=b[h++]&255;if(l&255)break;if(r)for(E(a,"loading "+p(r,4,!0)+" bytes at "+p(n,4,!0)+"-"+p(n+r-1,4,!0),1048576);r--;)a.b.rb(n++,b[v++]&255);else n&1?a.b.da():null==d&& +(d=n),null!=d&&E(a,"starting address: "+p(d,4,!0),1048576);g=!0}else h++;else h+=2}if(!g&&(null==c&&(c=e),null!=c)){for(g=0;g=b)a.preventDefault&&a.preventDefault(),64":String.fromCharCode(a);var c=b.length;32>a&&1==c&&(c=0);9==a&&(a=this.S||8,c=a-this.H%a,this.S&&(b=wa("",c)));this.R&&!this.H&&c&&(b=String.fromCharCode(this.R)+b);this.B.value+=b;this.B.scrollTop=this.B.scrollHeight;this.H+=c}else if(null!=this.D){if(10==a||1024<=this.D.length)this.j(this.D), this.D="";10!=a&&(this.D+=String.fromCharCode(a))}this.f&=-129;Pc(this.b,this.ia,1E3/Math.round(this.ca/10))}};var ah={},Zg=(ah[65392]=[null,null,X.prototype.Hd,X.prototype.ze,"RCSR"],ah[65394]=[null,null,X.prototype.Gd,X.prototype.ye,"RBUF"],ah[65396]=[null,null,X.prototype.ae,X.prototype.Te,"XCSR"],ah[65398]=[null,null,X.prototype.$d,X.prototype.Se,"XBUF"],ah);Za(function(){for(var a=D(document,"pdp11","serial"),b=0;b'+b+"");a.innerHTML=b}},!0;case "descTape":return this.G[b]=c,!0;case "loadTape":e=2;case "attachTape":return e||(e=1),this.G[b]=c,c.onclick= function(){var a=d.G.listTapes;a&&dh(d,a.options[a.selectedIndex].text,a.value,e)},!0;case "mountTape":if(!this.O){c.parentNode.removeChild(c);break}this.G[b]=c;c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length});c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;dh(d,ra(b,!0),b,1,a)}return!1};return!0;case "readProgress":return this.G[b]=c,!0}return!1}; k.Ea=function(a,b,c,d){this.C=a;this.v=b;this.b=c;this.i=d;this.S=eh(a);var e=this;if((this.g=nd(this.C,"autoMount")||this.g)&&"string"==typeof this.g)try{this.g=eval("("+this.g+")")}catch(f){q("PC11 auto-mount error: "+f.message+" ("+this.g+")"),this.g=null}this.X=Qc(56,4);this.ca=Nc(this.b,function(){1==(e.f&32769)&&!(e.f&128)&&e.Jc.indexOf("/api/v1/dump")&&(e=sa(c),f="json"==e||"gz"==e?encodeURI(c):Fa()+"/api/v1/dump?path="+encodeURIComponent(c)+"&format=json");return!!Ca(f,null,!0,function(e,f,g){var h=0>g&&a.C&&!a.C.w.ha;g?a.P('Unable to load tape "'+b+'" (error '+g+": "+e+")",h):(qb(a.Qa,e,f),(e=Ea(e,f))&&nh(a,b,c,d,e.da,e.La, +function jh(a,b,c,d,e,f){var g=-1;if(a.A.toLowerCase()!=c.toLowerCase()||a.B!=d)g++,lh(a,!0),a.w.ab?a.P("PC11 busy"):(e&&(a.D++,F(a)&&E(a,"auto-loading tape: "+b)),mh(a,b,c,d,f)?g++:a.w.ab=!0);g&&nh(a,a.M,a.A,a.B,a.ea,a.La,a.Ka)} +function mh(a,b,c,d,e){var f=c;if(e){var g=new FileReader;g.onload=function(){var e=g.result;e&&(e=new Uint8Array(e,0,e.byteLength),nh(a,b,c,d,e),a.H="?");kh(a)};g.readAsArrayBuffer(e);return!0}0>c.indexOf("/api/v1/dump")&&(e=sa(c),f="json"==e||"gz"==e?encodeURI(c):Fa()+"/api/v1/dump?path="+encodeURIComponent(c)+"&format=json");return!!Ca(f,null,!0,function(e,f,g){var h=0>g&&a.C&&!a.C.w.ha;g?a.P('Unable to load tape "'+b+'" (error '+g+": "+e+")",h):(qb(a.Qa,e,f),(e=Ea(e,f))&&nh(a,b,c,d,e.ea,e.La, e.Ka));a.w.ab=!1;a.D&&(a.D--,a.D||H(a));kh(a)})}function hh(a,b,c,d){if((a=a.G.listTapes)&&a.options){for(var e=0;ea.ua||f[1]>a.Aa)&&(this.P('Disk "'+c+'" too large for drive '+("RL"+a.fc)),b=null);b?(a.Ca=b,a.Ya=c,a.fb=d,this.P('Mounted disk "'+c+'" in drive '+("RL"+a.fc),a.cc||e),this.C&&this.C.sb()):a.Qb=!1;a.cc&&(a.cc=!1,--this.H||H(this));zh(this,a.fc)}; function Dh(a,b,c,d){if((a=a.G.listDisks)&&a.options){for(var e=0;e>12&48;this.J=f>>16&63;this.A=this.g=b<<7|(c?64:0)|d&63;this.D=65536-e&65535;a&&(this.ea=this.ea|a|32768);return!0}; -k.nd=function(a,b,c,d,e,f,g){var h=0,l=a.Ca,m=null,n;l||(h=5120,e=0);for(;e--;){if(!m){m=a.Ca.seek(b,c,d+1);if(!m){h=5120;break}n=0}var v,r;if(0>(v=a.Ca.read(m,n++))||0>(r=a.Ca.read(m,n++))){h=5120;break}this.v.gb(f,v|r<<8);if(Mc(this.v)){h=8192;break}f+=2;if(n>=l.Ma&&(m=null,++d>=l.qa&&(d=0,++c>=l.Aa&&(c=0,++b>=l.ua)))){h=5120;break}}return g(h,b,c,d,e,f)}; -k.he=function(a,b,c,d,e,f,g){var h=0,l=a.Ca,m=null,n;l||(h=5120,e=0);for(;e--;){var v=this.v.na(f);if(Mc(this.v)){h=8192;break}f+=2;if(!m){m=a.Ca.seek(b,c,d+1,!0);if(!m){h=5120;break}n=0}if(!a.Ca.write(m,n++,v&255)||!a.Ca.write(m,n++,v>>8)){h=5120;break}if(n>=l.Ma&&(m=null,++d>=l.qa&&(d=0,++c>=l.Aa&&(c=0,++b>=l.ua)))){h=5120;break}}return g(h,b,c,d,e,f)};k.Kd=function(){return this.ea&65535}; -k.Ce=function(a){this.ea=this.ea&-1023|a&1022;this.M=this.M&-4|(a&48)>>4;if(!(this.ea&128)){var b;a=!0;var c=this.f[(this.ea&768)>>8],d,e,f,g;this.ea&=-2;switch(this.ea&14){case 4:this.g&8&&(this.ea&=63);this.D=c.status|this.A&64;break;case 6:1==(this.g&3)&&(b=this.g&65408,c=(this.g&16)<<2,this.A=this.g&4?this.A+b:this.A-b,this.g=this.A=this.A&65408|c);break;case 8:this.D=this.A;break;case 12:b=this.nd;case 10:b||(b=this.he),d=this.g>>7,e=this.g&64?1:0,f=this.g&63,d>=c.ua||f>=c.qa?this.ea|=37888: -(g=(this.J&63)<<16|this.I,a=65536-this.D&65535,a=b.call(this,c,d,e,f,a,g,this.Sc.bind(this)))}a&&(this.ea|=129,this.ea&64&&Oc(this.b,this.O))}};k.Id=function(){return this.I};k.Ae=function(a){this.I=a&65534};k.Ld=function(){return this.g};k.De=function(a){this.g=a};k.Md=function(){return this.D};k.Ee=function(a){this.D=a};k.Jd=function(){return this.J};k.Be=function(a){this.J=a&63}; +function Bh(a,b){var c=0;b||(b=[]);a.fa=b[c++]||0;a.I=b[c++]||0;a.g=b[c++]||0;a.A=b[c++]||0;a.D=b[c++]||0;a.J=b[c]||0;for(b=0;b>12&48;this.J=f>>16&63;this.A=this.g=b<<7|(c?64:0)|d&63;this.D=65536-e&65535;a&&(this.fa=this.fa|a|32768);return!0}; +k.nd=function(a,b,c,d,e,f,g){var h=0,l=a.Ca,m=null,n;l||(h=5120,e=0);for(;e--;){if(!m){m=a.Ca.seek(b,c,d+1);if(!m){h=5120;break}n=0}var v,r;if(0>(v=a.Ca.read(m,n++))||0>(r=a.Ca.read(m,n++))){h=5120;break}this.v.gb(f,v|r<<8);if(Fc(this.v)){h=8192;break}f+=2;if(n>=l.Ma&&(m=null,++d>=l.qa&&(d=0,++c>=l.Aa&&(c=0,++b>=l.ua)))){h=5120;break}}return g(h,b,c,d,e,f)}; +k.he=function(a,b,c,d,e,f,g){var h=0,l=a.Ca,m=null,n;l||(h=5120,e=0);for(;e--;){var v=this.v.na(f);if(Fc(this.v)){h=8192;break}f+=2;if(!m){m=a.Ca.seek(b,c,d+1,!0);if(!m){h=5120;break}n=0}if(!a.Ca.write(m,n++,v&255)||!a.Ca.write(m,n++,v>>8)){h=5120;break}if(n>=l.Ma&&(m=null,++d>=l.qa&&(d=0,++c>=l.Aa&&(c=0,++b>=l.ua)))){h=5120;break}}return g(h,b,c,d,e,f)};k.Kd=function(){return this.fa&65535}; +k.Ce=function(a){this.fa=this.fa&-1023|a&1022;this.M=this.M&-4|(a&48)>>4;if(!(this.fa&128)){var b;a=!0;var c=this.f[(this.fa&768)>>8],d,e,f,g;this.fa&=-2;switch(this.fa&14){case 4:this.g&8&&(this.fa&=63);this.D=c.status|this.A&64;break;case 6:1==(this.g&3)&&(b=this.g&65408,c=(this.g&16)<<2,this.A=this.g&4?this.A+b:this.A-b,this.g=this.A=this.A&65408|c);break;case 8:this.D=this.A;break;case 12:b=this.nd;case 10:b||(b=this.he),d=this.g>>7,e=this.g&64?1:0,f=this.g&63,d>=c.ua||f>=c.qa?this.fa|=37888: +(g=(this.J&63)<<16|this.I,a=65536-this.D&65535,a=b.call(this,c,d,e,f,a,g,this.Sc.bind(this)))}a&&(this.fa|=129,this.fa&64&&Oc(this.b,this.O))}};k.Id=function(){return this.I};k.Ae=function(a){this.I=a&65534};k.Ld=function(){return this.g};k.De=function(a){this.g=a};k.Md=function(){return this.D};k.Ee=function(a){this.D=a};k.Jd=function(){return this.J};k.Be=function(a){this.J=a&63}; var Hh={},Ch=(Hh[63744]=[null,null,M.prototype.Kd,M.prototype.Ce,"RLCS"],Hh[63746]=[null,null,M.prototype.Id,M.prototype.Ae,"RLBA"],Hh[63748]=[null,null,M.prototype.Ld,M.prototype.De,"RLDA"],Hh[63750]=[null,null,M.prototype.Md,M.prototype.Ee,"RLMP"],Hh[63752]=[null,null,M.prototype.Jd,M.prototype.Be,"RLBE"],Hh);function Ih(a){t.call(this,"Debugger",a,Ih);this.ca=a.base||16;this.xa=!1;this.J=0;this.R=!1;this.A=-1;this.g=[];this.X={}}z(Ih); var Jh={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};Ih.prototype.tc=function(){return-1};Ih.prototype.uc=function(){}; function Kh(a,b,c,d){if(c)if(b){0>a.A&&a.g.length&&(a.A=0);if(0>a.A||b!=a.g[a.A])a.g.splice(0,0,b),a.A=0;a.A--}else a.R?b="end":b=a.g[a.A+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(xa(b.substring(c,f))),c=f+1}}return a} @@ -247,15 +248,15 @@ d.ka.value="";rd(d,a,!0);return!0}return!1}),!0;case "step":return this.G[b]=c,T k.na=function(a,b){var c=65535,d=this.ba(a,!1,2);-1!==d&&(c=a.Rb?this.v.bb(d):this.b.bb(d),b&&bi(a,b));return c};k.Ab=function(a,b,c){var d=this.ba(a,!0,1);-1!==d&&(a.Rb?this.v.rb(d,b):this.b.rb(d,b),c&&bi(a,c),this.C.oa(-1))};k.gb=function(a,b,c){var d=this.ba(a,!0,2);-1!==d&&(a.Rb?this.v.Bb(d,b):this.b.Bb(d,b),c&&bi(a,c),this.C.oa(-1))};function Y(a,b){return{F:a,Rb:b,Oa:!1}}k.kc=function(a,b){a.F=b;a.Oa=!1;return a};function ci(a){return[a.F,a.Oa]}function di(a){return{F:a[0],Oa:a[1]}} function ai(a,b,c){var d,e=(c?a.L:a.kb).F;c=!1;if(void 0!==b){b=Nh(a,b);"%"==b.charAt(0)&&(c=!0,b=b.substr(1));d=b;var f;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),e=0;ed&&(d+=b.length);0>d&&(d=0);for(var e=b.length;db||7a?"R"+a:6==a?"SP":"PC"}k.uc=function(a){var b;0<=a&&(8>a?b=this.b.u[a]:16>a?b=this.b.Xa[a-8]:20>a?b=this.b.Ia[a-16]:20==a?b=Tc(this.b):21==a&&this.B&&kc(this.B)&&(b=this.B.Wa));return b}; -k.message=function(a,b){b&&(a+=" @"+J(this,Y(this.b.Ib).F));if(this.ma&1073741824)this.va.push(a);else if(!this.ia||a!=this.ia){this.ia=a;if(this.ma&-2147483648&&this.b&&this.b.w.W||vb(this,!0))this.fa(),a+=" (cpu halted)";this.j(a);this.b&&(a=this.b,vd(a),a.wa=0,a.oa())}}; +k.tc=function(a){var b=-1;a=a.toUpperCase();switch(a){case "SP":b=6;break;case "PC":b=7;break;case "SR":b=21;break;default:"R"==a.charAt(0)&&(b=+a.charAt(1),0>b||7a?"R"+a:6==a?"SP":"PC"}k.uc=function(a){var b;0<=a&&(8>a?b=this.b.u[a]:16>a?b=this.b.Xa[a-8]:20>a?b=this.b.Ia[a-16]:20==a?b=Tc(this.b):21==a&&this.B&&kc(this.B)&&(b=this.B.Wa));return b}; +k.message=function(a,b){b&&(a+=" @"+J(this,Y(this.b.Ib).F));if(this.ma&1073741824)this.va.push(a);else if(!this.ia||a!=this.ia){this.ia=a;if(this.ma&-2147483648&&this.b&&this.b.w.W||vb(this,!0))this.da(),a+=" (cpu halted)";this.j(a);this.b&&(a=this.b,vd(a),a.wa=0,a.oa())}}; function Th(a){var b;if(!we(a))a.H&&a.H.length&&a.j("instruction history buffer freed"),a.$=0,a.H=[];else if(!a.H||!a.H.length){a.H=Array(1E3);for(b=0;b>8;a.j("trapped to "+J(a,c&255,1)+" ("+(0>d?Ab[-d]:J(a,d))+")")}a.L=Y(a.b.u[7]);b&&1!=a.S?hi(a):ii(a)}}function gi(a,b){var c;(c=!a.b||!wb(a.b))||(c=a.b,c.w.ha?c=!0:(c.j(c.toString()+" not powered"),c=!1),c=!c);return c||a.b.w.W?(b||a.j("cpu busy or unavailable, command ignored"),!1):!xb(a.b)}k.Ga=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0}; k.Fa=function(a,b){b&&this.j(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){Th(this);this.wa=0;this.ia=null;this.J=0;this.L=Y(this.b.u[7]);this.w.W=!1;ji(this);a||qd(this)};k.save=function(){var a=new N(this);a.set(0,ci(this.L));a.set(1,ci(this.O));a.set(2,[this.g,this.R,this.ma]);a.set(3,this.I);return a.data()}; k.restore=function(a){var b=0;void 0!==a[2]&&(this.L=di(a[b++]),this.O=di(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.R=a[b][1],this.ma|=a[b][2]);a[3]&&(this.I=a[3]);return!0};k.start=function(a,b){this.S||this.j("running");this.w.W=!0;this.Fb=a;this.Gb=b}; k.stop=function(a,b){if(this.w.W){this.w.W=!1;this.J=b-this.Gb;if(!this.S){b="stopped";if(this.J){a-=this.Fb;var c=0d&&(d=a.b.bb(b)),65535!=(d&65535)&&(a.kc(a.H[a.$],b),++a.$==a.H.length&&(a.$=0)));return!1}function Cf(a){var b=a.b;if(b.w.W)throw O(b,a.b.Ib),a.fa(),-1;return!1} +function xe(a,b,c){var d=-1;c||(d=a.b.bb(b),0==d&&(b=Fd(a.b,2)));if(0d&&(d=a.b.bb(b)),65535!=(d&65535)&&(a.kc(a.H[a.$],b),++a.$==a.H.length&&(a.$=0)));return!1}function Cf(a){var b=a.b;if(b.w.W)throw O(b,a.b.Ib),a.da(),-1;return!1} function Sh(a){var b,c;a.f=["bp"];if(a.M)for(b=1;b>>d.ja],!1)}a.M=["br"];if(a.D)for(b=1;b>>d.ja],!0);a.D=["bw"];a.lb=0}k.mb=function(a,b,c){var d=!0;c||ki(this,a,b,!1,!0);if(a!=this.f){var e=this.ba(b);if(-1===e)this.j("invalid address: "+J(this,b.F)),d=!1;else{var f=this.v;f.Y[e>>>f.ja].mb(e&f.v,a==this.D)}}d&&(a.push(b),c?b.Oa=!0:(li(this,a,a.length-1,"set"),Th(this)));return d}; function ki(a,b,c,d,e){var f=!1;c=a.ba(c);for(var g=1;g>>d.ja],b==a.D));h.Oa||Th(a);break}}return f}function mi(a,b){for(var c=1;c>23)&65535,x=J(w,r);else if(8192==C)r=r.F-((f&63)<<1)&65535,x=J(w,r);else if(12288==C)x=J(w,f&7,1);else if(24576==C)x=J(w,f&63,1);else if(32768==C)x=J(w,f&255,1);else if(C=f&y,y&4032&&(C>>=6,y>>=6), y&63)switch(y=C&7,C&56){case 0:x=fi(y);break;case 8:x="@"+fi(y);break;case 16:7>y?x="("+fi(y)+")+":(C=w.na(r,2),x="#"+J(w,C,0,!0));break;case 24:7>y?x="@("+fi(y)+")+":(C=w.na(r,2),x="@#"+J(w,C,0,!0));break;case 32:x="-("+fi(y)+")";break;case 40:x="@-("+fi(y)+")";break;case 48:C=w.na(r,2);x=J(w,C,0,!0)+"("+fi(y)+")";7==y&&(x=J(w,C+r.F&65535));break;case 56:C=w.na(r,2),x="@"+J(w,C)+"("+fi(y)+")",7==y&&(x="@"+J(w,C+r.F&65535))}w=x;if(!w||!w.length){h="INVALID";break}"string"!=typeof w&&(m=w[1],w=w[0]); 0b?(c=fi(b),c+="="+J(a,d.u[b])):13>b?c="A"+(b-8)+"="+J(a,d.Xa[b-8]):16<=b&&20>b?c="S"+(b-16)+"="+J(a,d.Ia[b-16]):20==b?c="PS="+J(a,Tc(d)):21==b&&a.B&&kc(a.B)&&(c="SW="+J(a,a.B.Wa,3));c&&(c+=" ");return c}function ri(a){var b,c="";for(b=0;6>b;b++)c+=qi(a,b);c=c+"\n"+(qi(a,6)+qi(a,7));c+=qi(a,20)+qi(a,21);return c+=pi(a,"T")+pi(a,"N")+pi(a,"Z")+pi(a,"V")+pi(a,"C")}k.pc=function(a,b){return a[0]>b[0]?1:a[0]b?(c=fi(b),c+="="+J(a,d.u[b])):13>b?c="A"+(b-8)+"="+J(a,d.Xa[b-8]):16<=b&&20>b?c="S"+(b-16)+"="+J(a,d.Ia[b-16]):20==b?c="PS="+J(a,Tc(d)):21==b&&a.B&&kc(a.B)&&(c="SR="+J(a,a.B.Wa,3));c&&(c+=" ");return c}function ri(a){var b,c="";for(b=0;6>b;b++)c+=qi(a,b);c=c+"\n"+(qi(a,6)+qi(a,7));c+=qi(a,20)+qi(a,21);return c+=pi(a,"T")+pi(a,"N")+pi(a,"Z")+pi(a,"V")+pi(a,"C")}k.pc=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],v=za(n,l,a.pc);0>v&&n.splice(-(v+1),0,l)}m&&(h.a=m.replace(/''/g,'"'))}a.I.push({Ze:b,F:c,Wc:d,ga:e,nc:f})}function si(a,b,c){var d=[],e=a.ba(b)>>>0;for(b=0;b>>0,h=f.Wc;if(e>=g&&eb)){d.u[b]=f&65535;break}a.j("unknown register: "+e);return}a.C.oa();a.j("updated registers:")}a.j(ri(a));c&&(a.L=Y(d.u[7]),ii(a,J(a,a.L.F)))}}function wi(a,b){b=xa(b);var c=b.match(/^(['"])(.*?)\1$/);c?1b)){d.u[b]=f&65535;break}a.j("unknown register: "+e);return}a.C.oa();a.j("updated registers:")}a.j(ri(a));c&&(a.L=Y(d.u[7]),ii(a,J(a,a.L.F)))}}function wi(a,b){b=xa(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.j(m)}h[3]&&(g=h[3],f=null);f=oi(a,b,g,f);a.j(f);a.L=b;e-=b.F-l;c++}}} function ni(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.j(">> "+b):(a.R&&(a.j("ended assemble at "+J(a,a.O.F)),a.L=a.O,a.R=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(wb(a)&&0n||"z"ma.length&&(a.j("note: only "+ma.length+" available"),Z=ma.length);fa-=Z;0>fa&&(null==ma[ma.length-1].F?(Z=fa+Z,fa=0):fa+=ma.length);var Ld=[];"call"==Gg&&(Pb=1E5,Ld=["CALL"]);for(void 0!==Fg&&a.j(Z+" instructions earlier:");0=ma.length&&(fa=0);a.nb=Z;Ig++;Pb--}}Ig||(a.j("no "+Hg+"history available"),a.nb=void 0)}else{var kb=ai(a,la);if(kb){var Rb=0,Md=!1,Nd="ds"==La;Ma&&(Md=!0,"l"==Ma.charAt(0)&&(Md=!1,Ma=Ma.substr(1)||Qi),Rb=Oh(a,Ma)>>>0,65536Qd?String.fromCharCode(Qd):"."),Gc=Gc>>8}Na&&(Na+="\n");Na=Nd?Na+(Oa+","):Na+(la+" "+Oa+(0==Fc?" "+Pd:""))}Na&&a.j(Na);a.kb=kb}}}}break;case "e":if("else"==g[0])break;var nb,Rd,Sd,Td,Ud=g[0],Vd=g[1];"eb"==Ud?(nb=1,Rd=255,Sd=a.Hb,Td=a.Ab):"e"==Ud||"ew"==Ud?(nb=2,Rd=65535,Sd=a.na,Td=a.gb):Vd=null;if(null==Vd)a.j("edit memory commands:"), -a.j("\teb [a] [...] edit bytes at address a"),a.j("\tew [a] [...] edit words at address a");else{var Hc=ai(a,Vd);if(Hc)for(var Ic=2;IcYd;){for(var Pa=null,Vi=256;65536> -Wb.F>>>0;){Zd.F=a.na(Wb,2);if(null==Wb.F||!Vi--)break;if(!(Zd.F&1)){for(var Wi=a,Jc=Zd,Mg=null,Xb=Jc.F,Ng=Xb,$d=1;6>=$d&&Xb;$d++){if(2<$d){Jc.F=Xb;var Kc=oi(Wi,Jc);if(0<=Kc.indexOf("JSR")){var Og=Kc.indexOf(" ");if(Xb+(Kc.indexOf(" ",Og+1)-Og-1)/2==Ng){Mg=Kc;break}}}Xb-=2}Jc.F=Ng;if(Pa=Mg)break}}if(!Pa||null==Pa)break;var Pg=null;if("ks"==Ui){var Qg=Pa.match(/[0-9A-F]+$/);Qg&&(Pg=vi(a,Qg[0]))}Pa=wa(Pa,50)+" ;"+(Pg||"stack="+J(a,Wb.F));a.j(Pa);Yd++}Yd||a.j("no return addresses found")}break;case "l":if("ln"== -g[0]){vi(a,g[1],!0);break}f=!0;break;case "m":a:{var na,oa=null,G=g[1];"?"==G&&(G=void 0);if(void 0!==G){var Da=0;if("all"==G)Da=1878917119,G=null;else if("on"==G)oa=!0,G=null;else if("off"==G)oa=!1,G=null;else{"keys"==G&&(G="key");"kbd"==G&&(G="keyboard");for(na in Bb)if(G==na){Da=Bb[na];oa=!!(a.ma&Da);break}if(!Da){a.j("unknown message category: "+G);break a}}if(Da)if("on"==g[2])a.ma|=Da,oa=!0;else if("off"==g[2]&&(a.ma&=~Da,oa=!1,1073741824==Da)){for(var ae=0;aema.length&&(a.j("note: only "+ma.length+" available"),Z=ma.length);fa-=Z;0>fa&&(null==ma[ma.length-1].F?(Z=fa+Z,fa=0):fa+=ma.length);var Md=[];"call"==Gg&&(Pb=1E5,Md=["CALL"]);for(void 0!==Fg&&a.j(Z+" instructions earlier:");0=ma.length&&(fa=0);a.nb=Z;Ig++;Pb--}}Ig||(a.j("no "+Hg+"history available"),a.nb=void 0)}else{var kb=ai(a,la);if(kb){var Rb=0,Nd=!1,Od="ds"==La;Ma&&(Nd=!0,"l"==Ma.charAt(0)&&(Nd=!1,Ma=Ma.substr(1)||Qi),Rb=Oh(a,Ma)>>>0,65536Rd?String.fromCharCode(Rd):"."),Ic=Ic>>8}Na&&(Na+="\n");Na=Od?Na+(Oa+","):Na+(la+" "+Oa+(0==Hc?" "+Qd:""))}Na&&a.j(Na);a.kb=kb}}}}break;case "e":if("else"==g[0])break;var nb,Sd,Td,Ud,Vd=g[0],Wd=g[1];"eb"==Vd?(nb=1,Sd=255,Td=a.Hb,Ud=a.Ab):"e"==Vd||"ew"==Vd?(nb=2,Sd=65535,Td=a.na,Ud=a.gb):Wd=null;if(null==Wd)a.j("edit memory commands:"), +a.j("\teb [a] [...] edit bytes at address a"),a.j("\tew [a] [...] edit words at address a");else{var Jc=ai(a,Wd);if(Jc)for(var Kc=2;KcZd;){for(var Pa=null,Vi=256;65536> +Wb.F>>>0;){$d.F=a.na(Wb,2);if(null==Wb.F||!Vi--)break;if(!($d.F&1)){for(var Wi=a,Lc=$d,Mg=null,Xb=Lc.F,Ng=Xb,ae=1;6>=ae&&Xb;ae++){if(2\nLicense: GPL version 3 or later ");this.j("Portions adapted from the PDP-11/70 Emulator v1.4 by Paul Nankervis ");for(b=0;ba[1];a=a[2];this.ca=!0;this.w.ha=!0;var d=this.G.power;d&&(d.textContent="Shutdown");this.b&&(Li(this,this.b,b,c,a),this.oa(),this.b.tb());this.O&&(Ii(this,b),b.clear());!c&&this.A&&(this.A.clear(),delete this.A);this.C=0}; function Ii(a,b){if(Ga("There may be a problem with your PDPjs machine.\n\nTo help us diagnose it, click OK to send this PDPjs machine state to http://www.pcjs.org.")){var c=a.g||"";b=b.toString();var d={app:"PDPjs",ver:"1.30.3"};d.url=a.$;d.user=c;d.type="bug";d.data=b;Ca("http://www.pcjs.org/api/v1/report",d,!0)}} -function yi(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new N(a,"1.30.3"),g=new N(a,"1.30.3","validate"),h=Ba();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.3");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.b&&a.b.Fa&&(c&&a.b.fa(),d=a.b.Fa(b,c),"object"===typeof d&&f.set(a.b.id,d),c&&(a.b.w.ha=!1,!1===d&&(e=null)));for(var h=rb(a.id),l=0;l>>a.c].Hb(b&a.l,c&255, function Pb(a){for(var b=0,c=[],d=0;da.a.La)){var l=k[0]?k[0].bind(b):null,n=k[1]?k[1].bind(b):null,p=k[2]?k[2].bind(b):null,u=k[3]?k[3].bind(b):null,w=k[5]||1;65472<=g&&65487>=g&&(!l&&p&&(l=function(a){return function(b){return a(b)&255}.bind(b)}(p)),!n&&u&&(n=function(a){return function(b,c){return a(b,c)}.bind(b)}(u)));for(var D=k[4],U=0;U>5&3;b.cb=a>>1&15;var c=0;a&257&&(c=4,a&1&&(c|=2));b.Ba!=c&&(b.Ba=c,Yb(b))}};h.Hc=function(){var a=this.a;a.I&57344||(a.Ub=a.$&65535);a=a.Ub;a&65280&&(a=(a<<8|a>>8)&65535);return a};h.Ic=function(){var a=this.a;a.I&57344||(a.Vb=a.zb);return a.Vb}; -h.Jc=function(){return this.a.Ea};h.Ed=function(a){var b=this.a;1170>b.La&&(a&=-49);b.Ea!=a&&(b.Ea=a,b.Sa=a&16?4194303:262143,Yb(b))};h.kd=function(a){a=a>>1&63;var b=this.a.ab[a>>1];return a&1?b>>16:b&65535};h.ee=function(a,b){b=b>>1&63;var c=b>>1;this.a.ab[c]=b&1?this.a.ab[c]&65535|(a&63)<<16:this.a.ab[c]&-65536|a&65534};h.cd=function(a){return this.a.H[1][a>>1&7]};h.Yd=function(a,b){this.a.H[1][b>>1&7]=a&65295};h.ad=function(a){return this.a.H[1][(a>>1&7)+8]}; +h.reset=function(){this.b.Ya=128;Ub(this.a,this.b.Gb,1E3/60,!0)};h.Ec=function(){return this.b.Ya};h.Bd=function(a){this.b.Ya=a&192};h.Gc=function(){var a=this.a;return a.I&62337|a.bb<<5|a.cb<<1};h.Dd=function(a){var b=this.a;a&=62337;if(b.I!=a){b.I=a;b.bb=a>>5&3;b.cb=a>>1&15;var c=0;a&257&&(c=4,a&1&&(c|=2));b.Ba!=c&&(b.Ba=c,Xb(b))}};h.Hc=function(){var a=this.a;a.I&57344||(a.Ub=a.$&65535);a=a.Ub;a&65280&&(a=(a<<8|a>>8)&65535);return a};h.Ic=function(){var a=this.a;a.I&57344||(a.Vb=a.zb);return a.Vb}; +h.Jc=function(){return this.a.Ea};h.Ed=function(a){var b=this.a;1170>b.La&&(a&=-49);b.Ea!=a&&(b.Ea=a,b.Sa=a&16?4194303:262143,Xb(b))};h.kd=function(a){a=a>>1&63;var b=this.a.ab[a>>1];return a&1?b>>16:b&65535};h.ee=function(a,b){b=b>>1&63;var c=b>>1;this.a.ab[c]=b&1?this.a.ab[c]&65535|(a&63)<<16:this.a.ab[c]&-65536|a&65534};h.cd=function(a){return this.a.H[1][a>>1&7]};h.Yd=function(a,b){this.a.H[1][b>>1&7]=a&65295};h.ad=function(a){return this.a.H[1][(a>>1&7)+8]}; h.Wd=function(a,b){this.a.H[1][(b>>1&7)+8]=a&65295};h.bd=function(a){return this.a.X[1][a>>1&7]};h.Xd=function(a,b){b=b>>1&7;this.a.X[1][b]=a;this.a.H[1][b]&=65295};h.$c=function(a){return this.a.X[1][(a>>1&7)+8]};h.Vd=function(a,b){b=(b>>1&7)+8;this.a.X[1][b]=a;this.a.H[1][b]&=65295};h.Dc=function(a){return this.a.H[0][a>>1&7]};h.Ad=function(a,b){this.a.H[0][b>>1&7]=a&65295};h.Bc=function(a){return this.a.H[0][(a>>1&7)+8]};h.yd=function(a,b){this.a.H[0][(b>>1&7)+8]=a&65295}; h.Cc=function(a){return this.a.X[0][a>>1&7]};h.zd=function(a,b){b=b>>1&7;this.a.X[0][b]=a;this.a.H[0][b]&=65295};h.Ac=function(a){return this.a.X[0][(a>>1&7)+8]};h.xd=function(a,b){b=(b>>1&7)+8;this.a.X[0][b]=a;this.a.H[0][b]&=65295};h.jd=function(a){return this.a.H[3][a>>1&7]};h.de=function(a,b){this.a.H[3][b>>1&7]=a&65295};h.gd=function(a){return this.a.H[3][(a>>1&7)+8]};h.be=function(a,b){this.a.H[3][(b>>1&7)+8]=a&65295};h.hd=function(a){return this.a.X[3][a>>1&7]}; h.ce=function(a,b){b=b>>1&7;this.a.X[3][b]=a;this.a.H[3][b]&=65295};h.fd=function(a){return this.a.X[3][(a>>1&7)+8]};h.ae=function(a,b){b=(b>>1&7)+8;this.a.X[3][b]=a;this.a.H[3][b]&=65295};h.Na=function(a){a&=7;return this.a.C&2048?this.a.Fa[a]:this.a.f[a]};h.Pa=function(a,b){b&=7;this.a.C&2048?this.a.Fa[b]=a:this.a.f[b]=a};h.Oc=function(){return this.a.C&49152?this.a.oa[0]:this.a.f[6]};h.Jd=function(a){this.a.C&49152?this.a.oa[0]=a:this.a.f[6]=a};h.Rc=function(){return this.a.f[7]}; @@ -108,7 +108,7 @@ this.l&&this.l.stop(ra(),vc(this));Wa(this,f.stack||f.message);return}if(this.j. function mb(a){var b;a.j.error?(a.T(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.j.P)a.T(a.toString()+" busy");else{wc(a);a.j.P=!0;a.j.Fb=!0;if(b=a.o.run)b.textContent="Halt";a.l&&a.l.start(a.aa,vc(a));setTimeout(a.Tb,0)}}h.pb=function(){return 0};function G(a){var b=!1;if(a.j.P){zc(a);ob(a,a.la);a.la=0;a.j.P=!1;if(b=a.o.run)b.textContent="Run";a.l&&a.l.stop(ra(),vc(a));b=!0}a.j.complete=void 0;return b} function Ac(a){this.La=+a.model||1170;this.Ob=a.addrReset||0;qc.call(this,a,6666667);this.decode=1120==this.La?Bc.bind(this):Cc.bind(this);Dc(this);this.ua=0;this.O=null;this.j.complete=!1}z(Ac,qc);h=Ac.prototype;h.reset=function(){this.status("model "+this.La);this.j.P&&G(this);Dc(this);tc(this);this.j.error=!1;this.parent.reset.call(this)}; function Dc(a){a.m=65536;a.g=32768;a.i=65535;a.s=32768;a.C=15;a.f=[0,0,0,0,0,0,0,a.Ob];a.Fa=[0,0,0,0,0,0];a.oa=[0,0,0,0];a.v=0;a.cb=0;a.pd=[4,2,0,1];a.H=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];a.X=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];a.ab=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0];a.$b=[0,0,0,0,0,0,0,0];a.Zb=0;a.u=0;a.A=a.B=0;a.c=a.b=a.xb=0;a.Ja=-1;lb(a)}function lb(a){a.nb=255;a.ea=0;a.Eb=0;a.I=0;a.Ub=0;a.Vb=0;a.Ea=0;a.Ba=0;a.bb=0;a.Sa=262143;a.$=0;a.zb=0;a.O=null;a.h&&Yb(a)}function Yb(a){a.Ba?(a.R=65536,a.M=a.mc,a.V=a.ld,a.rb=a.fe,Cb(a.h,a.Ea&16?22:18)):(a.R=0,a.M=a.lc,a.V=a.Yb,a.rb=a.ec,Cb(a.h,16))}h.Mb=function(){return 0};h.save=function(){var a=new O(this);a.set(0,[]);a.set(1,[this.va,this.ta]);a.set(2,Pb(this.h));return a.data()}; +0,0,0,0,0,0,0,0,0];a.$b=[0,0,0,0,0,0,0,0];a.Zb=0;a.u=0;a.A=a.B=0;a.c=a.b=a.xb=0;a.Ja=-1;lb(a)}function lb(a){a.nb=255;a.ea=0;a.Eb=0;a.I=0;a.Ub=0;a.Vb=0;a.Ea=0;a.Ba=0;a.bb=0;a.Sa=262143;a.$=0;a.zb=0;a.O=null;a.h&&Xb(a)}function Xb(a){a.Ba?(a.R=65536,a.M=a.mc,a.V=a.ld,a.rb=a.fe,Cb(a.h,a.Ea&16?22:18)):(a.R=0,a.M=a.lc,a.V=a.Yb,a.rb=a.ec,Cb(a.h,16))}h.Mb=function(){return 0};h.save=function(){var a=new O(this);a.set(0,[]);a.set(1,[this.va,this.ta]);a.set(2,Pb(this.h));return a.data()}; h.restore=function(a){var b=a[1];this.va=b[1];wc(this,b[3]);a:{b=this.h;a=a[2];var c;for(c=0;c>14&3;c=a.C>>14&3;a.v!=c&&(a.oa[c]=a.f[6],a.f[6]=a.oa[a.v]);a.C=b;a.u|=2}function R(a,b){a.u&128||(a.s=a.i=b,a.g=0)}function Ic(a,b,c){a.u&128||(a.s=a.i=a.m=b,a.g=c||0)}function Jc(a,b,c,d){a.u&128||(a.s=a.i=a.m=b,a.g=(c^b)&(d^b))} @@ -137,18 +137,18 @@ function W(a){a&1&&(this.m=0);a&2&&(this.g=0);a&4&&(this.i=1);a&8&&(this.s=0);th function ae(a){var b=Yc(this,a);if(b){a=a>>6&7;var c=this.f[a]<<16|this.f[a|1];this.m=this.g=0;b&32768&&(b|=-65536);var d=~~(c/b);-32768<=d&&32767>=d?(this.f[a]=d&65535,this.f[a|1]=c-d*b&65535,this.i=d>>16|d,this.s=d>>16):(this.g=32768,this.i=d>>15|d,this.s=c>>16,-1===b&&65534===this.f[a]&&(this.f[a]=this.f[a|1]=1));this.a-=53}else this.i=this.s=0,this.g=32768,this.m=65536,this.a-=7}function be(){K(this,24,0,-8);this.a-=25} function ce(){this.C&49152?(this.ea|=128,K(this,4,0,-7)):(this.w&&this.w.setData(this.f[0],!0),this.D?this.D.b():G(this));this.a-=7}function de(){K(this,16,0,-8);this.a-=25}var ee=[0,7,7,10,7,11,9,13];function fe(a){this.F=this.a;Q(this,Wc(this,a));this.a=this.F-ee[this.c]}var ge=[0,14,14,17,14,18,16,20];function he(a){this.F=this.a;var b=Wc(this,a);a=a>>6&7;Mc(this,this.f[a]);this.f[a]=this.f[7];Q(this,b);this.a=this.F-ge[this.c]}var ie=[3,9,9,13,10,14,12,16,4,9,9,13,10,14,13,17]; function je(a){var b=Vc(this,a);this.F=this.a;R(this,$c(this,a,b));this.a=this.F-ie[(this.A?8:0)+this.c]+(7!=this.b||this.c?0:2)}function ke(a){var b=Uc(this,a);R(this,Zc(this,a,b,65535)<<8);this.a-=this.c?9+(this.B&&6<=this.b?1:0):(this.A?5:3)+(7==this.b?2:0)}var le=[7,13,13,17,14,18,17,21]; -function me(a){var b=Yc(this,a);a=a>>6&7;b&32768&&(b|=-65536);var c=this.f[a];c&32768&&(c|=-65536);b=~~(b*c);this.f[a]=b>>16&65535;this.f[a|1]=b&65535;this.u&128||(this.s=b>>16,this.i=this.s|b,this.g=0,this.m=-32768>b||32767>6;if(this.f[b]=this.f[b]-1&65535)Q(this,this.f[7]-((a&63)<<1)),this.a+=1;this.a-=6}function se(a){T(this,a,Vc(this,a),wd);this.a-=this.c?9+(this.B&&6<=this.b?1:0):(this.A?5:3)+(7==this.b?2:0)} -function te(a){T(this,a,0,yd);this.a-=this.c?9:3+(7==this.b?2:0)}function ue(){K(this,28,0,-8);this.a-=5}function ve(){this.w&&(this.w.da=this.f[7],this.w.setData(this.f[0],!0));this.u|=4;Fc(this,-2);this.a-=3}function we(a){T(this,a,Vc(this,a),zd);this.a-=this.c?9:3+(7==this.b?2:0)}function Y(){K(this,8,0,-8)}function Bc(a){xe[a>>12].call(this,a)}function ye(a){ze[a>>6&3].call(this,a)}function Ae(a){Be[a>>6&3].call(this,a)}function Ce(a){De[a>>6&3].call(this,a)} -function Ee(a){Fe[a&15].call(this,a)}function Ge(a){He[a&15].call(this,a)}function Ie(a){Je[a>>6&3].call(this,a)}function Ke(a){Le[a>>6&3].call(this,a)}function Me(a){Ne[a>>6&3].call(this,a)} +function me(a){var b=Yc(this,a);a=a>>6&7;b&32768&&(b|=-65536);var c=this.f[a];c&32768&&(c|=-65536);b=~~(b*c);this.f[a]=b>>16&65535;this.f[a|1]=b&65535;this.u&128||(this.s=b>>16,this.i=this.s|b,this.g=0,this.m=-32768>b||32767>6;if(this.f[b]=this.f[b]-1&65535)Q(this,this.f[7]-((a&63)<<1)),this.a+=1;this.a-=6}function se(a){T(this,a,Vc(this,a),wd);this.a-=this.c?9+(this.B&&6<=this.b?1:0):(this.A?5:3)+(7==this.b?2:0)}function te(a){T(this,a,0,yd);this.a-=this.c?9:3+(7==this.b?2:0)}function ue(){K(this,28,0,-8);this.a-=5} +function ve(){this.w&&(this.w.da=this.f[7],this.w.setData(this.f[0],!0));this.u|=4;Fc(this,-2);this.a-=3}function we(a){T(this,a,Vc(this,a),zd);this.a-=this.c?9:3+(7==this.b?2:0)}function Y(){K(this,8,0,-8)}function Bc(a){xe[a>>12].call(this,a)}function ye(a){ze[a>>6&3].call(this,a)}function Ae(a){Be[a>>6&3].call(this,a)}function Ce(a){De[a>>6&3].call(this,a)}function Ee(a){Fe[a&15].call(this,a)}function Ge(a){He[a&15].call(this,a)}function Ie(a){Je[a>>6&3].call(this,a)} +function Ke(a){Le[a>>6&3].call(this,a)}function Me(a){Ne[a>>6&3].call(this,a)} var xe=[function(a){Oe[a>>8&15].call(this,a)},je,Zd,Jd,Fd,Hd,Ad,Y,function(a){Qe[a>>8&15].call(this,a)},ke,$d,Kd,Gd,Id,se,Y],Oe=[function(a){Re[a>>4&15].call(this,a)},Wd,Td,Ld,Md,Rd,Nd,Pd,he,he,ye,Ae,Ce,Y,Y,Y],ze=[function(a){Ic(this,$c(this,a,0));this.a-=this.c?9:3+(7==this.b?2:0)},function(a){T(this,a,0,kd);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){T(this,a,1,od);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){T(this,a,1,md);this.a-=this.c?9:3+(7==this.b?2:0)}],Be=[function(a){T(this,a,0, qd);this.a-=this.c?11:6},function(a){T(this,a,P(this)?1:0,ad);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){T(this,a,P(this)?1:0,wd);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){a=Yc(this,a);Ic(this,a);this.a-=this.c?4:3+(7==this.b?2:0)}],De=[function(a){T(this,a,0,ud);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){T(this,a,0,sd);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){T(this,a,0,ed);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){T(this,a,0,cd);this.a-=this.c?9:3+(7==this.b?2:0)}], -Re=[function(a){Se[a&15].call(this,a)},Y,Y,Y,fe,fe,fe,fe,qe,Y,Ee,Ge,te,te,te,te],Se=[ce,ve,pe,Vd,de,oe,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y],Fe=[ne,function(){this.m=0;this.a-=5},function(){this.g=0;this.a-=5},W,function(){this.i=1;this.a-=5},W,W,W,function(){this.s=0;this.a-=5},W,W,W,W,W,W,W],He=[ne,function(){this.m=65536;this.a-=5},function(){this.g=32768;this.a-=5},X,function(){this.i=0;this.a-=5},X,X,X,function(){this.s=32768;this.a-=5},X,X,X,X,X,X,X],Qe=[Ud,Sd,Od,Qd,Xd,Yd,Dd,Ed,be,ue,Ie,Ke,Me,Y,Y,Y],Je=[function(a){Ic(this, +Re=[function(a){Se[a&15].call(this,a)},Y,Y,Y,fe,fe,fe,fe,pe,Y,Ee,Ge,te,te,te,te],Se=[ce,ve,qe,Vd,de,oe,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y],Fe=[ne,function(){this.m=0;this.a-=5},function(){this.g=0;this.a-=5},W,function(){this.i=1;this.a-=5},W,W,W,function(){this.s=0;this.a-=5},W,W,W,W,W,W,W],He=[ne,function(){this.m=65536;this.a-=5},function(){this.g=32768;this.a-=5},X,function(){this.i=0;this.a-=5},X,X,X,function(){this.s=32768;this.a-=5},X,X,X,X,X,X,X],Qe=[Ud,Sd,Od,Qd,Xd,Yd,Dd,Ed,be,ue,Ie,Ke,Me,Y,Y,Y],Je=[function(a){Ic(this, Zc(this,a,0,255));this.a-=this.c?9:3+(7==this.b?2:0)},function(a){S(this,a,0,ld);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){S(this,a,1,pd);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){S(this,a,1,nd);this.a-=this.c?9:3+(7==this.b?2:0)}],Le=[function(a){S(this,a,0,rd);this.a-=this.c?11:6},function(a){S(this,a,P(this)?1:0,bd);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){S(this,a,P(this)?1:0,xd);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){a=Xc(this,a);Ic(this,a<<8);this.a-=this.c?4:3+(7== this.b?2:0)}],Ne=[function(a){S(this,a,0,vd);this.a-=this.c?9+(this.xb&1):3+(7==this.b?2:0)},function(a){S(this,a,0,td);this.a-=this.c?9:3+(7==this.b?2:0)},function(a){S(this,a,0,fd);this.a-=this.c?9+(this.xb&1):3+(7==this.b?2:0)},function(a){S(this,a,0,dd);this.a-=this.c?9:3+(7==this.b?2:0)}];function Cc(a){Te[a>>12].call(this,a)} var Te=[function(a){Ue[a>>8&15].call(this,a)},je,Zd,Jd,Fd,Hd,Ad,function(a){Ve[a>>8&15].call(this,a)},function(a){We[a>>8&15].call(this,a)},ke,$d,Kd,Gd,Id,se,Y],Ue=[function(a){Xe[a>>4&15].call(this,a)},Wd,Td,Ld,Md,Rd,Nd,Pd,he,he,ye,Ae,Ce,function(a){Ye[a>>6&3].call(this,a)},Y,Y],Ye=[function(a){a=this.f[7]+((a&63)<<1)&65535;var b=this.V(a|this.R);Q(this,this.f[5]);this.f[6]=a+2&65535;this.f[5]=b;this.a-=8},function(a){a=Sc(this,a,0);Mc(this,a);R(this,a);this.a-=11},function(a){var b=Oc(this);this.F= -this.a;Tc(this,a,0,b);R(this,b);this.a=this.F-le[this.c]},function(a){R(this,$c(this,a,this.Aa?65535:0));this.a-=this.c?9:3+(7==this.b?2:0)}],Xe=[function(a){Ze[a&15].call(this,a)},Y,Y,Y,fe,fe,fe,fe,qe,function(a){a&8?(this.C&49152||(this.C=this.C&-2017|(a&7)<<5,this.u|=1),this.a-=5):K(this,8,0,-8)},Ee,Ge,te,te,te,te],Ze=[ce,ve,pe,Vd,de,oe,function(){Nc(this);this.a-=13},function(){K(this,8,0,-8)},Y,Y,Y,Y,Y,Y,Y,Y],Ve=[me,me,ae,ae,Bd,Bd,Cd,Cd,we,we,Y,Y,Y,Y,re,re],We=[Ud,Sd,Od,Qd,Xd,Yd,Dd,Ed,be,ue, -Ie,Ke,Me,function(a){$e[a>>6&3].call(this,a)},Y,Y],$e=[Y,function(a){a=Sc(this,a,65536);Mc(this,a);R(this,a);this.a-=11},function(a){var b=Oc(this);this.F=this.a;Tc(this,a,65536,b);R(this,b);this.a=this.F-le[this.c]},Y]; +this.a;Tc(this,a,0,b);R(this,b);this.a=this.F-le[this.c]},function(a){R(this,$c(this,a,this.Aa?65535:0));this.a-=this.c?9:3+(7==this.b?2:0)}],Xe=[function(a){Ze[a&15].call(this,a)},Y,Y,Y,fe,fe,fe,fe,pe,function(a){a&8?(this.C&49152||(this.C=this.C&-2017|(a&7)<<5,this.u|=1),this.a-=5):K(this,8,0,-8)},Ee,Ge,te,te,te,te],Ze=[ce,ve,function(){Nc(this);this.u|=this.C&16;this.a-=13},Vd,de,oe,qe,function(){K(this,8,0,-8)},Y,Y,Y,Y,Y,Y,Y,Y],Ve=[me,me,ae,ae,Bd,Bd,Cd,Cd,we,we,Y,Y,Y,Y,re,re],We=[Ud,Sd,Od,Qd, +Xd,Yd,Dd,Ed,be,ue,Ie,Ke,Me,function(a){$e[a>>6&3].call(this,a)},Y,Y],$e=[Y,function(a){a=Sc(this,a,65536);Mc(this,a);R(this,a);this.a-=11},function(a){var b=Oc(this);this.F=this.a;Tc(this,a,65536,b);R(this,b);this.a=this.F-le[this.c]},Y]; function af(a){x.call(this,"ROM",a,af);this.W=this.c=null;this.i=a.addr;this.b=a.size;this.m=!1;this.g=a.alias;this.l=a.file;this.s=q(this.l);if(this.l){a=this.l;var b=la(this.s);"json"!=b&&"hex"!=b&&(a=v()+"/api/v1/dump?file="+this.l+"&format=bytes&decimal=true");var c=this;r(a,null,!0,function(a,b,f){f?(c.G("Unable to load ROM resource (error "+f+": "+a+")"),c.l=null):(Ra(c.pa,a,b),(a=ta(a,b))?(c.c=a.K,c.W=a.W):c.l=null);bf(c)})}}z(af);h=af.prototype; h.ia=function(a,b,c,d){this.h=b;this.a=c;this.D=d;bf(this)};h.ka=function(){this.W&&(this.D&&this.D.a(this.id,this.i,this.b,this.W),delete this.W);return!0};h.ja=function(){return!0}; function bf(a){if(!Va(a)){if(a.l){if(!a.c||!a.h)return;a.b||(a.b=a.c.length);if(a.c.length!=a.b)Wa(a,"ROM size ("+m(a.c.length,8,!0)+") does not match specified size ("+m(a.b,8,!0)+")");else{var b;a:{b=a.i;a.status(a.b+"-byte ROM at "+ka(b));if(57344<=b&&b<57344+H){var c={};b=(c[b]=[af.prototype.Zc,af.prototype.Ud,null,null,null,a.b>>1],c);if(cb(a.h,a,b,256,a.Ga)){b=a.m=!0;break a}}else if(Fb(a.h,b,a.b,gc)){for(c=0;c>>a.c;0=b.length)break;for(var k=k+2,n=b[k++]&255|(b[k++]&255)<<8,p=b[k++]&255|(b[k++]&255)<<8,l=l+((n&255)+(n>>8)+(p&255)+(p>>8)),u=k,w=n-=6;0=b.length)break;l+=b[k++]&255;if(l&255)break;if(w)for(;w--;)a.a.$a(p++,b[u++]&255);else p&1?G(a.a):null==d&&(d=p);g=!0}else k++;else k+=2}if(!g&&(null==c&&(c=e),null!=c)){for(g=0;g=b)a.preventDefault&&a.preventDefault(),64e.w&&(e.w-=32),e.c|=128,e.c&64&&Tb(e.a,e.aa))});this.B=Vb(52,4);this.$=Sb(this.a,function(){e.b|=128;e.b&64&&Tb(e.a,e.B)});cb(b,this,hf);eb(b,this.reset.bind(this));F(this)}; @@ -178,8 +178,8 @@ function pf(a,b){b|=0;if(b!==a.I){var c=a.o.readProgress;c&&(c=(c=E(c,"pcjs-prog function vf(a,b){if(a.i||!1===b)a.B="",a.i="",b||(a.g&&a.status(1==a.g?"tape detached":"tape unloaded"),a.s=lf,a.g=mf,uf(a))}h.save=function(){return(new O(this)).data()};h.restore=function(){return!0};h.Mc=function(){return this.b&65534};h.Hd=function(a){a&1&&(this.b&32768?(a&=-2,this.b&64&&Tb(this.a,this.M)):(this.b&=-129,this.b|=2048,this.A=0,Ub(this.a,this.R,1E3/Math.round(this.O/10))));this.b=this.b&-66|a&65};h.Lc=function(){this.b&=-129;this.b|=2048;return this.A};h.Gd=function(){}; var yf={},qf=(yf[65384]=[null,null,ac.prototype.Mc,ac.prototype.Hd,"PRS"],yf[65386]=[null,null,ac.prototype.Lc,ac.prototype.Gd,"PRB"],yf);function zf(a,b,c){x.call(this,"Disk",{id:a.pa+".disk"+m(++Af,4)},zf);this.controller=a;this.l=a.l;this.D=a.D;this.g=b;this.xa=b.name;this.wb=b.wb;Bf(this,c,b.U,b.Y,b.S,b.ha);F(this)}var Af=0;z(zf);h=zf.prototype;h.ia=function(a,b,c,d){this.D=d}; function Bf(a,b,c,d,e,f){a.mode=b;a.U=c;a.Y=d;a.S=e;a.ha=f;a.a=[];if("preload"!=a.mode){b=Array(a.U);for(c=0;c>2;var f=e=0,b=new DataView(b,0,d);a.a=Array(a.U);for(d=0;dc.indexOf("/api/v1/dump")&&(b=la(c),"json"==b||"gz"==b?f=encodeURI(c):(d="path",e="&mbhd=10",!c.indexOf("http:")||!c.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(b)?(d="disk",e="&mbhd=0"):ma(c,"/")&&(d="dir"),f=v()+"/api/v1/dump?"+d+"="+encodeURIComponent(c)+(a.wb?"":e)+"&format=json"));return!!r(f, +function Df(a,b,c,d,e){var f=c;if(a.h)return!0;a.xa=b;a.Ca=c;a.ac=q(c);a.h=e;a.i=a.controller;if(d){var g=new FileReader;g.onload=function(){var b=g.result,c,d=b?b.byteLength:0,e=ia[d];if(e){a.U=e[0];a.Y=e[1];a.S=e[2];a.ha=e[3]||512;c=a.ha>>2;var f=e=0,b=new DataView(b,0,d);a.a=Array(a.U);for(d=0;dc.indexOf("/api/v1/dump")&&(b=la(c),"json"==b||"gz"==b?f=encodeURI(c):(d="path",e="&mbhd=10",!c.indexOf("http:")||!c.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(b)?(d="disk",e="&mbhd=0"):ma(c,"/")&&(d="dir"),f=v()+"/api/v1/dump?"+d+"="+encodeURIComponent(c)+(a.wb?"":e)+"&format=json"));return!!r(f, null,!0,function(b,c,d){Ef(a,b,c,d)})} function Ef(a,b,c,d){var e=null;a.c=!1;var f=0>d&&a.l&&!a.l.j.N;if(d)a.controller.G('Unable to load disk "'+a.xa+'" (error '+d+": "+b+")",f);else{Ra(a.controller.pa,b,c);try{if(0g&&0c.indexOf("0x")&&'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+ c+")");if(k.length)if(1==k.length)t(k[0]);else{a.U=k.length;a.Y=k[0].length;a.S=k[0][0].length;var l=k[0][0][0];a.ha=l&&l.length||512;for(d=c=0;d>2,p=l.pattern;void 0===p&&(p=l.pattern=0);var u=l.data;if(void 0===u){var w=l.bytes;if(void 0!==w&&w.length){for(var D=n<<2,U=w.length;U