pcjs/versions/pdpjs/1.34.2/pdp10.js

178 lines
64 KiB
JavaScript

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