pcjs/versions/pdp11/1.30.0/pdp11.js

138 lines
55 KiB
JavaScript

(function(){var l;
function aa(a){var b=16,c;if(a){b||(b=10);var d=a.charAt(0),f=0<a.indexOf(",");f&&(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&&f&&(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 e,d=a;((f=b)&&10!=f?16==f?d.match(/^[0-9a-f]+$/i):8==f?d.match(/^[0-7]+$/):2==
f&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}function n(a,b){var c="";b?11<b&&(b=11):b=a&-65536?11:6;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;)c=String.fromCharCode((a&7)+48)+c,a>>=3;return""+c}function q(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var f=a&15,f=f+(0<=f&&9>=f?48:55),d=String.fromCharCode(f)+d;a>>=4}return(c?"0x":"")+d}
function ba(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 ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function da(){var a=ea();return-1!==a.indexOf("pcjs.org",a.length-8)}var fa={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ga(a){return a.replace(/[&<>"']/g,function(a){return fa[a]})}var ha=Date.now||function(){return+new Date};
function ia(){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){var f=0,e=null,g=null;if("object"==typeof resources&&(e=resources[a]))return d&&d(a,e,f),[e,f];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&&(e=h.responseText,200==h.status||!h.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(f=h.status||-1),d&&d(a,e,f))});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||(e=h.responseText,200!=h.status&&(f=h.status||-1),d&&d(a,e,f),g=[e,f]);return g}function ea(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function t(a){window&&window.alert(a)}function ja(a){var b=!1;window&&(b=window.confirm(a));return b}var ka=null;function la(){if(null==ka){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}ka=a}return ka}function ma(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function na(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function oa(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)?!0:!1}return!1}var u={init:[],show:[],exit:[]},pa=!1,qa=!1,ra=!0;function sa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function v(a){u.init.push(a)}
function ta(a){if(ra)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 ua(a){!ra&&a?(ra=!0,pa&&va("init"),qa&&va("show")):ra=a}function va(a){u[a]&&ta(u[a])}sa("onload",function(){pa=!0;ta(u.init)});sa("onpageshow",function(){qa=!0;ta(u.show)});sa(oa("Opera")||oa("iOS")?"onunload":"onbeforeunload",function(){ta(u.exit)});
function w(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Kb=b.comment;this.fc=b;b=this.id.indexOf(".");0>b?this.wb=this.id:(this.Hb=this.id.substr(0,b),this.wb=this.id.substr(b+1));this[a]=c;this.f={ready:!1,ab:!1,Ab:!1,M:!1,error:!1};this.mb=null;this.f.error=!1;this.o={};this.G=null;x.push(this)}var wa=void 0,xa={};
if(window){wa||(wa=window.location.search.substr(1));for(var ya,za=/\+/g,Aa=/([^&=]+)=?([^&]*)/g;ya=Aa.exec(wa);)xa[decodeURIComponent(ya[1].replace(za," "))]=decodeURIComponent(ya[2].replace(za," "))}function Ba(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function y(a,b){b||(b=w);a.prototype=Ba(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ca=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else Ca={},x=[];function Da(a,b,c){Ca[a]&&b&&(Ca[a][b]=c)}function z(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function Ea(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<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function A(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
function B(a,b){b=C(b.parentNode,"pdp11-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,f=0;f<d.length;f++){var e=d[f];if(1===e.nodeType){var g=e.getAttribute("class");if(g)for(var h=g.split(" "),k=0;k<h.length;k++)switch(g=h[k],g){case "pdp11-binding":(g=A(e))&&g.binding&&a.aa(g.type,g.binding,e,g.value),k=h.length}}}}
function C(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},aa:function(a,b,c){switch(b){case "clear":return this.o[b]||(this.o[b]=c,c.onclick=function(a){return function(){a.o.print&&(a.o.print.value="")}}(this)),!0;case "print":return this.o[b]||(this.Bb=this.o[b]=c,c.value="",this.J=function(a){return function(b,d){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==d?d+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.L=function(a){this.J(a,this.wb)}),!0;default:return!1}},log:function(){},J:function(){},status:function(a){this.J(this.wb+": "+a)},L:function(a,b,c){c=c||this.type;b||t((c?c+": ":"")+a)},ua:function(){return this.f.M=!0},ta:function(a,b){b&&(this.f.M=!1);return!0}};function Fa(a,b){if(a.f.Ab)return a.f.ab&&(a.f.ab=!1),a.f.Ab=!1;if(a.f.error)return a.J(a.toString()+" error"),!1;a.f.ab=b;return a.f.ab}function D(a){if(!a.f.error&&(a.f.ready=!0,a.f.ready)){var b=a.mb;a.mb=null;b&&b()}}
function Ga(a,b){b&&(a.f.ready?b():a.mb=b);return a.f.ready}var Ha="undefined"!==typeof ArrayBuffer,F=2,H=4,Ia=6,F=0|F,Ja=1|F,H=0|H,Ka=1|H,Ia=0|Ia,La=1|Ia;function Ma(a){w.call(this,"Panel",a,Ma)}y(Ma);l=Ma.prototype;l.aa=function(a,b,c,d){return this.g&&this.g.aa(a,b,c,d)||this.a&&this.a.aa(a,b,c,d)?!0:this.parent.aa.call(this,a,b,c,d)};l.Ha=function(a,b,c,d){this.g=a;this.j=b;this.a=c;this.G=d};l.ua=function(a,b){b||Na();return!0};l.ta=function(){return!0};l.La=function(){};
function Na(){for(var a=!1,b=C(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=A(d),e;a:{e=f.id;if(void 0!==e){var g;for(g=0;g<x.length;g++)if(x[g].id===e){e=x[g];break a}}e=null}e||(a=!0,e=new Ma(f));B(e,d);a&&D(e)}}v(Na);
function I(a,b,c){w.call(this,"Bus",a,I);this.a=b;this.G=c;this.C=a.busWidth||16;this.u=Math.pow(2,this.C);this.l=this.u-1|0;this.j=(this.C>>1)+2;10>this.j&&(this.j=10);15<this.j&&(this.j=15);this.g=1<<this.j;this.H=this.g>>2;this.h=this.g-1;this.s=this.u/this.g|0;this.K=this.s-1;this.na=[];this.A=null;this.bb=this.P;a=new J;Oa(a,this.G);this.b=Array(this.s);for(b=0;b<this.s;b++)this.b[b]=a;this.Ya=Array(4);this.Ya[0]=Pa;this.Ya[1]=Qa;this.Ya[2]=Ra;this.Ya[3]=Sa;Ta(this,this.u-8192,8192,Ua,this);
Ta(this,57344,8192,Ua,this);D(this)}y(I);function Pa(a,b){var c=this.controller,d=c.na[a];if(d){if(d[0])return d[0](b);if(d[2])return b&1?d[2](b&-2)>>8:d[2](b)&255}else if(b&1&&(d=c.na[a&-2],d[2]))return d[2](b&-2)>>8;c.J("warning: unconverted read access to byte @"+n(b));return c.bb(b,-1,1)}
function Qa(a,b,c){var d=this.controller,f=d.na[a];if(f){if(f[1]){f[1](b,c);return}if(f[3]){a=f[2]?f[2](c):0;if(c&1)f[3](a&255|b<<8,c&-2);else f[3](a&-256|b,c);return}}else if(c&1&&(f=d.na[a&-2],f[3])){c&=-2;a=f[2]?f[2](c):0;f[3](a&255|b<<8,c);return}d.J("warning: unconverted write access to byte @"+n(c));d.bb(c,b,1)}
function Ra(a,b){var c=this.controller;if(a=c.na[a]){if(a[2])return a[2](b);if(a[0])return a[0](b)|a[0](b+1)<<8}c.J("warning: unconverted read access to word @"+n(b));return c.bb(b,-1,0)}function Sa(a,b,c){var d=this.controller;if(a=d.na[a]){if(a[3]){a[3](b,c);return}if(a[1]){a[1](b&255,c);a[1](b>>8,c+1);return}}d.J("warning: unconverted write access to word @"+n(c));d.bb(c,b,0)}I.prototype.reset=function(){this.A&&this.A()};I.prototype.P=function(){return 0};
I.prototype.ua=function(a,b){b||this.reset();return!0};function Ta(a,b,c,d,f){for(var e=b,g=c,h=e>>>a.j;0<g&&h<a.b.length;){var k=a.b[h],m=h*a.g,p=a.g-(e-m);p>g&&(p=g);if(k&&k.size){if(k.type==d&&k.controller==f){if(e+g<=k.Ra)return k.ub+=k.Ra-e,k.Ra=e,!0;if(e>=k.Ra+k.ub){p=k.size-(e-m);p>g&&(p=g);k.ub=e-k.Ra+p;e=m+a.g;g-=p;h++;continue}}return Va(1,e,g)}e=new J(e,p,a.g,d,f);Oa(e,a.G,k);a.b[h++]=e;e=m+a.g;g-=p}return 0>=g?(a.status(Math.floor(c/1024)+"Kb "+Wa[d]+" at "+q(b,8,!0)),!0):Va(2,b,c)}
function Xa(a){for(var b=0,c=[],d=0;d<a.s;d++){var f=a.b[d];if(f.ra||f.ec){c[b++]=d;var e=b++;if(f=f.save()){for(var g=0,h=0,k=[];g<f.length;){for(var m=f[g],p=g+1;p<f.length&&f[p]===m;)p++;k[h++]=p-g;k[h++]=m;g=p}k.length<f.length&&(f=k)}c[e]=f}}return c}function Va(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}
function K(a){w.call(this,"Device",a,K);this.b={Eb:[],da:0,U:128,o:127,dc:0};this.g={data:0,Dc:0,Sa:20,yc:0};this.h={Db:0,i:0};this.l={hb:2496,O:0,v:128,ib:0,gb:0,T:0,Ub:0,R:[],Fa:[406,406,406,406],D:[12,12,12,12]};this.s={i:129,$a:0,F:0,sa:0,oa:0,ya:0,R:[],D:[40,40,40,40],Fa:[1024,1024,512,512],bc:[157,157,29,29]};this.u={a:[8210,8208,8210,8226],D:[22,22,22,50],Ea:[19,19,19,32],vb:[815,411,815,630],R:[],w:2176,Wa:0,Ua:0,$:[0,0,0,0,0,0,0,0],Z:0,S:[4544,4544,4544,4544,4544,4544,4544,4544],Va:[0,0,
0,0,0,0,0,0],Ka:0,wc:[0,0,0,0,0,0,0,0],Vb:0,Wb:[0,0,0,0,0,0,0,0],b:[0,0,0,0,0,0,0,0],xc:[1,2,3,4,5,6,7,8],Xb:[0,0,0,0,0,0,0,0],ia:[0,0,0,0,0,0,0,0],tb:[0,0,0,0,0,0,0,0],uc:[0,0,0,0,0,0,0,0],vc:[0,0,0,0,0,0,0,0],sc:[0,0,0,0,0,0,0,0],tc:[0,0,0,0,0,0,0,0],xa:0,Fb:0}}y(K);
var Ya=[4127,448,4191,450,4383,452,2591,454,21983,32768,65534,13791,16384,65534,770,2719,454,2591,65534,257,0,2566,33028,34051,33282,1281,33537,0,2758,32771,770,1025,1793,0,3078,33794,34305,513,0,5574,43690,4480,4097,4162,4227,4292,4357,57665,1281,769,0,3138,34305,1281,0,24707,2691,2627,24769,34561,1793,0,3076,20739,24899,2691,34562,2753,1281,0,2624,33537,0,16385,24641,1537,1793,0,193,8279,21589,516,12549,1538,2629,513,0,38336,65281,32769,0,32258,2561,2689,32258,3008,514,3009,769,0,5574,510,2551,
2,0,9678,208,769,0,5582,226,135,0,2598,5606,236,2,0,95,242,128,5573,57344,2591,6,5599,256,4,5574,510,3045,5599,460,76,2591,78,5571,65510,5579,12,5570,512,4224,4104,3024,8197,33788,4224,4609,8193,769,0,2640,8197,33785,6145,2625,8193,769,0,8194,761,2574,5572,43690,5579,24,5568,2048,5570,512,2628,4360,2632,2632,8708,769,0,3103,65514,34562,0,305,35406,754,258,119,65160,3024,32403,5579,36,5568,3072,35446,1,740,5570,512,4224,4104,3024,8197,33788,5569,3,2574,3039,454,528,5582,24,4224,2632,2632,8200,769,
0,3024,3103,65514,34562,0,264,8197,33779,5003,2574,32337,260,0,258,5579,12,6080,448,6081,450,6084,452,116,2,6084,65400,17860,65024,21956,62976,38848,65401,3200,161,76,0,16944,10797];l=K.prototype;
l.Ha=function(a,b,c,d){this.j=b;this.a=c;this.G=d;a=Za;for(var f in a){var e=a[f];c=b;d=+f;for(var g=e[0]?e[0].bind(this):null,h=e[1]?e[1].bind(this):null,k=e[2]?e[2].bind(this):null,e=e[3]?e[3].bind(this):null,m=+f;m<=d;m+=2){var p=m&8191;void 0!==c.na[p]?t("I/O address already registered: "+q(m,8,!0)):c.na[p]=[g,h,k,e,!1]}}f=this.ac.bind(this);b.A=this.reset.bind(this);b.bb=f;D(this)};l.nc=function(){return $a(this.a)};l.Ac=function(a){ab(this.a,a&-1809|$a(this.a)&1808);this.a.B|=128};l.oc=function(){return this.b.U};
l.Cc=function(a){if(128==(this.b.U&192)&&a&64){var b=this;L(this.a,8,4,52,function(){b.b.U|=128;return!!(b.b.U&64)})}this.b.U=this.b.U&128|a&-129};
function bb(a){var b=a.l,c,d,f,e=b.T>>13&7;"undefined"===typeof b.R[e]&&(b.R[e]={cache:[],postProcess:a.pc,drive:e,blocksize:256,mapped:0,maxblock:b.Fa[e]*b.D[e],url:"rk"+e+".dsk"});b.v&=-129;switch(b.v>>1&7){case 0:b.hb=2496;b.O=0;b.v=128;b.T=0;break;case 1:if((b.T>>4&511)>=b.Fa[e]){b.O|=32832;b.v|=49152;break}if((b.T&15)>=b.D[e]){b.O|=32800;b.v|=49152;break}c=(b.T>>4&511)*b.D[e]+(b.T&15);d=(b.v&48)<<12|b.gb;f=65536-b.ib&65535;cb(a,b.R[e],c,d,f);return;case 2:if((b.T>>4&511)>=b.Fa[e])b.O|=32832,
b.v|=49152;else if((b.T&15)>=b.D[e])b.O|=32800,b.v|=49152;else{c=(b.T>>4&511)*b.D[e]+(b.T&15);d=(b.v&48)<<12|b.gb;f=65536-b.ib&65535;a.pb(b.R[e],c,d,f);return}}b.hb=e<<13|b.hb&8176|b.T%9&15;L(a.a,20,5,144,function(){b.v=b.v&65534|128;return!!(b.v&64)})}l.pc=function(a,b,c,d,f){var e=this.l;e.gb=d&65535;e.v=e.v&-49|d>>12&48;e.ib=65536-f&65535;switch(a){case 1:e.O|=33024;e.v|=49152;break;case 2:e.O|=33792,e.v|=49152}L(this.a,20,5,144,function(){e.v=e.v&65534|128;return!!(e.v&64)})};
function db(a){var b=a.s,c,d,f,e=b.i>>8&3;b.i&=-2;"undefined"===typeof b.R[e]&&(b.R[e]={cache:[],postProcess:a.qc,drive:e,blocksize:128,mapped:1,maxblock:b.Fa[e]*b.D[e],url:"rl"+e+".dsk"});switch(b.i>>1&7){case 2:b.sa&8&&(b.i&=63);b.sa=b.bc[e]|b.ya&64;break;case 3:1==(b.F&3)&&(b.ya=b.F&4?b.ya+(b.F&65408)&65408|b.F<<2&64:b.ya-(b.F&65408)&65408|b.F<<2&64,b.F=b.ya);break;case 4:b.sa=b.ya;break;case 5:if(b.F>>6>=b.Fa[e]){b.i|=37888;break}if((b.F&63)>=b.D[e]){b.i|=37888;break}c=(b.F>>6)*b.D[e]+(b.F&63);
d=(b.oa&63)<<16|b.$a;f=65536-b.sa&65535;cb(a,b.R[e],c,d,f);return;case 6:if(b.F>>6>=b.Fa[e])b.i|=37888;else if((b.F&63)>=b.D[e])b.i|=37888;else{c=(b.F>>6)*b.D[e]+(b.F&63);d=(b.oa&63)<<16|b.$a;f=65536-b.sa&65535;a.pb(b.R[e],c,d,f);return}}L(a.a,20,5,112,function(){b.i|=129;return!!(b.i&64)})}
l.qc=function(a,b,c,d,f){var e=this.s;e.$a=d&65535;e.i=e.i&-49|d>>12&48;e.oa=d>>16&63;e.F=~~(c/e.D[b.fa])<<6|c%e.D[b.fa];e.ya=e.F;e.sa=65536-f&65535;switch(a){case 1:e.i|=33792;break;case 2:e.i|=40960}L(this.a,20,5,112,function(){e.i|=129;return!!(e.i&64)})};function eb(a){a=a.u;a.w=2176;a.Z=0;a.S=[4544,4544,4544,4544,4544,4544,4544,4544];a.Va=[0,0,0,0,0,0,0,0];a.Ka=a.Wa=a.Ua=a.xa=a.Fb=0}
function fb(a,b){var c=a.u,d,f,e;c.w&=-16513;c.Z&=-2049;c.S[b]&=-1153;L(a.a,-1,0,172);"undefined"===typeof c.R[b]&&(c.R[b]={cache:[],postProcess:a.rc,drive:b,blocksize:256,mapped:0,maxblock:c.vb[0]*c.Ea[0]*c.D[0],url:"rp"+b+".dsk"});switch(c.w&63){case 5:c.tb[b]=c.ia[b];c.w|=32896;c.S[b]|=32896;c.Ka|=1<<b;break;case 9:eb(a);break;case 19:c.S[b]|=64;break;case 49:if(c.ia[b]>=c.vb[0]||c.$[b]>>8>=c.Ea[0]||(c.$[b]&255)>=c.D[0]){c.Va[b]|=1024;c.w|=49152;break}d=(c.ia[b]*c.Ea[0]+(c.$[b]>>8))*c.D[0]+(c.$[b]&
255);f=(c.xa&63)<<16|c.Ua;e=65536-c.Wa&65535;cb(a,c.R[b],d,f,e);return;case 57:if(c.ia[b]>=c.vb[0]||c.$[b]>>8>=c.Ea[0]||(c.$[b]&255)>=c.D[0])c.Va[b]|=1024,c.w|=49152;else{d=(c.ia[b]*c.Ea[0]+(c.$[b]>>8))*c.D[0]+(c.$[b]&255);f=(c.xa&63)<<16|c.Ua;e=65536-c.Wa&65535;a.pb(c.R[b],d,f,e);return}}L(a.a,3,5,172,function(){c.w=c.w&65534|128;c.S[b]|=128;return!!(c.w&64)})}
l.rc=function(a,b,c,d,f){var e=this.u;e.Wa=65536-f&65535;e.Ua=d&65535;e.w=e.w&-769|d>>8&768;e.xa=d>>16&63;f=~~(c/e.D[0]);d=~~(f/e.Ea[0]);e.$[b.fa]=f%e.Ea[0]<<8|c%e.D[0];e.tb[b.fa]=e.ia[b.fa]=d;e.Ka|=1<<b.fa;c>=b.lc-1&&(e.S[b.fa]|=1024);switch(a){case 1:e.Z|=512;e.w|=49152;break;case 2:e.Z|=2048,e.w|=49152}L(this.a,20,5,172,function(){e.S[b.fa]|=128;e.w=e.w&65534|128;return!!(e.w&64)})};l.jc=function(){this.h.i|=128;this.h.i&64&&L(this.a,0,6,64)};
function gb(a,b,c,d,f,e){var g=~~((e+c.pa-1)/c.pa),h=new XMLHttpRequest;2048>g&&d+2048<c.lc&&(g=2048);h.open("GET",c.url,!0);h.setRequestHeader("Range","bytes="+(d*c.pa<<1)+"-"+(((d+g)*c.pa<<1)-1));h.responseType="arraybuffer";h.onreadystatechange=function(){if(4==h.readyState){var g=b.bind(a),m,p,E,G;m=h.response;if(h.status&&206!=h.status||!m)c.ob(1,c,d,f,e);else{m=new Uint8Array(m);p=d;for(G=0;G<m.length;){if("undefined"===typeof c.cache[p])for(c.cache[p]=[],E=0;E<c.pa;E++)c.cache[p][E]=G<m.length?
m[G]&255|m[G+1]<<8&65280:0,G+=2;else G+=c.pa<<1;p++}g(c,d,f,e)}}};h.send(null)}function M(a,b,c,d,f){if(c&1){if(!f)return N(a.a,4,122);d=0<=d?d<<8&65280|b&255:b}else 0<=d?f&&(d=b&65280|d&255):d=b;return d}l.pb=function(a,b,c,d){for(var f;0<d;){if("undefined"===typeof a.cache[b]){gb(this,this.pb,a,b,c,d);return}for(f=0;f<a.pa&&0<d;f++){if(0>hb(this.a,a.kc?ib(this.a,c):c,a.cache[b][f])){a.ob(2,a,b,c,d);return}c+=2;--d}b++}a.ob(0,a,b,c,d)};
function cb(a,b,c,d,f){for(var e,g;0<f;){if("undefined"===typeof b.cache[c])for(b.cache[c]=[],e=0;e<b.pa;e++)b.cache[c][e]=0;for(e=0;e<b.pa&&0<f;e++){g=a.a.rb(b.kc?ib(a.a,d):d);if(0>g){b.ob(2,b,c,d,f);return}b.cache[c][e]=g;d+=2;--f}c++}b.ob(0,b,c,d,f)}l.reset=function(){this.g.Sa=this.g.Sa&-120|20;this.b.da=0;this.b.U=128;this.h.i=0;this.l.v=128;this.s.i=128;eb(this)};
l.ac=function(a,b,c){var d,f,e=this.a;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?d=e.ha&65280:(a&1&&(b<<=8),e.ha=b|255,d=0);break;case 4194298:if(0>b)d=e.sb;else{a&1&&(b<<=8);if(d=b&65024){f=d>>9;do d+=34;while(f>>=1)}e.sb=d;e.va=2}break;case 4194294:if(70!==e.Ga)return N(e,4,222);0>b?d=e.m:d=e.m=0;break;case 4194292:if(70!==e.Ga)return N(e,4,224);d=1;break;case 4194290:if(70!==e.Ga)return N(e,4,226);d=0;break;case 4194288:if(70!==e.Ga)return N(e,4,228);d=61183;break;case 4194296:0<=
b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.Ga)return N(e,4,232);f=a-4194272>>1;0>b?d=e.Cb[f]:(d=M(this,e.Cb[f],a,b,c),0<=d&&(e.Cb[f]=d));break;case 4194254:return a&1?e.X>>14&1?(0<=b&&(e.c[6]=b),d=e.c[6]):(0<=b&&(e.wa[3]=b),d=e.wa[3]):e.X>>14&0?(0<=b&&(e.c[6]=b),d=e.c[6]):(0<=b&&(e.wa[1]=b),d=e.wa[1]),d;case 4194252:case 4194250:case 4194248:return f=a&7,e.X&2048?(0<=b&&(e.c[f]=b),d=e.c[f]):(0<=b&&(e.Ja[f]=
b),d=e.Ja[f]),d;case 4194246:return a&1?(0<=b&&(e.c[7]=b),d=e.c[7]):e.X>>14&0?(0<=b&&(e.c[6]=b),d=e.c[6]):(0<=b&&(e.wa[0]=b),d=e.wa[0]),d;case 4194244:case 4194242:case 4194240:return f=a&7,e.X&2048?(0<=b&&(e.Ja[f]=b),d=e.Ja[f]):(0<=b&&(e.c[f]=b),d=e.c[f]),d;default:return e.m|=16,N(e,4,124)}break;case 4194176:f=a>>1&31;d=M(this,e.N[3][f],a,b,c);0<=d&&(e.N[3][f]=d,e.N[3][f&15]&=65295);break;case 4194112:var g=this.b;f=this.h;switch(a&-2){case 4194174:d=M(this,e.Xa,a,b,c);0<=d&&(e.Xa=d);break;case 4194172:d=
e.la;d&65280&&(d=(d<<8|d>>8)&65535);break;case 4194170:e.I=e.I&62337|e.cb<<5|e.nb<<1;0>b?d=e.I:(d=M(this,e.I,a,b,c),0<=d&&(e.I=d&=62337,e.cb=d>>5&3,e.nb=d>>1&15,d&257?(f=2,e.ma&16&&(f=1),e.Ta=d&1?F|H:H):(e.Ta=0,f=4),this.g.Sa=this.g.Sa&-8|f));break;case 4194168:0>b?d=this.g.yc&65535:(d=M(this,this.g.data,a,b,c),0<=d&&(this.g.data=d));break;case 4194166:0<=b&&(b&127&&(g.dc=0),g.U&=-129,L(e,100,4,52,function(){g.U|=128;return!!(g.U&64)}));d=0;break;case 4194164:break;case 4194162:d=0;0>b&&(g.da&=-129,
0<g.Eb.length&&(d=g.Eb.shift(),0<g.Eb.length&&setTimeout(function(){g.da|=128;g.da&64&&L(e,40,4,48)},50)));break;case 4194160:0>b?d=g.da:(d=M(this,g.da,a,b,c),0<=d&&(g.da=g.da&128|d&-129));break;case 4194150:0>b?(d=f.i,f.i&=-129):(d=M(this,f.i,a,b,c),0<=d&&(d&64&&!f.Db&&(setInterval(this.jc.bind(this),25),f.Db=1),f.i=d&-129));break;default:return e.m|=16,N(e,4,126)}break;case 4194048:f=this.l;switch(a&-2){case 4194048:d=M(this,f.hb,a,b,c);0<=d&&(f.hb=d);break;case 4194050:d=M(this,f.O,a,b,c);0<=d&&
(f.O=d);break;case 4194052:d=M(this,f.v,a,b,c);0<=b&&0<=d&&(f.v=d&-36993|f.v&36992,f.v&1&&bb(this));break;case 4194054:d=M(this,f.ib,a,b,c);0<=d&&(f.ib=d);break;case 4194056:d=M(this,f.gb,a,b,c);0<=d&&(f.gb=d);break;case 4194058:d=M(this,f.T,a,b,c);0<=d&&(f.T=d);break;case 4194060:break;case 4194062:d=M(this,f.Ub,a,b,c);0<=d&&(f.Ub=d);break;default:return e.m|=16,N(e,4,128)}break;case 4193728:var h=this.u;f=h.Z&7;switch(a&-2){case 4193728:d=M(this,h.w,a,b,c);0<=b&&0<=d&&(h.xa=h.xa&60|d>>8&3,h.w=d&
17279|h.w&34944|2048,d&1&&h.w&128?fb(this,f):192==(d&192)&&L(e,0,5,172));break;case 4193730:d=M(this,h.Wa,a,b,c);0<=d&&(h.Wa=d);break;case 4193732:d=M(this,h.Ua,a,b,c);0<=d&&(h.Ua=d&65534);break;case 4193734:d=M(this,h.$[f],a,b,c);0<=d&&(h.$[f]=d&7967);break;case 4193736:d=M(this,h.Z,a,b,c);0<=d&&(h.Z=d&63|h.Z&65472,d&128&&eb(this));break;case 4193738:d=h.S[f];break;case 4193740:d=h.Va[f];break;case 4193742:d=M(this,h.Ka,a,b,c);0<=d&&(h.Ka=d&255);break;case 4193744:d=h.wc[f];break;case 4193746:d=
M(this,h.Vb,a,b,c);0<=d&&(h.Vb=d);break;case 4193748:d=M(this,h.Wb[f],a,b,c);0<=d&&(h.Wb[f]=d&1023);break;case 4193750:d=8210;break;case 4193752:d=h.xc[f];break;case 4193754:d=M(this,h.Xb[f],a,b,c);0<=d&&(h.Xb[f]=d);break;case 4193756:d=M(this,h.ia[f],a,b,c);0<=d&&(h.ia[f]=d&511);break;case 4193758:h.tb[f]=h.ia[f];d=h.tb[f];break;case 4193760:d=h.uc[f];break;case 4193762:d=h.vc[f];break;case 4193764:d=h.sc[f];break;case 4193766:d=h.tc[f];break;case 4193768:d=M(this,h.xa,a,b,c);0<=d&&(h.xa=d&63,h.w=
h.w&-769|(d&3)<<8);break;case 4193770:d=M(this,h.Fb,a,b,c);0<=d&&(h.Fb=d);break;default:return e.m|=16,N(e,4,132)}break;case 4192512:f=this.s;switch(a&-2){case 4192512:d=M(this,f.i,a,b,c);0<=b&&0<=d&&(f.oa=f.oa&60|d>>4&3,f.i=f.i&-1023|d&1022,f.i&128||db(this));break;case 4192514:d=M(this,f.$a,a,b,c);0<=d&&(f.$a=d&65534);break;case 4192516:d=M(this,f.F,a,b,c);0<=d&&(f.F=d);break;case 4192518:d=M(this,f.sa,a,b,c);0<=d&&(f.sa=d);break;case 4192520:d=M(this,f.oa,a,b,c);0<=d&&(f.oa=d&63,f.i=f.i&-49|(f.oa&
3)<<4);break;default:return e.m|=16,N(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?d=e.ma:(d=M(this,e.ma,a,b,c),0<=d&&(70!==e.Ga&&(d&=-49),e.ma=d,e.Ia[0]=d&4?15:7,e.Ia[1]=d&2?15:7,e.Ia[3]=d&1?15:7,e.Ta&&(f=2,e.ma&16&&(f=1),this.g.Sa=this.g.Sa&-8|f)));break;default:return e.m|=16,N(e,4,136)}break;case 4191424:f=a>>1&31;d=M(this,e.N[0][f],a,b,c);0<=d&&(e.N[0][f]=d,e.N[0][f&15]&=65295);break;case 4191360:f=a>>1&31;d=M(this,e.N[1][f],a,b,c);0<=d&&(e.N[1][f]=d,e.N[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==
e.Ga)return N(e,4,234);f=a>>2&31;d=e.jb[f];a&2&&(d>>=16);d&=65535;0<=b&&(d=M(this,d,a,b,c),0<=d&&(e.jb[f]=a&2?d<<16|e.jb[f]&65535:e.jb[f]&4294901760|d&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)d=Ya[a>>1&255];else return e.m|=16,N(e,4,138);break;default:return e.m|=16,N(e,4,142)}c&&0<=d&&(a&1?d>>=8:d&=255);"undefined"===typeof d&&console.log("panic(76)");return d};
var jb={},Za=(jb[65534]=[null,null,K.prototype.nc,K.prototype.Ac],jb[65396]=[null,null,K.prototype.oc,K.prototype.Cc],jb);v(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new K(d);B(d,c)}});var kb;if(Ha){var lb=new ArrayBuffer(2);(new DataView(lb)).setUint16(0,256,!0);kb=256===(new Uint16Array(lb))[0]}else kb=!1;var mb=kb;
function J(a,b,c,d,f){this.id=nb+=2;this.a=null;this.Ra=a;this.ub=b;this.size=c||0;this.type=d||ob;this.g=d==pb;this.controller=null;Oa(this);this.ra=this.ec=!1;if(c)if(f)this.controller=f,this.a=null,qb(this,f.Ya);else if(Ha)this.b=new ArrayBuffer(c),this.j=new DataView(this.b,0,c),this.o=new Uint8Array(this.b,0,c),this.s=new Uint16Array(this.b,0,c>>1),this.a=new Int32Array(this.b,0,c>>2),qb(this,mb?rb:sb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;qb(this,tb)}else qb(this)}
var ob=0,pb=2,Ua=4,Wa=["NONE","RAM","ROM","VID","H/W"],nb=0;
J.prototype={constructor:J,parent:null,Db:function(a){this.Ra=a},save:function(){var a,b;if(this.controller)a=null;else if(Ha)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.j.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(this.controller)return!a;if(a&&this.size==a.length<<2){var b;if(Ha)for(b=0;b<a.length;b++)this.j.setInt32(b<<2,a[b],!0);else this.a=a;return this.ra=!0}return!1},u:function(){return 255},C:function(){},A:function(a,b){return this.fb(a++,b++)|this.fb(a,b)<<
8},H:function(a,b,c){this.kb(a++,b&255,c++);this.kb(a,b>>8,c)},Y:function(a){return this.a[a>>2]>>>((a&3)<<3)&255},za:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},Da:function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<<a)|b<<a;this.ra=!0},Qa:function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.a[c]=this.a[c]&~(65535<<a)|b<<a:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.ra=!0},P:function(a,b){return this.V(a,
b)},ca:function(a,b){return this.ja(a,b)},Ba:function(a,b,c){this.g||this.$b(a,b,c)},Na:function(a,b,c){this.g||this.Oa(a,b,c)},K:function(a){return this.o[a]},W:function(a){return this.o[a]},ba:function(a){return this.j.getUint16(a,!0)},ka:function(a){return a&1?this.o[a]|this.o[a+1]<<8:this.s[a>>1]},Aa:function(a,b){this.o[a]=b;this.ra=!0},Ca:function(a,b){this.o[a]=b;this.ra=!0},Ma:function(a,b){this.j.setUint16(a,b,!0);this.ra=!0},Pa:function(a,b){a&1?(this.o[a]=b,this.o[a+1]=b>>8):this.s[a>>
1]=b;this.ra=!0}};function Oa(a,b,c){a.G=b;a.h=a.l=0;c&&((a.h=c.h)&&ub(a,vb,!1),(a.l=c.l)&&wb(a,vb,!1))}function wb(a,b,c){c&&a.l||(a.kb=!a.g&&b[1]||a.C,a.Bc=!a.g&&b[3]||a.H);if(c||void 0===c)a.$b=b[1]||a.C,a.Oa=b[3]||a.H}function ub(a,b,c){c&&a.h||(a.fb=b[0]||a.u,a.qb=b[2]||a.A);if(c||void 0===c)a.V=b[0]||a.u,a.ja=b[2]||a.A}function qb(a,b){b||(b=xb);ub(a,b,void 0);wb(a,b,void 0)}
var xb=[],tb=[J.prototype.Y,J.prototype.Da,J.prototype.za,J.prototype.Qa],vb=[J.prototype.P,J.prototype.Ba,J.prototype.ca,J.prototype.Na];if(Ha)var sb=[J.prototype.K,J.prototype.Aa,J.prototype.ba,J.prototype.Ma],rb=[J.prototype.W,J.prototype.Ca,J.prototype.ka,J.prototype.Pa];
function yb(a,b){w.call(this,"CPU",a,yb);var c=a.multiplier||1;this.yb=a.cycles||b;this.ja=c;this.xb=Math.round(this.yb/1E4)/100;this.ba=this.xb*this.ja;this.f.ea=!1;this.f.Yb=!1;this.f.Za=a.autoStart;this.f.Qb=!1;this.f.lb=!1;this.Oa=this.ca=0;this.Pa=a.csStart;this.Aa=a.csInterval;this.Ba=a.csStop;this.Ma=[];this.Pb=this.Gb.bind(this);D(this)}y(yb);var zb=["power","reset"];l=yb.prototype;
l.Ha=function(a,b,c,d){this.g=a;this.j=b;this.G=d;for(b=0;b<zb.length;b++)(c=this.o[zb[b]])&&this.g.aa(null,zb[b],c);this.za=null;a=Ab(a,"autoStart");null!=a&&(this.f.Za="true"==a?!0:"false"==a?!1:!!a);D(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};l.ua=function(a,b){if(!b){if(a&&this.restore){Bb(this);if(!this.restore(a))return!1;Cb(this)}else this.reset();this.J("No debugger detected")}Db(this);return!0};l.ta=function(a){return a?this.save():!0};
l.Za=function(){return this.f.Za||void 0===this.o.run?(this.Gb(),!0):!1};l.Tb=function(){return 0};function Cb(a){void 0===a.Pa&&(a.Pa=0);void 0===a.Aa&&(a.Aa=-1);void 0===a.Ba&&(a.Ba=-1);a.f.lb=0<=a.Pa&&0<a.Aa;a.f.lb&&(a.Oa=0,a.ca=a.Pa-a.W)}function O(a,b,c,d){if(a.o[b]){void 0===c&&(a.f.error=!0,a.L("Value for "+b+" is invalid"),P(a));var f=a.G&&a.G.b||8;c=!a.f.ea||a.f.Qb?8==f?n(c,d):q(c,d):"--------".substr(0,d||4);a.o[b].textContent!=c&&(a.o[b].textContent=c)}}
l.aa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.o[b]=c;a=!0;break;case "run":this.o[b]=c;c.onclick=function(){var a;if(a=d.g)if(a=d.g,a.f.M)a=!0;else{var b=null,c,h=z(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.f.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.f.M);c++);c==h.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.f.ready?"powered yet":"ready yet"+(b.mb?" (waiting for notification)":""))+".");a=!1}a&&(d.f.ea?P(d):d.Gb())};a=!0;
break;case "speed":this.o[b]=c;a=!0;break;case "setSpeed":this.o[b]=c,c.onclick=function(){Eb(d,d.ja<<1)},c.textContent=this.ba.toFixed(2)+"Mhz",a=!0}return a};function Fb(a,b,c){a.W+=b;c&&(a.C=a.a=0)}function Gb(a,b){var c=1;b&&1<a.ja&&a.P&&(c=a.P/a.xb);a.Mb=Math.round(1E3/30);a.Qa=Math.floor(a.yb/30*c);b||(a.Ca=a.Qa);a.zb=0}function Hb(a){return a.W+a.K+a.C-a.a}function Bb(a){a.P=0;a.Nb=0;a.W=a.K=a.C=a.a=0;Cb(a);Eb(a,1)}
function Eb(a,b){if(void 0!==b&&(.8>a.P/a.ba&&(b=1),a.ja=b,b=a.xb*a.ja,a.ba!=b)){a.ba=b;b=a.ba.toFixed(2)+"Mhz";var c=a.o.setSpeed;c&&(c.textContent=b);a.J("target speed: "+b)}Fb(a,a.K);a.K=0;a.H=ha();a.V=0;Gb(a)}
l.Gb=function(){if(Fa(this,!0)){if(!this.f.ea){Eb(this);this.g&&this.g.start(this.H,Hb(this));this.f.ea=!0;this.f.Yb=!0;this.za&&this.za.start();var a=this.o.run;a&&(a.textContent="Halt");this.g&&this.g.La(!0)}this.zb>=this.yb&&Gb(this,!0);this.Da=0;this.Na=ha();this.V&&(a=this.Na-this.V,a>this.Mb&&(this.H+=a,this.H>this.Na&&(this.H=this.Na)));try{do{for(var b,c=this.f.lb?1:this.Qa,d=this.Ma.length-1;0<=d;d--){var f=this.Ma[d];0>f[0]||c>f[0]&&(c=f[0])}b=c;try{this.Zb(b)}catch(m){if("number"!=typeof m)throw m;
}for(var e=this.C-this.a,a=e,g=this.Ma.length-1;0<=g;g--){var h=this.Ma[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.Da+=e;this.K+=e;Fb(this,0,!0);a=e;if(this.f.lb){var k=!1;this.Oa=this.Oa+this.Tb()|0;this.ca-=a;0>=this.ca&&(this.ca+=this.Aa,k=!0);0<=this.Ba&&this.Ba<=Hb(this)&&(this.Aa=this.Ba=-1,Cb(this),P(this),k=!0);k&&this.J(Hb(this)+" cycles: checksum="+q(this.Oa))}this.Ca-=e;if(0>=this.Ca){this.Ca+=this.Qa;15<=++this.Nb&&(this.g&&this.g.La(),this.Nb=0);break}}while(this.f.ea)}catch(m){P(this);
Db(this);this.g&&this.g.stop(ha(),Hb(this));Fa(this,!1);b=m.stack||m.message;this.f.error=!0;this.L(b);return}b=setTimeout;c=this.Pb;this.V=ha();d=this.Mb;this.Da&&(d=Math.round(d*this.Da/this.Qa));d-=this.V-this.Na;if(f=this.V-this.H)this.P=Math.round(this.K/(10*f))/100,864E5<=f&&(this.W=0,Eb(this));if(0>d||this.P<this.ba)-1E3>d&&(this.H-=d),d=0;this.zb+=this.Da;this.V+=d;b(c,d)}else Db(this),this.g&&this.g.stop(ha(),Hb(this))};l.Zb=function(){return 0};
function P(a){a.f.ab&&(a.f.Ab=!0);a.C-=a.a;a.a=0;Fb(a,a.K);a.K=0;if(a.f.ea){a.f.ea=!1;a.za&&a.za.stop();var b=a.o.run;b&&(b.textContent="Run")}a.f.complete=void 0}function Db(a){a.g&&a.g.La(void 0)}
function Ib(a){this.gc=a.resetAddr||0;yb.call(this,a,1E6);this.Jb=0;this.decode=Jb.bind(this);this.A=65536;this.s=32768;this.u=65535;this.l=32768;this.c=[0,0,0,0,0,0,0,this.gc];this.Ja=[0,0,0,0,0,0];this.wa=[0,0,0,0];this.ha=255;this.nb=this.cb=this.Ta=this.h=this.ma=this.Xa=this.la=this.I=this.m=this.sb=0;this.Ia=[7,7,7,7];this.N=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,
65535,65535,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.jb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.Cb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.B=0;this.Ga=70;this.ka=-1;this.b=[];this.Sb=0;this.va=2;Kb(this);this.f.complete=this.f.cc=!1}y(Ib,yb);l=Ib.prototype;
l.reset=function(){this.f.ea&&P(this);Lb(this);Bb(this);this.f.error=!1;this.parent.reset.call(this)};function Lb(a){a.ha=255;a.m=0;a.b=[];a.sb=0;a.I=a.la=a.Xa=a.ma=a.Ta=0;a.Ia[0]=a.Ia[1]=a.Ia[3]=7;a.cb=0;Kb(a)}function Kb(a){a.Ta?(a.Ib=65536,a.Y=a.ic,a.qb=a.ga):(a.Ib=0,a.Y=a.hc,a.qb=a.rb)}l.Tb=function(){return 0};l.save=function(){var a=new Q(this);a.set(0,[]);a.set(1,[this.Lb,this.W,this.ja]);a.set(2,Xa(this.j));return a.data()};
l.restore=function(a){var b=a[1];this.Lb=b[0];this.W=b[1];Eb(this,b[3]);a:{b=this.j;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.H){for(var e=0,g=Array(b.H),h=0;h<f.length-1;)for(var k=f[h++],m=f[h++];k--;)g[e++]=m;f=g}e=b.b[d];if(!e||!e.restore(f)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
l.aa=function(a,b,c){switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":this.o[b]=c;this.Jb++;a=!0;break;default:a=this.parent.aa.call(this,a,b,c)}return a};
l.La=function(a){if(this.Jb&&(a||!this.f.ea||this.f.Qb)){for(a=0;a<this.c.length;a++)O(this,"R"+a,this.c[a]);a=$a(this);O(this,"PS",a);O(this,"NF",a&8?1:0,1);O(this,"ZF",a&4?1:0,1);O(this,"VF",a&2?1:0,1);O(this,"CF",a&1?1:0,1)}if(a=this.o.speed)a.textContent=this.f.ea&&this.P?this.P.toFixed(2)+"Mhz":"Stopped"};
function L(a,b,c,d,f){for(var e=a.b.length;0<e--;)if(a.b[e].zc===d){0<e&&(a.b[e-1].qa+=a.b[e].qa);a.b.splice(e,1);break}if(0<=b){2===a.Sb&&(b=0,a.Sb=0,setTimeout(a.Pb,0));for(e=a.b.length;0<e--;){if(a.b[e].qa>b){a.b[e].qa-=b;break}b-=a.b[e].qa}a.b.splice(e+1,0,{delay:b,priority:c<<5&224,vector:d,callback:f})}a.va=2}function $a(a){return a.X=a.X&63728|(a.l&32768?8:0)|(a.u&65535?0:4)|(a.s&32768?2:0)|(a.A&65536?1:0)}
function ab(a,b){a.l=b<<12;a.u=~b&4;a.s=b<<14;a.A=b<<16;if((b^a.X)&2048)for(var c=a.Ja.length;0<=--c;){var d=a.c[c];a.c[c]=a.Ja[c];a.Ja[c]=d}a.h=b>>14&3;c=a.X>>14&3;a.h!=c&&(a.wa[c]=a.c[6],a.c[6]=a.wa[a.h]);a.va=2;a.X=b}function Mb(a,b){a.B&128||(a.l=a.u=a.A=b,a.s=0)}function R(a,b){a.B&128||(a.l=a.u=b,a.s=0)}function Nb(a,b,c,d){a.B&128||(a.l=a.u=a.A=b,a.s=(c^d)&(d^b))}
function N(a,b,c){var d=!1;0>a.ka?a.ka=$a(a):a.h||(b=4,d=!0);a.I&57344||(a.la=63222,a.Xa=b);a.h=0;var f=a.ga(b|65536),e=a.ga(b+2&65535|65536);ab(a,e&53247|a.ka>>2&12288);d&&(a.m|=4,a.c[6]=4);Ob(a,a.ka);Ob(a,a.c[7]);a.c[7]=f;a.B&=-113;a.ka=-1;throw b|c<<8;}function ib(a,b){var c=b>>13&31;31>c?a.ma&32&&(b=a.jb[c]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b}
function Pb(a,b,c){var d,f,e,g=0;if(c&a.Ta){d=b>>13&a.Ia[a.h];f=a.N[a.h][d];e=(a.N[a.h][d+16]<<6)+(b&8191)&4194303;a.ma&16?3932160<=e&&4186112>e&&(e=ib(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.m|=32,N(a,4,24)),e&1&&!(c&1)&&(a.m|=64,N(a,4,26)));switch(f&7){case 1:g=4096;case 2:f|=128;c&H&&(g=8192);break;case 4:g=4096;case 5:c&H&&(g=4096);case 6:f|=c&H?192:128;break;default:g=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(g|=16384):(b&8128)>(f>>2&8128)&&
(g|=16384));a.N[a.h][d]=f;if(4194170!==e||a.h)a.cb=a.h,a.nb=d;g&&(g&57344&&(0<=a.ka&&(g|=128),a.I&57344||(a.I=a.I|g|a.cb<<5|a.nb<<1),N(a,168,28)),a.I&61440||!(4191360>e||4194239<e)||(a.I|=4096,a.I&512&&(a.B|=32)))}else e=b&65535,57344<=e?e|=4186112:e&1&&!(c&1)&&(a.m|=64,N(a,4,22));return e}l.rb=function(a){if(4194304<=a)a=this.c[a-4194304];else if(0<=a){var b=this.j,c=a&b.h,d=(a&b.l)>>>b.j;a=c!=b.h?b.b[d].qb(c,a):b.b[d++].fb(c,a)|b.b[d&b.K].fb(0,a+1)<<8}return a};
l.ga=function(a){return this.rb(Pb(this,a,F))};function hb(a,b,c){c&=65535;if(4194304<=b)return a.c[b-4194304]=c;if(0<=b){a=a.j;var d=c,f=b&a.h,e=(b&a.l)>>>a.j;f!=a.h?a.b[e].Bc(f,d&65535,b):(a.b[e++].kb(f,d&255,b),a.b[e&a.K].kb(0,d>>8&255,b+1));return c}return b}function Qb(a,b){4194304<=b?b=a.c[b-4194304]&255:0<=b&&(a=a.j,b=a.b[(b&a.l)>>>a.j].fb(b&a.h,b));return b}function Rb(a,b,c){c&=255;4194304<=b?a.c[b-4194304]=a.c[b-4194304]&65280|c:0<=b&&(a=a.j,a.b[(b&a.l)>>>a.j].kb(b&a.h,c&255,b))}
function Ob(a,b){var c=a.c[6]-2&65535;a.c[6]=c;a.I&57344||(a.la=a.la<<8|246);!a.h&&c<=a.ha&&4<c&&(c<=a.ha-32?(a.m|=4,a.c[6]=4,N(a,4,32)):(a.m|=8,a.B|=4));c=Pb(a,c|65536,H);hb(a,c,b)}
function Sb(a,b,c){var d,f,e=b&7,g=c&8?0:a.Ib;switch(b>>3&7){case 0:N(a,4,34);break;case 1:return 6===e&&!a.h&&c&H&&(a.c[6]<=a.ha||65534<=a.c[6])&&(a.c[6]<=a.ha-32||65534<=a.c[6]?(a.m|=4,a.c[6]=4,N(a,4,36)):(a.m|=8,a.B|=64)),7===e?a.c[e]:a.c[e]|g;case 2:f=2;d=a.c[e];7!==e&&(d|=g,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.c[e];7!==e&&(d|=g);if(0>(d=a.ga(d)))return d;d|=g;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.c[e]+f&65535;7!==e&&(d|=g);break;case 5:f=-2;d=a.c[e]-2&65535;7!==e&&(d|=g);if(0>(d=a.ga(d)))return d;
d|=g;break;case 6:if(0>(d=a.ga(a.c[7])))return d;a.c[7]=a.c[7]+2&65535;d=d+a.c[e]&65535;return d|g;case 7:if(0>(d=a.ga(a.c[7])))return d;a.c[7]=a.c[7]+2&65535;d=d+a.c[e]&65535;return 0>(d=a.ga(d|65536))?d:d|g}a.c[e]=a.c[e]+f&65535;!g||a.I&57344||(a.la=a.la<<8|f<<3&248|e);6===e&&!a.h&&c&H&&0>=f&&(a.c[6]<=a.ha||65534<=a.c[6])&&(a.c[6]<=a.ha-32?(a.m|=4,a.c[6]=4,N(a,4,38)):(a.m|=8,a.B|=64));return d}l.hc=function(a,b){return Sb(this,a,b)};l.ic=function(a,b){return Pb(this,Sb(this,a,b),b)};
function S(a,b){return b&56?a.qb(Sb(a,b,F)):a.c[b&7]}function T(a,b){return b&56?Qb(a,a.Y(b,Ja)):a.c[b&7]&255}function Tb(a,b,c,d){b&56?(b=a.Y(b,Ia),hb(a,b,d.call(a,c,a.rb(b)))):(b&=7,a.c[b]=d.call(a,c,a.c[b])&65535)}function Ub(a,b,c,d){b&56?(b=a.Y(b,La),Rb(a,b,d.call(a,c,Qb(a,b)))):(b&=7,a.c[b]=a.c[b]&65280|d.call(a,c,a.c[b])&255)}function Vb(a,b,c){b&56?hb(a,a.Y(b,H),c):a.c[b&7]=c&65535;return c}
function Wb(a,b,c,d){b&56?Rb(a,a.Y(b,Ka),c):(b&=7,a.c[b]=c?d&1?c<<24>>24&65535:a.c[b]&-256|c&255:a.c[b]&-256);return c}
l.Zb=function(a){this.f.complete=!0;this.f.cc=!1;this.f.Yb=!1;this.C=this.a=a;this.Lb&256?(this.C-=this.a,this.a=0,a=!1):a=!0;if(a){do{var b,c;this.B&112&&(this.B&32?N(this,168,52):this.B&64?N(this,4,54):this.B&16&&N(this,12,56),this.B&=-113);if(this.va)if(1===this.va)this.va=2;else{this.va=0;c=-1;a=this.sb&224;if(0<(b=this.b.length))for(;0<b--;){if(0<this.b[b].qa){this.b[b].qa--;this.va=2;break}if(this.b[b].Ob){if(!this.b[b].Ob()){this.b.splice(b,1);c--;continue}this.b[b].Ob=null}this.b[b].mc>a&&
(a=this.b[b].mc,c=b)}a>(this.X&224)&&(0>c?N(this,160,42):(N(this,this.b[c].zc,44),this.b.splice(c,1)))}this.I&57344||(this.la=0,this.Xa=this.c[7]);this.B=this.X&16;a=this.ga(this.c[7]);0<=a&&(this.c[7]=this.c[7]+2&65535);this.decode(a)}while(0<this.a)}return this.f.complete?this.C-this.a:void 0===this.f.complete?0:-1};v(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Ib(d);B(d,c)}});
function Xb(a,b){var c=a+b;this.B&128||(this.l=this.u=this.A=c,this.s=(a^c)&(b^c));return c&65535}function Yb(a,b){a=~a&b;R(this,a);return a}function Zb(a,b){a=~a&b;R(this,a<<8);return a}function $b(a,b){a|=b;R(this,a);return a}function ac(a,b){a|=b;R(this,a<<8);return a}function bc(a,b){var c=b-a;Nb(this,c,a,b);return c&65535}function cc(){--this.a}function dc(){--this.a}function U(a){a&1&&(this.A=0);a&2&&(this.s=0);a&4&&(this.u=1);a&8&&(this.l=0);--this.a}function ec(){--this.a}
function fc(a){this.J("JSR");var b=Sb(this,a,8);a=a>>6&7;Ob(this,this.c[a]);this.c[a]=this.c[7];this.c[7]=b;--this.a}function gc(){--this.a}function hc(){--this.a}function V(a){a&1&&(this.A=65536);a&2&&(this.s=32768);a&4&&(this.u=0);a&8&&(this.l=32768);--this.a}function ic(){--this.a}function jc(){--this.a}function W(){N(this,8,48)}function Jb(a){kc[a>>12].call(this,a)}
var kc=[function(a){lc[a>>8&15].call(this,a)},function(a){R(this,Vb(this,a,S(this,a>>6)));--this.a},function(a){var b=S(this,a>>6);a=S(this,a);Nb(this,b-a,a,b);--this.a},function(a){R(this,S(this,a>>6)&S(this,a));--this.a},function(a){Tb(this,a,S(this,a>>6),Yb);--this.a},function(a){Tb(this,a,S(this,a>>6),$b);--this.a},function(a){Tb(this,a,S(this,a>>6),Xb);--this.a},function(a){mc[a>>8&15].call(this,a)},function(a){nc[a>>8&15].call(this,a)},function(a){var b=T(this,a>>6);R(this,Wb(this,a,b,1)<<8);
--this.a},function(a){var b=T(this,a>>6)<<8;a=T(this,a)<<8;Nb(this,b-a,a,b);--this.a},function(a){R(this,(T(this,a>>6)&T(this,a))<<8);--this.a},function(a){Ub(this,a,T(this,a>>6),Zb);--this.a},function(a){Ub(this,a,T(this,a>>6),ac);--this.a},function(a){Tb(this,a,S(this,a>>6),bc);--this.a},W],lc=[function(a){oc[a>>4&15].call(this,a)},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},fc,fc,function(a){pc[a>>
6&3].call(this,a)},function(a){qc[a>>6&3].call(this,a)},function(a){rc[a>>6&3].call(this,a)},function(a){sc[a>>6&3].call(this,a)},W,W],oc=[function(a){tc[a&15].call(this,a)},W,W,W,W,W,W,W,W,W,function(a){uc[a&15].call(this,a)},function(a){vc[a&15].call(this,a)},W,W,W,W],uc=[hc,function(){this.A=0;--this.a},function(){this.s=0;--this.a},U,function(){this.u=1;--this.a},U,U,U,function(){this.l=0;--this.a},U,U,U,U,U,U,U],vc=[hc,function(){this.A=65536;--this.a},function(){this.s=32768;--this.a},V,function(){this.u=
0;--this.a},V,V,V,function(){this.l=32768;--this.a},V,V,V,V,V,V,V],tc=[function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){this.X&49152||(Lb(this),this.j.reset());--this.a},function(){--this.a},function(){--this.a},W,W,W,W,W,W,W,W],mc=[gc,gc,ec,ec,cc,cc,dc,dc,jc,jc,W,W,W,W,ic,ic],nc=[function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a},
function(){--this.a},function(){--this.a},function(a){wc[a>>6&3].call(this,a)},function(a){xc[a>>6&3].call(this,a)},function(a){yc[a>>6&3].call(this,a)},function(a){zc[a>>6&3].call(this,a)},W,W],pc=[function(a){Mb(this,Vb(this,a,0));--this.a},function(){--this.a},function(){--this.a},function(){--this.a}],qc=[function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a}],rc=[function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a}],sc=[function(){--this.a},
function(){--this.a},function(){--this.a},function(){--this.a}],wc=[function(a){Mb(this,Wb(this,a,0));--this.a},function(){--this.a},function(){--this.a},function(){--this.a}],xc=[function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a}],yc=[function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a}],zc=[function(){--this.a},function(){--this.a},function(){--this.a},function(){--this.a}];
function X(a){w.call(this,"ROM",a,X);this.b=null;this.u=a.addr;this.g=a.size;this.A=a.writable;this.h=a.alias;this.l=a.file;this.C=ba(this.l);if(this.l){a=this.l;var b=ca(this.C);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.l+"&format=bytes&decimal=true");var c=this;r(a,null,!0,function(a,b,e){Ac(c,a,b,e)})}}y(X);X.prototype.Ha=function(a,b,c,d){this.j=b;this.a=c;this.G=d;Bc(this)};X.prototype.ua=function(){this.s&&(this.G&&this.G.a(this.id,this.u,this.g,this.s),delete this.s);return!0};
X.prototype.ta=function(){return!0};
function Ac(a,b,c,d){if(d)a.L("Unable to load system ROM (error "+d+": "+b+")");else{Da(a.Hb,b,c);var f;if("["==c.charAt(0)||"{"==c.charAt(0))try{var e,g,h=eval("("+c+")");if(e=h.bytes)a.b=e;else if(e=h.words)for(a.b=Array(2*e.length),g=f=0;f<e.length;f++)a.b[g++]=e[f]&255,a.b[g++]=e[f]>>8&255;else if(e=h.data)for(a.b=Array(4*e.length),g=f=0;f<e.length;f++)a.b[g++]=e[f]&255,a.b[g++]=e[f]>>8&255,a.b[g++]=e[f]>>16&255,a.b[g++]=e[f]>>24&255;else a.b=h;a.s=h.symbols;if(!a.b.length){t("Empty ROM: "+b);
return}if(1==a.b.length){t(a.b[0]);return}}catch(k){a.L("ROM data error: "+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);Bc(a)}}
function Bc(a){if(!Ga(a))if(!a.l)D(a);else if(a.b&&a.j){a.g||(a.g=a.b.length);if(a.b.length!=a.g){var b="ROM size ("+q(a.b.length,8,!0)+") does not match specified size ("+q(a.g,8,!0)+")";a.f.error=!0;a.L(b)}else{b=a.u;if(Ta(a.j,b,a.g,a.A?1:pb)){var c;for(c=0;c<a.b.length;c++){var d=a.j,f=b+c;d.b[(f&d.l)>>>d.j].$b(f&d.h,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.h?b.push(a.h):null!=a.h&&a.h.length&&(b=a.h);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.j,g=e.g,h=[],k=e.u>>>f.j;0<g&&
k<f.b.length;)h.push(f.b[k++]),g-=f.g;f=e.j;e=e.g;g=0;for(d>>>=f.j;0<e&&d<f.b.length;){k=h[g++];if(!k)break;f.b[d++]=k;e-=f.g}}delete a.b}}D(a)}}v(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new X(d);B(d,c)}});function Cc(a){w.call(this,"RAM",a,Cc);this.h=a.addr;this.g=a.size;this.b=!1}y(Cc);l=Cc.prototype;l.Ha=function(a,b,c,d){this.j=b;this.a=c;this.G=d;D(this)};l.ua=function(a,b){b||this.reset();return!0};l.ta=function(a){return a?this.save():!0};
l.reset=function(){!this.b&&this.g&&Ta(this.j,this.h,this.g,1)&&(this.b=!0);this.b||t("No RAM allocated")};l.save=function(){return null};l.restore=function(){return!0};v(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Cc(d);B(d,c)}});function Dc(a){w.call(this,"Keyboard",a,Dc);D(this)}y(Dc);Dc.prototype.aa=function(){return!1};Dc.prototype.Ha=function(a,b,c,d){this.g=a;this.a=c;this.G=d;this.za=null};
v(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=A(c),d=new Dc(d);B(d,c)}});
function Ec(a,b,c){w.call(this,"Computer",a,Ec);this.f.M=!1;Fc(this,b);this.K=Ab(this,"autoPower",a);this.h=0;this.ba=a.busWidth||a.buswidth;this.b=Y;this.C=null;this.u=this.W=!1;this.url=Ab(this,"url")||"";(Math.random()+.1).toString(36);this.g=Gc(this);if(this.a=Ea("CPU",this.id)){this.G=Ea("Debugger",this.id);this.j=new I({id:this.Hb+".bus",busWidth:this.ba},this.a,this.G);var d,f=z(this.id);if((this.l=Ea("Panel",this.id))&&this.l.Bb)for(b=0;b<f.length;b++)d=f[b],d.L=this.l.L,d.J=this.l.J,d.Bb=
this.l.Bb;this.J("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.J("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)d=f[b],d.Ha&&d.Ha(this,this.j,this.a,this.G);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.A=d:this.b=parseInt(d,10));var e;if(a=Ab(this,"state")||(e=!0,a.state))b=this.P=a,e||(this.u=!0,this.b=Y),this.b&&(this.H=
new Q(this,"1.30.0"),Z(this.H)?b=null:delete this.H);!b&&this.b&&(b=Hc(this))&&(this.u=!0);if(b){var g=this;r(b,null,!0,function(a,b,c){c?(g.A=null,g.u=!1,g.L("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(g.C=b,g.W=!0);D(g)})}else D(this);this.o.power||(this.K=!0);!c&&this.K&&Ic(this,this.eb)}else t("Unable to find CPU component")}y(Ec);var Y=0;
function Fc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.Y=b}function Ab(a,b,c){var d=b.toLowerCase(),d=xa[b]||xa[d];void 0===d&&a.Y&&(d=a.Y[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Ic(a,b,c){for(var d=z(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ga(e)){Ga(e,function(){Ic(a,b,c)});return}}b.call(a,c)}
function Jc(a,b){var c=new Q(a,"1.30.0","validate");if(Z(c)&&Kc(c)){var d=c.get("timestamp"),f=b?b.get("timestamp"):"unknown";d!=f&&(a.L("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Ec.prototype;
l.eb=function(a){void 0===a&&(a=this.b||(this.C?1:Y));if(!this.h){this.h++;var b=!1,c=!1;this.V=!1;var d=this.H||new Q(this,"1.30.0");if(-1==a)b=!0;else if(a>Y){if(Z(d,this.C)){this.s=new Q(this,"1.30.0","failsafe");Z(this.s)&&(Lc(this,d),a=2,Mc(this.s));this.s.set("timestamp",ia());Nc(this.s);var f=this.b&&!this.u;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Kc(d)){var e=d.get("code"),g=d.get("data");e&&("ok"==e?Z(d,g):("error"==e&&
"no machine state"!=g?(this.L("Error: "+g),"unable to verify user"==g&&(na("user",""),this.g=null)):this.J(e+": "+g),Mc(d),Z(d)?(c=Kc(d),f=!0):c=!1))}f&&Jc(this,c?d:null)}else 2==a&&d.clear()}else Jc(this);delete this.C;delete this.H}f=z(this.id);for(e=0;e<f.length;e++)g=f[e],g!==this&&g!=this.a&&(c=Oc(this,g,d,b,c));b=[d,a,c];-1!=a?Ic(this,this.Rb,b):this.Rb(b)}};
function Oc(a,b,c,d,f){if(!b.f.M){b.f.M=!0;if(b.ua){var e=null;f&&((e=c.get(b.id))||(e=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.ua(e,d)&&e&&(t("Unable to restore state for "+b.type),a.P&&!a.W?(c.clear(),a.b=Y,window&&window.location.reload()):a.V=!0,b.ua(null),f=!1)}if(!d&&b.Kb)for(a=b.Kb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
l.Rb=function(a){var b=a[0],c=0>a[1];a=a[2];this.ca=!0;this.f.M=!0;var d=this.o.power;d&&(d.textContent="Shutdown");this.a&&(Oc(this,this.a,b,c,a),this.a.Za());this.V&&(Lc(this,b),b.clear());!c&&this.s&&(this.s.clear(),delete this.s);this.h=0};
function Lc(a,b){if(ja("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.g||"";b=b.toString();var d={app:"PDP11js",ver:"1.30.0"};d.url=a.url;d.user=c;d.type="bug";d.data=b;r("http://www.pcjs.org/api/v1/report",d,!0)}}
function Pc(a,b,c){var d,f="none";if(a.h)return null;a.h--;var e=new Q(a,"1.30.0"),g=new Q(a,"1.30.0","validate"),h=ia();g.set("timestamp",h);e.set("timestamp",h);e.set("version","1.30.0");e.set("url",window?window.location.href:null);e.set("browser",window?window.navigator.userAgent:"");a.a&&a.a.ta&&(c&&P(a.a),d=a.a.ta(b,c),"object"===typeof d&&e.set(a.a.id,d),c&&(a.a.f.M=!1,!1===d&&(f=null)));for(var h=z(a.id),k=0;k<h.length;k++){var m=h[k];m.f.M&&(m.ta&&(d=m.ta(b,c),"object"===typeof d&&e.set(m.id,
d)),c&&(m.f.M=!1,!1===d&&(f=null)))}f&&(c?(h=d=!1,b?(a.g&&Qc(a,a.g,e.toString()),Nc(g)&&Nc(e)||(f=null,d=h=!0)):a.b&&(d=!0,h=3==a.b),d&&e.clear(h)):f=e.toString());c&&(a.f.M=!1,b=a.o.power)&&(b.textContent="Power");a.h=0;return f}l.reset=function(){this.j&&this.j.reset&&this.j.reset();for(var a=z(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.j&&c.reset&&c.reset()}};l.start=function(a,b){for(var c=z(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
l.stop=function(a,b){for(var c=z(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
l.aa=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.h||(d.f.M?Pc(d,!1,!0):Ic(d,d.eb))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.f.M&&!d.h)if(d.b&&!d.A){var a=ja("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Pc(d,a,!0);!a&&d.P?window&&window.location.reload():d.eb(Y)}else d.reset(),d.a&&d.a.Za()},!0;case "save":if(da())c.parentNode.removeChild(c);else return this.o[b]=
c,c.onclick=function(){var a=Gc(d,!0);if(a){var b=!!(d.b&&!d.A||d.P),c=Pc(d,b);b?Qc(d,a,c):d.L("Resume disabled, machine state not saved")}},!0}return!1};
function Gc(a,b){var c=a.g;c||((c=ma("user"),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=Rc(a,c))||a.L("The user ID is invalid.")):b&&a.L("Browser local storage is not available"));return c}
function Rc(a,b){a.g=null;b=r(ea()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(na("user",b.data),a.g=b.data)}catch(d){t(d.message+" ("+c+")")}return a.g}function Hc(a){var b=null;a.g&&(b=ea()+"/api/v1/user?req=load&user="+a.g+"&state="+Sc(a,"1.30.0"));return b}
function Qc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Sc(a,"1.30.0");d.data=c;b=r(ea()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.L("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.L(c),na("user",""),a.g=null)}}
l.La=function(a){this.a&&this.a.La(a);this.l&&this.l.La(a)};v(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=A(c),c=C(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],g=A(e),g=new Ec(g,d,!0);B(g,e);g.K&&Ic(g,g.eb)}});u.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=Ea("Computer",c.id))&&c.ca&&!c.f.M&&c.eb(-1)}});
u.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=A(a[b]);(c=Ea("Computer",c.id))&&c.f.M&&Pc(c,!(!c.b||c.A),!0)}});function Q(a,b,c){this.id=a.id;this.key=Sc(a,b,c);this.G=a.G;Mc(this,a.fc)}function Sc(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}
Q.prototype={constructor:Q,set:function(a,b){try{this[this.id][a]=b}catch(c){}},get:function(a){return this[this.id][a]||null},value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){Mc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}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(f){}b.splice(c,
1);c=0}}};function Mc(a,b){a[a.id]={};b&&a.set("parms",b);a.a=!1}function Nc(a){var b=!0;if(la()){var c=JSON.stringify(a[a.id]);na(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Kc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function Z(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:la()&&(b=ma(a.key))?(a[a.id]=b,a.a=!0):!1}var Tc=0;
function Uc(a,b,c,d,f,e){f("Loading "+a+"...");r(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),e(h,null)):Vc(h,a,b,c,d,f,e)})}
function Vc(a,b,c,d,f,e,g){function h(a,e){if(e)g(e,null);else{c&&(Da(c,b,a),(e=b)&&0>e.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(e=window.location.pathname+e),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+e+'"}',"object"==typeof resources&&(e=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(e?' url="'+e+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));e=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.loadXML(a)):e=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){e=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,e)}}a?f?Wc(a,e,h):h(a,null):g("no data"+(b?" for file: "+b:""),null)}
function Wc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,null,!0,function(e,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(e=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(e);)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 "+f);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],g);Wc(a,b,c)}})}else c(a,null)}
function Xc(a,b,c,d){function f(a){if(void 0===h){var b=g&&C(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ga(a))}function e(a){f("Error: "+a);k&&(--Tc||ua(!0));k=!1}var g,h,k=!0;Tc++;Ca[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],E=document.createElement("style");E.type="text/css";E.styleSheet?E.styleSheet.cssText=m:E.appendChild(document.createTextNode(m));p.appendChild(E)}c||
(c="/versions/pdp11/1.30.0/components.xsl");m=function(d,h){h?Uc(c,null,null,!1,f,function(d,k){k?(Da(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Tc||ua(!0)):e("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Tc||ua(!0)):e("invalid machine element: "+
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser")):e(d)}):e(d)};"<"!=b.charAt(0)?Uc(b,a,d,!0,f,m):Vc(b,null,a,d,!1,f,m)}else e("missing machine element: "+a)}catch(G){e(G.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return Xc(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})();