Implemented my first 4 PDP-10 opcodes (HLL, HLLI, HLLM, HLLS)

This commit is contained in:
Jeff Parsons 2017-02-26 10:51:49 -08:00 committed by Jeff Parsons
commit ed4c031035
6 changed files with 1428 additions and 1371 deletions

File diff suppressed because it is too large Load diff

View file

@ -174,6 +174,7 @@ class CPUStatePDP10 extends CPUPDP10 {
*/
initCPU()
{
this.regOP = 0;
this.regEA = 0;
this.regPC = this.lastPC = this.addrReset;
@ -276,6 +277,7 @@ class CPUStatePDP10 extends CPUPDP10 {
{
var state = new State(this);
state.set(0, [
this.regOP,
this.regEA,
this.regPC,
this.lastPC,
@ -303,6 +305,7 @@ class CPUStatePDP10 extends CPUPDP10 {
* of what save() does when it collects a bunch of object properties into an array.
*/
[
this.regOP,
this.regEA,
this.regPC,
this.lastPC,
@ -324,8 +327,7 @@ class CPUStatePDP10 extends CPUPDP10 {
* getOpcode()
*
* This fetches the next opcode, decodes the low 23 bits (I,X,Y), sets regEA, and returns the
* the high 18 bits for further decoding. While it's true that, in general, only the high 13 bits
* are relevant to the operation, it's cleaner to treat the original opcode as two half-words.
* the high 13 bits for further decoding.
*
* @this {CPUStatePDP10}
* @return {number}
@ -333,9 +335,9 @@ class CPUStatePDP10 extends CPUPDP10 {
getOpcode()
{
var pc = this.lastPC = this.regPC;
var opCode = this.readWord(pc);
var r = this.regOP = this.readWord(pc);
this.regPC = (pc + 1) % PDP10.ADDR_LIMIT;
var e, x, r = opCode, nMaxIndirect = 4;
var e, x, nMaxIndirect = 4;
while (true) {
/*
* Bits 0-22 (I,X,Y) contain what we call a "reference address" (R), which is used to calculate the
@ -360,7 +362,7 @@ class CPUStatePDP10 extends CPUPDP10 {
r = this.readWord(e);
}
this.regEA = e;
return (opCode / PDP10.ADDR_LIMIT)|0;
return (this.regOP / PDP10.OPCODE.ACSHIFT)|0;
}
/**
@ -807,8 +809,8 @@ class CPUStatePDP10 extends CPUPDP10 {
this.opFlags &= PDP10.OPFLAG.PRESERVE;
var opCode = this.getOpcode();
this.opDecode(opCode);
var op = this.getOpcode();
this.opDecode(op);
} while (this.nStepCycles > 0);

View file

@ -1326,7 +1326,7 @@ class DebuggerPDP10 extends Debugger {
*/
if (!nState) {
opCode = this.cpu.readWord(addr);
if ((opCode >> PDP10.OPCODE.FNSHIFT) == PDP10.OPCODE.HALT && this.cpu.getLastPC() == addr) {
if ((opCode >> PDP10.OPCODE.A_SHIFT) == PDP10.OPCODE.HALT && this.cpu.getLastPC() == addr) {
addr = this.cpu.advancePC(1);
}
}
@ -1420,7 +1420,7 @@ class DebuggerPDP10 extends Debugger {
if (opMask == PDP10.OPCODE.OPIO) {
sOperation += this.toStrBase((opCode / PDP10.OPCODE.IOSHIFT) & PDP10.OPCODE.IOMASK, -1);
} else {
sOperation += this.toStrBase((opCode >> PDP10.OPCODE.FNSHIFT) & PDP10.OPCODE.FNMASK, -1);
sOperation += this.toStrBase((opCode >> PDP10.OPCODE.A_SHIFT) & PDP10.OPCODE.A_MASK, -1);
}
sOperation += ',';
if (opCode & PDP10.OPCODE.I_BIT) sOperation += '@';

View file

@ -100,6 +100,7 @@ var PDP10 = {
ADDR_MASK: Math.pow(2, 18) - 1,
DATA_INVALID: -1,
DATA_LIMIT: Math.pow(2, 36),
RHWORD_MASK: 0o777777,
/*
* PDP-10 opcodes are 36-bit values, most of which use the following layout:
@ -142,10 +143,11 @@ var PDP10 = {
OPIO: 0o70034, // input-output operation
OPUUO: 0o70000, // unimplemented user operation (UUO) mask
OPSHIFT: Math.pow(2, 21), // operation shift
FNSHIFT: 23, // accumulator/function shift
FNMASK: 0o17, // accumulator/function mask (after 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 isolate the high 13 bits, with A starting at bit 0
A_SHIFT: 23, // A shift
A_MASK: 0o17, // A mask (after shift)
I_BIT: 0o20000000, // indirect bit
X_SHIFT: 18, // X shift
X_MASK: 0o17, // X mask (after shift)

View file

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

View file

@ -32,17 +32,17 @@ 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),r={zb:0,Oa:1,Bb:2,Cb:3,Db:4,Eb:5,Fb:6,Gb:7,Ga:8,Hb:9,Pa:10,Ib:11,Jb:12,Qa:13,Kb:14,Lb:15,Mb:16,Nb:17,Ob:18,Pb:19,Qb:20,Rb:21,Sb:22,Tb:23,Ub:24,Vb:25,Wb: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,Fa:65,yb:66,Ab:67,Xb:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,dc:76,ec:77,fc:78,gc:79,hc:80,Q:81,
ic:82,jc:83,kc:84,lc:85,mc:86,nc:87,oc:88,pc:89,Va:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,qc:97,rc:98,sc:99,d:100,e:101,tc:102,uc:103,vc:104,wc:105,xc:106,k:107,yc:108,zc:109,n:110,Ac:111,p:112,q:113,r:114,Bc:115,t:116,Cc:117,Dc:118,Ec:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Ra:127};
function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ja=b.comment;this.Ua=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.ja=this.id:(this.ka=this.id.substr(0,a),this.ja=this.id.substr(a+1));this.b={ready:!1,oa:!1,Da:!1,w:!1,error:!1};this.ra=null;this.b.error=!1;this.o=this.f=this.l=this.m=this.Z=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date}
var ia=Math.pow(2,36),ja=-Math.pow(2,35),r={Ab:0,Pa:1,Cb:2,Db:3,Eb:4,Fb:5,Gb:6,Hb:7,Ha:8,Ib:9,Qa:10,Jb:11,Kb:12,Ra:13,Lb:14,Mb:15,Nb:16,Ob:17,Pb:18,Qb:19,Rb:20,Sb:21,Tb:22,Ub:23,Vb:24,Wb:25,Xb:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ga:65,zb:66,Bb:67,Yb:68,E:69,Zb:70,$b:71,ac:72,bc:73,cc:74,dc:75,ec:76,fc:77,gc:78,hc:79,ic:80,Q:81,
jc:82,kc:83,lc:84,mc:85,nc:86,oc:87,pc:88,qc:89,Wa:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,rc:97,sc:98,tc:99,d:100,e:101,uc:102,vc:103,wc:104,xc:105,yc:106,k:107,zc:108,Ac:109,n:110,Bc:111,p:112,q:113,r:114,Cc:115,t:116,Dc:117,Ec:118,Fc:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Sa:127};
function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ka=b.comment;this.Va=b;this.exports={};this.i=this.bindings={};a=this.id.indexOf(".");0>a?this.la=this.id:(this.ma=this.id.substr(0,a),this.la=this.id.substr(a+1));this.b={ready:!1,ra:!1,Ea:!1,w:!1,error:!1};this.ua=null;this.b.error=!1;this.o=this.f=this.l=this.m=this.aa=null;v.push(this)}function ka(a,b,c){la[a]&&b&&(la[a][b]=c)}function w(){return Date.now()||+new Date}
function x(a){window&&window.alert(a)}function ma(a){var b=!1;window&&(b=window.confirm(a));return b}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var d=v[b];a&&d.id.indexOf(a)||c.push(d)}return c}function na(a){if(void 0!==a){var b;for(b=0;b<v.length;b++)if(v[b].id===a)return v[b]}return null}
function z(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<v.length;d++)if(c)c==v[d]&&(c=null);else if(!(a!=v[d].type||b&&v[d].id.indexOf(b)))return v[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){x(c.message+" ("+a+")")}return b}
function B(a,b){var c=C;b=D(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=A(g))&&h.binding&&a.S(h.type,h.binding,g,h.value),p=l.length}}}}
function B(a,b){var c=C;b=D(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=A(g))&&h.binding&&a.T(h.type,h.binding,g,h.value),p=l.length}}}}
function D(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 oa(a){for(var b=!0,c=pa[a];c&&c.length;){var d=c.splice(0,1)[0],e=d[0],f=null;0<=qa.indexOf(e)&&(f=function(){return function(){oa(a)}}());var g=ra[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=z(d[1],a);if(h)if(g=sa[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 pa[a];return b}k=u.prototype;
k.toString=function(){return this.name?this.name:this.id||this.type};
k.S=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.Z=this.i[b]=c,c.value="",this.I=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.C=function(a){this.I(a,this.ja)}),!0;default:return!1}};k.log=function(){};k.I=function(){};
k.status=function(a){this.I(this.ja+": "+a)};k.C=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function ta(a,b){b&&(a.b.ready?b():a.ra=b);return a.b.ready}function E(a){if(!a.b.error&&(a.b.ready=!0,a.b.ready)){var b=a.ra;a.ra=null;b&&b()}}function va(a,b){a.b.Da?(a.b.oa=!1,a.b.Da=!1):a.b.error?a.I(a.toString()+" error"):a.b.oa=b}k.T=function(){return this.b.w=!0};k.N=function(a,b){b&&(this.b.w=!1);return!0};
k.T=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.aa=this.i[b]=c,c.value="",this.I=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.C=function(a){this.I(a,this.la)}),!0;default:return!1}};k.log=function(){};k.I=function(){};
k.status=function(a){this.I(this.la+": "+a)};k.C=function(a,b,c){c=c||this.type;b||x((c?c+": ":"")+a)};function ua(a,b){b&&(a.b.ready?b():a.ua=b);return a.b.ready}function E(a){if(!a.b.error&&(a.b.ready=!0,a.b.ready)){var b=a.ua;a.ua=null;b&&b()}}function va(a,b){a.b.Ea?(a.b.ra=!1,a.b.Ea=!1):a.b.error?a.I(a.toString()+" error"):a.b.ra=b}k.U=function(){return this.b.w=!0};k.O=function(a,b){b&&(this.b.w=!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 la=window?window.PCjs.Machines:{},v=window?window.PCjs.Components:[],pa=window?window.PCjs.Commands:{},qa=["hold","sleep","wait"],ra={alert:function(a){x(a);return!0},sleep:function(a,b){setTimeout(a,+b);return!1}},sa={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)});
@ -52,53 +52,53 @@ function xa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf(
function Da(){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 H(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,
f,e))});if(b&&"object"==typeof b){var l="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g}
function Ea(a,b){var c,d={F:null,J:null,R:null,P:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.R=g.load;d.P=g.exec;if(e=g.bytes)d.F=e;else if(e=g.words)for(d.F=Array(2*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=e[c]>>8&255;else if(e=g.data)for(d.F=Array(4*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=
function Ea(a,b){var c,d={F:null,J:null,S:null,R:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.S=g.load;d.R=g.exec;if(e=g.bytes)d.F=e;else if(e=g.words)for(d.F=Array(2*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=e[c]>>8&255;else if(e=g.data)for(d.F=Array(4*e.length),f=c=0;c<e.length;c++)d.F[f++]=e[c]&255,d.F[f++]=
e[c]>>8&255,d.F[f++]=e[c]>>16&255,d.F[f++]=e[c]>>24&255;else d.F=g;d.J=g.symbols;d.F.length?1==d.F.length&&(x(d.F[0]),d=null):(x("Empty resource: "+a),d=null)}catch(h){x("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){x("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.F=e)}return d}
function G(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Fa(){if(null==Ga){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}Ga=a}return Ga}function Ha(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function Ia(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ja(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 Ka(a){if(!La){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," "))}La=c}return La[a]}function Ma(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function I(a){J.init.push(a)}
function Na(a){if(Oa)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 K(a){!Oa&&a?(Oa=!0,Pa&&Qa("init"),Ra&&Qa("show")):Oa=a}function Qa(a){J[a]&&Na(J[a])}var La=null,J={init:[],show:[],exit:[]},Pa=!1,Ra=!1,Oa=!0,Ga=null;Ma("onload",function(){Pa=!0;Na(J.init)});Ma("onpageshow",function(){Ra=!0;Na(J.show)});Ma(Ja("Opera")||Ja("iOS")?"onunload":"onbeforeunload",function(){Na(J.exit)});
var C="pdp10",L="PDPjs",Sa=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),C="pdp10",L="PDPjs";
function Va(a,b){u.call(this,"Panel",a);this.A=this.B=0;this.O=b;this.c=this.u=this.g=this.h=0;this.D=this.H=-1;this.K=this.L=this.s=!1;this.M=Wa;this.j={};this.a={START:[1,1,!0,!1,this.fb],STEP:[1,1,!1,!1,this.gb],ENABLE:[1,1,!1,!1,this.$a],CONT:[1,1,!0,!1,this.Ya],DEP:[0,0,!0,!1,this.Za],EXAM:[1,1,!0,!1,this.ab],LOAD:[1,1,!0,!1,this.cb],TEST:[0,0,!0,!1,this.bb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.eb,a];this.o=this.f=this.l=this.m=null;this.exports={hold:this.Xa,toggle:this.rb,reset:this.nb,
set:this.qb};E(this)}n(Va,u);k=Va.prototype;k.reset=function(a){this.stop();a&&M(this,this.h=0)};
k.S=function(a,b,c,d){if(this.m&&this.m.S(a,b,c,d)||this.f&&this.f.S(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Xa(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){N(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Xa(a,
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){N(a,b)}}(this,b),!0):u.prototype.S.call(this,a,b,c,d)}};k.V=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;Ya(this);Za(this)};k.T=function(a,b){if(!b)if(this.O&&$a(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.c,this.h,this.g]);return a.data()};
k.restore=function(a){if(a=a[0])Q(this,this.c=a[0]),M(this,this.h=a[1]),ab(this,a[2]);return!0};k.nb=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}Za(this);return!0};function bb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Ya(a,b){for(var c in a.j)bb(a,c,null!=b?b:a.j[c])}function cb(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function Za(a){for(var b in a.a)cb(a,b,a.a[b][1])}
k.Xa=function(a,b,c){if(Xa(this,b)){if(c){var d=this;setTimeout(function(){N(d,b);a&&a()},+c);return!1}N(this,b)}return!0};
k.qb=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 ab(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,cb(this,a,c[1]),!0):!1};k.rb=function(a){return Xa(this,a)?(N(this,a),!0):!1};function Xa(a,b){var c=a.a[b];return c?(cb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=db&&(a.K=b==eb,a.L=b==fb),!0):!1}function N(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(cb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
k.fb=function(a){a||this.f.b.v||(this.f.g=this.c%Sa,this.a[gb]&&this.a[gb][1]&&hb(this.f))};k.gb=function(){};k.$a=function(a){a||R(this.f)};k.Ya=function(a){if(!a&&!this.f.b.v)if(this.a[gb]&&this.a[gb][1])hb(this.f);else{a=this.o;var b;if(b=a)a.b.oa&&(a.b.Da=!0),b=!a.b.oa;if(b)va(a,!0),a.c(0,null),va(a,!1);else try{var c=this.f.va(1);0<c&&(ib(this.f,c),jb(this.f,c,!0),kb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.b.error=!0,c.C(a))}this.stop();this.m&&S(this.m)}};
k.Za=function(a){a&&!this.f.b.v&&(this.K&&lb(this),a=M(this,this.h=this.g),this.M==Wa?mb(this.l,this.c,a):this.f.ua(this.c,a))};k.ab=function(a){if(!a&&!this.f.b.v){this.L&&lb(this);if(this.M==Wa){a=this.l;var b=this.c,c=a.a[(b&a.g)>>>a.c];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.W(this.c);M(this,this.h=a)}};k.cb=function(a){a||this.f.b.v||Q(this,this.g)};k.bb=function(a){a?(this.s=!0,Ya(this,!0)):(this.s=!1,Ya(this),ab(this,0))};k.eb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
function lb(a){var b=1,c=a.l.g;a.a[db]&&a.a[db][1]||(b=-b);Q(a,a.c&~c|a.c+b&c)}function Q(a,b){a.c=b&a.l.g;if(a.D!==a.c){a.D=a.c;b=a.D;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.j[e]=f;d.s||bb(d,e,f)}}}function M(a,b){a.u=b%Ua;if(a.H!==a.u){a.H=a.u;b=a.H;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.j[e]=f;d.s||bb(d,e,f)}}return a.u}function ab(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;Za(a);return!0}k.stop=function(){Q(this,this.f.g)};
function $a(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=na(d.id);e||(e=new Va(d,!0));B(e,c)}}var Wa=7,eb="DEP",gb="ENABLE",fb="EXAM",db="STEP";I($a);function nb(a,b,c){u.call(this,"Bus",a);this.f=b;this.o=c;this.u=+a.busWidth||18;this.s=1<<this.u;this.g=this.s-1;this.c=Math.log2(16384);this.j=this.s/16384|0;this.h=0;this.a=[];a=new T(this);ob(a);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;E(this)}n(nb,u);k=nb.prototype;k.reset=function(){};
k.T=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,pb(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 qb(a,b,c,d){for(var e=b,f=c,g=e>>>a.c;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.Y)return h.ta+=h.Y-e,h.Y=e,!0;if(e>=h.Y+h.ta){p=h.size-(e-l);p>f&&(p=f);h.ta=e-h.Y+p;e=l+16384;f-=p;g++;continue}}return rb(sb,e,f)}e=new T(a,e,p,16384,d);ob(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+tb[d]+" at "+wa(b)),!0):rb(ub,b,c)}function mb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--}
function pb(a){for(var b=0,c=[],d=0;d<a.j;d++){var e=a.a[d];if(e.qa||e.Wa){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],q=g+1;q<e.length&&e[q]===p;)q++;l[h++]=q-g;l[h++]=p;g=q}l.length<e.length&&(e=l)}c[f]=e}}return c}function rb(a,b,c){x("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var sb=1,ub=2;function vb(a){u.call(this,"Device",a)}n(vb,u);k=vb.prototype;k.V=function(a,b,c,d){this.l=b;this.m=a;this.f=c;this.o=d;E(this)};
k.T=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.N=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new O(this)).data()};k.restore=function(){return!0};I(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new vb(c),B(c,d)}}});
function T(a,b,c,d,e){this.h=a;this.id=wb+=2;this.Y=b;this.ta=c;this.size=d||0;this.type=e||xb;this.m=e==yb;this.W=this.o=this.c=this.ca;this.ua=this.l=this.g=this.ea;this.f=this.i=0;ob(this);this.qa=this.Wa=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;zb(this,Ab)}else zb(this)}k=T.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.qa=!0):!1};function zb(a,b){b||(b=Bb);Cb(a,b,void 0);Db(a,b,void 0)}
function Cb(a,b,c){c&&a.f||(a.W=b[2]||a.ca);if(c||void 0===c)a.c=b[0]||a.ca,a.o=b[2]||a.ca}function Db(a,b,c){c&&a.i||(a.ua=!a.m&&b[3]||a.ea);if(c||void 0===c)a.g=b[1]||a.ea,a.l=b[3]||a.ea}function ob(a,b){a.f=a.i=0;b&&((a.f=b.f)&&Cb(a,Eb,!1),(a.i=b.i)&&Db(a,Eb,!1))}k.ca=function(){var a=this.h;a.h||R(a.f);return-1};k.ea=function(){};k.ib=function(a,b,c,d){a=this.a[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};k.lb=function(a){return this.a[a]};
k.ub=function(a,b,c,d,e){c=this.a[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.a[b]!=c&&(this.a[b]=c,this.qa=!0)};k.wb=function(a,b){this.a[b]=a;this.qa=!0};k.hb=function(a,b,c,d){return this.c(a,b,c,d)};k.jb=function(a,b){return this.o(a,b)};k.tb=function(a,b,c,d,e){this.m||this.g(a,b,c,d,e)};k.vb=function(a,b,c){this.m||this.l(a,b,c)};
var xb=0,yb=2,tb=["NONE","RAM","ROM"],wb=0,Bb=[],Ab=[T.prototype.ib,T.prototype.ub,T.prototype.lb,T.prototype.wb],Eb=[T.prototype.hb,T.prototype.tb,T.prototype.jb,T.prototype.vb];
function Fb(a,b){u.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.wa=0;this.Aa=b;this.M=c;this.ya=Math.round(this.Aa/1E4)/100;this.K=this.ya*this.M;this.za=this.aa=this.O=this.na=0;this.b.v=this.b.Ea=!1;this.b.G=a.autoStart;"string"==typeof this.b.G&&(this.b.G="true"==this.b.G);this.b.pa=!1;this.la=this.L=0;this.ma=+a.csStart;this.ga=+a.csInterval;this.ha=+a.csStop;this.s=[];this.Ka=this.ob.bind(this);this.D=this.j=this.A=this.B=this.h=this.fa=this.u=this.U=this.Ba=this.H=0;this.ia=
null;E(this)}n(Fb,u);k=Fb.prototype;k.V=function(a,b,c,d){this.m=a;this.l=b;this.o=d;this.ia=a.g;for(a=0;a<Gb.length;a++)(b=this.i[Gb[a]])&&this.m.S(null,Gb[a],b);E(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.T=function(a,b){var c=U(this.m,"autoStart");null!=c?this.b.G="true"==c?!0:"false"==c?!1:!!c:null==this.b.G&&(this.b.G=void 0===this.i.run);if(!b){if(a){Hb(this);if(!this.restore(a))return!1;Ib(this)}else this.reset();this.status("No debugger detected");this.b.G||this.I("CPU will not be auto-started "+(this.ia?"(click Run to start)":"(type 'go' to start)"))}return!0};k.N=function(a){return a?this.save():!0};k.G=function(){return this.b.v?!0:this.b.G?(hb(this),!0):!1};k.Ma=function(){return 0};
function Ib(a){void 0===a.ma&&(a.ma=0);void 0===a.ga&&(a.ga=-1);void 0===a.ha&&(a.ha=-1);a.b.pa=0<=a.ma&&0<a.ga;a.b.pa&&(a.la=0,a.L=a.ma-a.D)}function kb(a,b){if(a.b.pa){var c=!1;a.la=a.la+a.Ma()|0;a.L-=b;0>=a.L&&(a.L+=a.ga,c=!0);0<=a.ha&&a.ha<=Jb(a)&&(a.ga=a.ha=-1,Ib(a),R(a),c=!0);c&&a.I(Jb(a)+" cycles: checksum="+F(a.la))}}
k.S=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.b.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.b.w);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.b.ready?"powered yet":"ready yet"+(b.ra?" (waiting for notification)":""))+".");a=!1}a&&(d.b.v?R(d):hb(d))},!0;case "speed":return this.i[b]=
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Kb(d,d.M<<1,!0)},c.textContent=this.K.toFixed(2)+"Mhz",!0}return!1};function jb(a,b,c){a.D+=b;c&&(a.A=a.B=0)}function Lb(a,b){var c=1;b&&1<a.M&&a.H&&(c=a.H/a.ya);a.za=Math.round(1E3/Mb);a.aa=Math.floor(a.Aa/Mb*c);b||(a.O=a.aa);a.na=0}function Jb(a){return a.D+a.j+a.A-a.B}function Hb(a){a.H=0;a.Ba=0;a.D=a.j=a.A=a.B=0;Ib(a);Kb(a,1)}
function Kb(a,b,c){if(void 0!==b){.8>a.H/a.K&&(b=1);a.M=b;b=a.ya*a.M;if(a.K!=b){a.K=b;b=a.K.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.I("target speed: "+b)}c&&a.m&&(c=a.m,c.Z&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.Z.focus(),window&&window.scrollTo(b,d)))}jb(a,a.j);a.j=0;a.h=w();a.u=0;Lb(a)}function Nb(a){for(var b=[],c=0;c<a.s.length;c++)b.push(a.s[c][0]);return b}
function ib(a,b){for(var c=a.s.length-1;0<=c;c--){var d=a.s[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Ob(a,b){var c=a.A-=a.B;a.B=0;b&&(a.A=0);return c}
k.ob=function(){if(this.b.v){this.na>=this.Aa&&Lb(this,!0);this.U=0;this.fa=w();if(this.u){var a=this.fa-this.u;a>this.za&&(this.h+=a,this.h>this.fa&&(this.h=this.fa))}try{do{for(var b,c=this.b.pa?1:this.aa,d=this.s.length-1;0<=d;d--){var e=this.s[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.va(b)}catch(f){if("number"!=typeof f)throw f;}b=Ob(this,!0);this.U+=b;this.j+=b;kb(this,b);ib(this,b);this.O-=b;if(0>=this.O){this.O+=this.aa;++this.Ba>=Pb&&(this.m&&S(this.m,void 0),this.Ba=0);break}}while(this.b.v)}catch(f){R(this);
this.m&&this.m.stop(w(),Jb(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.Ka;this.u=w();c=this.za;this.U&&(c=Math.round(c*this.U/this.aa));c-=this.u-this.fa;if(d=this.u-this.h)this.H=Math.round(this.j/(10*d))/100,864E5<=d&&(this.D=0,Kb(this));if(0>c||this.H<this.K)-1E3>c&&(this.h-=c),c=0;this.na+=this.U;this.u+=c;a(b,c)}}};
function hb(a){var b;a.b.error?(a.I(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.I(a.toString()+" busy");else{Kb(a);a.b.v=!0;a.b.Ea=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.h,Jb(a));a.o||a.status("Started");setTimeout(a.Ka,0)}}k.va=function(){return 0};function R(a){var b=!1;if(a.b.v){Ob(a);jb(a,a.j);a.j=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),Jb(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Mb=30,Pb=15,Gb=["power","reset"];
function Qb(a){var b=+a.model||1001;Fb.call(this,a,1E6);this.Sa=b;this.Ia=+a.addrReset||0;this.Ta=Rb.bind(this);this.a=V.bind(this);this.X=null;this.Ha=[];this.b.complete=!1}n(Qb,Fb);k=Qb.prototype;k.reset=function(){this.status("Model "+this.Sa);this.b.v&&R(this);this.Ca=0;this.da=this.g=this.xa=this.Ia;this.c=0;this.W=this.kb;this.ua=this.xb;this.X=null;Hb(this);this.b.error=!1;Fb.prototype.reset.call(this)};k.Ma=function(){return 0};
k.save=function(){var a=new O(this);a.set(0,[this.Ca,this.g,this.xa,this.da,this.c]);a.set(1,[]);a.set(2,[this.D,this.M,this.b.G]);a.set(3,Sb(this));a.set(4,Nb(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.Ca=b.next().value;this.g=b.next().value;this.xa=b.next().value;this.da=b.next().value;this.c=b.next().value;b=a[2];this.D=b[0];Kb(this,b[1]);this.b.G=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ha.length;d++){var e=this.Ha[d];if(e.sb===b[c]){d=e;break a}}d=null}d&&(d.next=this.X,this.X=d)}a=a[4];for(b=0;b<this.s.length&&b<a.length;b++)this.s[b][0]=a[b];return!0};
function Sb(a){var b=[];for(a=a.X;a;)b.push(a.sb),a=a.next;return b}k.kb=function(a){var b=this.l;a=this.da=a;return b.a[(a&b.g)>>>b.c].W(a&16383,a)};k.xb=function(a,b){var c=this.l;a=this.da=a;c.a[(a&c.g)>>>c.c].ua(b,a&16383,a)};
k.va=function(a){this.b.complete=!0;var b=a?this.b.Ea?0:1:-1;this.b.Ea=!1;this.A=this.B=a;this.c=this.c&-5|0;do{if(a=this.c)if(a=this.c&11)this.c&2?this.X||(this.c&=-3):this.c&1&&this.c++,a=!1;if(a){if(this.c&4&&this.o.h(this.g,b)){R(this);break}if(0>b)break}this.c&=15;var c=this.xa=this.g;a=this.W(c);this.g=(c+1)%Sa;for(var d,e=a,f=4;;){c=e&262143;(d=e>>18&15)&&(c=c+this.W(d)&Ta);if(!(e&4194304))break;if(0>--f){d=this.l;d.h||R(d.f);break}e=this.W(c)}this.Ca=c;this.Ta(a/Sa|0)}while(0<this.B);return this.b.complete?
this.A-this.B:!1===this.b.complete?-1:0};I(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Qb(d);B(d,c)}});function W(a){this.a(a)}function Tb(a){this.a(a)}function Ub(a){this.a(a)}function X(a){this.a(a)}function V(a){this.I("undefined opcode: "+wa(a));R(this.f)}function Rb(a){Vb[a>>9].call(this,a)}
var Vb=[W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
var C="pdp10",L="PDPjs",Sa=Math.pow(2,18),Ta=Math.pow(2,18)-1,Ua=Math.pow(2,36),Va=Math.pow(2,23),C="pdp10",L="PDPjs";
function Wa(a,b){u.call(this,"Panel",a);this.A=this.B=0;this.P=b;this.c=this.u=this.g=this.h=0;this.D=this.H=-1;this.K=this.L=this.s=!1;this.N=Xa;this.j={};this.a={START:[1,1,!0,!1,this.gb],STEP:[1,1,!1,!1,this.hb],ENABLE:[1,1,!1,!1,this.ab],CONT:[1,1,!0,!1,this.Za],DEP:[0,0,!0,!1,this.$a],EXAM:[1,1,!0,!1,this.bb],LOAD:[1,1,!0,!1,this.eb],TEST:[0,0,!0,!1,this.cb]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.fb,a];this.o=this.f=this.l=this.m=null;this.exports={hold:this.Ya,toggle:this.sb,reset:this.ob,
set:this.rb};E(this)}n(Wa,u);k=Wa.prototype;k.reset=function(a){this.stop();a&&M(this,this.h=0)};
k.T=function(a,b,c,d){if(this.m&&this.m.T(a,b,c,d)||this.f&&this.f.T(a,b,c,d))return!0;switch(b){case "PC":return this.i[b]=c,this.B++,!0;default:return"led"==a||"rled"==a?(this.i[b]=c,this.j[b]=d?1:0,this.B++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.i[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){Ya(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){N(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){Ya(a,
b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){N(a,b)}}(this,b),!0):u.prototype.T.call(this,a,b,c,d)}};k.X=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;Za(this);$a(this)};k.U=function(a,b){if(!b)if(this.P&&ab(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,[this.c,this.h,this.g]);return a.data()};
k.restore=function(a){if(a=a[0])Q(this,this.c=a[0]),M(this,this.h=a[1]),bb(this,a[2]);return!0};k.ob=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}$a(this);return!0};function cb(a,b,c){if(a=a.i[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function Za(a,b){for(var c in a.j)cb(a,c,null!=b?b:a.j[c])}function db(a,b,c){if(a=a.i[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function $a(a){for(var b in a.a)db(a,b,a.a[b][1])}
k.Ya=function(a,b,c){if(Ya(this,b)){if(c){var d=this;setTimeout(function(){N(d,b);a&&a()},+c);return!1}N(this,b)}return!0};
k.rb=function(a,b){if("SR"==a){a=b;b=8;var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.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 bb(this,c)}return(c=this.a[a])?(c[1]=+b?1:0,db(this,a,c[1]),!0):!1};k.sb=function(a){return Ya(this,a)?(N(this,a),!0):!1};function Ya(a,b){var c=a.a[b];return c?(db(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=eb&&(a.K=b==fb,a.L=b==gb),!0):!1}function N(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(db(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
k.gb=function(a){a||this.f.b.v||(this.f.g=this.c%Sa,this.a[hb]&&this.a[hb][1]&&ib(this.f))};k.hb=function(){};k.ab=function(a){a||R(this.f)};k.Za=function(a){if(!a&&!this.f.b.v)if(this.a[hb]&&this.a[hb][1])ib(this.f);else{a=this.o;var b;if(b=a)a.b.ra&&(a.b.Ea=!0),b=!a.b.ra;if(b)va(a,!0),a.c(0,null),va(a,!1);else try{var c=this.f.xa(1);0<c&&(jb(this.f,c),kb(this.f,c,!0),lb(this.f,c))}catch(d){"number"!=typeof d&&(c=this.f,a=d.stack||d.message,c.b.error=!0,c.C(a))}this.stop();this.m&&S(this.m)}};
k.$a=function(a){a&&!this.f.b.v&&(this.K&&mb(this),a=M(this,this.h=this.g),this.N==Xa?nb(this.l,this.c,a):this.f.Y(this.c,a))};k.bb=function(a){if(!a&&!this.f.b.v){this.L&&mb(this);if(this.N==Xa){a=this.l;var b=this.c,c=a.a[(b&a.g)>>>a.c];a.h++;b=c.o(b&16383,b);a.h--;a=b}else a=this.f.M(this.c);M(this,this.h=a)}};k.eb=function(a){a||this.f.b.v||Q(this,this.g)};k.cb=function(a){a?(this.s=!0,Za(this,!0)):(this.s=!1,Za(this),bb(this,0))};k.fb=function(a,b){this.g=a?this.g|1<<b:this.g&~(1<<b)};
function mb(a){var b=1,c=a.l.g;a.a[eb]&&a.a[eb][1]||(b=-b);Q(a,a.c&~c|a.c+b&c)}function Q(a,b){a.c=b&a.l.g;if(a.D!==a.c){a.D=a.c;b=a.D;for(var c=0;22>c;c++){var d=a,e="A"+c,f=b&1<<c;d.j[e]=f;d.s||cb(d,e,f)}}}function M(a,b){a.u=b%Ua;if(a.H!==a.u){a.H=a.u;b=a.H;for(var c=0;16>c;c++){var d=a,e="D"+c,f=b&1<<c;d.j[e]=f;d.s||cb(d,e,f)}}return a.u}function bb(a,b){a.g=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.g&1<<b?1:0;$a(a);return!0}k.stop=function(){Q(this,this.f.g)};
function ab(){for(var a=D(document,C,"panel"),b=0;b<a.length;b++){var c=a[b],d=A(c),e=na(d.id);e||(e=new Wa(d,!0));B(e,c)}}var Xa=7,fb="DEP",hb="ENABLE",gb="EXAM",eb="STEP";I(ab);function ob(a,b,c){u.call(this,"Bus",a);this.f=b;this.o=c;this.u=+a.busWidth||18;this.s=1<<this.u;this.g=this.s-1;this.c=Math.log2(16384);this.j=this.s/16384|0;this.h=0;this.a=[];a=new T(this);pb(a);this.a=Array(this.j);for(b=0;b<this.j;b++)this.a[b]=a;E(this)}n(ob,u);k=ob.prototype;k.reset=function(){};
k.U=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.save=function(){var a=new O(this);a.set(0,qb(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 rb(a,b,c,d){for(var e=b,f=c,g=e>>>a.c;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.Z)return h.wa+=h.Z-e,h.Z=e,!0;if(e>=h.Z+h.wa){p=h.size-(e-l);p>f&&(p=f);h.wa=e-h.Z+p;e=l+16384;f-=p;g++;continue}}return sb(tb,e,f)}e=new T(a,e,p,16384,d);pb(e,h);a.a[g++]=e;e=l+16384;f-=p}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+ub[d]+" at "+wa(b)),!0):sb(vb,b,c)}function nb(a,b,c){var d=a.a[(b&a.g)>>>a.c];a.h++;d.l(c,b&16383,b);a.h--}
function qb(a){for(var b=0,c=[],d=0;d<a.j;d++){var e=a.a[d];if(e.ta||e.Xa){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],q=g+1;q<e.length&&e[q]===p;)q++;l[h++]=q-g;l[h++]=p;g=q}l.length<e.length&&(e=l)}c[f]=e}}return c}function sb(a,b,c){x("Memory block error ("+a+": "+F(b)+","+F(c)+")");return!1}var tb=1,vb=2;function wb(a){u.call(this,"Device",a)}n(wb,u);k=wb.prototype;k.X=function(a,b,c,d){this.l=b;this.m=a;this.f=c;this.o=d;E(this)};
k.U=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){return(new O(this)).data()};k.restore=function(){return!0};I(function(){for(var a=D(document,C,"device"),b=0;b<a.length;b++){var c,d=a[b];c=A(d);switch(c.type){case "default":c=new wb(c),B(c,d)}}});
function T(a,b,c,d,e){this.h=a;this.id=xb+=2;this.Z=b;this.wa=c;this.size=d||0;this.type=e||yb;this.m=e==zb;this.M=this.o=this.c=this.ea;this.Y=this.l=this.g=this.ga;this.f=this.i=0;pb(this);this.ta=this.Xa=!1;if(this.size){a=this.a=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Ab(this,Bb)}else Ab(this)}k=T.prototype;k.save=function(){return this.a};k.restore=function(a){return a&&this.size==a.length?(this.a=a,this.ta=!0):!1};function Ab(a,b){b||(b=Cb);Db(a,b,void 0);Eb(a,b,void 0)}
function Db(a,b,c){c&&a.f||(a.M=b[2]||a.ea);if(c||void 0===c)a.c=b[0]||a.ea,a.o=b[2]||a.ea}function Eb(a,b,c){c&&a.i||(a.Y=!a.m&&b[3]||a.ga);if(c||void 0===c)a.g=b[1]||a.ga,a.l=b[3]||a.ga}function pb(a,b){a.f=a.i=0;b&&((a.f=b.f)&&Db(a,Fb,!1),(a.i=b.i)&&Eb(a,Fb,!1))}k.ea=function(){var a=this.h;a.h||R(a.f);return-1};k.ga=function(){};k.jb=function(a,b,c,d){a=this.a[a];return a=32>=c+d?a>>c&(1<<d)-1:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d)};k.mb=function(a){return this.a[a]};
k.vb=function(a,b,c,d,e){c=this.a[b];var f=Math.pow(2,d);a%=Math.pow(2,e);d=c%Math.pow(2,d+e);c=c-d+a*f+d%f;this.a[b]!=c&&(this.a[b]=c,this.ta=!0)};k.xb=function(a,b){this.a[b]=a;this.ta=!0};k.ib=function(a,b,c,d){return this.c(a,b,c,d)};k.kb=function(a,b){return this.o(a,b)};k.ub=function(a,b,c,d,e){this.m||this.g(a,b,c,d,e)};k.wb=function(a,b,c){this.m||this.l(a,b,c)};
var yb=0,zb=2,ub=["NONE","RAM","ROM"],xb=0,Cb=[],Bb=[T.prototype.jb,T.prototype.vb,T.prototype.mb,T.prototype.xb],Fb=[T.prototype.ib,T.prototype.ub,T.prototype.kb,T.prototype.wb];
function Gb(a,b){u.call(this,"CPU",a);b=+a.cycles||b;var c=+a.multiplier||1;this.ya=0;this.Ca=b;this.N=c;this.Aa=Math.round(this.Ca/1E4)/100;this.K=this.Aa*this.N;this.Ba=this.ca=this.P=this.pa=0;this.b.v=this.b.Fa=!1;this.b.G=a.autoStart;"string"==typeof this.b.G&&(this.b.G="true"==this.b.G);this.b.sa=!1;this.na=this.L=0;this.oa=+a.csStart;this.ja=+a.csInterval;this.ba=+a.csStop;this.s=[];this.La=this.pb.bind(this);this.D=this.j=this.A=this.B=this.h=this.ia=this.u=this.V=this.Da=this.H=0;this.ka=
null;E(this)}n(Gb,u);k=Gb.prototype;k.X=function(a,b,c,d){this.m=a;this.l=b;this.o=d;this.ka=a.g;for(a=0;a<Hb.length;a++)(b=this.i[Hb[a]])&&this.m.T(null,Hb[a],b);E(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.U=function(a,b){var c=U(this.m,"autoStart");null!=c?this.b.G="true"==c?!0:"false"==c?!1:!!c:null==this.b.G&&(this.b.G=void 0===this.i.run);if(!b){if(a){Ib(this);if(!this.restore(a))return!1;Jb(this)}else this.reset();this.status("No debugger detected");this.b.G||this.I("CPU will not be auto-started "+(this.ka?"(click Run to start)":"(type 'go' to start)"))}return!0};k.O=function(a){return a?this.save():!0};k.G=function(){return this.b.v?!0:this.b.G?(ib(this),!0):!1};k.Na=function(){return 0};
function Jb(a){void 0===a.oa&&(a.oa=0);void 0===a.ja&&(a.ja=-1);void 0===a.ba&&(a.ba=-1);a.b.sa=0<=a.oa&&0<a.ja;a.b.sa&&(a.na=0,a.L=a.oa-a.D)}function lb(a,b){if(a.b.sa){var c=!1;a.na=a.na+a.Na()|0;a.L-=b;0>=a.L&&(a.L+=a.ja,c=!0);0<=a.ba&&a.ba<=Kb(a)&&(a.ja=a.ba=-1,Jb(a),R(a),c=!0);c&&a.I(Kb(a)+" cycles: checksum="+F(a.na))}}
k.T=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.i[b]=c,!0;case "run":return this.i[b]=c,c.onclick=function(){var a;if(a=d.m)if(a=d.m,a.b.w)a=!0;else{var b=null,c,h=y(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.b.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.b.w);c++);c==h.length&&(b=a);x("The "+b.type+" component ("+b.id+") is not "+(b.b.ready?"powered yet":"ready yet"+(b.ua?" (waiting for notification)":""))+".");a=!1}a&&(d.b.v?R(d):ib(d))},!0;case "speed":return this.i[b]=
c,!0;case "setSpeed":return this.i[b]=c,c.onclick=function(){Lb(d,d.N<<1,!0)},c.textContent=this.K.toFixed(2)+"Mhz",!0}return!1};function kb(a,b,c){a.D+=b;c&&(a.A=a.B=0)}function Mb(a,b){var c=1;b&&1<a.N&&a.H&&(c=a.H/a.Aa);a.Ba=Math.round(1E3/Nb);a.ca=Math.floor(a.Ca/Nb*c);b||(a.P=a.ca);a.pa=0}function Kb(a){return a.D+a.j+a.A-a.B}function Ib(a){a.H=0;a.Da=0;a.D=a.j=a.A=a.B=0;Jb(a);Lb(a,1)}
function Lb(a,b,c){if(void 0!==b){.8>a.H/a.K&&(b=1);a.N=b;b=a.Aa*a.N;if(a.K!=b){a.K=b;b=a.K.toFixed(2)+"Mhz";var d=a.i.setSpeed;d&&(d.textContent=b);a.I("target speed: "+b)}c&&a.m&&(c=a.m,c.aa&&(d=b=0,window&&(b=window.scrollX,d=window.scrollY),c.aa.focus(),window&&window.scrollTo(b,d)))}kb(a,a.j);a.j=0;a.h=w();a.u=0;Mb(a)}function Ob(a){for(var b=[],c=0;c<a.s.length;c++)b.push(a.s[c][0]);return b}
function jb(a,b){for(var c=a.s.length-1;0<=c;c--){var d=a.s[c];0>d[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function Pb(a,b){var c=a.A-=a.B;a.B=0;b&&(a.A=0);return c}
k.pb=function(){if(this.b.v){this.pa>=this.Ca&&Mb(this,!0);this.V=0;this.ia=w();if(this.u){var a=this.ia-this.u;a>this.Ba&&(this.h+=a,this.h>this.ia&&(this.h=this.ia))}try{do{for(var b,c=this.b.sa?1:this.ca,d=this.s.length-1;0<=d;d--){var e=this.s[d];0>e[0]||c>e[0]&&(c=e[0])}b=c;try{this.xa(b)}catch(f){if("number"!=typeof f)throw f;}b=Pb(this,!0);this.V+=b;this.j+=b;lb(this,b);jb(this,b);this.P-=b;if(0>=this.P){this.P+=this.ca;++this.Da>=Qb&&(this.m&&S(this.m,void 0),this.Da=0);break}}while(this.b.v)}catch(f){R(this);
this.m&&this.m.stop(w(),Kb(this));a=f.stack||f.message;this.b.error=!0;this.C(a);return}if(this.b.v){a=setTimeout;b=this.La;this.u=w();c=this.Ba;this.V&&(c=Math.round(c*this.V/this.ca));c-=this.u-this.ia;if(d=this.u-this.h)this.H=Math.round(this.j/(10*d))/100,864E5<=d&&(this.D=0,Lb(this));if(0>c||this.H<this.K)-1E3>c&&(this.h-=c),c=0;this.pa+=this.V;this.u+=c;a(b,c)}}};
function ib(a){var b;a.b.error?(a.I(a.toString()+" error"),b=!0):b=!1;if(!b)if(a.b.v)a.I(a.toString()+" busy");else{Lb(a);a.b.v=!0;a.b.Fa=!0;if(b=a.i.run)b.textContent="Halt";a.m&&a.m.start(a.h,Kb(a));a.o||a.status("Started");setTimeout(a.La,0)}}k.xa=function(){return 0};function R(a){var b=!1;if(a.b.v){Pb(a);kb(a,a.j);a.j=0;a.b.v=!1;if(b=a.i.run)b.textContent="Run";a.m&&a.m.stop(w(),Kb(a));b=!0;a.o||a.status("Stopped")}a.b.complete=void 0;return b}var Nb=30,Qb=15,Hb=["power","reset"];
function Rb(a){var b=+a.model||1001;Gb.call(this,a,1E6);this.Ta=b;this.Ja=+a.addrReset||0;this.Ua=Sb.bind(this);this.a=V.bind(this);this.fa=null;this.Ia=[];this.b.complete=!1}n(Rb,Gb);k=Rb.prototype;k.reset=function(){this.status("Model "+this.Ta);this.b.v&&R(this);this.W=this.qa=0;this.ha=this.g=this.za=this.Ja;this.c=0;this.M=this.lb;this.Y=this.yb;this.fa=null;Ib(this);this.b.error=!1;Gb.prototype.reset.call(this)};k.Na=function(){return 0};
k.save=function(){var a=new O(this);a.set(0,[this.qa,this.W,this.g,this.za,this.ha,this.c]);a.set(1,[]);a.set(2,[this.D,this.N,this.b.G]);a.set(3,Tb(this));a.set(4,Ob(this));return a.data()};
k.restore=function(a){var b;b=a[0];ea();ba();ea();var c=b[Symbol.iterator];b=c?c.call(b):fa(b);this.qa=b.next().value;this.W=b.next().value;this.g=b.next().value;this.za=b.next().value;this.ha=b.next().value;this.c=b.next().value;b=a[2];this.D=b[0];Lb(this,b[1]);this.b.G=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d<this.Ia.length;d++){var e=this.Ia[d];if(e.tb===b[c]){d=e;break a}}d=null}d&&(d.next=this.fa,this.fa=d)}a=a[4];for(b=0;b<this.s.length&&b<a.length;b++)this.s[b][0]=a[b];return!0};
function Tb(a){var b=[];for(a=a.fa;a;)b.push(a.tb),a=a.next;return b}k.lb=function(a){var b=this.l;a=this.ha=a;return b.a[(a&b.g)>>>b.c].M(a&16383,a)};k.yb=function(a,b){var c=this.l;a=this.ha=a;c.a[(a&c.g)>>>c.c].Y(b,a&16383,a)};
k.xa=function(a){this.b.complete=!0;var b=a?this.b.Fa?0:1:-1;this.b.Fa=!1;this.A=this.B=a;this.c=this.c&-5|0;do{if(a=this.c)if(a=this.c&11)this.c&2?this.fa||(this.c&=-3):this.c&1&&this.c++,a=!1;if(a){if(this.c&4&&this.o.h(this.g,b)){R(this);break}if(0>b)break}this.c&=15;var c=this.za=this.g;a=this.qa=this.M(c);this.g=(c+1)%Sa;for(var d,e=4;;){c=a&262143;(d=a>>18&15)&&(c=c+this.M(d)&Ta);if(!(a&4194304))break;if(0>--e){a=this.l;a.h||R(a.f);break}a=this.M(c)}this.W=c;this.Ua(this.qa/Va|0)}while(0<this.B);
return this.b.complete?this.A-this.B:!1===this.b.complete?-1:0};I(function(){for(var a=D(document,C,"cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Rb(d);B(d,c)}});function Sb(a){Ub[a>>4].call(this,a)}function W(a){this.a(a)}function Vb(a){this.a(a)}function Wb(a){this.a(a)}function Xb(a){a&=15;var b=this.M(this.W),c=this.M(a);this.Y(a,(c&262143)+(b-(b&262143)))}function X(a){this.a(a)}function V(a){this.I("undefined opcode: "+wa(a));R(this)}
var Ub=[W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Tb,Ub,Ub,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Tb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,Wb,Wb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Vb,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},V,function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
@ -106,57 +106,57 @@ function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a)
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},Xb,function(a){a&=15;var b=this.M(a);this.Y(a,b&262143)},function(a){a=this.M(a&15);var b=this.M(this.W);this.Y(this.W,(b&262143)+(a-(a&262143)))},function(a){a&15&&Xb.call(this,a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},
function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(a){this.a(a)},function(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 Wb(a){u.call(this,"ROM",a);this.J=this.a=null;this.j=+a.addr;this.g=+a.size;this.c=a.alias;"string"==typeof this.c&&(this.c=eval(this.c));this.h=a.file;this.s=xa(this.h);if(this.h){a=this.h;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(ka(c.ka,a,b),(a=Ea(a,b))?(c.a=a.F,c.J=a.J):c.h=null);Xb(c)})}}n(Wb,u);
Wb.prototype.V=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Xb(this)};Wb.prototype.T=function(){this.J&&(this.o&&this.o.a(this.id,this.j,this.g,this.J),delete this.J);return!0};Wb.prototype.N=function(){return!0};
function Xb(a){if(!ta(a)){if(a.h){if(!a.a||!a.l)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+F(a.a.length,8,!0)+") does not match specified size ("+F(a.g,8,!0)+")";a.b.error=!0;a.C(b)}else{b=a.j;if(qb(a.l,b,a.g,yb)){var c;for(c=0;c<a.a.length;c++)mb(a.l,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.c?b.push(a.c):null!=a.c&&a.c.length&&(b=a.c);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.l,g=d.g,h=[],l=d.j>>>f.c;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.l;
d=d.g;g=0;for(e>>>=f.c;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}E(a)}}I(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Wb(d);B(d,c)}});
function Y(a){u.call(this,"RAM",a);this.J=this.c=null;this.g=+a.addr;this.h=+a.size;this.R=a.load;this.P=a.exec;null!=this.R&&(this.R=+this.R);null!=this.P&&(this.P=+this.P);this.j=!1;this.a=a.file;this.s=xa(this.a);if(this.a){a=this.a;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(ka(c.ka,a,b),(a=Ea(a,b))?(c.c=a.F,c.J=a.J,null==c.R&&
(c.R=a.R),null==c.P&&(c.P=a.P)):c.a=null);Yb(c)})}}n(Y,u);Y.prototype.V=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Yb(this)};Y.prototype.T=function(a,b){this.J&&(this.o&&this.o.a(this.id,this.g,this.h,this.J),delete this.J);b||this.reset();return!0};Y.prototype.N=function(){return!0};
function Yb(a){if(a.l&&(!a.j&&a.h&&(qb(a.l,a.g,a.h,1)?a.j=!0:a.h=0),!ta(a))){if(!a.j)x("No RAM allocated");else if(a.a){if(!a.c||!a.l)return;Zb(a,a.c,a.R,a.P,a.g)?a.status('Loaded image "'+a.s+'"'):a.C('Error loading image "'+a.s+'"')}E(a)}}
Y.prototype.reset=function(){if(this.j){for(var a=this.l,b=this.g,c=this.h,d=b&16383,b=b>>>a.c;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.Y+d);c-=16384;b++;d=0}this.c&&Zb(this,this.c,this.R,this.P,this.g,!this.o)}};
function Zb(a,b,c,d,e,f){var g=!1,h=!1;if(null==c)for(var l=0;l<b.length-1;){var p=b[l]&255|(b[l+1]&255)<<8;if(p)if(p&255){if(1!=p)break;if(l+6>=b.length)break;for(var l=l+2,q=b[l++]&255|(b[l++]&255)<<8,t=b[l++]&255|(b[l++]&255)<<8,p=p+((q&255)+(q>>8)+(t&255)+(t>>8)),P=l,ua=q-=6;0<q&&l<b.length;)p+=b[l++]&255,q--;if(q||l>=b.length)break;p+=b[l++]&255;if(p&255)break;if(ua)for(;ua--;)mb(a.l,t++,b[P++]);else t&1?g=!0:null==d&&(d=t);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h<b.length;h++)mb(a.l,
c+h,b[h]);h=!0}if(h){if(null==d||g)R(a.f),f=!1;null!=d&&(a=a.f,a.Ia=d,a.g=d%Sa,f?a.b.w?a.b.v||hb(a):a.b.G=!0:a.o&&a.b.w?R(a)||a.m.b.reset||(a.o.g(),S(a.m,-1)):!1===f&&R(a),!a.b.v&&a.ia&&a.ia.stop())}return h}I(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Y(d);B(d,c)}});
function $b(a){u.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.c=[];var b=a.binding;if("console"!=b){var c;a=ac;b&&(void 0===c&&(c="Panel"),(c=z(c,this.id))&&(b=c.i[b])&&this.S(null,a,b))}this.a=this.j=null;this.exports={connect:this.Na,receiveData:this.sa,receiveStatus:this.mb,setConnection:this.pb}}n($b,u);k=$b.prototype;
k.S=function(a,b,c){var d=this;switch(b){case ac:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?r.Ga:r.Ra:46==c?b=r.Ga:a.ctrlKey&&c>=r.Fa&&c<=r.Va&&(b=c-(r.Fa-r.Oa));b&&(a.preventDefault&&a.preventDefault(),d.sa(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==r.Qa&&(b=r.Pa);d.sa(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.sa(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.V=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;E(this)};
k.Na=function(a){if(!this.a){var b=U(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.ja)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.ka+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.T=function(a,b){if(!b)if(this.Na(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
k.N=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.sa=function(a){if("number"==typeof a)this.c.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.c.push(b)}else this.c=this.c.concat(a);return!0};k.mb=function(){};k.pb=function(a,b){return this.a?!1:(this.a=a,this.j=b,!0)};var ac="buffer";
I(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new $b(d);B(d,c)}});
function bc(a,b,c){u.call(this,"Computer",a);this.b.w=!1;this.L=null;cc(this,b);this.H=U(this,"autoPower",a,6);this.h=0;this.U=+a.busWidth||+a.buswidth;this.B=this.s=this.D=null;this.A=this.O=!1;this.u=this.j=null;this.M=this.K=!1;this.X=U(this,"url")||"";(Math.random()+.1).toString(36);this.c=dc(this);if(this.f=z("CPU",this.id)){this.o=z("Debugger",this.id);this.l=new nb({id:this.ka+".bus",busWidth:this.U},this.f,this.o);var d,e=y(this.id);if((this.g=z("Panel",this.id))&&this.g.Z)for(b=0;b<e.length;b++)d=
e[b],d.C=this.g.C,d.I=this.g.I,d.Z=this.g.Z;this.I(L+" v1.34.0\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.V&&d.V(this,this.l,this.f,this.o);b=null;d=U(this,"resume",a);void 0!==d&&(1<d.length?b=this.s=d:this.a=parseInt(d,10));var f;if(a=U(this,"state")||(f=!0,a.state))this.D=b=a,f||(this.A=!0,this.a=ec),this.a&&(this.u=new O(this,"1.34.0"),Z(this.u)?b=null:delete this.u);!b&&this.a&&
(b=fc(this))&&(this.A=!0);if(b){var g=this;H(b,null,!0,function(a,b,c){c?(g.s=null,g.A=!1,g.C("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(g.B=b,g.O=!0);E(g)})}else E(this);this.i.power||(this.H=!0);!c&&this.H&&gc(this,this.ba)}else x("Unable to find CPU component")}n(bc,u);function cc(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 U(a,b,c,d){var e=b.toLowerCase(),e=Ka(b)||Ka(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 gc(a,b,c){for(var d=y(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ta(f)){ta(f,function(){gc(a,b,c)});return}}b.call(a,c)}
function hc(a,b){var c=new O(a,"1.34.0",ic);if(Z(c)&&jc(c)){var d=c.get(kc),e=b?b.get(kc):"unknown";d!=e&&(a.C("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=bc.prototype;
k.ba=function(a){void 0===a&&(a=this.a||(this.B?lc:ec));if(!this.h){this.h++;var b=!1,c=!1;this.K=!1;var d=this.u||new O(this,"1.34.0");if(a==mc)b=!0;else if(a>ec){if(Z(d,this.B)){this.j=new O(this,"1.34.0",nc);Z(this.j)&&(oc(this,d),a=pc,qc(this.j));this.j.set(kc,Da());rc(this.j);var e=this.a&&!this.A;if(a==lc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=jc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(sc,""),this.c=null)):this.I(f+": "+g),qc(d),Z(d)?(c=jc(d),e=!0):c=!1))}e&&hc(this,c?d:null)}else a==pc&&d.clear()}else hc(this);delete this.B;delete this.u}e=y(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=tc(this,g,d,b,c));b=[d,a,c];a!=mc?gc(this,this.La,b):this.La(b)}};
function tc(a,b,c,d,e){if(!b.b.w){b.b.w=!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.T(f,d)&&f&&(x("Unable to restore state for "+b.type),a.D&&!a.O?(c.clear(),a.a=ec,window&&window.location.reload()):a.K=!0,b.T(null),e=!1),!d&&b.Ja){var g=b.Ja.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.La=function(a){var b=a[0],c=0>a[1];a=a[2];this.M=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(tc(this,this.f,b,c,a),S(this,-2),this.f.G());this.K&&(oc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0};
function oc(a,b){if(ma("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.X;a=a.c||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}}
function uc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.0"),g=new O(a,"1.34.0",ic),h=Da();g.set(kc,h);f.set(kc,h);f.set(vc,"1.34.0");f.set(wc,window?window.location.href:null);f.set(xc,window?window.navigator.userAgent:"");a.f&&a.f.N&&(c&&(b&&(a.f.b.G=a.f.b.v),R(a.f)),d=a.f.N(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.b.w=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l<h.length;l++){var p=h[l];p.b.w&&(p.N&&(d=p.N(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.b.w=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&yc(a,a.c,f.toString()),rc(g)&&rc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==zc),d&&f.clear(h)):e=f.toString());c&&(a.b.w=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.b.reset=!0;this.l&&this.l.reset&&this.l.reset();this.f&&this.f.reset&&this.f.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.l&&c!==this.f&&c.reset&&c.reset()}this.b.reset=!1;S(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)},X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X];
function Yb(a){u.call(this,"ROM",a);this.J=this.a=null;this.j=+a.addr;this.g=+a.size;this.c=a.alias;"string"==typeof this.c&&(this.c=eval(this.c));this.h=a.file;this.s=xa(this.h);if(this.h){a=this.h;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.h+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load ROM resource (error "+f+": "+a+")"),c.h=null):(ka(c.ma,a,b),(a=Ea(a,b))?(c.a=a.F,c.J=a.J):c.h=null);Zb(c)})}}n(Yb,u);
Yb.prototype.X=function(a,b,c,d){this.l=b;this.f=c;this.o=d;Zb(this)};Yb.prototype.U=function(){this.J&&(this.o&&this.o.a(this.id,this.j,this.g,this.J),delete this.J);return!0};Yb.prototype.O=function(){return!0};
function Zb(a){if(!ua(a)){if(a.h){if(!a.a||!a.l)return;a.g||(a.g=a.a.length);if(a.a.length!=a.g){var b="ROM size ("+F(a.a.length,8,!0)+") does not match specified size ("+F(a.g,8,!0)+")";a.b.error=!0;a.C(b)}else{b=a.j;if(rb(a.l,b,a.g,zb)){var c;for(c=0;c<a.a.length;c++)nb(a.l,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.c?b.push(a.c):null!=a.c&&a.c.length&&(b=a.c);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.l,g=d.g,h=[],l=d.j>>>f.c;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=16384;f=d.l;
d=d.g;g=0;for(e>>>=f.c;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=16384}}delete a.a}}}E(a)}}I(function(){for(var a=D(document,C,"rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Yb(d);B(d,c)}});
function Y(a){u.call(this,"RAM",a);this.J=this.c=null;this.g=+a.addr;this.h=+a.size;this.S=a.load;this.R=a.exec;null!=this.S&&(this.S=+this.S);null!=this.R&&(this.R=+this.R);this.j=!1;this.a=a.file;this.s=xa(this.a);if(this.a){a=this.a;var b=ya(this.s);"json"!=b&&"hex"!=b&&(a=G()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;H(a,null,!0,function(a,b,f){f?(c.C("Unable to load RAM resource (error "+f+": "+a+")"),c.a=null):(ka(c.ma,a,b),(a=Ea(a,b))?(c.c=a.F,c.J=a.J,null==c.S&&
(c.S=a.S),null==c.R&&(c.R=a.R)):c.a=null);$b(c)})}}n(Y,u);Y.prototype.X=function(a,b,c,d){this.l=b;this.f=c;this.o=d;$b(this)};Y.prototype.U=function(a,b){this.J&&(this.o&&this.o.a(this.id,this.g,this.h,this.J),delete this.J);b||this.reset();return!0};Y.prototype.O=function(){return!0};
function $b(a){if(a.l&&(!a.j&&a.h&&(rb(a.l,a.g,a.h,1)?a.j=!0:a.h=0),!ua(a))){if(!a.j)x("No RAM allocated");else if(a.a){if(!a.c||!a.l)return;ac(a,a.c,a.S,a.R,a.g)?a.status('Loaded image "'+a.s+'"'):a.C('Error loading image "'+a.s+'"')}E(a)}}
Y.prototype.reset=function(){if(this.j){for(var a=this.l,b=this.g,c=this.h,d=b&16383,b=b>>>a.c;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.Z+d);c-=16384;b++;d=0}this.c&&ac(this,this.c,this.S,this.R,this.g,!this.o)}};
function ac(a,b,c,d,e,f){var g=!1,h=!1;if(null==c)for(var l=0;l<b.length-1;){var p=b[l]&255|(b[l+1]&255)<<8;if(p)if(p&255){if(1!=p)break;if(l+6>=b.length)break;for(var l=l+2,q=b[l++]&255|(b[l++]&255)<<8,t=b[l++]&255|(b[l++]&255)<<8,p=p+((q&255)+(q>>8)+(t&255)+(t>>8)),P=l,ta=q-=6;0<q&&l<b.length;)p+=b[l++]&255,q--;if(q||l>=b.length)break;p+=b[l++]&255;if(p&255)break;if(ta)for(;ta--;)nb(a.l,t++,b[P++]);else t&1?g=!0:null==d&&(d=t);h=!0}else l++;else l+=2}if(!h&&(null==c&&(c=e),null!=c)){for(h=0;h<b.length;h++)nb(a.l,
c+h,b[h]);h=!0}if(h){if(null==d||g)R(a.f),f=!1;null!=d&&(a=a.f,a.Ja=d,a.g=d%Sa,f?a.b.w?a.b.v||ib(a):a.b.G=!0:a.o&&a.b.w?R(a)||a.m.b.reset||(a.o.g(),S(a.m,-1)):!1===f&&R(a),!a.b.v&&a.ka&&a.ka.stop())}return h}I(function(){for(var a=D(document,C,"ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Y(d);B(d,c)}});
function bc(a){u.call(this,"SerialPort",a);this.h=a.upperCase;"string"==typeof this.h&&(this.h="true"==this.h);this.g=!0;this.c=[];var b=a.binding;if("console"!=b){var c;a=cc;b&&(void 0===c&&(c="Panel"),(c=z(c,this.id))&&(b=c.i[b])&&this.T(null,a,b))}this.a=this.j=null;this.exports={connect:this.Oa,receiveData:this.va,receiveStatus:this.nb,setConnection:this.qb}}n(bc,u);k=bc.prototype;
k.T=function(a,b,c){var d=this;switch(b){case cc:return this.i[b]=c,c.onkeydown=function(a){a=a||window.event;var b=0,c=a.keyCode;8==c?b=a.altKey?r.Ha:r.Sa:46==c?b=r.Ha:a.ctrlKey&&c>=r.Ga&&c<=r.Wa&&(b=c-(r.Ga-r.Pa));b&&(a.preventDefault&&a.preventDefault(),d.va(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==r.Ra&&(b=r.Qa);d.va(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation();
a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.va(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};k.X=function(a,b,c,d){this.m=a;this.l=b;this.f=c;this.o=d;E(this)};
k.Oa=function(a){if(!this.a){var b=U(this.m,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ca(c[0]);if(d!=this.la)return;c=Ca(c[1]);if(this.a=na(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.g);if(this.j=e.receiveData){this.g=a;this.status("Connected "+this.ma+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};k.U=function(a,b){if(!b)if(this.Oa(this.g),!a)this.reset();else if(!this.restore(a))return!1;return!0};
k.O=function(a){return a?this.save():!0};k.reset=function(){};k.save=function(){var a=new O(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};k.va=function(a){if("number"==typeof a)this.c.push(a);else if("string"==typeof a)for(var b=0,c,d=0;d<a.length;d++){c=b;b=a.charCodeAt(d);if(10==b){if(13==c)continue;b=13}this.c.push(b)}else this.c=this.c.concat(a);return!0};k.nb=function(){};k.qb=function(a,b){return this.a?!1:(this.a=a,this.j=b,!0)};var cc="buffer";
I(function(){for(var a=D(document,C,"serial"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new bc(d);B(d,c)}});
function dc(a,b,c){u.call(this,"Computer",a);this.b.w=!1;this.L=null;ec(this,b);this.H=U(this,"autoPower",a,6);this.h=0;this.V=+a.busWidth||+a.buswidth;this.B=this.s=this.D=null;this.A=this.P=!1;this.u=this.j=null;this.N=this.K=!1;this.W=U(this,"url")||"";(Math.random()+.1).toString(36);this.c=fc(this);if(this.f=z("CPU",this.id)){this.o=z("Debugger",this.id);this.l=new ob({id:this.ma+".bus",busWidth:this.V},this.f,this.o);var d,e=y(this.id);if((this.g=z("Panel",this.id))&&this.g.aa)for(b=0;b<e.length;b++)d=
e[b],d.C=this.g.C,d.I=this.g.I,d.aa=this.g.aa;this.I(L+" v1.34.0\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.X&&d.X(this,this.l,this.f,this.o);b=null;d=U(this,"resume",a);void 0!==d&&(1<d.length?b=this.s=d:this.a=parseInt(d,10));var f;if(a=U(this,"state")||(f=!0,a.state))this.D=b=a,f||(this.A=!0,this.a=gc),this.a&&(this.u=new O(this,"1.34.0"),Z(this.u)?b=null:delete this.u);!b&&this.a&&
(b=hc(this))&&(this.A=!0);if(b){var g=this;H(b,null,!0,function(a,b,c){c?(g.s=null,g.A=!1,g.C("Unable to load machine state from server (error "+c+(b?": "+Ca(b):"")+")")):(g.B=b,g.P=!0);E(g)})}else E(this);this.i.power||(this.H=!0);!c&&this.H&&ic(this,this.da)}else x("Unable to find CPU component")}n(dc,u);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 U(a,b,c,d){var e=b.toLowerCase(),e=Ka(b)||Ka(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=y(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ua(f)){ua(f,function(){ic(a,b,c)});return}}b.call(a,c)}
function jc(a,b){var c=new O(a,"1.34.0",kc);if(Z(c)&&lc(c)){var d=c.get(mc),e=b?b.get(mc):"unknown";d!=e&&(a.C("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.da=function(a){void 0===a&&(a=this.a||(this.B?nc:gc));if(!this.h){this.h++;var b=!1,c=!1;this.K=!1;var d=this.u||new O(this,"1.34.0");if(a==oc)b=!0;else if(a>gc){if(Z(d,this.B)){this.j=new O(this,"1.34.0",pc);Z(this.j)&&(qc(this,d),a=rc,sc(this.j));this.j.set(mc,Da());tc(this.j);var e=this.a&&!this.A;if(a==nc||ma("Click OK to restore the previous "+L+" machine state, or CANCEL to reset the machine.")){if(c=lc(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Z(d,g):("error"==f&&"no machine state"!=
g?(this.C("Error: "+g),"unable to verify user"==g&&(Ia(uc,""),this.c=null)):this.I(f+": "+g),sc(d),Z(d)?(c=lc(d),e=!0):c=!1))}e&&jc(this,c?d:null)}else a==rc&&d.clear()}else jc(this);delete this.B;delete this.u}e=y(this.id);for(f=0;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.Ma,b):this.Ma(b)}};
function vc(a,b,c,d,e){if(!b.b.w){b.b.w=!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.U(f,d)&&f&&(x("Unable to restore state for "+b.type),a.D&&!a.P?(c.clear(),a.a=gc,window&&window.location.reload()):a.K=!0,b.U(null),e=!1),!d&&b.Ka){var g=b.Ka.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.Ma=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.b.w=!0;var d=this.i.power;d&&(d.textContent="Shutdown");this.f&&(vc(this,this.f,b,c,a),S(this,-2),this.f.G());this.K&&(qc(this,b),b.clear());!c&&this.j&&(this.j.clear(),delete this.j);this.h=0};
function qc(a,b){if(ma("There may be a problem with your "+L+" machine.\n\nTo help us diagnose it, click OK to send this "+L+" machine state to http://www.pcjs.org.")){var c=a.W;a=a.c||"";b=b.toString();var d={};d.app=L;d.ver="1.34.0";d.url=c;d.user=a;d.type="bug";d.data=b;H("http://www.pcjs.org/api/v1/report",d,!0)}}
function wc(a,b,c){var d,e="none";if(a.h)return null;a.h--;var f=new O(a,"1.34.0"),g=new O(a,"1.34.0",kc),h=Da();g.set(mc,h);f.set(mc,h);f.set(xc,"1.34.0");f.set(yc,window?window.location.href:null);f.set(zc,window?window.navigator.userAgent:"");a.f&&a.f.O&&(c&&(b&&(a.f.b.G=a.f.b.v),R(a.f)),d=a.f.O(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.b.w=!1,!1===d&&(e=null)));for(var h=y(a.id),l=0;l<h.length;l++){var p=h[l];p.b.w&&(p.O&&(d=p.O(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.b.w=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&Ac(a,a.c,f.toString()),tc(g)&&tc(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==Bc),d&&f.clear(h)):e=f.toString());c&&(a.b.w=!1,b=a.i.power)&&(b.textContent="Power");a.h=0;return e}k.reset=function(){this.b.reset=!0;this.l&&this.l.reset&&this.l.reset();this.f&&this.f.reset&&this.f.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.l&&c!==this.f&&c.reset&&c.reset()}this.b.reset=!1;S(this,-1)};
k.start=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}S(this,-1)};k.stop=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}S(this,-1)};
function S(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.wa+=d))&&(e.textContent=c.b.v?c.H.toFixed(2)+"Mhz":"Stopped",c.wa=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.f.b.v;d=!!(a.f.c&8);if(0>=b||60<=(a.A+=b)){e=a.f.g;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.c=a.f.g:0<b&&c&&!d&&(a.c=a.f.da);Q(a,a.c);M(a,a.h)}}
k.S=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.b.w?uc(d,!1,!0):gc(d,d.ba))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.b.w&&!d.h)if(d.a&&!d.s){var a=ma("Click OK to save changes to this "+L+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");uc(d,a,!0);!a&&d.D?window&&window.location.reload():d.ba(ec)}else d.reset(),d.f&&!d.o&&d.f.G()},!0;case "save":if(za())c.parentNode.removeChild(c);else return this.i[b]=
c,c.onclick=function(){var a=dc(d,!0);if(a){var b=!!(d.a&&!d.s||d.D),c=uc(d,b);b?yc(d,a,c):d.C("Resume disabled, machine state not saved")}},!0}return!1};function dc(a,b){var c=a.c;c||((c=Ha(sc),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=Ac(a,c))||a.C("The user ID is invalid.")):b&&a.C("Browser local storage is not available"));return c}
function Ac(a,b){a.c=null;b=H(G()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia(sc,b.data),a.c=b.data)}catch(d){x(d.message+" ("+c+")")}return a.c}function fc(a){var b=null;a.c&&(b=G()+"/api/v1/user?req=load&user="+a.c+"&state="+Bc(a,"1.34.0"));return b}
function yc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Bc(a,"1.34.0");d.data=c;b=H(G()+"/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.C("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.C(c),Ia(sc,""),a.c=null)}}
var nc="failsafe",ic="validate",kc="timestamp",vc="version",wc="url",xc="browser",sc="user",mc=-1,ec=0,lc=1,pc=2,zc=3;I(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new bc(g,d,!0);B(g,f);g.H&&gc(g,g.ba)}});J.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.M&&!c.b.w&&c.ba(mc)}});
J.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.b.w&&uc(c,!(!c.a||c.s),!0)}});function O(a,b,c){this.id=a.id;this.f="";this.a={};this.i=this.l=!1;this.key=Bc(a,b,c);qc(this,a.Ua)}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.i=!0,a.l=!1,!0):a.i?!0:Fa()&&(b=Ha(a.key))?(a.f=b,a.i=!0):!1}
function jc(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 rc(a){var b=!0;if(Fa()){var c=JSON.stringify(a.a);Ia(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 qc(a,b){a.f="";a.a={};a.i=a.l=!1;b&&a.set("parms",b)}
k.clear=function(a){qc(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 Bc(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 Cc=0;
function Dc(a,b,c,d,e,f,g){f("Loading "+a+"...");H(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):Ec(l,a,b,c,d,e,f,g)})}
function Ec(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(ka(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(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Fc(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Fc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");H(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,q=/( [a-z]+=)(['"])(.*?)\2/g;p=q.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);Fc(a,b,c)}})}else c(a,null)}
function Gc(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&D(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=Aa(a))}function g(a){f("Error: "+a);p&&(--Cc||K(!0));p=!1}var h,l,p=!0;Cc++;la[b]={};try{if(h=document.getElementById(b)){var q;if("object"==typeof resources&&(q=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],P=document.createElement("style");P.type="text/css";P.styleSheet?P.styleSheet.cssText=q:P.appendChild(document.createTextNode(q));t.appendChild(P)}d||
(q=a,"pdp"==a.substr(0,3)&&(q="pdpjs"),d="/versions/"+q+"/1.34.0/components.xsl");q=function(e,l){l?Dc(d,null,a,null,!1,f,function(a,e){e?(ka(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Cc||K(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Cc||
K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Dc(c,b,a,e,!0,f,q):Ec(c,null,b,a,e,!1,f,q)}else g("missing machine element: "+b)}catch(ua){g(ua.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Gc("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Gc("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")};
function S(a,b){if(a.f){var c=a.f,d=b||0,e=c.i.speed;e&&(0>=d||30<=(c.ya+=d))&&(e.textContent=c.b.v?c.H.toFixed(2)+"Mhz":"Stopped",c.ya=0)}if(a.g&&(a=a.g,b=b||0,a.B)){c=a.f.b.v;d=!!(a.f.c&8);if(0>=b||60<=(a.A+=b)){e=a.f.g;if(a.i.PC){var f=a.o&&a.o.j||8,e=e||0,e=8==f?wa(e,void 0):F(e,void 0);a.i.PC.textContent!=e&&(a.i.PC.textContent=e)}a.A=0}-1>b?a.c=a.f.g:0<b&&c&&!d&&(a.c=a.f.ha);Q(a,a.c);M(a,a.h)}}
k.T=function(a,b,c){var d=this;switch(b){case "power":return this.i[b]=c,c.onclick=function(){d.h||(d.b.w?wc(d,!1,!0):ic(d,d.da))},!0;case "reset":return this.i[b]=c,c.onclick=function(){if(d.b.w&&!d.h)if(d.a&&!d.s){var a=ma("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.D?window&&window.location.reload():d.da(gc)}else d.reset(),d.f&&!d.o&&d.f.G()},!0;case "save":if(za())c.parentNode.removeChild(c);else return this.i[b]=
c,c.onclick=function(){var a=fc(d,!0);if(a){var b=!!(d.a&&!d.s||d.D),c=wc(d,b);b?Ac(d,a,c):d.C("Resume disabled, machine state not saved")}},!0}return!1};function fc(a,b){var c=a.c;c||((c=Ha(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=Cc(a,c))||a.C("The user ID is invalid.")):b&&a.C("Browser local storage is not available"));return c}
function Cc(a,b){a.c=null;b=H(G()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ia(uc,b.data),a.c=b.data)}catch(d){x(d.message+" ("+c+")")}return a.c}function hc(a){var b=null;a.c&&(b=G()+"/api/v1/user?req=load&user="+a.c+"&state="+Dc(a,"1.34.0"));return b}
function Ac(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Dc(a,"1.34.0");d.data=c;b=H(G()+"/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.C("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.C(c),Ia(uc,""),a.c=null)}}
var pc="failsafe",kc="validate",mc="timestamp",xc="version",yc="url",zc="browser",uc="user",oc=-1,gc=0,nc=1,rc=2,Bc=3;I(function(){for(var a=D(document,C+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=D(c,C,"computer"),e=0;e<c.length;e++){var f=c[e],g=A(f),g=new dc(g,d,!0);B(g,f);g.H&&ic(g,g.da)}});J.show.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.N&&!c.b.w&&c.da(oc)}});
J.exit.push(function(){for(var a=D(document,C,"computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=z("Computer",c.id))&&c.b.w&&wc(c,!(!c.a||c.s),!0)}});function O(a,b,c){this.id=a.id;this.f="";this.a={};this.i=this.l=!1;this.key=Dc(a,b,c);sc(this,a.Va)}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.i=!0,a.l=!1,!0):a.i?!0:Fa()&&(b=Ha(a.key))?(a.f=b,a.i=!0):!1}
function lc(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 tc(a){var b=!0;if(Fa()){var c=JSON.stringify(a.a);Ia(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 sc(a,b){a.f="";a.a={};a.i=a.l=!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 Dc(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 Ec=0;
function Fc(a,b,c,d,e,f,g){f("Loading "+a+"...");H(a,null,!0,function(h,l,p){p?(l||(l="unable to load "+a+" ("+p+")"),g(l,null)):Gc(l,a,b,c,d,e,f,g)})}
function Gc(a,b,c,d,e,f,g,h){function l(a,g){if(g)h(g,null);else{c&&(ka(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(t){g=null,a=t.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Hc(a,g,l):l(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Hc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");H(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,q=/( [a-z]+=)(['"])(.*?)\2/g;p=q.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);Hc(a,b,c)}})}else c(a,null)}
function Ic(a,b,c,d,e){function f(a){if(void 0===l){var b=h&&D(h,"machine-warning");l=b&&b[0]||h}l&&(l.innerHTML=Aa(a))}function g(a){f("Error: "+a);p&&(--Ec||K(!0));p=!1}var h,l,p=!0;Ec++;la[b]={};try{if(h=document.getElementById(b)){var q;if("object"==typeof resources&&(q=resources.css)){var t=document.head||document.getElementsByTagName("head")[0],P=document.createElement("style");P.type="text/css";P.styleSheet?P.styleSheet.cssText=q:P.appendChild(document.createTextNode(q));t.appendChild(P)}d||
(q=a,"pdp"==a.substr(0,3)&&(q="pdpjs"),d="/versions/"+q+"/1.34.0/components.xsl");q=function(e,l){l?Fc(d,null,a,null,!1,f,function(a,e){e?(ka(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(h.outerHTML=e,--Ec||K(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Ec||
K(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Fc(c,b,a,e,!0,f,q):Gc(c,null,b,a,e,!1,f,q)}else g("missing machine element: "+b)}catch(ta){g(ta.message)}return p}window.embedPDP10=function(a,b,c,d){K(!1);return Ic("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){K(!1);return Ic("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return z(b,a+".machine")};
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!pa[a]){for(var c=!0,d=pa,e=a,f=b.length,g=[],h=[],l="",p=null,q=0;q<f;q++){var t=b[q];if('"'==t||"'"==t)p&&t!=p?l+=t:(p?p=null:p=t,l&&(h.push(l),l=""));else{if(!p){if("\r"==t||"\n"==t)t=";";if(" "==t||"\t"==t||";"==t){l&&(h.push(l),l="");";"==t&&h.length&&(g.push(h),h=[]);continue}}l+=t}}l&&h.push(l);h.length&&g.push(h);d[e]=g;oa(a)||(c=!1)}return c};window.enableEvents=K;window.sendEvent=Qa;})();//# sourceMappingURL=/tmp/pdpjs/1.34.0/pdp10.map