First cut at PDP-10 byte instructions

This commit is contained in:
Jeff 2017-03-02 23:10:24 -08:00 committed by Jeff Parsons
commit 25aa95cec8
7 changed files with 396 additions and 276 deletions

View file

@ -35,5 +35,13 @@
// 14=444444777777 15=777777777777 16=777777777777 17=000000000000
//
0o262240000005, // 000116: POP 5,5
//
// 00=111111444444 01=777777444444 02=777777444444 03=777777444444
// 04=444444777777 05=111110444443 06=777777777777 07=000000000000
// 10=000000000010 11=111111444444 12=444444111111 13=777777444444
// 14=444444777777 15=777777777777 16=777777777777 17=000000000000
//
0o515040170600, // 000117: HRLZI 1,170600
0o135100000001, // 000120: LDB 2,1
]
}

View file

@ -188,11 +188,27 @@ PDP10.opFSC = function(op, acc)
*/
PDP10.opIBP = function(op, acc)
{
this.opUndefined(op);
var w = this.readWord(this.regEA);
var p = (w / PDP10.OPCODE.P_SCALE) & PDP10.OPCODE.P_MASK;
var s = (w >> PDP10.OPCODE.S_SHIFT) & PDP10.OPCODE.S_MASK;
p -= s;
if (p < 0) {
p = 36 - s;
w++;
}
w = (p * PDP10.OPCODE.P_SCALE) + (s << PDP10.OPCODE.S_SHIFT) + (w & PDP10.OPCODE.PTR_MASK);
this.writeWord(this.regEA, w);
};
/**
* opILDB(0o134000)
* opILDB(0o134000): Increment Pointer and Load Byte
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
*
* Increment the byte pointer in location E as explained above. Then retrieve a byte of S bits from the
* location and position specified by the newly incremented pointer, load it into the right end of AC,
* and clear the remaining AC bits. The location containing the byte is unaffected, the original contents
* of AC are lost.
*
* @this {CPUStatePDP10}
* @param {number} op
@ -200,11 +216,30 @@ PDP10.opIBP = function(op, acc)
*/
PDP10.opILDB = function(op, acc)
{
this.opUndefined(op);
/*
* We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2
* is with regEA containing the address of the bits to be loaded.
*
* We can implement this as a simple combination of opIBP() and opLDB(), but taking care that we only call
* opIBP() on phase 1.
*/
if (this.regPS < 0) {
//noinspection JSUnresolvedFunction
PDP10.opIBP.call(this, op, acc);
}
//noinspection JSUnresolvedFunction
PDP10.opLDB.call(this, op, acc);
};
/**
* opLDB(0o135000)
* opLDB(0o135000): Load Byte
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
*
* Retrieve a byte of S bits from the location and position specified by the pointer contained in location E,
* load it into the right end of AC, and clear the remaining AC bits. The location containing the byte is unaffected,
* the original contents of AC are lost.
*
* @this {CPUStatePDP10}
* @param {number} op
@ -212,23 +247,67 @@ PDP10.opILDB = function(op, acc)
*/
PDP10.opLDB = function(op, acc)
{
this.opUndefined(op);
/*
* We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2
* is with regEA containing the address of the bits to be loaded.
*/
var w = this.readWord(this.regEA);
if (this.regPS < 0) {
this.regPS = w;
this.regRA = this.regEA | PDP10.OPCODE.I_BIT;
this.advancePC(-1);
return;
}
var p = (this.regPS / PDP10.OPCODE.P_SCALE) & PDP10.OPCODE.P_MASK;
var s = (this.regPS >> PDP10.OPCODE.S_SHIFT) & PDP10.OPCODE.S_MASK;
if (p + s <= 32) {
w = (w >> p) & ((1 << s) - 1);
} else {
w = Math.trunc(w / Math.pow(2, p)) % Math.pow(2, s);
}
this.writeWord(acc, w);
this.regPS = -1;
};
/**
* opIDPB(0o136000)
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
*
* Increment the byte pointer in location E as explained above. Then deposit the right S bits of AC into
* the location and position specified by the newly incremented pointer. The original contents of the bits
* that receive the byte are lost, AC and the remaining bits of the deposit location are unaffected.
*
* @this {CPUStatePDP10}
* @param {number} op
* @param {number} acc
*/
PDP10.opIDPB = function(op, acc)
{
this.opUndefined(op);
/*
* We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2
* is with regEA containing the address of the bits to be stored.
*
* We can implement this as a simple combination of opIBP() and opDDB(), but taking care that we only call
* opIBP() on phase 1.
*/
if (this.regPS < 0) {
//noinspection JSUnresolvedFunction
PDP10.opIBP.call(this, op, acc);
}
//noinspection JSUnresolvedFunction
PDP10.opDPB.call(this, op, acc);
};
/**
* opDPB(0o137000)
* opDPB(0o137000): Deposit Byte
*
* From the DEC PDP-10 System Reference Manual (May 1968), p. 2-16:
*
* Deposit the right S bits of AC into the location and position specified by the pointer contained
* in location E. The original contents of the bits that receive the byte are lost, AC and the remaining
* bits of the deposit location are unaffected.
*
* @this {CPUStatePDP10}
* @param {number} op
@ -236,7 +315,23 @@ PDP10.opIDPB = function(op, acc)
*/
PDP10.opDPB = function(op, acc)
{
this.opUndefined(op);
/*
* We're called in two phases: phase 1 is with regEA containing the address of the pointer, and phase 2
* is with regEA containing the address of the bits to be stored.
*/
var w = this.readWord(this.regEA);
if (this.regPS < 0) {
this.regPS = w;
this.regRA = this.regEA | PDP10.OPCODE.I_BIT;
this.advancePC(-1);
return;
}
var p = (this.regPS / PDP10.OPCODE.P_SCALE) & PDP10.OPCODE.P_MASK;
var s = (this.regPS >> PDP10.OPCODE.S_SHIFT) & PDP10.OPCODE.S_MASK;
var b = (this.readWord(acc) % Math.pow(2, s)) * Math.pow(2, p);
w = (w - (w % Math.pow(2, p + s))) + b + (w % Math.pow(2, p));
this.writeWord(this.regEA, w);
this.regPS = -1;
};
/**

View file

@ -178,6 +178,12 @@ class CPUStatePDP10 extends CPUPDP10 {
this.regPC = this.lastPC = this.addrReset;
this.fOverflow = this.fCarry0 = this.fCarry1 = this.fNoDivide = this.fPDOverflow = false;
/*
* This next two internal regs are used only with byte instructions, to record an active byte
* pointer state (regPS) and pointer address (regPA).
*/
this.regPS = this.regPA = -1;
/*
* This is queried and displayed by the Panel when it's not displaying its own ADDRESS register
* (which takes precedence when, for example, you've manually halted the CPU and are independently
@ -279,6 +285,8 @@ class CPUStatePDP10 extends CPUPDP10 {
state.set(0, [
this.regEA,
this.regRA,
this.regPS,
this.regPA,
this.regOP,
this.regPC,
this.lastPC,
@ -308,6 +316,8 @@ class CPUStatePDP10 extends CPUPDP10 {
[
this.regEA,
this.regRA,
this.regPS,
this.regPA,
this.regOP,
this.regPC,
this.lastPC,
@ -369,7 +379,7 @@ class CPUStatePDP10 extends CPUPDP10 {
if (this.regRA & PDP10.OPCODE.I_BIT) return -1;
this.regPC = (this.regPC + 1) % PDP10.ADDR_LIMIT;
return (this.regOP / PDP10.OPCODE.ACSHIFT)|0;
return (this.regOP / PDP10.OPCODE.A_SCALE)|0;
}
/**

View file

@ -1415,7 +1415,7 @@ class DebuggerPDP10 extends Debugger {
findInstruction(opCode, fOperands = true)
{
var opNum, opMask, aModes, iMode = 0;
var op = (opCode / PDP10.OPCODE.OPSHIFT)|0;
var op = (opCode / PDP10.OPCODE.OP_SCALE)|0;
for (var mask in DebuggerPDP10.OPTABLE) {
var opMasks = DebuggerPDP10.OPTABLE[mask];
@ -1423,7 +1423,7 @@ class DebuggerPDP10 extends Debugger {
if (opNum) {
opMask = +mask;
/*
* When we extracted op from opCode using OPSHIFT, we included 6 additional bits
* When we extracted op from opCode using OP_SCALE, we included 6 additional bits
* to help distinguish OPIO instructions from non-OPIO instructions. But for the
* following tests, we don't need those bits, so we get rid of them now.
*/
@ -1458,7 +1458,7 @@ class DebuggerPDP10 extends Debugger {
sOperation += this.toStrWord(opCode);
} else {
if (opMask == PDP10.OPCODE.OPIO) {
sOperation += this.toStrBase((opCode / PDP10.OPCODE.IOSHIFT) & PDP10.OPCODE.IOMASK, -1);
sOperation += this.toStrBase((opCode / PDP10.OPCODE.IO_SCALE) & PDP10.OPCODE.IO_MASK, -1);
} else {
sOperation += this.toStrBase((opCode >> PDP10.OPCODE.A_SHIFT) & PDP10.OPCODE.A_MASK, -1);
}
@ -1564,7 +1564,7 @@ class DebuggerPDP10 extends Debugger {
} else {
opMode = ((iMode & 0o3) << 1) | ((iMode & 0o14) << 2);
}
opCode = (op | (opMode << 6)) * PDP10.OPCODE.OPSHIFT;
opCode = (op | (opMode << 6)) * PDP10.OPCODE.OP_SCALE;
break;
}
}
@ -1601,12 +1601,12 @@ class DebuggerPDP10 extends Debugger {
}
if (!i && aOperands.length > 1) {
if (opMask == PDP10.OPCODE.OPIO) {
if (operand < 0 || operand > PDP10.OPCODE.IOMASK) {
if (operand < 0 || operand > PDP10.OPCODE.IO_MASK) {
this.println("device code out of range: " + match[2]);
opCode = -1;
break;
}
opCode += (operand * PDP10.OPCODE.IOSHIFT);
opCode += (operand * PDP10.OPCODE.IO_SCALE);
}
else {
if (operand < 0 || operand > PDP10.OPCODE.A_MASK) {

View file

@ -158,10 +158,14 @@ var PDP10 = {
OPTEST: 0o71100, // operation with test
OPIO: 0o70034, // input-output operation
OPUUO: 0o70000, // unimplemented user operation (UUO) mask
OPSHIFT: Math.pow(2, 21), // operation shift
IOSHIFT: Math.pow(2, 26), // input-output device code shift
IOMASK: 0o177, // input-output device code mask (after shift)
ACSHIFT: Math.pow(2, 23), // used to shift down the high 13 bits, with A starting at bit 0
OP_SCALE: Math.pow(2, 21), // operation scale
IO_SCALE: Math.pow(2, 26), // input-output device code scale
IO_MASK: 0o177, // input-output device code mask (after descale)
A_SCALE: Math.pow(2, 23), // used to shift down the high 13 bits, with A starting at bit 0
P_SCALE: Math.pow(2, 30), // P scale
P_MASK: 0o77, // P mask (after descale)
S_SHIFT: 24, // S shift
S_MASK: 0o77, // S mask (after shift)
A_SHIFT: 23, // A shift
A_MASK: 0o17, // A mask (after shift)
I_BIT: 0o20000000, // indirect bit
@ -169,6 +173,7 @@ var PDP10 = {
X_MASK: 0o17, // X mask (after shift)
Y_MASK: 0o777777, // Y mask
R_MASK: 0o37777777, // used to isolate the low 23 bits (I,X,Y)
PTR_MASK: 0o77777777, // used to isolate the low 24 bits (?,I,X,Y) of a byte pointer
HALT: 0o5304 // operation code for HALT
},

View file

@ -31,8 +31,8 @@ var l,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi
function fa(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ga(this)}});fa=function(){}}function ga(a){var b=0;return ha(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ha(a){fa();a={next:a};a[ba.Symbol.iterator]=function(){return this};return a}
function p(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}function ka(a,b){if(b){var c=ba;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&aa(c,a,{configurable:!0,writable:!0,value:b})}}
ka("Math.trunc",function(a){return a?a:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||!a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b}});ka("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
var la=Math.pow(2,36),ma=-Math.pow(2,35),q={bc:0,ub:1,dc:2,ec:3,fc:4,gc:5,hc:6,ic:7,bb:8,jc:9,vb:10,kc:11,lc:12,wb:13,mc:14,nc:15,oc:16,pc:17,qc:18,rc:19,sc:20,tc:21,uc:22,vc:23,wc:24,xc:25,yc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,ab:65,ac:66,cc:67,zc:68,E:69,Ac:70,Bc:71,Cc:72,Dc:73,Ec:74,Fc:75,Gc:76,Hc:77,Ic:78,Jc:79,Kc:80,Q:81,
Lc:82,Mc:83,Nc:84,Oc:85,Pc:86,Qc:87,Rc:88,Sc:89,yb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Tc:97,Uc:98,Vc:99,d:100,e:101,Wc:102,Xc:103,Yc:104,Zc:105,$c:106,k:107,ad:108,bd:109,n:110,cd:111,p:112,q:113,r:114,dd:115,t:116,fd:117,gd:118,hd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,xb:127};
var la=Math.pow(2,36),ma=-Math.pow(2,35),q={dc:0,vb:1,fc:2,gc:3,hc:4,ic:5,jc:6,kc:7,eb:8,lc:9,wb:10,mc:11,nc:12,xb:13,oc:14,pc:15,qc:16,rc:17,sc:18,tc:19,uc:20,vc:21,wc:22,xc:23,yc:24,zc:25,Ac:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,cb:65,cc:66,ec:67,Bc:68,E:69,Cc:70,Dc:71,Ec:72,Fc:73,Gc:74,Hc:75,Ic:76,Jc:77,Kc:78,Lc:79,Mc:80,Q:81,
Nc:82,Oc:83,Pc:84,Qc:85,Rc:86,Sc:87,Tc:88,Uc:89,zb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Vc:97,Wc:98,Xc:99,d:100,e:101,Yc:102,Zc:103,$c:104,ad:105,bd:106,k:107,cd:108,dd:109,n:110,ed:111,p:112,q:113,r:114,fd:115,t:116,hd:117,jd:118,kd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,yb:127};
function na(a,b){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 g,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(g=parseInt(a,b))&&(c=g)}return c}function oa(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 g=a%b,g=g+(0<=g&&9>=g?48:55),e=String.fromCharCode(g)+e;a=Math.trunc(a/b)}return(void 0===d?"":d)+e}function pa(a,b,c){b?12<b&&(b=12):b=a&-16777216?11:a&-65536?8:6;return oa(a,8,b,c?"0o":"")}function t(a,b,c){b?9<b&&(b=9):b=a&-65536?8:4;return oa(a,16,b,c?"0x":"")}
function qa(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 ra(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function xa(){var a=ya();return-1!==a.indexOf("pcjs.org",a.length-8)}function za(a){return a.replace(/[&<>"']/g,function(a){return Aa[a]})}function Ba(a,b){return(a+" ").slice(0,b)}
@ -40,189 +40,190 @@ function Ca(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
function Fa(a,b,c,d){c=void 0===c?!1:c;var e=0,g=null,f=null;if("object"==typeof resources&&(g=resources[a]))return d&&d(a,g,e),[g,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),f;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
g,e))});if(b&&"object"==typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(g=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,g,e),f=[g,e]);return f}
function Ga(a,b){var c,d={Y:null,T:null,na:null,ma:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,g,f;if("<"==b.substr(0,1))throw Error(b);f=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.na=f.load;d.ma=f.exec;if(e=f.bytes)d.Y=e;else if(e=f.words)for(d.Y=Array(2*e.length),g=c=0;c<e.length;c++)d.Y[g++]=e[c]&255,d.Y[g++]=e[c]>>8&255;else if(e=f.longs)for(d.Y=Array(4*e.length),g=c=0;c<e.length;c++)d.Y[g++]=
e[c]&255,d.Y[g++]=e[c]>>8&255,d.Y[g++]=e[c]>>16&255,d.Y[g++]=e[c]>>24&255;else(e=f.data)?d.Ba=e:d.Y=f;d.Y&&(d.Y.length?1==d.Y.length&&(u(d.Y[0]),d=null):(u("Empty resource: "+a),d=null));d.T=f.symbols}catch(h){u("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){g=parseInt(b[c],16);if(isNaN(g)){u("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(g&255)}c==b.length&&(d.Y=e)}return d}
e[c]&255,d.Y[g++]=e[c]>>8&255,d.Y[g++]=e[c]>>16&255,d.Y[g++]=e[c]>>24&255;else(e=f.data)?d.Ca=e:d.Y=f;d.Y&&(d.Y.length?1==d.Y.length&&(u(d.Y[0]),d=null):(u("Empty resource: "+a),d=null));d.T=f.symbols}catch(h){u("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){g=parseInt(b[c],16);if(isNaN(g)){u("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(g&255)}c==b.length&&(d.Y=e)}return d}
function ya(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Ha(){if(null==Qa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Qa=a}return Qa}function Ra(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function Sa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ta(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 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.gb=b.comment;this.Ab=b;this.exports={};this.I=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,Wa:!1,U:!1,error:!1};this.Ma=null;this.j.error=!1;this.X=c||0;this.A=this.i=this.G=this.F=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 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"),fb&&eb("show")):bb=a}function eb(a){$a[a]&&ab($a[a])}var Va=null,$a={init:[],show:[],exit:[]},db=!1,fb=!1,bb=!0,Qa=null;Ya("onload",function(){db=!0;ab($a.init)});Ya("onpageshow",function(){fb=!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.ib=b.comment;this.Cb=b;this.exports={};this.I=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,Xa:!1,U:!1,error:!1};this.Ma=null;this.j.error=!1;this.X=c||0;this.A=this.i=this.G=this.F=this.oa=null;w.push(this)}function hb(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 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.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.oa=this.I[b]=c,c.value="",this.g=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.g(a,this.Ka)}),!0;default:return!1}};l.log=function(){};l.g=function(){};
l.status=function(a){this.g(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.g(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.Wa=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.Fa}
function Gb(a,b){if(a.j.Wa)return a.j.Fa=!1,a.j.Wa=!1;if(a.j.error)return a.g(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.mb)}return!1}function Ib(a,b,c,d){a.A&&(!0===c||Hb(a,c|0))&&a.A.message(b,d)}
l.ga=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.oa=this.I[b]=c,c.value="",this.g=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.da=function(a){this.g(a,this.Ka)}),!0;default:return!1}};l.log=function(){};l.g=function(){};
l.status=function(a){this.g(this.Ka+": "+a)};l.da=function(a,b,c){c=c||this.type;b||u((c?c+": ":"")+a)};function Cb(a,b){a.j.error=!0;a.da(b)}function Db(a){return a.j.error?(a.g(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.Xa=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.Fa}
function Gb(a,b){if(a.j.Xa)return a.j.Fa=!1,a.j.Xa=!1;if(a.j.error)return a.g(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.ob)}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,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.f=this.J=this.u=this.v=0;this.N=this.O=-1;this.P=this.R=this.H=!1;this.S=Vb;this.B={};this.b={START:[1,1,!0,!1,this.Mb],STEP:[1,1,!1,!1,this.Nb],ENABLE:[1,1,!1,!1,this.Hb],CONT:[1,1,!0,!1,this.Fb],DEP:[0,0,!0,!1,this.Gb],EXAM:[1,1,!0,!1,this.Ib],LOAD:[1,1,!0,!1,this.Kb],TEST:[0,0,!0,!1,this.Jb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Lb,a];this.A=this.i=this.G=this.F=null;this.exports={hold:this.Db,toggle:this.Wb,reset:this.Sb,
set:this.Vb};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.F&&this.F.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.I[b]=c,this.M++,!0;default:return"led"==a||"rled"==a?(this.I[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.I[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.F=a;this.G=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.f,this.v,this.u]);return a.data()};
l.restore=function(a){if(a=a[0])bc(this,this.f=a[0]),Wb(this,this.v=a[1]),cc(this,a[2]);return!0};l.Sb=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.I[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.I[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.Db=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.Vb=function(a,b){if("SR"==a)return cc(this,na(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,lc(this,a,c[1]),!0):!1};l.Wb=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.Mb=function(a){a||this.i.j.K||(this.i.u=this.f%Kb,this.b[pc]&&this.b[pc][1]&&qc(this.i))};l.Nb=function(){};l.Hb=function(a){a||this.i.V()};
l.Fb=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.F&&I(this.F)}};l.Gb=function(a){a&&!this.i.j.K&&(this.P&&vc(this),a=Wb(this,this.v=this.u),this.S==Vb?wc(this.G,this.f,a):this.i.D(this.f,a))};
l.Ib=function(a){if(!a&&!this.i.j.K){var b;this.R&&vc(this);this.S==Vb?b=xc(this.G,this.f):b=this.i.C(this.f);Wb(this,this.v=b)}};l.Kb=function(a){a||this.i.j.K||bc(this,this.u)};l.Jb=function(a){a?(this.H=!0,Zb(this,!0)):(this.H=!1,Zb(this),cc(this,0))};l.Lb=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function vc(a){var b=1,c=a.G.u;a.b[mc]&&a.b[mc][1]||(b=-b);bc(a,a.f&~c|a.f+b&c)}
function bc(a,b){a.f=b&a.G.u;if(a.N!==a.f){a.N=a.f;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.H||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.H||kc(d,e,g)}}return a.J}function cc(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.H=1<<this.J;this.u=this.H-1;this.f=Math.log2(16384);this.B=this.H/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.f;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.f];a.v++;b=c.G(b&16383,b);a.v--;return b}function wc(a,b,c){var d=a.b[(b&a.u)>>>a.f];a.v++;d.F(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.Ya||e.Bb){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.Cb=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.G=b;this.F=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.I=e==Kc;this.b=null;this.C=this.G=this.$a;this.D=this.F=this.Ia;this.i=this.f=0;Ac(this);this.Ya=this.Bb=!1;if(this.size){a=this.A=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.A};
l.restore=function(a){return a&&this.size==a.length?(this.A=a,this.Ya=!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.C=b[0]||a.$a);if(c||void 0===c)a.G=b[0]||a.$a}function Pc(a,b,c){c&&a.f||(a.D=!a.I&&b[1]||a.Ia);if(c||void 0===c)a.F=b[1]||a.Ia}l.Ca=function(a,b){b?this.f++||Pc(this,Qc,!1):this.i++||Oc(this,Qc,!1)};function Rc(a,b){b?--a.f||(a.D=a.I?a.Ia:a.F):--a.i||(a.C=a.G)}
function Ac(a,b,c){a.b=b;a.i=a.f=0;c&&((a.i=c.i)&&Oc(a,Qc,!1),(a.f=c.f)&&Pc(a,Qc,!1))}l.$a=function(a,b){this.b&&Hb(this.b,32)&&Ib(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.u.Cb(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.Qb=function(a){return this.A[a]};l.Zb=function(a,b){this.A[b]!=a&&(this.A[b]=a,this.Ya=!0)};
l.Ob=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.G(a,b)};l.Yb=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.I?this.Ia(a,0,c):this.F(a,b,c)};var Jc=0,Kc=2,Fc=["NONE","RAM","ROM"],Ic=0,Nc=[],Mc=[zc.prototype.Qb,zc.prototype.Zb],Qc=[zc.prototype.Ob,zc.prototype.Yb];
function Tc(a,b){v.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.Da=0;this.Ua=b;this.W=c;this.Sa=Math.round(this.Ua/1E4)/100;this.S=this.Sa*this.W;this.Ta=this.ua=this.aa=this.za=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.jb=this.Tb.bind(this);this.P=this.J=this.N=this.O=this.H=this.ra=this.M=this.ja=this.Va=this.R=0;this.xa=
null;D(this)}p(Tc,v);l=Tc.prototype;l.va=function(a,b,c,d){this.F=a;this.G=b;this.A=d;this.xa=a.u;for(a=0;a<Uc.length;a++)(b=this.I[Uc[a]])&&this.F.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.F,"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.I.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.g("Type ? for help with PDPjs Debugger commands"),Yc(a),b||Zc(a),a.ua&&(b=a.ua,a.ua=null,$c(a,b))):this.status("No debugger detected");this.j.Z||this.g("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.qb=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.qb()|0;a.ha-=b;0>=a.ha&&(a.ha+=a.da,c=!0);0<=a.ia&&a.ia<=ad(a)&&(a.da=a.ia=-1,Xc(a),a.V(),c=!0);c&&a.g(ad(a)+" cycles: checksum="+t(a.sa))}}
l.ga=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.F)if(a=d.F,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.I[b]=
c,!0;case "setSpeed":return this.I[b]=c,c.onclick=function(){bd(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.Sa);a.Ta=Math.round(1E3/xd);a.ua=Math.floor(a.Ua/xd*c);b||(a.aa=a.ua);a.za=0}function ad(a){return a.P+a.J+a.N-a.O}function Wc(a){a.R=0;a.Va=0;a.P=a.J=a.N=a.O=0;Xc(a);bd(a,1)}
function bd(a,b,c){var d=!1;if(void 0!==b){.8>a.R/a.S?b=1:d=!0;a.W=b;b=a.Sa*a.W;if(a.S!=b){a.S=b;b=a.S.toFixed(2)+"Mhz";var e=a.I.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.F&&yd(a.F)}tc(a,a.J);a.J=0;a.H=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.Tb=function(){if(this.j.K){this.za>=this.Ua&&wd(this,!0);this.ja=0;this.ra=rb();if(this.M){var a=this.ra-this.M;a>this.Ta&&(this.H+=a,this.H>this.ra&&(this.H=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.Va>=Cd&&(this.F&&I(this.F,void 0),this.Va=0);break}}while(this.j.K)}catch(e){this.V();this.F&&this.F.stop(rb(),ad(this));Cb(this,
e.stack||e.message);return}if(this.j.K){a=setTimeout;b=this.jb;this.M=rb();var c=this.Ta;this.ja&&(c=Math.round(c*this.ja/this.ua));var c=c-(this.M-this.ra),d=this.M-this.H;d&&(this.R=Math.round(this.J/(10*d))/100,864E5<=d&&(this.P=0,bd(this)));if(0>c||this.R<this.S)-1E3>c&&(this.H-=c),c=0;this.za+=this.ja;this.M+=c;a(b,c)}}};
function qc(a,b){if(!Db(a))if(a.j.K)a.g(a.toString()+" busy");else{bd(a);a.j.K=!0;a.j.Pa=!0;var c=a.I.run;c&&(c.textContent="Halt");a.F&&(b&&yd(a.F,!0),a.F.start(a.H,ad(a)));a.A||a.status("Started");setTimeout(a.jb,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.I.run)b.textContent="Run";this.F&&this.F.stop(rb(),ad(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.ib=b;this.fb=+a.addrReset||0;this.tb=Ed.bind(this);this.b=L.bind(this);this.ka=null;this.eb=[];this.j.complete=!1}p(Dd,Tc);l=Dd.prototype;l.reset=function(){this.status("Model "+this.ib);this.j.K&&this.V();this.f=this.B=this.Aa=0;this.u=this.qa=this.fb;this.Qa=this.hb=this.ya=this.zb=this.Ra=!1;this.la=this.u;this.v=0;this.C=this.Pb;this.D=this.$b;this.ka=null;Wc(this);this.j.error=!1;Tc.prototype.reset.call(this)};l.qb=function(){return 0};
l.save=function(){var a=new H(this);a.set(0,[this.f,this.B,this.Aa,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.f=b.next().value;this.B=b.next().value;this.Aa=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];bd(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.eb.length;d++){var e=this.eb[d];if(e.Xb===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}l.abs=function(a){a>Ob&&(a!=Pb?a=Qb-a:this.Qa=this.ya=!0);return a};function Hd(a,b){b?b==Pb?a.Qa=a.ya=!0:b=Qb-b:a.hb=a.ya=!0;return b}function Fd(a){var b=[];for(a=a.ka;a;)b.push(a.Xb),a=a.next;return b}l.Pb=function(a){var b=this.G;a=this.la=a;return b.b[(a&b.u)>>>b.f].C(a&16383,a)};l.$b=function(a,b){var c=this.G;a=this.la=a;c.b[(a&c.u)>>>c.f].D(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.C(this.f):this.Aa=this.C(this.qa=this.u);this.B&=8388607;this.f=this.B&262143;if(a=
this.B>>18&15)this.f=this.f+this.C(a)&Lb;this.B&4194304?a=-1:(this.u=(this.u+1)%Kb,a=this.Aa/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,a&15)}function M(a){this.b(a)}function Ld(a,b){var c=this.C(this.f),d=this.C(b);this.D(b,Md(a,d,c)+(c-(c&262143)))}
function Nd(a,b){var c=this.C(b);this.D(b,Md(a,c,0))}function Od(a,b){b=this.C(b);var c=this.C(this.f);this.D(this.f,Md(a,c,b)+(b-(b&262143)))}function Pd(a,b){var c=this.C(this.f),d=c;if(a&=384)switch(d-=d&262143,a){case 256:d+=262143;break;case 384:d+=c>Ob?262143:0}c=d;this.D(this.f,c);b&&this.D(b,c)}function Qd(a,b){var c=(this.C(this.f)&262143)*F,d=this.C(b);this.D(b,Md(a,d,c)+c)}function Rd(a,b){var c=this.f*F,d=this.C(b);this.D(b,Md(a,d,c)+c)}
function Sd(a,b){b=(this.C(b)&262143)*F;var c=this.C(this.f);this.D(this.f,Md(a,c,b)+b)}function Td(a,b){var c=this.C(this.f),d=(c&262143)*F,c=Md(a,c,d)+d;this.D(this.f,c);b&&this.D(b,c)}function Ud(a,b){var c=this.C(this.f)&262143,d=this.C(b);this.D(b,Vd(a,d,c)+c)}function Wd(a,b){var c=this.C(b);this.D(b,Vd(a,c,this.f)+this.f)}function Xd(a,b){b=this.C(b)&262143;var c=this.C(this.f);this.D(this.f,Vd(a,c,b)+b)}
function Yd(a,b){var c=this.C(this.f),d=c;if(a&=384)switch(d&=262143,a){case 256:d+=262143*F;break;case 384:d+=c>Nb?262143*F:0}c=d;this.D(this.f,c);b&&this.D(b,c)}function Zd(a,b){var c=this.C(this.f)/F|0,d=this.C(b);this.D(b,Vd(a,d,c)+c)}function $d(a,b){var c=this.C(b);this.D(b,Vd(a,c,0))}function ae(a,b){b=this.C(b)/F|0;var c=this.C(this.f);this.D(this.f,Vd(a,c,b)+b)}function be(a,b){var c=this.C(this.f),d=c/F|0,c=Vd(a,c,d)+d;this.D(this.f,c);b&&this.D(b,c)}function O(a){this.b(a)}
function L(a){this.g("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)},
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),Ub=Math.pow(2,30),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 Vb(a,b){v.call(this,"Panel",a,512);this.L=this.M=0;this.W=b;this.f=this.J=this.u=this.v=0;this.N=this.O=-1;this.P=this.R=this.H=!1;this.S=Wb;this.B={};this.b={START:[1,1,!0,!1,this.Ob],STEP:[1,1,!1,!1,this.Pb],ENABLE:[1,1,!1,!1,this.Jb],CONT:[1,1,!0,!1,this.Hb],DEP:[0,0,!0,!1,this.Ib],EXAM:[1,1,!0,!1,this.Kb],LOAD:[1,1,!0,!1,this.Mb],TEST:[0,0,!0,!1,this.Lb]};for(a=0;22>a;a++)this.b["S"+a]=[0,0,!1,!1,this.Nb,a];this.A=this.i=this.G=this.F=null;this.exports={hold:this.Fb,toggle:this.Yb,reset:this.Ub,
set:this.Xb};D(this)}p(Vb,v);l=Vb.prototype;l.reset=function(a){this.stop();a&&Xb(this,this.v=0)};
l.ga=function(a,b,c,d){if(this.F&&this.F.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.I[b]=c,this.M++,!0;default:return"led"==a||"rled"==a?(this.I[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.I[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Yb(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){Zb(a,b)}}(this,b),a.ontouchstart=
function(a,b){return function(c){Yb(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){Zb(a,b)}}(this,b),!0):v.prototype.ga.call(this,a,b,c,d)}};l.wa=function(a,b,c,d){this.F=a;this.G=b;this.i=c;this.A=d;$b(this);ac(this)};l.pa=function(a,b){if(!b)if(this.W&&bc(),!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.f,this.v,this.u]);return a.data()};
l.restore=function(a){if(a=a[0])cc(this,this.f=a[0]),Xb(this,this.v=a[1]),dc(this,a[2]);return!0};l.Ub=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}ac(this);return!0};function ec(a,b,c){if(a=a.I[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function $b(a,b){for(var c in a.B)ec(a,c,null!=b?b:a.B[c])}function mc(a,b,c){if(a=a.I[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function ac(a){for(var b in a.b)mc(a,b,a.b[b][1])}
l.Fb=function(a,b,c){if(Yb(this,b)){if(c){var d=this;setTimeout(function(){Zb(d,b);a&&a()},+c);return!1}Zb(this,b)}return!0};l.Xb=function(a,b){if("SR"==a)return dc(this,na(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,mc(this,a,c[1]),!0):!1};l.Yb=function(a){return Yb(this,a)?(Zb(this,a),!0):!1};function Yb(a,b){var c=a.b[b];return c?(mc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=nc&&(a.P=b==oc,a.R=b==pc),!0):!1}
function Zb(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(mc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}l.Ob=function(a){a||this.i.j.K||(this.i.u=this.f%Kb,this.b[qc]&&this.b[qc][1]&&rc(this.i))};l.Pb=function(){};l.Jb=function(a){a||this.i.V()};
l.Hb=function(a){if(!a&&!this.i.j.K)if(this.b[qc]&&this.b[qc][1])rc(this.i);else{if((a=this.A)&&!Fb(a,!0))Gb(a,!0),sc(a,0,null),Gb(a,!1);else try{var b=this.i.Ja(1);0<b&&(tc(this.i,b),uc(this.i,b,!0),vc(this.i,b))}catch(c){"number"!=typeof c&&Cb(this.i,c.stack||c.message)}this.stop();this.F&&I(this.F)}};l.Ib=function(a){a&&!this.i.j.K&&(this.P&&wc(this),a=Xb(this,this.v=this.u),this.S==Wb?xc(this.G,this.f,a):this.i.D(this.f,a))};
l.Kb=function(a){if(!a&&!this.i.j.K){var b;this.R&&wc(this);this.S==Wb?b=yc(this.G,this.f):b=this.i.C(this.f);Xb(this,this.v=b)}};l.Mb=function(a){a||this.i.j.K||cc(this,this.u)};l.Lb=function(a){a?(this.H=!0,$b(this,!0)):(this.H=!1,$b(this),dc(this,0))};l.Nb=function(a,b){this.u=a?this.u|1<<b:this.u&~(1<<b)};function wc(a){var b=1,c=a.G.u;a.b[nc]&&a.b[nc][1]||(b=-b);cc(a,a.f&~c|a.f+b&c)}
function cc(a,b){a.f=b&a.G.u;if(a.N!==a.f){a.N=a.f;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.H||ec(d,e,g)}}}function Xb(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.H||ec(d,e,g)}}return a.J}function dc(a,b){a.u=b|0;for(b=0;22>b;b++)a.b["S"+b][1]=a.u&1<<b?1:0;ac(a);return!0}l.stop=function(){cc(this,this.i.u)};
function bc(){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 Vb(d,!0));wb(e,c)}}var Wb=7,oc="DEP",qc="ENABLE",pc="EXAM",nc="STEP";Za(bc);function zc(a,b,c){v.call(this,"Bus",a,16);this.i=b;this.A=c;this.J=+a.busWidth||18;this.H=1<<this.J;this.u=this.H-1;this.f=Math.log2(16384);this.B=this.H/16384|0;this.v=0;this.b=[];a=new Ac(this);Bc(a,this.A);this.b=Array(this.B);for(b=0;b<this.B;b++)this.b[b]=a;D(this)}p(zc,v);l=zc.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,Cc(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 Dc(a,b,c,d){for(var e=b,g=c,f=e>>>a.f;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 Ec(Fc,e,g)}e=new Ac(a,e,m,16384,d);Bc(e,a.A,h);a.b[f++]=e;e=k+16384;g-=m}return 0>=g?(a.status("Added "+(c>>10)+"Kb "+Gc[d]+" at "+pa(b)),!0):Ec(Hc,b,c)}
function yc(a,b){var c=a.b[(b&a.u)>>>a.f];a.v++;b=c.G(b&16383,b);a.v--;return b}function xc(a,b,c){var d=a.b[(b&a.u)>>>a.f];a.v++;d.F(c,b&16383,b);a.v--}function Cc(a){for(var b=0,c=[],d=0;d<a.B;d++){var e=a.b[d];if(e.Za||e.Db){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.Eb=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 Ec(a,b,c){u("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Fc=1,Hc=2;function Ic(a){v.call(this,"Device",a,256)}p(Ic,v);l=Ic.prototype;l.wa=function(a,b,c,d){this.G=b;this.F=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 Ic(c),wb(c,d)}}});function Ac(a,b,c,d,e){this.u=a;this.id=Jc+=2;this.w=b;this.Ha=c;this.size=d||0;this.type=e||Kc;this.I=e==Lc;this.b=null;this.C=this.G=this.ab;this.D=this.F=this.Ia;this.i=this.f=0;Bc(this);this.Za=this.Db=!1;if(this.size){a=this.A=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Mc(this,Nc)}else Mc(this)}l=Ac.prototype;l.save=function(){return this.A};
l.restore=function(a){return a&&this.size==a.length?(this.A=a,this.Za=!0):!1};function Mc(a,b){b||(b=Oc);Pc(a,b,void 0);Qc(a,b,void 0)}function Pc(a,b,c){c&&a.i||(a.C=b[0]||a.ab);if(c||void 0===c)a.G=b[0]||a.ab}function Qc(a,b,c){c&&a.f||(a.D=!a.I&&b[1]||a.Ia);if(c||void 0===c)a.F=b[1]||a.Ia}l.Da=function(a,b){b?this.f++||Qc(this,Rc,!1):this.i++||Pc(this,Rc,!1)};function Sc(a,b){b?--a.f||(a.D=a.I?a.Ia:a.F):--a.i||(a.C=a.G)}
function Bc(a,b,c){a.b=b;a.i=a.f=0;c&&((a.i=c.i)&&Pc(a,Rc,!1),(a.f=c.f)&&Qc(a,Rc,!1))}l.ab=function(a,b){this.b&&Hb(this.b,32)&&Ib(this.b,"attempt to read invalid address "+K(this.b,b),!0);this.u.Eb(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.Sb=function(a){return this.A[a]};l.ac=function(a,b){this.A[b]!=a&&(this.A[b]=a,this.Za=!0)};
l.Qb=function(a,b){if(this.b&&null!=this.w){var c=this.b;Tc(c,this.w+a,2,c.M)&&c.V(!1)}return this.G(a,b)};l.$b=function(a,b,c){if(this.b&&null!=this.w){var d=this.b;Tc(d,this.w+b,2,d.J)&&d.V(!1)}this.I?this.Ia(a,0,c):this.F(a,b,c)};var Kc=0,Lc=2,Gc=["NONE","RAM","ROM"],Jc=0,Oc=[],Nc=[Ac.prototype.Sb,Ac.prototype.ac],Rc=[Ac.prototype.Qb,Ac.prototype.$b];
function Uc(a,b){v.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.Qa=0;this.Va=b;this.aa=c;this.Ta=Math.round(this.Va/1E4)/100;this.W=this.Ta*this.aa;this.Ua=this.va=this.ba=this.Aa=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.ta=this.ia=0;this.ua=+a.csStart;this.ha=+a.csInterval;this.ja=+a.csStop;this.M=[];this.lb=this.Vb.bind(this);this.R=this.L=this.O=this.P=this.J=this.sa=this.N=this.ka=this.Wa=this.S=0;
this.ya=null;D(this)}p(Uc,v);l=Uc.prototype;l.wa=function(a,b,c,d){this.F=a;this.G=b;this.A=d;this.ya=a.u;for(a=0;a<Vc.length;a++)(b=this.I[Vc[a]])&&this.F.ga(null,Vc[a],b);D(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
l.pa=function(a,b){var c=Wc(this.F,"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.I.run);if(!b){if(a){Xc(this);if(!this.restore(a))return!1;Yc(this)}else this.reset();this.A?(a=this.A,b=this.j.Z,a.ya=!0,a.g("Type ? for help with PDPjs Debugger commands"),Zc(a),b||$c(a),a.ua&&(b=a.ua,a.ua=null,ad(a,b))):this.status("No debugger detected");this.j.Z||this.g("CPU will not be auto-started "+(this.ya?"(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?(rc(this),!0):!1};l.sb=function(){return 0};function Yc(a){void 0===a.ua&&(a.ua=0);void 0===a.ha&&(a.ha=-1);void 0===a.ja&&(a.ja=-1);a.j.Ea=0<=a.ua&&0<a.ha;a.j.Ea&&(a.ta=0,a.ia=a.ua-a.R)}function vc(a,b){if(a.j.Ea){var c=!1;a.ta=a.ta+a.sb()|0;a.ia-=b;0>=a.ia&&(a.ia+=a.ha,c=!0);0<=a.ja&&a.ja<=bd(a)&&(a.ha=a.ja=-1,Yc(a),a.V(),c=!0);c&&a.g(bd(a)+" cycles: checksum="+t(a.ta))}}
l.ga=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.F)if(a=d.F,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():rc(d))},!0;case "speed":return this.I[b]=
c,!0;case "setSpeed":return this.I[b]=c,c.onclick=function(){cd(d,d.aa<<1,!0)},c.textContent=this.W.toFixed(2)+"Mhz",!0}return!1};function uc(a,b,c){a.R+=b;c&&(a.O=a.P=0)}function dd(a,b){var c=1;b&&1<a.aa&&a.S&&(c=a.S/a.Ta);a.Ua=Math.round(1E3/yd);a.va=Math.floor(a.Va/yd*c);b||(a.ba=a.va);a.Aa=0}function bd(a){return a.R+a.L+a.O-a.P}function Xc(a){a.S=0;a.Wa=0;a.R=a.L=a.O=a.P=0;Yc(a);cd(a,1)}
function cd(a,b,c){var d=!1;if(void 0!==b){.8>a.S/a.W?b=1:d=!0;a.aa=b;b=a.Ta*a.aa;if(a.W!=b){a.W=b;b=a.W.toFixed(2)+"Mhz";var e=a.I.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.F&&zd(a.F)}uc(a,a.L);a.L=0;a.J=rb();a.N=0;dd(a);return d}function Ad(a,b){for(var c=a.M.length-1;0<=c;c--){var d=a.M[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function Bd(a){for(var b=[],c=0;c<a.M.length;c++)b.push(a.M[c][0]);return b}
function tc(a,b){for(var c=a.M.length-1;0<=c;c--){var d=a.M[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Cd(a,b){var c=a.O-=a.P;a.P=0;b&&(a.O=0);return c}
l.Vb=function(){if(this.j.K){this.Aa>=this.Va&&dd(this,!0);this.ka=0;this.sa=rb();if(this.N){var a=this.sa-this.N;a>this.Ua&&(this.J+=a,this.J>this.sa&&(this.J=this.sa))}try{do{var b=Ad(this,this.j.Ea?1:this.va);try{this.Ja(b)}catch(e){if("number"!=typeof e)throw e;}b=Cd(this,!0);this.ka+=b;this.L+=b;vc(this,b);tc(this,b);this.ba-=b;if(0>=this.ba){this.ba+=this.va;++this.Wa>=Dd&&(this.F&&I(this.F,void 0),this.Wa=0);break}}while(this.j.K)}catch(e){this.V();this.F&&this.F.stop(rb(),bd(this));Cb(this,
e.stack||e.message);return}if(this.j.K){a=setTimeout;b=this.lb;this.N=rb();var c=this.Ua;this.ka&&(c=Math.round(c*this.ka/this.va));var c=c-(this.N-this.sa),d=this.N-this.J;d&&(this.S=Math.round(this.L/(10*d))/100,864E5<=d&&(this.R=0,cd(this)));if(0>c||this.S<this.W)-1E3>c&&(this.J-=c),c=0;this.Aa+=this.ka;this.N+=c;a(b,c)}}};
function rc(a,b){if(!Db(a))if(a.j.K)a.g(a.toString()+" busy");else{cd(a);a.j.K=!0;a.j.Pa=!0;var c=a.I.run;c&&(c.textContent="Halt");a.F&&(b&&zd(a.F,!0),a.F.start(a.J,bd(a)));a.A||a.status("Started");setTimeout(a.lb,0)}}l.Ja=function(){return 0};l.V=function(a){var b=!1;if(this.j.K){Cd(this);uc(this,this.L);this.L=0;this.j.K=!1;if(b=this.I.run)b.textContent="Run";this.F&&this.F.stop(rb(),bd(this));b=!0;this.A||this.status("Stopped")}this.j.complete=a;return b};var yd=30,Dd=15,Vc=["power","reset"];
function Ed(a){var b=+a.model||1001;Uc.call(this,a,1E6);this.kb=b;this.hb=+a.addrReset||0;this.Bb=Fd.bind(this);this.b=L.bind(this);this.la=null;this.gb=[];this.j.complete=!1}p(Ed,Uc);l=Ed.prototype;l.reset=function(){this.status("Model "+this.kb);this.j.K&&this.V();this.f=this.H=this.Ba=0;this.u=this.ra=this.hb;this.Ra=this.jb=this.za=this.Ab=this.Sa=!1;this.B=this.bb=-1;this.qa=this.u;this.v=0;this.C=this.Rb;this.D=this.bc;this.la=null;Xc(this);this.j.error=!1;Uc.prototype.reset.call(this)};
l.sb=function(){return 0};l.save=function(){var a=new H(this);a.set(0,[this.f,this.H,this.B,this.bb,this.Ba,this.u,this.ra,this.qa,this.v]);a.set(1,[]);a.set(2,[this.R,this.aa,this.j.Z]);a.set(3,Gd(this));a.set(4,Bd(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.f=b.next().value;this.H=b.next().value;this.B=b.next().value;this.bb=b.next().value;this.Ba=b.next().value;this.u=b.next().value;this.ra=b.next().value;this.qa=b.next().value;this.v=b.next().value;b=a[2];this.R=b[0];cd(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.gb.length;d++){var e=this.gb[d];if(e.Zb===b[c]){d=e;break a}}d=null}d&&(d.next=this.la,this.la=d)}a=
a[4];for(b=0;b<this.M.length&&b<a.length;b++)this.M[b][0]=a[b];return!0};function Hd(a,b){var c=a.u;a.u=(c+b)%Kb;return c}l.abs=function(a){a>Ob&&(a!=Pb?a=Qb-a:this.Ra=this.za=!0);return a};function Id(a,b){b?b==Pb?a.Ra=a.za=!0:b=Qb-b:a.jb=a.za=!0;return b}function Gd(a){var b=[];for(a=a.la;a;)b.push(a.Zb),a=a.next;return b}l.Rb=function(a){var b=this.G;a=this.qa=a;return b.b[(a&b.u)>>>b.f].C(a&16383,a)};l.bc=function(a,b){var c=this.G;a=this.qa=a;c.b[(a&c.u)>>>c.f].D(b,a&16383,a)};
l.Ja=function(a){this.j.complete=!0;var b=this.A?Jd(this.A)?1:this.j.Pa?-1:0:0,c=a?this.j.Pa?0:1:-1;this.j.Pa=!1;this.O=this.P=a;this.v=this.v&-5|(b?4:0);do{if(this.v){if(this.v&4){if(Kd(this.A,this.u,c)){this.V();break}++b||(this.v&=-5);c||c++}if(a=this.v&11)this.v&2?this.la||(this.v&=-3):this.v&1&&this.v++,a=!1;if(a){if(this.v&4&&Kd(this.A,this.u,c)){this.V();break}if(0>c)break}}this.v&=15;this.H=this.H&4194304?this.C(this.f):this.Ba=this.C(this.ra=this.u);this.H&=8388607;this.f=this.H&262143;if(a=
this.H>>18&15)this.f=this.f+this.C(a)&Lb;this.H&4194304?a=-1:(this.u=(this.u+1)%Kb,a=this.Ba/Tb|0);0<=a&&this.Bb(a)}while(0<this.P);return this.j.complete?this.O-this.P:!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 Ed(d);wb(d,c)}});function Fd(a){Ld[a>>4].call(this,a,a&15)}function M(a){this.b(a)}function Md(){var a=this.C(this.f),b=a/Ub&63,c=a>>24&63,b=b-c;0>b&&(b=36-c,a++);a=b*Ub+(c<<24)+(a&16777215);this.D(this.f,a)}
function Nd(a,b){a=this.C(this.f);if(0>this.B)this.B=a,this.H=this.f|4194304,Hd(this,-1);else{var c=this.B/Ub&63,d=this.B>>24&63;a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.D(b,a);this.B=-1}}function Od(a,b){a=this.C(this.f);if(0>this.B)this.B=a,this.H=this.f|4194304,Hd(this,-1);else{var c=this.B/Ub&63,d=this.B>>24&63;b=this.C(b)%Math.pow(2,d)*Math.pow(2,c);a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.D(this.f,a);this.B=-1}}
function Pd(a,b){var c=this.C(this.f),d=this.C(b);this.D(b,Qd(a,d,c)+(c-(c&262143)))}function Rd(a,b){var c=this.C(b);this.D(b,Qd(a,c,0))}function Sd(a,b){b=this.C(b);var c=this.C(this.f);this.D(this.f,Qd(a,c,b)+(b-(b&262143)))}function Td(a,b){var c=this.C(this.f),d=c;if(a&=384)switch(d-=d&262143,a){case 256:d+=262143;break;case 384:d+=c>Ob?262143:0}c=d;this.D(this.f,c);b&&this.D(b,c)}function Ud(a,b){var c=(this.C(this.f)&262143)*F,d=this.C(b);this.D(b,Qd(a,d,c)+c)}
function Vd(a,b){var c=this.f*F,d=this.C(b);this.D(b,Qd(a,d,c)+c)}function Wd(a,b){b=(this.C(b)&262143)*F;var c=this.C(this.f);this.D(this.f,Qd(a,c,b)+b)}function Xd(a,b){var c=this.C(this.f),d=(c&262143)*F,c=Qd(a,c,d)+d;this.D(this.f,c);b&&this.D(b,c)}function Yd(a,b){var c=this.C(this.f)&262143,d=this.C(b);this.D(b,Zd(a,d,c)+c)}function $d(a,b){var c=this.C(b);this.D(b,Zd(a,c,this.f)+this.f)}function ae(a,b){b=this.C(b)&262143;var c=this.C(this.f);this.D(this.f,Zd(a,c,b)+b)}
function be(a,b){var c=this.C(this.f),d=c;if(a&=384)switch(d&=262143,a){case 256:d+=262143*F;break;case 384:d+=c>Nb?262143*F:0}c=d;this.D(this.f,c);b&&this.D(b,c)}function ce(a,b){var c=this.C(this.f)/F|0,d=this.C(b);this.D(b,Zd(a,d,c)+c)}function de(a,b){var c=this.C(b);this.D(b,Zd(a,c,0))}function ee(a,b){b=this.C(b)/F|0;var c=this.C(this.f);this.D(this.f,Zd(a,c,b)+b)}function fe(a,b){var c=this.C(this.f),d=c/F|0,c=Zd(a,c,d)+d;this.D(this.f,c);b&&this.D(b,c)}function O(a){this.b(a)}
function L(a){this.g("undefined opcode: "+pa(a));Hd(this,-1);this.V()}function Zd(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 Qd(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 Ld=[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)},Md,function(a,b){0>this.B&&Md.call(this);Nd.call(this,0,b)},Nd,function(a,b){0>this.B&&Md.call(this);Od.call(this,0,b)},Od,function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a,b){this.D(b,this.C(this.f))},function(a,b){this.D(b,this.f)},function(a,b){this.D(this.f,this.C(b))},function(a,b){b&&this.D(b,this.C(this.f))},function(a,b){a=this.C(this.f);a=a/F|(a&262143)*F;this.D(b,a)},function(a,b){this.D(b,this.f*F)},function(a,b){a=this.C(b);a=a/F|(a&262143)*F;this.D(this.f,a)},function(a,b){a=this.C(this.f);a=a/F|(a&262143)*F;this.D(this.f,a);b&&this.D(b,a)},function(a,
b){this.D(b,Hd(this,this.C(this.f)))},function(a,b){this.D(b,this.f?Qb-this.f:0)},function(a,b){this.D(this.f,Hd(this,this.C(b)))},function(a,b){a=Hd(this,this.C(this.f));this.D(this.f,a);b&&this.D(b,a)},function(a,b){this.D(b,this.abs(this.C(this.f)))},function(a,b){this.D(b,this.f)},function(a,b){this.D(this.f,this.abs(this.C(b)))},function(a,b){a=this.abs(this.C(this.f));this.D(this.f,a);b&&this.D(b,a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
b){this.D(b,Id(this,this.C(this.f)))},function(a,b){this.D(b,this.f?Qb-this.f:0)},function(a,b){this.D(this.f,Id(this,this.C(b)))},function(a,b){a=Id(this,this.C(this.f));this.D(this.f,a);b&&this.D(b,a)},function(a,b){this.D(b,this.abs(this.C(this.f)))},function(a,b){this.D(b,this.f)},function(a,b){this.D(this.f,this.abs(this.C(b)))},function(a,b){a=this.abs(this.C(this.f));this.D(this.f,a);b&&this.D(b,a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(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,b){a=this.C(b);this.D(b,this.C(this.f));this.D(this.f,
a)},function(a,b){a=!1;for(var c=this.C(b),d=c/F|0,c=c&262143;!a;)this.D(c,this.C(d)),c==this.f&&(a=!0),d=d+1&262143,c=c+1&262143,this.j.K||(this.D(b,d*F+c),a||Gd(this,-1),a=!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,b){a=this.C(b);a+=262145;this.D(a&262143,this.C(this.f));a>=Mb&&(a-=Mb);a/F|0||(this.Ra=!0);this.D(b,a)},function(a,b){a=this.C(b);var c=this.C(a&262143);this.D(this.f,c);
this.f==b&&(a=c);a-=262145;0>a&&(a+=Mb);262143==(a/F|0)&&(this.Ra=!0);this.D(b,a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
a)},function(a,b){a=!1;for(var c=this.C(b),d=c/F|0,c=c&262143;!a;)this.D(c,this.C(d)),c==this.f&&(a=!0),d=d+1&262143,c=c+1&262143,this.j.K||(this.D(b,d*F+c),a||Hd(this,-1),a=!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,b){a=this.C(b);a+=262145;this.D(a&262143,this.C(this.f));a>=Mb&&(a-=Mb);a/F|0||(this.Sa=!0);this.D(b,a)},function(a,b){a=this.C(b);var c=this.C(a&262143);this.D(this.f,c);
this.f==b&&(a=c);a-=262145;0>a&&(a+=Mb);262143==(a/F|0)&&(this.Sa=!0);this.D(b,a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(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)},Pd,Rd,Sd,Td,Ud,Vd,Wd,Xd,Pd,Rd,Sd,Td,Ud,Vd,Wd,Xd,Pd,Rd,Sd,Td,Ud,Vd,Wd,Xd,Pd,Rd,Sd,Td,Ud,Vd,Wd,Xd,Yd,$d,ae,be,ce,de,ee,fe,Yd,$d,ae,be,ce,de,ee,fe,Yd,$d,ae,be,ce,de,ee,fe,Yd,$d,ae,be,ce,de,ee,fe,function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},
function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(a){this.b(a)},function(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 ce(a){v.call(this,"ROM",a,128);this.T=this.b=null;this.B=+a.addr;this.u=+a.size;this.f=a.alias;"string"==typeof this.f&&(this.f=eval(this.f));this.v=a.file;this.H=qa(this.v);if(this.v){a=this.v;var b=ra(this.H);"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.G=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.G)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.G,b,a.u,Kc)){var c;for(c=0;c<a.b.length;c++)wc(a.G,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var d=a,e=b[c],g=d.G,f=d.u,h=[],k=d.B>>>g.f;0<f&&k<g.b.length;)h.push(g.b[k++]),f-=16384;g=d.G;d=d.u;f=0;for(e>>>=
g.f;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.Ba=null;this.f=+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.H=!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.Ba=a.Ba,
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.G=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.f,this.u,this.T),delete this.T);b||this.reset();return!0};fe.prototype.fa=function(){return!0};
function ge(a){if(a.G&&(!a.v&&a.u&&(Cc(a.G,a.f,a.u,1)?a.v=!0:a.u=0),!Eb(a))){if(!a.v)u("No RAM allocated");else if(a.b){if(!a.Ba)return;he(a,a.Ba,a.na,a.ma,a.f)?a.status('Loaded image "'+a.B+'"'):a.ca('Error loading image "'+a.B+'"')}a.H=!0;D(a)}}
fe.prototype.reset=function(){if(this.v&&!this.H){for(var a=this.G,b=this.f,c=this.u,d=b&16383,b=b>>>a.f;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.F(f,d,e.w+d);c-=16384;b++;d=0}this.Ba&&he(this,this.Ba,this.na,this.ma,this.f,!this.A)}this.H=!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.G,c+f,b[f]);f=!0}f&&(null==d&&(a.i.V(),g=!1),null!=d&&(a=a.i,a.fb=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.F.j.reset||(Yc(a.A),I(a.F,-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.f=[];var b=a.binding;if("console"!=b){var c;a=je;b&&(void 0===c&&(c="Panel"),(c=vb(c,this.id))&&(b=c.I[b])&&this.ga(null,a,b))}this.b=this.B=null;this.exports={connect:this.sb,receiveData:this.Na,receiveStatus:this.Rb,setConnection:this.Ub}}p(ie,v);l=ie.prototype;
l.ga=function(a,b,c){var d=this;switch(b){case je: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.bb:q.xb:46==c?b=q.bb:a.ctrlKey&&c>=q.ab&&c<=q.yb&&(b=c-(q.ab-q.ub));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.wb&&(b=q.vb);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.F=a;this.G=b;this.i=c;this.A=d;D(this)};
l.sb=function(a){if(!this.b){var b=Vc(this.F,"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.sb(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.f.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.f.push(b)}else this.f=this.f.concat(a);return!0};l.Rb=function(){};l.Ub=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.rb=function(){return-1};ke.prototype.Za=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;
function ge(a){v.call(this,"ROM",a,128);this.T=this.b=null;this.B=+a.addr;this.u=+a.size;this.f=a.alias;"string"==typeof this.f&&(this.f=eval(this.f));this.v=a.file;this.H=qa(this.v);if(this.v){a=this.v;var b=ra(this.H);"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.da("Unable to load ROM resource (error "+g+": "+a+")"),c.v=null):(hb(c.La,a,b),(a=Ga(a,b))?(c.b=a.Y,c.T=a.T):c.v=null);he(c)})}}p(ge,v);
ge.prototype.wa=function(a,b,c,d){this.G=b;this.i=c;this.A=d;he(this)};ge.prototype.pa=function(){this.T&&(this.A&&ie(this.A,this.id,this.B,this.u,this.T),delete this.T);return!0};ge.prototype.fa=function(){return!0};
function he(a){if(!Eb(a)){if(a.v){if(!a.b||!a.G)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(Dc(a.G,b,a.u,Lc)){var c;for(c=0;c<a.b.length;c++)xc(a.G,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var d=a,e=b[c],g=d.G,f=d.u,h=[],k=d.B>>>g.f;0<f&&k<g.b.length;)h.push(g.b[k++]),f-=16384;g=d.G;d=d.u;f=0;for(e>>>=
g.f;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 ge(d);wb(d,c)}});
function je(a){v.call(this,"RAM",a);this.T=this.Ca=null;this.f=+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.H=!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.da("Unable to load RAM resource (error "+g+": "+a+")"),c.b=null):(hb(c.La,a,b),(a=Ga(a,b))?(c.Ca=a.Ca,
c.T=a.T,null==c.na&&(c.na=a.na),null==c.ma&&(c.ma=a.ma)):c.b=null);ke(c)})}}p(je,v);je.prototype.wa=function(a,b,c,d){this.G=b;this.i=c;this.A=d;ke(this)};je.prototype.pa=function(a,b){this.T&&(this.A&&ie(this.A,this.id,this.f,this.u,this.T),delete this.T);b||this.reset();return!0};je.prototype.fa=function(){return!0};
function ke(a){if(a.G&&(!a.v&&a.u&&(Dc(a.G,a.f,a.u,1)?a.v=!0:a.u=0),!Eb(a))){if(!a.v)u("No RAM allocated");else if(a.b){if(!a.Ca)return;le(a,a.Ca,a.na,a.ma,a.f)?a.status('Loaded image "'+a.B+'"'):a.da('Error loading image "'+a.B+'"')}a.H=!0;D(a)}}
je.prototype.reset=function(){if(this.v&&!this.H){for(var a=this.G,b=this.f,c=this.u,d=b&16383,b=b>>>a.f;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.F(f,d,e.w+d);c-=16384;b++;d=0}this.Ca&&le(this,this.Ca,this.na,this.ma,this.f,!this.A)}this.H=!1};
function le(a,b,c,d,e,g){var f=!1;null==c&&(c=e);if(null!=c){for(f=0;f<b.length;f++)xc(a.G,c+f,b[f]);f=!0}f&&(null==d&&(a.i.V(),g=!1),null!=d&&(a=a.i,a.hb=d,a.u=d%Kb,g?a.j.U?a.j.K||rc(a):a.j.Z=!0:a.A&&a.j.U?a.V()||a.F.j.reset||(Zc(a.A),I(a.F,-1)):!1===g&&a.V(),!a.j.K&&a.ya&&a.ya.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 je(d);wb(d,c)}});
function me(a){v.call(this,"SerialPort",a,1048576);this.v=a.upperCase;"string"==typeof this.v&&(this.v="true"==this.v);this.u=!0;this.f=[];var b=a.binding;if("console"!=b){var c;a=ne;b&&(void 0===c&&(c="Panel"),(c=vb(c,this.id))&&(b=c.I[b])&&this.ga(null,a,b))}this.b=this.B=null;this.exports={connect:this.ub,receiveData:this.Na,receiveStatus:this.Tb,setConnection:this.Wb}}p(me,v);l=me.prototype;
l.ga=function(a,b,c){var d=this;switch(b){case ne: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.eb:q.yb:46==c?b=q.eb:a.ctrlKey&&c>=q.cb&&c<=q.zb&&(b=c-(q.cb-q.vb));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.xb&&(b=q.wb);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.wa=function(a,b,c,d){this.F=a;this.G=b;this.i=c;this.A=d;D(this)};
l.ub=function(a){if(!this.b){var b=Wc(this.F,"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.ub(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.f.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.f.push(b)}else this.f=this.f.concat(a);return!0};l.Tb=function(){};l.Wb=function(a,b){return this.b?!1:(this.b=a,this.B=b,!0)};var ne="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 me(d);wb(d,c)}});function oe(a){v.call(this,"Debugger",a);this.ca=+a.base||16;this.la=!1;this.B=0;this.P=!1;this.v=-1;this.u=[];this.W={}}p(oe,v);oe.prototype.tb=function(){return-1};oe.prototype.$a=function(){};
function pe(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 qe(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=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.g("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.rb(b),0<=e?e=a.Za(e):(e=a.W[b],null==e&&(e=na(b,a.ba))),null!=e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("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.g((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.H=[];this.b=this.M=this.J=[];te(this);this.R=this.ka=0;this.f=[];this.sa=void 0;ue(this);this.A=this;this.qa={};this.X=this.mb=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.Aa=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 $c(b,a)}):void 0===global[B]&&(global[B]=function(a){return $c(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,pb:void 0===b?!1:b,ea:!1,ba:c}}function we(a,b,c,d){a.w=b;a.pb=c||!1;a.ea=!1;a.ba=d}function xe(a){return[a.w,a.pb,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.kb=le(a,c.Oa=b[4]));return c}l=se.prototype;
l.va=function(a,b,c,d){this.G=b;this.F=a;this.i=c;this.ha=a.u;(a=Vc(a,"messages"))&&ve(this,a);ze(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=S(T(d,c,d.ja));if(-1===a){d.g("invalid address: "+c);break a}e=a>>>d.G.f;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.g("..."):(c=n.type,m=Fc[c],n&&d.g(t(n.id,8)+" %"+t(e<<d.G.f,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.I[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",$c(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.I[b]=c,Xa(c,function(){if(d.aa){var a=d.aa.value;
d.aa.value="";$c(d,a,!0);return!0}return!1}),!0;case "step":return this.I[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.G,d),b&&null!=a.w&&(a.w+=b||1));return c};l.cb=function(a,b,c){var d=S(a);-1!==d&&(wc(this.G,d,b),c&&null!=a.w&&(a.w+=c||1),I(this.F,-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.H.length;k++){var m=a.H[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.kb=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.mb=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.g(c+" messages enabled"))}}function ze(a,b){for(var c in G)if(16==G[c]){a.qa[c]=b;break}}l.rb=function(a){return Ce.indexOf(a.toUpperCase())};
l.Za=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.f;break;case Ge:b=this.i.hb?1:0;break;case He:b=this.i.ya?1:0;break;case Ie:b=this.i.Qa?1:0;break;case Je:b=this.i.zb?1:0;break;case Ke:b=this.i.Ra?1:0}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.g(a);this.i&&(a=this.i,Bd(a),a.aa=0,a.F&&I(a.F,void 0))}};
function ue(a){var b;if(!Id(a))a.f&&a.f.length&&a.g("instruction history buffer freed"),a.R=0,a.f=[];else if(!a.f||!a.f.length){a.f=Array(Le);for(b=0;b<a.f.length;b++)a.f[b]=Q();a.R=0;a.g("instruction history buffer allocated")}}function Me(a,b,c){if(!Ne(a,c))return!1;qc(a.i,b);return!0}
function rc(a,b,c,d){if(!Ne(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.F,-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.g(vf+c),we(a.L,a.i.u),b&&1!=a.N?xf(a):yf(a))}
function Ne(a,b){var c;(c=!a.i||!Eb(a.i))||(c=a.i,c.j.U?c=!0:(c.g(c.toString()+" not powered"),c=!1),c=!c);return c||a.i.j.K?(b||a.g("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.g(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;zf(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.H);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.H=a[4]);return!0};l.start=function(a,b){this.N||this.g("running");this.j.K=!0;this.za=a;this.Aa=b};
l.stop=function(a,b){if(this.j.K){this.j.K=!1;this.B=b-this.Aa;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.g(b)}Yc(this,!0);Zc(this);zf(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.C(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.f.length&&(a.ia++,0>d&&(d=a.i.C(b)),0<=d&&(we(a.f[a.R],b),++a.R==a.f.length&&(a.R=0)));return!1}
function Af(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 Bf)if(f=Bf[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=Cf;m=n&3;break;case 32256:k=Df;m=n&7;break;case 29248:k=Ef,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&f>Ff&&(k="B");k=Gf[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="+ad(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.G;Rc(d.b[c>>>d.f],!1)}a.M=["br"];if(a.J)for(b=1;b<a.J.length;b++)c=a.J[b],c=S(c),d=a.G,Rc(d.b[c>>>d.f],!0);a.J=["bw"];a.ra=0;a.ka=0}
l.Ca=function(a,b,c){var d=!0;c||Hf(this,a,b,!1,!0);if(a!=this.b){var e=S(b);if(-1===e)this.g("invalid address: "+K(this,b.w)),d=!1;else{var g=this.G;g.b[e>>>g.f].Ca(e&16383,a==this.J)}}d&&(a.push(b),c?b.ea=!0:(If(this,a,a.length-1,"set"),ue(this)));return d};function Hf(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||If(a,b,f,"cleared");b.splice(f,1);b!=a.b&&(d=a.G,Rc(d.b[c>>>d.f],b==a.J));h.ea||ue(a);break}}return g}
function Jf(a,b){for(var c=1;c<b.length;c++)If(a,b,c);return b.length-1}function If(a,b,c,d){c=b[c];a.g(b[0]+" "+K(a,c.w)+(d?" "+d:c.Oa?' "'+c.Oa+'"':""))}function zf(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(!Hf(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&&(Hf(a,d,h,!0),e=!0);if(n=h.kb){for(var g=!1,r=0;r<n.length;r++)if(!Kf(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||If(a,d,f,"hit");break}}}a.ra--;return g}
function Lf(a,b){b=void 0===b?!0: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}if(b){b="";for(d=0;d<Ce.length;d++)(e=Ce[d]||"")&&(e+="="+K(a,a.Za(d),d>=Ge?1:d==Ee?23:18)+" "),b+=e;c+="\n"+b}return c}l.nb=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.nb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({ed:b,w:c,Eb:d,T:e,lb:g})}function Mf(a,b,c){var d=[],e=S(b)>>>0;for(b=0;b<a.H.length;b++){var g=a.H[b],f=g.w>>>0,h=g.Eb;if(e>=f&&e<f+h){e=Da(g.lb,[e-f],a.nb);0<=e?Nf(a,b,e,d):c&&(e=~e,Nf(a,b,e-1,d),Nf(a,b,e,d));break}}return d}
function Nf(a,b,c,d){var e={},g=a.H[b].lb,f=0,h=null;0<=c&&c<g.length&&(f=g[c][0],h=g[c][1]);h&&(e=a.H[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 Of(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return re(a)||a.g("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.g("invalid assignment:"+b);return!1}
function Pf(a,b,c){var d=null;if(b=T(a,b)){var e=Mf(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.g(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.g(g),d||(d=g))}else c&&a.g("no symbols")}return d}
function xf(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trm\tdump misc registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.i,e=void 0;null==c&&(c=!0);if(b&&1<b.length){var g=b[1];if("m"==g)e=!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.g("missing value for "+b[1]);return}f=P(a,b);if(void 0===f)return;switch(g.toUpperCase()){case "PC":d.u=f%Kb;we(a.L,d.u);break;default:a.g("unknown register: "+
g);return}I(a.F);a.g("updated registers:")}}a.g(Lf(a,e));c&&(we(a.L,d.u),yf(a,K(a,a.L.w)))}}function Qf(a,b){b=Ca(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.g(c[2]):qe(a,null,c[2].charCodeAt(0)):P(a,b,!0)}
function Rf(a,b,c){if("?"==c)a.g("trace commands:"),a.g("\tt [#]\ttrace # instructions"),a.g("\ttr [#]\ttrace # instructions with register updates"),a.g("\ttc [#]\ttrace # cycles"),a.g("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.F,-1);Gb(a,!1)})}}
function yf(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.g("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=Mf(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.g(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.g(Af(a,b,f,g));e-=b.w-k;c++}}}
function Kf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(vf+b):(a.P&&(a.g("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.g("begin assemble at "+K(a,r.w)),a.P=!0,I(a.F);else{f.shift();f.shift();f.shift();var U,Oe=f.join(""),y=-1,dc,sg=z.toUpperCase(),cd;for(cd in Bf){var Ia;dc=+cd;var Pe=Bf[cd];switch(dc){case 32512:Ia=Cf;break;case 32256:Ia=Df;break;case 29248:Ia=Ef;break;default:Ia=[""]}var Qe,dd;for(dd in Pe){for(var Re=Pe[dd],Ja=0;Ja<Ia.length;Ja++){var ed=Ia[Ja];"S"==ed&&Re>Ff&&(ed="B");if(sg==Gf[Re]+ed){Qe=29248!=dc?Ja:(Ja&3)<<1|(Ja&12)<<2;y=(dd|Qe<<6)*Rb;break}}if(0<=
y)break}if(0<=y)break}if(0<=y)if(Oe)for(var fd=Oe.split(","),fb=0;fb<fd.length;fb++){var ec=fd[fb].trim();if(ec){if(1<fb){a.g("too many operands: "+ec);y=-1;break}var V=ec.match(/(@?)([^(]*)\(?([^)]*)\)?/);if(!V){a.g("unknown operand: "+ec);y=-1;break}var E=P(a,V[2]);if(void 0==E){y=-1;break}if(!fb&&1<fd.length)if(28700==dc){if(0>E||127<E){a.g("device code out of range: "+V[2]);y=-1;break}y+=E*Sb}else{if(0>E||15<E){a.g("accumulator address out of range: "+V[2]);y=-1;break}y+=E<<23}else{if(0>E||262143<
E){a.g("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.g("memory index out of range: "+V[3]);y=-1;break}y+=E<<18}V[1]&&(y+=4194304)}}}else a.g("missing operand(s)"),y=-1;else a.g("unknown instruction: "+z);U=y;0<=U&&(a.cb(r,U),a.g(Af(a,r)))}}break;case "b":a:{var tg=f[0],Ka=f[1],ug=b;if("?"==Ka)a.g("breakpoint commands:"),a.g("\tbp #\tset exec breakpoint"),a.g("\tbr #\tset read breakpoint"),a.g("\tbw #\tset write breakpoint"),a.g("\tbc #\tclear breakpoint (* to clear all)"),
a.g("\tbl\tlist all breakpoints"),a.g("\tbn [#]\tbreak after # instruction(s)");else{var sa=tg.charAt(1);if("l"==sa){var gd;gd=0+Jf(a,a.b);gd+=Jf(a,a.M);(gd+=Jf(a,a.J))||a.g("no breakpoints")}else if("n"==sa){var Se=+Ka||0;Ka&&(a.ka=Se);a.g("break after "+Se+" instruction(s)")}else if(void 0===Ka)a.g("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.g("all breakpoints cleared")):Hf(a,a.b,J)||Hf(a,a.M,J)||Hf(a,a.J,J)||a.g("breakpoint missing: "+
K(a,J.w)):null!=J.w&&(Ae(a,J,ug),"p"==sa?a.Ca(a.b,J):"r"==sa?a.Ca(a.M,J):"w"==sa?a.Ca(a.J,J):a.g("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],vg=f[3];if("?"==W){var Na="";for(La in G)a.qa[La]&&(Na&&(Na+=","),Na+=La);Na+=",state,symbols";a.g("dump memory commands:");a.g("\tdw [a] [n] dump n words at address a");a.g("\tds [a] [n] dump n words at address a as JSON");a.g("\tdh [p] [n] dump n instructions from history position p");
Na.length&&a.g("dump extension commands:\n\t"+Na)}else if("state"==W){var hd=Sf(a.F,!0);"console"==ia?console.log(hd):(a.oa&&(a.oa.value=""),hd&&a.g(hd))}else if("symbols"==W)for(var id=0;id<a.H.length;id++){var jd=a.H[id],Oa;for(Oa in jd.T)if("."!=Oa.charAt(0)){var Te=jd.T[Oa].o;if(void 0!==Te){var Ue=jd.T[Oa].l;Ue&&(Oa=Ue);a.g(K(a,Te)+" "+Oa)}}}else{if("d"==Ma){for(La in G)if(f[1]==La){var Ve=a.qa[La];Ve?(f.shift(),f.shift(),Ve(f)):a.g("no dump registered for "+W);break a}W||(Ma=a.Da||"dw")}else a.Da=
Ma;if("dh"==Ma){var We=W,Xe=ia,Ye="",Ze=0,R=a.R,X=a.f;if(X.length){var N=+We||a.sa,hb=+Xe||10;isNaN(N)?N=hb:Ye="more ";N>X.length&&(a.g("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 kd=[];"call"==Xe&&(hb=1E5,kd=["CALL"]);for(void 0!==We&&a.g(N+" instructions earlier:");0<hb&&R!=a.R;){var $e=X[R++];if(null==$e.w)break;var ib=Q($e.w),wg=N--,af=Af(a,ib,"history",wg);(!kd.length||0<=af.indexOf(kd[0]))&&a.g(af);ib.Xa&&(R+=ib.Xa,hb-=ib.Xa,
N-=ib.Xa);R>=X.length&&(R=0);a.sa=N;Ze++;hb--}}Ze||(a.g("no "+Ye+"history available"),a.sa=void 0)}else{var Pa=T(a,W,a.ja);if(Pa){var ta=0,bf="ds"==Ma;if(ia){if("l"==ia.charAt(0))ia=ia.substr(1)||vg,ta=oe(a,ia);else{var cf=T(a,ia);cf&&(ta=cf.w-Pa.w)}0>ta&&(ta=0);65536<ta&&(ta=65536)}var xg=a.ba;Pa.ba&&(a.ba=Pa.ba);for(var df="db"==Ma?1:2,ld=ta||32,md=1==df?2:4,yg=(ld+md-1)/md|0||1,ua="";yg--&&0<ld;){for(var va="",ef="",W=K(a,Pa.w),ff=md;0<ff--&&0<ld--;){var fc=a.wa(Pa,1);bf?(va&&(va+=","),va+=fc):
(va+=Be(fc),va+=" ");for(var gf=0;1==df&&6>gf;gf++)ef+=String.fromCharCode((fc%64|0)+32),fc/=64}ua&&(ua+="\n");ua=bf?ua+(va+","):ua+(W+": "+va+(0>ff?" "+ef:""))}ua&&a.g(ua);a.ba=xg}}}}break;case "e":if("else"==f[0])break;var hf,jf,kf=f[0],nd=f[1];"e"==kf||"ew"==kf?(hf=a.wa,jf=a.cb):nd=null;if(null==nd)a.g("edit memory commands:"),a.g("\tew [a] [...] edit words at address a");else{var gc=T(a,nd,a.ja);if(gc)for(var hc=2;hc<f.length;hc++){var od=P(a,f[hc]);if(void 0===od){a.g("unknown value: "+f[hc]);
break}a.g("changing "+K(a,gc.w)+" from "+Be(hf.call(a,gc))+" to "+Be(od));jf.call(a,gc,od,1)}}break;case "g":a:{var lf=f[1],zg=b;if(void 0!==lf){var pd=T(a,lf);if(!pd)break a;Ae(a,pd,zg);a.Ca(a.b,pd,!0)}Me(a,!0,c)}break;case "h":a.j.K?(c||a.g("halting"),a.V()):Fb(a,!0)||c||a.g("already halted");break;case "i":if("if"==f[0]){var qd;var jb=b.substr(2),jb=Ca(jb);P(a,jb)?(c||a.g("true: "+jb),qd=!0):(c||a.g("false: "+jb),qd=!1);qd||(d=!1);break}g=!0;break;case "k":var Ag=f[0];if("?"==f[1])a.g("stack trace commands:"),
a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var rd=0,sd=Q(),kb=Q();for(a.g("stack trace for "+K(a,kb.w));10>rd;){for(var wa=null,Bg=256;65536>kb.w>>>0;){sd.w=a.wa(kb,2);if(null==kb.w||!Bg--)break;if(!(sd.w&1)){for(var Cg=a,ic=sd,mf=null,lb=ic.w,nf=lb,td=1;6>=td&&lb;td++){if(2<td){ic.w=lb;var jc=Af(Cg,ic);if(0<=jc.indexOf("JSR")){var of=jc.indexOf(" ");if(lb+(jc.indexOf(" ",of+1)-of-1)/2==nf){mf=jc;break}}}lb-=2}ic.w=nf;if(wa=mf)break}}if(!wa||null==wa)break;var pf=null;
if("ks"==Ag){var qf=wa.match(/[0-9A-F]+$/);qf&&(pf=Pf(a,qf[0]))}wa=Ba(wa,50)+" ;"+(pf||"stack="+K(a,kb.w));a.g(wa);rd++}rd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Pf(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.g("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 rf=1E3<=a.O.length?a.O.length-1E3:0;rf<a.O.length;)a.g(a.O[rf++]);a.O=[]}}var Dg=0,mb="";for(Y in G)if(!A||A==Y){var Eg=!!(a.X&G[Y]);if(null===Z||Z==Eg)mb&&(mb+=","),++Dg%10||(mb+="\n\t"),"key"==Y&&(Y="keys"),mb+=Y}void 0===A&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Z?Z?"messages on: ":"messages off: ":"message categories:\n\t")+(mb||"none"));ue(a)}break;
case "p":if("print"==f[0]){Qf(a,b.substr(5));break}var sf=f[0],tf="p"==sf?0:"pr"==sf?1:-1;if("?"==f[1]||0>tf)a.g("step commands:"),a.g("\tp\tstep over instruction"),a.g("\tpr\tstep over instruction with register update");else if(a.N)a.g("step in progress");else{var uf=Q(a.i.u);a.wa(uf);a.N?(a.Ca(a.b,uf,!0),Me(a)||(a.F&&yd(a.F),a.N=0)):Rf(a,tf?"tr":"t")}break;case "r":if("reset"==b){a.F&&a.F.reset();break}xf(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.g("invalid base: "+nb);break}}a.g("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.g("unknown cs option");break a}void 0!==ob&&Xc(a.i);a.g("checksums "+(a.i.j.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(bd(a.i,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.i.S.toFixed(2)+"Mhz")+" ("+a.i.W+
"x)");break;default:if(f[1]){a.g("unknown option: "+f[1]);break}case "?":a.g("debugger options:"),a.g("\tbase #\t\tset default base to #"),a.g("\tcs int #\tset checksum cycle interval to #"),a.g("\tcs start #\tset checksum cycle start count to #"),a.g("\tcs stop #\tset checksum cycle stop count to #"),a.g("\tsp #\t\tset speed multiplier to #")}break;case "t":Rf(a,f[0],f[1]);break;case "u":yf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Of(a,b.substr(3))||(d=!1);break}if("ver"==f[0]){a.g((Jb||"PDP10")+
" version 1.34.2 ("+a.i.ib+",RELEASE)");a.g(window?window.navigator.userAgent:"");break}g=!0;break;case "?":if(f[1]){Qf(a,b.substr(1));break}var ud="commands:",vd;for(vd in Tf)ud+="\n"+Ba(vd,9)+Tf[vd];Id(a)||(ud+="\nnote: history disabled if no exec breakpoints");a.g(ud);break;default:g=!0}g&&(a.g("unknown command: "+b),d=!1)}}catch(wf){a.g("debugger error: "+(wf.stack||wf.message)),d=!1}return d}function $c(a,b,c){b=le(a,b,c);for(var d in b)if(!Kf(a,b[+d]))return!1;return!0}
var Tf={"?":"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"},Ff=20,Gf=".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,Ge=3,He=4,Ie=5,Je=6,Ke=7,Ce="PC RA EA C0 C1 OV ND PD".split(" "),Uf={},Bf=(Uf[28672]={0:101},Uf[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},Uf[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Ff,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},Uf[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Uf[29248]={24576:79,24640:80,25088:81,25152:82},Uf[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,
28692:98,28696:99,28700:100},Uf),Cf=["","I","M","S"],Df=" L E LE A GE N G".split(" "),Ef="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Le=1E3,vf=">> ";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 Vf(a,b,c){v.call(this,"Computer",a,33554432);this.j.U=!1;this.R=null;Wf(this,b);this.O=Vc(this,"autoPower",a,6);this.v=0;this.aa=+a.busWidth||+a.buswidth;this.M=this.H=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.f=Xf(this);if(this.i=vb("CPU",this.id)){this.A=vb("Debugger",this.id);this.G=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.g=this.u.g,d.oa=this.u.oa;this.g(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.G,this.i,this.A);b=null;d=Vc(this,"resume",a);void 0!==d&&(1<d.length?b=this.H=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=Yf),this.b&&(this.J=new H(this,"1.34.2"),Zf(this.J)?b=null:
delete this.J);!b&&this.b&&(b=$f(this))&&(this.L=!0);if(b){var f=this;Fa(b,null,!0,function(a,b,c){c?(f.H=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.I.power||(this.O=!0);!c&&this.O&&ag(this,this.Ga)}else u("Unable to find CPU component")}p(Vf,v);function Wf(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 ag(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(){ag(a,b,c)});return}}b.call(a,c)}
function bg(a,b){var c=new H(a,"1.34.2",cg);if(Zf(c)&&dg(c)){var d=c.get(eg),e=b?b.get(eg):"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=Vf.prototype;
l.Ga=function(a){void 0===a&&(a=this.b||(this.M?fg:Yf));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==gg)b=!0;else if(a>Yf){if(Zf(d,this.M)){this.B=new H(this,"1.34.2",hg);Zf(this.B)&&(ig(this,d),a=jg,kg(this.B));this.B.set(eg,Ea());lg(this.B);var e=this.b&&!this.L;if(a==fg||sb("Click OK to restore the previous "+Jb+" machine state, or CANCEL to reset the machine.")){if(c=dg(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?Zf(d,f):("error"==g&&"no machine state"!=
f?(this.ca("Error: "+f),"unable to verify user"==f&&(Sa(mg,""),this.f=null)):this.g(g+": "+f),kg(d),Zf(d)?(c=dg(d),e=!0):c=!1))}e&&bg(this,c?d:null)}else a==jg&&d.clear()}else bg(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=ng(this,f,d,b,c));b=[d,a,c];a!=gg?ag(this,this.ob,b):this.ob(b)}};
function ng(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=Yf,window&&window.location.reload()):a.P=!0,b.pa(null),e=!1),!d&&b.gb){var f=b.gb.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.ob=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.j.U=!0;var d=this.I.power;d&&(d.textContent="Shutdown");this.i&&(ng(this,this.i,b,c,a),I(this,-2),this.i.Z());this.P&&(ig(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.v=0};
function ig(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.f||"";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 Sf(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",cg),h=Ea();f.set(eg,h);g.set(eg,h);g.set(og,"1.34.2");g.set(pg,window?window.location.href:null);g.set(qg,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.f&&rg(a,a.f,g.toString()),lg(f)&&lg(g)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Fg),d&&g.clear(h)):e=g.toString());c&&(a.j.U=!1,b=a.I.power)&&(b.textContent="Power");a.v=0;return e}
function P(a,b,c){var d;if(b){b=re(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=se(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&&te[n]<te[k[k.length-1]]&&qe(h,k,1);k.push(n);b=b.substr(r+z)}qe(h,k)&&1==h.length||(g=!0);g?c&&a.g("error parsing '"+f+"' at character "+(f.length-b.length)):(d=h.pop(),c&&ue(a,null,
d))}return d}function re(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 se(a,b,c,d){var e;null!=b?(e=a.tb(b),0<=e?e=a.$a(e):(e=a.W[b],null==e&&(e=na(b,a.ca))),null!=e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function ue(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.g((null!=b?b+": ":"")+d);return e}
function ve(a,b){if(b)return ue(a,b,a.W[b]);var c=0;for(b in a.W)ue(a,b,a.W[b]),c++;return 0<c}function K(a,b,c){c=void 0===c?0:c;switch(a.ca){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 te={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function we(a){oe.call(this,a);this.ya=!1;this.la=!0;this.va=Q();this.L=Q(0);this.ja=Q(0);this.ba=Q(0);this.H=[];this.b=this.M=this.J=[];xe(this);this.R=this.ka=0;this.f=[];this.sa=void 0;ye(this);this.A=this;this.qa={};this.X=this.ob=0;this.S=null;this.O=[];ze(this,a.messages);this.ua=a.commands;this.N=0;this.Ba=this.ta=null;this.B=this.Aa=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 ad(b,a)}):void 0===global[B]&&(global[B]=function(a){return ad(b,
a)})}p(we,oe);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,rb:void 0===b?!1:b,ea:!1,ca:c}}function Ae(a,b,c,d){a.w=b;a.rb=c||!1;a.ea=!1;a.ca=d}function Be(a){return[a.w,a.rb,a.ca,a.ea,a.Oa]}function Ce(a,b){var c=Q(b[0],b[1],b[2]);c.ea=b[3];b[4]&&(c.mb=pe(a,c.Oa=b[4]));return c}l=we.prototype;
l.wa=function(a,b,c,d){this.G=b;this.F=a;this.i=c;this.ha=a.u;(a=Wc(a,"messages"))&&ze(this,a);De(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=S(T(d,c,d.ja));if(-1===a){d.g("invalid address: "+c);break a}e=a>>>d.G.f;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;k--;){var n=b[e];n.type==c?m++||d.g("..."):(c=n.type,m=Gc[c],n&&d.g(t(n.id,8)+" %"+t(e<<d.G.f,8)+" %"+t(n.w,8)+" "+t(n.Ha,
4,!0)+" "+t(n.size,4,!0)+" "+m),c!=Kc&&(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.I[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",ad(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.I[b]=c,Xa(c,function(){if(d.aa){var a=d.aa.value;
d.aa.value="";ad(d,a,!0);return!0}return!1}),!0;case "step":return this.I[b]=c,Xa(c,function(a){var b=!1;Fb(d,!0)||(Gb(d,!0),b=sc(d,a?1:0,null),Gb(d,!1));return b}),!0}return!1};function $c(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.xa=function(a,b){var c=-1,d=S(a);-1!==d&&(c=yc(this.G,d),b&&null!=a.w&&(a.w+=b||1));return c};l.fb=function(a,b,c){var d=S(a);-1!==d&&(xc(this.G,d,b),c&&null!=a.w&&(a.w+=c||1),I(this.F,-1))};
function T(a,b,c){var d,e;c||(c=Q());var g=c.w;if(void 0!==b){b=re(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.H.length;k++){var m=a.H[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&&Ae(c,g,d,e);return c}function Ee(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.mb=pe(a,b.Oa=c[2]))}
function Fe(a){return pa(a/Kb,6)+" "+pa(a%Kb,6)}function ze(a,b){a.A=a;a.X=a.ob=536870916;a.S=null;a.O=[];b=pe(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.g(c+" messages enabled"))}}function De(a,b){for(var c in G)if(16==G[c]){a.qa[c]=b;break}}l.tb=function(a){return Ge.indexOf(a.toUpperCase())};
l.$a=function(a){var b;switch(a){case He:b=this.i.u;break;case Ie:b=this.i.H;break;case Je:b=this.i.f;break;case Ke:b=this.i.jb?1:0;break;case Le:b=this.i.za?1:0;break;case Me:b=this.i.Ra?1:0;break;case Ne:b=this.i.Ab?1:0;break;case Oe:b=this.i.Sa?1:0}return b};
l.message=function(a,b){b&&(a+=" @"+K(this,Q(this.i.ra).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.g(a);this.i&&(a=this.i,Cd(a),a.ba=0,a.F&&I(a.F,void 0))}};
function ye(a){var b;if(!Jd(a))a.f&&a.f.length&&a.g("instruction history buffer freed"),a.R=0,a.f=[];else if(!a.f||!a.f.length){a.f=Array(Pe);for(b=0;b<a.f.length;b++)a.f[b]=Q();a.R=0;a.g("instruction history buffer allocated")}}function Qe(a,b,c){if(!Re(a,c))return!1;rc(a.i,b);return!0}
function sc(a,b,c,d){if(!Re(a))return!1;var e="";null===c&&(e=(c=!a.ta||"tr"==a.ta)?"tr":"t");a.B=0;b||Jd(a)&&Kd(a,a.i.u,0);try{b=Ad(a.i,b);var g=a.i.Ja(b);0<g&&(tc(a.i,g),a.B+=g,uc(a.i,g,!0),vc(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.F,-1));Zc(a,c||!1,e);return 0<a.B}l.V=function(a){this.i&&this.i.V(a)};function Zc(a,b,c){b=void 0===b?!0:b;a.ya&&(c&&a.g(zf+c),Ae(a.L,a.i.u),b&&1!=a.N?Bf(a):Cf(a))}
function Re(a,b){var c;(c=!a.i||!Eb(a.i))||(c=a.i,c.j.U?c=!0:(c.g(c.toString()+" not powered"),c=!1),c=!c);return c||a.i.j.K?(b||a.g("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.g(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){ye(this);this.ia=0;this.S=null;this.B=0;Ae(this.L,this.i.u);this.j.K=!1;Df(this);a||Zc(this)};
l.save=function(){var a=new H(this);a.set(0,Be(this.L));a.set(1,Be(this.ja));a.set(2,Be(this.ba));a.set(3,[this.u,this.P,this.X]);a.set(4,this.H);return a.data()};l.restore=function(a){var b=0;void 0!==a[3]&&(this.L=Ce(this,a[b++]),this.ja=Ce(this,a[b++]),this.ba=Ce(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.H=a[4]);return!0};l.start=function(a,b){this.N||this.g("running");this.j.K=!0;this.za=a;this.Aa=b};
l.stop=function(a,b){if(this.j.K){this.j.K=!1;this.B=b-this.Aa;if(!this.N){b="stopped";if(this.B){a-=this.za;var c=0<a?Math.round(1E3*this.B/a):0;b+=" (";Jd(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.g(b)}Zc(this,!0);$c(this);Df(this,this.i.u);this.S=null}};function Jd(a){return 1<a.b.length||!!a.ka}
function Kd(a,b,c){var d=-1;c||(d=a.i.C(b),2756==d>>23&&a.i.ra==b&&(b=Hd(a.i,1)));if(0<c&&(a.ka&&!--a.ka||Tc(a,b,1,a.b)))return!0;0<=c&&a.f.length&&(a.ia++,0>d&&(d=a.i.C(b)),0<=d&&(Ae(a.f[a.R],b),++a.R==a.f.length&&(a.R=0)));return!1}
function Ef(a,b,c,d){var e=Q(b.w),g=a.xa(b,1),f,h,k,m=0,n=g/Rb|0,r;for(r in Ff)if(f=Ff[r][n&r]){h=+r;n>>=6;switch(h){case 32512:k=Gf;m=n&3;break;case 32256:k=Hf;m=n&7;break;case 29248:k=If,m=(n&48)>>2|(n&6)>>1}break}k=k&&k[m]||"";"S"==k&&f>Jf&&(k="B");k=Kf[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+=Fe(g);g=k;f="";h=K(a,e.w)+":";if(-1!==e.w&&-1!==b.w){do if(k=a.xa(e,1),f+=" "+Fe(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="+bd(a.i).toString()+" cs="+t(a.i.ta)):h+(null!=d?"="+d.toString():""));return h}function xe(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.G;Sc(d.b[c>>>d.f],!1)}a.M=["br"];if(a.J)for(b=1;b<a.J.length;b++)c=a.J[b],c=S(c),d=a.G,Sc(d.b[c>>>d.f],!0);a.J=["bw"];a.ra=0;a.ka=0}
l.Da=function(a,b,c){var d=!0;c||Lf(this,a,b,!1,!0);if(a!=this.b){var e=S(b);if(-1===e)this.g("invalid address: "+K(this,b.w)),d=!1;else{var g=this.G;g.b[e>>>g.f].Da(e&16383,a==this.J)}}d&&(a.push(b),c?b.ea=!0:(Mf(this,a,a.length-1,"set"),ye(this)));return d};function Lf(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||Mf(a,b,f,"cleared");b.splice(f,1);b!=a.b&&(d=a.G,Sc(d.b[c>>>d.f],b==a.J));h.ea||ye(a);break}}return g}
function Nf(a,b){for(var c=1;c<b.length;c++)Mf(a,b,c);return b.length-1}function Mf(a,b,c,d){c=b[c];a.g(b[0]+" "+K(a,c.w)+(d?" "+d:c.Oa?' "'+c.Oa+'"':""))}function Df(a,b){if(void 0!==b)Tc(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(!Lf(a,a.b,c,!0))break;b=0}}}
function Tc(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&&(Lf(a,d,h,!0),e=!0);if(n=h.mb){for(var g=!1,r=0;r<n.length;r++)if(!Of(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||Mf(a,d,f,"hit");break}}}a.ra--;return g}
function Pf(a,b){b=void 0===b?!0:b;for(var c="",d=0;16>d;d++){!d||d&3||(c+="\n");var e=a,g=pa(d,2);Ae(e.va,d);g+="="+K(e,e.xa(e.va),36)+" ";c+=g}if(b){b="";for(d=0;d<Ge.length;d++)(e=Ge[d]||"")&&(e+="="+K(a,a.$a(d),d>=Ke?1:d==Ie?23:18)+" "),b+=e;c+="\n"+b}return c}l.pb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function ie(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.pb);0>r&&n.splice(-(r+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({gd:b,w:c,Gb:d,T:e,nb:g})}function Qf(a,b,c){var d=[],e=S(b)>>>0;for(b=0;b<a.H.length;b++){var g=a.H[b],f=g.w>>>0,h=g.Gb;if(e>=f&&e<f+h){e=Da(g.nb,[e-f],a.pb);0<=e?Rf(a,b,e,d):c&&(e=~e,Rf(a,b,e-1,d),Rf(a,b,e,d));break}}return d}
function Rf(a,b,c,d){var e={},g=a.H[b].nb,f=0,h=null;0<=c&&c<g.length&&(f=g[c][0],h=g[c][1]);h&&(e=a.H[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 Sf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return ve(a)||a.g("no variables"),!0;if(!c[2])return ve(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.g("invalid assignment:"+b);return!1}
function Tf(a,b,c){var d=null;if(b=T(a,b)){var e=Qf(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.g(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.g(g),d||(d=g))}else c&&a.g("no symbols")}return d}
function Bf(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trm\tdump misc registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.i,e=void 0;null==c&&(c=!0);if(b&&1<b.length){var g=b[1];if("m"==g)e=!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.g("missing value for "+b[1]);return}f=P(a,b);if(void 0===f)return;switch(g.toUpperCase()){case "PC":d.u=f%Kb;Ae(a.L,d.u);break;default:a.g("unknown register: "+
g);return}I(a.F);a.g("updated registers:")}}a.g(Pf(a,e));c&&(Ae(a.L,d.u),Cf(a,K(a,a.L.w)))}}function Uf(a,b){b=Ca(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.g(c[2]):ue(a,null,c[2].charCodeAt(0)):P(a,b,!0)}
function Vf(a,b,c){if("?"==c)a.g("trace commands:"),a.g("\tt [#]\ttrace # instructions"),a.g("\ttr [#]\ttrace # instructions with register updates"),a.g("\ttc [#]\ttrace # cycles"),a.g("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=se(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ta=b;Wa(c,function(){return Gb(a,!0)&&sc(a,e,d,!1)},function(){a.ha&&a.ha.stop();I(a.F,-1);Gb(a,!1)})}}
function Cf(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=se(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.g("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=Qf(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.g(m)}h[3]&&(f=h[3],g=null);h=a.ba;m=b;h.w=m.w;h.ea=m.ea;h.ca=m.ca;a.g(Ef(a,b,f,g));e-=b.w-k;c++}}}
function Of(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(zf+b):(a.P&&(a.g("ended assemble at "+K(a,a.ba.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.ba.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.ba);if(r){var z=f[2];if(void 0==z)a.g("begin assemble at "+K(a,r.w)),a.P=!0,I(a.F);else{f.shift();f.shift();f.shift();var U,Se=f.join(""),y=-1,fc,wg=z.toUpperCase(),ed;for(ed in Ff){var Ia;fc=+ed;var Te=Ff[ed];switch(fc){case 32512:Ia=Gf;break;case 32256:Ia=Hf;break;case 29248:Ia=If;break;default:Ia=[""]}var Ue,fd;for(fd in Te){for(var Ve=Te[fd],Ja=0;Ja<Ia.length;Ja++){var gd=Ia[Ja];"S"==gd&&Ve>Jf&&(gd="B");if(wg==Kf[Ve]+gd){Ue=29248!=fc?Ja:(Ja&3)<<1|(Ja&12)<<2;y=(fd|Ue<<6)*Rb;break}}if(0<=
y)break}if(0<=y)break}if(0<=y)if(Se)for(var hd=Se.split(","),gb=0;gb<hd.length;gb++){var gc=hd[gb].trim();if(gc){if(1<gb){a.g("too many operands: "+gc);y=-1;break}var V=gc.match(/(@?)([^(]*)\(?([^)]*)\)?/);if(!V){a.g("unknown operand: "+gc);y=-1;break}var E=P(a,V[2]);if(void 0==E){y=-1;break}if(!gb&&1<hd.length)if(28700==fc){if(0>E||127<E){a.g("device code out of range: "+V[2]);y=-1;break}y+=E*Sb}else{if(0>E||15<E){a.g("accumulator address out of range: "+V[2]);y=-1;break}y+=E<<23}else{if(0>E||262143<
E){a.g("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.g("memory index out of range: "+V[3]);y=-1;break}y+=E<<18}V[1]&&(y+=4194304)}}}else a.g("missing operand(s)"),y=-1;else a.g("unknown instruction: "+z);U=y;0<=U&&(a.fb(r,U),a.g(Ef(a,r)))}}break;case "b":a:{var xg=f[0],Ka=f[1],yg=b;if("?"==Ka)a.g("breakpoint commands:"),a.g("\tbp #\tset exec breakpoint"),a.g("\tbr #\tset read breakpoint"),a.g("\tbw #\tset write breakpoint"),a.g("\tbc #\tclear breakpoint (* to clear all)"),
a.g("\tbl\tlist all breakpoints"),a.g("\tbn [#]\tbreak after # instruction(s)");else{var sa=xg.charAt(1);if("l"==sa){var id;id=0+Nf(a,a.b);id+=Nf(a,a.M);(id+=Nf(a,a.J))||a.g("no breakpoints")}else if("n"==sa){var We=+Ka||0;Ka&&(a.ka=We);a.g("break after "+We+" instruction(s)")}else if(void 0===Ka)a.g("missing breakpoint address");else{var J=Q();if("*"!=Ka&&(J=T(a,Ka,a.L),!J))break a;"c"==sa?null==J.w?(xe(a),a.g("all breakpoints cleared")):Lf(a,a.b,J)||Lf(a,a.M,J)||Lf(a,a.J,J)||a.g("breakpoint missing: "+
K(a,J.w)):null!=J.w&&(Ee(a,J,yg),"p"==sa?a.Da(a.b,J):"r"==sa?a.Da(a.M,J):"w"==sa?a.Da(a.J,J):a.g("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],zg=f[3];if("?"==W){var Na="";for(La in G)a.qa[La]&&(Na&&(Na+=","),Na+=La);Na+=",state,symbols";a.g("dump memory commands:");a.g("\tdw [a] [n] dump n words at address a");a.g("\tds [a] [n] dump n words at address a as JSON");a.g("\tdh [p] [n] dump n instructions from history position p");
Na.length&&a.g("dump extension commands:\n\t"+Na)}else if("state"==W){var jd=Wf(a.F,!0);"console"==ia?console.log(jd):(a.oa&&(a.oa.value=""),jd&&a.g(jd))}else if("symbols"==W)for(var kd=0;kd<a.H.length;kd++){var ld=a.H[kd],Oa;for(Oa in ld.T)if("."!=Oa.charAt(0)){var Xe=ld.T[Oa].o;if(void 0!==Xe){var Ye=ld.T[Oa].l;Ye&&(Oa=Ye);a.g(K(a,Xe)+" "+Oa)}}}else{if("d"==Ma){for(La in G)if(f[1]==La){var Ze=a.qa[La];Ze?(f.shift(),f.shift(),Ze(f)):a.g("no dump registered for "+W);break a}W||(Ma=a.Ba||"dw")}else a.Ba=
Ma;if("dh"==Ma){var $e=W,af=ia,bf="",cf=0,R=a.R,X=a.f;if(X.length){var N=+$e||a.sa,ib=+af||10;isNaN(N)?N=ib:bf="more ";N>X.length&&(a.g("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 md=[];"call"==af&&(ib=1E5,md=["CALL"]);for(void 0!==$e&&a.g(N+" instructions earlier:");0<ib&&R!=a.R;){var df=X[R++];if(null==df.w)break;var jb=Q(df.w),Ag=N--,ef=Ef(a,jb,"history",Ag);(!md.length||0<=ef.indexOf(md[0]))&&a.g(ef);jb.Ya&&(R+=jb.Ya,ib-=jb.Ya,
N-=jb.Ya);R>=X.length&&(R=0);a.sa=N;cf++;ib--}}cf||(a.g("no "+bf+"history available"),a.sa=void 0)}else{var Pa=T(a,W,a.ja);if(Pa){var ta=0,ff="ds"==Ma;if(ia){if("l"==ia.charAt(0))ia=ia.substr(1)||zg,ta=se(a,ia);else{var gf=T(a,ia);gf&&(ta=gf.w-Pa.w)}0>ta&&(ta=0);65536<ta&&(ta=65536)}var Bg=a.ca;Pa.ca&&(a.ca=Pa.ca);for(var hf="db"==Ma?1:2,nd=ta||32,od=1==hf?2:4,Cg=(nd+od-1)/od|0||1,ua="";Cg--&&0<nd;){for(var va="",jf="",W=K(a,Pa.w),kf=od;0<kf--&&0<nd--;){var hc=a.xa(Pa,1);ff?(va&&(va+=","),va+=hc):
(va+=Fe(hc),va+=" ");for(var lf=0;1==hf&&6>lf;lf++)jf+=String.fromCharCode((hc%64|0)+32),hc/=64}ua&&(ua+="\n");ua=ff?ua+(va+","):ua+(W+": "+va+(0>kf?" "+jf:""))}ua&&a.g(ua);a.ca=Bg}}}}break;case "e":if("else"==f[0])break;var mf,nf,of=f[0],pd=f[1];"e"==of||"ew"==of?(mf=a.xa,nf=a.fb):pd=null;if(null==pd)a.g("edit memory commands:"),a.g("\tew [a] [...] edit words at address a");else{var ic=T(a,pd,a.ja);if(ic)for(var jc=2;jc<f.length;jc++){var qd=P(a,f[jc]);if(void 0===qd){a.g("unknown value: "+f[jc]);
break}a.g("changing "+K(a,ic.w)+" from "+Fe(mf.call(a,ic))+" to "+Fe(qd));nf.call(a,ic,qd,1)}}break;case "g":a:{var pf=f[1],Dg=b;if(void 0!==pf){var rd=T(a,pf);if(!rd)break a;Ee(a,rd,Dg);a.Da(a.b,rd,!0)}Qe(a,!0,c)}break;case "h":a.j.K?(c||a.g("halting"),a.V()):Fb(a,!0)||c||a.g("already halted");break;case "i":if("if"==f[0]){var sd;var kb=b.substr(2),kb=Ca(kb);P(a,kb)?(c||a.g("true: "+kb),sd=!0):(c||a.g("false: "+kb),sd=!1);sd||(d=!1);break}g=!0;break;case "k":var Eg=f[0];if("?"==f[1])a.g("stack trace commands:"),
a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var td=0,ud=Q(),lb=Q();for(a.g("stack trace for "+K(a,lb.w));10>td;){for(var wa=null,Fg=256;65536>lb.w>>>0;){ud.w=a.xa(lb,2);if(null==lb.w||!Fg--)break;if(!(ud.w&1)){for(var Gg=a,kc=ud,qf=null,mb=kc.w,rf=mb,vd=1;6>=vd&&mb;vd++){if(2<vd){kc.w=mb;var lc=Ef(Gg,kc);if(0<=lc.indexOf("JSR")){var sf=lc.indexOf(" ");if(mb+(lc.indexOf(" ",sf+1)-sf-1)/2==rf){qf=lc;break}}}mb-=2}kc.w=rf;if(wa=qf)break}}if(!wa||null==wa)break;var tf=null;
if("ks"==Eg){var uf=wa.match(/[0-9A-F]+$/);uf&&(tf=Tf(a,uf[0]))}wa=Ba(wa,50)+" ;"+(tf||"stack="+K(a,lb.w));a.g(wa);td++}td||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Tf(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.g("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 vf=1E3<=a.O.length?a.O.length-1E3:0;vf<a.O.length;)a.g(a.O[vf++]);a.O=[]}}var Hg=0,nb="";for(Y in G)if(!A||A==Y){var Ig=!!(a.X&G[Y]);if(null===Z||Z==Ig)nb&&(nb+=","),++Hg%10||(nb+="\n\t"),"key"==Y&&(Y="keys"),nb+=Y}void 0===A&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Z?Z?"messages on: ":"messages off: ":"message categories:\n\t")+(nb||"none"));ye(a)}break;
case "p":if("print"==f[0]){Uf(a,b.substr(5));break}var wf=f[0],xf="p"==wf?0:"pr"==wf?1:-1;if("?"==f[1]||0>xf)a.g("step commands:"),a.g("\tp\tstep over instruction"),a.g("\tpr\tstep over instruction with register update");else if(a.N)a.g("step in progress");else{var yf=Q(a.i.u);a.xa(yf);a.N?(a.Da(a.b,yf,!0),Qe(a)||(a.F&&zd(a.F),a.N=0)):Vf(a,xf?"tr":"t")}break;case "r":if("reset"==b){a.F&&a.F.reset();break}Bf(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var ob=+f[2];if(8==ob||10==ob||16==
ob)a.ca=ob;else{a.g("invalid base: "+ob);break}}a.g("default base: "+a.ca);break;case "cs":var pb;void 0!==f[3]&&(pb=+f[3]);switch(f[2]){case "int":a.i.ha=pb;break;case "start":a.i.ua=pb;break;case "stop":a.i.ja=pb;break;default:a.g("unknown cs option");break a}void 0!==pb&&Yc(a.i);a.g("checksums "+(a.i.j.Ea?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(cd(a.i,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.i.W.toFixed(2)+"Mhz")+" ("+a.i.aa+
"x)");break;default:if(f[1]){a.g("unknown option: "+f[1]);break}case "?":a.g("debugger options:"),a.g("\tbase #\t\tset default base to #"),a.g("\tcs int #\tset checksum cycle interval to #"),a.g("\tcs start #\tset checksum cycle start count to #"),a.g("\tcs stop #\tset checksum cycle stop count to #"),a.g("\tsp #\t\tset speed multiplier to #")}break;case "t":Vf(a,f[0],f[1]);break;case "u":Cf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Sf(a,b.substr(3))||(d=!1);break}if("ver"==f[0]){a.g((Jb||"PDP10")+
" version 1.34.2 ("+a.i.kb+",RELEASE)");a.g(window?window.navigator.userAgent:"");break}g=!0;break;case "?":if(f[1]){Uf(a,b.substr(1));break}var wd="commands:",xd;for(xd in Xf)wd+="\n"+Ba(xd,9)+Xf[xd];Jd(a)||(wd+="\nnote: history disabled if no exec breakpoints");a.g(wd);break;default:g=!0}g&&(a.g("unknown command: "+b),d=!1)}}catch(Af){a.g("debugger error: "+(Af.stack||Af.message)),d=!1}return d}function ad(a,b,c){b=pe(a,b,c);for(var d in b)if(!Of(a,b[+d]))return!1;return!0}
var Xf={"?":"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"},Jf=20,Kf=".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(" "),
He=0,Ie=1,Je=2,Ke=3,Le=4,Me=5,Ne=6,Oe=7,Ge="PC RA EA C0 C1 OV ND PD".split(" "),Yf={},Ff=(Yf[28672]={0:101},Yf[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},Yf[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Jf,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},Yf[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Yf[29248]={24576:79,24640:80,25088:81,25152:82},Yf[28700]={28672:93,28676:94,28680:95,28684:96,28688:97,
28692:98,28696:99,28700:100},Yf),Gf=["","I","M","S"],Hf=" L E LE A GE N G".split(" "),If="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Pe=1E3,zf=">> ";Za(function(){for(var a=C(document,B,"debugger"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new we(d);wb(d,c)}});
function Zf(a,b,c){v.call(this,"Computer",a,33554432);this.j.U=!1;this.R=null;$f(this,b);this.O=Wc(this,"autoPower",a,6);this.v=0;this.aa=+a.busWidth||+a.buswidth;this.M=this.H=this.N=null;this.L=this.W=!1;this.J=this.B=null;this.S=this.P=!1;this.ba=Wc(this,"url")||"";(Math.random()+.1).toString(36);this.f=ag(this);if(this.i=vb("CPU",this.id)){this.A=vb("Debugger",this.id);this.G=new zc({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.da=this.u.da,d.g=this.u.g,d.oa=this.u.oa;this.g(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.wa&&d.wa(this,this.G,this.i,this.A);b=null;d=Wc(this,"resume",a);void 0!==d&&(1<d.length?b=this.H=d:this.b=parseInt(d,10));var g;if(a=Wc(this,"state")||(g=!0,a.state))this.N=b=a,g||(this.L=!0,this.b=bg),this.b&&(this.J=new H(this,"1.34.2"),cg(this.J)?b=null:
delete this.J);!b&&this.b&&(b=dg(this))&&(this.L=!0);if(b){var f=this;Fa(b,null,!0,function(a,b,c){c?(f.H=null,f.L=!1,f.da("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(f.M=b,f.W=!0);D(f)})}else D(this);this.I.power||(this.O=!0);!c&&this.O&&eg(this,this.Ga)}else u("Unable to find CPU component")}p(Zf,v);function $f(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 Wc(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 eg(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(){eg(a,b,c)});return}}b.call(a,c)}
function fg(a,b){var c=new H(a,"1.34.2",gg);if(cg(c)&&hg(c)){var d=c.get(ig),e=b?b.get(ig):"unknown";d!=e&&(a.da("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Zf.prototype;
l.Ga=function(a){void 0===a&&(a=this.b||(this.M?jg:bg));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==kg)b=!0;else if(a>bg){if(cg(d,this.M)){this.B=new H(this,"1.34.2",lg);cg(this.B)&&(mg(this,d),a=ng,og(this.B));this.B.set(ig,Ea());pg(this.B);var e=this.b&&!this.L;if(a==jg||sb("Click OK to restore the previous "+Jb+" machine state, or CANCEL to reset the machine.")){if(c=hg(d)){var g=d.get("code"),f=d.get("data");g&&("ok"==g?cg(d,f):("error"==g&&"no machine state"!=
f?(this.da("Error: "+f),"unable to verify user"==f&&(Sa(qg,""),this.f=null)):this.g(g+": "+f),og(d),cg(d)?(c=hg(d),e=!0):c=!1))}e&&fg(this,c?d:null)}else a==ng&&d.clear()}else fg(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=rg(this,f,d,b,c));b=[d,a,c];a!=kg?eg(this,this.qb,b):this.qb(b)}};
function rg(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=bg,window&&window.location.reload()):a.P=!0,b.pa(null),e=!1),!d&&b.ib){var f=b.ib.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.qb=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.j.U=!0;var d=this.I.power;d&&(d.textContent="Shutdown");this.i&&(rg(this,this.i,b,c,a),I(this,-2),this.i.Z());this.P&&(mg(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.v=0};
function mg(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.ba;a=a.f||"";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 Wf(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",gg),h=Ea();f.set(ig,h);g.set(ig,h);g.set(sg,"1.34.2");g.set(tg,window?window.location.href:null);g.set(ug,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.f&&vg(a,a.f,g.toString()),pg(f)&&pg(g)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Jg),d&&g.clear(h)):e=g.toString());c&&(a.j.U=!1,b=a.I.power)&&(b.textContent="Power");a.v=0;return e}
l.reset=function(){this.j.reset=!0;this.G&&this.G.reset&&(Ib(this,"Resetting "+this.G.type),this.G.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.G&&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.i){var c=a.i,d=b||0,e=c.I.speed;e&&(0>=d||30<=(c.Da+=d))&&(e.textContent=c.j.K?c.R.toFixed(2)+"Mhz":"Stopped",c.Da=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.I.PC){var g=a.A&&a.A.ba||8,e=e||0,e=8==g?pa(e,void 0):t(e,void 0);a.I.PC.textContent!=e&&(a.I.PC.textContent=e)}a.L=0}-1>b?a.f=a.i.u:0<b&&c&&!d&&(a.f=a.i.la);bc(a,a.f);Wb(a,a.v)}}
l.ga=function(a,b,c){var d=this;switch(b){case "power":return this.I[b]=c,c.onclick=function(){d.v||(d.j.U?Sf(d,!1,!0):ag(d,d.Ga))},!0;case "reset":return this.I[b]=c,c.onclick=function(){if(d.j.U&&!d.v)if(d.b&&!d.H){var a=sb("Click OK to save changes to this "+Jb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Sf(d,a,!0);!a&&d.N?window&&window.location.reload():d.Ga(Yf)}else d.reset(),d.i&&!d.A&&d.i.Z()},!0;case "save":if(xa())c.parentNode.removeChild(c);else return this.I[b]=
c,c.onclick=function(){var a=Xf(d,!0);if(a){var b=!!(d.b&&!d.H||d.N),c=Sf(d,b);b?rg(d,a,c):d.ca("Resume disabled, machine state not saved")}},!0}return!1};
function Xf(a,b){var c=a.f;c||((c=Ra(mg),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=Gg(a,c))||a.ca("The user ID is invalid.")):b&&a.ca("Browser local storage is not available"));return c}
function Gg(a,b){a.f=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(mg,b.data),a.f=b.data)}catch(d){u(d.message+" ("+c+")")}return a.f}function $f(a){var b=null;a.f&&(b=ya()+"/api/v1/user?req=load&user="+a.f+"&state="+Hg(a,"1.34.2"));return b}
function rg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Hg(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(mg,""),a.f=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 hg="failsafe",cg="validate",eg="timestamp",og="version",pg="url",qg="browser",mg="user",gg=-1,Yf=0,fg=1,jg=2,Fg=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 Vf(f,d,!0);wb(f,g);f.O&&ag(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(gg)}});$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&&Sf(c,!(!c.b||c.H),!0)}});function H(a,b,c){this.id=a.id;this.i="";this.b={};this.f=this.A=!1;this.key=Hg(a,b,c);kg(this,a.Ab)}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 Zf(a,b){return b?(a.i=b,a.f=!0,a.A=!1,!0):a.f?!0:Ha()&&(b=Ra(a.key))?(a.i=b,a.f=!0):!1}function dg(a){var b=!0;if(!a.A)try{a.b=JSON.parse(a.i),a.A=!0}catch(c){u(c.message||c),b=!1}return b}function lg(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 kg(a,b){a.i="";a.b={};a.f=a.A=!1;b&&a.set("parms",b)}l.clear=function(a){kg(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 Hg(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 Ig=0;
function Jg(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)):Kg(k,a,b,c,d,e,g,f)})}
function Kg(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?Lg(a,f,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Lg(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);Lg(a,b,c)}})}else c(a,null)}
function Mg(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&&(--Ig||cb(!0));m=!1}var h,k,m=!0;Ig++;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?Jg(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,--Ig||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),--Ig||
cb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?Jg(c,b,a,e,!0,g,n):Kg(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 Mg("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){cb(!1);return Mg("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.I.speed;e&&(0>=d||30<=(c.Qa+=d))&&(e.textContent=c.j.K?c.S.toFixed(2)+"Mhz":"Stopped",c.Qa=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.I.PC){var g=a.A&&a.A.ca||8,e=e||0,e=8==g?pa(e,void 0):t(e,void 0);a.I.PC.textContent!=e&&(a.I.PC.textContent=e)}a.L=0}-1>b?a.f=a.i.u:0<b&&c&&!d&&(a.f=a.i.qa);cc(a,a.f);Xb(a,a.v)}}
l.ga=function(a,b,c){var d=this;switch(b){case "power":return this.I[b]=c,c.onclick=function(){d.v||(d.j.U?Wf(d,!1,!0):eg(d,d.Ga))},!0;case "reset":return this.I[b]=c,c.onclick=function(){if(d.j.U&&!d.v)if(d.b&&!d.H){var a=sb("Click OK to save changes to this "+Jb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Wf(d,a,!0);!a&&d.N?window&&window.location.reload():d.Ga(bg)}else d.reset(),d.i&&!d.A&&d.i.Z()},!0;case "save":if(xa())c.parentNode.removeChild(c);else return this.I[b]=
c,c.onclick=function(){var a=ag(d,!0);if(a){var b=!!(d.b&&!d.H||d.N),c=Wf(d,b);b?vg(d,a,c):d.da("Resume disabled, machine state not saved")}},!0}return!1};
function ag(a,b){var c=a.f;c||((c=Ra(qg),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=Kg(a,c))||a.da("The user ID is invalid.")):b&&a.da("Browser local storage is not available"));return c}
function Kg(a,b){a.f=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(qg,b.data),a.f=b.data)}catch(d){u(d.message+" ("+c+")")}return a.f}function dg(a){var b=null;a.f&&(b=ya()+"/api/v1/user?req=load&user="+a.f+"&state="+Lg(a,"1.34.2"));return b}
function vg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Lg(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.da("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.da(c),Sa(qg,""),a.f=null)}}
function zd(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 lg="failsafe",gg="validate",ig="timestamp",sg="version",tg="url",ug="browser",qg="user",kg=-1,bg=0,jg=1,ng=2,Jg=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 Zf(f,d,!0);wb(f,g);f.O&&eg(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(kg)}});$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&&Wf(c,!(!c.b||c.H),!0)}});function H(a,b,c){this.id=a.id;this.i="";this.b={};this.f=this.A=!1;this.key=Lg(a,b,c);og(this,a.Cb)}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 cg(a,b){return b?(a.i=b,a.f=!0,a.A=!1,!0):a.f?!0:Ha()&&(b=Ra(a.key))?(a.i=b,a.f=!0):!1}function hg(a){var b=!0;if(!a.A)try{a.b=JSON.parse(a.i),a.A=!0}catch(c){u(c.message||c),b=!1}return b}function pg(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 og(a,b){a.i="";a.b={};a.f=a.A=!1;b&&a.set("parms",b)}l.clear=function(a){og(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 Lg(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 Mg=0;
function Ng(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)):Og(k,a,b,c,d,e,g,f)})}
function Og(a,b,c,d,e,g,f,h){function k(a,f){if(f)h(f,null);else{c&&(hb(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?Pg(a,f,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Pg(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);Pg(a,b,c)}})}else c(a,null)}
function Qg(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&&(--Mg||cb(!0));m=!1}var h,k,m=!0;Mg++;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?Ng(d,null,a,null,!1,g,function(a,e){e?(hb(b,d,a),g("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Mg||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),--Mg||
cb(!0)):f("invalid machine element: "+b):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(a)}):f(e)};"<"!=c.charAt(0)?Ng(c,b,a,e,!0,g,n):Og(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 Qg("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){cb(!1);return Qg("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

@ -31,9 +31,9 @@ var k,aa="function"==typeof Object.defineProperties?Object.defineProperty:functi
function ea(){ba();var a=m.Symbol.iterator;a||(a=m.Symbol.iterator=m.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return fa(this)}});ea=function(){}}function fa(a){var b=0;return ga(function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}})}function ga(a){ea();a={next:a};a[m.Symbol.iterator]=function(){return this};return a}
function n(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}function ha(a,b){if(b){var c=m;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&aa(c,a,{configurable:!0,writable:!0,value:b})}}
ha("Math.trunc",function(a){return a?a:function(a){a=Number(a);if(isNaN(a)||Infinity===a||-Infinity===a||!a)return a;var b=Math.floor(Math.abs(a));return 0>a?-b:b}});ha("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}});
var ia=Math.pow(2,36),ja=-Math.pow(2,35),q={Bb:0,Ta:1,Db:2,Eb:3,Fb:4,Gb:5,Hb:6,Ib:7,Ka:8,Jb:9,Ua:10,Kb:11,Lb:12,Va:13,Mb:14,Nb:15,Ob:16,Pb:17,Qb:18,Rb:19,Sb:20,Tb:21,Ub:22,Vb:23,Wb:24,Xb:25,Yb:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ja:65,Ab:66,Cb:67,Zb:68,E:69,$b:70,ac:71,bc:72,cc:73,dc:74,ec:75,fc:76,gc:77,hc:78,ic:79,jc:80,Q:81,
kc:82,lc:83,mc:84,nc:85,oc:86,pc:87,qc:88,rc:89,$a:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,sc:97,tc:98,uc:99,d:100,e:101,vc:102,wc:103,xc:104,yc:105,zc:106,k:107,Ac:108,Bc:109,n:110,Cc:111,p:112,q:113,r:114,Dc:115,t:116,Ec:117,Fc:118,Gc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Wa:127};
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}
var ia=Math.pow(2,36),ja=-Math.pow(2,35),q={Db:0,Wa:1,Fb:2,Gb:3,Hb:4,Ib:5,Jb:6,Kb:7,La:8,Lb:9,Xa:10,Mb:11,Nb:12,Ya:13,Ob:14,Pb:15,Qb:16,Rb:17,Sb:18,Tb:19,Ub:20,Vb:21,Wb:22,Xb:23,Yb:24,Zb:25,$b:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ka:65,Cb:66,Eb:67,ac:68,E:69,bc:70,cc:71,dc:72,ec:73,fc:74,gc:75,hc:76,ic:77,jc:78,kc:79,lc:80,Q:81,
mc:82,nc:83,oc:84,pc:85,qc:86,rc:87,sc:88,tc:89,ab:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,uc:97,vc:98,wc:99,d:100,e:101,xc:102,yc:103,zc:104,Ac:105,Bc:106,k:107,Cc:108,Dc:109,n:110,Ec:111,p:112,q:113,r:114,Fc:115,t:116,Gc:117,Hc:118,Ic:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Za:127};
function la(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 la(a,8,b,"")}function t(a,b,c){b?9<b&&(b=9):b=a&-65536?8:4;return la(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 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,
@ -44,119 +44,120 @@ 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.Na=b.comment;this.ab=b;this.exports={};this.l=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,Ea:!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 B(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Oa=b.comment;this.cb=b;this.exports={};this.m=this.bindings={};a=this.id.indexOf(".");0>a?this.ma=this.id:(this.na=this.id.substr(0,a),this.ma=this.id.substr(a+1));this.c={ready:!1,sa:!1,Fa:!1,C:!1,error:!1};this.ua=null;this.c.error=!1;this.v=this.f=this.o=this.u=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.l[b]||(this.l[b]=c,c.onclick=function(a){return function(){a.l.print&&(a.l.print.value="")}}(this)),!0;case "print":return this.l[b]||(this.ba=this.l[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.Ea?(a.c.ra=!1,a.c.Ea=!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};
k.U=function(a,b,c){switch(b){case "clear":return this.m[b]||(this.m[b]=c,c.onclick=function(a){return function(){a.m.print&&(a.m.print.value="")}}(this)),!0;case "print":return this.m[b]||(this.ba=this.m[b]=c,c.value="",this.M=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.M(a,this.ma)}),!0;default:return!1}};k.log=function(){};k.M=function(){};
k.status=function(a){this.M(this.ma+": "+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.ua=b);return a.c.ready}function K(a){if(!a.c.error&&(a.c.ready=!0,a.c.ready)){var b=a.ua;a.ua=null;b&&b()}}function Sa(a,b){a.c.Fa?(a.c.sa=!1,a.c.Fa=!1):a.c.error?a.M(a.toString()+" error"):a.c.sa=b}k.V=function(){return this.c.C=!0};k.P=function(a,b){b&&(this.c.C=!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,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.m={};this.a={START:[1,1,!0,!1,this.lb],STEP:[1,1,!1,!1,this.mb],ENABLE:[1,1,!1,!1,this.gb],CONT:[1,1,!0,!1,this.eb],DEP:[0,0,!0,!1,this.fb],EXAM:[1,1,!0,!1,this.hb],LOAD:[1,1,!0,!1,this.jb],TEST:[0,0,!0,!1,this.ib]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.kb,a];this.v=this.f=this.o=this.s=null;this.exports={hold:this.cb,toggle:this.vb,reset:this.rb,
set:this.ub};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.l[b]=c,this.D++,!0;default:return"led"==a||"rled"==a?(this.l[b]=c,this.m[b]=d?1:0,this.D++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.l[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.rb=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.l[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function eb(a,b){for(var c in a.m)jb(a,c,null!=b?b:a.m[c])}function kb(a,b,c){if(a=a.l[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.cb=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.ub=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 ib(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,kb(this,a,c[1]),!0):!1};k.vb=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.lb=function(a){a||this.f.c.A||(this.f.g=this.b%M,this.a[ob]&&this.a[ob][1]&&pb(this.f))};k.mb=function(){};k.gb=function(a){a||P(this.f)};k.eb=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.Ea=!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.fb=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.j(this.b,a))};k.hb=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.i(this.b);bb(this,this.h=a)}};k.jb=function(a){a||this.f.c.A||hb(this,this.g)};k.ib=function(a){a?(this.u=!0,eb(this,!0)):(this.u=!1,eb(this),ib(this,0))};k.kb=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.m[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.m[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.m=this.u/16384|0;this.h=0;this.a=[];a=new R(this);wb(a);this.a=Array(this.m);for(b=0;b<this.m;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.l(c,b&16383,b);a.h--}
function xb(a){for(var b=0,c=[],d=0;d<a.m;d++){var e=a.a[d];if(e.Fa||e.bb){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.i=this.o=this.Ga;this.j=this.l=this.Ia;this.f=this.b=0;wb(this);this.Fa=this.bb=!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.Fa=!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.i=b[0]||a.Ga);if(c||void 0===c)a.o=b[0]||a.Ga}function Lb(a,b,c){c&&a.b||(a.j=!a.s&&b[1]||a.Ia);if(c||void 0===c)a.l=b[1]||a.Ia}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.Ga=function(){var a=this.v;a.h||P(a.f);return-1};k.Ia=function(){};k.pb=function(a){return this.a[a]};k.yb=function(a,b){this.a[b]!=a&&(this.a[b]=a,this.Fa=!0)};k.nb=function(a,b){return this.o(a,b)};k.xb=function(a,b,c){this.s||this.l(a,b,c)};
var Fb=0,Gb=2,Bb=["NONE","RAM","ROM"],Eb=0,Jb=[],Ib=[R.prototype.pb,R.prototype.yb],Mb=[R.prototype.nb,R.prototype.xb];
function Nb(a,b){B.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.xa=0;this.Ca=b;this.W=c;this.Aa=Math.round(this.Ca/1E4)/100;this.O=this.Aa*this.W;this.Ba=this.fa=this.X=this.pa=0;this.c.A=this.c.Ha=!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.Pa=this.sb.bind(this);this.K=this.u=this.G=this.I=this.m=this.ja=this.D=this.ca=this.Da=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.l[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.l.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.Ra=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.Ra()|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.l[b]=c,!0;case "run":return this.l[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.l[b]=
c,!0;case "setSpeed":return this.l[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.Aa);a.Ba=Math.round(1E3/Ub);a.fa=Math.floor(a.Ca/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.Da=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.Aa*a.W;if(a.O!=b){a.O=b;b=a.O.toFixed(2)+"Mhz";var d=a.l.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.m=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.sb=function(){if(this.c.A){this.pa>=this.Ca&&Tb(this,!0);this.ca=0;this.ja=D();if(this.D){var a=this.ja-this.D;a>this.Ba&&(this.m+=a,this.m>this.ja&&(this.m=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.Da>=Xb&&(this.s&&Q(this.s,void 0),this.Da=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.Pa;this.D=D();c=this.Ba;this.ca&&(c=Math.round(c*this.ca/this.fa));c-=this.D-this.ja;if(d=this.D-this.m)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.m-=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.Ha=!0;if(b=a.l.run)b.textContent="Halt";a.s&&a.s.start(a.m,Rb(a));a.v||a.status("Started");setTimeout(a.Pa,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.l.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.Ya=b;this.Ma=+a.addrReset||0;this.Za=Zb.bind(this);this.a=T.bind(this);this.ha=null;this.La=[];this.c.complete=!1}n(Yb,Nb);k=Yb.prototype;k.reset=function(){this.status("Model "+this.Ya);this.c.A&&P(this);this.b=this.w=this.qa=0;this.g=this.za=this.Ma;this.Oa=this.Xa=this.ya=!1;this.ia=this.g;this.h=0;this.i=this.ob;this.j=this.zb;this.ha=null;Pb(this);this.c.error=!1;Nb.prototype.reset.call(this)};k.Ra=function(){return 0};
k.save=function(){var a=new O(this);a.set(0,[this.b,this.w,this.qa,this.g,this.za,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.za=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.La.length;d++){var e=this.La[d];if(e.wb===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};k.abs=function(a){a>Wa&&(a!=Xa?a=Ya-a:this.Oa=this.ya=!0);return a};function ac(a,b){b?b==Xa?a.Oa=a.ya=!0:b=Ya-b:a.Xa=a.ya=!0;return b}function $b(a){var b=[];for(a=a.ha;a;)b.push(a.wb),a=a.next;return b}k.ob=function(a){var b=this.o;a=this.ia=a;return b.a[(a&b.g)>>>b.b].i(a&16383,a)};k.zb=function(a,b){var c=this.o;a=this.ia=a;c.a[(a&c.g)>>>c.b].j(b,a&16383,a)};
k.wa=function(a){this.c.complete=!0;var b=a?this.c.Ha?0:1:-1;this.c.Ha=!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.i(this.b):this.qa=this.i(this.za=this.g);this.w&=8388607;this.b=this.w&262143;if(a=this.w>>18&15)this.b=this.b+this.i(a)&Ta;this.w&4194304?a=-1:(this.g=(this.g+1)%M,a=this.qa/Za|0);0<=a&&this.Za(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,a&15)}function U(a){this.a(a)}function cc(a,b){var c=this.i(this.b),d=this.i(b);this.j(b,V(a,d,c)+(c-(c&262143)))}function dc(a,b){var c=this.i(b);this.j(b,V(a,c,0))}function ec(a,b){b=this.i(b);var c=this.i(this.b);this.j(this.b,V(a,c,b)+(b-(b&262143)))}
function fc(a,b){var c=this.i(this.b),d=c;if(a&=384)switch(d-=d&262143,a){case 256:d+=262143;break;case 384:d+=c>Wa?262143:0}c=d;this.j(this.b,c);b&&this.j(b,c)}function gc(a,b){var c=(this.i(this.b)&262143)*N,d=this.i(b);this.j(b,V(a,d,c)+c)}function hc(a,b){var c=this.b*N,d=this.i(b);this.j(b,V(a,d,c)+c)}function ic(a,b){b=(this.i(b)&262143)*N;var c=this.i(this.b);this.j(this.b,V(a,c,b)+b)}function jc(a,b){var c=this.i(this.b),d=(c&262143)*N,c=V(a,c,d)+d;this.j(this.b,c);b&&this.j(b,c)}
function kc(a,b){var c=this.i(this.b)&262143,d=this.i(b);this.j(b,W(a,d,c)+c)}function lc(a,b){var c=this.i(b);this.j(b,W(a,c,this.b)+this.b)}function mc(a,b){b=this.i(b)&262143;var c=this.i(this.b);this.j(this.b,W(a,c,b)+b)}function nc(a,b){var c=this.i(this.b),d=c;if(a&=384)switch(d&=262143,a){case 256:d+=262143*N;break;case 384:d+=c>Va?262143*N:0}c=d;this.j(this.b,c);b&&this.j(b,c)}function oc(a,b){var c=this.i(this.b)/N|0,d=this.i(b);this.j(b,W(a,d,c)+c)}
function pc(a,b){var c=this.i(b);this.j(b,W(a,c,0))}function qc(a,b){b=this.i(b)/N|0;var c=this.i(this.b);this.j(this.b,W(a,c,b)+b)}function rc(a,b){var c=this.i(this.b),d=c/N|0,c=W(a,c,d)+d;this.j(this.b,c);b&&this.j(b,c)}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)},
var I="pdp10",L="PDPjs",Ta=Math.pow(2,18),Ua=Math.pow(2,18)-1,Va=Math.pow(2,36),M=Math.pow(2,18),Wa=Math.pow(2,17)-1,Xa=Math.pow(2,35)-1,Ya=Math.pow(2,35),Za=Math.pow(2,36),$a=Math.pow(2,23),ab=Math.pow(2,30),I="pdp10",L="PDPjs";
function bb(a,b){B.call(this,"Panel",a);this.B=this.D=0;this.R=b;this.b=this.w=this.g=this.i=0;this.G=this.I=-1;this.K=this.L=this.s=!1;this.O=cb;this.l={};this.a={START:[1,1,!0,!1,this.nb],STEP:[1,1,!1,!1,this.ob],ENABLE:[1,1,!1,!1,this.ib],CONT:[1,1,!0,!1,this.gb],DEP:[0,0,!0,!1,this.hb],EXAM:[1,1,!0,!1,this.jb],LOAD:[1,1,!0,!1,this.lb],TEST:[0,0,!0,!1,this.kb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.mb,a];this.v=this.f=this.o=this.u=null;this.exports={hold:this.fb,toggle:this.xb,reset:this.tb,
set:this.wb};K(this)}n(bb,B);k=bb.prototype;k.reset=function(a){this.stop();a&&N(this,this.i=0)};
k.U=function(a,b,c,d){if(this.u&&this.u.U(a,b,c,d)||this.f&&this.f.U(a,b,c,d))return!0;switch(b){case "PC":return this.m[b]=c,this.D++,!0;default:return"led"==a||"rled"==a?(this.m[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.m[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){db(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){eb(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){db(a,
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){eb(a,b)}}(this,b),!0):B.prototype.U.call(this,a,b,c,d)}};k.Z=function(a,b,c,d){this.u=a;this.o=b;this.f=c;this.v=d;fb(this);gb(this)};k.V=function(a,b){if(!b)if(this.R&&hb(),!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.i,this.g]);return a.data()};
k.restore=function(a){if(a=a[0])ib(this,this.b=a[0]),N(this,this.i=a[1]),jb(this,a[2]);return!0};k.tb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}gb(this);return!0};function kb(a,b,c){if(a=a.m[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function fb(a,b){for(var c in a.l)kb(a,c,null!=b?b:a.l[c])}function lb(a,b,c){if(a=a.m[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function gb(a){for(var b in a.a)lb(a,b,a.a[b][1])}
k.fb=function(a,b,c){if(db(this,b)){if(c){var d=this;setTimeout(function(){eb(d,b);a&&a()},+c);return!1}eb(this,b)}return!0};
k.wb=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 jb(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,lb(this,a,c[1]),!0):!1};k.xb=function(a){return db(this,a)?(eb(this,a),!0):!1};function db(a,b){var c=a.a[b];return c?(lb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=mb&&(a.K=b==nb,a.L=b==ob),!0):!1}function eb(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(lb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
k.nb=function(a){a||this.f.c.A||(this.f.i=this.b%Ta,this.a[pb]&&this.a[pb][1]&&qb(this.f))};k.ob=function(){};k.ib=function(a){a||P(this.f)};k.gb=function(a){if(!a&&!this.f.c.A)if(this.a[pb]&&this.a[pb][1])qb(this.f);else{a=this.v;var b;if(b=a)a.c.sa&&(a.c.Fa=!0),b=!a.c.sa;if(b)Sa(a,!0),a.b(0,null),Sa(a,!1);else try{var c=this.f.xa(1);0<c&&(rb(this.f,c),sb(this.f,c,!0),tb(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.u&&Q(this.u)}};
k.hb=function(a){a&&!this.f.c.A&&(this.K&&ub(this),a=N(this,this.i=this.g),this.O==cb?vb(this.o,this.b,a):this.f.j(this.b,a))};k.jb=function(a){if(!a&&!this.f.c.A){this.L&&ub(this);if(this.O==cb){a=this.o;var b=this.b,c=a.a[(b&a.g)>>>a.b];a.i++;b=c.o(b&16383,b);a.i--;a=b}else a=this.f.h(this.b);N(this,this.i=a)}};k.lb=function(a){a||this.f.c.A||ib(this,this.g)};k.kb=function(a){a?(this.s=!0,fb(this,!0)):(this.s=!1,fb(this),jb(this,0))};k.mb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
function ub(a){var b=1,c=a.o.g;a.a[mb]&&a.a[mb][1]||(b=-b);ib(a,a.b&~c|a.b+b&c)}function ib(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.s||kb(d,e,f)}}}function N(a,b){a.w=b%Va;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.s||kb(d,e,f)}}return a.w}function jb(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;gb(a);return!0}k.stop=function(){ib(this,this.f.i)};
function hb(){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 bb(d,!0));H(e,c)}}var cb=7,nb="DEP",pb="ENABLE",ob="EXAM",mb="STEP";y(hb);function wb(a,b,c){B.call(this,"Bus",a);this.f=b;this.v=c;this.w=+a.busWidth||18;this.s=1<<this.w;this.g=this.s-1;this.b=Math.log2(16384);this.l=this.s/16384|0;this.i=0;this.a=[];a=new R(this);xb(a);this.a=Array(this.l);for(b=0;b<this.l;b++)this.a[b]=a;K(this)}n(wb,B);k=wb.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,yb(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 zb(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.wa+=h.aa-e,h.aa=e,!0;if(e>=h.aa+h.wa){p=h.size-(e-l);p>f&&(p=f);h.wa=e-h.aa+p;e=l+16384;f-=p;g++;continue}}return Ab(Bb,e,f)}e=new R(a,e,p,16384,d);xb(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Cb[d]+" at "+ma(b)),!0):Ab(Db,b,c)}function vb(a,b,c){var d=a.a[(b&a.g)>>>a.b];a.i++;d.m(c,b&16383,b);a.i--}
function yb(a){for(var b=0,c=[],d=0;d<a.l;d++){var e=a.a[d];if(e.Ga||e.eb){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 Ab(a,b,c){x("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Bb=1,Db=2;function Eb(a){B.call(this,"Device",a)}n(Eb,B);k=Eb.prototype;k.Z=function(a,b,c,d){this.o=b;this.u=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 Eb(c),H(c,d)}}});
function R(a,b,c,d,e){this.v=a;this.id=Fb+=2;this.aa=b;this.wa=c;this.size=d||0;this.type=e||Gb;this.u=e==Hb;this.h=this.o=this.Ha;this.j=this.m=this.Ja;this.b=this.f=0;xb(this);this.Ga=this.eb=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Ib(this,Jb)}else Ib(this)}k=R.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.Ga=!0):!1};function Ib(a,b){b||(b=Kb);Lb(a,b,void 0);Mb(a,b,void 0)}
function Lb(a,b,c){c&&a.b||(a.h=b[0]||a.Ha);if(c||void 0===c)a.o=b[0]||a.Ha}function Mb(a,b,c){c&&a.f||(a.j=!a.u&&b[1]||a.Ja);if(c||void 0===c)a.m=b[1]||a.Ja}function xb(a,b){a.b=a.f=0;b&&((a.b=b.b)&&Lb(a,Nb,!1),(a.f=b.f)&&Mb(a,Nb,!1))}k.Ha=function(){var a=this.v;a.i||P(a.f);return-1};k.Ja=function(){};k.rb=function(a){return this.a[a]};k.Ab=function(a,b){this.a[b]!=a&&(this.a[b]=a,this.Ga=!0)};k.pb=function(a,b){return this.o(a,b)};k.zb=function(a,b,c){this.u||this.m(a,b,c)};
var Gb=0,Hb=2,Cb=["NONE","RAM","ROM"],Fb=0,Kb=[],Jb=[R.prototype.rb,R.prototype.Ab],Nb=[R.prototype.pb,R.prototype.zb];
function Ob(a,b){B.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.ya=0;this.Da=b;this.X=c;this.Ba=Math.round(this.Da/1E4)/100;this.R=this.Ba*this.X;this.Ca=this.ha=this.ca=this.qa=0;this.c.A=this.c.Ia=!1;this.c.J=a.autoStart;"string"==typeof this.c.J&&(this.c.J="true"==this.c.J);this.c.ta=!1;this.oa=this.W=0;this.pa=+a.csStart;this.fa=+a.csInterval;this.ga=+a.csStop;this.D=[];this.Qa=this.ub.bind(this);this.L=this.B=this.I=this.K=this.w=this.ea=this.G=this.da=this.Ea=this.O=0;this.la=
null;K(this)}n(Ob,B);k=Ob.prototype;k.Z=function(a,b,c,d){this.u=a;this.o=b;this.v=d;this.la=a.g;for(a=0;a<Pb.length;a++)(b=this.m[Pb[a]])&&this.u.U(null,Pb[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.u,"autoStart");null!=c?this.c.J="true"==c?!0:"false"==c?!1:!!c:null==this.c.J&&(this.c.J=void 0===this.m.run);if(!b){if(a){Qb(this);if(!this.restore(a))return!1;Rb(this)}else this.reset();this.status("No debugger detected");this.c.J||this.M("CPU will not be auto-started "+(this.la?"(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?(qb(this),!0):!1};k.Ta=function(){return 0};
function Rb(a){void 0===a.pa&&(a.pa=0);void 0===a.fa&&(a.fa=-1);void 0===a.ga&&(a.ga=-1);a.c.ta=0<=a.pa&&0<a.fa;a.c.ta&&(a.oa=0,a.W=a.pa-a.L)}function tb(a,b){if(a.c.ta){var c=!1;a.oa=a.oa+a.Ta()|0;a.W-=b;0>=a.W&&(a.W+=a.fa,c=!0);0<=a.ga&&a.ga<=Sb(a)&&(a.fa=a.ga=-1,Rb(a),P(a),c=!0);c&&a.M(Sb(a)+" cycles: checksum="+t(a.oa))}}
k.U=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.m[b]=c,!0;case "run":return this.m[b]=c,c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.c.C)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.C);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.c.ready?"powered yet":"ready yet"+(b.ua?" (waiting for notification)":""))+".");a=!1}a&&(d.c.A?P(d):qb(d))},!0;case "speed":return this.m[b]=
c,!0;case "setSpeed":return this.m[b]=c,c.onclick=function(){Tb(d,d.X<<1,!0)},c.textContent=this.R.toFixed(2)+"Mhz",!0}return!1};function sb(a,b,c){a.L+=b;c&&(a.I=a.K=0)}function Ub(a,b){var c=1;b&&1<a.X&&a.O&&(c=a.O/a.Ba);a.Ca=Math.round(1E3/Vb);a.ha=Math.floor(a.Da/Vb*c);b||(a.ca=a.ha);a.qa=0}function Sb(a){return a.L+a.B+a.I-a.K}function Qb(a){a.O=0;a.Ea=0;a.L=a.B=a.I=a.K=0;Rb(a);Tb(a,1)}
function Tb(a,b,c){if(void 0!==b){.8>a.O/a.R&&(b=1);a.X=b;b=a.Ba*a.X;if(a.R!=b){a.R=b;b=a.R.toFixed(2)+"Mhz";var d=a.m.setSpeed;d&&(d.textContent=b);a.M("target speed: "+b)}c&&a.u&&(c=a.u,c.ba&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.ba.focus(),window&&window.scrollTo(b,d)))}sb(a,a.B);a.B=0;a.w=D();a.G=0;Ub(a)}function Wb(a){for(var b=[],c=0;c<a.D.length;c++)b.push(a.D[c][0]);return b}
function rb(a,b){for(var c=a.D.length-1;0<=c;c--){var d=a.D[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Xb(a,b){var c=a.I-=a.K;a.K=0;b&&(a.I=0);return c}
k.ub=function(){if(this.c.A){this.qa>=this.Da&&Ub(this,!0);this.da=0;this.ea=D();if(this.G){var a=this.ea-this.G;a>this.Ca&&(this.w+=a,this.w>this.ea&&(this.w=this.ea))}try{do{for(var b,c=this.c.ta?1:this.ha,d=this.D.length-1;0<=d;d--){var e=this.D[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.xa(b)}catch(f){if("number"!=typeof f)throw f;}b=Xb(this,!0);this.da+=b;this.B+=b;tb(this,b);rb(this,b);this.ca-=b;if(0>=this.ca){this.ca+=this.ha;++this.Ea>=Yb&&(this.u&&Q(this.u,void 0),this.Ea=0);break}}while(this.c.A)}catch(f){P(this);
this.u&&this.u.stop(D(),Sb(this));a=f.stack||f.message;this.c.error=!0;this.F(a);return}if(this.c.A){a=setTimeout;b=this.Qa;this.G=D();c=this.Ca;this.da&&(c=Math.round(c*this.da/this.ha));c-=this.G-this.ea;if(d=this.G-this.w)this.O=Math.round(this.B/(10*d))/100,864E5<=d&&(this.L=0,Tb(this));if(0>c||this.O<this.R)-1E3>c&&(this.w-=c),c=0;this.qa+=this.da;this.G+=c;a(b,c)}}};
function qb(a){var b;a.c.error?(a.M(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.c.A)a.M(a.toString()+" busy");else{Tb(a);a.c.A=!0;a.c.Ia=!0;if(b=a.m.run)b.textContent="Halt";a.u&&a.u.start(a.w,Sb(a));a.v||a.status("Started");setTimeout(a.Qa,0)}}k.xa=function(){return 0};function P(a){var b=!1;if(a.c.A){Xb(a);sb(a,a.B);a.B=0;a.c.A=!1;if(b=a.m.run)b.textContent="Run";a.u&&a.u.stop(D(),Sb(a));b=!0;a.v||a.status("Stopped")}a.c.complete=void 0;return b}var Vb=30,Yb=15,Pb=["power","reset"];
function Zb(a){var b=+a.model||1001;Ob.call(this,a,1E6);this.bb=b;this.Na=+a.addrReset||0;this.Va=$b.bind(this);this.a=T.bind(this);this.ja=null;this.Ma=[];this.c.complete=!1}n(Zb,Ob);k=Zb.prototype;k.reset=function(){this.status("Model "+this.bb);this.c.A&&P(this);this.b=this.s=this.ra=0;this.i=this.Aa=this.Na;this.Pa=this.$a=this.za=!1;this.l=this.Ra=-1;this.ka=this.i;this.g=0;this.h=this.qb;this.j=this.Bb;this.ja=null;Qb(this);this.c.error=!1;Ob.prototype.reset.call(this)};k.Ta=function(){return 0};
k.save=function(){var a=new O(this);a.set(0,[this.b,this.s,this.l,this.Ra,this.ra,this.i,this.Aa,this.ka,this.g]);a.set(1,[]);a.set(2,[this.L,this.X,this.c.J]);a.set(3,ac(this));a.set(4,Wb(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.s=b.next().value;this.l=b.next().value;this.Ra=b.next().value;this.ra=b.next().value;this.i=b.next().value;this.Aa=b.next().value;this.ka=b.next().value;this.g=b.next().value;b=a[2];this.L=b[0];Tb(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.Ma.length;d++){var e=this.Ma[d];if(e.yb===b[c]){d=e;break a}}d=null}d&&(d.next=this.ja,this.ja=d)}a=
a[4];for(b=0;b<this.D.length&&b<a.length;b++)this.D[b][0]=a[b];return!0};function bc(a){a.i=(a.i+-1)%Ta}k.abs=function(a){a>Xa&&(a!=Ya?a=Za-a:this.Pa=this.za=!0);return a};function cc(a,b){b?b==Ya?a.Pa=a.za=!0:b=Za-b:a.$a=a.za=!0;return b}function ac(a){var b=[];for(a=a.ja;a;)b.push(a.yb),a=a.next;return b}k.qb=function(a){var b=this.o;a=this.ka=a;return b.a[(a&b.g)>>>b.b].h(a&16383,a)};k.Bb=function(a,b){var c=this.o;a=this.ka=a;c.a[(a&c.g)>>>c.b].j(b,a&16383,a)};
k.xa=function(a){this.c.complete=!0;var b=a?this.c.Ia?0:1:-1;this.c.Ia=!1;this.I=this.K=a;this.g=this.g&-5|0;do{if(a=this.g)if(a=this.g&11)this.g&2?this.ja||(this.g&=-3):this.g&1&&this.g++,a=!1;if(a){if(this.g&4&&this.v.i(this.i,b)){P(this);break}if(0>b)break}this.g&=15;this.s=this.s&4194304?this.h(this.b):this.ra=this.h(this.Aa=this.i);this.s&=8388607;this.b=this.s&262143;if(a=this.s>>18&15)this.b=this.b+this.h(a)&Ua;this.s&4194304?a=-1:(this.i=(this.i+1)%Ta,a=this.ra/$a|0);0<=a&&this.Va(a)}while(0<
this.K);return this.c.complete?this.I-this.K:!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 Zb(d);H(d,c)}});function $b(a){dc[a>>4].call(this,a,a&15)}function U(a){this.a(a)}function ec(){var a=this.h(this.b),b=a/ab&63,c=a>>24&63,b=b-c;0>b&&(b=36-c,a++);a=b*ab+(c<<24)+(a&16777215);this.j(this.b,a)}
function fc(a,b){a=this.h(this.b);if(0>this.l)this.l=a,this.s=this.b|4194304,bc(this);else{var c=this.l/ab&63,d=this.l>>24&63;a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.j(b,a);this.l=-1}}function gc(a,b){a=this.h(this.b);if(0>this.l)this.l=a,this.s=this.b|4194304,bc(this);else{var c=this.l/ab&63,d=this.l>>24&63;b=this.h(b)%Math.pow(2,d)*Math.pow(2,c);a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.j(this.b,a);this.l=-1}}
function hc(a,b){var c=this.h(this.b),d=this.h(b);this.j(b,V(a,d,c)+(c-(c&262143)))}function ic(a,b){var c=this.h(b);this.j(b,V(a,c,0))}function jc(a,b){b=this.h(b);var c=this.h(this.b);this.j(this.b,V(a,c,b)+(b-(b&262143)))}function kc(a,b){var c=this.h(this.b),d=c;if(a&=384)switch(d-=d&262143,a){case 256:d+=262143;break;case 384:d+=c>Xa?262143:0}c=d;this.j(this.b,c);b&&this.j(b,c)}function lc(a,b){var c=(this.h(this.b)&262143)*M,d=this.h(b);this.j(b,V(a,d,c)+c)}
function mc(a,b){var c=this.b*M,d=this.h(b);this.j(b,V(a,d,c)+c)}function nc(a,b){b=(this.h(b)&262143)*M;var c=this.h(this.b);this.j(this.b,V(a,c,b)+b)}function oc(a,b){var c=this.h(this.b),d=(c&262143)*M,c=V(a,c,d)+d;this.j(this.b,c);b&&this.j(b,c)}function pc(a,b){var c=this.h(this.b)&262143,d=this.h(b);this.j(b,W(a,d,c)+c)}function qc(a,b){var c=this.h(b);this.j(b,W(a,c,this.b)+this.b)}function rc(a,b){b=this.h(b)&262143;var c=this.h(this.b);this.j(this.b,W(a,c,b)+b)}
function sc(a,b){var c=this.h(this.b),d=c;if(a&=384)switch(d&=262143,a){case 256:d+=262143*M;break;case 384:d+=c>Wa?262143*M:0}c=d;this.j(this.b,c);b&&this.j(b,c)}function tc(a,b){var c=this.h(this.b)/M|0,d=this.h(b);this.j(b,W(a,d,c)+c)}function uc(a,b){var c=this.h(b);this.j(b,W(a,c,0))}function vc(a,b){b=this.h(b)/M|0;var c=this.h(this.b);this.j(this.b,W(a,c,b)+b)}function wc(a,b){var c=this.h(this.b),d=c/M|0,c=W(a,c,d)+d;this.j(this.b,c);b&&this.j(b,c)}function X(a){this.a(a)}
function T(a){this.M("undefined opcode: "+ma(a));bc(this);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*M;break;case 384:b=c>Wa?262143*M: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>Xa?262143:0}return b}
var dc=[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)},ec,function(a,b){0>this.l&&ec.call(this);fc.call(this,0,b)},fc,function(a,b){0>this.l&&ec.call(this);gc.call(this,0,b)},gc,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a,b){this.j(b,this.i(this.b))},function(a,b){this.j(b,this.b)},function(a,b){this.j(this.b,this.i(b))},function(a,b){b&&this.j(b,this.i(this.b))},function(a,b){a=this.i(this.b);a=a/N|(a&262143)*N;this.j(b,a)},function(a,b){this.j(b,this.b*N)},function(a,b){a=this.i(b);a=a/N|(a&262143)*N;this.j(this.b,a)},function(a,b){a=this.i(this.b);a=a/N|(a&262143)*N;this.j(this.b,a);b&&this.j(b,a)},function(a,
b){this.j(b,ac(this,this.i(this.b)))},function(a,b){this.j(b,this.b?Ya-this.b:0)},function(a,b){this.j(this.b,ac(this,this.i(b)))},function(a,b){a=ac(this,this.i(this.b));this.j(this.b,a);b&&this.j(b,a)},function(a,b){this.j(b,this.abs(this.i(this.b)))},function(a,b){this.j(b,this.b)},function(a,b){this.j(this.b,this.abs(this.i(b)))},function(a,b){a=this.abs(this.i(this.b));this.j(this.b,a);b&&this.j(b,a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(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,b){a=this.i(b);this.j(b,this.i(this.b));this.j(this.b,
a)},function(a,b){a=!1;for(var c=this.i(b),d=c/N|0,c=c&262143;!a;)this.j(c,this.i(d)),c==this.b&&(a=!0),d=d+1&262143,c=c+1&262143,this.c.A||(this.j(b,d*N+c),a||(this.g=(this.g+-1)%M),a=!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,b){a=this.i(b);a+=262145;this.j(a&262143,this.i(this.b));a>=Ua&&(a-=Ua);this.j(b,a)},function(a,b){a=this.i(b);var c=this.i(a&262143);this.j(this.b,c);this.b==b&&
(a=c);a-=262145;0>a&&(a+=Ua);this.j(b,a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a,b){this.j(b,this.h(this.b))},function(a,b){this.j(b,this.b)},function(a,b){this.j(this.b,this.h(b))},function(a,b){b&&this.j(b,this.h(this.b))},function(a,b){a=this.h(this.b);a=a/M|(a&262143)*M;this.j(b,a)},function(a,b){this.j(b,this.b*M)},function(a,b){a=this.h(b);a=a/M|(a&262143)*M;this.j(this.b,a)},function(a,b){a=this.h(this.b);a=a/M|(a&262143)*M;this.j(this.b,a);b&&this.j(b,a)},function(a,
b){this.j(b,cc(this,this.h(this.b)))},function(a,b){this.j(b,this.b?Za-this.b:0)},function(a,b){this.j(this.b,cc(this,this.h(b)))},function(a,b){a=cc(this,this.h(this.b));this.j(this.b,a);b&&this.j(b,a)},function(a,b){this.j(b,this.abs(this.h(this.b)))},function(a,b){this.j(b,this.b)},function(a,b){this.j(this.b,this.abs(this.h(b)))},function(a,b){a=this.abs(this.h(this.b));this.j(this.b,a);b&&this.j(b,a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(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,b){a=this.h(b);this.j(b,this.h(this.b));this.j(this.b,
a)},function(a,b){a=!1;for(var c=this.h(b),d=c/M|0,c=c&262143;!a;)this.j(c,this.h(d)),c==this.b&&(a=!0),d=d+1&262143,c=c+1&262143,this.c.A||(this.j(b,d*M+c),a||bc(this),a=!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,b){a=this.h(b);a+=262145;this.j(a&262143,this.h(this.b));a>=Va&&(a-=Va);this.j(b,a)},function(a,b){a=this.h(b);var c=this.h(a&262143);this.j(this.b,c);this.b==b&&(a=c);a-=262145;
0>a&&(a+=Va);this.j(b,a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(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)},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,pc,qc,rc,sc,tc,uc,vc,wc,pc,qc,rc,sc,tc,uc,vc,wc,pc,qc,rc,sc,tc,uc,vc,wc,pc,qc,rc,sc,tc,uc,vc,wc,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(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 sc(a){B.call(this,"ROM",a);this.N=this.a=null;this.m=+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.m,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.m;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.m>>>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.m=na(this.a);if(this.a){a=this.a;var b=oa(this.m);"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.m+'"'):a.F('Error loading image "'+a.m+'"')}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.l(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.Ma=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.l[b])&&this.U(null,a,b))}this.a=this.m=null;this.exports={connect:this.Sa,receiveData:this.ua,receiveStatus:this.qb,setConnection:this.tb}}n(wc,B);k=wc.prototype;
k.U=function(a,b,c){var d=this;switch(b){case xc:return this.l[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.Ka:q.Wa:46==c?b=q.Ka:a.ctrlKey&&c>=q.Ja&&c<=q.$a&&(b=c-(q.Ja-q.Ta));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.Va&&(b=q.Ua);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.Sa=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.m=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.Sa(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.qb=function(){};k.tb=function(a,b){return this.a?!1:(this.a=a,this.m=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.m=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.l.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.m=new O(this,"1.34.2",Kc);Z(this.m)&&(Lc(this,d),a=Mc,Nc(this.m));this.m.set(Hc,ta());Oc(this.m);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.Qa,b):this.Qa(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.Na){var g=b.Na.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.Qa=function(a){var b=a[0],c=0>a[1];a=a[2];this.O=!0;this.c.B=!0;var d=this.l.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.m&&(this.m.clear(),delete this.m);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.l.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)};
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(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 xc(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.i=a.file;this.s=na(this.i);if(this.i){a=this.i;var b=oa(this.s);"json"!=b&&"hex"!=b&&(a=u()+"/api/v1/dump?file="+this.i+"&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.i=null):(Ia(c.na,a,b),(a=ua(a,b))?(c.a=a.H,c.N=a.N):c.i=null);yc(c)})}}n(xc,B);
xc.prototype.Z=function(a,b,c,d){this.o=b;this.f=c;this.v=d;yc(this)};xc.prototype.V=function(){this.N&&(this.v&&this.v.a(this.id,this.l,this.g,this.N),delete this.N);return!0};xc.prototype.P=function(){return!0};
function yc(a){if(!Ra(a)){if(a.i){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(zb(a.o,b,a.g,Hb)){var c;for(c=0;c<a.a.length;c++)vb(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 xc(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.i=this.s=!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.na,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);zc(c)})}}n(Y,B);Y.prototype.Z=function(a,b,c,d){this.o=b;this.f=c;this.v=d;zc(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 zc(a){if(a.o&&(!a.i&&a.g&&(zb(a.o,a.b,a.g,1)?a.i=!0:a.g=0),!Ra(a))){if(!a.i)x("No RAM allocated");else if(a.a){if(!a.Y)return;Ac(a,a.Y,a.T,a.S,a.b)?a.status('Loaded image "'+a.l+'"'):a.F('Error loading image "'+a.l+'"')}a.s=!0;K(a)}}
Y.prototype.reset=function(){if(this.i&&!this.s){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.m(g,d,e.aa+d);c-=16384;b++;d=0}this.Y&&Ac(this,this.Y,this.T,this.S,this.b,!this.v)}this.s=!1};
function Ac(a,b,c,d,e,f){var g=!1;null==c&&(c=e);if(null!=c){for(g=0;g<b.length;g++)vb(a.o,c+g,b[g]);g=!0}g&&(null==d&&(P(a.f),f=!1),null!=d&&(a=a.f,a.Na=d,a.i=d%Ta,f?a.c.C?a.c.A||qb(a):a.c.J=!0:a.v&&a.c.C?P(a)||a.u.c.reset||(a.v.g(),Q(a.u,-1)):!1===f&&P(a),!a.c.A&&a.la&&a.la.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 Bc(a){B.call(this,"SerialPort",a);this.i=a.upperCase;"string"==typeof this.i&&(this.i="true"==this.i);this.g=!0;this.b=[];var b=a.binding;if("console"!=b){var c;a=Cc;b&&(void 0===c&&(c="Panel"),(c=F(c,this.id))&&(b=c.m[b])&&this.U(null,a,b))}this.a=this.l=null;this.exports={connect:this.Ua,receiveData:this.va,receiveStatus:this.sb,setConnection:this.vb}}n(Bc,B);k=Bc.prototype;
k.U=function(a,b,c){var d=this;switch(b){case Cc:return this.m[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?q.La:q.Za:46==c?b=q.La:a.ctrlKey&&c>=q.Ka&&c<=q.ab&&(b=c-(q.Ka-q.Wa));b&&(a.preventDefault&&a.preventDefault(),d.va(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==q.Ya&&(b=q.Xa);d.va(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.va(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.Z=function(a,b,c,d){this.u=a;this.o=b;this.f=c;this.v=d;K(this)};
k.Ua=function(a){if(!this.a){var b=S(this.u,"connection");if(b){var c=b.split("->");if(2==c.length){var d=sa(c[0]);if(d!=this.ma)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.na+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.V=function(a,b){if(!b)if(this.Ua(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.va=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.sb=function(){};k.vb=function(a,b){return this.a?!1:(this.a=a,this.l=b,!0)};var Cc="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 Bc(d);H(d,c)}});
function Dc(a,b,c){B.call(this,"Computer",a);this.c.C=!1;this.L=null;Ec(this,b);this.I=S(this,"autoPower",a,6);this.i=0;this.W=+a.busWidth||+a.buswidth;this.D=this.s=this.G=null;this.B=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=Fc(this);if(this.f=F("CPU",this.id)){this.v=F("Debugger",this.id);this.o=new wb({id:this.na+".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.M=this.g.M,d.ba=this.g.ba;this.M(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.s=d:this.a=parseInt(d,10));var f;if(a=S(this,"state")||(f=!0,a.state))this.G=b=a,f||(this.B=!0,this.a=Gc),this.a&&(this.w=new O(this,"1.34.2"),Z(this.w)?b=null:delete this.w);!b&&this.a&&
(b=Hc(this))&&(this.B=!0);if(b){var g=this;v(b,null,!0,function(a,b,c){c?(g.s=null,g.B=!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.m.power||(this.I=!0);!c&&this.I&&Ic(this,this.ia)}else x("Unable to find CPU component")}n(Dc,B);function Ec(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){x(d.message+" ("+c+")")}}a.L=b}
function S(a,b,c,d){var e=b.toLowerCase(),e=Aa(b)||Aa(e);void 0===e&&a.L&&(e=a.L[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 Ic(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(){Ic(a,b,c)});return}}b.call(a,c)}
function Jc(a,b){var c=new O(a,"1.34.2",Kc);if(Z(c)&&Lc(c)){var d=c.get(Mc),e=b?b.get(Mc):"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=Dc.prototype;
k.ia=function(a){void 0===a&&(a=this.a||(this.D?Nc:Gc));if(!this.i){this.i++;var b=!1,c=!1;this.K=!1;var d=this.w||new O(this,"1.34.2");if(a==Oc)b=!0;else if(a>Gc){if(Z(d,this.D)){this.l=new O(this,"1.34.2",Pc);Z(this.l)&&(Qc(this,d),a=Rc,Sc(this.l));this.l.set(Mc,ta());Tc(this.l);var e=this.a&&!this.B;if(a==Nc||Ka("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=Lc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
g?(this.F("Error: "+g),"unable to verify user"==g&&(ya(Uc,""),this.b=null)):this.M(f+": "+g),Sc(d),Z(d)?(c=Lc(d),e=!0):c=!1))}e&&Jc(this,c?d:null)}else a==Rc&&d.clear()}else Jc(this);delete this.D;delete this.w}e=E(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=Vc(this,g,d,b,c));b=[d,a,c];a!=Oc?Ic(this,this.Sa,b):this.Sa(b)}};
function Vc(a,b,c,d,e){if(!b.c.C){b.c.C=!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=Gc,window&&window.location.reload()):a.K=!0,b.V(null),e=!1),!d&&b.Oa){var g=b.Oa.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.Sa=function(a){var b=a[0],c=0>a[1];a=a[2];this.O=!0;this.c.C=!0;var d=this.m.power;d&&(d.textContent="Shutdown");this.f&&(Vc(this,this.f,b,c,a),Q(this,-2),this.f.J());this.K&&(Qc(this,b),b.clear());!c&&this.l&&(this.l.clear(),delete this.l);this.i=0};
function Qc(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 Wc(a,b,c){var d,e="none";if(a.i)return null;a.i--;var f=new O(a,"1.34.2"),g=new O(a,"1.34.2",Kc),h=ta();g.set(Mc,h);f.set(Mc,h);f.set(Xc,"1.34.2");f.set(Yc,window?window.location.href:null);f.set(Zc,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.C=!1,!1===d&&(e=null)));for(var h=E(a.id),l=0;l<h.length;l++){var p=h[l];p.c.C&&(p.P&&(d=p.P(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.c.C=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.b&&$c(a,a.b,f.toString()),Tc(g)&&Tc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==ad),d&&f.clear(h)):e=f.toString());c&&(a.c.C=!1,b=a.m.power)&&(b.textContent="Power");a.i=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.l.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.l.PC){var f=a.v&&a.v.m||8,e=e||0,e=8==f?ma(e,void 0):t(e,void 0);a.l.PC.textContent!=e&&(a.l.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.l[b]=c,c.onclick=function(){d.h||(d.c.B?Rc(d,!1,!0):Dc(d,d.ga))},!0;case "reset":return this.l[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.l[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.l=!1;this.key=Yc(a,b,c);Nc(this,a.ab)}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.l=!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.l)try{a.a=JSON.parse(a.f),a.l=!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.l=!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")};
function Q(a,b){if(a.f){var c=a.f,d=b||0,e=c.m.speed;e&&(0>=d||30<=(c.ya+=d))&&(e.textContent=c.c.A?c.O.toFixed(2)+"Mhz":"Stopped",c.ya=0)}if(a.g&&(a=a.g,b=b||0,a.D)){c=a.f.c.A;d=!!(a.f.g&8);if(0>=b||60<=(a.B+=b)){e=a.f.i;if(a.m.PC){var f=a.v&&a.v.l||8,e=e||0,e=8==f?ma(e,void 0):t(e,void 0);a.m.PC.textContent!=e&&(a.m.PC.textContent=e)}a.B=0}-1>b?a.b=a.f.i:0<b&&c&&!d&&(a.b=a.f.ka);ib(a,a.b);N(a,a.i)}}
k.U=function(a,b,c){var d=this;switch(b){case "power":return this.m[b]=c,c.onclick=function(){d.i||(d.c.C?Wc(d,!1,!0):Ic(d,d.ia))},!0;case "reset":return this.m[b]=c,c.onclick=function(){if(d.c.C&&!d.i)if(d.a&&!d.s){var a=Ka("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Wc(d,a,!0);!a&&d.G?window&&window.location.reload():d.ia(Gc)}else d.reset(),d.f&&!d.v&&d.f.J()},!0;case "save":if(pa())c.parentNode.removeChild(c);else return this.m[b]=
c,c.onclick=function(){var a=Fc(d,!0);if(a){var b=!!(d.a&&!d.s||d.G),c=Wc(d,b);b?$c(d,a,c):d.F("Resume disabled, machine state not saved")}},!0}return!1};function Fc(a,b){var c=a.b;c||((c=xa(Uc),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=bd(a,c))||a.F("The user ID is invalid.")):b&&a.F("Browser local storage is not available"));return c}
function bd(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(Uc,b.data),a.b=b.data)}catch(d){x(d.message+" ("+c+")")}return a.b}function Hc(a){var b=null;a.b&&(b=u()+"/api/v1/user?req=load&user="+a.b+"&state="+cd(a,"1.34.2"));return b}
function $c(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=cd(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(Uc,""),a.b=null)}}
var Pc="failsafe",Kc="validate",Mc="timestamp",Xc="version",Yc="url",Zc="browser",Uc="user",Oc=-1,Gc=0,Nc=1,Rc=2,ad=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 Dc(g,d,!0);H(g,f);g.I&&Ic(g,g.ia)}});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.C&&c.ia(Oc)}});
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.C&&Wc(c,!(!c.a||c.s),!0)}});function O(a,b,c){this.id=a.id;this.b="";this.a={};this.f=this.m=!1;this.key=cd(a,b,c);Sc(this,a.cb)}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.b=b,a.f=!0,a.m=!1,!0):a.f?!0:va()&&(b=xa(a.key))?(a.b=b,a.f=!0):!1}
function Lc(a){var b=!0;if(!a.m)try{a.a=JSON.parse(a.b),a.m=!0}catch(c){x(c.message||c),b=!1}return b}function Tc(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.b};function Sc(a,b){a.b="";a.a={};a.f=a.m=!1;b&&a.set("parms",b)}
k.clear=function(a){Sc(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 cd(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 dd=0;
function ed(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)):fd(l,a,b,c,d,e,f,g)})}
function fd(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?gd(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
function gd(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);gd(a,b,c)}})}else c(a,null)}
function hd(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&&(--dd||A(!0));p=!1}var h,l,p=!0;dd++;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],ka=document.createElement("style");ka.type="text/css";ka.styleSheet?ka.styleSheet.cssText=r:ka.appendChild(document.createTextNode(r));w.appendChild(ka)}d||
(r=a,"pdp"==a.substr(0,3)&&(r="pdpjs"),d="/versions/"+r+"/1.34.2/components.xsl");r=function(e,l){l?ed(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,--dd||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),--dd||
A(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?ed(c,b,a,e,!0,f,r):fd(c,null,b,a,e,!1,f,r)}else g("missing machine element: "+b)}catch(id){g(id.message)}return p}window.embedPDP10=function(a,b,c,d){A(!1);return hd("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){A(!1);return hd("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