Added the PDP-10's four arithmetic flags along with a negate() function -- the first of our functions that actually needs to set those flags

This commit is contained in:
Jeff 2017-03-01 17:23:54 -08:00 committed by Jeff Parsons
commit 202374dd09
6 changed files with 417 additions and 283 deletions

View file

@ -16,7 +16,7 @@ dep pc 100
step 11
ex 0-17
;
echo Execute the BLT 8 times...
echo Execute BLT 8 times (note the weird value that SIMH moves on the first iteration (ie, from AC 0 to AC 10)
;
step
ex 0-17
@ -35,7 +35,7 @@ ex 0-17
step
ex 0-17
;
echo next up: HLRES 1,2
echo Execute HLRES 1,2
;
step 1
ex 0-17

View file

@ -583,7 +583,7 @@ PDP10.opFDVRB = function(op)
};
/**
* opMOVE(0o200000)
* opMOVE(0o200000): Move
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
@ -601,7 +601,7 @@ PDP10.opMOVE = function(op)
};
/**
* opMOVEI(0o201000)
* opMOVEI(0o201000): Move Immediate
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
@ -621,7 +621,7 @@ PDP10.opMOVEI = function(op)
};
/**
* opMOVEM(0o202000)
* opMOVEM(0o202000): Move to Memory
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
@ -639,7 +639,7 @@ PDP10.opMOVEM = function(op)
};
/**
* opMOVES(0o203000)
* opMOVES(0o203000): Move to Self
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
@ -660,62 +660,128 @@ PDP10.opMOVES = function(op)
};
/**
* opMOVS(0o204000)
* opMOVS(0o204000): Move Swapped
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Interchange the left and right halves of the word from the source specified by M and move it to the
* specified destination. The source is unaffected, the original contents of the destination are lost.
*
* NOTE: This is a "Basic" mode instruction: the source is [E] and the destination is [A] (opposite of "Memory").
*
* @this {CPUStatePDP10}
* @param {number} op
*/
PDP10.opMOVS = function(op)
{
this.opUndefined(op);
var src = this.readWord(this.regEA);
src = (src / PDP10.WORD_SHIFT) | ((src & PDP10.WORD_MASK) * PDP10.WORD_SHIFT);
this.writeWord(op & PDP10.OPCODE.A_MASK, src);
};
/**
* opMOVSI(0o205000)
* opMOVSI(0o205000): Move Swapped Immediate
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Interchange the left and right halves of the word from the source specified by M and move it to the
* specified destination. The source is unaffected, the original contents of the destination are lost.
*
* SIDEBAR: Swapping halves in immediate mode loads the word E,0 into AC. MOVSI is thus equivalent to HRLZI.
*
* NOTE: This is an "Immediate" mode instruction: the source is the word 0,E and the destination is [A].
*
* @this {CPUStatePDP10}
* @param {number} op
*/
PDP10.opMOVSI = function(op)
{
this.opUndefined(op);
this.writeWord(op & PDP10.OPCODE.A_MASK, this.regEA * PDP10.WORD_SHIFT);
};
/**
* opMOVSM(0o206000)
* opMOVSM(0o206000): Move Swapped to Memory
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Interchange the left and right halves of the word from the source specified by M and move it to the
* specified destination. The source is unaffected, the original contents of the destination are lost.
*
* NOTE: This is a "Memory" mode instruction: the source is [A] and the destination is [E] (opposite of "Basic").
*
* @this {CPUStatePDP10}
* @param {number} op
*/
PDP10.opMOVSM = function(op)
{
this.opUndefined(op);
var src = this.readWord(op & PDP10.OPCODE.A_MASK);
src = (src / PDP10.WORD_SHIFT) | ((src & PDP10.WORD_MASK) * PDP10.WORD_SHIFT);
this.writeWord(this.regEA, src);
};
/**
* opMOVSS(0o207000)
* opMOVSS(0o207000): Move Swapped to Self
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Interchange the left and right halves of the word from the source specified by M and move it to the
* specified destination. The source is unaffected, the original contents of the destination are lost.
*
* NOTE: This is a "Self" mode instruction: the source AND destination is [E] (and also [A] if A is non-zero).
*
* @this {CPUStatePDP10}
* @param {number} op
*/
PDP10.opMOVSS = function(op)
{
this.opUndefined(op);
var src = this.readWord(this.regEA);
src = (src / PDP10.WORD_SHIFT) | ((src & PDP10.WORD_MASK) * PDP10.WORD_SHIFT);
this.writeWord(this.regEA, src);
var acc = op & PDP10.OPCODE.A_MASK;
if (acc) this.writeWord(acc, src)
};
/**
* opMOVN(0o210000)
* opMOVN(0o210000): Move Negative
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Negate the word from the source specified by M and move it to the specified destination.
* If the source word is fixed point -2^35 (400000 000000) set the Overflow and Carry 1 flags.
*
* (Negating the equivalent floating point -1 * 2^127 sets the flags, but this is not a normalized
* number).
*
* If the source word is zero, set Carry 0 and Carry 1. The source is unaffected, the original
* contents of the destination are lost.
*
* NOTE: This is a "Basic" mode instruction: the source is [E] and the destination is [A] (opposite of "Memory").
*
* @this {CPUStatePDP10}
* @param {number} op
*/
PDP10.opMOVN = function(op)
{
this.opUndefined(op);
this.writeWord(op & PDP10.OPCODE.A_MASK, this.negate(this.readWord(this.regEA)));
};
/**
* opMOVNI(0o211000)
* opMOVNI(0o211000): Move Negative Immediate
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Negate the word from the source specified by M and move it to the specified destination.
* If the source word is fixed point -2^35 (400000 000000) set the Overflow and Carry 1 flags.
*
* (Negating the equivalent floating point -1 * 2^127 sets the flags, but this is not a normalized
* number).
*
* If the source word is zero, set Carry 0 and Carry 1. The source is unaffected, the original
* contents of the destination are lost.
*
* SIDEBAR: MOVNI loads AC with the negative of the word 0,E and can set no flags.
*
* NOTE: This is an "Immediate" mode instruction: the source is the word 0,E and the destination is [A].
*
* @this {CPUStatePDP10}
* @param {number} op
@ -726,7 +792,20 @@ PDP10.opMOVNI = function(op)
};
/**
* opMOVNM(0o212000)
* opMOVNM(0o212000): Move Negative to Memory
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Negate the word from the source specified by M and move it to the specified destination.
* If the source word is fixed point -2^35 (400000 000000) set the Overflow and Carry 1 flags.
*
* (Negating the equivalent floating point -1 * 2^127 sets the flags, but this is not a normalized
* number).
*
* If the source word is zero, set Carry 0 and Carry 1. The source is unaffected, the original
* contents of the destination are lost.
*
* NOTE: This is a "Memory" mode instruction: the source is [A] and the destination is [E] (opposite of "Basic").
*
* @this {CPUStatePDP10}
* @param {number} op
@ -737,7 +816,20 @@ PDP10.opMOVNM = function(op)
};
/**
* opMOVNS(0o213000)
* opMOVNS(0o213000): Move Negative to Self
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-11:
*
* Negate the word from the source specified by M and move it to the specified destination.
* If the source word is fixed point -2^35 (400000 000000) set the Overflow and Carry 1 flags.
*
* (Negating the equivalent floating point -1 * 2^127 sets the flags, but this is not a normalized
* number).
*
* If the source word is zero, set Carry 0 and Carry 1. The source is unaffected, the original
* contents of the destination are lost.
*
* NOTE: This is a "Self" mode instruction: the source AND destination is [E] (and also [A] if A is non-zero).
*
* @this {CPUStatePDP10}
* @param {number} op
@ -3996,7 +4088,7 @@ PDP10.getHR = function(op, dst, src)
dst = PDP10.WORD_MASK;
break;
case 0o600:
dst = (src > PDP10.MAX_POS? PDP10.WORD_MASK : 0);
dst = (src > PDP10.MAX_POS36? PDP10.WORD_MASK : 0);
break;
}
return dst;
@ -4021,7 +4113,7 @@ PDP10.setHR = function(op, dst, src)
dst += PDP10.WORD_MASK;
break;
case 0o600:
dst += (src > PDP10.MAX_POS? PDP10.WORD_MASK : 0);
dst += (src > PDP10.MAX_POS36? PDP10.WORD_MASK : 0);
break;
}
}

View file

@ -176,6 +176,7 @@ class CPUStatePDP10 extends CPUPDP10 {
{
this.regEA = this.regRA = this.regOP = 0;
this.regPC = this.lastPC = this.addrReset;
this.fOverflow = this.fCarry0 = this.fCarry1 = this.fNoDivide = false;
/*
* This is queried and displayed by the Panel when it's not displaying its own ADDRESS register
@ -327,25 +328,29 @@ class CPUStatePDP10 extends CPUPDP10 {
/**
* getOpcode()
*
* 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.
* 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.
* However, if a reference address (R) in regRA still needs to be decoded (due to indirection),
* we take care of that first.
*
* @this {CPUStatePDP10}
* @return {number} (-1 if the reference address in regRA has not yet been fully decoded)
*/
getOpcode()
{
if ((this.regRA & PDP10.OPCODE.I_BIT)) {
this.regRA = this.readWord(this.regEA);
} else {
this.regRA = this.regOP = this.readWord(this.lastPC = this.regPC);
}
/*
* Technically, we don't REALLY need to mask regRA with R_MASK, because all regRA accesses
* ignore any higher opcode bits, but let's keep things tidy.
* ignore any higher bits, but let's keep things tidy.
*/
if ((this.regRA & PDP10.OPCODE.I_BIT)) {
this.regRA = this.readWord(this.regEA) & PDP10.OPCODE.R_MASK;
} else {
this.regRA = (this.regOP = this.readWord(this.lastPC = this.regPC)) & PDP10.OPCODE.R_MASK;
}
this.regRA &= PDP10.OPCODE.R_MASK;
/*
* Bits 0-22 (I,X,Y) contain what we call a "reference address" (R), which is used to calculate an
@ -433,6 +438,32 @@ class CPUStatePDP10 extends CPUPDP10 {
this.regPC = addr % PDP10.ADDR_LIMIT;
}
/**
* negate(src)
*
* @this {CPUStatePDP10}
* @param {number} src (36-bit)
* @return {number} (negated 36-bit src)
*/
negate(src)
{
if (!src) {
this.fCarry = this.fCarry1 = true;
}
else {
/*
* In the non-zero case, it's always safe to subtract src from TWO_POW36, but since we have to check for
* the MIN_NEG36 case anyway, and since subtraction in that case doesn't alter src, we skip the subtraction.
*/
if (src == PDP10.MIN_NEG36) {
this.fOverflow = this.fCarry1 = true;
} else {
src = PDP10.TWO_POW36 - src;
}
}
return src;
}
/**
* addIRQ(vector, priority, message)
*

View file

@ -102,8 +102,16 @@ var PDP10 = {
DATA_LIMIT: Math.pow(2, 36),
WORD_SHIFT: Math.pow(2, 18),
WORD_MASK: 0o777777,
MAX_POS18: Math.pow(2, 17) - 1,
MAX_POS: Math.pow(2, 35) - 1,
/*
* 18-bit and 36-bit largest positive (and smallest negative) values; however, since we store all
* values as unsigned quantities, these are the unsigned equivalents.
*/
MAX_POS18: Math.pow(2, 17) - 1, // 131,071 (377777)
MIN_NEG18: Math.pow(2, 17), // -131,072 (400000)
MAX_POS36: Math.pow(2, 35) - 1, // 34,359,738,367 (377777 777777)
MIN_NEG36: Math.pow(2, 35), // -34,359,738,368 (400000 000000)
TWO_POW36: Math.pow(2, 36), // the two's complement of a 36-bit value is (value? TWO_POW36 - value : 0)
/*
* PDP-10 opcodes are 36-bit values, most of which use the following layout:

View file

@ -46,179 +46,181 @@ function Sa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return
function Ua(a){if(!Va){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,g=/([^&=]+)=?([^&]*)/g;d=g.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Va=c}return Va[a]}function Wa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Xa(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);g=!0}}function Ya(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Za(a){$a.init.push(a)}
function ab(a){if(bb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function cb(a){!bb&&a?(bb=!0,db&&eb("init"),gb&&eb("show")):bb=a}function eb(a){$a[a]&&ab($a[a])}var Va=null,$a={init:[],show:[],exit:[]},db=!1,gb=!1,bb=!0,Qa=null;Ya("onload",function(){db=!0;ab($a.init)});Ya("onpageshow",function(){gb=!0;ab($a.show)});Ya(Ta("Opera")||Ta("iOS")?"onunload":"onbeforeunload",function(){ab($a.exit)});
function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.cb=b.comment;this.ub=b;this.exports={};this.H=this.bindings={};a=this.id.indexOf(".");0>a?this.Ka=this.id:(this.La=this.id.substr(0,a),this.Ka=this.id.substr(a+1));this.j={ready:!1,Fa:!1,Ta:!1,U:!1,error:!1};this.Ma=null;this.j.error=!1;this.X=c||0;this.A=this.g=this.D=this.C=this.oa=null;w.push(this)}function pb(a,b,c){qb[a]&&b&&(qb[a][b]=c)}function rb(){return Date.now()||+new Date}
function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.cb=b.comment;this.ub=b;this.exports={};this.H=this.bindings={};a=this.id.indexOf(".");0>a?this.Ka=this.id:(this.La=this.id.substr(0,a),this.Ka=this.id.substr(a+1));this.j={ready:!1,Fa:!1,Ta:!1,U:!1,error:!1};this.Ma=null;this.j.error=!1;this.X=c||0;this.A=this.i=this.F=this.C=this.oa=null;w.push(this)}function pb(a,b,c){qb[a]&&b&&(qb[a][b]=c)}function rb(){return Date.now()||+new Date}
function u(a){window&&window.alert(a)}function sb(a){var b=!1;window&&(b=window.confirm(a));return b}function tb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<w.length;b++){var d=w[b];a&&d.id.indexOf(a)||c.push(d)}return c}function ub(a){if(void 0!==a){var b;for(b=0;b<w.length;b++)if(w[b].id===a)return w[b]}return null}
function vb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}
function wb(a,b){var c=B;b=C(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,g=0;g<e.length;g++){var f=e[g];if(1===f.nodeType){var h=f.getAttribute("class");if(h)for(var k=h.split(" "),m=0;m<k.length;m++)switch(h=k[m],h){case c+"-binding":(h=A(f))&&h.binding&&a.ga(h.type,h.binding,f,h.value),m=k.length}}}}
function vb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function x(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}
function wb(a,b){var c=B;b=C(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,g=0;g<e.length;g++){var f=e[g];if(1===f.nodeType){var h=f.getAttribute("class");if(h)for(var k=h.split(" "),m=0;m<k.length;m++)switch(h=k[m],h){case c+"-binding":(h=x(f))&&h.binding&&a.ga(h.type,h.binding,f,h.value),m=k.length}}}}
function C(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
function xb(a){for(var b=!0,c=yb[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],g=null;0<=zb.indexOf(e)&&(g=function(){return function(){xb(a)}}());var f=Ab[e];if(f)if(!g)b=f(d[1],d[2],d[3]);else{if(!f(g,d[1],d[2],d[3]))break}else{var b=!1,h=vb(d[1],a);if(h)if(f=Bb[e])b=f(h,d[2],d[3]);else{var k=h.exports;if(k&&(f=k[e]))if(b=!0,!g)b=f.call(h,d[2],d[3]);else if(!f.call(h,g,d[2],d[3]))break}}if(!b){u("Script error: "+e+(f?" failed":" unrecognized"));break}}c&&!c.length&&delete yb[a];return b}l=v.prototype;
l.toString=function(){return this.name?this.name:this.id||this.type};
l.ga=function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.oa=this.H[b]=c,c.value="",this.f=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.ca=function(a){this.f(a,this.Ka)}),!0;default:return!1}};l.log=function(){};l.f=function(){};
l.status=function(a){this.f(this.Ka+": "+a)};l.ca=function(a,b,c){c=c||this.type;b||u((c?c+": ":"")+a)};function Cb(a,b){a.j.error=!0;a.ca(b)}function Db(a){return a.j.error?(a.f(a.toString()+" error"),!0):!1}function Eb(a,b){b&&(a.j.ready?b():a.Ma=b);return a.j.ready}function E(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Ma;a.Ma=null;b&&b()}}function Fb(a,b){a.j.Fa&&(b?a.j.Ta=!0:void 0===b&&a.f(a.toString()+" busy"));return a.j.Fa}
l.status=function(a){this.f(this.Ka+": "+a)};l.ca=function(a,b,c){c=c||this.type;b||u((c?c+": ":"")+a)};function Cb(a,b){a.j.error=!0;a.ca(b)}function Db(a){return a.j.error?(a.f(a.toString()+" error"),!0):!1}function Eb(a,b){b&&(a.j.ready?b():a.Ma=b);return a.j.ready}function D(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.Ma;a.Ma=null;b&&b()}}function Fb(a,b){a.j.Fa&&(b?a.j.Ta=!0:void 0===b&&a.f(a.toString()+" busy"));return a.j.Fa}
function Gb(a,b){if(a.j.Ta)return a.j.Fa=!1,a.j.Ta=!1;if(a.j.error)return a.f(a.toString()+" error"),!1;a.j.Fa=b;return a.j.Fa}l.pa=function(){return this.j.U=!0};l.fa=function(a,b){b&&(this.j.U=!1);return!0};function Hb(a,b){if(a.A){a===a.A?b|=0:b=b||a.X;var c=a.A.X&b;return!!b&&c===b||!!(c&a.A.ib)}return!1}function Ib(a,b,c,d){a.A&&(!0===c||Hb(a,c|0))&&a.A.message(b,d)}
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
var qb=window?window.PCjs.Machines:{},w=window?window.PCjs.Components:[],yb=window?window.PCjs.Commands:{},zb=["hold","sleep","wait"],Ab={alert:function(a){u(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},Bb={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
var B="pdp10",Jb="PDPjs",Kb=Math.pow(2,18),Lb=Math.pow(2,18)-1,Mb=Math.pow(2,36),F=Math.pow(2,18),Nb=Math.pow(2,17)-1,Ob=Math.pow(2,35)-1,Pb=Math.pow(2,21),Qb=Math.pow(2,26),Rb=Math.pow(2,23),B="pdp10",Jb="PDPjs",G={cpu:1,trap:2,fault:4,"int":8,bus:16,memory:32,mmu:64,rom:128,device:256,panel:512,keyboard:1024,key:2048,paper:4096,read:16384,write:32768,serial:1048576,timer:2097152,speaker:16777216,computer:33554432,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};
function Sb(a,b){v.call(this,"Panel",a,512);this.L=this.M=0;this.W=b;this.i=this.J=this.u=this.v=0;this.N=this.O=-1;this.P=this.R=this.F=!1;this.S=Tb;this.B={};this.b={START:[1,1,!0,!1,this.Hb],STEP:[1,1,!1,!1,this.Ib],ENABLE:[1,1,!1,!1,this.Cb],CONT:[1,1,!0,!1,this.Ab],DEP:[0,0,!0,!1,this.Bb],EXAM:[1,1,!0,!1,this.Db],LOAD:[1,1,!0,!1,this.Fb],TEST:[0,0,!0,!1,this.Eb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Gb,a];this.A=this.g=this.D=this.C=null;this.exports={hold:this.yb,toggle:this.Rb,reset:this.Nb,
set:this.Qb};E(this)}p(Sb,v);l=Sb.prototype;l.reset=function(a){this.stop();a&&Ub(this,this.v=0)};
l.ga=function(a,b,c,d){if(this.C&&this.C.ga(a,b,c,d)||this.g&&this.g.ga(a,b,c,d)||this.A&&this.A.ga(a,b,c,d))return!0;switch(b){case "PC":return this.H[b]=c,this.M++,!0;default:return"led"==a||"rled"==a?(this.H[b]=c,this.B[b]=d?1:0,this.M++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.H[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Vb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Wb(a,b)}}(this,b),a.ontouchstart=
function(a,b){return function(c){Vb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Wb(a,b)}}(this,b),!0):v.prototype.ga.call(this,a,b,c,d)}};l.va=function(a,b,c,d){this.C=a;this.D=b;this.g=c;this.A=d;Xb(this);Yb(this)};l.pa=function(a,b){if(!b)if(this.W&&Zb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.fa=function(a){return a?this.save():!0};l.save=function(){var a=new H(this);a.set(0,[this.i,this.v,this.u]);return a.data()};
l.restore=function(a){if(a=a[0])$b(this,this.i=a[0]),Ub(this,this.v=a[1]),ac(this,a[2]);return!0};l.Nb=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}Yb(this);return!0};function bc(a,b,c){if(a=a.H[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Xb(a,b){for(var c in a.B)bc(a,c,null!=b?b:a.B[c])}function jc(a,b,c){if(a=a.H[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Yb(a){for(var b in a.b)jc(a,b,a.b[b][1])}
l.yb=function(a,b,c){if(Vb(this,b)){if(c){var d=this;setTimeout(function(){Wb(d,b);a&&a()},+c);return!1}Wb(this,b)}return!0};l.Qb=function(a,b){if("SR"==a)return ac(this,na(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,jc(this,a,c[1]),!0):!1};l.Rb=function(a){return Vb(this,a)?(Wb(this,a),!0):!1};function Vb(a,b){var c=a.b[b];return c?(jc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=kc&&(a.P=b==lc,a.R=b==mc),!0):!1}
function Wb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(jc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Hb=function(a){a||this.g.j.K||(this.g.u=this.i%Kb,this.b[nc]&&this.b[nc][1]&&oc(this.g))};l.Ib=function(){};l.Cb=function(a){a||this.g.V()};
l.Ab=function(a){if(!a&&!this.g.j.K)if(this.b[nc]&&this.b[nc][1])oc(this.g);else{if((a=this.A)&&!Fb(a,!0))Gb(a,!0),pc(a,0,null),Gb(a,!1);else try{var b=this.g.Ja(1);0<b&&(qc(this.g,b),rc(this.g,b,!0),sc(this.g,b))}catch(c){"number"!=typeof c&&Cb(this.g,c.stack||c.message)}this.stop();this.C&&I(this.C)}};l.Bb=function(a){a&&!this.g.j.K&&(this.P&&tc(this),a=Ub(this,this.v=this.u),this.S==Tb?uc(this.D,this.i,a):this.g.I(this.i,a))};
l.Db=function(a){if(!a&&!this.g.j.K){var b;this.R&&tc(this);this.S==Tb?b=vc(this.D,this.i):b=this.g.G(this.i);Ub(this,this.v=b)}};l.Fb=function(a){a||this.g.j.K||$b(this,this.u)};l.Eb=function(a){a?(this.F=!0,Xb(this,!0)):(this.F=!1,Xb(this),ac(this,0))};l.Gb=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function tc(a){var b=1,c=a.D.u;a.b[kc]&&a.b[kc][1]||(b=-b);$b(a,a.i&~c|a.i+b&c)}
function $b(a,b){a.i=b&a.D.u;if(a.N!==a.i){a.N=a.i;b=a.N;for(var c=0;22>c;c++){var d=a,e="A"+c,g=b&1<<c;d.B[e]=g;d.F||bc(d,e,g)}}}function Ub(a,b){a.J=b%Mb;if(a.O!==a.J){a.O=a.J;b=a.O;for(var c=0;16>c;c++){var d=a,e="D"+c,g=b&1<<c;d.B[e]=g;d.F||bc(d,e,g)}}return a.J}function ac(a,b){a.u=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.u&1<<b?1:0;Yb(a);return!0}l.stop=function(){$b(this,this.g.u)};
function Zb(){for(var a=C(document,B,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=ub(d.id);e||(e=new Sb(d,!0));wb(e,c)}}var Tb=7,lc="DEP",nc="ENABLE",mc="EXAM",kc="STEP";Za(Zb);function wc(a,b,c){v.call(this,"Bus",a,16);this.g=b;this.A=c;this.J=+a.busWidth||18;this.F=1<<this.J;this.u=this.F-1;this.i=Math.log2(16384);this.B=this.F/16384|0;this.v=0;this.b=[];a=new xc(this);yc(a,this.A);this.b=Array(this.B);for(b=0;b<this.B;b++)this.b[b]=a;E(this)}p(wc,v);l=wc.prototype;l.reset=function(){};
l.pa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.fa=function(a){return a?this.save():!0};l.save=function(){var a=new H(this);a.set(0,zc(this));return a.data()};l.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,g=Array(4096),f=0;f<d.length-1;)for(var h=d[f++],k=d[f++];h--;)g[e++]=k;d=g}e=this.b[c];if(!e||!e.restore(d)){u("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
function Ac(a,b,c,d){for(var e=b,g=c,f=e>>>a.i;0<g&&f<a.b.length;){var h=a.b[f],k=16384*f,m=16384-(e-k);m>g&&(m=g);if(h&&h.size){if(h.type==d){if(e+g<=h.w)return h.Ha+=h.w-e,h.w=e,!0;if(e>=h.w+h.Ha){m=h.size-(e-k);m>g&&(m=g);h.Ha=e-h.w+m;e=k+16384;g-=m;f++;continue}}return Bc(Cc,e,g)}e=new xc(a,e,m,16384,d);yc(e,a.A,h);a.b[f++]=e;e=k+16384;g-=m}return 0>=g?(a.status("Added "+(c>>10)+"Kb "+Dc[d]+" at "+pa(b)),!0):Bc(Ec,b,c)}
function vc(a,b){var c=a.b[(b&a.u)>>>a.i];a.v++;b=c.i(b&16383,b);a.v--;return b}function uc(a,b,c){var d=a.b[(b&a.u)>>>a.i];a.v++;d.D(c,b&16383,b);a.v--}function zc(a){for(var b=0,c=[],d=0;d<a.B;d++){var e=a.b[d];if(e.Va||e.wb){c[b++]=d;var g=b++;if(e=e.save()){for(var f=0,h=0,k=[];f<e.length;){for(var m=e[f],n=f+1;n<e.length&&e[n]===m;)n++;k[h++]=n-f;k[h++]=m;f=n}k.length<e.length&&(e=k)}c[g]=e}}return c}
l.xb=function(a){this.v||(this.A&&Hb(this.A,4)&&Ib(this.A,"memory fault on "+K(this.A,a),!0,!0),this.g.V())};function Bc(a,b,c){u("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Cc=1,Ec=2;function Fc(a){v.call(this,"Device",a,256)}p(Fc,v);l=Fc.prototype;l.va=function(a,b,c,d){this.D=b;this.C=a;this.g=c;this.A=d;E(this)};l.pa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.fa=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new H(this)).data()};
l.restore=function(){return!0};Za(function(){for(var a=C(document,B,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new Fc(c),wb(c,d)}}});function xc(a,b,c,d,e){this.u=a;this.id=Gc+=2;this.w=b;this.Ha=c;this.size=d||0;this.type=e||Hc;this.H=e==Ic;this.b=null;this.G=this.i=this.Xa;this.I=this.D=this.Ia;this.g=this.A=0;yc(this);this.Va=this.wb=!1;if(this.size){a=this.C=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Jc(this,Kc)}else Jc(this)}l=xc.prototype;l.save=function(){return this.C};
l.restore=function(a){return a&&this.size==a.length?(this.C=a,this.Va=!0):!1};function Jc(a,b){b||(b=Lc);Mc(a,b,void 0);Nc(a,b,void 0)}function Mc(a,b,c){c&&a.g||(a.G=b[0]||a.Xa);if(c||void 0===c)a.i=b[0]||a.Xa}function Nc(a,b,c){c&&a.A||(a.I=!a.H&&b[1]||a.Ia);if(c||void 0===c)a.D=b[1]||a.Ia}l.Ba=function(a,b){b?this.A++||Nc(this,Oc,!1):this.g++||Mc(this,Oc,!1)};function Pc(a,b){b?--a.A||(a.I=a.H?a.Ia:a.D):--a.g||(a.G=a.i)}
function yc(a,b,c){a.b=b;a.g=a.A=0;c&&((a.g=c.g)&&Mc(a,Oc,!1),(a.A=c.A)&&Nc(a,Oc,!1))}l.Xa=function(a,b){this.b&&Hb(this.b,32)&&Ib(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.u.xb(b);return-1};l.Ia=function(a,b,c){this.b&&Hb(this.b,32)&&Ib(this.b,"attempt to write "+K(this.b,a)+" to invalid addresses "+K(this.b,c),!0)};l.Lb=function(a){return this.C[a]};l.Ub=function(a,b){this.C[b]!=a&&(this.C[b]=a,this.Va=!0)};
l.Jb=function(a,b){if(this.b&&null!=this.w){var c=this.b;Qc(c,this.w+a,2,c.M)&&c.V(!1)}return this.i(a,b)};l.Tb=function(a,b,c){if(this.b&&null!=this.w){var d=this.b;Qc(d,this.w+b,2,d.J)&&d.V(!1)}this.H?this.Ia(a,0,c):this.D(a,b,c)};var Hc=0,Ic=2,Dc=["NONE","RAM","ROM"],Gc=0,Lc=[],Kc=[xc.prototype.Lb,xc.prototype.Ub],Oc=[xc.prototype.Jb,xc.prototype.Tb];
function Rc(a,b){v.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.Ca=0;this.Ra=b;this.W=c;this.Da=Math.round(this.Ra/1E4)/100;this.S=this.Da*this.W;this.Qa=this.ua=this.aa=this.ya=0;this.j.K=this.j.Pa=!1;this.j.Z=a.autoStart;"string"==typeof this.j.Z&&(this.j.Z="true"==this.j.Z);this.j.Ea=!1;this.sa=this.ha=0;this.ta=+a.csStart;this.da=+a.csInterval;this.ia=+a.csStop;this.J=[];this.fb=this.Ob.bind(this);this.O=this.F=this.M=this.N=this.B=this.ra=this.L=this.ja=this.Sa=this.R=0;this.xa=
null;E(this)}p(Rc,v);l=Rc.prototype;l.va=function(a,b,c,d){this.C=a;this.D=b;this.A=d;this.xa=a.u;for(a=0;a<Sc.length;a++)(b=this.H[Sc[a]])&&this.C.ga(null,Sc[a],b);E(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
l.pa=function(a,b){var c=Tc(this.C,"autoStart");null!=c?this.j.Z="true"==c?!0:"false"==c?!1:!!c:null==this.j.Z&&(this.j.Z=!this.A&&void 0===this.H.run);if(!b){if(a){Uc(this);if(!this.restore(a))return!1;Vc(this)}else this.reset();this.A?(a=this.A,b=this.j.Z,a.ya=!0,a.f("Type ? for help with PDPjs Debugger commands"),Wc(a),b||Xc(a),a.ua&&(b=a.ua,a.ua=null,Yc(a,b))):this.status("No debugger detected");this.j.Z||this.f("CPU will not be auto-started "+(this.xa?"(click Run to start)":"(type 'go' to start)"))}return!0};
l.fa=function(a){return a?this.save():!0};l.Z=function(){return this.j.K?!0:this.j.Z?(oc(this),!0):!1};l.mb=function(){return 0};function Vc(a){void 0===a.ta&&(a.ta=0);void 0===a.da&&(a.da=-1);void 0===a.ia&&(a.ia=-1);a.j.Ea=0<=a.ta&&0<a.da;a.j.Ea&&(a.sa=0,a.ha=a.ta-a.O)}function sc(a,b){if(a.j.Ea){var c=!1;a.sa=a.sa+a.mb()|0;a.ha-=b;0>=a.ha&&(a.ha+=a.da,c=!0);0<=a.ia&&a.ia<=Zc(a)&&(a.da=a.ia=-1,Vc(a),a.V(),c=!0);c&&a.f(Zc(a)+" cycles: checksum="+t(a.sa))}}
l.ga=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.H[b]=c,!0;case "run":return this.H[b]=c,c.onclick=function(){var a;if(a=d.C)if(a=d.C,a.j.U)a=!0;else{var b=null,c,h=tb(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.U);c++);c==h.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Ma?" (waiting for notification)":""))+".");a=!1}a&&(d.j.K?d.V():oc(d))},!0;case "speed":return this.H[b]=
c,!0;case "setSpeed":return this.H[b]=c,c.onclick=function(){td(d,d.W<<1,!0)},c.textContent=this.S.toFixed(2)+"Mhz",!0}return!1};function rc(a,b,c){a.O+=b;c&&(a.M=a.N=0)}function ud(a,b){var c=1;b&&1<a.W&&a.R&&(c=a.R/a.Da);a.Qa=Math.round(1E3/vd);a.ua=Math.floor(a.Ra/vd*c);b||(a.aa=a.ua);a.ya=0}function Zc(a){return a.O+a.F+a.M-a.N}function Uc(a){a.R=0;a.Sa=0;a.O=a.F=a.M=a.N=0;Vc(a);td(a,1)}
function td(a,b,c){var d=!1;if(void 0!==b){.8>a.R/a.S?b=1:d=!0;a.W=b;b=a.Da*a.W;if(a.S!=b){a.S=b;b=a.S.toFixed(2)+"Mhz";var e=a.H.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.C&&wd(a.C)}rc(a,a.F);a.F=0;a.B=rb();a.L=0;ud(a);return d}function xd(a,b){for(var c=a.J.length-1;0<=c;c--){var d=a.J[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function yd(a){for(var b=[],c=0;c<a.J.length;c++)b.push(a.J[c][0]);return b}
function qc(a,b){for(var c=a.J.length-1;0<=c;c--){var d=a.J[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function zd(a,b){var c=a.M-=a.N;a.N=0;b&&(a.M=0);return c}
l.Ob=function(){if(this.j.K){this.ya>=this.Ra&&ud(this,!0);this.ja=0;this.ra=rb();if(this.L){var a=this.ra-this.L;a>this.Qa&&(this.B+=a,this.B>this.ra&&(this.B=this.ra))}try{do{var b=xd(this,this.j.Ea?1:this.ua);try{this.Ja(b)}catch(e){if("number"!=typeof e)throw e;}b=zd(this,!0);this.ja+=b;this.F+=b;sc(this,b);qc(this,b);this.aa-=b;if(0>=this.aa){this.aa+=this.ua;++this.Sa>=Ad&&(this.C&&I(this.C,void 0),this.Sa=0);break}}while(this.j.K)}catch(e){this.V();this.C&&this.C.stop(rb(),Zc(this));Cb(this,
e.stack||e.message);return}if(this.j.K){a=setTimeout;b=this.fb;this.L=rb();var c=this.Qa;this.ja&&(c=Math.round(c*this.ja/this.ua));var c=c-(this.L-this.ra),d=this.L-this.B;d&&(this.R=Math.round(this.F/(10*d))/100,864E5<=d&&(this.O=0,td(this)));if(0>c||this.R<this.S)-1E3>c&&(this.B-=c),c=0;this.ya+=this.ja;this.L+=c;a(b,c)}}};
function oc(a,b){if(!Db(a))if(a.j.K)a.f(a.toString()+" busy");else{td(a);a.j.K=!0;a.j.Pa=!0;var c=a.H.run;c&&(c.textContent="Halt");a.C&&(b&&wd(a.C,!0),a.C.start(a.B,Zc(a)));a.A||a.status("Started");setTimeout(a.fb,0)}}l.Ja=function(){return 0};l.V=function(a){var b=!1;if(this.j.K){zd(this);rc(this,this.F);this.F=0;this.j.K=!1;if(b=this.H.run)b.textContent="Run";this.C&&this.C.stop(rb(),Zc(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var vd=30,Ad=15,Sc=["power","reset"];
function Bd(a){var b=+a.model||1001;Rc.call(this,a,1E6);this.eb=b;this.bb=+a.addrReset||0;this.tb=Cd.bind(this);this.b=L.bind(this);this.ka=null;this.ab=[];this.j.complete=!1}p(Bd,Rc);l=Bd.prototype;l.reset=function(){this.status("Model "+this.eb);this.j.K&&this.V();this.i=this.P=this.za=0;this.la=this.u=this.qa=this.bb;this.v=0;this.G=this.Kb;this.I=this.Vb;this.ka=null;Uc(this);this.j.error=!1;Rc.prototype.reset.call(this)};l.mb=function(){return 0};
l.save=function(){var a=new H(this);a.set(0,[this.i,this.P,this.za,this.u,this.qa,this.la,this.v]);a.set(1,[]);a.set(2,[this.O,this.W,this.j.Z]);a.set(3,Dd(this));a.set(4,yd(this));return a.data()};
l.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ga(b);this.i=b.next().value;this.P=b.next().value;this.za=b.next().value;this.u=b.next().value;this.qa=b.next().value;this.la=b.next().value;this.v=b.next().value;b=a[2];this.O=b[0];td(this,b[1]);this.j.Z=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.ab.length;d++){var e=this.ab[d];if(e.Sb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ka,this.ka=d)}a=a[4];for(b=0;b<this.J.length&&b<a.length;b++)this.J[b][0]=
a[b];return!0};function Ed(a,b){var c=a.u;a.u=(c+b)%Kb;return c}function Dd(a){var b=[];for(a=a.ka;a;)b.push(a.Sb),a=a.next;return b}l.Kb=function(a){var b=this.D;a=this.la=a;return b.b[(a&b.u)>>>b.i].G(a&16383,a)};l.Vb=function(a,b){var c=this.D;a=this.la=a;c.b[(a&c.u)>>>c.i].I(b,a&16383,a)};
l.Ja=function(a){this.j.complete=!0;var b=this.A?Fd(this.A)?1:this.j.Pa?-1:0:0,c=a?this.j.Pa?0:1:-1;this.j.Pa=!1;this.M=this.N=a;this.v=this.v&-5|(b?4:0);do{if(this.v){if(this.v&4){if(Gd(this.A,this.u,c)){this.V();break}++b||(this.v&=-5);c||c++}if(a=this.v&11)this.v&2?this.ka||(this.v&=-3):this.v&1&&this.v++,a=!1;if(a){if(this.v&4&&Gd(this.A,this.u,c)){this.V();break}if(0>c)break}}this.v&=15;this.P=this.P&4194304?this.G(this.i)&8388607:(this.za=this.G(this.qa=this.u))&8388607;this.i=this.P&262143;
if(a=this.P>>18&15)this.i=this.i+this.G(a)&Lb;this.P&4194304?a=-1:(this.u=(this.u+1)%Kb,a=this.za/Rb|0);0<=a&&this.tb(a)}while(0<this.N);return this.j.complete?this.M-this.N:!1===this.j.complete?-1:0};Za(function(){for(var a=C(document,B,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Bd(d);wb(d,c)}});function Cd(a){Hd[a>>4].call(this,a)}function M(a){this.b(a)}function Id(a){var b=a&15,c=this.G(this.i),d=this.G(b);this.I(b,Jd(a,d,c)+(c-(c&262143)))}
function Kd(a){var b=a&15,c=this.G(b);this.I(b,Jd(a,c,0))}function Ld(a){var b=this.G(a&15),c=this.G(this.i);this.I(this.i,Jd(a,c,b)+(b-(b&262143)))}function Md(a){var b=this.G(this.i),c,d=b;if(c=a&384)switch(d-=d&262143,c){case 256:d+=262143;break;case 384:d+=b>Ob?262143:0}b=d;this.I(this.i,b);(a&=15)&&this.I(a,b)}function Nd(a){var b=a&15,c=(this.G(this.i)&262143)*F,d=this.G(b);this.I(b,Jd(a,d,c)+c)}function Od(a){var b=a&15,c=this.i*F,d=this.G(b);this.I(b,Jd(a,d,c)+c)}
function Pd(a){var b=(this.G(a&15)&262143)*F,c=this.G(this.i);this.I(this.i,Jd(a,c,b)+b)}function Qd(a){var b=this.G(this.i),c=(b&262143)*F,b=Jd(a,b,c)+c;this.I(this.i,b);(a&=15)&&this.I(a,b)}function Rd(a){var b=a&15,c=this.G(this.i)&262143,d=this.G(b);this.I(b,Sd(a,d,c)+c)}function Td(a){var b=a&15,c=this.G(b);this.I(b,Sd(a,c,this.i)+this.i)}function Ud(a){var b=this.G(a&15)&262143,c=this.G(this.i);this.I(this.i,Sd(a,c,b)+b)}
function Vd(a){var b=this.G(this.i),c,d=b;if(c=a&384)switch(d&=262143,c){case 256:d+=262143*F;break;case 384:d+=b>Nb?262143*F:0}b=d;this.I(this.i,b);(a&=15)&&this.I(a,b)}function Wd(a){var b=a&15,c=this.G(this.i)/F|0,d=this.G(b);this.I(b,Sd(a,d,c)+c)}function Xd(a){var b=a&15,c=this.G(b);this.I(b,Sd(a,c,0))}function Yd(a){var b=this.G(a&15)/F|0,c=this.G(this.i);this.I(this.i,Sd(a,c,b)+b)}function Zd(a){var b=this.G(this.i),c=b/F|0,b=Sd(a,b,c)+c;this.I(this.i,b);(a&=15)&&this.I(a,b)}
function O(a){this.b(a)}function L(a){this.f("undefined opcode: "+pa(a));Ed(this,-1);this.V()}function Sd(a,b,c){switch(a&384){case 0:b-=b&262143;break;case 128:b=0;break;case 256:b=262143*F;break;case 384:b=c>Nb?262143*F:0}return b}function Jd(a,b,c){switch(a&384){case 0:b&=262143;break;case 128:b=0;break;case 256:b=262143;break;case 384:b=c>Ob?262143:0}return b}
var Hd=[M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
var B="pdp10",Jb="PDPjs",Kb=Math.pow(2,18),Lb=Math.pow(2,18)-1,Mb=Math.pow(2,36),F=Math.pow(2,18),Nb=Math.pow(2,17)-1,Ob=Math.pow(2,35)-1,Pb=Math.pow(2,35),Qb=Math.pow(2,36),Rb=Math.pow(2,21),Sb=Math.pow(2,26),Tb=Math.pow(2,23),B="pdp10",Jb="PDPjs",G={cpu:1,trap:2,fault:4,"int":8,bus:16,memory:32,mmu:64,rom:128,device:256,panel:512,keyboard:1024,key:2048,paper:4096,read:16384,write:32768,serial:1048576,timer:2097152,speaker:16777216,computer:33554432,log:268435456,warn:536870912,buffer:1073741824,
halt:-2147483648};
function Ub(a,b){v.call(this,"Panel",a,512);this.L=this.M=0;this.W=b;this.g=this.J=this.u=this.v=0;this.N=this.O=-1;this.P=this.R=this.G=!1;this.S=Vb;this.B={};this.b={START:[1,1,!0,!1,this.Hb],STEP:[1,1,!1,!1,this.Ib],ENABLE:[1,1,!1,!1,this.Cb],CONT:[1,1,!0,!1,this.Ab],DEP:[0,0,!0,!1,this.Bb],EXAM:[1,1,!0,!1,this.Db],LOAD:[1,1,!0,!1,this.Fb],TEST:[0,0,!0,!1,this.Eb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Gb,a];this.A=this.i=this.F=this.C=null;this.exports={hold:this.yb,toggle:this.Rb,reset:this.Nb,
set:this.Qb};D(this)}p(Ub,v);l=Ub.prototype;l.reset=function(a){this.stop();a&&Wb(this,this.v=0)};
l.ga=function(a,b,c,d){if(this.C&&this.C.ga(a,b,c,d)||this.i&&this.i.ga(a,b,c,d)||this.A&&this.A.ga(a,b,c,d))return!0;switch(b){case "PC":return this.H[b]=c,this.M++,!0;default:return"led"==a||"rled"==a?(this.H[b]=c,this.B[b]=d?1:0,this.M++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.H[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Xb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Yb(a,b)}}(this,b),a.ontouchstart=
function(a,b){return function(c){Xb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Yb(a,b)}}(this,b),!0):v.prototype.ga.call(this,a,b,c,d)}};l.va=function(a,b,c,d){this.C=a;this.F=b;this.i=c;this.A=d;Zb(this);$b(this)};l.pa=function(a,b){if(!b)if(this.W&&ac(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};l.fa=function(a){return a?this.save():!0};l.save=function(){var a=new H(this);a.set(0,[this.g,this.v,this.u]);return a.data()};
l.restore=function(a){if(a=a[0])bc(this,this.g=a[0]),Wb(this,this.v=a[1]),jc(this,a[2]);return!0};l.Nb=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}$b(this);return!0};function kc(a,b,c){if(a=a.H[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Zb(a,b){for(var c in a.B)kc(a,c,null!=b?b:a.B[c])}function lc(a,b,c){if(a=a.H[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function $b(a){for(var b in a.b)lc(a,b,a.b[b][1])}
l.yb=function(a,b,c){if(Xb(this,b)){if(c){var d=this;setTimeout(function(){Yb(d,b);a&&a()},+c);return!1}Yb(this,b)}return!0};l.Qb=function(a,b){if("SR"==a)return jc(this,na(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,lc(this,a,c[1]),!0):!1};l.Rb=function(a){return Xb(this,a)?(Yb(this,a),!0):!1};function Xb(a,b){var c=a.b[b];return c?(lc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=mc&&(a.P=b==nc,a.R=b==oc),!0):!1}
function Yb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(lc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Hb=function(a){a||this.i.j.K||(this.i.u=this.g%Kb,this.b[pc]&&this.b[pc][1]&&qc(this.i))};l.Ib=function(){};l.Cb=function(a){a||this.i.V()};
l.Ab=function(a){if(!a&&!this.i.j.K)if(this.b[pc]&&this.b[pc][1])qc(this.i);else{if((a=this.A)&&!Fb(a,!0))Gb(a,!0),rc(a,0,null),Gb(a,!1);else try{var b=this.i.Ja(1);0<b&&(sc(this.i,b),tc(this.i,b,!0),uc(this.i,b))}catch(c){"number"!=typeof c&&Cb(this.i,c.stack||c.message)}this.stop();this.C&&I(this.C)}};l.Bb=function(a){a&&!this.i.j.K&&(this.P&&vc(this),a=Wb(this,this.v=this.u),this.S==Vb?wc(this.F,this.g,a):this.i.I(this.g,a))};
l.Db=function(a){if(!a&&!this.i.j.K){var b;this.R&&vc(this);this.S==Vb?b=xc(this.F,this.g):b=this.i.D(this.g);Wb(this,this.v=b)}};l.Fb=function(a){a||this.i.j.K||bc(this,this.u)};l.Eb=function(a){a?(this.G=!0,Zb(this,!0)):(this.G=!1,Zb(this),jc(this,0))};l.Gb=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function vc(a){var b=1,c=a.F.u;a.b[mc]&&a.b[mc][1]||(b=-b);bc(a,a.g&~c|a.g+b&c)}
function bc(a,b){a.g=b&a.F.u;if(a.N!==a.g){a.N=a.g;b=a.N;for(var c=0;22>c;c++){var d=a,e="A"+c,g=b&1<<c;d.B[e]=g;d.G||kc(d,e,g)}}}function Wb(a,b){a.J=b%Mb;if(a.O!==a.J){a.O=a.J;b=a.O;for(var c=0;16>c;c++){var d=a,e="D"+c,g=b&1<<c;d.B[e]=g;d.G||kc(d,e,g)}}return a.J}function jc(a,b){a.u=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.u&1<<b?1:0;$b(a);return!0}l.stop=function(){bc(this,this.i.u)};
function ac(){for(var a=C(document,B,"panel"),b=0;b<a.length;b++){var c=a[b],d=x(c),e=ub(d.id);e||(e=new Ub(d,!0));wb(e,c)}}var Vb=7,nc="DEP",pc="ENABLE",oc="EXAM",mc="STEP";Za(ac);function yc(a,b,c){v.call(this,"Bus",a,16);this.i=b;this.A=c;this.J=+a.busWidth||18;this.G=1<<this.J;this.u=this.G-1;this.g=Math.log2(16384);this.B=this.G/16384|0;this.v=0;this.b=[];a=new zc(this);Ac(a,this.A);this.b=Array(this.B);for(b=0;b<this.B;b++)this.b[b]=a;D(this)}p(yc,v);l=yc.prototype;l.reset=function(){};
l.pa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.fa=function(a){return a?this.save():!0};l.save=function(){var a=new H(this);a.set(0,Bc(this));return a.data()};l.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,g=Array(4096),f=0;f<d.length-1;)for(var h=d[f++],k=d[f++];h--;)g[e++]=k;d=g}e=this.b[c];if(!e||!e.restore(d)){u("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
function Cc(a,b,c,d){for(var e=b,g=c,f=e>>>a.g;0<g&&f<a.b.length;){var h=a.b[f],k=16384*f,m=16384-(e-k);m>g&&(m=g);if(h&&h.size){if(h.type==d){if(e+g<=h.w)return h.Ha+=h.w-e,h.w=e,!0;if(e>=h.w+h.Ha){m=h.size-(e-k);m>g&&(m=g);h.Ha=e-h.w+m;e=k+16384;g-=m;f++;continue}}return Dc(Ec,e,g)}e=new zc(a,e,m,16384,d);Ac(e,a.A,h);a.b[f++]=e;e=k+16384;g-=m}return 0>=g?(a.status("Added "+(c>>10)+"Kb "+Fc[d]+" at "+pa(b)),!0):Dc(Gc,b,c)}
function xc(a,b){var c=a.b[(b&a.u)>>>a.g];a.v++;b=c.F(b&16383,b);a.v--;return b}function wc(a,b,c){var d=a.b[(b&a.u)>>>a.g];a.v++;d.C(c,b&16383,b);a.v--}function Bc(a){for(var b=0,c=[],d=0;d<a.B;d++){var e=a.b[d];if(e.Va||e.wb){c[b++]=d;var g=b++;if(e=e.save()){for(var f=0,h=0,k=[];f<e.length;){for(var m=e[f],n=f+1;n<e.length&&e[n]===m;)n++;k[h++]=n-f;k[h++]=m;f=n}k.length<e.length&&(e=k)}c[g]=e}}return c}
l.xb=function(a){this.v||(this.A&&Hb(this.A,4)&&Ib(this.A,"memory fault on "+K(this.A,a),!0,!0),this.i.V())};function Dc(a,b,c){u("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Ec=1,Gc=2;function Hc(a){v.call(this,"Device",a,256)}p(Hc,v);l=Hc.prototype;l.va=function(a,b,c,d){this.F=b;this.C=a;this.i=c;this.A=d;D(this)};l.pa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.fa=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){return(new H(this)).data()};
l.restore=function(){return!0};Za(function(){for(var a=C(document,B,"device"),b=0;b<a.length;b++){var c,d=a[b];c=x(d);switch(c.type){case "default":c=new Hc(c),wb(c,d)}}});function zc(a,b,c,d,e){this.u=a;this.id=Ic+=2;this.w=b;this.Ha=c;this.size=d||0;this.type=e||Jc;this.H=e==Kc;this.b=null;this.D=this.F=this.Xa;this.I=this.C=this.Ia;this.i=this.A=0;Ac(this);this.Va=this.wb=!1;if(this.size){a=this.g=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Lc(this,Mc)}else Lc(this)}l=zc.prototype;l.save=function(){return this.g};
l.restore=function(a){return a&&this.size==a.length?(this.g=a,this.Va=!0):!1};function Lc(a,b){b||(b=Nc);Oc(a,b,void 0);Pc(a,b,void 0)}function Oc(a,b,c){c&&a.i||(a.D=b[0]||a.Xa);if(c||void 0===c)a.F=b[0]||a.Xa}function Pc(a,b,c){c&&a.A||(a.I=!a.H&&b[1]||a.Ia);if(c||void 0===c)a.C=b[1]||a.Ia}l.Ba=function(a,b){b?this.A++||Pc(this,Qc,!1):this.i++||Oc(this,Qc,!1)};function Rc(a,b){b?--a.A||(a.I=a.H?a.Ia:a.C):--a.i||(a.D=a.F)}
function Ac(a,b,c){a.b=b;a.i=a.A=0;c&&((a.i=c.i)&&Oc(a,Qc,!1),(a.A=c.A)&&Pc(a,Qc,!1))}l.Xa=function(a,b){this.b&&Hb(this.b,32)&&Ib(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.u.xb(b);return-1};l.Ia=function(a,b,c){this.b&&Hb(this.b,32)&&Ib(this.b,"attempt to write "+K(this.b,a)+" to invalid addresses "+K(this.b,c),!0)};l.Lb=function(a){return this.g[a]};l.Ub=function(a,b){this.g[b]!=a&&(this.g[b]=a,this.Va=!0)};
l.Jb=function(a,b){if(this.b&&null!=this.w){var c=this.b;Sc(c,this.w+a,2,c.M)&&c.V(!1)}return this.F(a,b)};l.Tb=function(a,b,c){if(this.b&&null!=this.w){var d=this.b;Sc(d,this.w+b,2,d.J)&&d.V(!1)}this.H?this.Ia(a,0,c):this.C(a,b,c)};var Jc=0,Kc=2,Fc=["NONE","RAM","ROM"],Ic=0,Nc=[],Mc=[zc.prototype.Lb,zc.prototype.Ub],Qc=[zc.prototype.Jb,zc.prototype.Tb];
function Tc(a,b){v.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.Ca=0;this.Ra=b;this.W=c;this.Da=Math.round(this.Ra/1E4)/100;this.S=this.Da*this.W;this.Qa=this.ua=this.aa=this.ya=0;this.j.K=this.j.Pa=!1;this.j.Z=a.autoStart;"string"==typeof this.j.Z&&(this.j.Z="true"==this.j.Z);this.j.Ea=!1;this.sa=this.ha=0;this.ta=+a.csStart;this.da=+a.csInterval;this.ia=+a.csStop;this.L=[];this.fb=this.Ob.bind(this);this.P=this.J=this.N=this.O=this.G=this.ra=this.M=this.ja=this.Sa=this.R=0;this.xa=
null;D(this)}p(Tc,v);l=Tc.prototype;l.va=function(a,b,c,d){this.C=a;this.F=b;this.A=d;this.xa=a.u;for(a=0;a<Uc.length;a++)(b=this.H[Uc[a]])&&this.C.ga(null,Uc[a],b);D(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
l.pa=function(a,b){var c=Vc(this.C,"autoStart");null!=c?this.j.Z="true"==c?!0:"false"==c?!1:!!c:null==this.j.Z&&(this.j.Z=!this.A&&void 0===this.H.run);if(!b){if(a){Wc(this);if(!this.restore(a))return!1;Xc(this)}else this.reset();this.A?(a=this.A,b=this.j.Z,a.ya=!0,a.f("Type ? for help with PDPjs Debugger commands"),Yc(a),b||Zc(a),a.ua&&(b=a.ua,a.ua=null,td(a,b))):this.status("No debugger detected");this.j.Z||this.f("CPU will not be auto-started "+(this.xa?"(click Run to start)":"(type 'go' to start)"))}return!0};
l.fa=function(a){return a?this.save():!0};l.Z=function(){return this.j.K?!0:this.j.Z?(qc(this),!0):!1};l.mb=function(){return 0};function Xc(a){void 0===a.ta&&(a.ta=0);void 0===a.da&&(a.da=-1);void 0===a.ia&&(a.ia=-1);a.j.Ea=0<=a.ta&&0<a.da;a.j.Ea&&(a.sa=0,a.ha=a.ta-a.P)}function uc(a,b){if(a.j.Ea){var c=!1;a.sa=a.sa+a.mb()|0;a.ha-=b;0>=a.ha&&(a.ha+=a.da,c=!0);0<=a.ia&&a.ia<=ud(a)&&(a.da=a.ia=-1,Xc(a),a.V(),c=!0);c&&a.f(ud(a)+" cycles: checksum="+t(a.sa))}}
l.ga=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.H[b]=c,!0;case "run":return this.H[b]=c,c.onclick=function(){var a;if(a=d.C)if(a=d.C,a.j.U)a=!0;else{var b=null,c,h=tb(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.U);c++);c==h.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.Ma?" (waiting for notification)":""))+".");a=!1}a&&(d.j.K?d.V():qc(d))},!0;case "speed":return this.H[b]=
c,!0;case "setSpeed":return this.H[b]=c,c.onclick=function(){vd(d,d.W<<1,!0)},c.textContent=this.S.toFixed(2)+"Mhz",!0}return!1};function tc(a,b,c){a.P+=b;c&&(a.N=a.O=0)}function wd(a,b){var c=1;b&&1<a.W&&a.R&&(c=a.R/a.Da);a.Qa=Math.round(1E3/xd);a.ua=Math.floor(a.Ra/xd*c);b||(a.aa=a.ua);a.ya=0}function ud(a){return a.P+a.J+a.N-a.O}function Wc(a){a.R=0;a.Sa=0;a.P=a.J=a.N=a.O=0;Xc(a);vd(a,1)}
function vd(a,b,c){var d=!1;if(void 0!==b){.8>a.R/a.S?b=1:d=!0;a.W=b;b=a.Da*a.W;if(a.S!=b){a.S=b;b=a.S.toFixed(2)+"Mhz";var e=a.H.setSpeed;e&&(e.textContent=b);a.f("target speed: "+b)}c&&a.C&&yd(a.C)}tc(a,a.J);a.J=0;a.G=rb();a.M=0;wd(a);return d}function zd(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 Ad(a){for(var b=[],c=0;c<a.L.length;c++)b.push(a.L[c][0]);return b}
function sc(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 Bd(a,b){var c=a.N-=a.O;a.O=0;b&&(a.N=0);return c}
l.Ob=function(){if(this.j.K){this.ya>=this.Ra&&wd(this,!0);this.ja=0;this.ra=rb();if(this.M){var a=this.ra-this.M;a>this.Qa&&(this.G+=a,this.G>this.ra&&(this.G=this.ra))}try{do{var b=zd(this,this.j.Ea?1:this.ua);try{this.Ja(b)}catch(e){if("number"!=typeof e)throw e;}b=Bd(this,!0);this.ja+=b;this.J+=b;uc(this,b);sc(this,b);this.aa-=b;if(0>=this.aa){this.aa+=this.ua;++this.Sa>=Cd&&(this.C&&I(this.C,void 0),this.Sa=0);break}}while(this.j.K)}catch(e){this.V();this.C&&this.C.stop(rb(),ud(this));Cb(this,
e.stack||e.message);return}if(this.j.K){a=setTimeout;b=this.fb;this.M=rb();var c=this.Qa;this.ja&&(c=Math.round(c*this.ja/this.ua));var c=c-(this.M-this.ra),d=this.M-this.G;d&&(this.R=Math.round(this.J/(10*d))/100,864E5<=d&&(this.P=0,vd(this)));if(0>c||this.R<this.S)-1E3>c&&(this.G-=c),c=0;this.ya+=this.ja;this.M+=c;a(b,c)}}};
function qc(a,b){if(!Db(a))if(a.j.K)a.f(a.toString()+" busy");else{vd(a);a.j.K=!0;a.j.Pa=!0;var c=a.H.run;c&&(c.textContent="Halt");a.C&&(b&&yd(a.C,!0),a.C.start(a.G,ud(a)));a.A||a.status("Started");setTimeout(a.fb,0)}}l.Ja=function(){return 0};l.V=function(a){var b=!1;if(this.j.K){Bd(this);tc(this,this.J);this.J=0;this.j.K=!1;if(b=this.H.run)b.textContent="Run";this.C&&this.C.stop(rb(),ud(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var xd=30,Cd=15,Uc=["power","reset"];
function Dd(a){var b=+a.model||1001;Tc.call(this,a,1E6);this.eb=b;this.bb=+a.addrReset||0;this.tb=Ed.bind(this);this.b=L.bind(this);this.ka=null;this.ab=[];this.j.complete=!1}p(Dd,Tc);l=Dd.prototype;l.reset=function(){this.status("Model "+this.eb);this.j.K&&this.V();this.g=this.B=this.za=0;this.la=this.u=this.qa=this.bb;this.v=0;this.D=this.Kb;this.I=this.Vb;this.ka=null;Wc(this);this.j.error=!1;Tc.prototype.reset.call(this)};l.mb=function(){return 0};
l.save=function(){var a=new H(this);a.set(0,[this.g,this.B,this.za,this.u,this.qa,this.la,this.v]);a.set(1,[]);a.set(2,[this.P,this.W,this.j.Z]);a.set(3,Fd(this));a.set(4,Ad(this));return a.data()};
l.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ga(b);this.g=b.next().value;this.B=b.next().value;this.za=b.next().value;this.u=b.next().value;this.qa=b.next().value;this.la=b.next().value;this.v=b.next().value;b=a[2];this.P=b[0];vd(this,b[1]);this.j.Z=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.ab.length;d++){var e=this.ab[d];if(e.Sb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ka,this.ka=d)}a=a[4];for(b=0;b<this.L.length&&b<a.length;b++)this.L[b][0]=
a[b];return!0};function Gd(a,b){var c=a.u;a.u=(c+b)%Kb;return c}function Hd(a){a&&a!=Pb&&(a=Qb-a);return a}function Fd(a){var b=[];for(a=a.ka;a;)b.push(a.Sb),a=a.next;return b}l.Kb=function(a){var b=this.F;a=this.la=a;return b.b[(a&b.u)>>>b.g].D(a&16383,a)};l.Vb=function(a,b){var c=this.F;a=this.la=a;c.b[(a&c.u)>>>c.g].I(b,a&16383,a)};
l.Ja=function(a){this.j.complete=!0;var b=this.A?Id(this.A)?1:this.j.Pa?-1:0:0,c=a?this.j.Pa?0:1:-1;this.j.Pa=!1;this.N=this.O=a;this.v=this.v&-5|(b?4:0);do{if(this.v){if(this.v&4){if(Jd(this.A,this.u,c)){this.V();break}++b||(this.v&=-5);c||c++}if(a=this.v&11)this.v&2?this.ka||(this.v&=-3):this.v&1&&this.v++,a=!1;if(a){if(this.v&4&&Jd(this.A,this.u,c)){this.V();break}if(0>c)break}}this.v&=15;this.B=this.B&4194304?this.D(this.g):this.za=this.D(this.qa=this.u);this.B&=8388607;this.g=this.B&262143;if(a=
this.B>>18&15)this.g=this.g+this.D(a)&Lb;this.B&4194304?a=-1:(this.u=(this.u+1)%Kb,a=this.za/Tb|0);0<=a&&this.tb(a)}while(0<this.O);return this.j.complete?this.N-this.O:!1===this.j.complete?-1:0};Za(function(){for(var a=C(document,B,"cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Dd(d);wb(d,c)}});function Ed(a){Kd[a>>4].call(this,a)}function M(a){this.b(a)}function Ld(a){var b=a&15,c=this.D(this.g),d=this.D(b);this.I(b,Md(a,d,c)+(c-(c&262143)))}
function Nd(a){var b=a&15,c=this.D(b);this.I(b,Md(a,c,0))}function Od(a){var b=this.D(a&15),c=this.D(this.g);this.I(this.g,Md(a,c,b)+(b-(b&262143)))}function Pd(a){var b=this.D(this.g),c,d=b;if(c=a&384)switch(d-=d&262143,c){case 256:d+=262143;break;case 384:d+=b>Ob?262143:0}b=d;this.I(this.g,b);(a&=15)&&this.I(a,b)}function Qd(a){var b=a&15,c=(this.D(this.g)&262143)*F,d=this.D(b);this.I(b,Md(a,d,c)+c)}function Rd(a){var b=a&15,c=this.g*F,d=this.D(b);this.I(b,Md(a,d,c)+c)}
function Sd(a){var b=(this.D(a&15)&262143)*F,c=this.D(this.g);this.I(this.g,Md(a,c,b)+b)}function Td(a){var b=this.D(this.g),c=(b&262143)*F,b=Md(a,b,c)+c;this.I(this.g,b);(a&=15)&&this.I(a,b)}function Ud(a){var b=a&15,c=this.D(this.g)&262143,d=this.D(b);this.I(b,Vd(a,d,c)+c)}function Wd(a){var b=a&15,c=this.D(b);this.I(b,Vd(a,c,this.g)+this.g)}function Xd(a){var b=this.D(a&15)&262143,c=this.D(this.g);this.I(this.g,Vd(a,c,b)+b)}
function Yd(a){var b=this.D(this.g),c,d=b;if(c=a&384)switch(d&=262143,c){case 256:d+=262143*F;break;case 384:d+=b>Nb?262143*F:0}b=d;this.I(this.g,b);(a&=15)&&this.I(a,b)}function Zd(a){var b=a&15,c=this.D(this.g)/F|0,d=this.D(b);this.I(b,Vd(a,d,c)+c)}function $d(a){var b=a&15,c=this.D(b);this.I(b,Vd(a,c,0))}function ae(a){var b=this.D(a&15)/F|0,c=this.D(this.g);this.I(this.g,Vd(a,c,b)+b)}function be(a){var b=this.D(this.g),c=b/F|0,b=Vd(a,b,c)+c;this.I(this.g,b);(a&=15)&&this.I(a,b)}
function O(a){this.b(a)}function L(a){this.f("undefined opcode: "+pa(a));Gd(this,-1);this.V()}function Vd(a,b,c){switch(a&384){case 0:b-=b&262143;break;case 128:b=0;break;case 256:b=262143*F;break;case 384:b=c>Nb?262143*F:0}return b}function Md(a,b,c){switch(a&384){case 0:b&=262143;break;case 128:b=0;break;case 256:b=262143;break;case 384:b=c>Ob?262143:0}return b}
var Kd=[M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.I(a&15,this.G(this.i))},function(a){this.I(a&15,this.i)},function(a){this.I(this.i,this.G(a&15))},function(a){(a&=15)&&this.I(a,this.G(this.i))},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(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,function(a){a&=15;var b=this.G(a);this.I(a,this.G(this.i));this.I(this.i,b)},function(a){var b=!1;a&=15;for(var c=this.G(a),d=c/F|0,c=c&262143;!b;)this.I(c,this.G(d)),c==this.i&&(b=!0),d=d+1&262143,c=c+1&262143,this.j.K||(this.I(a,d*F+c),b||Ed(this,-1),b=!0)},function(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,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.I(a&15,this.D(this.g))},function(a){this.I(a&15,this.g)},function(a){this.I(this.g,this.D(a&15))},function(a){(a&=15)&&this.I(a,this.D(this.g))},function(a){var b=this.D(this.g),b=b/F|(b&262143)*F;this.I(a&15,b)},function(a){this.I(a&15,this.g*F)},function(a){a=this.D(a&15);a=a/F|(a&262143)*F;this.I(this.g,a)},function(a){var b=this.D(this.g),b=b/F|(b&262143)*F;this.I(this.g,b);(a&=15)&&this.I(a,
b)},function(a){this.I(a&15,Hd(this.D(this.g)))},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(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,function(a){a&=15;var b=this.D(a);this.I(a,this.D(this.g));this.I(this.g,b)},function(a){var b=!1;a&=15;for(var c=this.D(a),d=c/F|0,c=c&262143;!b;)this.I(c,this.D(d)),c==this.g&&(b=!0),d=d+1&262143,c=c+1&262143,this.j.K||(this.I(a,d*F+c),b||Gd(this,-1),b=!0)},function(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,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},Id,Kd,Ld,Md,Nd,Od,Pd,Qd,Id,Kd,Ld,Md,Nd,Od,Pd,Qd,Id,Kd,Ld,Md,Nd,Od,Pd,Qd,Id,Kd,Ld,Md,Nd,Od,Pd,Qd,Rd,Td,Ud,Vd,Wd,Xd,Yd,Zd,Rd,Td,Ud,Vd,Wd,Xd,Yd,Zd,Rd,Td,Ud,Vd,Wd,Xd,Yd,Zd,Rd,Td,Ud,Vd,Wd,Xd,Yd,Zd,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},Ld,Nd,Od,Pd,Qd,Rd,Sd,Td,Ld,Nd,Od,Pd,Qd,Rd,Sd,Td,Ld,Nd,Od,Pd,Qd,Rd,Sd,Td,Ld,Nd,Od,Pd,Qd,Rd,Sd,Td,Ud,Wd,Xd,Yd,Zd,$d,ae,be,Ud,Wd,Xd,Yd,Zd,
$d,ae,be,Ud,Wd,Xd,Yd,Zd,$d,ae,be,Ud,Wd,Xd,Yd,Zd,$d,ae,be,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O];
function $d(a){v.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.v=a.file;this.F=qa(this.v);if(this.v){a=this.v;var b=ra(this.F);"json"!=b&&"hex"!=b&&(a=ya()+"/api/v1/dump?file="+this.v+"&format=bytes&decimal=true");var c=this;Fa(a,null,!0,function(a,b,g){g?(c.ca("Unable to load ROM resource (error "+g+": "+a+")"),c.v=null):(pb(c.La,a,b),(a=Ga(a,b))?(c.b=a.Y,c.T=a.T):c.v=null);ae(c)})}}p($d,v);
$d.prototype.va=function(a,b,c,d){this.D=b;this.g=c;this.A=d;ae(this)};$d.prototype.pa=function(){this.T&&(this.A&&be(this.A,this.id,this.B,this.u,this.T),delete this.T);return!0};$d.prototype.fa=function(){return!0};
function ae(a){if(!Eb(a)){if(a.v){if(!a.b||!a.D)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Cb(a,"ROM size ("+t(a.b.length,8,!0)+") does not match specified size ("+t(a.u,8,!0)+")");else{var b;b=a.B;if(Ac(a.D,b,a.u,Ic)){var c;for(c=0;c<a.b.length;c++)uc(a.D,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.i?b.push(a.i):null!=a.i&&a.i.length&&(b=a.i);for(c=0;c<b.length;c++){for(var d=a,e=b[c],g=d.D,f=d.u,h=[],k=d.B>>>g.i;0<f&&k<g.b.length;)h.push(g.b[k++]),f-=16384;g=d.D;d=d.u;f=0;for(e>>>=
g.i;0<d&&e<g.b.length;){k=h[f++];if(!k)break;g.b[e++]=k;d-=16384}}delete a.b}}}E(a)}}Za(function(){for(var a=C(document,B,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new $d(d);wb(d,c)}});
function ce(a){v.call(this,"RAM",a);this.T=this.Aa=null;this.i=+a.addr;this.u=+a.size;this.na=a.load;this.ma=a.exec;null!=this.na&&(this.na=+this.na);null!=this.ma&&(this.ma=+this.ma);this.v=this.F=!1;this.b=a.file;this.B=qa(this.b);if(this.b){a=this.b;var b=ra(this.B);"json"!=b&&"hex"!=b&&(a=ya()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Fa(a,null,!0,function(a,b,g){g?(c.ca("Unable to load RAM resource (error "+g+": "+a+")"),c.b=null):(pb(c.La,a,b),(a=Ga(a,b))?(c.Aa=a.Aa,
c.T=a.T,null==c.na&&(c.na=a.na),null==c.ma&&(c.ma=a.ma)):c.b=null);de(c)})}}p(ce,v);ce.prototype.va=function(a,b,c,d){this.D=b;this.g=c;this.A=d;de(this)};ce.prototype.pa=function(a,b){this.T&&(this.A&&be(this.A,this.id,this.i,this.u,this.T),delete this.T);b||this.reset();return!0};ce.prototype.fa=function(){return!0};
function de(a){if(a.D&&(!a.v&&a.u&&(Ac(a.D,a.i,a.u,1)?a.v=!0:a.u=0),!Eb(a))){if(!a.v)u("No RAM allocated");else if(a.b){if(!a.Aa)return;ee(a,a.Aa,a.na,a.ma,a.i)?a.status('Loaded image "'+a.B+'"'):a.ca('Error loading image "'+a.B+'"')}a.F=!0;E(a)}}
ce.prototype.reset=function(){if(this.v&&!this.F){for(var a=this.D,b=this.i,c=this.u,d=b&16383,b=b>>>a.i;0<c&&b<a.b.length;){var e=a.b[b],g=c,f=0,h,d=d||0,f=f||0;0>f&&f>=ma&&(f+=la);f=Math.trunc(Math.abs(f))%la;void 0===g&&(g=e.size);for(h=d;g--&&h<e.size;h++)e.D(f,d,e.w+d);c-=16384;b++;d=0}this.Aa&&ee(this,this.Aa,this.na,this.ma,this.i,!this.A)}this.F=!1};
function ee(a,b,c,d,e,g){var f=!1;null==c&&(c=e);if(null!=c){for(f=0;f<b.length;f++)uc(a.D,c+f,b[f]);f=!0}f&&(null==d&&(a.g.V(),g=!1),null!=d&&(a=a.g,a.bb=d,a.u=d%Kb,g?a.j.U?a.j.K||oc(a):a.j.Z=!0:a.A&&a.j.U?a.V()||a.C.j.reset||(Wc(a.A),I(a.C,-1)):!1===g&&a.V(),!a.j.K&&a.xa&&a.xa.stop()));return f}Za(function(){for(var a=C(document,B,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new ce(d);wb(d,c)}});
function fe(a){v.call(this,"SerialPort",a,1048576);this.v=a.upperCase;"string"==typeof this.v&&(this.v="true"==this.v);this.u=!0;this.i=[];var b=a.binding;if("console"!=b){var c;a=ge;b&&(void 0===c&&(c="Panel"),(c=vb(c,this.id))&&(b=c.H[b])&&this.ga(null,a,b))}this.b=this.B=null;this.exports={connect:this.ob,receiveData:this.Na,receiveStatus:this.Mb,setConnection:this.Pb}}p(fe,v);l=fe.prototype;
l.ga=function(a,b,c){var d=this;switch(b){case ge:return this.H[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Za:q.sb:46==c?b=q.Za:a.ctrlKey&&c>=q.Ya&&c<=q.vb&&(b=c-(q.Ya-q.pb));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.rb&&(b=q.qb);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.va=function(a,b,c,d){this.C=a;this.D=b;this.g=c;this.A=d;E(this)};
l.ob=function(a){if(!this.b){var b=Tc(this.C,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.Ka)return;c=Ca(c[1]);if(this.b=ub(c)){var e=this.b.exports;if(e){var g=e.connect;g&&g.call(this.b,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.La+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.pa=function(a,b){if(!b)if(this.ob(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0};
l.fa=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new H(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;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.i.push(b)}else this.i=this.i.concat(a);return!0};l.Mb=function(){};l.Pb=function(a,b){return this.b?!1:(this.b=a,this.B=b,!0)};var ge="buffer";
Za(function(){for(var a=C(document,B,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new fe(d);wb(d,c)}});function he(a){v.call(this,"Debugger",a);this.ba=+a.base||16;this.la=!1;this.B=0;this.P=!1;this.v=-1;this.u=[];this.W={}}p(he,v);he.prototype.nb=function(){return-1};he.prototype.Wa=function(){};
function ie(a,b,c,d){if(c)if(b){0>a.v&&a.u.length&&(a.v=0);if(0>a.v||b!=a.u[a.v])a.u.splice(0,0,b),a.v=0;a.v--}else a.P?b="end":b=a.u[a.v+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var g=0;g<=b.length;g++){var f=b.charAt(g);if('"'==f||"'"==f)e?f==e&&(e=null):e=f;else if(f==d&&!e||!f)a.push(Ca(b.substring(c,g))),c=g+1}}return a}
function je(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),g=a.pop();switch(d){case "*":d=g*e;break;case "/":if(!e)return!1;d=g/e;break;case "%":if(!e)return!1;d=g%e;break;case "+":d=g+e;break;case "-":d=g-e;break;case "<<":d=g<<e;break;case ">>":d=g>>e;break;case ">>>":d=g>>>e;break;case "<":d=g<e?1:0;break;case "<=":d=g<=e?1:0;break;case ">":d=g>e?1:0;break;case ">=":d=g>=e?1:0;break;case "==":d=g==e?1:0;break;case "!=":d=g!=e?1:0;break;case "&":d=g&e;break;
O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O];
function ce(a){v.call(this,"ROM",a,128);this.T=this.b=null;this.B=+a.addr;this.u=+a.size;this.g=a.alias;"string"==typeof this.g&&(this.g=eval(this.g));this.v=a.file;this.G=qa(this.v);if(this.v){a=this.v;var b=ra(this.G);"json"!=b&&"hex"!=b&&(a=ya()+"/api/v1/dump?file="+this.v+"&format=bytes&decimal=true");var c=this;Fa(a,null,!0,function(a,b,g){g?(c.ca("Unable to load ROM resource (error "+g+": "+a+")"),c.v=null):(pb(c.La,a,b),(a=Ga(a,b))?(c.b=a.Y,c.T=a.T):c.v=null);de(c)})}}p(ce,v);
ce.prototype.va=function(a,b,c,d){this.F=b;this.i=c;this.A=d;de(this)};ce.prototype.pa=function(){this.T&&(this.A&&ee(this.A,this.id,this.B,this.u,this.T),delete this.T);return!0};ce.prototype.fa=function(){return!0};
function de(a){if(!Eb(a)){if(a.v){if(!a.b||!a.F)return;a.u||(a.u=a.b.length);if(a.b.length!=a.u)Cb(a,"ROM size ("+t(a.b.length,8,!0)+") does not match specified size ("+t(a.u,8,!0)+")");else{var b;b=a.B;if(Cc(a.F,b,a.u,Kc)){var c;for(c=0;c<a.b.length;c++)wc(a.F,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.g?b.push(a.g):null!=a.g&&a.g.length&&(b=a.g);for(c=0;c<b.length;c++){for(var d=a,e=b[c],g=d.F,f=d.u,h=[],k=d.B>>>g.g;0<f&&k<g.b.length;)h.push(g.b[k++]),f-=16384;g=d.F;d=d.u;f=0;for(e>>>=
g.g;0<d&&e<g.b.length;){k=h[f++];if(!k)break;g.b[e++]=k;d-=16384}}delete a.b}}}D(a)}}Za(function(){for(var a=C(document,B,"rom"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new ce(d);wb(d,c)}});
function fe(a){v.call(this,"RAM",a);this.T=this.Aa=null;this.g=+a.addr;this.u=+a.size;this.na=a.load;this.ma=a.exec;null!=this.na&&(this.na=+this.na);null!=this.ma&&(this.ma=+this.ma);this.v=this.G=!1;this.b=a.file;this.B=qa(this.b);if(this.b){a=this.b;var b=ra(this.B);"json"!=b&&"hex"!=b&&(a=ya()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Fa(a,null,!0,function(a,b,g){g?(c.ca("Unable to load RAM resource (error "+g+": "+a+")"),c.b=null):(pb(c.La,a,b),(a=Ga(a,b))?(c.Aa=a.Aa,
c.T=a.T,null==c.na&&(c.na=a.na),null==c.ma&&(c.ma=a.ma)):c.b=null);ge(c)})}}p(fe,v);fe.prototype.va=function(a,b,c,d){this.F=b;this.i=c;this.A=d;ge(this)};fe.prototype.pa=function(a,b){this.T&&(this.A&&ee(this.A,this.id,this.g,this.u,this.T),delete this.T);b||this.reset();return!0};fe.prototype.fa=function(){return!0};
function ge(a){if(a.F&&(!a.v&&a.u&&(Cc(a.F,a.g,a.u,1)?a.v=!0:a.u=0),!Eb(a))){if(!a.v)u("No RAM allocated");else if(a.b){if(!a.Aa)return;he(a,a.Aa,a.na,a.ma,a.g)?a.status('Loaded image "'+a.B+'"'):a.ca('Error loading image "'+a.B+'"')}a.G=!0;D(a)}}
fe.prototype.reset=function(){if(this.v&&!this.G){for(var a=this.F,b=this.g,c=this.u,d=b&16383,b=b>>>a.g;0<c&&b<a.b.length;){var e=a.b[b],g=c,f=0,h,d=d||0,f=f||0;0>f&&f>=ma&&(f+=la);f=Math.trunc(Math.abs(f))%la;void 0===g&&(g=e.size);for(h=d;g--&&h<e.size;h++)e.C(f,d,e.w+d);c-=16384;b++;d=0}this.Aa&&he(this,this.Aa,this.na,this.ma,this.g,!this.A)}this.G=!1};
function he(a,b,c,d,e,g){var f=!1;null==c&&(c=e);if(null!=c){for(f=0;f<b.length;f++)wc(a.F,c+f,b[f]);f=!0}f&&(null==d&&(a.i.V(),g=!1),null!=d&&(a=a.i,a.bb=d,a.u=d%Kb,g?a.j.U?a.j.K||qc(a):a.j.Z=!0:a.A&&a.j.U?a.V()||a.C.j.reset||(Yc(a.A),I(a.C,-1)):!1===g&&a.V(),!a.j.K&&a.xa&&a.xa.stop()));return f}Za(function(){for(var a=C(document,B,"ram"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new fe(d);wb(d,c)}});
function ie(a){v.call(this,"SerialPort",a,1048576);this.v=a.upperCase;"string"==typeof this.v&&(this.v="true"==this.v);this.u=!0;this.g=[];var b=a.binding;if("console"!=b){var c;a=je;b&&(void 0===c&&(c="Panel"),(c=vb(c,this.id))&&(b=c.H[b])&&this.ga(null,a,b))}this.b=this.B=null;this.exports={connect:this.ob,receiveData:this.Na,receiveStatus:this.Mb,setConnection:this.Pb}}p(ie,v);l=ie.prototype;
l.ga=function(a,b,c){var d=this;switch(b){case je:return this.H[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Za:q.sb:46==c?b=q.Za:a.ctrlKey&&c>=q.Ya&&c<=q.vb&&(b=c-(q.Ya-q.pb));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.rb&&(b=q.qb);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.va=function(a,b,c,d){this.C=a;this.F=b;this.i=c;this.A=d;D(this)};
l.ob=function(a){if(!this.b){var b=Vc(this.C,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.Ka)return;c=Ca(c[1]);if(this.b=ub(c)){var e=this.b.exports;if(e){var g=e.connect;g&&g.call(this.b,this.u);if(this.B=e.receiveData){this.u=a;this.status("Connected "+this.La+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};l.pa=function(a,b){if(!b)if(this.ob(this.u),!a)this.reset();else if(!this.restore(a))return!1;return!0};
l.fa=function(a){return a?this.save():!0};l.reset=function(){};l.save=function(){var a=new H(this);a.set(0,[]);return a.data()};l.restore=function(){return!0};l.Na=function(a){if("number"==typeof a)this.g.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.g.push(b)}else this.g=this.g.concat(a);return!0};l.Mb=function(){};l.Pb=function(a,b){return this.b?!1:(this.b=a,this.B=b,!0)};var je="buffer";
Za(function(){for(var a=C(document,B,"serial"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new ie(d);wb(d,c)}});function ke(a){v.call(this,"Debugger",a);this.ba=+a.base||16;this.la=!1;this.B=0;this.P=!1;this.v=-1;this.u=[];this.W={}}p(ke,v);ke.prototype.nb=function(){return-1};ke.prototype.Wa=function(){};
function le(a,b,c,d){if(c)if(b){0>a.v&&a.u.length&&(a.v=0);if(0>a.v||b!=a.u[a.v])a.u.splice(0,0,b),a.v=0;a.v--}else a.P?b="end":b=a.u[a.v+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var g=0;g<=b.length;g++){var f=b.charAt(g);if('"'==f||"'"==f)e?f==e&&(e=null):e=f;else if(f==d&&!e||!f)a.push(Ca(b.substring(c,g))),c=g+1}}return a}
function me(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),g=a.pop();switch(d){case "*":d=g*e;break;case "/":if(!e)return!1;d=g/e;break;case "%":if(!e)return!1;d=g%e;break;case "+":d=g+e;break;case "-":d=g-e;break;case "<<":d=g<<e;break;case ">>":d=g>>e;break;case ">>>":d=g>>>e;break;case "<":d=g<e?1:0;break;case "<=":d=g<=e?1:0;break;case ">":d=g>e?1:0;break;case ">=":d=g>=e?1:0;break;case "==":d=g==e?1:0;break;case "!=":d=g!=e?1:0;break;case "&":d=g&e;break;
case "^":d=g^e;break;case "|":d=g|e;break;case "&&":d=g&&e?1:0;break;case "||":d=g||e?1:0;break;default:return!1}a.push(d|0)}return!0}
function P(a,b,c){var d;if(b){b=ke(a,b);for(var e=0,g=!1,f=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var n=m[e++],r=n.length,n=Ca(n);if(!n){g=!0;break}n=le(a,n,null,!1===c);if(void 0===n){g=!0;c=!1;break}h.push(n);if(e==m.length)break;var n=m[e++],y=n.length;k.length&&me[n]<me[k[k.length-1]]&&je(h,k,1);k.push(n);b=b.substr(r+y)}je(h,k)&&1==h.length||(g=!0);g?c&&a.f("error parsing '"+f+"' at character "+(f.length-b.length)):(d=h.pop(),c&&ne(a,null,
d))}return d}function ke(a,b){for(var c,d=a.la?"(":"{",e=a.la?")":"}",g=new RegExp(a.la?"\\((.*?)\\)":"\\{(.*?)\\}");(c=b.match(g))&&!(0<=c[1].indexOf(d));){var f=P(a,c[1]);b=b.replace(d+c[1]+e,null!=f?K(a,f):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(a=b;b=a.match(/\$([a-z]+)/i);){c=null;switch(b[1].toLowerCase()){case "ops":c=0}if(null==c)break;a=a.replace(b[0],c.toString())}return a}
function le(a,b,c,d){var e;null!=b?(e=a.nb(b),0<=e?e=a.Wa(e):(e=a.W[b],null==e&&(e=na(b,a.ba))),null!=e||d||a.f("invalid "+(c?c:"value")+": "+b)):d||a.f("missing "+(c||"value"));return e}
function ne(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var g=4,f="";if(!g||4<g)g=4;for(var h=0;h<g;h++){f&&(f=","+f);var k=d&255,m=void 0,n=8,r="";n?32<n&&(n=32):n=32;for(var y=null==k||isNaN(k),U=m=m||n;0<n--;)U||(r=","+r,U=m),r=(y?"?":k&1?"1":"0")+r,k>>=1,U--;f=r+f;d>>=8}d=t(c,0,!0)+" "+c+". "+pa(c,0,!0)+" "+("0b"+f);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e}
function oe(a,b){if(b)return ne(a,b,a.W[b]);var c=0;for(b in a.W)ne(a,b,a.W[b]),c++;return 0<c}function K(a,b,c){c=void 0===c?0:c;switch(a.ba){case 8:b=pa(b,0<c?(c+2)/3|0:0);break;case 10:(a=0<c?Math.ceil(.3*c):0)?11<a&&(a=11):a=b&-65536?10:5;b=oa(b,10,a);break;default:b=t(b,0<c?c+3>>2:0)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}var me={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function pe(a){he.call(this,a);this.ya=!1;this.la=!0;this.xa=Q();this.L=Q(0);this.ja=Q(0);this.da=Q(0);this.F=[];this.b=this.M=this.J=[];qe(this);this.R=this.ka=0;this.i=[];this.sa=void 0;re(this);this.A=this;this.qa={};this.X=this.ib=0;this.S=null;this.O=[];se(this,a.messages);this.ua=a.commands;this.N=0;this.Da=this.ta=null;this.B=this.Ca=this.za=this.ia=this.ra=0;this.ha=this.aa=null;var b=this;window?void 0===window[B]&&(window[B]=function(a){return Yc(b,a)}):void 0===global[B]&&(global[B]=function(a){return Yc(b,
a)})}p(pe,he);function S(a){a=a&&a.w;null==a&&(a=-1);return a}function Q(a,b,c){return{w:void 0===a?null:a,lb:void 0===b?!1:b,ea:!1,ba:c}}function te(a,b,c,d){a.w=b;a.lb=c||!1;a.ea=!1;a.ba=d}function ue(a){return[a.w,a.lb,a.ba,a.ea,a.Oa]}function ve(a,b){var c=Q(b[0],b[1],b[2]);c.ea=b[3];b[4]&&(c.gb=ie(a,c.Oa=b[4]));return c}l=pe.prototype;
l.va=function(a,b,c,d){this.D=b;this.C=a;this.g=c;this.ha=a.u;(a=Tc(a,"messages"))&&se(this,a);we(this,function(a){a:{var b=d.D.b,c=a[0],e=a=0,k=b.length;if(c){a=S(T(d,c,d.ja));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.D.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=Dc[c],n&&d.f(t(n.id,8)+" %"+t(e<<d.D.i,8)+" %"+t(n.w,8)+" "+t(n.Ha,
4,!0)+" "+t(n.size,4,!0)+" "+m),c!=Hc&&(c=-1),m=0);a+=16384;e++}}});E(this)};
l.ga=function(a,b,c){var d=this;switch(b){case "debugInput":return this.aa=this.H[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Yc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.v<d.u.length-1&&(b=d.u[++d.v])):40==a.keyCode&&(0<d.v?b=d.u[--d.v]:(b="",d.v=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.H[b]=c,Xa(c,function(){if(d.aa){var a=d.aa.value;
d.aa.value="";Yc(d,a,!0);return!0}return!1}),!0;case "step":return this.H[b]=c,Xa(c,function(a){var b=!1;Fb(d,!0)||(Gb(d,!0),b=pc(d,a?1:0,null),Gb(d,!1));return b}),!0}return!1};function Xc(a){if(a.aa){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.aa.focus();window&&window.scrollTo(b,c)}}l.wa=function(a,b){var c=-1,d=S(a);-1!==d&&(c=vc(this.D,d),b&&null!=a.w&&(a.w+=b||1));return c};l.$a=function(a,b,c){var d=S(a);-1!==d&&(uc(this.D,d,b),c&&null!=a.w&&(a.w+=c||1),I(this.C,-1))};
function T(a,b,c){var d,e;c||(c=Q());var g=c.w;if(void 0!==b){b=ke(a,b);"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var f,g=b,h;if(g.match(/^[a-z_][a-z0-9_]*$/i))for(var g=g.toUpperCase(),k=0;k<a.F.length;k++){var m=a.F[k].T[g];if(null!=m){h=m.o;break}}null!=h&&(f=Q(h));if(f)return f;0<=b.indexOf("0x")?e=16:0<=b.indexOf("0o")?e=8:0<=b.indexOf(".")&&(e=10);g=P(a,b,void 0)}null!=g&&te(c,g,d,e);return c}function xe(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.gb=ie(a,b.Oa=c[2]))}
function ye(a){return pa(a/Kb,6)+" "+pa(a%Kb,6)}function se(a,b){a.A=a;a.X=a.ib=536870916;a.S=null;a.O=[];b=ie(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in G){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.X|=G[c],a.f(c+" messages enabled"))}}function we(a,b){for(var c in G)if(16==G[c]){a.qa[c]=b;break}}l.nb=function(a){return ze.indexOf(a.toUpperCase())};
l.Wa=function(a){var b;switch(a){case Ae:b=this.g.u;break;case Be:b=this.g.P;break;case Ce:b=this.g.i}return b};l.message=function(a,b){b&&(a+=" @"+K(this,Q(this.g.qa).w));if(!this.S||a!=this.S)if(this.S=a,this.X&1073741824)this.O.push(a);else{var c;if(this.X&-2147483648&&this.g&&(c=this.g.j.K)||Fb(this,!0))this.V(),c&&(a+=" (cpu halted)");this.f(a);this.g&&(a=this.g,zd(a),a.aa=0,a.C&&I(a.C,void 0))}};
function re(a){var b;if(!Fd(a))a.i&&a.i.length&&a.f("instruction history buffer freed"),a.R=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(De);for(b=0;b<a.i.length;b++)a.i[b]=Q();a.R=0;a.f("instruction history buffer allocated")}}function Ee(a,b,c){if(!Fe(a,c))return!1;oc(a.g,b);return!0}
function pc(a,b,c,d){if(!Fe(a))return!1;var e="";null===c&&(e=(c=!a.ta||"tr"==a.ta)?"tr":"t");a.B=0;b||Fd(a)&&Gd(a,a.g.u,0);try{b=xd(a.g,b);var g=a.g.Ja(b);0<g&&(qc(a.g,g),a.B+=g,rc(a.g,g,!0),sc(a.g,g),a.ia++)}catch(f){"number"!=typeof f&&(a.B=0,Cb(a.g,f.stack||f.message))}!1!==d&&(a.ha&&a.ha.stop(),I(a.C,-1));Wc(a,c||!1,e);return 0<a.B}l.V=function(a){this.g&&this.g.V(a)};function Wc(a,b,c){b=void 0===b?!0:b;a.ya&&(c&&a.f(Ge+c),te(a.L,a.g.u),b&&1!=a.N?He(a):Ie(a))}
function Fe(a,b){var c;(c=!a.g||!Eb(a.g))||(c=a.g,c.j.U?c=!0:(c.f(c.toString()+" not powered"),c=!1),c=!c);return c||a.g.j.K?(b||a.f("cpu busy or unavailable, command ignored"),!1):!Db(a.g)}l.pa=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};l.fa=function(a,b){b&&this.f(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){re(this);this.ia=0;this.S=null;this.B=0;te(this.L,this.g.u);this.j.K=!1;Je(this);a||Wc(this)};
l.save=function(){var a=new H(this);a.set(0,ue(this.L));a.set(1,ue(this.ja));a.set(2,ue(this.da));a.set(3,[this.u,this.P,this.X]);a.set(4,this.F);return a.data()};l.restore=function(a){var b=0;void 0!==a[3]&&(this.L=ve(this,a[b++]),this.ja=ve(this,a[b++]),this.da=ve(this,a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.P=a[b][1],this.X|=a[b][2]);a[4]&&(this.F=a[4]);return!0};l.start=function(a,b){this.N||this.f("running");this.j.K=!0;this.za=a;this.Ca=b};
l.stop=function(a,b){if(this.j.K){this.j.K=!1;this.B=b-this.Ca;if(!this.N){b="stopped";if(this.B){a-=this.za;var c=0<a?Math.round(1E3*this.B/a):0;b+=" (";Fd(this)&&(b+=this.ia+" instructions, ",this.ia=0);b+=this.B+" cycles, "+a+" ms, "+c+" hz)"}else Hb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.f(b)}Wc(this,!0);Xc(this);Je(this,this.g.u);this.S=null}};function Fd(a){return 1<a.b.length||!!a.ka}
function Gd(a,b,c){var d=-1;c||(d=a.g.G(b),2756==d>>23&&a.g.qa==b&&(b=Ed(a.g,1)));if(0<c&&(a.ka&&!--a.ka||Qc(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.ia++,0>d&&(d=a.g.G(b)),0<=d&&(te(a.i[a.R],b),++a.R==a.i.length&&(a.R=0)));return!1}
function Ke(a,b,c,d){var e=Q(b.w),g=a.wa(b,1),f,h,k,m=0,n=g/Pb|0,r;for(r in Le)if(f=Le[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=rf;m=n&3;break;case 32256:k=tf;m=n&7;break;case 29248:k=uf,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&f>vf&&(k="B");k=wf[f||0]+k;k=Ba(k,8);f?(k=28700==h?k+K(a,g/Qb&127,-1):k+K(a,g>>23&15,-1),k+=",",g&4194304&&(k+="@"),k+=K(a,g&262143,-1),(g=g>>18&15)&&(k+="("+K(a,g,-1)+")")):k+=ye(g);g=k;f="";h=K(a,e.w)+":";if(-1!==e.w&&-1!==b.w){do if(k=a.wa(e,1),f+=" "+ye(k),null==
e.w)break;while(e.w!=b.w)}h+=Ba(f,16)+g;c&&(h=Ba(h,48)+";"+(c||""),h=a.g.j.Ea?h+("cycles="+Zc(a.g).toString()+" cs="+t(a.g.sa)):h+(null!=d?"="+d.toString():""));return h}function qe(a){var b,c;a.b=["bp"];if(a.M)for(b=1;b<a.M.length;b++){c=a.M[b];c=S(c);var d=a.D;Pc(d.b[c>>>d.i],!1)}a.M=["br"];if(a.J)for(b=1;b<a.J.length;b++)c=a.J[b],c=S(c),d=a.D,Pc(d.b[c>>>d.i],!0);a.J=["bw"];a.ra=0;a.ka=0}
l.Ba=function(a,b,c){var d=!0;c||xf(this,a,b,!1,!0);if(a!=this.b){var e=S(b);if(-1===e)this.f("invalid address: "+K(this,b.w)),d=!1;else{var g=this.D;g.b[e>>>g.i].Ba(e&16383,a==this.J)}}d&&(a.push(b),c?b.ea=!0:(yf(this,a,a.length-1,"set"),re(this)));return d};function xf(a,b,c,d,e){var g=!1;c=S(c);for(var f=1;f<b.length;f++){var h=b[f];if(c==S(h)&&(!d||h.ea)){g=!0;h.ea||e||yf(a,b,f,"cleared");b.splice(f,1);b!=a.b&&(d=a.D,Pc(d.b[c>>>d.i],b==a.J));h.ea||re(a);break}}return g}
function zf(a,b){for(var c=1;c<b.length;c++)yf(a,b,c);return b.length-1}function yf(a,b,c,d){c=b[c];a.f(b[0]+" "+K(a,c.w)+(d?" "+d:c.Oa?' "'+c.Oa+'"':""))}function Je(a,b){if(void 0!==b)Qc(a,b,1,a.b,!0),a.N=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.ea){if(!xf(a,a.b,c,!0))break;b=0}}}
function Qc(a,b,c,d,e){var g=!1;if(!a.ra++)for(var f=1;!g&&f<d.length;f++){var h=d[f];if(!e||h.ea)for(var k=S(h)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==k){var n,g=!0;h.ea&&(xf(a,d,h,!0),e=!0);if(n=h.gb){for(var g=!1,r=0;r<n.length;r++)if(!Af(a,n[r],!0)){if(n[r].indexOf("if")){g=!0;break}for(var y=r+1;y<n.length&&n[y].indexOf("else");y++)r++;if(y==n.length){g=!0;break}}a.g.j.K||(g=!0)}if(g){e||yf(a,d,f,"hit");break}}}a.ra--;return g}
function Bf(a,b){var c=ze[b]||"";c&&(c+="="+K(a,a.Wa(b),b==Be?23:18)+" ");return c}function Cf(a,b){for(var c="",d=0;16>d;d++){!d||d&3||(c+="\n");var e=a,g=pa(d,2);te(e.xa,d);g+="="+K(e,e.wa(e.xa),36)+" ";c+=g}b&&(c+="\n"+(Bf(a,Ae)+Bf(a,Be)+Bf(a,Ce)));return c}l.jb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function be(a,b,c,d,e){var g=[],f;for(f in e){var h=e[f];"number"==typeof h&&(e[f]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=g,k=[k>>>0,f],r=Da(n,k,a.jb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.F.push({$c:b,w:c,zb:d,T:e,hb:g})}function Df(a,b,c){var d=[],e=S(b)>>>0;for(b=0;b<a.F.length;b++){var g=a.F[b],f=g.w>>>0,h=g.zb;if(e>=f&&e<f+h){e=Da(g.hb,[e-f],a.jb);0<=e?Ef(a,b,e,d):c&&(e=~e,Ef(a,b,e-1,d),Ef(a,b,e,d));break}}return d}
function Ef(a,b,c,d){var e={},g=a.F[b].hb,f=0,h=null;0<=c&&c<g.length&&(f=g[c][0],h=g[c][1]);h&&(e=a.F[b].T[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(f);d.push(e.a);d.push(e.c)}function Ff(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return oe(a)||a.f("no variables"),!0;if(!c[2])return oe(a,c[1]);if(!c[3])return delete a.W[c[1]],!0;b=P(a,c[3]);return void 0!==b?(a.W[c[1]]=b,!0):!1}a.f("invalid assignment:"+b);return!1}
function Gf(a,b,c){var d=null;if(b=T(a,b)){var e=Df(a,b,!0);if(e.length){var g,f;e[0]&&(f="",(g=b.w-e[1])&&(f=" + "+t(g,4,!0)),g=e[0]+" ("+K(a,e[1])+")"+f,c&&a.f(g),d=g);4<e.length&&e[4]&&(f="",(g=e[5]-b.w)&&(f=" - "+t(g,4,!0)),g=e[4]+" ("+K(a,e[5])+")"+f,c&&a.f(g),d||(d=g))}else c&&a.f("no symbols")}return d}
function He(a,b){var c;if(b&&"?"==b[1])a.f("register commands:"),a.f("\tr\tdump registers"),a.f("\trm\tdump misc registers"),a.f("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.g;null==c&&(c=!0);if(b&&1<b.length){var g=b[1];if("m"==g)d=!0;else{var f=g.indexOf("=");if(0<f)b=g.substr(f+1),g=g.substr(0,f);else if(2<b.length)b=b[2];else{a.f("missing value for "+b[1]);return}f=P(a,b);if(void 0===f)return;switch(g.toUpperCase()){case "PC":e.u=f%Kb;te(a.L,e.u);break;default:a.f("unknown register: "+
g);return}I(a.C);a.f("updated registers:")}}a.f(Cf(a,d));c&&(te(a.L,e.u),Ie(a,K(a,a.L.w)))}}function Hf(a,b){b=Ca(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.f(c[2]):ne(a,null,c[2].charCodeAt(0)):P(a,b,!0)}
function If(a,b,c){if("?"==c)a.f("trace commands:"),a.f("\tt [#]\ttrace # instructions"),a.f("\ttr [#]\ttrace # instructions with register updates"),a.f("\ttc [#]\ttrace # cycles"),a.f("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=le(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ta=b;Wa(c,function(){return Gb(a,!0)&&pc(a,e,d,!1)},function(){a.ha&&a.ha.stop();I(a.C,-1);Gb(a,!1)})}}
function Ie(a,b,c,d){if(b=T(a,b,a.L)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=le(a,c.substr(1)),null!=c&&(d=c);else{d=T(a,c);if(!d||d.w<b.w)return;e=d.w-b.w;if(256<e){a.f("range too large");return}d=-1}for(c=0;0<e&&d--;){var g=Fb(a,!1)||a.N?a.B:null,f=null!=g?"cycles":null,h=Df(a,b),k=b.w;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(f=h[3],g=null);h=a.da;m=b;h.w=m.w;h.ea=m.ea;h.ba=m.ba;a.f(Ke(a,b,f,g));e-=b.w-k;c++}}}
function Af(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Ge+b):(a.P&&(a.f("ended assemble at "+K(a,a.da.w)),a.P=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.S=null;if(Eb(a)&&0<b.length){a.P&&(b="a "+K(a,a.da.w)+" "+b);var g=!1,f=b.replace(/ +/g," ").split(" ");f[0]=f[0].toLowerCase();if(f&&f.length)for(var h=f[0],k=h.charAt(0),m=1;m<h.length;m++){var n=h.charAt(m);if("?"==k||"r"==k||"a">n||"z"<n){f[0]=h.substr(m);f.unshift(h.substr(0,m));break}}switch(f[0].charAt(0)){case "a":var r=T(a,
f[1],a.da);if(r){var y=f[2];if(void 0==y)a.f("begin assemble at "+K(a,r.w)),a.P=!0,I(a.C);else{f.shift();f.shift();f.shift();var U,Me=f.join(""),x=-1,cc,jg=y.toUpperCase(),$c;for($c in Le){var Ia;cc=+$c;var Ne=Le[$c];switch(cc){case 32512:Ia=rf;break;case 32256:Ia=tf;break;case 29248:Ia=uf;break;default:Ia=[""]}var Oe,ad;for(ad in Ne){for(var Pe=Ne[ad],Ja=0;Ja<Ia.length;Ja++){var bd=Ia[Ja];"S"==bd&&Pe>vf&&(bd="B");if(jg==wf[Pe]+bd){Oe=29248!=cc?Ja:(Ja&3)<<1|(Ja&12)<<2;x=(ad|Oe<<6)*Pb;break}}if(0<=
x)break}if(0<=x)break}if(0<=x)if(Me)for(var cd=Me.split(","),fb=0;fb<cd.length;fb++){var dc=cd[fb].trim();if(dc){if(1<fb){a.f("too many operands: "+dc);x=-1;break}var V=dc.match(/(@?)([^(]*)\(?([^)]*)\)?/);if(!V){a.f("unknown operand: "+dc);x=-1;break}var D=P(a,V[2]);if(void 0==D){x=-1;break}if(!fb&&1<cd.length)if(28700==cc){if(0>D||127<D){a.f("device code out of range: "+V[2]);x=-1;break}x+=D*Qb}else{if(0>D||15<D){a.f("accumulator address out of range: "+V[2]);x=-1;break}x+=D<<23}else{if(0>D||262143<
D){a.f("memory address out of range: "+V[2]);x=-1;break}x+=D;if(V[3]){D=P(a,V[3]);if(void 0==D){x=-1;break}if(0>D||15<D){a.f("memory index out of range: "+V[3]);x=-1;break}x+=D<<18}V[1]&&(x+=4194304)}}}else a.f("missing operand(s)"),x=-1;else a.f("unknown instruction: "+y);U=x;0<=U&&(a.$a(r,U),a.f(Ke(a,r)))}}break;case "b":a:{var kg=f[0],Ka=f[1],lg=b;if("?"==Ka)a.f("breakpoint commands:"),a.f("\tbp #\tset exec breakpoint"),a.f("\tbr #\tset read breakpoint"),a.f("\tbw #\tset write breakpoint"),a.f("\tbc #\tclear breakpoint (* to clear all)"),
a.f("\tbl\tlist all breakpoints"),a.f("\tbn [#]\tbreak after # instruction(s)");else{var sa=kg.charAt(1);if("l"==sa){var dd;dd=0+zf(a,a.b);dd+=zf(a,a.M);(dd+=zf(a,a.J))||a.f("no breakpoints")}else if("n"==sa){var Qe=+Ka||0;Ka&&(a.ka=Qe);a.f("break after "+Qe+" instruction(s)")}else if(void 0===Ka)a.f("missing breakpoint address");else{var J=Q();if("*"!=Ka&&(J=T(a,Ka,a.L),!J))break a;"c"==sa?null==J.w?(qe(a),a.f("all breakpoints cleared")):xf(a,a.b,J)||xf(a,a.M,J)||xf(a,a.J,J)||a.f("breakpoint missing: "+
K(a,J.w)):null!=J.w&&(xe(a,J,lg),"p"==sa?a.Ba(a.b,J):"r"==sa?a.Ba(a.M,J):"w"==sa?a.Ba(a.J,J):a.f("unknown breakpoint command: "+sa))}}}break;case "c":a.oa&&(a.oa.value="");break;case "d":a:{var La,Ma=f[0],W=f[1],ia=f[2],mg=f[3];if("?"==W){var Na="";for(La in G)a.qa[La]&&(Na&&(Na+=","),Na+=La);Na+=",state,symbols";a.f("dump memory commands:");a.f("\tdw [a] [n] dump n words at address a");a.f("\tds [a] [n] dump n words at address a as JSON");a.f("\tdh [p] [n] dump n instructions from history position p");
Na.length&&a.f("dump extension commands:\n\t"+Na)}else if("state"==W){var ed=Jf(a.C,!0);"console"==ia?console.log(ed):(a.oa&&(a.oa.value=""),ed&&a.f(ed))}else if("symbols"==W)for(var fd=0;fd<a.F.length;fd++){var gd=a.F[fd],Oa;for(Oa in gd.T)if("."!=Oa.charAt(0)){var Re=gd.T[Oa].o;if(void 0!==Re){var Se=gd.T[Oa].l;Se&&(Oa=Se);a.f(K(a,Re)+" "+Oa)}}}else{if("d"==Ma){for(La in G)if(f[1]==La){var Te=a.qa[La];Te?(f.shift(),f.shift(),Te(f)):a.f("no dump registered for "+W);break a}W||(Ma=a.Da||"dw")}else a.Da=
Ma;if("dh"==Ma){var Ue=W,Ve=ia,We="",Xe=0,R=a.R,X=a.i;if(X.length){var N=+Ue||a.sa,hb=+Ve||10;isNaN(N)?N=hb:We="more ";N>X.length&&(a.f("note: only "+X.length+" available"),N=X.length);R-=N;0>R&&(null==X[X.length-1].w?(N=R+N,R=0):R+=X.length);var hd=[];"call"==Ve&&(hb=1E5,hd=["CALL"]);for(void 0!==Ue&&a.f(N+" instructions earlier:");0<hb&&R!=a.R;){var Ye=X[R++];if(null==Ye.w)break;var ib=Q(Ye.w),ng=N--,Ze=Ke(a,ib,"history",ng);(!hd.length||0<=Ze.indexOf(hd[0]))&&a.f(Ze);ib.Ua&&(R+=ib.Ua,hb-=ib.Ua,
N-=ib.Ua);R>=X.length&&(R=0);a.sa=N;Xe++;hb--}}Xe||(a.f("no "+We+"history available"),a.sa=void 0)}else{var Pa=T(a,W,a.ja);if(Pa){var ta=0,$e="ds"==Ma;if(ia){if("l"==ia.charAt(0))ia=ia.substr(1)||mg,ta=le(a,ia);else{var af=T(a,ia);af&&(ta=af.w-Pa.w)}0>ta&&(ta=0);65536<ta&&(ta=65536)}var og=a.ba;Pa.ba&&(a.ba=Pa.ba);for(var bf="db"==Ma?1:2,id=ta||32,jd=1==bf?2:4,pg=(id+jd-1)/jd|0||1,ua="";pg--&&0<id;){for(var va="",cf="",W=K(a,Pa.w),df=jd;0<df--&&0<id--;){var ec=a.wa(Pa,1);$e?(va&&(va+=","),va+=ec):
(va+=ye(ec),va+=" ");for(var ef=0;1==bf&&6>ef;ef++)cf+=String.fromCharCode((ec%64|0)+32),ec/=64}ua&&(ua+="\n");ua=$e?ua+(va+","):ua+(W+": "+va+(0>df?" "+cf:""))}ua&&a.f(ua);a.ba=og}}}}break;case "e":if("else"==f[0])break;var ff,gf,hf=f[0],kd=f[1];"e"==hf||"ew"==hf?(ff=a.wa,gf=a.$a):kd=null;if(null==kd)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var fc=T(a,kd,a.ja);if(fc)for(var gc=2;gc<f.length;gc++){var ld=P(a,f[gc]);if(void 0===ld){a.f("unknown value: "+f[gc]);
break}a.f("changing "+K(a,fc.w)+" from "+ye(ff.call(a,fc))+" to "+ye(ld));gf.call(a,fc,ld,1)}}break;case "g":a:{var jf=f[1],qg=b;if(void 0!==jf){var md=T(a,jf);if(!md)break a;xe(a,md,qg);a.Ba(a.b,md,!0)}Ee(a,!0,c)}break;case "h":a.j.K?(c||a.f("halting"),a.V()):Fb(a,!0)||c||a.f("already halted");break;case "i":if("if"==f[0]){var nd;var jb=b.substr(2),jb=Ca(jb);P(a,jb)?(c||a.f("true: "+jb),nd=!0):(c||a.f("false: "+jb),nd=!1);nd||(d=!1);break}g=!0;break;case "k":var rg=f[0];if("?"==f[1])a.f("stack trace commands:"),
a.f("\tk\tshow frame addresses"),a.f("\tks\tshow symbol information");else{var od=0,pd=Q(),kb=Q();for(a.f("stack trace for "+K(a,kb.w));10>od;){for(var wa=null,sg=256;65536>kb.w>>>0;){pd.w=a.wa(kb,2);if(null==kb.w||!sg--)break;if(!(pd.w&1)){for(var tg=a,hc=pd,kf=null,lb=hc.w,lf=lb,qd=1;6>=qd&&lb;qd++){if(2<qd){hc.w=lb;var ic=Ke(tg,hc);if(0<=ic.indexOf("JSR")){var mf=ic.indexOf(" ");if(lb+(ic.indexOf(" ",mf+1)-mf-1)/2==lf){kf=ic;break}}}lb-=2}hc.w=lf;if(wa=kf)break}}if(!wa||null==wa)break;var nf=null;
if("ks"==rg){var of=wa.match(/[0-9A-F]+$/);of&&(nf=Gf(a,of[0]))}wa=Ba(wa,50)+" ;"+(nf||"stack="+K(a,kb.w));a.f(wa);od++}od||a.f("no return addresses found")}break;case "l":if("ln"==f[0]){Gf(a,f[1],!0);break}g=!0;break;case "m":a:{var Y,Z=null,z=f[1];"?"==z&&(z=void 0);if(void 0!==z){var ja=0;if("all"==z)ja=1879046143,z=null;else if("on"==z)Z=!0,z=null;else if("off"==z)Z=!1,z=null;else{"keys"==z&&(z="key");"kbd"==z&&(z="keyboard");for(Y in G)if(z==Y){ja=G[Y];Z=!!(a.X&ja);break}if(!ja){a.f("unknown message category: "+
z);break a}}if(ja)if("on"==f[2])a.X|=ja,Z=!0;else if("off"==f[2]&&(a.X&=~ja,Z=!1,1073741824==ja)){for(var pf=1E3<=a.O.length?a.O.length-1E3:0;pf<a.O.length;)a.f(a.O[pf++]);a.O=[]}}var ug=0,mb="";for(Y in G)if(!z||z==Y){var vg=!!(a.X&G[Y]);if(null===Z||Z==vg)mb&&(mb+=","),++ug%10||(mb+="\n\t"),"key"==Y&&(Y="keys"),mb+=Y}void 0===z&&a.f("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.f((null!==Z?Z?"messages on: ":"messages off: ":"message categories:\n\t")+(mb||"none"));re(a)}break;
case "p":if("print"==f[0]){Hf(a,b.substr(5));break}var wg=f[0];if("?"==f[1])a.f("step commands:"),a.f("\tp\tstep over instruction"),a.f("\tpr\tstep over instruction with register update");else{var xg="pr"==wg?1:0;if(a.N)a.f("step in progress");else{var qf=Q(a.g.u);a.wa(qf);a.N?(a.Ba(a.b,qf,!0),Ee(a)||(a.C&&wd(a.C),a.N=0)):If(a,xg?"tr":"t")}}break;case "r":if("reset"==b){a.C&&a.C.reset();break}He(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var nb=+f[2];if(8==nb||10==nb||16==nb)a.ba=nb;
else{a.f("invalid base: "+nb);break}}a.f("default base: "+a.ba);break;case "cs":var ob;void 0!==f[3]&&(ob=+f[3]);switch(f[2]){case "int":a.g.da=ob;break;case "start":a.g.ta=ob;break;case "stop":a.g.ia=ob;break;default:a.f("unknown cs option");break a}void 0!==ob&&Vc(a.g);a.f("checksums "+(a.g.j.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(td(a.g,+f[2])||a.f("warning: using 1x multiplier, previous target not reached"));a.f("target speed: "+(a.g.S.toFixed(2)+"Mhz")+" ("+a.g.W+"x)");break;
default:if(f[1]){a.f("unknown option: "+f[1]);break}case "?":a.f("debugger options:"),a.f("\tbase #\t\tset default base to #"),a.f("\tcs int #\tset checksum cycle interval to #"),a.f("\tcs start #\tset checksum cycle start count to #"),a.f("\tcs stop #\tset checksum cycle stop count to #"),a.f("\tsp #\t\tset speed multiplier to #")}break;case "t":If(a,f[0],f[1]);break;case "u":Ie(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ff(a,b.substr(3))||(d=!1);break}if("ver"==f[0]){a.f((Jb||"PDP10")+" version 1.34.2 ("+
a.g.eb+",RELEASE)");a.f(window?window.navigator.userAgent:"");break}g=!0;break;case "?":if(f[1]){Hf(a,b.substr(1));break}var rd="commands:",sd;for(sd in Kf)rd+="\n"+Ba(sd,9)+Kf[sd];Fd(a)||(rd+="\nnote: history disabled if no exec breakpoints");a.f(rd);break;default:g=!0}g&&(a.f("unknown command: "+b),d=!1)}}catch(sf){a.f("debugger error: "+(sf.stack||sf.message)),d=!1}return d}function Yc(a,b,c){b=ie(a,b,c);for(var d in b)if(!Af(a,b[+d]))return!1;return!0}
var Kf={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},vf=20,wf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CA JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO".split(" "),
Ae=0,Be=1,Ce=2,ze=["PC","RA","EA"],Lf={},Le=(Lf[28672]={0:101},Lf[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Lf[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:vf,9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,
16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Lf[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Lf[29248]={24576:79,24640:80,25088:81,25152:82},Lf[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},Lf),rf=["","I",
"M","S"],tf=" L E LE A GE N G".split(" "),uf="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),De=1E3,Ge=">> ";Za(function(){for(var a=C(document,B,"debugger"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new pe(d);wb(d,c)}});
function Mf(a,b,c){v.call(this,"Computer",a,33554432);this.j.U=!1;this.R=null;Nf(this,b);this.O=Tc(this,"autoPower",a,6);this.v=0;this.aa=+a.busWidth||+a.buswidth;this.M=this.F=this.N=null;this.L=this.W=!1;this.J=this.B=null;this.S=this.P=!1;this.da=Tc(this,"url")||"";(Math.random()+.1).toString(36);this.i=Of(this);if(this.g=vb("CPU",this.id)){this.A=vb("Debugger",this.id);this.D=new wc({id:this.La+".bus",busWidth:this.aa},this.g,this.A);var d,e=tb(this.id);if((this.u=vb("Panel",this.id))&&this.u.oa)for(b=
0;b<e.length;b++)d=e[b],d.ca=this.u.ca,d.f=this.u.f,d.oa=this.u.oa;this.f(Jb+" v1.34.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.va&&d.va(this,this.D,this.g,this.A);b=null;d=Tc(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var g;if(a=Tc(this,"state")||(g=!0,a.state))this.N=b=a,g||(this.L=!0,this.b=Pf),this.b&&(this.J=new H(this,"1.34.2"),Qf(this.J)?b=null:
delete this.J);!b&&this.b&&(b=Rf(this))&&(this.L=!0);if(b){var f=this;Fa(b,null,!0,function(a,b,c){c?(f.F=null,f.L=!1,f.ca("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(f.M=b,f.W=!0);E(f)})}else E(this);this.H.power||(this.O=!0);!c&&this.O&&Sf(this,this.Ga)}else u("Unable to find CPU component")}p(Mf,v);function Nf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.R=b}
function Tc(a,b,c,d){var e=b.toLowerCase(),e=Ua(b)||Ua(e);void 0===e&&a.R&&(e=a.R[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function Sf(a,b,c){for(var d=tb(a.id),e=0;e<=d.length;e++){var g=e<d.length?d[e]:a;if(!Eb(g)){Eb(g,function(){Sf(a,b,c)});return}}b.call(a,c)}
function Tf(a,b){var c=new H(a,"1.34.2",Uf);if(Qf(c)&&Vf(c)){var d=c.get(Wf),e=b?b.get(Wf):"unknown";d!=e&&(a.ca("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Mf.prototype;
l.Ga=function(a){void 0===a&&(a=this.b||(this.M?Xf:Pf));if(!this.v){this.v++;var b=!1,c=!1;this.P=!1;var d=this.J||new H(this,"1.34.2");if(a==Yf)b=!0;else if(a>Pf){if(Qf(d,this.M)){this.B=new H(this,"1.34.2",Zf);Qf(this.B)&&($f(this,d),a=ag,bg(this.B));this.B.set(Wf,Ea());cg(this.B);var e=this.b&&!this.L;if(a==Xf||sb("Click OK to restore the previous "+Jb+" machine state, or CANCEL to reset the machine.")){if(c=Vf(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?Qf(d,f):("error"==g&&"no machine state"!=
f?(this.ca("Error: "+f),"unable to verify user"==f&&(Sa(dg,""),this.i=null)):this.f(g+": "+f),bg(d),Qf(d)?(c=Vf(d),e=!0):c=!1))}e&&Tf(this,c?d:null)}else a==ag&&d.clear()}else Tf(this);delete this.M;delete this.J}e=tb(this.id);for(g=0;g<e.length;g++)f=e[g],f!==this&&f!=this.g&&(c=eg(this,f,d,b,c));b=[d,a,c];a!=Yf?Sf(this,this.kb,b):this.kb(b)}};
function eg(a,b,c,d,e){if(!b.j.U){b.j.U=!0;var g=null;try{if(e&&((g=c.get(b.id))||(g=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof g&&(g=null),!b.pa(g,d)&&g&&(u("Unable to restore state for "+b.type),a.N&&!a.W?(c.clear(),a.b=Pf,window&&window.location.reload()):a.P=!0,b.pa(null),e=!1),!d&&b.cb){var f=b.cb.split("|");for(a=0;a<f.length;a++)b.status(f[a])}}catch(h){u("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
l.kb=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.j.U=!0;var d=this.H.power;d&&(d.textContent="Shutdown");this.g&&(eg(this,this.g,b,c,a),I(this,-2),this.g.Z());this.P&&($f(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.v=0};
function $f(a,b){if(sb("There may be a problem with your "+Jb+" machine.\n\nTo help us diagnose it, click OK to send this "+Jb+" machine state to http://www.pcjs.org.")){var c=a.da;a=a.i||"";b=b.toString();var d={};d.app=Jb;d.ver="1.34.2";d.url=c;d.user=a;d.type="bug";d.data=b;Fa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Jf(a,b,c){var d,e="none";if(a.v)return null;a.v--;var g=new H(a,"1.34.2"),f=new H(a,"1.34.2",Uf),h=Ea();f.set(Wf,h);g.set(Wf,h);g.set(fg,"1.34.2");g.set(gg,window?window.location.href:null);g.set(hg,window?window.navigator.userAgent:"");a.g&&a.g.fa&&(c&&(b&&(a.g.j.Z=a.g.j.K),a.g.V()),d=a.g.fa(b,c),"object"===typeof d&&g.set(a.g.id,d),c&&(a.g.j.U=!1,!1===d&&(e=null)));for(var h=tb(a.id),k=0;k<h.length;k++){var m=h[k];m.j.U&&(m.fa&&(d=m.fa(b,c),"object"===typeof d&&g.set(m.id,d)),c&&(m.j.U=
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&ig(a,a.i,g.toString()),cg(f)&&cg(g)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==yg),d&&g.clear(h)):e=g.toString());c&&(a.j.U=!1,b=a.H.power)&&(b.textContent="Power");a.v=0;return e}
l.reset=function(){this.j.reset=!0;this.D&&this.D.reset&&(Ib(this,"Resetting "+this.D.type),this.D.reset());this.g&&this.g.reset&&(Ib(this,"Resetting "+this.g.type),this.g.reset());for(var a=tb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.D&&c!==this.g&&c.reset&&(Ib(this,"Resetting "+c.type),c.reset())}this.j.reset=!1;I(this,-1)};l.start=function(a,b){for(var c=tb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}I(this,-1)};
function P(a,b,c){var d;if(b){b=ne(a,b);for(var e=0,g=!1,f=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var n=m[e++],r=n.length,n=Ca(n);if(!n){g=!0;break}n=oe(a,n,null,!1===c);if(void 0===n){g=!0;c=!1;break}h.push(n);if(e==m.length)break;var n=m[e++],z=n.length;k.length&&pe[n]<pe[k[k.length-1]]&&me(h,k,1);k.push(n);b=b.substr(r+z)}me(h,k)&&1==h.length||(g=!0);g?c&&a.f("error parsing '"+f+"' at character "+(f.length-b.length)):(d=h.pop(),c&&qe(a,null,
d))}return d}function ne(a,b){for(var c,d=a.la?"(":"{",e=a.la?")":"}",g=new RegExp(a.la?"\\((.*?)\\)":"\\{(.*?)\\}");(c=b.match(g))&&!(0<=c[1].indexOf(d));){var f=P(a,c[1]);b=b.replace(d+c[1]+e,null!=f?K(a,f):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(a=b;b=a.match(/\$([a-z]+)/i);){c=null;switch(b[1].toLowerCase()){case "ops":c=0}if(null==c)break;a=a.replace(b[0],c.toString())}return a}
function oe(a,b,c,d){var e;null!=b?(e=a.nb(b),0<=e?e=a.Wa(e):(e=a.W[b],null==e&&(e=na(b,a.ba))),null!=e||d||a.f("invalid "+(c?c:"value")+": "+b)):d||a.f("missing "+(c||"value"));return e}
function qe(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var g=4,f="";if(!g||4<g)g=4;for(var h=0;h<g;h++){f&&(f=","+f);var k=d&255,m=void 0,n=8,r="";n?32<n&&(n=32):n=32;for(var z=null==k||isNaN(k),U=m=m||n;0<n--;)U||(r=","+r,U=m),r=(z?"?":k&1?"1":"0")+r,k>>=1,U--;f=r+f;d>>=8}d=t(c,0,!0)+" "+c+". "+pa(c,0,!0)+" "+("0b"+f);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.f((null!=b?b+": ":"")+d);return e}
function re(a,b){if(b)return qe(a,b,a.W[b]);var c=0;for(b in a.W)qe(a,b,a.W[b]),c++;return 0<c}function K(a,b,c){c=void 0===c?0:c;switch(a.ba){case 8:b=pa(b,0<c?(c+2)/3|0:0);break;case 10:(a=0<c?Math.ceil(.3*c):0)?11<a&&(a=11):a=b&-65536?10:5;b=oa(b,10,a);break;default:b=t(b,0<c?c+3>>2:0)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c}var pe={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function se(a){ke.call(this,a);this.ya=!1;this.la=!0;this.xa=Q();this.L=Q(0);this.ja=Q(0);this.da=Q(0);this.G=[];this.b=this.M=this.J=[];te(this);this.R=this.ka=0;this.g=[];this.sa=void 0;ue(this);this.A=this;this.qa={};this.X=this.ib=0;this.S=null;this.O=[];ve(this,a.messages);this.ua=a.commands;this.N=0;this.Da=this.ta=null;this.B=this.Ca=this.za=this.ia=this.ra=0;this.ha=this.aa=null;var b=this;window?void 0===window[B]&&(window[B]=function(a){return td(b,a)}):void 0===global[B]&&(global[B]=function(a){return td(b,
a)})}p(se,ke);function S(a){a=a&&a.w;null==a&&(a=-1);return a}function Q(a,b,c){return{w:void 0===a?null:a,lb:void 0===b?!1:b,ea:!1,ba:c}}function we(a,b,c,d){a.w=b;a.lb=c||!1;a.ea=!1;a.ba=d}function xe(a){return[a.w,a.lb,a.ba,a.ea,a.Oa]}function ye(a,b){var c=Q(b[0],b[1],b[2]);c.ea=b[3];b[4]&&(c.gb=le(a,c.Oa=b[4]));return c}l=se.prototype;
l.va=function(a,b,c,d){this.F=b;this.C=a;this.i=c;this.ha=a.u;(a=Vc(a,"messages"))&&ve(this,a);ze(this,function(a){a:{var b=d.F.b,c=a[0],e=a=0,k=b.length;if(c){a=S(T(d,c,d.ja));if(-1===a){d.f("invalid address: "+c);break a}e=a>>>d.F.g;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=Fc[c],n&&d.f(t(n.id,8)+" %"+t(e<<d.F.g,8)+" %"+t(n.w,8)+" "+t(n.Ha,
4,!0)+" "+t(n.size,4,!0)+" "+m),c!=Jc&&(c=-1),m=0);a+=16384;e++}}});D(this)};
l.ga=function(a,b,c){var d=this;switch(b){case "debugInput":return this.aa=this.H[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",td(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.v<d.u.length-1&&(b=d.u[++d.v])):40==a.keyCode&&(0<d.v?b=d.u[--d.v]:(b="",d.v=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.H[b]=c,Xa(c,function(){if(d.aa){var a=d.aa.value;
d.aa.value="";td(d,a,!0);return!0}return!1}),!0;case "step":return this.H[b]=c,Xa(c,function(a){var b=!1;Fb(d,!0)||(Gb(d,!0),b=rc(d,a?1:0,null),Gb(d,!1));return b}),!0}return!1};function Zc(a){if(a.aa){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.aa.focus();window&&window.scrollTo(b,c)}}l.wa=function(a,b){var c=-1,d=S(a);-1!==d&&(c=xc(this.F,d),b&&null!=a.w&&(a.w+=b||1));return c};l.$a=function(a,b,c){var d=S(a);-1!==d&&(wc(this.F,d,b),c&&null!=a.w&&(a.w+=c||1),I(this.C,-1))};
function T(a,b,c){var d,e;c||(c=Q());var g=c.w;if(void 0!==b){b=ne(a,b);"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var f,g=b,h;if(g.match(/^[a-z_][a-z0-9_]*$/i))for(var g=g.toUpperCase(),k=0;k<a.G.length;k++){var m=a.G[k].T[g];if(null!=m){h=m.o;break}}null!=h&&(f=Q(h));if(f)return f;0<=b.indexOf("0x")?e=16:0<=b.indexOf("0o")?e=8:0<=b.indexOf(".")&&(e=10);g=P(a,b,void 0)}null!=g&&we(c,g,d,e);return c}function Ae(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.gb=le(a,b.Oa=c[2]))}
function Be(a){return pa(a/Kb,6)+" "+pa(a%Kb,6)}function ve(a,b){a.A=a;a.X=a.ib=536870916;a.S=null;a.O=[];b=le(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in G){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.X|=G[c],a.f(c+" messages enabled"))}}function ze(a,b){for(var c in G)if(16==G[c]){a.qa[c]=b;break}}l.nb=function(a){return Ce.indexOf(a.toUpperCase())};
l.Wa=function(a){var b;switch(a){case De:b=this.i.u;break;case Ee:b=this.i.B;break;case Fe:b=this.i.g}return b};l.message=function(a,b){b&&(a+=" @"+K(this,Q(this.i.qa).w));if(!this.S||a!=this.S)if(this.S=a,this.X&1073741824)this.O.push(a);else{var c;if(this.X&-2147483648&&this.i&&(c=this.i.j.K)||Fb(this,!0))this.V(),c&&(a+=" (cpu halted)");this.f(a);this.i&&(a=this.i,Bd(a),a.aa=0,a.C&&I(a.C,void 0))}};
function ue(a){var b;if(!Id(a))a.g&&a.g.length&&a.f("instruction history buffer freed"),a.R=0,a.g=[];else if(!a.g||!a.g.length){a.g=Array(Ge);for(b=0;b<a.g.length;b++)a.g[b]=Q();a.R=0;a.f("instruction history buffer allocated")}}function He(a,b,c){if(!Ie(a,c))return!1;qc(a.i,b);return!0}
function rc(a,b,c,d){if(!Ie(a))return!1;var e="";null===c&&(e=(c=!a.ta||"tr"==a.ta)?"tr":"t");a.B=0;b||Id(a)&&Jd(a,a.i.u,0);try{b=zd(a.i,b);var g=a.i.Ja(b);0<g&&(sc(a.i,g),a.B+=g,tc(a.i,g,!0),uc(a.i,g),a.ia++)}catch(f){"number"!=typeof f&&(a.B=0,Cb(a.i,f.stack||f.message))}!1!==d&&(a.ha&&a.ha.stop(),I(a.C,-1));Yc(a,c||!1,e);return 0<a.B}l.V=function(a){this.i&&this.i.V(a)};function Yc(a,b,c){b=void 0===b?!0:b;a.ya&&(c&&a.f(Je+c),we(a.L,a.i.u),b&&1!=a.N?Ke(a):Le(a))}
function Ie(a,b){var c;(c=!a.i||!Eb(a.i))||(c=a.i,c.j.U?c=!0:(c.f(c.toString()+" not powered"),c=!1),c=!c);return c||a.i.j.K?(b||a.f("cpu busy or unavailable, command ignored"),!1):!Db(a.i)}l.pa=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};l.fa=function(a,b){b&&this.f(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){ue(this);this.ia=0;this.S=null;this.B=0;we(this.L,this.i.u);this.j.K=!1;rf(this);a||Yc(this)};
l.save=function(){var a=new H(this);a.set(0,xe(this.L));a.set(1,xe(this.ja));a.set(2,xe(this.da));a.set(3,[this.u,this.P,this.X]);a.set(4,this.G);return a.data()};l.restore=function(a){var b=0;void 0!==a[3]&&(this.L=ye(this,a[b++]),this.ja=ye(this,a[b++]),this.da=ye(this,a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.P=a[b][1],this.X|=a[b][2]);a[4]&&(this.G=a[4]);return!0};l.start=function(a,b){this.N||this.f("running");this.j.K=!0;this.za=a;this.Ca=b};
l.stop=function(a,b){if(this.j.K){this.j.K=!1;this.B=b-this.Ca;if(!this.N){b="stopped";if(this.B){a-=this.za;var c=0<a?Math.round(1E3*this.B/a):0;b+=" (";Id(this)&&(b+=this.ia+" instructions, ",this.ia=0);b+=this.B+" cycles, "+a+" ms, "+c+" hz)"}else Hb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.f(b)}Yc(this,!0);Zc(this);rf(this,this.i.u);this.S=null}};function Id(a){return 1<a.b.length||!!a.ka}
function Jd(a,b,c){var d=-1;c||(d=a.i.D(b),2756==d>>23&&a.i.qa==b&&(b=Gd(a.i,1)));if(0<c&&(a.ka&&!--a.ka||Sc(a,b,1,a.b)))return!0;0<=c&&a.g.length&&(a.ia++,0>d&&(d=a.i.D(b)),0<=d&&(we(a.g[a.R],b),++a.R==a.g.length&&(a.R=0)));return!1}
function tf(a,b,c,d){var e=Q(b.w),g=a.wa(b,1),f,h,k,m=0,n=g/Rb|0,r;for(r in uf)if(f=uf[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=vf;m=n&3;break;case 32256:k=wf;m=n&7;break;case 29248:k=xf,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&f>yf&&(k="B");k=zf[f||0]+k;k=Ba(k,8);f?(k=28700==h?k+K(a,g/Sb&127,-1):k+K(a,g>>23&15,-1),k+=",",g&4194304&&(k+="@"),k+=K(a,g&262143,-1),(g=g>>18&15)&&(k+="("+K(a,g,-1)+")")):k+=Be(g);g=k;f="";h=K(a,e.w)+":";if(-1!==e.w&&-1!==b.w){do if(k=a.wa(e,1),f+=" "+Be(k),null==
e.w)break;while(e.w!=b.w)}h+=Ba(f,16)+g;c&&(h=Ba(h,48)+";"+(c||""),h=a.i.j.Ea?h+("cycles="+ud(a.i).toString()+" cs="+t(a.i.sa)):h+(null!=d?"="+d.toString():""));return h}function te(a){var b,c;a.b=["bp"];if(a.M)for(b=1;b<a.M.length;b++){c=a.M[b];c=S(c);var d=a.F;Rc(d.b[c>>>d.g],!1)}a.M=["br"];if(a.J)for(b=1;b<a.J.length;b++)c=a.J[b],c=S(c),d=a.F,Rc(d.b[c>>>d.g],!0);a.J=["bw"];a.ra=0;a.ka=0}
l.Ba=function(a,b,c){var d=!0;c||Af(this,a,b,!1,!0);if(a!=this.b){var e=S(b);if(-1===e)this.f("invalid address: "+K(this,b.w)),d=!1;else{var g=this.F;g.b[e>>>g.g].Ba(e&16383,a==this.J)}}d&&(a.push(b),c?b.ea=!0:(Bf(this,a,a.length-1,"set"),ue(this)));return d};function Af(a,b,c,d,e){var g=!1;c=S(c);for(var f=1;f<b.length;f++){var h=b[f];if(c==S(h)&&(!d||h.ea)){g=!0;h.ea||e||Bf(a,b,f,"cleared");b.splice(f,1);b!=a.b&&(d=a.F,Rc(d.b[c>>>d.g],b==a.J));h.ea||ue(a);break}}return g}
function Cf(a,b){for(var c=1;c<b.length;c++)Bf(a,b,c);return b.length-1}function Bf(a,b,c,d){c=b[c];a.f(b[0]+" "+K(a,c.w)+(d?" "+d:c.Oa?' "'+c.Oa+'"':""))}function rf(a,b){if(void 0!==b)Sc(a,b,1,a.b,!0),a.N=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.ea){if(!Af(a,a.b,c,!0))break;b=0}}}
function Sc(a,b,c,d,e){var g=!1;if(!a.ra++)for(var f=1;!g&&f<d.length;f++){var h=d[f];if(!e||h.ea)for(var k=S(h)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==k){var n,g=!0;h.ea&&(Af(a,d,h,!0),e=!0);if(n=h.gb){for(var g=!1,r=0;r<n.length;r++)if(!Df(a,n[r],!0)){if(n[r].indexOf("if")){g=!0;break}for(var z=r+1;z<n.length&&n[z].indexOf("else");z++)r++;if(z==n.length){g=!0;break}}a.i.j.K||(g=!0)}if(g){e||Bf(a,d,f,"hit");break}}}a.ra--;return g}
function Ef(a,b){var c=Ce[b]||"";c&&(c+="="+K(a,a.Wa(b),b==Ee?23:18)+" ");return c}function Ff(a,b){for(var c="",d=0;16>d;d++){!d||d&3||(c+="\n");var e=a,g=pa(d,2);we(e.xa,d);g+="="+K(e,e.wa(e.xa),36)+" ";c+=g}b&&(c+="\n"+(Ef(a,De)+Ef(a,Ee)+Ef(a,Fe)));return c}l.jb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function ee(a,b,c,d,e){var g=[],f;for(f in e){var h=e[f];"number"==typeof h&&(e[f]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=g,k=[k>>>0,f],r=Da(n,k,a.jb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.G.push({$c:b,w:c,zb:d,T:e,hb:g})}function Gf(a,b,c){var d=[],e=S(b)>>>0;for(b=0;b<a.G.length;b++){var g=a.G[b],f=g.w>>>0,h=g.zb;if(e>=f&&e<f+h){e=Da(g.hb,[e-f],a.jb);0<=e?Hf(a,b,e,d):c&&(e=~e,Hf(a,b,e-1,d),Hf(a,b,e,d));break}}return d}
function Hf(a,b,c,d){var e={},g=a.G[b].hb,f=0,h=null;0<=c&&c<g.length&&(f=g[c][0],h=g[c][1]);h&&(e=a.G[b].T[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(f);d.push(e.a);d.push(e.c)}function If(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return re(a)||a.f("no variables"),!0;if(!c[2])return re(a,c[1]);if(!c[3])return delete a.W[c[1]],!0;b=P(a,c[3]);return void 0!==b?(a.W[c[1]]=b,!0):!1}a.f("invalid assignment:"+b);return!1}
function Jf(a,b,c){var d=null;if(b=T(a,b)){var e=Gf(a,b,!0);if(e.length){var g,f;e[0]&&(f="",(g=b.w-e[1])&&(f=" + "+t(g,4,!0)),g=e[0]+" ("+K(a,e[1])+")"+f,c&&a.f(g),d=g);4<e.length&&e[4]&&(f="",(g=e[5]-b.w)&&(f=" - "+t(g,4,!0)),g=e[4]+" ("+K(a,e[5])+")"+f,c&&a.f(g),d||(d=g))}else c&&a.f("no symbols")}return d}
function Ke(a,b){var c;if(b&&"?"==b[1])a.f("register commands:"),a.f("\tr\tdump registers"),a.f("\trm\tdump misc registers"),a.f("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.i;null==c&&(c=!0);if(b&&1<b.length){var g=b[1];if("m"==g)d=!0;else{var f=g.indexOf("=");if(0<f)b=g.substr(f+1),g=g.substr(0,f);else if(2<b.length)b=b[2];else{a.f("missing value for "+b[1]);return}f=P(a,b);if(void 0===f)return;switch(g.toUpperCase()){case "PC":e.u=f%Kb;we(a.L,e.u);break;default:a.f("unknown register: "+
g);return}I(a.C);a.f("updated registers:")}}a.f(Ff(a,d));c&&(we(a.L,e.u),Le(a,K(a,a.L.w)))}}function Kf(a,b){b=Ca(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.f(c[2]):qe(a,null,c[2].charCodeAt(0)):P(a,b,!0)}
function Lf(a,b,c){if("?"==c)a.f("trace commands:"),a.f("\tt [#]\ttrace # instructions"),a.f("\ttr [#]\ttrace # instructions with register updates"),a.f("\ttc [#]\ttrace # cycles"),a.f("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=oe(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ta=b;Wa(c,function(){return Gb(a,!0)&&rc(a,e,d,!1)},function(){a.ha&&a.ha.stop();I(a.C,-1);Gb(a,!1)})}}
function Le(a,b,c,d){if(b=T(a,b,a.L)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=oe(a,c.substr(1)),null!=c&&(d=c);else{d=T(a,c);if(!d||d.w<b.w)return;e=d.w-b.w;if(256<e){a.f("range too large");return}d=-1}for(c=0;0<e&&d--;){var g=Fb(a,!1)||a.N?a.B:null,f=null!=g?"cycles":null,h=Gf(a,b),k=b.w;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.f(m)}h[3]&&(f=h[3],g=null);h=a.da;m=b;h.w=m.w;h.ea=m.ea;h.ba=m.ba;a.f(tf(a,b,f,g));e-=b.w-k;c++}}}
function Df(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.f(Je+b):(a.P&&(a.f("ended assemble at "+K(a,a.da.w)),a.P=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.S=null;if(Eb(a)&&0<b.length){a.P&&(b="a "+K(a,a.da.w)+" "+b);var g=!1,f=b.replace(/ +/g," ").split(" ");f[0]=f[0].toLowerCase();if(f&&f.length)for(var h=f[0],k=h.charAt(0),m=1;m<h.length;m++){var n=h.charAt(m);if("?"==k||"r"==k||"a">n||"z"<n){f[0]=h.substr(m);f.unshift(h.substr(0,m));break}}switch(f[0].charAt(0)){case "a":var r=T(a,
f[1],a.da);if(r){var z=f[2];if(void 0==z)a.f("begin assemble at "+K(a,r.w)),a.P=!0,I(a.C);else{f.shift();f.shift();f.shift();var U,Me=f.join(""),y=-1,cc,mg=z.toUpperCase(),$c;for($c in uf){var Ia;cc=+$c;var Ne=uf[$c];switch(cc){case 32512:Ia=vf;break;case 32256:Ia=wf;break;case 29248:Ia=xf;break;default:Ia=[""]}var Oe,ad;for(ad in Ne){for(var Pe=Ne[ad],Ja=0;Ja<Ia.length;Ja++){var bd=Ia[Ja];"S"==bd&&Pe>yf&&(bd="B");if(mg==zf[Pe]+bd){Oe=29248!=cc?Ja:(Ja&3)<<1|(Ja&12)<<2;y=(ad|Oe<<6)*Rb;break}}if(0<=
y)break}if(0<=y)break}if(0<=y)if(Me)for(var cd=Me.split(","),fb=0;fb<cd.length;fb++){var dc=cd[fb].trim();if(dc){if(1<fb){a.f("too many operands: "+dc);y=-1;break}var V=dc.match(/(@?)([^(]*)\(?([^)]*)\)?/);if(!V){a.f("unknown operand: "+dc);y=-1;break}var E=P(a,V[2]);if(void 0==E){y=-1;break}if(!fb&&1<cd.length)if(28700==cc){if(0>E||127<E){a.f("device code out of range: "+V[2]);y=-1;break}y+=E*Sb}else{if(0>E||15<E){a.f("accumulator address out of range: "+V[2]);y=-1;break}y+=E<<23}else{if(0>E||262143<
E){a.f("memory address out of range: "+V[2]);y=-1;break}y+=E;if(V[3]){E=P(a,V[3]);if(void 0==E){y=-1;break}if(0>E||15<E){a.f("memory index out of range: "+V[3]);y=-1;break}y+=E<<18}V[1]&&(y+=4194304)}}}else a.f("missing operand(s)"),y=-1;else a.f("unknown instruction: "+z);U=y;0<=U&&(a.$a(r,U),a.f(tf(a,r)))}}break;case "b":a:{var ng=f[0],Ka=f[1],og=b;if("?"==Ka)a.f("breakpoint commands:"),a.f("\tbp #\tset exec breakpoint"),a.f("\tbr #\tset read breakpoint"),a.f("\tbw #\tset write breakpoint"),a.f("\tbc #\tclear breakpoint (* to clear all)"),
a.f("\tbl\tlist all breakpoints"),a.f("\tbn [#]\tbreak after # instruction(s)");else{var sa=ng.charAt(1);if("l"==sa){var dd;dd=0+Cf(a,a.b);dd+=Cf(a,a.M);(dd+=Cf(a,a.J))||a.f("no breakpoints")}else if("n"==sa){var Qe=+Ka||0;Ka&&(a.ka=Qe);a.f("break after "+Qe+" instruction(s)")}else if(void 0===Ka)a.f("missing breakpoint address");else{var J=Q();if("*"!=Ka&&(J=T(a,Ka,a.L),!J))break a;"c"==sa?null==J.w?(te(a),a.f("all breakpoints cleared")):Af(a,a.b,J)||Af(a,a.M,J)||Af(a,a.J,J)||a.f("breakpoint missing: "+
K(a,J.w)):null!=J.w&&(Ae(a,J,og),"p"==sa?a.Ba(a.b,J):"r"==sa?a.Ba(a.M,J):"w"==sa?a.Ba(a.J,J):a.f("unknown breakpoint command: "+sa))}}}break;case "c":a.oa&&(a.oa.value="");break;case "d":a:{var La,Ma=f[0],W=f[1],ia=f[2],pg=f[3];if("?"==W){var Na="";for(La in G)a.qa[La]&&(Na&&(Na+=","),Na+=La);Na+=",state,symbols";a.f("dump memory commands:");a.f("\tdw [a] [n] dump n words at address a");a.f("\tds [a] [n] dump n words at address a as JSON");a.f("\tdh [p] [n] dump n instructions from history position p");
Na.length&&a.f("dump extension commands:\n\t"+Na)}else if("state"==W){var ed=Mf(a.C,!0);"console"==ia?console.log(ed):(a.oa&&(a.oa.value=""),ed&&a.f(ed))}else if("symbols"==W)for(var fd=0;fd<a.G.length;fd++){var gd=a.G[fd],Oa;for(Oa in gd.T)if("."!=Oa.charAt(0)){var Re=gd.T[Oa].o;if(void 0!==Re){var Se=gd.T[Oa].l;Se&&(Oa=Se);a.f(K(a,Re)+" "+Oa)}}}else{if("d"==Ma){for(La in G)if(f[1]==La){var Te=a.qa[La];Te?(f.shift(),f.shift(),Te(f)):a.f("no dump registered for "+W);break a}W||(Ma=a.Da||"dw")}else a.Da=
Ma;if("dh"==Ma){var Ue=W,Ve=ia,We="",Xe=0,R=a.R,X=a.g;if(X.length){var N=+Ue||a.sa,hb=+Ve||10;isNaN(N)?N=hb:We="more ";N>X.length&&(a.f("note: only "+X.length+" available"),N=X.length);R-=N;0>R&&(null==X[X.length-1].w?(N=R+N,R=0):R+=X.length);var hd=[];"call"==Ve&&(hb=1E5,hd=["CALL"]);for(void 0!==Ue&&a.f(N+" instructions earlier:");0<hb&&R!=a.R;){var Ye=X[R++];if(null==Ye.w)break;var ib=Q(Ye.w),qg=N--,Ze=tf(a,ib,"history",qg);(!hd.length||0<=Ze.indexOf(hd[0]))&&a.f(Ze);ib.Ua&&(R+=ib.Ua,hb-=ib.Ua,
N-=ib.Ua);R>=X.length&&(R=0);a.sa=N;Xe++;hb--}}Xe||(a.f("no "+We+"history available"),a.sa=void 0)}else{var Pa=T(a,W,a.ja);if(Pa){var ta=0,$e="ds"==Ma;if(ia){if("l"==ia.charAt(0))ia=ia.substr(1)||pg,ta=oe(a,ia);else{var af=T(a,ia);af&&(ta=af.w-Pa.w)}0>ta&&(ta=0);65536<ta&&(ta=65536)}var rg=a.ba;Pa.ba&&(a.ba=Pa.ba);for(var bf="db"==Ma?1:2,id=ta||32,jd=1==bf?2:4,sg=(id+jd-1)/jd|0||1,ua="";sg--&&0<id;){for(var va="",cf="",W=K(a,Pa.w),df=jd;0<df--&&0<id--;){var ec=a.wa(Pa,1);$e?(va&&(va+=","),va+=ec):
(va+=Be(ec),va+=" ");for(var ef=0;1==bf&&6>ef;ef++)cf+=String.fromCharCode((ec%64|0)+32),ec/=64}ua&&(ua+="\n");ua=$e?ua+(va+","):ua+(W+": "+va+(0>df?" "+cf:""))}ua&&a.f(ua);a.ba=rg}}}}break;case "e":if("else"==f[0])break;var ff,gf,hf=f[0],kd=f[1];"e"==hf||"ew"==hf?(ff=a.wa,gf=a.$a):kd=null;if(null==kd)a.f("edit memory commands:"),a.f("\tew [a] [...] edit words at address a");else{var fc=T(a,kd,a.ja);if(fc)for(var gc=2;gc<f.length;gc++){var ld=P(a,f[gc]);if(void 0===ld){a.f("unknown value: "+f[gc]);
break}a.f("changing "+K(a,fc.w)+" from "+Be(ff.call(a,fc))+" to "+Be(ld));gf.call(a,fc,ld,1)}}break;case "g":a:{var jf=f[1],tg=b;if(void 0!==jf){var md=T(a,jf);if(!md)break a;Ae(a,md,tg);a.Ba(a.b,md,!0)}He(a,!0,c)}break;case "h":a.j.K?(c||a.f("halting"),a.V()):Fb(a,!0)||c||a.f("already halted");break;case "i":if("if"==f[0]){var nd;var jb=b.substr(2),jb=Ca(jb);P(a,jb)?(c||a.f("true: "+jb),nd=!0):(c||a.f("false: "+jb),nd=!1);nd||(d=!1);break}g=!0;break;case "k":var ug=f[0];if("?"==f[1])a.f("stack trace commands:"),
a.f("\tk\tshow frame addresses"),a.f("\tks\tshow symbol information");else{var od=0,pd=Q(),kb=Q();for(a.f("stack trace for "+K(a,kb.w));10>od;){for(var wa=null,vg=256;65536>kb.w>>>0;){pd.w=a.wa(kb,2);if(null==kb.w||!vg--)break;if(!(pd.w&1)){for(var wg=a,hc=pd,kf=null,lb=hc.w,lf=lb,qd=1;6>=qd&&lb;qd++){if(2<qd){hc.w=lb;var ic=tf(wg,hc);if(0<=ic.indexOf("JSR")){var mf=ic.indexOf(" ");if(lb+(ic.indexOf(" ",mf+1)-mf-1)/2==lf){kf=ic;break}}}lb-=2}hc.w=lf;if(wa=kf)break}}if(!wa||null==wa)break;var nf=null;
if("ks"==ug){var of=wa.match(/[0-9A-F]+$/);of&&(nf=Jf(a,of[0]))}wa=Ba(wa,50)+" ;"+(nf||"stack="+K(a,kb.w));a.f(wa);od++}od||a.f("no return addresses found")}break;case "l":if("ln"==f[0]){Jf(a,f[1],!0);break}g=!0;break;case "m":a:{var Y,Z=null,A=f[1];"?"==A&&(A=void 0);if(void 0!==A){var ja=0;if("all"==A)ja=1879046143,A=null;else if("on"==A)Z=!0,A=null;else if("off"==A)Z=!1,A=null;else{"keys"==A&&(A="key");"kbd"==A&&(A="keyboard");for(Y in G)if(A==Y){ja=G[Y];Z=!!(a.X&ja);break}if(!ja){a.f("unknown message category: "+
A);break a}}if(ja)if("on"==f[2])a.X|=ja,Z=!0;else if("off"==f[2]&&(a.X&=~ja,Z=!1,1073741824==ja)){for(var pf=1E3<=a.O.length?a.O.length-1E3:0;pf<a.O.length;)a.f(a.O[pf++]);a.O=[]}}var xg=0,mb="";for(Y in G)if(!A||A==Y){var yg=!!(a.X&G[Y]);if(null===Z||Z==yg)mb&&(mb+=","),++xg%10||(mb+="\n\t"),"key"==Y&&(Y="keys"),mb+=Y}void 0===A&&a.f("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.f((null!==Z?Z?"messages on: ":"messages off: ":"message categories:\n\t")+(mb||"none"));ue(a)}break;
case "p":if("print"==f[0]){Kf(a,b.substr(5));break}var zg=f[0];if("?"==f[1])a.f("step commands:"),a.f("\tp\tstep over instruction"),a.f("\tpr\tstep over instruction with register update");else{var Ag="pr"==zg?1:0;if(a.N)a.f("step in progress");else{var qf=Q(a.i.u);a.wa(qf);a.N?(a.Ba(a.b,qf,!0),He(a)||(a.C&&yd(a.C),a.N=0)):Lf(a,Ag?"tr":"t")}}break;case "r":if("reset"==b){a.C&&a.C.reset();break}Ke(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var nb=+f[2];if(8==nb||10==nb||16==nb)a.ba=nb;
else{a.f("invalid base: "+nb);break}}a.f("default base: "+a.ba);break;case "cs":var ob;void 0!==f[3]&&(ob=+f[3]);switch(f[2]){case "int":a.i.da=ob;break;case "start":a.i.ta=ob;break;case "stop":a.i.ia=ob;break;default:a.f("unknown cs option");break a}void 0!==ob&&Xc(a.i);a.f("checksums "+(a.i.j.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(vd(a.i,+f[2])||a.f("warning: using 1x multiplier, previous target not reached"));a.f("target speed: "+(a.i.S.toFixed(2)+"Mhz")+" ("+a.i.W+"x)");break;
default:if(f[1]){a.f("unknown option: "+f[1]);break}case "?":a.f("debugger options:"),a.f("\tbase #\t\tset default base to #"),a.f("\tcs int #\tset checksum cycle interval to #"),a.f("\tcs start #\tset checksum cycle start count to #"),a.f("\tcs stop #\tset checksum cycle stop count to #"),a.f("\tsp #\t\tset speed multiplier to #")}break;case "t":Lf(a,f[0],f[1]);break;case "u":Le(a,f[1],f[2],8);break;case "v":if("var"==f[0]){If(a,b.substr(3))||(d=!1);break}if("ver"==f[0]){a.f((Jb||"PDP10")+" version 1.34.2 ("+
a.i.eb+",RELEASE)");a.f(window?window.navigator.userAgent:"");break}g=!0;break;case "?":if(f[1]){Kf(a,b.substr(1));break}var rd="commands:",sd;for(sd in Nf)rd+="\n"+Ba(sd,9)+Nf[sd];Id(a)||(rd+="\nnote: history disabled if no exec breakpoints");a.f(rd);break;default:g=!0}g&&(a.f("unknown command: "+b),d=!1)}}catch(sf){a.f("debugger error: "+(sf.stack||sf.message)),d=!1}return d}function td(a,b,c){b=le(a,b,c);for(var d in b)if(!Df(a,b[+d]))return!1;return!0}
var Nf={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},yf=20,zf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CA JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO".split(" "),
De=0,Ee=1,Fe=2,Ce=["PC","RA","EA"],Of={},uf=(Of[28672]={0:101},Of[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Of[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:yf,9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,
16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Of[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Of[29248]={24576:79,24640:80,25088:81,25152:82},Of[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,28692:98,28696:99,28700:100},Of),vf=["","I",
"M","S"],wf=" L E LE A GE N G".split(" "),xf="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Ge=1E3,Je=">> ";Za(function(){for(var a=C(document,B,"debugger"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new se(d);wb(d,c)}});
function Pf(a,b,c){v.call(this,"Computer",a,33554432);this.j.U=!1;this.R=null;Qf(this,b);this.O=Vc(this,"autoPower",a,6);this.v=0;this.aa=+a.busWidth||+a.buswidth;this.M=this.G=this.N=null;this.L=this.W=!1;this.J=this.B=null;this.S=this.P=!1;this.da=Vc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Rf(this);if(this.i=vb("CPU",this.id)){this.A=vb("Debugger",this.id);this.F=new yc({id:this.La+".bus",busWidth:this.aa},this.i,this.A);var d,e=tb(this.id);if((this.u=vb("Panel",this.id))&&this.u.oa)for(b=
0;b<e.length;b++)d=e[b],d.ca=this.u.ca,d.f=this.u.f,d.oa=this.u.oa;this.f(Jb+" v1.34.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.va&&d.va(this,this.F,this.i,this.A);b=null;d=Vc(this,"resume",a);void 0!==d&&(1<d.length?b=this.G=d:this.b=parseInt(d,10));var g;if(a=Vc(this,"state")||(g=!0,a.state))this.N=b=a,g||(this.L=!0,this.b=Sf),this.b&&(this.J=new H(this,"1.34.2"),Tf(this.J)?b=null:
delete this.J);!b&&this.b&&(b=Uf(this))&&(this.L=!0);if(b){var f=this;Fa(b,null,!0,function(a,b,c){c?(f.G=null,f.L=!1,f.ca("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(f.M=b,f.W=!0);D(f)})}else D(this);this.H.power||(this.O=!0);!c&&this.O&&Vf(this,this.Ga)}else u("Unable to find CPU component")}p(Pf,v);function Qf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.R=b}
function Vc(a,b,c,d){var e=b.toLowerCase(),e=Ua(b)||Ua(e);void 0===e&&a.R&&(e=a.R[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function Vf(a,b,c){for(var d=tb(a.id),e=0;e<=d.length;e++){var g=e<d.length?d[e]:a;if(!Eb(g)){Eb(g,function(){Vf(a,b,c)});return}}b.call(a,c)}
function Wf(a,b){var c=new H(a,"1.34.2",Xf);if(Tf(c)&&Yf(c)){var d=c.get(Zf),e=b?b.get(Zf):"unknown";d!=e&&(a.ca("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Pf.prototype;
l.Ga=function(a){void 0===a&&(a=this.b||(this.M?$f:Sf));if(!this.v){this.v++;var b=!1,c=!1;this.P=!1;var d=this.J||new H(this,"1.34.2");if(a==ag)b=!0;else if(a>Sf){if(Tf(d,this.M)){this.B=new H(this,"1.34.2",bg);Tf(this.B)&&(cg(this,d),a=dg,eg(this.B));this.B.set(Zf,Ea());fg(this.B);var e=this.b&&!this.L;if(a==$f||sb("Click OK to restore the previous "+Jb+" machine state, or CANCEL to reset the machine.")){if(c=Yf(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?Tf(d,f):("error"==g&&"no machine state"!=
f?(this.ca("Error: "+f),"unable to verify user"==f&&(Sa(gg,""),this.g=null)):this.f(g+": "+f),eg(d),Tf(d)?(c=Yf(d),e=!0):c=!1))}e&&Wf(this,c?d:null)}else a==dg&&d.clear()}else Wf(this);delete this.M;delete this.J}e=tb(this.id);for(g=0;g<e.length;g++)f=e[g],f!==this&&f!=this.i&&(c=hg(this,f,d,b,c));b=[d,a,c];a!=ag?Vf(this,this.kb,b):this.kb(b)}};
function hg(a,b,c,d,e){if(!b.j.U){b.j.U=!0;var g=null;try{if(e&&((g=c.get(b.id))||(g=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof g&&(g=null),!b.pa(g,d)&&g&&(u("Unable to restore state for "+b.type),a.N&&!a.W?(c.clear(),a.b=Sf,window&&window.location.reload()):a.P=!0,b.pa(null),e=!1),!d&&b.cb){var f=b.cb.split("|");for(a=0;a<f.length;a++)b.status(f[a])}}catch(h){u("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
l.kb=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.j.U=!0;var d=this.H.power;d&&(d.textContent="Shutdown");this.i&&(hg(this,this.i,b,c,a),I(this,-2),this.i.Z());this.P&&(cg(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.v=0};
function cg(a,b){if(sb("There may be a problem with your "+Jb+" machine.\n\nTo help us diagnose it, click OK to send this "+Jb+" machine state to http://www.pcjs.org.")){var c=a.da;a=a.g||"";b=b.toString();var d={};d.app=Jb;d.ver="1.34.2";d.url=c;d.user=a;d.type="bug";d.data=b;Fa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Mf(a,b,c){var d,e="none";if(a.v)return null;a.v--;var g=new H(a,"1.34.2"),f=new H(a,"1.34.2",Xf),h=Ea();f.set(Zf,h);g.set(Zf,h);g.set(ig,"1.34.2");g.set(jg,window?window.location.href:null);g.set(kg,window?window.navigator.userAgent:"");a.i&&a.i.fa&&(c&&(b&&(a.i.j.Z=a.i.j.K),a.i.V()),d=a.i.fa(b,c),"object"===typeof d&&g.set(a.i.id,d),c&&(a.i.j.U=!1,!1===d&&(e=null)));for(var h=tb(a.id),k=0;k<h.length;k++){var m=h[k];m.j.U&&(m.fa&&(d=m.fa(b,c),"object"===typeof d&&g.set(m.id,d)),c&&(m.j.U=
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&lg(a,a.g,g.toString()),fg(f)&&fg(g)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Bg),d&&g.clear(h)):e=g.toString());c&&(a.j.U=!1,b=a.H.power)&&(b.textContent="Power");a.v=0;return e}
l.reset=function(){this.j.reset=!0;this.F&&this.F.reset&&(Ib(this,"Resetting "+this.F.type),this.F.reset());this.i&&this.i.reset&&(Ib(this,"Resetting "+this.i.type),this.i.reset());for(var a=tb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.F&&c!==this.i&&c.reset&&(Ib(this,"Resetting "+c.type),c.reset())}this.j.reset=!1;I(this,-1)};l.start=function(a,b){for(var c=tb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}I(this,-1)};
l.stop=function(a,b){for(var c=tb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}I(this,-1)};
function I(a,b){if(a.g){var c=a.g,d=b||0,e=c.H.speed;e&&(0>=d||30<=(c.Ca+=d))&&(e.textContent=c.j.K?c.R.toFixed(2)+"Mhz":"Stopped",c.Ca=0)}if(a.u&&(a=a.u,b=b||0,a.M)){c=a.g.j.K;d=!!(a.g.v&8);if(0>=b||60<=(a.L+=b)){e=a.g.u;if(a.H.PC){var g=a.A&&a.A.ba||8,e=e||0,e=8==g?pa(e,void 0):t(e,void 0);a.H.PC.textContent!=e&&(a.H.PC.textContent=e)}a.L=0}-1>b?a.i=a.g.u:0<b&&c&&!d&&(a.i=a.g.la);$b(a,a.i);Ub(a,a.v)}}
l.ga=function(a,b,c){var d=this;switch(b){case "power":return this.H[b]=c,c.onclick=function(){d.v||(d.j.U?Jf(d,!1,!0):Sf(d,d.Ga))},!0;case "reset":return this.H[b]=c,c.onclick=function(){if(d.j.U&&!d.v)if(d.b&&!d.F){var a=sb("Click OK to save changes to this "+Jb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Jf(d,a,!0);!a&&d.N?window&&window.location.reload():d.Ga(Pf)}else d.reset(),d.g&&!d.A&&d.g.Z()},!0;case "save":if(xa())c.parentNode.removeChild(c);else return this.H[b]=
c,c.onclick=function(){var a=Of(d,!0);if(a){var b=!!(d.b&&!d.F||d.N),c=Jf(d,b);b?ig(d,a,c):d.ca("Resume disabled, machine state not saved")}},!0}return!1};
function Of(a,b){var c=a.i;c||((c=Ra(dg),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=zg(a,c))||a.ca("The user ID is invalid.")):b&&a.ca("Browser local storage is not available"));return c}
function zg(a,b){a.i=null;b=Fa(ya()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Sa(dg,b.data),a.i=b.data)}catch(d){u(d.message+" ("+c+")")}return a.i}function Rf(a){var b=null;a.i&&(b=ya()+"/api/v1/user?req=load&user="+a.i+"&state="+Ag(a,"1.34.2"));return b}
function ig(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ag(a,"1.34.2");d.data=c;b=Fa(ya()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ca("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ca(c),Sa(dg,""),a.i=null)}}
function wd(a,b){if(a.oa){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.oa.focus();!b&&window&&window.scrollTo(c,d)}}var Zf="failsafe",Uf="validate",Wf="timestamp",fg="version",gg="url",hg="browser",dg="user",Yf=-1,Pf=0,Xf=1,ag=2,yg=3;Za(function(){for(var a=C(document,B+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=C(c,B,"computer"),e=0;e<c.length;e++){var g=c[e],f=A(g),f=new Mf(f,d,!0);wb(f,g);f.O&&Sf(f,f.Ga)}});
$a.show.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=vb("Computer",c.id))&&c.S&&!c.j.U&&c.Ga(Yf)}});$a.exit.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=vb("Computer",c.id))&&c.j.U&&Jf(c,!(!c.b||c.F),!0)}});function H(a,b,c){this.id=a.id;this.g="";this.b={};this.A=this.C=!1;this.key=Ag(a,b,c);bg(this,a.ub)}l=H.prototype;l.set=function(a,b){try{this.b[a]=b}catch(c){}};l.get=function(a){return this.b[a]||null};
l.data=function(){return this.b};function Qf(a,b){return b?(a.g=b,a.A=!0,a.C=!1,!0):a.A?!0:Ha()&&(b=Ra(a.key))?(a.g=b,a.A=!0):!1}function Vf(a){var b=!0;if(!a.C)try{a.b=JSON.parse(a.g),a.C=!0}catch(c){u(c.message||c),b=!1}return b}function cg(a){var b=!0;if(Ha()){var c=JSON.stringify(a.b);Sa(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}l.toString=function(){return this.b?JSON.stringify(this.b):this.g};
function bg(a,b){a.g="";a.b={};a.A=a.C=!1;b&&a.set("parms",b)}l.clear=function(a){bg(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Ag(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Bg=0;
function Cg(a,b,c,d,e,g,f){g("Loading "+a+"...");Fa(a,null,!0,function(h,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),f(k,null)):Dg(k,a,b,c,d,e,g,f)})}
function Dg(a,b,c,d,e,g,f,h){function k(a,f){if(f)h(f,null);else{c&&(pb(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(f?' url="'+f+'"':"")));g||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));f=null;if("<"==a.charAt(0))try{g||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,f)}}a?g?Eg(a,f,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Eg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Fa(e,null,!0,function(g,f,h){if(h||!f)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=f.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(f=f.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}f=f.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],f);Eg(a,b,c)}})}else c(a,null)}
function Fg(a,b,c,d,e){function g(a){if(void 0===k){var b=h&&C(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function f(a){g("Error: "+a);m&&(--Bg||cb(!0));m=!1}var h,k,m=!0;Bg++;qb[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=n:y.appendChild(document.createTextNode(n));r.appendChild(y)}d||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.2/components.xsl");n=function(e,k){k?Cg(d,null,a,null,!1,g,function(a,e){e?(pb(b,d,a),g("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Bg||cb(!0)):f("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),--Bg||
cb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?Cg(c,b,a,e,!0,g,n):Dg(c,null,b,a,e,!1,g,n)}else f("missing machine element: "+b)}catch(U){f(U.message)}return m}window.embedPDP10=function(a,b,c,d){cb(!1);return Fg("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){cb(!1);return Fg("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return vb(b,a+".machine")};
function I(a,b){if(a.i){var c=a.i,d=b||0,e=c.H.speed;e&&(0>=d||30<=(c.Ca+=d))&&(e.textContent=c.j.K?c.R.toFixed(2)+"Mhz":"Stopped",c.Ca=0)}if(a.u&&(a=a.u,b=b||0,a.M)){c=a.i.j.K;d=!!(a.i.v&8);if(0>=b||60<=(a.L+=b)){e=a.i.u;if(a.H.PC){var g=a.A&&a.A.ba||8,e=e||0,e=8==g?pa(e,void 0):t(e,void 0);a.H.PC.textContent!=e&&(a.H.PC.textContent=e)}a.L=0}-1>b?a.g=a.i.u:0<b&&c&&!d&&(a.g=a.i.la);bc(a,a.g);Wb(a,a.v)}}
l.ga=function(a,b,c){var d=this;switch(b){case "power":return this.H[b]=c,c.onclick=function(){d.v||(d.j.U?Mf(d,!1,!0):Vf(d,d.Ga))},!0;case "reset":return this.H[b]=c,c.onclick=function(){if(d.j.U&&!d.v)if(d.b&&!d.G){var a=sb("Click OK to save changes to this "+Jb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Mf(d,a,!0);!a&&d.N?window&&window.location.reload():d.Ga(Sf)}else d.reset(),d.i&&!d.A&&d.i.Z()},!0;case "save":if(xa())c.parentNode.removeChild(c);else return this.H[b]=
c,c.onclick=function(){var a=Rf(d,!0);if(a){var b=!!(d.b&&!d.G||d.N),c=Mf(d,b);b?lg(d,a,c):d.ca("Resume disabled, machine state not saved")}},!0}return!1};
function Rf(a,b){var c=a.g;c||((c=Ra(gg),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Cg(a,c))||a.ca("The user ID is invalid.")):b&&a.ca("Browser local storage is not available"));return c}
function Cg(a,b){a.g=null;b=Fa(ya()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Sa(gg,b.data),a.g=b.data)}catch(d){u(d.message+" ("+c+")")}return a.g}function Uf(a){var b=null;a.g&&(b=ya()+"/api/v1/user?req=load&user="+a.g+"&state="+Dg(a,"1.34.2"));return b}
function lg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Dg(a,"1.34.2");d.data=c;b=Fa(ya()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ca("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ca(c),Sa(gg,""),a.g=null)}}
function yd(a,b){if(a.oa){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.oa.focus();!b&&window&&window.scrollTo(c,d)}}var bg="failsafe",Xf="validate",Zf="timestamp",ig="version",jg="url",kg="browser",gg="user",ag=-1,Sf=0,$f=1,dg=2,Bg=3;Za(function(){for(var a=C(document,B+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=x(c),c=C(c,B,"computer"),e=0;e<c.length;e++){var g=c[e],f=x(g),f=new Pf(f,d,!0);wb(f,g);f.O&&Vf(f,f.Ga)}});
$a.show.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=vb("Computer",c.id))&&c.S&&!c.j.U&&c.Ga(ag)}});$a.exit.push(function(){for(var a=C(document,B,"computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=vb("Computer",c.id))&&c.j.U&&Mf(c,!(!c.b||c.G),!0)}});function H(a,b,c){this.id=a.id;this.i="";this.b={};this.A=this.g=!1;this.key=Dg(a,b,c);eg(this,a.ub)}l=H.prototype;l.set=function(a,b){try{this.b[a]=b}catch(c){}};l.get=function(a){return this.b[a]||null};
l.data=function(){return this.b};function Tf(a,b){return b?(a.i=b,a.A=!0,a.g=!1,!0):a.A?!0:Ha()&&(b=Ra(a.key))?(a.i=b,a.A=!0):!1}function Yf(a){var b=!0;if(!a.g)try{a.b=JSON.parse(a.i),a.g=!0}catch(c){u(c.message||c),b=!1}return b}function fg(a){var b=!0;if(Ha()){var c=JSON.stringify(a.b);Sa(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}l.toString=function(){return this.b?JSON.stringify(this.b):this.i};
function eg(a,b){a.i="";a.b={};a.A=a.g=!1;b&&a.set("parms",b)}l.clear=function(a){eg(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Dg(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Eg=0;
function Fg(a,b,c,d,e,g,f){g("Loading "+a+"...");Fa(a,null,!0,function(h,k,m){m?(k||(k="unable to load "+a+" ("+m+")"),f(k,null)):Gg(k,a,b,c,d,e,g,f)})}
function Gg(a,b,c,d,e,g,f,h){function k(a,f){if(f)h(f,null);else{c&&(pb(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(f?' url="'+f+'"':"")));g||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));f=null;if("<"==a.charAt(0))try{g||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,f)}}a?g?Hg(a,f,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Hg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Fa(e,null,!0,function(g,f,h){if(h||!f)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=f.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(f=f.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}f=f.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],f);Hg(a,b,c)}})}else c(a,null)}
function Ig(a,b,c,d,e){function g(a){if(void 0===k){var b=h&&C(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=za(a))}function f(a){g("Error: "+a);m&&(--Eg||cb(!0));m=!1}var h,k,m=!0;Eg++;qb[b]={};try{if(h=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=n:z.appendChild(document.createTextNode(n));r.appendChild(z)}d||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.2/components.xsl");n=function(e,k){k?Fg(d,null,a,null,!1,g,function(a,e){e?(pb(b,d,a),g("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Eg||cb(!0)):f("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),--Eg||
cb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?Fg(c,b,a,e,!0,g,n):Gg(c,null,b,a,e,!1,g,n)}else f("missing machine element: "+b)}catch(U){f(U.message)}return m}window.embedPDP10=function(a,b,c,d){cb(!1);return Ig("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){cb(!1);return Ig("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return vb(b,a+".machine")};
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!yb[a]){for(var c=!0,d=yb,e=a,g=b.length,f=[],h=[],k="",m=null,n=0;n<g;n++){var r=b[n];if('"'==r||"'"==r)m&&r!=m?k+=r:(m?m=null:m=r,k&&(h.push(k),k=""));else{if(!m){if("\r"==r||"\n"==r)r=";";if(" "==r||"\t"==r||";"==r){k&&(h.push(k),k="");";"==r&&h.length&&(f.push(h),h=[]);continue}}k+=r}}k&&h.push(k);h.length&&f.push(h);d[e]=f;xb(a)||(c=!1)}return c};window.enableEvents=cb;window.sendEvent=eb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.2/pdp10-dbg.map

View file

@ -36,7 +36,7 @@ hc:82,ic:83,jc:84,kc:85,lc:86,mc:87,nc:88,oc:89,Ya:90,"[":91,"\\":92,"]":93,"^":
function ka(a,b,c,d){var e="";if(null==a||isNaN(a))for(;0<c--;)e="?"+e;else for(0>a&&-1<a&&(a=-1);0<c--;){var f=a%b,f=f+(0<=f&&9>=f?48:55),e=String.fromCharCode(f)+e;a=Math.trunc(a/b)}return(void 0===d?"":d)+e}function ma(a,b){b?12<b&&(b=12):b=a&-16777216?11:a&-65536?8:6;return ka(a,8,b,"")}function t(a,b,c){b?9<b&&(b=9):b=a&-65536?8:4;return ka(a,16,b,c?"0x":"")}function na(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}
function oa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function pa(){var a=u();return-1!==a.indexOf("pcjs.org",a.length-8)}function qa(a){return a.replace(/[&<>"']/g,function(a){return ra[a]})}function sa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var ra={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};
function ta(){function a(a){return(10>a?"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 w(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,
function v(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 ua(a,b){var c,d={H:null,N:null,T:null,S: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")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.T=g.load;d.S=g.exec;if(e=g.bytes)d.H=e;else if(e=g.words)for(d.H=Array(2*e.length),f=c=0;c<e.length;c++)d.H[f++]=e[c]&255,d.H[f++]=e[c]>>8&255;else if(e=g.longs)for(d.H=Array(4*e.length),f=c=0;c<e.length;c++)d.H[f++]=
e[c]&255,d.H[f++]=e[c]>>8&255,d.H[f++]=e[c]>>16&255,d.H[f++]=e[c]>>24&255;else(e=g.data)?d.Y=e:d.H=g;d.H&&(d.H.length?1==d.H.length&&(x(d.H[0]),d=null):(x("Empty resource: "+a),d=null));d.N=g.symbols}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){x("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.H=e)}return d}
@ -44,118 +44,119 @@ function u(){return"http://"+(window?window.location.host:"www.pcjs.org")}functi
function ya(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function za(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}
function Aa(a){if(!Ba){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ba=c}return Ba[a]}function Ca(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function y(a){z.init.push(a)}
function Da(a){if(Ea)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){x(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function A(a){!Ea&&a?(Ea=!0,Fa&&Ga("init"),Ha&&Ga("show")):Ea=a}function Ga(a){z[a]&&Da(z[a])}var Ba=null,z={init:[],show:[],exit:[]},Fa=!1,Ha=!1,Ea=!0,wa=null;Ca("onload",function(){Fa=!0;Da(z.init)});Ca("onpageshow",function(){Ha=!0;Da(z.show)});Ca(za("Opera")||za("iOS")?"onunload":"onbeforeunload",function(){Da(z.exit)});
function B(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ma=b.comment;this.Xa=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.c={ready:!1,ra:!1,Da:!1,B:!1,error:!1};this.ta=null;this.c.error=!1;this.v=this.f=this.m=this.s=this.ba=null;C.push(this)}function Ia(a,b,c){Ja[a]&&b&&(Ja[a][b]=c)}function D(){return Date.now()||+new Date}
function B(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ma=b.comment;this.Xa=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.c={ready:!1,ra:!1,Da:!1,B:!1,error:!1};this.ta=null;this.c.error=!1;this.v=this.f=this.o=this.s=this.ba=null;C.push(this)}function Ia(a,b,c){Ja[a]&&b&&(Ja[a][b]=c)}function D(){return Date.now()||+new Date}
function x(a){window&&window.alert(a)}function Ka(a){var b=!1;window&&(b=window.confirm(a));return b}function E(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<C.length;b++){var d=C[b];a&&d.id.indexOf(a)||c.push(d)}return c}function La(a){if(void 0!==a){var b;for(b=0;b<C.length;b++)if(C[b].id===a)return C[b]}return null}
function F(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<C.length;d++)if(c)c==C[d]&&(c=null);else if(!(a!=C[d].type||b&&C[d].id.indexOf(b)))return C[d]}return null}function G(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){x(c.message+" ("+a+")")}return b}
function H(a,b){var c=I;b=J(b.parentNode,c+"-control");for(var d=0;d<b.length;d++)for(var e=b[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),p=0;p<l.length;p++)switch(h=l[p],h){case c+"-binding":(h=G(g))&&h.binding&&a.U(h.type,h.binding,g,h.value),p=l.length}}}}
function J(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
function Ma(a){for(var b=!0,c=Na[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=Oa.indexOf(e)&&(f=function(){return function(){Ma(a)}}());var g=Pa[e];if(g)if(!f)b=g(d[1],d[2],d[3]);else{if(!g(f,d[1],d[2],d[3]))break}else{var b=!1,h=F(d[1],a);if(h)if(g=Qa[e])b=g(h,d[2],d[3]);else{var l=h.exports;if(l&&(g=l[e]))if(b=!0,!f)b=g.call(h,d[2],d[3]);else if(!g.call(h,f,d[2],d[3]))break}}if(!b){x("Script error: "+e+(g?" failed":" unrecognized"));break}}c&&!c.length&&delete Na[a];return b}k=B.prototype;
k.toString=function(){return this.name?this.name:this.id||this.type};
k.U=function(a,b,c){switch(b){case "clear":return this.i[b]||(this.i[b]=c,c.onclick=function(a){return function(){a.i.print&&(a.i.print.value="")}}(this)),!0;case "print":return this.i[b]||(this.ba=this.i[b]=c,c.value="",this.K=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.F=function(a){this.K(a,this.la)}),!0;default:return!1}};k.log=function(){};k.K=function(){};
k.status=function(a){this.K(this.la+": "+a)};k.F=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function Ra(a,b){b&&(a.c.ready?b():a.ta=b);return a.c.ready}function K(a){if(!a.c.error&&(a.c.ready=!0,a.c.ready)){var b=a.ta;a.ta=null;b&&b()}}function Sa(a,b){a.c.Da?(a.c.ra=!1,a.c.Da=!1):a.c.error?a.K(a.toString()+" error"):a.c.ra=b}k.V=function(){return this.c.B=!0};k.P=function(a,b){b&&(this.c.B=!1);return!0};
k.U=function(a,b,c){switch(b){case "clear":return this.i[b]||(this.i[b]=c,c.onclick=function(a){return function(){a.i.print&&(a.i.print.value="")}}(this)),!0;case "print":return this.i[b]||(this.ba=this.i[b]=c,c.value="",this.L=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.F=function(a){this.L(a,this.la)}),!0;default:return!1}};k.log=function(){};k.L=function(){};
k.status=function(a){this.L(this.la+": "+a)};k.F=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function Ra(a,b){b&&(a.c.ready?b():a.ta=b);return a.c.ready}function K(a){if(!a.c.error&&(a.c.ready=!0,a.c.ready)){var b=a.ta;a.ta=null;b&&b()}}function Sa(a,b){a.c.Da?(a.c.ra=!1,a.c.Da=!1):a.c.error?a.L(a.toString()+" error"):a.c.ra=b}k.V=function(){return this.c.B=!0};k.P=function(a,b){b&&(this.c.B=!1);return!0};
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]),window.PCjs.Commands||(window.PCjs.Commands={}));
var Ja=window?window.PCjs.Machines:{},C=window?window.PCjs.Components:[],Na=window?window.PCjs.Commands:{},Oa=["hold","sleep","wait"],Pa={alert:function(a){x(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},Qa={select:function(a,b,c){var d=!1;if(a=a.bindings[b])for(b=0;b<a.options.length;b++)if(a.options[b].textContent==c){a.selectedIndex!=b&&(a.selectedIndex=b);d=!0;break}return d}};
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
var I="pdp10",L="PDPjs",M=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),N=Math.pow(2,18),Va=Math.pow(2,17)-1,Wa=Math.pow(2,35)-1,Xa=Math.pow(2,23),I="pdp10",L="PDPjs";
function Ya(a,b){B.call(this,"Panel",a);this.C=this.D=0;this.R=b;this.b=this.w=this.g=this.h=0;this.G=this.I=-1;this.L=this.M=this.u=!1;this.O=Za;this.j={};this.a={START:[1,1,!0,!1,this.ib],STEP:[1,1,!1,!1,this.jb],ENABLE:[1,1,!1,!1,this.cb],CONT:[1,1,!0,!1,this.ab],DEP:[0,0,!0,!1,this.bb],EXAM:[1,1,!0,!1,this.eb],LOAD:[1,1,!0,!1,this.gb],TEST:[0,0,!0,!1,this.fb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.hb,a];this.v=this.f=this.m=this.s=null;this.exports={hold:this.$a,toggle:this.sb,reset:this.ob,
set:this.rb};K(this)}n(Ya,B);k=Ya.prototype;k.reset=function(a){this.stop();a&&$a(this,this.h=0)};
k.U=function(a,b,c,d){if(this.s&&this.s.U(a,b,c,d)||this.f&&this.f.U(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.D++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.D++,!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(){ab(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){bb(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){ab(a,
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){bb(a,b)}}(this,b),!0):B.prototype.U.call(this,a,b,c,d)}};k.Z=function(a,b,c,d){this.s=a;this.m=b;this.f=c;this.v=d;cb(this);db(this)};k.V=function(a,b){if(!b)if(this.R&&eb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.b,this.h,this.g]);return a.data()};
k.restore=function(a){if(a=a[0])fb(this,this.b=a[0]),$a(this,this.h=a[1]),gb(this,a[2]);return!0};k.ob=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}db(this);return!0};function hb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function cb(a,b){for(var c in a.j)hb(a,c,null!=b?b:a.j[c])}function ib(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function db(a){for(var b in a.a)ib(a,b,a.a[b][1])}
k.$a=function(a,b,c){if(ab(this,b)){if(c){var d=this;setTimeout(function(){bb(d,b);a&&a()},+c);return!1}bb(this,b)}return!0};
var I="pdp10",L="PDPjs",M=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),N=Math.pow(2,18),Va=Math.pow(2,17)-1,Wa=Math.pow(2,35)-1,Xa=Math.pow(2,35),Ya=Math.pow(2,36),Za=Math.pow(2,23),I="pdp10",L="PDPjs";
function $a(a,b){B.call(this,"Panel",a);this.C=this.D=0;this.R=b;this.b=this.w=this.g=this.h=0;this.G=this.I=-1;this.K=this.M=this.u=!1;this.O=ab;this.l={};this.a={START:[1,1,!0,!1,this.ib],STEP:[1,1,!1,!1,this.jb],ENABLE:[1,1,!1,!1,this.cb],CONT:[1,1,!0,!1,this.ab],DEP:[0,0,!0,!1,this.bb],EXAM:[1,1,!0,!1,this.eb],LOAD:[1,1,!0,!1,this.gb],TEST:[0,0,!0,!1,this.fb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.hb,a];this.v=this.f=this.o=this.s=null;this.exports={hold:this.$a,toggle:this.sb,reset:this.ob,
set:this.rb};K(this)}n($a,B);k=$a.prototype;k.reset=function(a){this.stop();a&&bb(this,this.h=0)};
k.U=function(a,b,c,d){if(this.s&&this.s.U(a,b,c,d)||this.f&&this.f.U(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.D++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.l[b]=d?1:0,this.D++,!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(){cb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){db(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){cb(a,
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){db(a,b)}}(this,b),!0):B.prototype.U.call(this,a,b,c,d)}};k.Z=function(a,b,c,d){this.s=a;this.o=b;this.f=c;this.v=d;eb(this);fb(this)};k.V=function(a,b){if(!b)if(this.R&&gb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.b,this.h,this.g]);return a.data()};
k.restore=function(a){if(a=a[0])hb(this,this.b=a[0]),bb(this,this.h=a[1]),ib(this,a[2]);return!0};k.ob=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}fb(this);return!0};function jb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function eb(a,b){for(var c in a.l)jb(a,c,null!=b?b:a.l[c])}function kb(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function fb(a){for(var b in a.a)kb(a,b,a.a[b][1])}
k.$a=function(a,b,c){if(cb(this,b)){if(c){var d=this;setTimeout(function(){db(d,b);a&&a()},+c);return!1}db(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.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):
2==e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f)}return gb(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,ib(this,a,c[1]),!0):!1};k.sb=function(a){return ab(this,a)?(bb(this,a),!0):!1};function ab(a,b){var c=a.a[b];return c?(ib(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=jb&&(a.L=b==kb,a.M=b==lb),!0):!1}function bb(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(ib(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
k.ib=function(a){a||this.f.c.A||(this.f.g=this.b%M,this.a[mb]&&this.a[mb][1]&&nb(this.f))};k.jb=function(){};k.cb=function(a){a||P(this.f)};k.ab=function(a){if(!a&&!this.f.c.A)if(this.a[mb]&&this.a[mb][1])nb(this.f);else{a=this.v;var b;if(b=a)a.c.ra&&(a.c.Da=!0),b=!a.c.ra;if(b)Sa(a,!0),a.b(0,null),Sa(a,!1);else try{var c=this.f.wa(1);0<c&&(ob(this.f,c),pb(this.f,c,!0),qb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.c.error=!0,c.F(a))}this.stop();this.s&&Q(this.s)}};
k.bb=function(a){a&&!this.f.c.A&&(this.L&&rb(this),a=$a(this,this.h=this.g),this.O==Za?sb(this.m,this.b,a):this.f.o(this.b,a))};k.eb=function(a){if(!a&&!this.f.c.A){this.M&&rb(this);if(this.O==Za){a=this.m;var b=this.b,c=a.a[(b&a.g)>>>a.b];a.h++;b=c.m(b&16383,b);a.h--;a=b}else a=this.f.l(this.b);$a(this,this.h=a)}};k.gb=function(a){a||this.f.c.A||fb(this,this.g)};k.fb=function(a){a?(this.u=!0,cb(this,!0)):(this.u=!1,cb(this),gb(this,0))};k.hb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
function rb(a){var b=1,c=a.m.g;a.a[jb]&&a.a[jb][1]||(b=-b);fb(a,a.b&~c|a.b+b&c)}function fb(a,b){a.b=b&a.m.g;if(a.G!==a.b){a.G=a.b;b=a.G;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.j[e]=f;d.u||hb(d,e,f)}}}function $a(a,b){a.w=b%Ua;if(a.I!==a.w){a.I=a.w;b=a.I;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.j[e]=f;d.u||hb(d,e,f)}}return a.w}function gb(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;db(a);return!0}k.stop=function(){fb(this,this.f.g)};
function eb(){for(var a=J(document,I,"panel"),b=0;b<a.length;b++){var c=a[b],d=G(c),e=La(d.id);e||(e=new Ya(d,!0));H(e,c)}}var Za=7,kb="DEP",mb="ENABLE",lb="EXAM",jb="STEP";y(eb);function tb(a,b,c){B.call(this,"Bus",a);this.f=b;this.v=c;this.w=+a.busWidth||18;this.u=1<<this.w;this.g=this.u-1;this.b=Math.log2(16384);this.j=this.u/16384|0;this.h=0;this.a=[];a=new R(this);ub(a);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;K(this)}n(tb,B);k=tb.prototype;k.reset=function(){};
k.V=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,vb(this));return a.data()};k.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],l=d[g++];h--;)f[e++]=l;d=f}e=this.a[c];if(!e||!e.restore(d)){x("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
function wb(a,b,c,d){for(var e=b,f=c,g=e>>>a.b;0<f&&g<a.a.length;){var h=a.a[g],l=16384*g,p=16384-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.aa)return h.va+=h.aa-e,h.aa=e,!0;if(e>=h.aa+h.va){p=h.size-(e-l);p>f&&(p=f);h.va=e-h.aa+p;e=l+16384;f-=p;g++;continue}}return xb(yb,e,f)}e=new R(a,e,p,16384,d);ub(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+zb[d]+" at "+ma(b)),!0):xb(Ab,b,c)}function sb(a,b,c){var d=a.a[(b&a.g)>>>a.b];a.h++;d.i(c,b&16383,b);a.h--}
function vb(a){for(var b=0,c=[],d=0;d<a.j;d++){var e=a.a[d];if(e.Ea||e.Za){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],r=g+1;r<e.length&&e[r]===p;)r++;l[h++]=r-g;l[h++]=p;g=r}l.length<e.length&&(e=l)}c[f]=e}}return c}function xb(a,b,c){x("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var yb=1,Ab=2;function Bb(a){B.call(this,"Device",a)}n(Bb,B);k=Bb.prototype;k.Z=function(a,b,c,d){this.m=b;this.s=a;this.f=c;this.v=d;K(this)};
k.V=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new O(this)).data()};k.restore=function(){return!0};y(function(){for(var a=J(document,I,"device"),b=0;b<a.length;b++){var c,d=a[b];c=G(d);switch(c.type){case "default":c=new Bb(c),H(c,d)}}});
function R(a,b,c,d,e){this.v=a;this.id=Cb+=2;this.aa=b;this.va=c;this.size=d||0;this.type=e||Db;this.s=e==Eb;this.l=this.m=this.Fa;this.o=this.i=this.Ha;this.f=this.b=0;ub(this);this.Ea=this.Za=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Fb(this,Gb)}else Fb(this)}k=R.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.Ea=!0):!1};function Fb(a,b){b||(b=Hb);Ib(a,b,void 0);Jb(a,b,void 0)}
function Ib(a,b,c){c&&a.f||(a.l=b[0]||a.Fa);if(c||void 0===c)a.m=b[0]||a.Fa}function Jb(a,b,c){c&&a.b||(a.o=!a.s&&b[1]||a.Ha);if(c||void 0===c)a.i=b[1]||a.Ha}function ub(a,b){a.f=a.b=0;b&&((a.f=b.f)&&Ib(a,Kb,!1),(a.b=b.b)&&Jb(a,Kb,!1))}k.Fa=function(){var a=this.v;a.h||P(a.f);return-1};k.Ha=function(){};k.mb=function(a){return this.a[a]};k.vb=function(a,b){this.a[b]!=a&&(this.a[b]=a,this.Ea=!0)};k.kb=function(a,b){return this.m(a,b)};k.ub=function(a,b,c){this.s||this.i(a,b,c)};
var Db=0,Eb=2,zb=["NONE","RAM","ROM"],Cb=0,Hb=[],Gb=[R.prototype.mb,R.prototype.vb],Kb=[R.prototype.kb,R.prototype.ub];
function Lb(a,b){B.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.xa=0;this.Ba=b;this.W=c;this.za=Math.round(this.Ba/1E4)/100;this.O=this.za*this.W;this.Aa=this.fa=this.X=this.pa=0;this.c.A=this.c.Ga=!1;this.c.J=a.autoStart;"string"==typeof this.c.J&&(this.c.J="true"==this.c.J);this.c.sa=!1;this.na=this.R=0;this.oa=+a.csStart;this.da=+a.csInterval;this.ea=+a.csStop;this.w=[];this.Na=this.pb.bind(this);this.I=this.u=this.D=this.G=this.j=this.ja=this.C=this.ca=this.Ca=this.L=0;this.ka=
null;K(this)}n(Lb,B);k=Lb.prototype;k.Z=function(a,b,c,d){this.s=a;this.m=b;this.v=d;this.ka=a.g;for(a=0;a<Mb.length;a++)(b=this.i[Mb[a]])&&this.s.U(null,Mb[a],b);K(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.V=function(a,b){var c=S(this.s,"autoStart");null!=c?this.c.J="true"==c?!0:"false"==c?!1:!!c:null==this.c.J&&(this.c.J=void 0===this.i.run);if(!b){if(a){Nb(this);if(!this.restore(a))return!1;Ob(this)}else this.reset();this.status("No debugger detected");this.c.J||this.K("CPU will not be auto-started "+(this.ka?"(click Run to start)":"(type 'go' to start)"))}return!0};k.P=function(a){return a?this.save():!0};k.J=function(){return this.c.A?!0:this.c.J?(nb(this),!0):!1};k.Pa=function(){return 0};
function Ob(a){void 0===a.oa&&(a.oa=0);void 0===a.da&&(a.da=-1);void 0===a.ea&&(a.ea=-1);a.c.sa=0<=a.oa&&0<a.da;a.c.sa&&(a.na=0,a.R=a.oa-a.I)}function qb(a,b){if(a.c.sa){var c=!1;a.na=a.na+a.Pa()|0;a.R-=b;0>=a.R&&(a.R+=a.da,c=!0);0<=a.ea&&a.ea<=Pb(a)&&(a.da=a.ea=-1,Ob(a),P(a),c=!0);c&&a.K(Pb(a)+" cycles: checksum="+t(a.na))}}
k.U=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.s)if(a=d.s,a.c.B)a=!0;else{var b=null,c,h=E(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.c.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.c.B);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.c.ready?"powered yet":"ready yet"+(b.ta?" (waiting for notification)":""))+".");a=!1}a&&(d.c.A?P(d):nb(d))},!0;case "speed":return this.i[b]=
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Qb(d,d.W<<1,!0)},c.textContent=this.O.toFixed(2)+"Mhz",!0}return!1};function pb(a,b,c){a.I+=b;c&&(a.D=a.G=0)}function Rb(a,b){var c=1;b&&1<a.W&&a.L&&(c=a.L/a.za);a.Aa=Math.round(1E3/Sb);a.fa=Math.floor(a.Ba/Sb*c);b||(a.X=a.fa);a.pa=0}function Pb(a){return a.I+a.u+a.D-a.G}function Nb(a){a.L=0;a.Ca=0;a.I=a.u=a.D=a.G=0;Ob(a);Qb(a,1)}
function Qb(a,b,c){if(void 0!==b){.8>a.L/a.O&&(b=1);a.W=b;b=a.za*a.W;if(a.O!=b){a.O=b;b=a.O.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.K("target speed: "+b)}c&&a.s&&(c=a.s,c.ba&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.ba.focus(),window&&window.scrollTo(b,d)))}pb(a,a.u);a.u=0;a.j=D();a.C=0;Rb(a)}function Tb(a){for(var b=[],c=0;c<a.w.length;c++)b.push(a.w[c][0]);return b}
function ob(a,b){for(var c=a.w.length-1;0<=c;c--){var d=a.w[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Ub(a,b){var c=a.D-=a.G;a.G=0;b&&(a.D=0);return c}
k.pb=function(){if(this.c.A){this.pa>=this.Ba&&Rb(this,!0);this.ca=0;this.ja=D();if(this.C){var a=this.ja-this.C;a>this.Aa&&(this.j+=a,this.j>this.ja&&(this.j=this.ja))}try{do{for(var b,c=this.c.sa?1:this.fa,d=this.w.length-1;0<=d;d--){var e=this.w[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.wa(b)}catch(f){if("number"!=typeof f)throw f;}b=Ub(this,!0);this.ca+=b;this.u+=b;qb(this,b);ob(this,b);this.X-=b;if(0>=this.X){this.X+=this.fa;++this.Ca>=Vb&&(this.s&&Q(this.s,void 0),this.Ca=0);break}}while(this.c.A)}catch(f){P(this);
this.s&&this.s.stop(D(),Pb(this));a=f.stack||f.message;this.c.error=!0;this.F(a);return}if(this.c.A){a=setTimeout;b=this.Na;this.C=D();c=this.Aa;this.ca&&(c=Math.round(c*this.ca/this.fa));c-=this.C-this.ja;if(d=this.C-this.j)this.L=Math.round(this.u/(10*d))/100,864E5<=d&&(this.I=0,Qb(this));if(0>c||this.L<this.O)-1E3>c&&(this.j-=c),c=0;this.pa+=this.ca;this.C+=c;a(b,c)}}};
function nb(a){var b;a.c.error?(a.K(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.c.A)a.K(a.toString()+" busy");else{Qb(a);a.c.A=!0;a.c.Ga=!0;if(b=a.i.run)b.textContent="Halt";a.s&&a.s.start(a.j,Pb(a));a.v||a.status("Started");setTimeout(a.Na,0)}}k.wa=function(){return 0};function P(a){var b=!1;if(a.c.A){Ub(a);pb(a,a.u);a.u=0;a.c.A=!1;if(b=a.i.run)b.textContent="Run";a.s&&a.s.stop(D(),Pb(a));b=!0;a.v||a.status("Stopped")}a.c.complete=void 0;return b}var Sb=30,Vb=15,Mb=["power","reset"];
function Wb(a){var b=+a.model||1001;Lb.call(this,a,1E6);this.Va=b;this.La=+a.addrReset||0;this.Wa=Xb.bind(this);this.a=T.bind(this);this.ha=null;this.Ka=[];this.c.complete=!1}n(Wb,Lb);k=Wb.prototype;k.reset=function(){this.status("Model "+this.Va);this.c.A&&P(this);this.b=this.M=this.qa=0;this.ia=this.g=this.ya=this.La;this.h=0;this.l=this.lb;this.o=this.wb;this.ha=null;Nb(this);this.c.error=!1;Lb.prototype.reset.call(this)};k.Pa=function(){return 0};
k.save=function(){var a=new O(this);a.set(0,[this.b,this.M,this.qa,this.g,this.ya,this.ia,this.h]);a.set(1,[]);a.set(2,[this.I,this.W,this.c.J]);a.set(3,Yb(this));a.set(4,Tb(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.b=b.next().value;this.M=b.next().value;this.qa=b.next().value;this.g=b.next().value;this.ya=b.next().value;this.ia=b.next().value;this.h=b.next().value;b=a[2];this.I=b[0];Qb(this,b[1]);this.c.J=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ka.length;d++){var e=this.Ka[d];if(e.tb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ha,this.ha=d)}a=a[4];for(b=0;b<this.w.length&&b<a.length;b++)this.w[b][0]=
a[b];return!0};function Yb(a){var b=[];for(a=a.ha;a;)b.push(a.tb),a=a.next;return b}k.lb=function(a){var b=this.m;a=this.ia=a;return b.a[(a&b.g)>>>b.b].l(a&16383,a)};k.wb=function(a,b){var c=this.m;a=this.ia=a;c.a[(a&c.g)>>>c.b].o(b,a&16383,a)};
k.wa=function(a){this.c.complete=!0;var b=a?this.c.Ga?0:1:-1;this.c.Ga=!1;this.D=this.G=a;this.h=this.h&-5|0;do{if(a=this.h)if(a=this.h&11)this.h&2?this.ha||(this.h&=-3):this.h&1&&this.h++,a=!1;if(a){if(this.h&4&&this.v.h(this.g,b)){P(this);break}if(0>b)break}this.h&=15;this.M=this.M&4194304?this.l(this.b)&8388607:(this.qa=this.l(this.ya=this.g))&8388607;this.b=this.M&262143;if(a=this.M>>18&15)this.b=this.b+this.l(a)&Ta;this.M&4194304?a=-1:(this.g=(this.g+1)%M,a=this.qa/Xa|0);0<=a&&this.Wa(a)}while(0<
this.G);return this.c.complete?this.D-this.G:!1===this.c.complete?-1:0};y(function(){for(var a=J(document,I,"cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Wb(d);H(d,c)}});function Xb(a){Zb[a>>4].call(this,a)}function U(a){this.a(a)}function $b(a){var b=a&15,c=this.l(this.b),d=this.l(b);this.o(b,V(a,d,c)+(c-(c&262143)))}function ac(a){var b=a&15,c=this.l(b);this.o(b,V(a,c,0))}function bc(a){var b=this.l(a&15),c=this.l(this.b);this.o(this.b,V(a,c,b)+(b-(b&262143)))}
function cc(a){var b=this.l(this.b),c,d=b;if(c=a&384)switch(d-=d&262143,c){case 256:d+=262143;break;case 384:d+=b>Wa?262143:0}b=d;this.o(this.b,b);(a&=15)&&this.o(a,b)}function dc(a){var b=a&15,c=(this.l(this.b)&262143)*N,d=this.l(b);this.o(b,V(a,d,c)+c)}function ec(a){var b=a&15,c=this.b*N,d=this.l(b);this.o(b,V(a,d,c)+c)}function fc(a){var b=(this.l(a&15)&262143)*N,c=this.l(this.b);this.o(this.b,V(a,c,b)+b)}
function gc(a){var b=this.l(this.b),c=(b&262143)*N,b=V(a,b,c)+c;this.o(this.b,b);(a&=15)&&this.o(a,b)}function hc(a){var b=a&15,c=this.l(this.b)&262143,d=this.l(b);this.o(b,W(a,d,c)+c)}function ic(a){var b=a&15,c=this.l(b);this.o(b,W(a,c,this.b)+this.b)}function jc(a){var b=this.l(a&15)&262143,c=this.l(this.b);this.o(this.b,W(a,c,b)+b)}
function kc(a){var b=this.l(this.b),c,d=b;if(c=a&384)switch(d&=262143,c){case 256:d+=262143*N;break;case 384:d+=b>Va?262143*N:0}b=d;this.o(this.b,b);(a&=15)&&this.o(a,b)}function lc(a){var b=a&15,c=this.l(this.b)/N|0,d=this.l(b);this.o(b,W(a,d,c)+c)}function mc(a){var b=a&15,c=this.l(b);this.o(b,W(a,c,0))}function nc(a){var b=this.l(a&15)/N|0,c=this.l(this.b);this.o(this.b,W(a,c,b)+b)}function oc(a){var b=this.l(this.b),c=b/N|0,b=W(a,b,c)+c;this.o(this.b,b);(a&=15)&&this.o(a,b)}
function X(a){this.a(a)}function T(a){this.K("undefined opcode: "+ma(a));this.g=(this.g+-1)%M;P(this)}function W(a,b,c){switch(a&384){case 0:b-=b&262143;break;case 128:b=0;break;case 256:b=262143*N;break;case 384:b=c>Va?262143*N:0}return b}function V(a,b,c){switch(a&384){case 0:b&=262143;break;case 128:b=0;break;case 256:b=262143;break;case 384:b=c>Wa?262143:0}return b}
var Zb=[U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,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)},
2==e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f)}return ib(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,kb(this,a,c[1]),!0):!1};k.sb=function(a){return cb(this,a)?(db(this,a),!0):!1};function cb(a,b){var c=a.a[b];return c?(kb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=lb&&(a.K=b==mb,a.M=b==nb),!0):!1}function db(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(kb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
k.ib=function(a){a||this.f.c.A||(this.f.g=this.b%M,this.a[ob]&&this.a[ob][1]&&pb(this.f))};k.jb=function(){};k.cb=function(a){a||P(this.f)};k.ab=function(a){if(!a&&!this.f.c.A)if(this.a[ob]&&this.a[ob][1])pb(this.f);else{a=this.v;var b;if(b=a)a.c.ra&&(a.c.Da=!0),b=!a.c.ra;if(b)Sa(a,!0),a.b(0,null),Sa(a,!1);else try{var c=this.f.wa(1);0<c&&(qb(this.f,c),rb(this.f,c,!0),sb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.c.error=!0,c.F(a))}this.stop();this.s&&Q(this.s)}};
k.bb=function(a){a&&!this.f.c.A&&(this.K&&tb(this),a=bb(this,this.h=this.g),this.O==ab?ub(this.o,this.b,a):this.f.m(this.b,a))};k.eb=function(a){if(!a&&!this.f.c.A){this.M&&tb(this);if(this.O==ab){a=this.o;var b=this.b,c=a.a[(b&a.g)>>>a.b];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.j(this.b);bb(this,this.h=a)}};k.gb=function(a){a||this.f.c.A||hb(this,this.g)};k.fb=function(a){a?(this.u=!0,eb(this,!0)):(this.u=!1,eb(this),ib(this,0))};k.hb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
function tb(a){var b=1,c=a.o.g;a.a[lb]&&a.a[lb][1]||(b=-b);hb(a,a.b&~c|a.b+b&c)}function hb(a,b){a.b=b&a.o.g;if(a.G!==a.b){a.G=a.b;b=a.G;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.l[e]=f;d.u||jb(d,e,f)}}}function bb(a,b){a.w=b%Ua;if(a.I!==a.w){a.I=a.w;b=a.I;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.l[e]=f;d.u||jb(d,e,f)}}return a.w}function ib(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;fb(a);return!0}k.stop=function(){hb(this,this.f.g)};
function gb(){for(var a=J(document,I,"panel"),b=0;b<a.length;b++){var c=a[b],d=G(c),e=La(d.id);e||(e=new $a(d,!0));H(e,c)}}var ab=7,mb="DEP",ob="ENABLE",nb="EXAM",lb="STEP";y(gb);function vb(a,b,c){B.call(this,"Bus",a);this.f=b;this.v=c;this.w=+a.busWidth||18;this.u=1<<this.w;this.g=this.u-1;this.b=Math.log2(16384);this.l=this.u/16384|0;this.h=0;this.a=[];a=new R(this);wb(a);this.a=Array(this.l);for(b=0;b<this.l;b++)this.a[b]=a;K(this)}n(vb,B);k=vb.prototype;k.reset=function(){};
k.V=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,xb(this));return a.data()};k.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&4096>d.length){for(var e=0,f=Array(4096),g=0;g<d.length-1;)for(var h=d[g++],l=d[g++];h--;)f[e++]=l;d=f}e=this.a[c];if(!e||!e.restore(d)){x("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
function yb(a,b,c,d){for(var e=b,f=c,g=e>>>a.b;0<f&&g<a.a.length;){var h=a.a[g],l=16384*g,p=16384-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.aa)return h.va+=h.aa-e,h.aa=e,!0;if(e>=h.aa+h.va){p=h.size-(e-l);p>f&&(p=f);h.va=e-h.aa+p;e=l+16384;f-=p;g++;continue}}return zb(Ab,e,f)}e=new R(a,e,p,16384,d);wb(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Bb[d]+" at "+ma(b)),!0):zb(Cb,b,c)}function ub(a,b,c){var d=a.a[(b&a.g)>>>a.b];a.h++;d.i(c,b&16383,b);a.h--}
function xb(a){for(var b=0,c=[],d=0;d<a.l;d++){var e=a.a[d];if(e.Ea||e.Za){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],r=g+1;r<e.length&&e[r]===p;)r++;l[h++]=r-g;l[h++]=p;g=r}l.length<e.length&&(e=l)}c[f]=e}}return c}function zb(a,b,c){x("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Ab=1,Cb=2;function Db(a){B.call(this,"Device",a)}n(Db,B);k=Db.prototype;k.Z=function(a,b,c,d){this.o=b;this.s=a;this.f=c;this.v=d;K(this)};
k.V=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.P=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new O(this)).data()};k.restore=function(){return!0};y(function(){for(var a=J(document,I,"device"),b=0;b<a.length;b++){var c,d=a[b];c=G(d);switch(c.type){case "default":c=new Db(c),H(c,d)}}});
function R(a,b,c,d,e){this.v=a;this.id=Eb+=2;this.aa=b;this.va=c;this.size=d||0;this.type=e||Fb;this.s=e==Gb;this.j=this.o=this.Fa;this.m=this.i=this.Ha;this.f=this.b=0;wb(this);this.Ea=this.Za=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Hb(this,Ib)}else Hb(this)}k=R.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.Ea=!0):!1};function Hb(a,b){b||(b=Jb);Kb(a,b,void 0);Lb(a,b,void 0)}
function Kb(a,b,c){c&&a.f||(a.j=b[0]||a.Fa);if(c||void 0===c)a.o=b[0]||a.Fa}function Lb(a,b,c){c&&a.b||(a.m=!a.s&&b[1]||a.Ha);if(c||void 0===c)a.i=b[1]||a.Ha}function wb(a,b){a.f=a.b=0;b&&((a.f=b.f)&&Kb(a,Mb,!1),(a.b=b.b)&&Lb(a,Mb,!1))}k.Fa=function(){var a=this.v;a.h||P(a.f);return-1};k.Ha=function(){};k.mb=function(a){return this.a[a]};k.vb=function(a,b){this.a[b]!=a&&(this.a[b]=a,this.Ea=!0)};k.kb=function(a,b){return this.o(a,b)};k.ub=function(a,b,c){this.s||this.i(a,b,c)};
var Fb=0,Gb=2,Bb=["NONE","RAM","ROM"],Eb=0,Jb=[],Ib=[R.prototype.mb,R.prototype.vb],Mb=[R.prototype.kb,R.prototype.ub];
function Nb(a,b){B.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.xa=0;this.Ba=b;this.W=c;this.za=Math.round(this.Ba/1E4)/100;this.O=this.za*this.W;this.Aa=this.fa=this.X=this.pa=0;this.c.A=this.c.Ga=!1;this.c.J=a.autoStart;"string"==typeof this.c.J&&(this.c.J="true"==this.c.J);this.c.sa=!1;this.na=this.R=0;this.oa=+a.csStart;this.da=+a.csInterval;this.ea=+a.csStop;this.C=[];this.Na=this.pb.bind(this);this.K=this.u=this.G=this.I=this.l=this.ja=this.D=this.ca=this.Ca=this.M=0;this.ka=
null;K(this)}n(Nb,B);k=Nb.prototype;k.Z=function(a,b,c,d){this.s=a;this.o=b;this.v=d;this.ka=a.g;for(a=0;a<Ob.length;a++)(b=this.i[Ob[a]])&&this.s.U(null,Ob[a],b);K(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.V=function(a,b){var c=S(this.s,"autoStart");null!=c?this.c.J="true"==c?!0:"false"==c?!1:!!c:null==this.c.J&&(this.c.J=void 0===this.i.run);if(!b){if(a){Pb(this);if(!this.restore(a))return!1;Qb(this)}else this.reset();this.status("No debugger detected");this.c.J||this.L("CPU will not be auto-started "+(this.ka?"(click Run to start)":"(type 'go' to start)"))}return!0};k.P=function(a){return a?this.save():!0};k.J=function(){return this.c.A?!0:this.c.J?(pb(this),!0):!1};k.Pa=function(){return 0};
function Qb(a){void 0===a.oa&&(a.oa=0);void 0===a.da&&(a.da=-1);void 0===a.ea&&(a.ea=-1);a.c.sa=0<=a.oa&&0<a.da;a.c.sa&&(a.na=0,a.R=a.oa-a.K)}function sb(a,b){if(a.c.sa){var c=!1;a.na=a.na+a.Pa()|0;a.R-=b;0>=a.R&&(a.R+=a.da,c=!0);0<=a.ea&&a.ea<=Rb(a)&&(a.da=a.ea=-1,Qb(a),P(a),c=!0);c&&a.L(Rb(a)+" cycles: checksum="+t(a.na))}}
k.U=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.s)if(a=d.s,a.c.B)a=!0;else{var b=null,c,h=E(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.c.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.c.B);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.c.ready?"powered yet":"ready yet"+(b.ta?" (waiting for notification)":""))+".");a=!1}a&&(d.c.A?P(d):pb(d))},!0;case "speed":return this.i[b]=
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Sb(d,d.W<<1,!0)},c.textContent=this.O.toFixed(2)+"Mhz",!0}return!1};function rb(a,b,c){a.K+=b;c&&(a.G=a.I=0)}function Tb(a,b){var c=1;b&&1<a.W&&a.M&&(c=a.M/a.za);a.Aa=Math.round(1E3/Ub);a.fa=Math.floor(a.Ba/Ub*c);b||(a.X=a.fa);a.pa=0}function Rb(a){return a.K+a.u+a.G-a.I}function Pb(a){a.M=0;a.Ca=0;a.K=a.u=a.G=a.I=0;Qb(a);Sb(a,1)}
function Sb(a,b,c){if(void 0!==b){.8>a.M/a.O&&(b=1);a.W=b;b=a.za*a.W;if(a.O!=b){a.O=b;b=a.O.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.L("target speed: "+b)}c&&a.s&&(c=a.s,c.ba&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.ba.focus(),window&&window.scrollTo(b,d)))}rb(a,a.u);a.u=0;a.l=D();a.D=0;Tb(a)}function Vb(a){for(var b=[],c=0;c<a.C.length;c++)b.push(a.C[c][0]);return b}
function qb(a,b){for(var c=a.C.length-1;0<=c;c--){var d=a.C[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Wb(a,b){var c=a.G-=a.I;a.I=0;b&&(a.G=0);return c}
k.pb=function(){if(this.c.A){this.pa>=this.Ba&&Tb(this,!0);this.ca=0;this.ja=D();if(this.D){var a=this.ja-this.D;a>this.Aa&&(this.l+=a,this.l>this.ja&&(this.l=this.ja))}try{do{for(var b,c=this.c.sa?1:this.fa,d=this.C.length-1;0<=d;d--){var e=this.C[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.wa(b)}catch(f){if("number"!=typeof f)throw f;}b=Wb(this,!0);this.ca+=b;this.u+=b;sb(this,b);qb(this,b);this.X-=b;if(0>=this.X){this.X+=this.fa;++this.Ca>=Xb&&(this.s&&Q(this.s,void 0),this.Ca=0);break}}while(this.c.A)}catch(f){P(this);
this.s&&this.s.stop(D(),Rb(this));a=f.stack||f.message;this.c.error=!0;this.F(a);return}if(this.c.A){a=setTimeout;b=this.Na;this.D=D();c=this.Aa;this.ca&&(c=Math.round(c*this.ca/this.fa));c-=this.D-this.ja;if(d=this.D-this.l)this.M=Math.round(this.u/(10*d))/100,864E5<=d&&(this.K=0,Sb(this));if(0>c||this.M<this.O)-1E3>c&&(this.l-=c),c=0;this.pa+=this.ca;this.D+=c;a(b,c)}}};
function pb(a){var b;a.c.error?(a.L(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.c.A)a.L(a.toString()+" busy");else{Sb(a);a.c.A=!0;a.c.Ga=!0;if(b=a.i.run)b.textContent="Halt";a.s&&a.s.start(a.l,Rb(a));a.v||a.status("Started");setTimeout(a.Na,0)}}k.wa=function(){return 0};function P(a){var b=!1;if(a.c.A){Wb(a);rb(a,a.u);a.u=0;a.c.A=!1;if(b=a.i.run)b.textContent="Run";a.s&&a.s.stop(D(),Rb(a));b=!0;a.v||a.status("Stopped")}a.c.complete=void 0;return b}var Ub=30,Xb=15,Ob=["power","reset"];
function Yb(a){var b=+a.model||1001;Nb.call(this,a,1E6);this.Va=b;this.La=+a.addrReset||0;this.Wa=Zb.bind(this);this.a=T.bind(this);this.ha=null;this.Ka=[];this.c.complete=!1}n(Yb,Nb);k=Yb.prototype;k.reset=function(){this.status("Model "+this.Va);this.c.A&&P(this);this.b=this.w=this.qa=0;this.ia=this.g=this.ya=this.La;this.h=0;this.j=this.lb;this.m=this.wb;this.ha=null;Pb(this);this.c.error=!1;Nb.prototype.reset.call(this)};k.Pa=function(){return 0};
k.save=function(){var a=new O(this);a.set(0,[this.b,this.w,this.qa,this.g,this.ya,this.ia,this.h]);a.set(1,[]);a.set(2,[this.K,this.W,this.c.J]);a.set(3,$b(this));a.set(4,Vb(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.b=b.next().value;this.w=b.next().value;this.qa=b.next().value;this.g=b.next().value;this.ya=b.next().value;this.ia=b.next().value;this.h=b.next().value;b=a[2];this.K=b[0];Sb(this,b[1]);this.c.J=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ka.length;d++){var e=this.Ka[d];if(e.tb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ha,this.ha=d)}a=a[4];for(b=0;b<this.C.length&&b<a.length;b++)this.C[b][0]=
a[b];return!0};function ac(a){a&&a!=Xa&&(a=Ya-a);return a}function $b(a){var b=[];for(a=a.ha;a;)b.push(a.tb),a=a.next;return b}k.lb=function(a){var b=this.o;a=this.ia=a;return b.a[(a&b.g)>>>b.b].j(a&16383,a)};k.wb=function(a,b){var c=this.o;a=this.ia=a;c.a[(a&c.g)>>>c.b].m(b,a&16383,a)};
k.wa=function(a){this.c.complete=!0;var b=a?this.c.Ga?0:1:-1;this.c.Ga=!1;this.G=this.I=a;this.h=this.h&-5|0;do{if(a=this.h)if(a=this.h&11)this.h&2?this.ha||(this.h&=-3):this.h&1&&this.h++,a=!1;if(a){if(this.h&4&&this.v.h(this.g,b)){P(this);break}if(0>b)break}this.h&=15;this.w=this.w&4194304?this.j(this.b):this.qa=this.j(this.ya=this.g);this.w&=8388607;this.b=this.w&262143;if(a=this.w>>18&15)this.b=this.b+this.j(a)&Ta;this.w&4194304?a=-1:(this.g=(this.g+1)%M,a=this.qa/Za|0);0<=a&&this.Wa(a)}while(0<
this.I);return this.c.complete?this.G-this.I:!1===this.c.complete?-1:0};y(function(){for(var a=J(document,I,"cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Yb(d);H(d,c)}});function Zb(a){bc[a>>4].call(this,a)}function U(a){this.a(a)}function cc(a){var b=a&15,c=this.j(this.b),d=this.j(b);this.m(b,V(a,d,c)+(c-(c&262143)))}function dc(a){var b=a&15,c=this.j(b);this.m(b,V(a,c,0))}function ec(a){var b=this.j(a&15),c=this.j(this.b);this.m(this.b,V(a,c,b)+(b-(b&262143)))}
function fc(a){var b=this.j(this.b),c,d=b;if(c=a&384)switch(d-=d&262143,c){case 256:d+=262143;break;case 384:d+=b>Wa?262143:0}b=d;this.m(this.b,b);(a&=15)&&this.m(a,b)}function gc(a){var b=a&15,c=(this.j(this.b)&262143)*N,d=this.j(b);this.m(b,V(a,d,c)+c)}function hc(a){var b=a&15,c=this.b*N,d=this.j(b);this.m(b,V(a,d,c)+c)}function ic(a){var b=(this.j(a&15)&262143)*N,c=this.j(this.b);this.m(this.b,V(a,c,b)+b)}
function jc(a){var b=this.j(this.b),c=(b&262143)*N,b=V(a,b,c)+c;this.m(this.b,b);(a&=15)&&this.m(a,b)}function kc(a){var b=a&15,c=this.j(this.b)&262143,d=this.j(b);this.m(b,W(a,d,c)+c)}function lc(a){var b=a&15,c=this.j(b);this.m(b,W(a,c,this.b)+this.b)}function mc(a){var b=this.j(a&15)&262143,c=this.j(this.b);this.m(this.b,W(a,c,b)+b)}
function nc(a){var b=this.j(this.b),c,d=b;if(c=a&384)switch(d&=262143,c){case 256:d+=262143*N;break;case 384:d+=b>Va?262143*N:0}b=d;this.m(this.b,b);(a&=15)&&this.m(a,b)}function oc(a){var b=a&15,c=this.j(this.b)/N|0,d=this.j(b);this.m(b,W(a,d,c)+c)}function pc(a){var b=a&15,c=this.j(b);this.m(b,W(a,c,0))}function qc(a){var b=this.j(a&15)/N|0,c=this.j(this.b);this.m(this.b,W(a,c,b)+b)}function rc(a){var b=this.j(this.b),c=b/N|0,b=W(a,b,c)+c;this.m(this.b,b);(a&=15)&&this.m(a,b)}
function X(a){this.a(a)}function T(a){this.L("undefined opcode: "+ma(a));this.g=(this.g+-1)%M;P(this)}function W(a,b,c){switch(a&384){case 0:b-=b&262143;break;case 128:b=0;break;case 256:b=262143*N;break;case 384:b=c>Va?262143*N:0}return b}function V(a,b,c){switch(a&384){case 0:b&=262143;break;case 128:b=0;break;case 256:b=262143;break;case 384:b=c>Wa?262143:0}return b}
var bc=[U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,U,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,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.o(a&15,this.l(this.b))},function(a){this.o(a&15,this.b)},function(a){this.o(this.b,this.l(a&15))},function(a){(a&=15)&&this.o(a,this.l(this.b))},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)},T,function(a){a&=15;var b=this.l(a);this.o(a,this.l(this.b));this.o(this.b,b)},function(a){var b=!1;a&=15;for(var c=this.l(a),d=c/N|0,c=c&262143;!b;)this.o(c,this.l(d)),c==this.b&&(b=!0),d=d+1&262143,c=c+1&262143,this.c.A||(this.o(a,d*N+c),b||(this.g=(this.g+-1)%M),b=!0)},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)},T,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.m(a&15,this.j(this.b))},function(a){this.m(a&15,this.b)},function(a){this.m(this.b,this.j(a&15))},function(a){(a&=15)&&this.m(a,this.j(this.b))},function(a){var b=this.j(this.b),b=b/N|(b&262143)*N;this.m(a&15,b)},function(a){this.m(a&15,this.b*N)},function(a){a=this.j(a&15);a=a/N|(a&262143)*N;this.m(this.b,a)},function(a){var b=this.j(this.b),b=b/N|(b&262143)*N;this.m(this.b,b);(a&=15)&&this.m(a,
b)},function(a){this.m(a&15,ac(this.j(this.b)))},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)},T,function(a){a&=15;var b=this.j(a);this.m(a,this.j(this.b));this.m(this.b,b)},function(a){var b=!1;a&=15;for(var c=this.j(a),d=c/N|0,c=c&262143;!b;)this.m(c,this.j(d)),c==this.b&&(b=!0),d=d+1&262143,c=c+1&262143,this.c.A||(this.m(a,d*N+c),b||(this.g=(this.g+-1)%M),b=!0)},
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)},T,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)},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)},$b,ac,bc,cc,dc,ec,fc,gc,$b,ac,bc,cc,dc,ec,fc,gc,$b,ac,bc,cc,dc,ec,fc,gc,$b,ac,bc,cc,dc,ec,fc,gc,hc,ic,jc,kc,lc,mc,nc,oc,hc,ic,jc,kc,lc,mc,nc,oc,hc,ic,jc,kc,lc,mc,nc,oc,hc,ic,jc,kc,lc,mc,nc,oc,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)},cc,dc,ec,fc,gc,hc,ic,jc,cc,dc,ec,fc,gc,hc,ic,jc,cc,dc,ec,fc,gc,hc,ic,jc,cc,dc,ec,fc,gc,hc,ic,jc,kc,lc,mc,nc,oc,
pc,qc,rc,kc,lc,mc,nc,oc,pc,qc,rc,kc,lc,mc,nc,oc,pc,qc,rc,kc,lc,mc,nc,oc,pc,qc,rc,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 pc(a){B.call(this,"ROM",a);this.N=this.a=null;this.j=+a.addr;this.g=+a.size;this.b=a.alias;"string"==typeof this.b&&(this.b=eval(this.b));this.h=a.file;this.u=na(this.h);if(this.h){a=this.h;var b=oa(this.u);"json"!=b&&"hex"!=b&&(a=u()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;w(a,null,!0,function(a,b,f){f?(c.F("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(Ia(c.ma,a,b),(a=ua(a,b))?(c.a=a.H,c.N=a.N):c.h=null);qc(c)})}}n(pc,B);
pc.prototype.Z=function(a,b,c,d){this.m=b;this.f=c;this.v=d;qc(this)};pc.prototype.V=function(){this.N&&(this.v&&this.v.a(this.id,this.j,this.g,this.N),delete this.N);return!0};pc.prototype.P=function(){return!0};
function qc(a){if(!Ra(a)){if(a.h){if(!a.a||!a.m)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+t(a.a.length,8,!0)+") does not match specified size ("+t(a.g,8,!0)+")";a.c.error=!0;a.F(b)}else{b=a.j;if(wb(a.m,b,a.g,Eb)){var c;for(c=0;c<a.a.length;c++)sb(a.m,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.b?b.push(a.b):null!=a.b&&a.b.length&&(b=a.b);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.m,g=d.g,h=[],l=d.j>>>f.b;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.m;
d=d.g;g=0;for(e>>>=f.b;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}K(a)}}y(function(){for(var a=J(document,I,"rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new pc(d);H(d,c)}});
function Y(a){B.call(this,"RAM",a);this.N=this.Y=null;this.b=+a.addr;this.g=+a.size;this.T=a.load;this.S=a.exec;null!=this.T&&(this.T=+this.T);null!=this.S&&(this.S=+this.S);this.h=this.u=!1;this.a=a.file;this.j=na(this.a);if(this.a){a=this.a;var b=oa(this.j);"json"!=b&&"hex"!=b&&(a=u()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;w(a,null,!0,function(a,b,f){f?(c.F("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(Ia(c.ma,a,b),(a=ua(a,b))?(c.Y=a.Y,c.N=a.N,null==
c.T&&(c.T=a.T),null==c.S&&(c.S=a.S)):c.a=null);rc(c)})}}n(Y,B);Y.prototype.Z=function(a,b,c,d){this.m=b;this.f=c;this.v=d;rc(this)};Y.prototype.V=function(a,b){this.N&&(this.v&&this.v.a(this.id,this.b,this.g,this.N),delete this.N);b||this.reset();return!0};Y.prototype.P=function(){return!0};
function rc(a){if(a.m&&(!a.h&&a.g&&(wb(a.m,a.b,a.g,1)?a.h=!0:a.g=0),!Ra(a))){if(!a.h)x("No RAM allocated");else if(a.a){if(!a.Y)return;sc(a,a.Y,a.T,a.S,a.b)?a.status('Loaded image "'+a.j+'"'):a.F('Error loading image "'+a.j+'"')}a.u=!0;K(a)}}
Y.prototype.reset=function(){if(this.h&&!this.u){for(var a=this.m,b=this.b,c=this.g,d=b&16383,b=b>>>a.b;0<c&&b<a.a.length;){var e=a.a[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ja&&(g+=ia);g=Math.trunc(Math.abs(g))%ia;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.i(g,d,e.aa+d);c-=16384;b++;d=0}this.Y&&sc(this,this.Y,this.T,this.S,this.b,!this.v)}this.u=!1};
function sc(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g<b.length;g++)sb(a.m,c+g,b[g]);g=!0}g&&(null==d&&(P(a.f),f=!1),null!=d&&(a=a.f,a.La=d,a.g=d%M,f?a.c.B?a.c.A||nb(a):a.c.J=!0:a.v&&a.c.B?P(a)||a.s.c.reset||(a.v.g(),Q(a.s,-1)):!1===f&&P(a),!a.c.A&&a.ka&&a.ka.stop()));return g}y(function(){for(var a=J(document,I,"ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Y(d);H(d,c)}});
function tc(a){B.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.b=[];var b=a.binding;if("console"!=b){var c;a=uc;b&&(void 0===c&&(c="Panel"),(c=F(c,this.id))&&(b=c.i[b])&&this.U(null,a,b))}this.a=this.j=null;this.exports={connect:this.Qa,receiveData:this.ua,receiveStatus:this.nb,setConnection:this.qb}}n(tc,B);k=tc.prototype;
k.U=function(a,b,c){var d=this;switch(b){case uc:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Ja:q.Ua:46==c?b=q.Ja:a.ctrlKey&&c>=q.Ia&&c<=q.Ya&&(b=c-(q.Ia-q.Ra));b&&(a.preventDefault&&a.preventDefault(),d.ua(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.Ta&&(b=q.Sa);d.ua(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.ua(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.Z=function(a,b,c,d){this.s=a;this.m=b;this.f=c;this.v=d;K(this)};
k.Qa=function(a){if(!this.a){var b=S(this.s,"connection");if(b){var c=b.split("->");if(2==c.length){var d=sa(c[0]);if(d!=this.la)return;c=sa(c[1]);if(this.a=La(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.V=function(a,b){if(!b)if(this.Qa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
k.P=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.ua=function(a){if("number"==typeof a)this.b.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.b.push(b)}else this.b=this.b.concat(a);return!0};k.nb=function(){};k.qb=function(a,b){return this.a?!1:(this.a=a,this.j=b,!0)};var uc="buffer";
y(function(){for(var a=J(document,I,"serial"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new tc(d);H(d,c)}});
function vc(a,b,c){B.call(this,"Computer",a);this.c.B=!1;this.M=null;wc(this,b);this.I=S(this,"autoPower",a,6);this.h=0;this.W=+a.busWidth||+a.buswidth;this.D=this.u=this.G=null;this.C=this.R=!1;this.w=this.j=null;this.O=this.L=!1;this.X=S(this,"url")||"";(Math.random()+.1).toString(36);this.b=xc(this);if(this.f=F("CPU",this.id)){this.v=F("Debugger",this.id);this.m=new tb({id:this.ma+".bus",busWidth:this.W},this.f,this.v);var d,e=E(this.id);if((this.g=F("Panel",this.id))&&this.g.ba)for(b=0;b<e.length;b++)d=
e[b],d.F=this.g.F,d.K=this.g.K,d.ba=this.g.ba;this.K(L+" v1.34.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Z&&d.Z(this,this.m,this.f,this.v);b=null;d=S(this,"resume",a);void 0!==d&&(1<d.length?b=this.u=d:this.a=parseInt(d,10));var f;if(a=S(this,"state")||(f=!0,a.state))this.G=b=a,f||(this.C=!0,this.a=yc),this.a&&(this.w=new O(this,"1.34.2"),Z(this.w)?b=null:delete this.w);!b&&this.a&&
(b=zc(this))&&(this.C=!0);if(b){var g=this;w(b,null,!0,function(a,b,c){c?(g.u=null,g.C=!1,g.F("Unable to load machine state from server (error "+c+(b?": "+sa(b):"")+")")):(g.D=b,g.R=!0);K(g)})}else K(this);this.i.power||(this.I=!0);!c&&this.I&&Ac(this,this.ga)}else x("Unable to find CPU component")}n(vc,B);function wc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){x(d.message+" ("+c+")")}}a.M=b}
function S(a,b,c,d){var e=b.toLowerCase(),e=Aa(b)||Aa(e);void 0===e&&a.M&&(e=a.M[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function Ac(a,b,c){for(var d=E(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ra(f)){Ra(f,function(){Ac(a,b,c)});return}}b.call(a,c)}
function Bc(a,b){var c=new O(a,"1.34.2",Cc);if(Z(c)&&Dc(c)){var d=c.get(Ec),e=b?b.get(Ec):"unknown";d!=e&&(a.F("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=vc.prototype;
k.ga=function(a){void 0===a&&(a=this.a||(this.D?Fc:yc));if(!this.h){this.h++;var b=!1,c=!1;this.L=!1;var d=this.w||new O(this,"1.34.2");if(a==Gc)b=!0;else if(a>yc){if(Z(d,this.D)){this.j=new O(this,"1.34.2",Hc);Z(this.j)&&(Ic(this,d),a=Jc,Kc(this.j));this.j.set(Ec,ta());Lc(this.j);var e=this.a&&!this.C;if(a==Fc||Ka("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=Dc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
g?(this.F("Error: "+g),"unable to verify user"==g&&(ya(Mc,""),this.b=null)):this.K(f+": "+g),Kc(d),Z(d)?(c=Dc(d),e=!0):c=!1))}e&&Bc(this,c?d:null)}else a==Jc&&d.clear()}else Bc(this);delete this.D;delete this.w}e=E(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=Nc(this,g,d,b,c));b=[d,a,c];a!=Gc?Ac(this,this.Oa,b):this.Oa(b)}};
function Nc(a,b,c,d,e){if(!b.c.B){b.c.B=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.V(f,d)&&f&&(x("Unable to restore state for "+b.type),a.G&&!a.R?(c.clear(),a.a=yc,window&&window.location.reload()):a.L=!0,b.V(null),e=!1),!d&&b.Ma){var g=b.Ma.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){x("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
k.Oa=function(a){var b=a[0],c=0>a[1];a=a[2];this.O=!0;this.c.B=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(Nc(this,this.f,b,c,a),Q(this,-2),this.f.J());this.L&&(Ic(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0};
function Ic(a,b){if(Ka("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.X;a=a.b||"";b=b.toString();var d={};d.app=L;d.ver="1.34.2";d.url=c;d.user=a;d.type="bug";d.data=b;w("http://www.pcjs.org/api/v1/report",d,!0)}}
function Oc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.2"),g=new O(a,"1.34.2",Cc),h=ta();g.set(Ec,h);f.set(Ec,h);f.set(Pc,"1.34.2");f.set(Qc,window?window.location.href:null);f.set(Rc,window?window.navigator.userAgent:"");a.f&&a.f.P&&(c&&(b&&(a.f.c.J=a.f.c.A),P(a.f)),d=a.f.P(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.c.B=!1,!1===d&&(e=null)));for(var h=E(a.id),l=0;l<h.length;l++){var p=h[l];p.c.B&&(p.P&&(d=p.P(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.c.B=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.b&&Sc(a,a.b,f.toString()),Lc(g)&&Lc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Tc),d&&f.clear(h)):e=f.toString());c&&(a.c.B=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.c.reset=!0;this.m&&this.m.reset&&this.m.reset();this.f&&this.f.reset&&this.f.reset();for(var a=E(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.m&&c!==this.f&&c.reset&&c.reset()}this.c.reset=!1;Q(this,-1)};
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 sc(a){B.call(this,"ROM",a);this.N=this.a=null;this.l=+a.addr;this.g=+a.size;this.b=a.alias;"string"==typeof this.b&&(this.b=eval(this.b));this.h=a.file;this.u=na(this.h);if(this.h){a=this.h;var b=oa(this.u);"json"!=b&&"hex"!=b&&(a=u()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;v(a,null,!0,function(a,b,f){f?(c.F("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(Ia(c.ma,a,b),(a=ua(a,b))?(c.a=a.H,c.N=a.N):c.h=null);tc(c)})}}n(sc,B);
sc.prototype.Z=function(a,b,c,d){this.o=b;this.f=c;this.v=d;tc(this)};sc.prototype.V=function(){this.N&&(this.v&&this.v.a(this.id,this.l,this.g,this.N),delete this.N);return!0};sc.prototype.P=function(){return!0};
function tc(a){if(!Ra(a)){if(a.h){if(!a.a||!a.o)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+t(a.a.length,8,!0)+") does not match specified size ("+t(a.g,8,!0)+")";a.c.error=!0;a.F(b)}else{b=a.l;if(yb(a.o,b,a.g,Gb)){var c;for(c=0;c<a.a.length;c++)ub(a.o,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.b?b.push(a.b):null!=a.b&&a.b.length&&(b=a.b);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.o,g=d.g,h=[],l=d.l>>>f.b;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.o;
d=d.g;g=0;for(e>>>=f.b;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}K(a)}}y(function(){for(var a=J(document,I,"rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new sc(d);H(d,c)}});
function Y(a){B.call(this,"RAM",a);this.N=this.Y=null;this.b=+a.addr;this.g=+a.size;this.T=a.load;this.S=a.exec;null!=this.T&&(this.T=+this.T);null!=this.S&&(this.S=+this.S);this.h=this.u=!1;this.a=a.file;this.l=na(this.a);if(this.a){a=this.a;var b=oa(this.l);"json"!=b&&"hex"!=b&&(a=u()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;v(a,null,!0,function(a,b,f){f?(c.F("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(Ia(c.ma,a,b),(a=ua(a,b))?(c.Y=a.Y,c.N=a.N,null==
c.T&&(c.T=a.T),null==c.S&&(c.S=a.S)):c.a=null);uc(c)})}}n(Y,B);Y.prototype.Z=function(a,b,c,d){this.o=b;this.f=c;this.v=d;uc(this)};Y.prototype.V=function(a,b){this.N&&(this.v&&this.v.a(this.id,this.b,this.g,this.N),delete this.N);b||this.reset();return!0};Y.prototype.P=function(){return!0};
function uc(a){if(a.o&&(!a.h&&a.g&&(yb(a.o,a.b,a.g,1)?a.h=!0:a.g=0),!Ra(a))){if(!a.h)x("No RAM allocated");else if(a.a){if(!a.Y)return;vc(a,a.Y,a.T,a.S,a.b)?a.status('Loaded image "'+a.l+'"'):a.F('Error loading image "'+a.l+'"')}a.u=!0;K(a)}}
Y.prototype.reset=function(){if(this.h&&!this.u){for(var a=this.o,b=this.b,c=this.g,d=b&16383,b=b>>>a.b;0<c&&b<a.a.length;){var e=a.a[b],f=c,g=0,h,d=d||0,g=g||0;0>g&&g>=ja&&(g+=ia);g=Math.trunc(Math.abs(g))%ia;void 0===f&&(f=e.size);for(h=d;f--&&h<e.size;h++)e.i(g,d,e.aa+d);c-=16384;b++;d=0}this.Y&&vc(this,this.Y,this.T,this.S,this.b,!this.v)}this.u=!1};
function vc(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g<b.length;g++)ub(a.o,c+g,b[g]);g=!0}g&&(null==d&&(P(a.f),f=!1),null!=d&&(a=a.f,a.La=d,a.g=d%M,f?a.c.B?a.c.A||pb(a):a.c.J=!0:a.v&&a.c.B?P(a)||a.s.c.reset||(a.v.g(),Q(a.s,-1)):!1===f&&P(a),!a.c.A&&a.ka&&a.ka.stop()));return g}y(function(){for(var a=J(document,I,"ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Y(d);H(d,c)}});
function wc(a){B.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.b=[];var b=a.binding;if("console"!=b){var c;a=xc;b&&(void 0===c&&(c="Panel"),(c=F(c,this.id))&&(b=c.i[b])&&this.U(null,a,b))}this.a=this.l=null;this.exports={connect:this.Qa,receiveData:this.ua,receiveStatus:this.nb,setConnection:this.qb}}n(wc,B);k=wc.prototype;
k.U=function(a,b,c){var d=this;switch(b){case xc:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Ja:q.Ua:46==c?b=q.Ja:a.ctrlKey&&c>=q.Ia&&c<=q.Ya&&(b=c-(q.Ia-q.Ra));b&&(a.preventDefault&&a.preventDefault(),d.ua(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.Ta&&(b=q.Sa);d.ua(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.ua(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.Z=function(a,b,c,d){this.s=a;this.o=b;this.f=c;this.v=d;K(this)};
k.Qa=function(a){if(!this.a){var b=S(this.s,"connection");if(b){var c=b.split("->");if(2==c.length){var d=sa(c[0]);if(d!=this.la)return;c=sa(c[1]);if(this.a=La(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.l=e.receiveData){this.g=a;this.status("Connected "+this.ma+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.V=function(a,b){if(!b)if(this.Qa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
k.P=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.ua=function(a){if("number"==typeof a)this.b.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.b.push(b)}else this.b=this.b.concat(a);return!0};k.nb=function(){};k.qb=function(a,b){return this.a?!1:(this.a=a,this.l=b,!0)};var xc="buffer";
y(function(){for(var a=J(document,I,"serial"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new wc(d);H(d,c)}});
function yc(a,b,c){B.call(this,"Computer",a);this.c.B=!1;this.M=null;zc(this,b);this.I=S(this,"autoPower",a,6);this.h=0;this.W=+a.busWidth||+a.buswidth;this.D=this.u=this.G=null;this.C=this.R=!1;this.w=this.l=null;this.O=this.K=!1;this.X=S(this,"url")||"";(Math.random()+.1).toString(36);this.b=Ac(this);if(this.f=F("CPU",this.id)){this.v=F("Debugger",this.id);this.o=new vb({id:this.ma+".bus",busWidth:this.W},this.f,this.v);var d,e=E(this.id);if((this.g=F("Panel",this.id))&&this.g.ba)for(b=0;b<e.length;b++)d=
e[b],d.F=this.g.F,d.L=this.g.L,d.ba=this.g.ba;this.L(L+" v1.34.2\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Z&&d.Z(this,this.o,this.f,this.v);b=null;d=S(this,"resume",a);void 0!==d&&(1<d.length?b=this.u=d:this.a=parseInt(d,10));var f;if(a=S(this,"state")||(f=!0,a.state))this.G=b=a,f||(this.C=!0,this.a=Bc),this.a&&(this.w=new O(this,"1.34.2"),Z(this.w)?b=null:delete this.w);!b&&this.a&&
(b=Cc(this))&&(this.C=!0);if(b){var g=this;v(b,null,!0,function(a,b,c){c?(g.u=null,g.C=!1,g.F("Unable to load machine state from server (error "+c+(b?": "+sa(b):"")+")")):(g.D=b,g.R=!0);K(g)})}else K(this);this.i.power||(this.I=!0);!c&&this.I&&Dc(this,this.ga)}else x("Unable to find CPU component")}n(yc,B);function zc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){x(d.message+" ("+c+")")}}a.M=b}
function S(a,b,c,d){var e=b.toLowerCase(),e=Aa(b)||Aa(e);void 0===e&&a.M&&(e=a.M[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}function Dc(a,b,c){for(var d=E(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Ra(f)){Ra(f,function(){Dc(a,b,c)});return}}b.call(a,c)}
function Ec(a,b){var c=new O(a,"1.34.2",Fc);if(Z(c)&&Gc(c)){var d=c.get(Hc),e=b?b.get(Hc):"unknown";d!=e&&(a.F("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=yc.prototype;
k.ga=function(a){void 0===a&&(a=this.a||(this.D?Ic:Bc));if(!this.h){this.h++;var b=!1,c=!1;this.K=!1;var d=this.w||new O(this,"1.34.2");if(a==Jc)b=!0;else if(a>Bc){if(Z(d,this.D)){this.l=new O(this,"1.34.2",Kc);Z(this.l)&&(Lc(this,d),a=Mc,Nc(this.l));this.l.set(Hc,ta());Oc(this.l);var e=this.a&&!this.C;if(a==Ic||Ka("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=Gc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
g?(this.F("Error: "+g),"unable to verify user"==g&&(ya(Pc,""),this.b=null)):this.L(f+": "+g),Nc(d),Z(d)?(c=Gc(d),e=!0):c=!1))}e&&Ec(this,c?d:null)}else a==Mc&&d.clear()}else Ec(this);delete this.D;delete this.w}e=E(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=Qc(this,g,d,b,c));b=[d,a,c];a!=Jc?Dc(this,this.Oa,b):this.Oa(b)}};
function Qc(a,b,c,d,e){if(!b.c.B){b.c.B=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.V(f,d)&&f&&(x("Unable to restore state for "+b.type),a.G&&!a.R?(c.clear(),a.a=Bc,window&&window.location.reload()):a.K=!0,b.V(null),e=!1),!d&&b.Ma){var g=b.Ma.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){x("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
k.Oa=function(a){var b=a[0],c=0>a[1];a=a[2];this.O=!0;this.c.B=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(Qc(this,this.f,b,c,a),Q(this,-2),this.f.J());this.K&&(Lc(this,b),b.clear());!c&&this.l&&(this.l.clear(),delete this.l);this.h=0};
function Lc(a,b){if(Ka("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.X;a=a.b||"";b=b.toString();var d={};d.app=L;d.ver="1.34.2";d.url=c;d.user=a;d.type="bug";d.data=b;v("http://www.pcjs.org/api/v1/report",d,!0)}}
function Rc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.2"),g=new O(a,"1.34.2",Fc),h=ta();g.set(Hc,h);f.set(Hc,h);f.set(Sc,"1.34.2");f.set(Tc,window?window.location.href:null);f.set(Uc,window?window.navigator.userAgent:"");a.f&&a.f.P&&(c&&(b&&(a.f.c.J=a.f.c.A),P(a.f)),d=a.f.P(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.c.B=!1,!1===d&&(e=null)));for(var h=E(a.id),l=0;l<h.length;l++){var p=h[l];p.c.B&&(p.P&&(d=p.P(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.c.B=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.b&&Vc(a,a.b,f.toString()),Oc(g)&&Oc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Wc),d&&f.clear(h)):e=f.toString());c&&(a.c.B=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.c.reset=!0;this.o&&this.o.reset&&this.o.reset();this.f&&this.f.reset&&this.f.reset();for(var a=E(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.o&&c!==this.f&&c.reset&&c.reset()}this.c.reset=!1;Q(this,-1)};
k.start=function(a,b){for(var c=E(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}Q(this,-1)};k.stop=function(a,b){for(var c=E(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}Q(this,-1)};
function Q(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.xa+=d))&&(e.textContent=c.c.A?c.L.toFixed(2)+"Mhz":"Stopped",c.xa=0)}if(a.g&&(a=a.g,b=b||0,a.D)){c=a.f.c.A;d=!!(a.f.h&8);if(0>=b||60<=(a.C+=b)){e=a.f.g;if(a.i.PC){var f=a.v&&a.v.j||8,e=e||0,e=8==f?ma(e,void 0):t(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.C=0}-1>b?a.b=a.f.g:0<b&&c&&!d&&(a.b=a.f.ia);fb(a,a.b);$a(a,a.h)}}
k.U=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.c.B?Oc(d,!1,!0):Ac(d,d.ga))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.c.B&&!d.h)if(d.a&&!d.u){var a=Ka("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Oc(d,a,!0);!a&&d.G?window&&window.location.reload():d.ga(yc)}else d.reset(),d.f&&!d.v&&d.f.J()},!0;case "save":if(pa())c.parentNode.removeChild(c);else return this.i[b]=
c,c.onclick=function(){var a=xc(d,!0);if(a){var b=!!(d.a&&!d.u||d.G),c=Oc(d,b);b?Sc(d,a,c):d.F("Resume disabled, machine state not saved")}},!0}return!1};function xc(a,b){var c=a.b;c||((c=xa(Mc),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Uc(a,c))||a.F("The user ID is invalid.")):b&&a.F("Browser local storage is not available"));return c}
function Uc(a,b){a.b=null;b=w(u()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya(Mc,b.data),a.b=b.data)}catch(d){x(d.message+" ("+c+")")}return a.b}function zc(a){var b=null;a.b&&(b=u()+"/api/v1/user?req=load&user="+a.b+"&state="+Vc(a,"1.34.2"));return b}
function Sc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Vc(a,"1.34.2");d.data=c;b=w(u()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.F("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.F(c),ya(Mc,""),a.b=null)}}
var Hc="failsafe",Cc="validate",Ec="timestamp",Pc="version",Qc="url",Rc="browser",Mc="user",Gc=-1,yc=0,Fc=1,Jc=2,Tc=3;y(function(){for(var a=J(document,I+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=G(c),c=J(c,I,"computer"),e=0;e<c.length;e++){var f=c[e],g=G(f),g=new vc(g,d,!0);H(g,f);g.I&&Ac(g,g.ga)}});z.show.push(function(){for(var a=J(document,I,"computer"),b=0;b<a.length;b++){var c=G(a[b]);(c=F("Computer",c.id))&&c.O&&!c.c.B&&c.ga(Gc)}});
z.exit.push(function(){for(var a=J(document,I,"computer"),b=0;b<a.length;b++){var c=G(a[b]);(c=F("Computer",c.id))&&c.c.B&&Oc(c,!(!c.a||c.u),!0)}});function O(a,b,c){this.id=a.id;this.f="";this.a={};this.b=this.i=!1;this.key=Vc(a,b,c);Kc(this,a.Xa)}k=O.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};function Z(a,b){return b?(a.f=b,a.b=!0,a.i=!1,!0):a.b?!0:va()&&(b=xa(a.key))?(a.f=b,a.b=!0):!1}
function Dc(a){var b=!0;if(!a.i)try{a.a=JSON.parse(a.f),a.i=!0}catch(c){x(c.message||c),b=!1}return b}function Lc(a){var b=!0;if(va()){var c=JSON.stringify(a.a);ya(a.key,c)||(x("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.f};function Kc(a,b){a.f="";a.a={};a.b=a.i=!1;b&&a.set("parms",b)}
k.clear=function(a){Kc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Vc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Wc=0;
function Xc(a,b,c,d,e,f,g){f("Loading "+a+"...");w(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):Yc(l,a,b,c,d,e,f,g)})}
function Yc(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(Ia(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\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(v){g=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Zc(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Zc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");w(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 l=h[0],p,r=/( [a-z]+=)(['"])(.*?)\2/g;p=r.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],g);Zc(a,b,c)}})}else c(a,null)}
function $c(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&J(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=qa(a))}function g(a){f("Error: "+a);p&&(--Wc||A(!0));p=!1}var h,l,p=!0;Wc++;Ja[b]={};try{if(h=document.getElementById(b)){var r;if("object"==typeof resources&&(r=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],la=document.createElement("style");la.type="text/css";la.styleSheet?la.styleSheet.cssText=r:la.appendChild(document.createTextNode(r));v.appendChild(la)}d||
(r=a,"pdp"==a.substr(0,3)&&(r="pdpjs"),d="/versions/"+r+"/1.34.2/components.xsl");r=function(e,l){l?Xc(d,null,a,null,!1,f,function(a,e){e?(Ia(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Wc||A(!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),--Wc||
A(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Xc(c,b,a,e,!0,f,r):Yc(c,null,b,a,e,!1,f,r)}else g("missing machine element: "+b)}catch(ad){g(ad.message)}return p}window.embedPDP10=function(a,b,c,d){A(!1);return $c("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){A(!1);return $c("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return F(b,a+".machine")};
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Na[a]){for(var c=!0,d=Na,e=a,f=b.length,g=[],h=[],l="",p=null,r=0;r<f;r++){var v=b[r];if('"'==v||"'"==v)p&&v!=p?l+=v:(p?p=null:p=v,l&&(h.push(l),l=""));else{if(!p){if("\r"==v||"\n"==v)v=";";if(" "==v||"\t"==v||";"==v){l&&(h.push(l),l="");";"==v&&h.length&&(g.push(h),h=[]);continue}}l+=v}}l&&h.push(l);h.length&&g.push(h);d[e]=g;Ma(a)||(c=!1)}return c};window.enableEvents=A;window.sendEvent=Ga;})();//# sourceMappingURL=/tmp/pdpjs/1.34.2/pdp10.map
function Q(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.xa+=d))&&(e.textContent=c.c.A?c.M.toFixed(2)+"Mhz":"Stopped",c.xa=0)}if(a.g&&(a=a.g,b=b||0,a.D)){c=a.f.c.A;d=!!(a.f.h&8);if(0>=b||60<=(a.C+=b)){e=a.f.g;if(a.i.PC){var f=a.v&&a.v.l||8,e=e||0,e=8==f?ma(e,void 0):t(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.C=0}-1>b?a.b=a.f.g:0<b&&c&&!d&&(a.b=a.f.ia);hb(a,a.b);bb(a,a.h)}}
k.U=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.c.B?Rc(d,!1,!0):Dc(d,d.ga))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.c.B&&!d.h)if(d.a&&!d.u){var a=Ka("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Rc(d,a,!0);!a&&d.G?window&&window.location.reload():d.ga(Bc)}else d.reset(),d.f&&!d.v&&d.f.J()},!0;case "save":if(pa())c.parentNode.removeChild(c);else return this.i[b]=
c,c.onclick=function(){var a=Ac(d,!0);if(a){var b=!!(d.a&&!d.u||d.G),c=Rc(d,b);b?Vc(d,a,c):d.F("Resume disabled, machine state not saved")}},!0}return!1};function Ac(a,b){var c=a.b;c||((c=xa(Pc),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Xc(a,c))||a.F("The user ID is invalid.")):b&&a.F("Browser local storage is not available"));return c}
function Xc(a,b){a.b=null;b=v(u()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya(Pc,b.data),a.b=b.data)}catch(d){x(d.message+" ("+c+")")}return a.b}function Cc(a){var b=null;a.b&&(b=u()+"/api/v1/user?req=load&user="+a.b+"&state="+Yc(a,"1.34.2"));return b}
function Vc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Yc(a,"1.34.2");d.data=c;b=v(u()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.F("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.F(c),ya(Pc,""),a.b=null)}}
var Kc="failsafe",Fc="validate",Hc="timestamp",Sc="version",Tc="url",Uc="browser",Pc="user",Jc=-1,Bc=0,Ic=1,Mc=2,Wc=3;y(function(){for(var a=J(document,I+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=G(c),c=J(c,I,"computer"),e=0;e<c.length;e++){var f=c[e],g=G(f),g=new yc(g,d,!0);H(g,f);g.I&&Dc(g,g.ga)}});z.show.push(function(){for(var a=J(document,I,"computer"),b=0;b<a.length;b++){var c=G(a[b]);(c=F("Computer",c.id))&&c.O&&!c.c.B&&c.ga(Jc)}});
z.exit.push(function(){for(var a=J(document,I,"computer"),b=0;b<a.length;b++){var c=G(a[b]);(c=F("Computer",c.id))&&c.c.B&&Rc(c,!(!c.a||c.u),!0)}});function O(a,b,c){this.id=a.id;this.f="";this.a={};this.b=this.i=!1;this.key=Yc(a,b,c);Nc(this,a.Xa)}k=O.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};function Z(a,b){return b?(a.f=b,a.b=!0,a.i=!1,!0):a.b?!0:va()&&(b=xa(a.key))?(a.f=b,a.b=!0):!1}
function Gc(a){var b=!0;if(!a.i)try{a.a=JSON.parse(a.f),a.i=!0}catch(c){x(c.message||c),b=!1}return b}function Oc(a){var b=!0;if(va()){var c=JSON.stringify(a.a);ya(a.key,c)||(x("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.f};function Nc(a,b){a.f="";a.a={};a.b=a.i=!1;b&&a.set("parms",b)}
k.clear=function(a){Nc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}};function Yc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}var Zc=0;
function $c(a,b,c,d,e,f,g){f("Loading "+a+"...");v(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):ad(l,a,b,c,d,e,f,g)})}
function ad(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(Ia(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\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(w){g=null,a=w.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?bd(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
function bd(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");v(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 l=h[0],p,r=/( [a-z]+=)(['"])(.*?)\2/g;p=r.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],g);bd(a,b,c)}})}else c(a,null)}
function cd(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&J(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=qa(a))}function g(a){f("Error: "+a);p&&(--Zc||A(!0));p=!1}var h,l,p=!0;Zc++;Ja[b]={};try{if(h=document.getElementById(b)){var r;if("object"==typeof resources&&(r=resources.css)){var w=document.head||document.getElementsByTagName("head")[0],la=document.createElement("style");la.type="text/css";la.styleSheet?la.styleSheet.cssText=r:la.appendChild(document.createTextNode(r));w.appendChild(la)}d||
(r=a,"pdp"==a.substr(0,3)&&(r="pdpjs"),d="/versions/"+r+"/1.34.2/components.xsl");r=function(e,l){l?$c(d,null,a,null,!1,f,function(a,e){e?(Ia(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Zc||A(!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),--Zc||
A(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?$c(c,b,a,e,!0,f,r):ad(c,null,b,a,e,!1,f,r)}else g("missing machine element: "+b)}catch(dd){g(dd.message)}return p}window.embedPDP10=function(a,b,c,d){A(!1);return cd("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){A(!1);return cd("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return F(b,a+".machine")};
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Na[a]){for(var c=!0,d=Na,e=a,f=b.length,g=[],h=[],l="",p=null,r=0;r<f;r++){var w=b[r];if('"'==w||"'"==w)p&&w!=p?l+=w:(p?p=null:p=w,l&&(h.push(l),l=""));else{if(!p){if("\r"==w||"\n"==w)w=";";if(" "==w||"\t"==w||";"==w){l&&(h.push(l),l="");";"==w&&h.length&&(g.push(h),h=[]);continue}}l+=w}}l&&h.push(l);h.length&&g.push(h);d[e]=g;Ma(a)||(c=!1)}return c};window.enableEvents=A;window.sendEvent=Ga;})();//# sourceMappingURL=/tmp/pdpjs/1.34.2/pdp10.map