New improved I/O handler functions for the PDP-11

This commit is contained in:
Jeff 2016-09-21 12:44:25 -07:00 • committed by Jeff Parsons
commit dfe367f53d
18 changed files with 847 additions and 1059 deletions

View file

@ -9,7 +9,7 @@ function t(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.
function Ca(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Ia(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}function Ja(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
function Ka(a,b){function d(){b(100===c)&&(e=setTimeout(d,c),c=100)}var c=0,e=null,f=!1;a.onmousedown=function(){f||e||(c=500,d())};a.ontouchstart=function(){e||(c=500,d())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var La={init:[],show:[],exit:[]},Ma=!1,Na=!1,Oa=!0;function Pa(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Qa(a){La.init.push(a)}
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(d){t(""+("An unexpected exception occurred:\n\n"+d.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Sa(a){!Oa&&a?(Oa=!0,Ma&&Ta("init"),Na&&Ta("show")):Oa=a}function Ta(a){La[a]&&Ra(La[a])}Pa("onload",function(){Ma=!0;Ra(La.init)});Pa("onpageshow",function(){Na=!0;Ra(La.show)});Pa(Ia("Opera")||Ia("iOS")?"onunload":"onbeforeunload",function(){Ra(La.exit)});
function u(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.tb=b.comment;this.Mb=b;b=this.id.indexOf(".");0>b?this.gb=this.id:(this.ub=this.id.substr(0,b),this.gb=this.id.substr(b+1));this[a]=d;this.A={ready:!1,Ga:!1,hb:!1,$:!1,error:!1};this.bb=null;this.A.error=!1;this.K={};this.I=null;this.aa=c||0;x.push(this)}var Ua=void 0,Va={};
function u(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.tb=b.comment;this.Mb=b;b=this.id.indexOf(".");0>b?this.gb=this.id:(this.ub=this.id.substr(0,b),this.gb=this.id.substr(b+1));this[a]=d;this.A={ready:!1,Ha:!1,hb:!1,$:!1,error:!1};this.bb=null;this.A.error=!1;this.K={};this.I=null;this.aa=c||0;x.push(this)}var Ua=void 0,Va={};
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var d=typeof a;if("object"!==d&&"function"!==d)throw new TypeError;}b.prototype=a;return new b}
function y(a,b){b||(b=u);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var $a=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},x=[];function ab(a,b,d){$a[a]&&b&&($a[a][b]=d)}function bb(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var c=x[b];a&&c.id.indexOf(a)||d.push(c)}return d}
function cb(a,b){var d;if(void 0!==a){var c;b&&(b=0<(c=b.indexOf("."))?b.substr(0,c+1):"");for(c=0;c<x.length;c++)if(d)d==x[c]&&(d=null);else if(!(a!=x[c].type||b&&x[c].id.indexOf(b)))return x[c]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
@ -17,51 +17,51 @@ function nb(a,b){for(var d=C(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)fo
function C(a,b,d){d&&(b+="-"+d+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var c;d=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(c=a.length;b<c;b++)e.test(a[b].className)&&d.push(a[b]);return d}
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,d){switch(b){case "clear":return this.K[b]||(this.K[b]=d,d.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.xa=this.K[b]=d,d.value="",this.g=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}}(d),
this.ea=function(a){this.g(a,this.gb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.gb+": "+a)},ea:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},ta:function(){return this.A.$=!0},sa:function(a,b){b&&(this.A.$=!1);return!0}};function ob(a,b){if(a.I){a===a.I?b|=0:b=b||a.aa;var d=a.I.aa&b;return!!b&&d===b||!!(d&a.I.Hb)}return!1}
function pb(a,b){if(a.A.hb)return a.A.Ga&&(a.A.Ga=!1),a.A.hb=!1;if(a.A.error)return a.g(a.toString()+" error"),!1;a.A.Ga=b;return a.A.Ga}function qb(a,b){a.A.Ga&&(b?a.A.hb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Ga}function E(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.bb;a.bb=null;b&&b()}}function rb(a,b){b&&(a.A.ready?b():a.bb=b);return a.A.ready}function sb(a,b){a.A.error=!0;a.ea(b)}
function pb(a,b){if(a.A.hb)return a.A.Ha&&(a.A.Ha=!1),a.A.hb=!1;if(a.A.error)return a.g(a.toString()+" error"),!1;a.A.Ha=b;return a.A.Ha}function qb(a,b){a.A.Ha&&(b?a.A.hb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Ha}function E(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.bb;a.bb=null;b&&b()}}function rb(a,b){b&&(a.A.ready?b():a.bb=b);return a.A.ready}function sb(a,b){a.A.error=!0;a.ea(b)}
var tb="undefined"!==typeof ArrayBuffer,F={cpu:1,bus:64,mem:128,keyboard:65536,key:131072,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){u.call(this,"Panel",a,ub)}y(ub);m=ub.prototype;m.ha=function(a,b,d,c){return this.j&&this.j.ha(a,b,d,c)||this.f&&this.f.ha(a,b,d,c)||this.I&&this.I.ha(a,b,d,c)?!0:this.parent.ha.call(this,a,b,d,c)};m.va=function(a,b,d,c){this.j=a;this.F=b;this.f=d;this.I=c};
m.ta=function(a,b){b||vb();return!0};m.sa=function(){return!0};m.ja=function(){};function vb(){for(var a=!1,b=C(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],e=B(c),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===f){f=x[h];break a}f=null}f||(a=!0,f=new ub(e));nb(f,c);a&&E(f)}}Qa(vb);
function wb(a,b,d){u.call(this,"Bus",a,wb);this.f=b;this.I=d;this.L=a.busWidth||16;this.J=Math.pow(2,this.L);this.j=this.J-1|0;this.S=(this.L>>1)+2;10>this.S&&(this.S=10);15<this.S&&(this.S=15);this.ma=1<<this.S;this.M=this.ma>>2;this.F=this.ma-1;this.G=this.J/this.ma|0;this.B=this.G-1;this.$a=[];a=new G;xb(a,this.I);this.N=Array(this.G);for(b=0;b<this.G;b++)this.N[b]=a;this.Oa=Array(4);this.Oa[0]=yb;this.Oa[1]=zb;this.Oa[2]=Ab;this.Oa[3]=Bb;this.H=this.J-8192;Cb(this,this.H,8192,Db,this);E(this)}
y(wb);function yb(){return 0}function zb(a,b){var d=this.controller.$a[a];return d?d[0](b):0}function Ab(){}function Bb(a,b,d){return(a=this.controller.$a[a])?a[1](b,d):0}m=wb.prototype;m.reset=function(){};m.ta=function(a,b){b||this.reset();return!0};
function Cb(a,b,d,c,e){for(var f=b,h=d,g=f>>>a.S;0<h&&g<a.N.length;){var k=a.N[g],l=g*a.ma,n=a.ma-(f-l);n>h&&(n=h);if(k&&k.size){if(k.type==c&&k.controller==e){if(f+h<=k.D)return k.Ya+=k.D-f,k.D=f,!0;if(f>=k.D+k.Ya){n=k.size-(f-l);n>h&&(n=h);k.Ya=f-k.D+n;f=l+a.ma;h-=n;g++;continue}}return Eb(1,f,h)}f=new G(f,n,a.ma,c,e);xb(f,a.I,k);a.N[g++]=f;f=l+a.ma;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Qb[c]+" at "+r(b,8,!0)),!0):Eb(2,b,d)}
m.Sa=function(a){return this.N[(a&this.j)>>>this.S].Ka(a&this.F,a)};m.pa=function(a){var b=a&this.F,d=(a&this.j)>>>this.S;return b!=this.F?this.N[d].Db(b,a):this.N[d++].Ka(b,a)|this.N[d&this.B].Ka(0,a+1)<<8};function Rb(a,b){var d=b&a.F,c=(b&a.j)>>>a.S;return d!=a.F?a.N[c].kb(d,b):a.N[c++].Wa(d,b)|a.N[c&a.B].Wa(0,b+1)<<8}m.fb=function(a,b){this.N[(a&this.j)>>>this.S].Ma(a&this.F,b&255,a)};
m.lb=function(a,b){var d=a&this.F,c=(a&this.j)>>>this.S;d!=this.F?this.N[c].Fb(d,b&65535,a):(this.N[c++].Ma(d,b&255,a),this.N[c&this.B].Ma(0,b>>8&255,a+1))};function Eb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}function Sb(a){u.call(this,"Device",a,Sb);this.j=a.name}y(Sb);
Sb.prototype.va=function(a,b,d,c){this.F=b;this.f=d;this.I=c;switch(this.j){default:a=Tb;for(var e in a){var f=a[e];d=b;c=+e;for(var h=f[0]?f[0].bind(this):null,f=f[1]?f[1].bind(this):null,g=+e;g<=c;g+=2){var k=g&8191;if(0>k||8192<=k){t("I/O address out of bounds: "+r(d.H+k,8,!0));break}void 0!==d.$a[k]?t("I/O address already registered: "+r(d.H+k,8,!0)):d.$a[k]=[h,f,!1]}}}E(this)};Sb.prototype.cb=function(){return this.f.cb()};Sb.prototype.Za=function(a){this.f.Za(a)};var Tb={};
Tb[4194302]=[Sb.prototype.cb,Sb.prototype.Za];Qa(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Sb(c);nb(c,d)}});var Ub;if(tb){var Vb=new ArrayBuffer(2);(new DataView(Vb)).setUint16(0,256,!0);Ub=256===(new Uint16Array(Vb))[0]}else Ub=!1;var Wb=Ub;
function G(a,b,d,c,e){this.id=Xb+=2;this.f=null;this.D=a;this.Ya=b;this.size=d||0;this.type=c||Yb;this.K=c==Zb;this.controller=null;xb(this);this.ua=this.Jb=!1;if(d)if(e)this.controller=e,this.f=null,$b(this,e.Oa);else if(tb)this.H=new ArrayBuffer(d),this.J=new DataView(this.H,0,d),this.F=new Uint8Array(this.H,0,d),this.M=new Uint16Array(this.H,0,d>>1),this.f=new Int32Array(this.H,0,d>>2),$b(this,Wb?ac:bc);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;$b(this,cc)}else $b(this)}
var Yb=0,Zb=2,Db=4,Qb=["NONE","RAM","ROM","VID","H/W"],Xb=0;
function wb(a,b,d){u.call(this,"Bus",a,wb);this.f=b;this.I=d;this.L=a.busWidth||16;this.J=Math.pow(2,this.L);this.j=this.J-1|0;this.S=(this.L>>1)+2;10>this.S&&(this.S=10);15<this.S&&(this.S=15);this.ma=1<<this.S;this.M=this.ma>>2;this.F=this.ma-1;this.G=this.J/this.ma|0;this.B=this.G-1;this.Ea=[];a=new G;xb(a,this.I);this.N=Array(this.G);for(b=0;b<this.G;b++)this.N[b]=a;this.Pa=Array(4);this.Pa[0]=yb;this.Pa[1]=zb;this.Pa[2]=Ab;this.Pa[3]=Bb;this.H=this.J-8192;Cb(this,this.H,8192,Db,this);E(this)}
y(wb);function yb(a,b){var d=this.controller.Ea[a];return d&&d[0]?d[0](b):0}function Ab(a,b,d){if((a=this.controller.Ea[a])&&a[1])a[1](d,b)}function zb(a,b){var d=this.controller.Ea[a];if(d){if(d[2])return d[2](b);if(d[0])return d[0](b)|d[0](b+1)<<8}return 0}function Bb(a,b,d){if(a=this.controller.Ea[a])if(a[3])a[3](d,b);else a[1]&&(a[1](d,b&255),a[1](d+1,b>>8))}m=wb.prototype;m.reset=function(){};m.ta=function(a,b){b||this.reset();return!0};
function Cb(a,b,d,c,e){for(var f=b,h=d,g=f>>>a.S;0<h&&g<a.N.length;){var k=a.N[g],l=g*a.ma,n=a.ma-(f-l);n>h&&(n=h);if(k&&k.size){if(k.type==c&&k.controller==e){if(f+h<=k.D)return k.Za+=k.D-f,k.D=f,!0;if(f>=k.D+k.Za){n=k.size-(f-l);n>h&&(n=h);k.Za=f-k.D+n;f=l+a.ma;h-=n;g++;continue}}return Eb(1,f,h)}f=new G(f,n,a.ma,c,e);xb(f,a.I,k);a.N[g++]=f;f=l+a.ma;h-=n}return 0>=h?(a.status(Math.floor(d/1024)+"Kb "+Fb[c]+" at "+r(b,8,!0)),!0):Eb(2,b,d)}
m.Ta=function(a){return this.N[(a&this.j)>>>this.S].La(a&this.F,a)};m.pa=function(a){var b=a&this.F,d=(a&this.j)>>>this.S;return b!=this.F?this.N[d].Db(b,a):this.N[d++].La(b,a)|this.N[d&this.B].La(0,a+1)<<8};function Rb(a,b){var d=b&a.F,c=(b&a.j)>>>a.S;return d!=a.F?a.N[c].kb(d,b):a.N[c++].Xa(d,b)|a.N[c&a.B].Xa(0,b+1)<<8}m.fb=function(a,b){this.N[(a&this.j)>>>this.S].Na(a&this.F,b&255,a)};
m.lb=function(a,b){var d=a&this.F,c=(a&this.j)>>>this.S;d!=this.F?this.N[c].Fb(d,b&65535,a):(this.N[c++].Na(d,b&255,a),this.N[c&this.B].Na(0,b>>8&255,a+1))};function Eb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}function Sb(a){u.call(this,"Device",a,Sb);this.j=a.name}y(Sb);
Sb.prototype.va=function(a,b,d,c){this.F=b;this.f=d;this.I=c;switch(this.j){default:a=Tb;for(var e in a){var f=a[e];d=b;c=+e;for(var h=f[0]?f[0].bind(this):null,g=f[1]?f[1].bind(this):null,k=f[2]?f[2].bind(this):null,f=f[3]?f[3].bind(this):null,l=+e;l<=c;l+=2){var n=l&8191;if(0>n||8192<=n){t("I/O address out of bounds: "+r(d.H+n,8,!0));break}void 0!==d.Ea[n]?t("I/O address already registered: "+r(d.H+n,8,!0)):d.Ea[n]=[h,g,k,f,!1]}}}E(this)};Sb.prototype.cb=function(){return this.f.cb()};
Sb.prototype.$a=function(a){this.f.$a(a)};var Tb={};Tb[4194302]=[null,null,Sb.prototype.cb,Sb.prototype.$a];Qa(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Sb(c);nb(c,d)}});var Ub;if(tb){var Vb=new ArrayBuffer(2);(new DataView(Vb)).setUint16(0,256,!0);Ub=256===(new Uint16Array(Vb))[0]}else Ub=!1;var Wb=Ub;
function G(a,b,d,c,e){this.id=Xb+=2;this.f=null;this.D=a;this.Za=b;this.size=d||0;this.type=c||Yb;this.K=c==Zb;this.controller=null;xb(this);this.ua=this.Jb=!1;if(d)if(e)this.controller=e,this.f=null,$b(this,e.Pa);else if(tb)this.H=new ArrayBuffer(d),this.J=new DataView(this.H,0,d),this.F=new Uint8Array(this.H,0,d),this.M=new Uint16Array(this.H,0,d>>1),this.f=new Int32Array(this.H,0,d>>2),$b(this,Wb?ac:bc);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;$b(this,cc)}else $b(this)}
var Yb=0,Zb=2,Db=4,Fb=["NONE","RAM","ROM","VID","H/W"],Xb=0;
G.prototype={constructor:G,parent:null,save:function(){var a,b;if(this.controller)a=null;else if(tb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.J.getInt32(b<<2,!0);else a=this.f;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(tb)for(b=0;b<a.length;b++)this.J.setInt32(b<<2,a[b],!0);else this.f=a;return this.ua=!0}return!1},wa:function(a,b){b?0===this.B++&&dc(this,ec,!1):0===this.j++&&fc(this,ec,!1)},O:function(){this.I&&ob(this.I,129)&&
this.I.message("attempt to read invalid block %"+r(this.D),!0);return 255},G:function(a,b){this.I&&ob(this.I,129)&&this.I.message("attempt to write "+r(b,4,!0)+" to invalid block %"+r(this.D),!0)},P:function(a,b){return this.Ka(a++,b++)|this.Ka(a,b)<<8},L:function(a,b,d){this.Ma(a++,b&255,d++);this.Ma(a,b>>8,d)},V:function(a){return this.f[a>>2]>>>((a&3)<<3)&255},Z:function(a){var b=a>>2;a=(a&3)<<3;var d=this.f[b]>>a;return 24>a?d&65535:d&255|(this.f[b+1]&255)<<8},ia:function(a,b){var d=a>>2,c=(a&
3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.ua=!0},qa:function(a,b){var d=a>>2,c=(a&3)<<3;24>c?this.f[d]=this.f[d]&~(65535<<c)|b<<c:(this.f[d]=this.f[d]&16777215|b<<24,d++,this.f[d]=this.f[d]&-256|b>>8);this.ua=!0},T:function(a,b){if(this.I&&null!=this.D){var d=this.I;gc(d,this.D+a,1,d.R)&&d.ca(!0)}return this.Wa(a,b)},X:function(a,b){if(this.I&&null!=this.D){var d=this.I;gc(d,this.D+a,2,d.R)&&d.ca(!0)}return this.kb(a,b)},fa:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;gc(c,this.D+a,1,
c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.Na(a,b,d)},la:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;gc(c,this.D+a,2,c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.nb(a,b,d)},R:function(a){return this.F[a]},U:function(a){return this.F[a]},W:function(a){return this.J.getUint16(a,!0)},Y:function(a){return a&1?this.F[a]|this.F[a+1]<<8:this.M[a>>1]},da:function(a,b){this.F[a]=b;this.ua=!0},ga:function(a,b){this.F[a]=b;this.ua=!0},ka:function(a,b){this.J.setUint16(a,b,!0);this.ua=!0},na:function(a,b){a&
1?(this.F[a]=b,this.F[a+1]=b>>8):this.M[a>>1]=b;this.ua=!0}};function xb(a,b,d){a.I=b;a.j=a.B=0;d&&((a.j=d.j)&&fc(a,ec,!1),(a.B=d.B)&&dc(a,ec,!1))}function hc(a,b){b?0===--a.B&&(a.Ma=a.K?a.G:a.Na,a.Fb=a.K?a.L:a.nb):0===--a.j&&(a.Ka=a.Wa,a.Db=a.kb)}function dc(a,b,d){d&&a.B||(a.Ma=!a.K&&b[2]||a.G,a.Fb=!a.K&&b[3]||a.L);if(d||void 0===d)a.Na=b[2]||a.G,a.nb=b[3]||a.L}function fc(a,b,d){d&&a.j||(a.Ka=b[0]||a.O,a.Db=b[1]||a.P);if(d||void 0===d)a.Wa=b[0]||a.O,a.kb=b[1]||a.P}
function $b(a,b){b||(b=ic);fc(a,b,void 0);dc(a,b,void 0)}var ic=[],cc=[G.prototype.V,G.prototype.Z,G.prototype.ia,G.prototype.qa],ec=[G.prototype.T,G.prototype.X,G.prototype.fa,G.prototype.la];if(tb)var bc=[G.prototype.R,G.prototype.W,G.prototype.da,G.prototype.ka],ac=[G.prototype.U,G.prototype.Y,G.prototype.ga,G.prototype.na];
function jc(a,b){u.call(this,"CPU",a,jc,1);var d=a.multiplier||1;this.Fa=a.cycles||b;this.za=d;this.Da=Math.round(this.Fa/1E4)/100;this.ya=this.Da*this.za;this.A.ba=!1;this.A.mb=!1;this.A.Pa=a.autoStart;this.A.rb=!1;this.A.Ha=!1;this.Ta=this.Y=0;this.Ua=a.csStart;this.Ia=a.csInterval;this.Ja=a.csStop;this.ia=[];this.Lb=this.Ba.bind(this);E(this)}y(jc);var kc=["power","reset"];m=jc.prototype;
m.va=function(a,b,d,c){this.j=a;this.F=b;this.I=c;for(b=0;b<kc.length;b++)(d=this.K[kc[b]])&&this.j.ha(null,kc[b],d);this.fa=null;a=lc(a,"autoStart");null!=a&&(this.A.Pa="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
m.ta=function(a,b){if(!b){if(a&&this.restore){mc(this);if(!this.restore(a))return!1;nc(this)}else this.reset();if(this.I){var d=this.I;d.g("Type ? for help with PDP11 Debugger commands");d.ja();if(d.qa){var c=d.qa;d.qa=null;oc(d,c)}}else this.g("No debugger detected")}H(this);return!0};m.sa=function(a){return a?this.save():!0};m.Pa=function(){return this.A.Pa||!this.I&&void 0===this.K.run?(this.Ba(!0),!0):!1};m.vb=function(){return 0};
function nc(a){void 0===a.Ua&&(a.Ua=0);void 0===a.Ia&&(a.Ia=-1);void 0===a.Ja&&(a.Ja=-1);a.A.Ha=0<=a.Ua&&0<a.Ia;a.A.Ha&&(a.Ta=0,a.Y=a.Ua-a.V)}function pc(a,b){if(a.A.Ha){var d=!1;a.Ta=a.Ta+a.vb()|0;a.Y-=b;0>=a.Y&&(a.Y+=a.Ia,d=!0);0<=a.Ja&&a.Ja<=qc(a)&&(a.Ia=a.Ja=-1,nc(a),a.ca(),d=!0);d&&a.g(qc(a)+" cycles: checksum="+r(a.Ta))}}
this.I.message("attempt to read invalid block %"+r(this.D),!0);return 255},G:function(a,b){this.I&&ob(this.I,129)&&this.I.message("attempt to write "+r(b,4,!0)+" to invalid block %"+r(this.D),!0)},P:function(a,b){return this.La(a++,b++)|this.La(a,b)<<8},L:function(a,b,d){this.Na(a++,b&255,d++);this.Na(a,b>>8,d)},V:function(a){return this.f[a>>2]>>>((a&3)<<3)&255},Z:function(a){var b=a>>2;a=(a&3)<<3;var d=this.f[b]>>a;return 24>a?d&65535:d&255|(this.f[b+1]&255)<<8},ia:function(a,b){var d=a>>2,c=(a&
3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.ua=!0},qa:function(a,b){var d=a>>2,c=(a&3)<<3;24>c?this.f[d]=this.f[d]&~(65535<<c)|b<<c:(this.f[d]=this.f[d]&16777215|b<<24,d++,this.f[d]=this.f[d]&-256|b>>8);this.ua=!0},T:function(a,b){if(this.I&&null!=this.D){var d=this.I;gc(d,this.D+a,1,d.R)&&d.ca(!0)}return this.Xa(a,b)},X:function(a,b){if(this.I&&null!=this.D){var d=this.I;gc(d,this.D+a,2,d.R)&&d.ca(!0)}return this.kb(a,b)},fa:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;gc(c,this.D+a,1,
c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.Oa(a,b,d)},la:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;gc(c,this.D+a,2,c.J)&&c.ca(!0)}this.K?this.G(a,b,d):this.nb(a,b,d)},R:function(a){return this.F[a]},U:function(a){return this.F[a]},W:function(a){return this.J.getUint16(a,!0)},Y:function(a){return a&1?this.F[a]|this.F[a+1]<<8:this.M[a>>1]},da:function(a,b){this.F[a]=b;this.ua=!0},ga:function(a,b){this.F[a]=b;this.ua=!0},ka:function(a,b){this.J.setUint16(a,b,!0);this.ua=!0},na:function(a,b){a&
1?(this.F[a]=b,this.F[a+1]=b>>8):this.M[a>>1]=b;this.ua=!0}};function xb(a,b,d){a.I=b;a.j=a.B=0;d&&((a.j=d.j)&&fc(a,ec,!1),(a.B=d.B)&&dc(a,ec,!1))}function hc(a,b){b?0===--a.B&&(a.Na=a.K?a.G:a.Oa,a.Fb=a.K?a.L:a.nb):0===--a.j&&(a.La=a.Xa,a.Db=a.kb)}function dc(a,b,d){d&&a.B||(a.Na=!a.K&&b[1]||a.G,a.Fb=!a.K&&b[3]||a.L);if(d||void 0===d)a.Oa=b[1]||a.G,a.nb=b[3]||a.L}function fc(a,b,d){d&&a.j||(a.La=b[0]||a.O,a.Db=b[2]||a.P);if(d||void 0===d)a.Xa=b[0]||a.O,a.kb=b[2]||a.P}
function $b(a,b){b||(b=ic);fc(a,b,void 0);dc(a,b,void 0)}var ic=[],cc=[G.prototype.V,G.prototype.ia,G.prototype.Z,G.prototype.qa],ec=[G.prototype.T,G.prototype.fa,G.prototype.X,G.prototype.la];if(tb)var bc=[G.prototype.R,G.prototype.da,G.prototype.W,G.prototype.ka],ac=[G.prototype.U,G.prototype.ga,G.prototype.Y,G.prototype.na];
function jc(a,b){u.call(this,"CPU",a,jc,1);var d=a.multiplier||1;this.Ga=a.cycles||b;this.za=d;this.Da=Math.round(this.Ga/1E4)/100;this.ya=this.Da*this.za;this.A.ba=!1;this.A.mb=!1;this.A.Qa=a.autoStart;this.A.rb=!1;this.A.Ia=!1;this.Ua=this.Y=0;this.Va=a.csStart;this.Ja=a.csInterval;this.Ka=a.csStop;this.ia=[];this.Lb=this.Ba.bind(this);E(this)}y(jc);var kc=["power","reset"];m=jc.prototype;
m.va=function(a,b,d,c){this.j=a;this.F=b;this.I=c;for(b=0;b<kc.length;b++)(d=this.K[kc[b]])&&this.j.ha(null,kc[b],d);this.fa=null;a=lc(a,"autoStart");null!=a&&(this.A.Qa="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
m.ta=function(a,b){if(!b){if(a&&this.restore){mc(this);if(!this.restore(a))return!1;nc(this)}else this.reset();if(this.I){var d=this.I;d.g("Type ? for help with PDP11 Debugger commands");d.ja();if(d.qa){var c=d.qa;d.qa=null;oc(d,c)}}else this.g("No debugger detected")}H(this);return!0};m.sa=function(a){return a?this.save():!0};m.Qa=function(){return this.A.Qa||!this.I&&void 0===this.K.run?(this.Ba(!0),!0):!1};m.vb=function(){return 0};
function nc(a){void 0===a.Va&&(a.Va=0);void 0===a.Ja&&(a.Ja=-1);void 0===a.Ka&&(a.Ka=-1);a.A.Ia=0<=a.Va&&0<a.Ja;a.A.Ia&&(a.Ua=0,a.Y=a.Va-a.V)}function pc(a,b){if(a.A.Ia){var d=!1;a.Ua=a.Ua+a.vb()|0;a.Y-=b;0>=a.Y&&(a.Y+=a.Ja,d=!0);0<=a.Ka&&a.Ka<=qc(a)&&(a.Ja=a.Ka=-1,nc(a),a.ca(),d=!0);d&&a.g(qc(a)+" cycles: checksum="+r(a.Ua))}}
function Dc(a,b,d,c){if(a.K[b]){void 0===d&&(sb(a,"Value for "+b+" is invalid"),a.ca());var e=a.I&&a.I.fa||8;d=!a.A.ba||a.A.rb?8==e?ga(d,c):r(d,c):"--------".substr(0,c||4);a.K[b].textContent!=d&&(a.K[b].textContent=d)}}
m.ha=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.K[b]=d;a=!0;break;case "run":this.K[b]=d;d.onclick=function(){var a;if(a=c.j)if(a=c.j,a.A.$)a=!0;else{var b=null,d,g=bb(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.A.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.A.$);d++);d==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.bb?" (waiting for notification)":""))+".");a=!1}a&&(c.A.ba?c.ca():c.Ba())};a=
!0;break;case "speed":this.K[b]=d;a=!0;break;case "setSpeed":this.K[b]=d,d.onclick=function(){Ec(c,c.za<<1,!0)},d.textContent=this.ya.toFixed(2)+"Mhz",a=!0}return a};function Fc(a,b,d){a.V+=b;d&&(a.U=a.P=0)}function Gc(a,b){var d=1;b&&1<a.za&&a.R&&(d=a.R/a.Da);a.zb=Math.round(1E3/30);a.na=Math.floor(a.Fa/30*d);b||(a.Z=a.na);a.Qa=0}function qc(a){return a.V+a.O+a.U-a.P}function mc(a){a.R=0;a.Ab=0;a.V=a.O=a.U=a.P=0;nc(a);Ec(a,1)}
function Ec(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.ya?b=1:c=!0;a.za=b;b=a.Da*a.za;if(a.ya!=b){a.ya=b;b=a.ya.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}d&&a.j&&a.j.Xa()}Fc(a,a.O);a.O=0;a.M=va();a.T=0;Gc(a);return c}function Hc(a){a.U-=a.P;a.P=0}
m.Ba=function(a){if(pb(this,!0)){if(!this.A.ba){Ec(this);this.j&&this.j.start(this.M,qc(this));this.A.ba=!0;this.A.mb=!0;this.fa&&this.fa.start();var b=this.K.run;b&&(b.textContent="Halt");this.j&&(this.j.ja(!0),a&&this.j.Xa(!0))}this.Qa>=this.Fa&&Gc(this,!0);this.ga=0;this.la=va();this.T&&(a=this.la-this.T,a>this.zb&&(this.M+=a,this.M>this.la&&(this.M=this.la)));try{do{for(var d=this.A.Ha?1:this.na,c=this.ia.length-1;0<=c;c--){var e=this.ia[c];0>e[0]||d>e[0]&&(d=e[0])}this.La(d);var f=this.U-this.P;
!0;break;case "speed":this.K[b]=d;a=!0;break;case "setSpeed":this.K[b]=d,d.onclick=function(){Ec(c,c.za<<1,!0)},d.textContent=this.ya.toFixed(2)+"Mhz",a=!0}return a};function Fc(a,b,d){a.V+=b;d&&(a.U=a.P=0)}function Gc(a,b){var d=1;b&&1<a.za&&a.R&&(d=a.R/a.Da);a.zb=Math.round(1E3/30);a.na=Math.floor(a.Ga/30*d);b||(a.Z=a.na);a.Ra=0}function qc(a){return a.V+a.O+a.U-a.P}function mc(a){a.R=0;a.Ab=0;a.V=a.O=a.U=a.P=0;nc(a);Ec(a,1)}
function Ec(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.ya?b=1:c=!0;a.za=b;b=a.Da*a.za;if(a.ya!=b){a.ya=b;b=a.ya.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}d&&a.j&&a.j.Ya()}Fc(a,a.O);a.O=0;a.M=va();a.T=0;Gc(a);return c}function Hc(a){a.U-=a.P;a.P=0}
m.Ba=function(a){if(pb(this,!0)){if(!this.A.ba){Ec(this);this.j&&this.j.start(this.M,qc(this));this.A.ba=!0;this.A.mb=!0;this.fa&&this.fa.start();var b=this.K.run;b&&(b.textContent="Halt");this.j&&(this.j.ja(!0),a&&this.j.Ya(!0))}this.Ra>=this.Ga&&Gc(this,!0);this.ga=0;this.la=va();this.T&&(a=this.la-this.T,a>this.zb&&(this.M+=a,this.M>this.la&&(this.M=this.la)));try{do{for(var d=this.A.Ia?1:this.na,c=this.ia.length-1;0<=c;c--){var e=this.ia[c];0>e[0]||d>e[0]&&(d=e[0])}this.Ma(d);var f=this.U-this.P;
a=f;for(var h=this.ia.length-1;0<=h;h--){var g=this.ia[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ga+=f;this.O+=f;Fc(this,0,!0);pc(this,f);this.Z-=f;if(0>=this.Z){this.Z+=this.na;15<=++this.Ab&&(this.j&&this.j.ja(),this.Ab=0);break}}while(this.A.ba)}catch(k){this.ca();H(this);this.j&&this.j.stop(va(),qc(this));pb(this,!1);sb(this,k.stack||k.message);return}d=setTimeout;c=this.Lb;this.T=va();e=this.zb;this.ga&&(e=Math.round(e*this.ga/this.na));e=e-(this.T-this.la);if(f=this.T-this.M)this.R=
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,Ec(this));if(0>e||this.R<this.ya)-1E3>e&&(this.M-=e),e=0;this.Qa+=this.ga;this.T+=e;d(c,e)}else H(this),this.j&&this.j.stop(va(),qc(this))};m.La=function(){return 0};m.ca=function(a){qb(this,!0);Hc(this);Fc(this,this.O);this.O=0;if(this.A.ba){this.A.ba=!1;this.fa&&this.fa.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function H(a,b){a.j&&a.j.ja(b)}
function Ic(a){this.Cb=+a.model||1170;this.Nb=a.resetAddr||0;jc.call(this,a,1E6);this.ab=0;this.C=65536;this.u=32768;this.w=65535;this.i=32768;this.f=15;this.b=[0,0,0,0,0,0,0,this.Nb];this.eb=[0,0,0,0,0,0];this.Aa=[0,0,0,0];this.memory=[];this.H=[];this.Ra=this.Bb=0;this.W=2;this.X=255;this.G=0;this.da=-1;this.yb=this.Ca=this.xb=this.B=this.qa=this.L=this.J=0;this.ka=[7,7,7,7];this.Ea=[[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,
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,Ec(this));if(0>e||this.R<this.ya)-1E3>e&&(this.M-=e),e=0;this.Ra+=this.ga;this.T+=e;d(c,e)}else H(this),this.j&&this.j.stop(va(),qc(this))};m.Ma=function(){return 0};m.ca=function(a){qb(this,!0);Hc(this);Fc(this,this.O);this.O=0;if(this.A.ba){this.A.ba=!1;this.fa&&this.fa.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function H(a,b){a.j&&a.j.ja(b)}
function Ic(a){this.Cb=+a.model||1170;this.Nb=a.resetAddr||0;jc.call(this,a,1E6);this.ab=0;this.C=65536;this.u=32768;this.w=65535;this.i=32768;this.f=15;this.b=[0,0,0,0,0,0,0,this.Nb];this.eb=[0,0,0,0,0,0];this.Aa=[0,0,0,0];this.memory=[];this.H=[];this.Sa=this.Bb=0;this.W=2;this.X=255;this.G=0;this.da=-1;this.yb=this.Ca=this.xb=this.B=this.qa=this.L=this.J=0;this.ka=[7,7,7,7];this.Fa=[[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.Pb=[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.A.complete=this.A.Ib=!1}y(Ic,jc);m=Ic.prototype;m.reset=function(){this.A.ba&&this.ca();Jc(this);mc(this);this.A.error=!1;this.parent.reset.call(this)};
function Jc(a){a.X=255;a.H=[];a.Bb=0;a.J=a.L=a.qa=a.xb=0;a.ka[0]=a.ka[1]=a.ka[3]=7;a.Ca=0}m.vb=function(){return 0};m.save=function(){var a=new I(this);J(a,0,[]);J(a,1,[this.wb,this.V,this.za]);for(var b=this.F,d=0,c=[],e=0;e<b.G;e++){var f=b.N[e];if(f.ua||f.Jb){c[d++]=e;var h=d++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var n=f[g],p=g+1;p<f.length&&f[p]===n;)p++;l[k++]=p-g;l[k++]=n;g=p}if(l.length<f.length){f=l;break a}}c[h]=f}}J(a,2,c);return a.data()};
m.restore=function(a){var b=a[1];this.wb=b[0];this.V=b[1];Ec(this,b[3]);a:{b=this.F;a=a[2];var d;for(d=0;d<a.length-1;d+=2){var c=a[d],e=a[d+1];if(e&&e.length<b.M){for(var f=0,h=Array(b.M),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.N[c];if(!f||!f.restore(e)){t("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b};
m.ha=function(a,b,d){var c=!1;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 "PSW":this.K[b]=d;this.ab++;c=!0;break;default:c=this.parent.ha.call(this,a,b,d)}return c};
m.ja=function(a){if(this.ab&&(a||!this.A.ba||this.A.rb)){for(a=0;a<this.b.length;a++)Dc(this,"R"+a,this.b[a]);a=Kc(this);Dc(this,"PSW",a);Dc(this,"NF",a&8?1:0,1);Dc(this,"ZF",a&4?1:0,1);Dc(this,"VF",a&2?1:0,1);Dc(this,"CF",a&1?1:0,1)}if(a=this.K.speed)a.textContent=this.A.ba&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};function Kc(a){return a.f&-16|(a.i&32768?8:0)|(a.w&65535?0:4)|(a.u&32768?2:0)|(a.C&65536?1:0)}
m.Za=function(a){this.i=a<<12;this.w=~a&4;this.u=a<<14;this.C=a<<16;if((a^this.f)&2048)for(var b=this.eb.length;0<=--b;){var d=this.b[b];this.b[b]=this.eb[b];this.eb[b]=d}this.B=a>>14&3;b=this.f>>14&3;this.B!=b&&(this.Aa[b]=this.b[6],this.b[6]=this.Aa[this.B]);this.W=2;this.f=a};m.cb=function(){return this.f=this.f&63728|(this.i&32768?8:0)|(this.w&65535?0:4)|(this.u&32768?2:0)|(this.C&65536?1:0)};
function K(a,b){var d,c,e=0;0>a.da?a.da=a.cb():a.B||(b=4,e=1);a.J&57344||(a.L=63222);a.B=0;0<=(d=L(a,b|65536))&&0<=(c=L(a,b+2&65535|65536))&&(a.Za(c&53247|a.da>>2&12288),e&&(a.b[6]=4),0<=Lc(a,a.da)&&0<=Lc(a,a.b[7])&&(a.b[7]=d));a.G=0;return a.da=-1}
function Mc(a,b,d){var c,e,f,h=0;if(d&a.xb){c=b>>13&a.ka[a.B];e=a.Ea[a.B][c];f=(a.Ea[a.B][c+16]<<6)+(b&8191)&4194303;if(a.qa&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.qa&32&&(f=a.Pb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(d&1)))return K(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;d&4&&(h=8192);break;case 4:h=4096;case 5:d&4&&(h=4096);case 6:e|=d&4?192:128;break;
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Ea[a.B][c]=e;if(4194170!==f||a.B)a.Ca=a.B,a.yb=c;if(h){if(h&57344)return 0<=a.da&&(h|=128),a.J&57344||(a.J=a.J|h|a.Ca<<5|a.yb<<1),K(a,168);a.J&61440||!(4191360>f||4194239<f)||(a.J|=4096,a.J&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return K(a,4);return f}function M(a,b){return 4194304<=b?a.b[b-4194304]:3932160<=b?-1:0<=b?a.F.pa(b):b}
function O(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:0<=b?(a.F.lb(b,d),d):b}function P(a,b){return 4194304<=b?a.b[b-4194304]&255:3932160<=b?-1:0<=b?a.F.Sa(b):b}function Q(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:3932160<=b?-1:0<=b?(a.F.fb(b,d),d):b}function L(a,b){return M(a,Mc(a,b,2))}function Nc(a){var b=L(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}
m.$a=function(a){this.i=a<<12;this.w=~a&4;this.u=a<<14;this.C=a<<16;if((a^this.f)&2048)for(var b=this.eb.length;0<=--b;){var d=this.b[b];this.b[b]=this.eb[b];this.eb[b]=d}this.B=a>>14&3;b=this.f>>14&3;this.B!=b&&(this.Aa[b]=this.b[6],this.b[6]=this.Aa[this.B]);this.W=2;this.f=a};m.cb=function(){return this.f=this.f&63728|(this.i&32768?8:0)|(this.w&65535?0:4)|(this.u&32768?2:0)|(this.C&65536?1:0)};
function K(a,b){var d,c,e=0;0>a.da?a.da=a.cb():a.B||(b=4,e=1);a.J&57344||(a.L=63222);a.B=0;0<=(d=L(a,b|65536))&&0<=(c=L(a,b+2&65535|65536))&&(a.$a(c&53247|a.da>>2&12288),e&&(a.b[6]=4),0<=Lc(a,a.da)&&0<=Lc(a,a.b[7])&&(a.b[7]=d));a.G=0;return a.da=-1}
function Mc(a,b,d){var c,e,f,h=0;if(d&a.xb){c=b>>13&a.ka[a.B];e=a.Fa[a.B][c];f=(a.Fa[a.B][c+16]<<6)+(b&8191)&4194303;if(a.qa&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.qa&32&&(f=a.Pb[g]+(f&8190)&4194302,3932160<=f&&4186112>f&&console.log("panic(898)")):f|=4186112}}else f&=262143,253952<=f&&(f|=4186112);if(3932160>f&&(3915776<=f||f&1&&!(d&1)))return K(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;d&4&&(h=8192);break;case 4:h=4096;case 5:d&4&&(h=4096);case 6:e|=d&4?192:128;break;
default:h=32768}32512!==(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(h|=16384):(b&8128)>(e>>2&8128)&&(h|=16384));a.Fa[a.B][c]=e;if(4194170!==f||a.B)a.Ca=a.B,a.yb=c;if(h){if(h&57344)return 0<=a.da&&(h|=128),a.J&57344||(a.J=a.J|h|a.Ca<<5|a.yb<<1),K(a,168);a.J&61440||!(4191360>f||4194239<f)||(a.J|=4096,a.J&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return K(a,4);return f}function M(a,b){return 4194304<=b?a.b[b-4194304]:3932160<=b?-1:0<=b?a.F.pa(b):b}
function O(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:0<=b?(a.F.lb(b,d),d):b}function P(a,b){return 4194304<=b?a.b[b-4194304]&255:3932160<=b?-1:0<=b?a.F.Ta(b):b}function Q(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:3932160<=b?-1:0<=b?(a.F.fb(b,d),d):b}function L(a,b){return M(a,Mc(a,b,2))}function Nc(a){var b=L(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}
function Lc(a,b){var d,c;a.b[6]=c=a.b[6]-2&65535;a.J&57344||(a.L=a.L<<8|246);if(!a.B&&c<=a.X&&4<c){if(c<=a.X-32)return a.b[6]=4,K(a,4);a.G|=4}return 0<=(d=Mc(a,c|65536,4))?O(a,d,b):d}
function Oc(a,b,d){var c,e,f=b&7;switch(b>>3&7){case 0:return K(a,4);case 1:if(6===f&&!a.B&&d&4&&(a.b[6]<=a.X||65534<=a.b[6])){if(a.b[6]<=a.X-32||65534<=a.b[6])return a.b[6]=4,K(a,4);a.G|=4}return 7===f?a.b[f]:a.b[f]|65536;case 2:e=2;c=a.b[f];7!==f&&(c|=65536,6>f&&d&1&&(e=1));break;case 3:e=2;c=a.b[f];7!==f&&(c|=65536);if(0>(c=L(a,c)))return c;c|=65536;break;case 4:e=-2;6>f&&d&1&&(e=-1);c=a.b[f]+e&65535;7!==f&&(c|=65536);break;case 5:e=-2;c=a.b[f]-2&65535;7!==f&&(c|=65536);if(0>(c=L(a,c)))return c;
c|=65536;break;case 6:if(0>(c=L(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return c|65536;case 7:if(0>(c=L(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return 0>(c=L(a,c|65536))?c:c|65536}a.b[f]=a.b[f]+e&65535;a.J&57344||(a.L=a.L<<8|e<<3&248|f);if(6===f&&!a.B&&d&4&&0>=e&&(a.b[6]<=a.X||65534<=a.b[6])){if(a.b[6]<=a.X-32)return a.b[6]=4,K(a,4);a.G|=4}return c}function R(a,b,d){var c;return b&56?(0<=(c=Oc(a,b,d))&&(c=Mc(a,c,d)),c):4194304+(b&7)}
function S(a,b){var d;b&56?0<=(d=R(a,b,2))&&(d=M(a,d)):d=a.b[b&7];return d}function Pc(a,b){var d;b&56?0<=(d=R(a,b,3))&&(d=P(a,d)):d=a.b[b&7]&255;return d}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
m.La=function(a){this.A.complete=!0;var b=this.A.Ib=this.I&&Qc(this.I),d=a?this.A.mb?0:1:-1;this.A.mb=!1;this.U=this.P=a;this.wb&256?(Hc(this),a=!1):a=!0;if(a){do{if(b){if(Rc(this.I,this.b[7],d)){this.ca();break}d=1}var c,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;c=this.Bb&224;if(0<(a=this.H.length))for(;0<a--;){if(0<this.H[a].jb){this.H[a].jb--;this.W=2;break}if(this.H[a].pb){if(!this.H[a].pb()){this.H.splice(a,1);g--;continue}this.H[a].pb=null}this.H[a].Ob>c&&(c=this.H[a].Ob,g=
m.Ma=function(a){this.A.complete=!0;var b=this.A.Ib=this.I&&Qc(this.I),d=a?this.A.mb?0:1:-1;this.A.mb=!1;this.U=this.P=a;this.wb&256?(Hc(this),a=!1):a=!0;if(a){do{if(b){if(Rc(this.I,this.b[7],d)){this.ca();break}d=1}var c,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;c=this.Bb&224;if(0<(a=this.H.length))for(;0<a--;){if(0<this.H[a].jb){this.H[a].jb--;this.W=2;break}if(this.H[a].pb){if(!this.H[a].pb()){this.H.splice(a,1);g--;continue}this.H[a].pb=null}this.H[a].Ob>c&&(c=this.H[a].Ob,g=
a)}c>(this.f&224)&&(0>g?K(this,160):(K(this,this.H[g].Rb),this.H.splice(g,1)))}this.J&57344||(this.L=0);this.G=this.f&16;if(0<=(a=L(this,this.b[7])))switch(this.b[7]=this.b[7]+2&65535,a&61440){case 4096:0<=(c=S(this,a>>6))&&(a&56?0<=(f=R(this,a,4))&&0<=O(this,f,c)&&(this.i=this.w=c,this.u=0):(this.i=this.w=this.b[a&7]=c,this.u=0));break;case 8192:0<=(c=S(this,a>>6))&&0<=(e=S(this,a))&&(this.i=this.w=this.C=a=c-e,this.u=(c^e)&(c^a));break;case 12288:0<=(c=S(this,a>>6))&&0<=(e=S(this,a))&&(this.i=this.w=
c&e,this.u=0);break;case 16384:0<=(c=S(this,a>>6))&&(a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e&~c,0<=O(this,f,a)&&(this.i=this.w=a,this.u=0)):(this.i=this.w=a=this.b[a&7]&=~c,this.u=0));break;case 20480:0<=(c=S(this,a>>6))&&(a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=e|c,0<=O(this,f,a)&&(this.i=this.w=a,this.u=0)):(this.i=this.w=a=this.b[a&7]|=c,this.u=0));break;case 24576:0<=(c=S(this,a>>6))&&(a&56?0<=(e=M(this,f=R(this,a,6)))&&(a=c+e,0<=O(this,f,a)&&(this.i=this.w=this.C=a,this.u=(c^a)&(e^a))):(g=a&7,
e=this.b[g],this.b[g]=(a=c+e)&65535,this.i=this.w=this.C=a,this.u=(c^a)&(e^a)));break;case 36864:0<=(c=Pc(this,a>>6))&&(a&56?0<=(f=R(this,a,5))&&0<=Q(this,f,c)&&(this.i=this.w=c<<8,this.u=0):(c&128&&(c|=65280),this.i=this.w=this.b[a&7]=c,this.u=0));break;case 40960:0<=(c=Pc(this,a>>6))&&0<=(e=Pc(this,a))&&(a=c-e,this.i=this.w=this.C=a<<8,this.u=((c^e)&(c^a))<<8);break;case 45056:0<=(c=Pc(this,a>>6))&&0<=(e=Pc(this,a))&&(this.i=this.w=(c&e)<<8,this.u=0);break;case 49152:0<=(c=Pc(this,a>>6))&&0<=(e=
@ -82,13 +82,13 @@ e))<<8));break;case 35520:0<=(e=P(this,f=R(this,a,7)))&&(a=e-1,0<=Q(this,f,a)&&(
case 35776:0<=(e=Pc(this,a))&&(this.i=this.w=e<<8,this.C=this.u=0);break;case 35840:0<=(e=P(this,f=R(this,a,7)))&&(a=((this.C&65536)>>8|e)>>1,0<=Q(this,f,a)&&(this.C=e<<16,this.i=this.w=a<<8,this.u=this.i^this.C>>1));break;case 35904:0<=(e=P(this,f=R(this,a,7)))&&(a=e<<1|this.C>>16&1,0<=Q(this,f,a)&&(this.C=this.i=this.w=a<<8,this.u=(a^e)<<8));break;case 35968:0<=(e=P(this,f=R(this,a,7)))&&(a=e&128|e>>1,0<=Q(this,f,a)&&(this.C=e<<16,this.i=this.w=a<<8,this.u=this.i^this.C>>1));break;case 36032:0<=
(e=P(this,f=R(this,a,7)))&&(a=e<<1,0<=Q(this,f,a)&&(this.C=this.i=this.w=a<<8,this.u=(a^e)<<8));break;case 36160:a&56?0<=(h=Oc(this,a,0))&&(this.B=this.f>>12&3,0<=(c=L(this,h|65536))&&(this.B=this.f>>14&3,0<=Lc(this,c)&&(this.i=this.w=c,this.u=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Aa[this.f>>12&3],0<=Lc(this,c)&&(this.i=this.w=c,this.u=0));break;case 36224:0<=(e=Nc(this))&&((this.J&57344||(this.L=22),a&56)?0<=(h=Oc(this,a,0))&&(this.B=this.f>>12&3,0<=(f=Mc(this,h|
65536,4))&&(this.B=this.f>>14&3,0<=O(this,f,e)&&(this.i=this.w=e,this.u=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=e:this.Aa[this.f>>12&3]=e,this.i=this.w=e,this.u=0));break;default:switch(a&65528){case 128:0<=(c=Nc(this))&&(g=a&7,this.b[7]=this.b[g],this.b[g]=c);break;case 152:this.f&49152||(this.f=this.f&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.C=0);a&2&&(this.u=0);a&4&&(this.w=1);a&8&&(this.i=0);break;case 176:case 184:a&1&&(this.C=65536);a&2&&(this.u=32768);
a&4&&(this.w=0);a&8&&(this.i=32768);break;default:switch(a){case 0:49152&this.f?K(this,4):(this.Ra=3,Hc(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:g=0;if(0<(a=this.H.length))for(;0<a--;)g+=this.H[a].jb,this.H[a].jb=0;0===g&&0===this.Ra&&(this.Ra=2,Hc(this));break;case 3:K(this,12);break;case 4:K(this,16);break;case 5:this.f&49152||Jc(this);break;case 2:case 6:f=this.b[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(c=L(this,f|65536))&&(this.b[6]=f+2&65535,c&=63743,this.f&49152&&
(c=c&63519|this.f&63712),this.b[7]=h,this.Za(c),this.G&=-17,2===a&&(this.G|=this.f&16)));break;default:K(this,8)}}}}}}this.G&&(this.G&2?K(this,168):this.G&4?K(this,4):this.G&16&&K(this,12),this.G=0)}while(0<this.P)}return this.A.complete?this.U-this.P:void 0===this.A.complete?0:-1};Qa(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Ic(c);nb(c,d)}});
a&4&&(this.w=0);a&8&&(this.i=32768);break;default:switch(a){case 0:49152&this.f?K(this,4):(this.Sa=3,Hc(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:g=0;if(0<(a=this.H.length))for(;0<a--;)g+=this.H[a].jb,this.H[a].jb=0;0===g&&0===this.Sa&&(this.Sa=2,Hc(this));break;case 3:K(this,12);break;case 4:K(this,16);break;case 5:this.f&49152||Jc(this);break;case 2:case 6:f=this.b[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(c=L(this,f|65536))&&(this.b[6]=f+2&65535,c&=63743,this.f&49152&&
(c=c&63519|this.f&63712),this.b[7]=h,this.$a(c),this.G&=-17,2===a&&(this.G|=this.f&16)));break;default:K(this,8)}}}}}}this.G&&(this.G&2?K(this,168):this.G&4?K(this,4):this.G&16&&K(this,12),this.G=0)}while(0<this.P)}return this.A.complete?this.U-this.P:void 0===this.A.complete?0:-1};Qa(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Ic(c);nb(c,d)}});
function Sc(a){u.call(this,"ROM",a,Sc);this.j=null;this.J=a.addr;this.B=a.size;this.L=a.writable;this.G=a.alias;this.H=a.file;this.M=ha(this.H);if(this.H){a=this.H;var b=ia(this.M);"json"!=b&&"hex"!=b&&(a=ka()+"/api/v1/dump?file="+this.H+"&format=bytes&decimal=true");var d=this;xa(a,null,!0,function(a,b,f){Tc(d,a,b,f)})}}y(Sc);Sc.prototype.va=function(a,b,d,c){this.F=b;this.f=d;this.I=c;Uc(this)};
Sc.prototype.ta=function(){if(this.ra){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.B,e=this.ra,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var n=f,k=[k>>>0,h],p=ra(n,k,a.qb);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.L.push({Qb:b,D:d,Kb:c,ra:e,ob:f})}delete this.ra}return!0};Sc.prototype.sa=function(){return!0};
function Tc(a,b,d,c){if(c)a.ea("Unable to load system ROM (error "+c+": "+b+")");else{ab(a.ub,b,d);var e;if("["==d.charAt(0)||"{"==d.charAt(0))try{var f,h,g=eval("("+d+")");if(f=g.bytes)a.j=f;else if(f=g.words)for(a.j=Array(2*f.length),h=e=0;e<f.length;e++)a.j[h++]=f[e]&255,a.j[h++]=f[e]>>8&255;else if(f=g.data)for(a.j=Array(4*f.length),h=e=0;e<f.length;e++)a.j[h++]=f[e]&255,a.j[h++]=f[e]>>8&255,a.j[h++]=f[e]>>16&255,a.j[h++]=f[e]>>24&255;else a.j=g;a.ra=g.symbols;if(!a.j.length){t("Empty ROM: "+
b);return}if(1==a.j.length){t(a.j[0]);return}}catch(k){a.ea("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.j=Array(b.length),e=0;e<b.length;e++)a.j[e]=aa(b[e],16);Uc(a)}}
function Uc(a){if(!rb(a))if(!a.H)E(a);else if(a.j&&a.F){a.B||(a.B=a.j.length);if(a.j.length!=a.B)sb(a,"ROM size ("+r(a.j.length,8,!0)+") does not match specified size ("+r(a.B,8,!0)+")");else{var b;b=a.J;if(Cb(a.F,b,a.B,a.L?1:Zb)){var d;for(d=0;d<a.j.length;d++){var c=a.F,e=b+d;c.N[(e&c.j)>>>c.S].Na(e&c.F,a.j[d]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.G?b.push(a.G):null!=a.G&&a.G.length&&(b=a.G);for(d=0;d<b.length;d++){for(var f=a,c=b[d],e=f.F,h=f.B,g=[],k=f.J>>>e.S;0<h&&k<e.N.length;)g.push(e.N[k++]),
function Uc(a){if(!rb(a))if(!a.H)E(a);else if(a.j&&a.F){a.B||(a.B=a.j.length);if(a.j.length!=a.B)sb(a,"ROM size ("+r(a.j.length,8,!0)+") does not match specified size ("+r(a.B,8,!0)+")");else{var b;b=a.J;if(Cb(a.F,b,a.B,a.L?1:Zb)){var d;for(d=0;d<a.j.length;d++){var c=a.F,e=b+d;c.N[(e&c.j)>>>c.S].Oa(e&c.F,a.j[d]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.G?b.push(a.G):null!=a.G&&a.G.length&&(b=a.G);for(d=0;d<b.length;d++){for(var f=a,c=b[d],e=f.F,h=f.B,g=[],k=f.J>>>e.S;0<h&&k<e.N.length;)g.push(e.N[k++]),
h-=e.ma;e=f.F;f=f.B;h=0;for(c>>>=e.S;0<f&&c<e.N.length;){k=g[h++];if(!k)break;e.N[c++]=k;f-=e.ma}}delete a.j}}E(a)}}Qa(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Sc(c);nb(c,d)}});function Vc(a){u.call(this,"RAM",a,Vc);this.G=a.addr;this.B=a.size;this.j=!1}y(Vc);m=Vc.prototype;m.va=function(a,b,d,c){this.F=b;this.f=d;this.I=c;E(this)};m.ta=function(a,b){b||this.reset();return!0};m.sa=function(a){return a?this.save():!0};
m.reset=function(){!this.j&&this.B&&Cb(this.F,this.G,this.B,1)&&(this.j=!0);this.j||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Vc(c);nb(c,d)}});function Wc(a){u.call(this,"Keyboard",a,Wc,65536);E(this)}y(Wc);Wc.prototype.ha=function(){return!1};Wc.prototype.va=function(a,b,d,c){this.j=a;this.f=d;this.I=c;this.fa=null};
Qa(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Wc(c);nb(c,d)}});function Xc(a){u.call(this,"Debugger",a,Xc);this.fa=a.base||16;this.T=this.la=this.M=0;this.V=!1;this.H=-1;this.G=[];this.X={}}y(Xc);var Yc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
@ -104,68 +104,68 @@ var jd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output
ld={61440:{4096:[62,4032,63],8192:[47,4032,63],12288:[18,4032,63],16384:[14,4032,63],20480:[16,4032,63],24576:[3,4032,63],36864:[63,4032,63],40960:[48,4032,63],45056:[19,4032,63],49152:[15,4032,63],53248:[17,4032,63],57344:[94,4032,63]},65024:{2048:[57,448,63],28672:[100,63,448],29184:[101,63,448],29696:[102,63,448],30208:[103,63,448],30720:[104,448,63],32256:[105,448,8192]},65280:{256:[27,4096],512:[24,4096],768:[10,4096],1024:[11,4096],1280:[22,4096],1536:[12,4096],1792:[20,4096],32768:[25,4096],
33024:[23,4096],33280:[13,4096],33536:[21,4096],33792:[28,4096],34048:[29,4096],34304:[8,4096],34560:[9,4096],34816:[106],35072:[107]},65472:{64:[56,63],192:[95,63],2560:[39,63],2624:[49,63],2688:[53,63],2752:[51,63],2816:[67,63],2880:[1,63],2944:[77,63],3008:[97,63],3072:[73,63],3136:[71,63],3200:[6,63],3264:[4,63],3328:[58,24576],3392:[60,63],3456:[65,63],3520:[96,63],35328:[40,63],35392:[50,63],35456:[54,63],35520:[52,63],35584:[68,63],35648:[2,63],35712:[78,63],35776:[98,63],35840:[74,63],35904:[72,
63],35968:[7,63],36032:[5,63],36096:[66,63],36160:[59,63],36224:[64,63],36288:[61,63]},65528:{128:[76,7],152:[108,12288]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}};m=fd.prototype;
m.va=function(a,b,d,c){this.F=b;this.f=d;this.j=a;(a=lc(a,"messages"))&&id(this,a);this.Fa=ld;md(this,function(a){a:{var b=c.F.N,d=a[0],g=a=0,k=b.length;if(d){a=Y(Z(c,d));if(-1===a){c.g("invalid address: "+d);break a}g=a>>>c.F.S;k=1}c.g("blockid physical blockaddr used size type");c.g("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.g("..."):(d=n.type,l=Qb[d],n&&c.g(r(n.id,8)+" %"+r(g<<c.F.S,8)+" %%"+r(n.D,8)+" "+r(n.Ya,4,!0)+
m.va=function(a,b,d,c){this.F=b;this.f=d;this.j=a;(a=lc(a,"messages"))&&id(this,a);this.Ga=ld;md(this,function(a){a:{var b=c.F.N,d=a[0],g=a=0,k=b.length;if(d){a=Y(Z(c,d));if(-1===a){c.g("invalid address: "+d);break a}g=a>>>c.F.S;k=1}c.g("blockid physical blockaddr used size type");c.g("-------- --------- ---------- ------ ------ ----");for(var d=-1,l=0;k--;){var n=b[g];n.type==d?l++||c.g("..."):(d=n.type,l=Fb[d],n&&c.g(r(n.id,8)+" %"+r(g<<c.F.S,8)+" %%"+r(n.D,8)+" "+r(n.Za,4,!0)+
" "+r(n.size,4,!0)+" "+l),d!=Yb&&(d=-1),l=0);a+=c.F.ma;g++}}});E(this)};
m.ha=function(a,b,d){var c=this;switch(b){case "debugInput":return this.da=this.K[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",oc(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.H<c.G.length-1&&(b=c.G[++c.H])):40==a.keyCode&&(0<c.H?b=c.G[--c.H]:(b="",c.H=-1)),null!=b){var h=b.length;d.value=b;d.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=d,Ka(d,function(){if(c.da){var a=c.da.value;
c.da.value="";oc(c,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=d,Ka(d,function(a){var b=!1;qb(c,!0)||(pb(c,!0),b=c.La(a?1:0),pb(c,!1));return b}),!0}return!1};m.Xa=function(){this.da&&this.da.focus()};function Y(a){a=a&&a.D;null==a&&(a=-1);return a}m.Sa=function(a,b){var d=255,c=Y(a);-1!==c&&(d=this.F,d=d.N[(c&d.j)>>>d.S].Wa(c&d.F,c),b&&nd(a,b));return d};m.pa=function(a,b){var d=65535,c=Y(a);-1!==c&&(d=Rb(this.F,c),b&&nd(a,b));return d};
m.fb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F;e.N[(c&e.j)>>>e.S].Na(c&e.F,b&255,c);d&&nd(a,d);H(this.f,!0)}};m.lb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F,f=c&e.F,h=(c&e.j)>>>e.S;f!=e.F?e.N[h].nb(f,b&65535,c):(e.N[h++].Na(f,b&255,c),e.N[h&e.B].Na(0,b>>8&255,c+1));d&&nd(a,d);H(this.f,!0)}};function X(a){return{D:a,oa:!1}}function od(a){return[a.D,a.oa]}function pd(a){return{D:a[0],oa:a[1]}}
c.da.value="";oc(c,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=d,Ka(d,function(a){var b=!1;qb(c,!0)||(pb(c,!0),b=c.Ma(a?1:0),pb(c,!1));return b}),!0}return!1};m.Ya=function(){this.da&&this.da.focus()};function Y(a){a=a&&a.D;null==a&&(a=-1);return a}m.Ta=function(a,b){var d=255,c=Y(a);-1!==c&&(d=this.F,d=d.N[(c&d.j)>>>d.S].Xa(c&d.F,c),b&&nd(a,b));return d};m.pa=function(a,b){var d=65535,c=Y(a);-1!==c&&(d=Rb(this.F,c),b&&nd(a,b));return d};
m.fb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F;e.N[(c&e.j)>>>e.S].Oa(c&e.F,b&255,c);d&&nd(a,d);H(this.f,!0)}};m.lb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.F,f=c&e.F,h=(c&e.j)>>>e.S;f!=e.F?e.N[h].nb(f,b&65535,c):(e.N[h++].Oa(f,b&255,c),e.N[h&e.B].Oa(0,b>>8&255,c+1));d&&nd(a,d);H(this.f,!0)}};function X(a){return{D:a,oa:!1}}function od(a){return[a.D,a.oa]}function pd(a){return{D:a[0],oa:a[1]}}
function Z(a,b,d){var c;d=(d?a.P:a.Da).D;if(void 0!==b){c=b=bd(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.L.length;d++){var f=a.L[d].ra[c];if(void 0!==f){c=f.o;void 0!==c&&(e=X(c));break}}if(c=e)return c;d=ad(a,b,void 0)}null!=d&&(c=X(d));return c}function qd(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Gb=Zc(a,b.Eb=d[2]))}function nd(a,b){null!=a.D&&(a.D+=b||1)}
function id(a,b){a.I=a;a.aa=a.Hb=536870912;a.ia=null;a.ka=[];var d=Zc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in F){var e;a:if(e=void 0,Array.prototype.indexOf)e=d.indexOf(c,e);else{e=e||0;0>e&&(e+=d.length);0>e&&(e=0);for(var f=d.length;e<f;e++)if(e in d&&d[e]===c)break a;e=-1}0<=e&&(a.aa|=F[c],a.g(c+" messages enabled"))}}function md(a,b){for(var d in F)if(64==F[d]){a.na[d]=b;break}}
m.message=function(a,b){b&&(a+=" at "+W(this,X(this.f.b[7]).D));if(this.aa&1073741824)this.ka.push(a);else if(!this.ia||a!=this.ia)if(this.ia=a,this.aa&-2147483648&&(this.ca(),a+=" (cpu halted)"),this.g(a),this.f){var d=this.f;Hc(d);d.Z=0;H(d)}};
function hd(a){var b;if(Qc(a)){if(!a.O||!a.O.length){a.O=Array(1E3);for(b=0;b<a.O.length;b++)a.O[b]=X();a.Z=0;a.g("instruction history buffer allocated")}if(!a.Y||!a.Y.length)for(a.Y=Array(256),b=0;b<a.Y.length;b++)a.Y[b]=[b,0]}else a.O&&a.O.length&&a.g("instruction history buffer freed"),a.Z=0,a.O=[],a.Y=[]}m.Ba=function(a){if(!rd(this))return!1;this.f.Ba(a);return!0};
m.La=function(a,b,d){if(!rd(this))return!1;this.M=0;a||Qc(this)&&Rc(this,this.f.b[7],0);try{var c=this.f.La(a);0<c&&(this.M+=c,Fc(this.f,c,!0),pc(this.f,c),this.T++)}catch(e){"number"!=typeof e&&(this.M=0,sb(this.f,e.stack||e.message))}!1!==d&&H(this.f);this.ja(b||!1);return 0<this.M};m.ca=function(a){this.f&&this.f.ca(a)};m.ja=function(a){void 0===a&&(a=!0);this.P=X(this.f.b[7]);a&&1!=this.W?sd(this):td(this)};
m.Ma=function(a,b,d){if(!rd(this))return!1;this.M=0;a||Qc(this)&&Rc(this,this.f.b[7],0);try{var c=this.f.Ma(a);0<c&&(this.M+=c,Fc(this.f,c,!0),pc(this.f,c),this.T++)}catch(e){"number"!=typeof e&&(this.M=0,sb(this.f,e.stack||e.message))}!1!==d&&H(this.f);this.ja(b||!1);return 0<this.M};m.ca=function(a){this.f&&this.f.ca(a)};m.ja=function(a){void 0===a&&(a=!0);this.P=X(this.f.b[7]);a&&1!=this.W?sd(this):td(this)};
function rd(a){var b;if(b=a.f&&rb(a.f))b=a.f,b.A.$?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!qb(a.f)?(a=a.f,a.A.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.ta=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.sa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){hd(this);this.T=this.la=0;this.ia=null;this.M=0;this.P=X(this.f.b[7]);this.A.ba=!1;ud(this);a||this.ja()};
m.save=function(){var a=new I(this);J(a,0,od(this.P));J(a,1,od(this.U));J(a,2,[this.G,this.V,this.aa]);J(a,3,this.L);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.P=pd(a[b++]),this.U=pd(a[b++]),this.G=a[b][0],"string"==typeof this.G&&(this.G=[this.G]),this.V=a[b][1],this.aa|=a[b][2]);a[3]&&(this.L=a[3]);return!0};m.start=function(a,b){this.W||this.g("running");this.A.ba=!0;this.Qa=a;this.Ra=b};
m.stop=function(a,b){if(this.A.ba){this.A.ba=!1;this.M=b-this.Ra;if(!this.W){var d="stopped";if(this.M){var c=a-this.Qa,e=0<c?Math.round(1E3*this.M/c):0,d=d+" (";Qc(this)&&(d+=this.T+" opcodes, ",this.la-=this.T,this.T=0);d+=this.M+" cycles, "+c+" ms, "+e+" hz)"}else ob(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.g(d)}this.ja(!0);this.Xa();ud(this,this.f.b[7])}};function Qc(a){return 1<a.B.length||!!a.ga}
m.save=function(){var a=new I(this);J(a,0,od(this.P));J(a,1,od(this.U));J(a,2,[this.G,this.V,this.aa]);J(a,3,this.L);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.P=pd(a[b++]),this.U=pd(a[b++]),this.G=a[b][0],"string"==typeof this.G&&(this.G=[this.G]),this.V=a[b][1],this.aa|=a[b][2]);a[3]&&(this.L=a[3]);return!0};m.start=function(a,b){this.W||this.g("running");this.A.ba=!0;this.Ra=a;this.Sa=b};
m.stop=function(a,b){if(this.A.ba){this.A.ba=!1;this.M=b-this.Sa;if(!this.W){var d="stopped";if(this.M){var c=a-this.Ra,e=0<c?Math.round(1E3*this.M/c):0,d=d+" (";Qc(this)&&(d+=this.T+" opcodes, ",this.la-=this.T,this.T=0);d+=this.M+" cycles, "+c+" ms, "+e+" hz)"}else ob(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.g(d)}this.ja(!0);this.Ya();ud(this,this.f.b[7])}};function Qc(a){return 1<a.B.length||!!a.ga}
function Rc(a,b,d){var c=a.f;if(0<d&&(a.ga&&!--a.ga||gc(a,b,1,a.B)))return!0;0<=d&&a.Y.length&&(a.T++,null!=Rb(a.F,b)&&(b=a.O[a.Z],b.D=c.b[7],b.oa=!1,++a.Z==a.O.length&&(a.Z=0)));return!1}function gd(a){var b,d;a.B=["bp"];if(void 0!==a.R)for(b=1;b<a.R.length;b++){d=a.R[b];var c=a.F;hc(c.N[Y(d)>>>c.S],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)d=a.J[b],c=a.F,hc(c.N[Y(d)>>>c.S],!0);a.J=["bw"];a.Ca=0}
m.wa=function(a,b,d){var c=!0;d||vd(this,a,b,!1,!0);if(a!=this.B){var e=Y(b);if(-1===e)this.g("invalid address: "+W(this,b.D)),c=!1;else{var f=this.F;f.N[e>>>f.S].wa(e&f.F,a==this.J)}}c&&(a.push(b),d?b.oa=!0:(wd(this,a,a.length-1,"set"),hd(this)));return c};function vd(a,b,d,c,e){var f=!1;d=Y(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==Y(g)&&(!c||g.oa)){f=!0;g.oa||e||wd(a,b,h,"cleared");b.splice(h,1);b!=a.B&&(c=a.F,hc(c.N[d>>>c.S],b==a.J));g.oa||hd(a);break}}return f}
function Vd(a,b){for(var d=1;d<b.length;d++)wd(a,b,d);return b.length-1}function wd(a,b,d,c){d=b[d];a.g(b[0]+" "+W(a,d.D)+(c?" "+c:d.Eb?' "'+d.Eb+'"':""))}function ud(a,b){if(void 0!==b)gc(a,b,1,a.B,!0),a.W=0;else for(var d=1;d<a.B.length;d++){var c=a.B[d];if(c.oa){if(!vd(a,a.B,c,!0))break;d=0}}}
function gc(a,b,d,c,e){var f=!1;if(!a.Ca++)for(var h=1;!f&&h<c.length;h++){var g=c[h];if(!e||g.oa)for(var k=Y(g),l=0;l<d;l++)if(b+l==k){var n,f=!0;g.oa&&(vd(a,c,g,!0),e=!0);if(n=g.Gb){for(var f=!1,p=0;p<n.length;p++)if(!Wd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var q=p+1;q<n.length&&n[q].indexOf("else");q++)p++;if(q==n.length){f=!0;break}}a.f.A.ba||(f=!0)}if(f){e||wd(a,c,h,"hit");break}}}a.Ca--;return f}
function Xd(a,b,d,c){var e=X(b.D),f=a.pa(b,2),h,g;for(g in a.Fa)if(h=a.Fa[g][f&g])break;h||(h=[0]);g="";for(var k=kd[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var A=p,p=b,v="",w=void 0,w=void 0,w=A&61440;if(4096==w)w=(f&255)<<24>>23,w=p.D+w&65535,v=W(q,w);else if(8192==w)w=(f&63)<<1,w=p.D-w&65535,v=W(q,w);else if(12288==w)w=f&7,v=W(q,w,2);else if(24576==w)w=f&63,v=W(q,w);else if(w=f&A,A&4032&&(w>>=6,A>>=6),A&63){var A=void 0,z=w&7;switch((w&56)>>3){case 0:v=Yd(z);break;
function Xd(a,b,d,c){var e=X(b.D),f=a.pa(b,2),h,g;for(g in a.Ga)if(h=a.Ga[g][f&g])break;h||(h=[0]);g="";for(var k=kd[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var q;q=a;var A=p,p=b,v="",w=void 0,w=void 0,w=A&61440;if(4096==w)w=(f&255)<<24>>23,w=p.D+w&65535,v=W(q,w);else if(8192==w)w=(f&63)<<1,w=p.D-w&65535,v=W(q,w);else if(12288==w)w=f&7,v=W(q,w,2);else if(24576==w)w=f&63,v=W(q,w);else if(w=f&A,A&4032&&(w>>=6,A>>=6),A&63){var A=void 0,z=w&7;switch((w&56)>>3){case 0:v=Yd(z);break;
case 1:v="@"+Yd(z);break;case 2:7>z?v="("+Yd(z)+")+":(A=q.pa(p,2),v="#"+W(q,A));break;case 3:7>z?v="@("+Yd(z)+")+":(A=q.pa(p,2),v="@#"+W(q,A));break;case 4:v="-("+Yd(z)+")";break;case 5:v="@-("+Yd(z)+")";break;case 6:A=q.pa(p,2);v=W(q,A)+"("+Yd(z)+")";7==z&&(v=[v,W(q,A+p.D&65535)]);break;case 7:A=q.pa(p,2),v="@"+W(q,A)+"("+Yd(z)+")",7==z&&(v=[v,W(q,A+p.D&65535)])}}q=v;if(!q||!q.length){g="INVALID";break}"string"!=typeof q&&(d||(d=q[1]),q=q[0]);0<g.length&&(g+=",");g+=q||"???"}}f="";h=W(a,e.D)+":";
if(-1!==e.D&&-1!==b.D){do if(f+=" "+W(a,a.pa(e,2)),null==e.D)break;while(e.D!=b.D)}h+=pa(f,24);h+=pa(k,5);g&&(h+=" "+g);d&&(h=pa(h,60)+";"+d,h=a.f.A.Ha?h+("cycles="+qc(a.f).toString()+" cs="+r(a.f.Ta)):h+(null!=c?"="+c.toString():""));return h}function Zd(a,b){var d;switch(b){case "N":d=a.f.i&32768?8:0;break;case "Z":d=a.f.w&65535?0:4;break;case "V":d=a.f.u&32768?2:0;break;case "C":d=a.f.C&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}
if(-1!==e.D&&-1!==b.D){do if(f+=" "+W(a,a.pa(e,2)),null==e.D)break;while(e.D!=b.D)}h+=pa(f,24);h+=pa(k,5);g&&(h+=" "+g);d&&(h=pa(h,60)+";"+d,h=a.f.A.Ia?h+("cycles="+qc(a.f).toString()+" cs="+r(a.f.Ua)):h+(null!=c?"="+c.toString():""));return h}function Zd(a,b){var d;switch(b){case "N":d=a.f.i&32768?8:0;break;case "Z":d=a.f.w&65535?0:4;break;case "V":d=a.f.u&32768?2:0;break;case "C":d=a.f.C&65536?1:0;break;default:d=0}return b.charAt(0)+(d?"1":"0")+" "}
function Yd(a){return 6>a?"R"+a:6==a?"SP":"PC"}function $d(a,b){var d="",c=a.f;8>b?(d=Yd(b),d+="="+W(a,c.b[b])):13>b?d="A"+(b-8)+"="+W(a,c.eb[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+W(a,c.Aa[b-16]):20==b&&(d="PS="+W(a,Kc(c)));d&&(d+=" ");return d}m.qb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function ae(a,b,d){var c=[],e=Y(b)>>>0;for(b=0;b<a.L.length;b++){var f=a.L[b],h=f.D>>>0,g=f.Kb;if(e>=h&&e<h+g){e=ra(f.ob,[e-h],a.qb);0<=e?be(a,b,e,c):d&&(e=~e,be(a,b,e-1,c),be(a,b,e,c));break}}return c}
function be(a,b,d,c){var e={},f=a.L[b].ob,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.L[b].ra[g],g="."==g.charAt(0)?null:e.l||g);c.push(g);c.push(h);c.push(e.a);c.push(e.c)}function ce(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return ed(a)||a.g("no variables"),!0;if(!d[2])return ed(a,d[1]);if(!d[3])return delete a.X[d[1]],!0;var c=ad(a,d[3]);return void 0!==c?(a.X[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
function de(a,b,d){var c=null;if(b=Z(a,b,!0)){var e=ae(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.D-e[1])&&(h=" + "+r(f,4,!0)),f=e[0]+" ("+W(a,e[1])+")"+h,d&&a.g(f),c=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.D)&&(h=" - "+r(f,4,!0)),f=e[4]+" ("+W(a,e[5])+")"+h,d&&a.g(f),c||(c=f))}else d&&a.g("no symbols")}return c}
function sd(a,b){var d;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var c=a.f;null==d&&(d=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=ad(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":c.b[7]=g;a.P=X(c.b[7]);break;case "NF":c.i=g?32768:0;break;case "ZF":c.w=g?0:1;break;case "VF":c.u=
g?32768:0;break;case "CF":c.C=g?65536:0;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}H(c);a.g("updated registers:")}f="";for(e=0;6>e;e++)f+=$d(a,e);f=f+"\n"+($d(a,6)+$d(a,7));f+=Zd(a,"T")+Zd(a,"N")+Zd(a,"Z")+Zd(a,"V")+Zd(a,"C");a.g(f);d&&(a.P=X(c.b[7]),td(a,W(a,a.P.D)))}}function ee(a,b){b=qa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):ad(a,b,!0)}
function fe(a,b,d){var c="t"!=b;d=cd(a,d,null,!0)||1;var e=1==d?0:1;"tc"==b&&(e=d,d=1);Ja(d,function(){return pb(a,!0)&&a.La(e,c,!1)},function(){H(a.f);pb(a,!1)})}
g?32768:0;break;case "CF":c.C=g?65536:0;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}H(c);a.g("updated registers:")}f="";for(e=0;6>e;e++)f+=$d(a,e);f=f+"\n"+($d(a,6)+$d(a,7)+$d(a,20));f+=Zd(a,"T")+Zd(a,"N")+Zd(a,"Z")+Zd(a,"V")+Zd(a,"C");a.g(f);d&&(a.P=X(c.b[7]),td(a,W(a,a.P.D)))}}function ee(a,b){b=qa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):ad(a,b,!0)}
function fe(a,b,d){var c="t"!=b;d=cd(a,d,null,!0)||1;var e=1==d?0:1;"tc"==b&&(e=d,d=1);Ja(d,function(){return pb(a,!0)&&a.Ma(e,c,!1)},function(){H(a.f);pb(a,!1)})}
function td(a,b,d,c){if(b=Z(a,b,!0)){void 0===c&&(c=1);var e=256;if(void 0!==d){c=Z(a,d,!0);if(!c||c.D<b.D)return;e=c.D-b.D;if(256<e){a.g("range too large");return}c=-1}d=0;for(var f;0<e&&c--;){f=qb(a,!1)||a.W?a.M:null;var h=null!=f?"cycles":null,g=ae(a,b),k=b.D;if(g[0]&&c&&(!d&&c||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=Xd(a,b,h,f);a.g(f);a.P=b;e-=b.D-k;d++}}}
function Wd(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.g(">> "+b):(a.V&&(a.g("ended assemble at "+W(a,a.U.D)),a.P=a.U,a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ia=null;if(rb(a)&&0<b.length){a.V&&(b="a "+W(a,a.U.D)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var n=Z(a,f[1],!0);if(n)if(a.U=
n,void 0===f[2])a.g("begin assemble at "+W(a,n.D)),a.V=!0,H(a.f);else{var p;a.g("not supported yet");p=[];if(p.length){for(var q=0;q<p.length;q++)a.fb(n,p[q],1);a.g(Xd(a,a.U))}}break;case "b":a:{var A=f[0],v=f[1],w=b;if("?"==v)a.g("breakpoint commands:"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");
else{var z=A.charAt(1);if("l"==z){var Da=0,Da=Da+Vd(a,a.B),Da=Da+Vd(a,a.R);(Da+=Vd(a,a.J))||a.g("no breakpoints")}else if("n"==z)a.ga=cd(a,v),a.g("break after "+a.ga+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var T=X();if("*"!=v&&(T=Z(a,v,!0),!T))break a;"c"==z?null==T.D?(gd(a),a.g("all breakpoints cleared")):vd(a,a.B,T)||vd(a,a.R,T)||vd(a,a.J,T)||a.g("breakpoint missing: "+W(a,T.D)):null!=T.D&&(qd(a,T,w),"p"==z?a.wa(a.B,T):"r"==z?a.wa(a.R,T):"w"==z?a.wa(a.J,T):a.g("unknown breakpoint command: "+
z))}}}break;case "c":a.xa&&(a.xa.value="");break;case "d":a:{var Ea,Fa=f[0],ba=f[1],sa=f[2],ze=f[3];if("?"==ba){var ca="";for(Ea in F)a.na[Ea]&&(ca&&(ca+=","),ca+=Ea);ca+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");ca.length&&a.g("dump extension commands:\n\t"+ca)}else if("state"==ba){var xd=ge(a.j,
!0);"console"==sa?console.log(xd):(a.xa&&(a.xa.value=""),a.g(xd))}else if("symbols"==ba)for(var rc=0;rc<a.L.length;rc++){var sc=a.L[rc],Ga;for(Ga in sc.ra)if("."!=Ga.charAt(0)){var yd=sc.ra[Ga].o;if(void 0!==yd){var zd=sc.ra[Ga].l;zd&&(Ga=zd);a.g(W(a,yd)+" "+Ga)}}}else{if("d"==Fa){for(Ea in F)if(f[1]==Ea){var Ad=a.na[Ea];Ad?(f.shift(),f.shift(),Ad(f)):a.g("no dump registered for "+ba);break a}ba||(Fa=a.ab||"db")}else a.ab=Fa;if("dh"==Fa){var Bd=ba,Cd=sa,Dd="",Ed=0,N=a.Z,da=a.O;if(da.length){var U=
+Bd||a.Ea,Ha=+Cd||10;isNaN(U)?U=Ha:Dd="more ";U>da.length&&(a.g("note: only "+da.length+" available"),U=da.length);N-=U;0>N&&(null==da[da.length-1].D?(U=N+U,N=0):N+=da.length);var tc=[];"call"==Cd&&(Ha=1E5,tc=["CALL"]);for(void 0!==Bd&&a.g(U+" instructions earlier:");0<Ha&&N!=a.Z;){var Fd=da[N++];if(null==Fd.D)break;var db=X(Fd.D),Ae=U--,Gd=Xd(a,db,"history",Ae);(!tc.length||0<=Gd.indexOf(tc[0]))&&a.g(Gd);db.ib&&(N+=db.ib,Ha-=db.ib,U-=db.ib);N>=da.length&&(N=0);a.Ea=U;Ed++;Ha--}}Ed||(a.g("no "+Dd+
"history available"),a.Ea=void 0)}else{var Fb=Z(a,ba);if(Fb){var Gb=0;sa&&("l"==sa.charAt(0)&&(sa=sa.substr(1)||ze),Gb=cd(a,sa)>>>0,65536<Gb&&(Gb=65536));for(var ta="",Hb="dd"==Fa?4:"dw"==Fa?2:1,Ib=Hb*Gb||128,Be=Ib+15>>4||1;Be--&&0<Ib;){var Jb=0,uc=0,eb,fb="",vc="",ba=W(a,Fb.D);for(eb=16;0<eb&&0<Ib;eb--){var Kb=a.Sa(Fb,1),Jb=Jb|Kb<<(uc++<<3);uc==Hb&&(fb+=r(Jb,2*Hb),fb+=1==Hb?9==eb?"-":" ":" ",Jb=uc=0);vc+=32<=Kb&&128>Kb?String.fromCharCode(Kb):".";Ib--}ta&&(ta+="\n");ta+=ba+" "+fb+(0==eb?" "+vc:
"")}ta&&a.g(ta);a.Da=Fb}}}}break;case "e":if("else"==f[0])break;var Lb=1,Hd=255,Id=a.Sa,Jd=a.fb;"ew"==f[0]&&(Lb=2,Hd=65535,Id=a.pa,Jd=a.lb);var Kd=Lb<<1,Ld=f[1];if(null==Ld)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var Mb=Z(a,Ld);if(Mb)for(var Nb=2;Nb<f.length;Nb++){var gb=ad(a,f[Nb]);if(void 0===gb){a.g("unrecognized value: "+f[Nb]);break}gb&~Hd&&a.g("warning: "+r(gb)+" exceeds "+Lb+"-byte value");var Ce=Id.call(a,
Mb);a.g("changing "+W(a,Mb.D)+" from "+r(Ce,Kd,!0)+" to "+r(gb,Kd,!0));Jd.call(a,Mb,gb,Lb)}}break;case "g":a:{var Md=f[1],De=b;if(void 0!==Md){var wc=Z(a,Md,!0);if(!wc)break a;qd(a,wc,De);a.wa(a.B,wc,!0)}a.Ba(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var xc;if(a.A.ba)xc="halting",a.ca();else{if(qb(a,!0))break a;xc="already halted"}d||a.g(xc)}break;case "i":if("if"==f[0]){var yc;var hb=b.substr(2),hb=qa(hb);ad(a,hb)?(d||a.g("true: "+hb),yc=!0):(d||a.g("false: "+
hb),yc=!1);yc||(c=!1)}break;case "k":var Ee=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var zc=0,Nd=X(),ib=X(a.f.b[6]);for(a.g("stack trace for "+W(a,ib.D));10>zc;){for(var ua=null,Fe=256;65536>ib.D>>>0;){Nd.D=a.pa(ib,2);if(null==ib.D||!Fe--)break;for(var Ge=a,Ob=Nd,Od=null,jb=Ob.D,Pd=jb,Ac=1;6>=Ac&&jb;Ac++){if(2<Ac){Ob.D=jb;var Pb=Xd(Ge,Ob);if(0<=Pb.indexOf("JSR")){var Qd=Pb.indexOf(" ");if(jb+(Pb.indexOf(" ",Qd+1)-Qd-
1)/2==Pd){Od=Pb;break}}}jb--}Ob.D=Pd;if(ua=Od)break}if(!ua||null==ua)break;var Rd=null;if("ks"==Ee){var Sd=ua.match(/[0-9A-F]+$/);Sd&&(Rd=de(a,Sd[0]))}ua=pa(ua,50)+" ;"+(Rd||"stack="+W(a,ib.D));a.g(ua);zc++}zc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){de(a,f[1],!0);break}break;case "m":a:{var ea,fa=null,D=f[1];"?"==D&&(D=void 0);if(void 0!==D){var ma=0;if("all"==D)ma=1878917119,D=null;else if("on"==D)fa=!0,D=null;else if("off"==D)fa=!1,D=null;else{"keys"==D&&(D="key");"kbd"==
+Bd||a.Fa,Ha=+Cd||10;isNaN(U)?U=Ha:Dd="more ";U>da.length&&(a.g("note: only "+da.length+" available"),U=da.length);N-=U;0>N&&(null==da[da.length-1].D?(U=N+U,N=0):N+=da.length);var tc=[];"call"==Cd&&(Ha=1E5,tc=["CALL"]);for(void 0!==Bd&&a.g(U+" instructions earlier:");0<Ha&&N!=a.Z;){var Fd=da[N++];if(null==Fd.D)break;var db=X(Fd.D),Ae=U--,Gd=Xd(a,db,"history",Ae);(!tc.length||0<=Gd.indexOf(tc[0]))&&a.g(Gd);db.ib&&(N+=db.ib,Ha-=db.ib,U-=db.ib);N>=da.length&&(N=0);a.Fa=U;Ed++;Ha--}}Ed||(a.g("no "+Dd+
"history available"),a.Fa=void 0)}else{var Gb=Z(a,ba);if(Gb){var Hb=0;sa&&("l"==sa.charAt(0)&&(sa=sa.substr(1)||ze),Hb=cd(a,sa)>>>0,65536<Hb&&(Hb=65536));for(var ta="",Ib="dd"==Fa?4:"dw"==Fa?2:1,Jb=Ib*Hb||128,Be=Jb+15>>4||1;Be--&&0<Jb;){var Kb=0,uc=0,eb,fb="",vc="",ba=W(a,Gb.D);for(eb=16;0<eb&&0<Jb;eb--){var Lb=a.Ta(Gb,1),Kb=Kb|Lb<<(uc++<<3);uc==Ib&&(fb+=r(Kb,2*Ib),fb+=1==Ib?9==eb?"-":" ":" ",Kb=uc=0);vc+=32<=Lb&&128>Lb?String.fromCharCode(Lb):".";Jb--}ta&&(ta+="\n");ta+=ba+" "+fb+(0==eb?" "+vc:
"")}ta&&a.g(ta);a.Da=Gb}}}}break;case "e":if("else"==f[0])break;var Mb=1,Hd=255,Id=a.Ta,Jd=a.fb;"ew"==f[0]&&(Mb=2,Hd=65535,Id=a.pa,Jd=a.lb);var Kd=Mb<<1,Ld=f[1];if(null==Ld)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var Nb=Z(a,Ld);if(Nb)for(var Ob=2;Ob<f.length;Ob++){var gb=ad(a,f[Ob]);if(void 0===gb){a.g("unrecognized value: "+f[Ob]);break}gb&~Hd&&a.g("warning: "+r(gb)+" exceeds "+Mb+"-byte value");var Ce=Id.call(a,
Nb);a.g("changing "+W(a,Nb.D)+" from "+r(Ce,Kd,!0)+" to "+r(gb,Kd,!0));Jd.call(a,Nb,gb,Mb)}}break;case "g":a:{var Md=f[1],De=b;if(void 0!==Md){var wc=Z(a,Md,!0);if(!wc)break a;qd(a,wc,De);a.wa(a.B,wc,!0)}a.Ba(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var xc;if(a.A.ba)xc="halting",a.ca();else{if(qb(a,!0))break a;xc="already halted"}d||a.g(xc)}break;case "i":if("if"==f[0]){var yc;var hb=b.substr(2),hb=qa(hb);ad(a,hb)?(d||a.g("true: "+hb),yc=!0):(d||a.g("false: "+
hb),yc=!1);yc||(c=!1)}break;case "k":var Ee=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var zc=0,Nd=X(),ib=X(a.f.b[6]);for(a.g("stack trace for "+W(a,ib.D));10>zc;){for(var ua=null,Fe=256;65536>ib.D>>>0;){Nd.D=a.pa(ib,2);if(null==ib.D||!Fe--)break;for(var Ge=a,Pb=Nd,Od=null,jb=Pb.D,Pd=jb,Ac=1;6>=Ac&&jb;Ac++){if(2<Ac){Pb.D=jb;var Qb=Xd(Ge,Pb);if(0<=Qb.indexOf("JSR")){var Qd=Qb.indexOf(" ");if(jb+(Qb.indexOf(" ",Qd+1)-Qd-
1)/2==Pd){Od=Qb;break}}}jb--}Pb.D=Pd;if(ua=Od)break}if(!ua||null==ua)break;var Rd=null;if("ks"==Ee){var Sd=ua.match(/[0-9A-F]+$/);Sd&&(Rd=de(a,Sd[0]))}ua=pa(ua,50)+" ;"+(Rd||"stack="+W(a,ib.D));a.g(ua);zc++}zc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){de(a,f[1],!0);break}break;case "m":a:{var ea,fa=null,D=f[1];"?"==D&&(D=void 0);if(void 0!==D){var ma=0;if("all"==D)ma=1878917119,D=null;else if("on"==D)fa=!0,D=null;else if("off"==D)fa=!1,D=null;else{"keys"==D&&(D="key");"kbd"==
D&&(D="keyboard");for(ea in F)if(D==ea){ma=F[ea];fa=!!(a.aa&ma);break}if(!ma){a.g("unknown message category: "+D);break a}}if(ma)if("on"==f[2])a.aa|=ma,fa=!0;else if("off"==f[2]&&(a.aa&=~ma,fa=!1,1073741824==ma)){for(var Bc=0;Bc<a.ka.length;Bc++)a.g(a.ka[Bc]);a.ka=[]}}var He=0,na="";for(ea in F)if(!D||D==ea){var Ie=!!(a.aa&F[ea]);if(null===fa||fa==Ie)na&&(na+=","),++He%10||(na+="\n\t"),"key"==ea&&(ea="keys"),na+=ea}void 0===D&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
a.g((null!==fa?fa?"messages on: ":"messages off: ":"message categories:\n\t")+(na||"none"));hd(a)}break;case "p":if("print"==f[0]){ee(a,b.substr(5));break}var Je="pr"==f[0]?1:0;if(a.W)a.g("step in progress");else{var Td=X(a.f.b[7]);a.Sa(Td);a.W?(a.wa(a.B,Td,!0),a.Ba()||(a.j&&a.j.Xa(),a.W=0)):fe(a,Je?"tr":"t")}break;case "r":if("reset"==b){a.j&&a.j.reset();break}sd(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var kb=+f[2];if(8==kb||10==kb||16==kb)a.fa=kb;else{a.g("invalid base: "+kb);break}}a.g("default base: "+
a.fa);break;case "cs":var lb;void 0!==f[3]&&(lb=+f[3]);switch(f[2]){case "int":a.f.Ia=lb;break;case "start":a.f.Ua=lb;break;case "stop":a.f.Ja=lb;break;default:a.g("unknown cs option");break a}void 0!==lb&&nc(a.f);a.g("checksums "+(a.f.A.Ha?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(Ec(a.f,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.ya.toFixed(2)+"Mhz")+" ("+a.f.za+"x)");break;case "?":a.g("debugger options:");a.g("\tbase #\t\tset default base to #");
a.g((null!==fa?fa?"messages on: ":"messages off: ":"message categories:\n\t")+(na||"none"));hd(a)}break;case "p":if("print"==f[0]){ee(a,b.substr(5));break}var Je="pr"==f[0]?1:0;if(a.W)a.g("step in progress");else{var Td=X(a.f.b[7]);a.Ta(Td);a.W?(a.wa(a.B,Td,!0),a.Ba()||(a.j&&a.j.Ya(),a.W=0)):fe(a,Je?"tr":"t")}break;case "r":if("reset"==b){a.j&&a.j.reset();break}sd(a,f);break;case "s":a:switch(f[1]){case "base":if(f[2]){var kb=+f[2];if(8==kb||10==kb||16==kb)a.fa=kb;else{a.g("invalid base: "+kb);break}}a.g("default base: "+
a.fa);break;case "cs":var lb;void 0!==f[3]&&(lb=+f[3]);switch(f[2]){case "int":a.f.Ja=lb;break;case "start":a.f.Va=lb;break;case "stop":a.f.Ka=lb;break;default:a.g("unknown cs option");break a}void 0!==lb&&nc(a.f);a.g("checksums "+(a.f.A.Ia?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(Ec(a.f,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.ya.toFixed(2)+"Mhz")+" ("+a.f.za+"x)");break;case "?":a.g("debugger options:");a.g("\tbase #\t\tset default base to #");
a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.g("unknown option: "+f[1])}break;case "t":fe(a,f[0],f[1]);break;case "u":td(a,f[1],f[2],8);break;case "v":if("var"==f[0]){ce(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.f.Cb+",RELEASE"+(tb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(window?window.navigator.userAgent:
"");break;case "?":if(f[1]){ee(a,b.substr(1));break}var mb="commands:",Cc;for(Cc in jd)mb+="\n"+pa(Cc,9)+jd[Cc];Qc(a)||(mb+="\nnote: history disabled if no exec breakpoints");a.g(mb);break;default:a.g("unknown command: "+b),c=!1}}}catch(Ud){a.g("debugger error: "+(Ud.stack||Ud.message)),c=!1}return c}function oc(a,b,d){b=Zc(a,b,d);for(var c in b)if(!Wd(a,b[c]))return!1;return!0}Qa(function(){for(var a=C(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new fd(c);nb(c,d)}});
function he(a,b,d){u.call(this,"Computer",a,he,67108864);this.A.$=!1;ie(this,b);this.R=lc(this,"autoPower",a);this.G=0;this.X=a.busWidth||a.buswidth;this.j=je;this.O=null;this.L=this.V=!1;this.Y=lc(this,"url")||"";(Math.random()+.1).toString(36);this.B=ke(this);if(this.f=cb("CPU",this.id)){this.I=cb("Debugger",this.id);this.F=new wb({id:this.ub+".bus",busWidth:this.X},this.f,this.I);var c,e=bb(this.id);if((this.H=cb("Panel",this.id))&&this.H.xa)for(b=0;b<e.length;b++)c=e[b],c.ea=this.H.ea,c.g=this.H.g,
c.xa=this.H.xa;this.g("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.g("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)c=e[b],c.va&&c.va(this,this.F,this.f,this.I);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.M=c:this.j=parseInt(c,10));var f;if(a=lc(this,"state")||(f=!0,a.state))b=this.T=a,f||(this.L=!0,this.j=je),this.j&&(this.P=
new I(this,"1.30.0"),le(this.P)?b=null:delete this.P);!b&&this.j&&(b=me(this))&&(this.L=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.M=null,h.L=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(h.O=b,h.V=!0);E(h)})}else E(this);this.K.power||(this.R=!0);!d&&this.R&&ne(this,this.Va)}else t("Unable to find CPU component")}y(he);var je=0;
new I(this,"1.30.0"),le(this.P)?b=null:delete this.P);!b&&this.j&&(b=me(this))&&(this.L=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.M=null,h.L=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(h.O=b,h.V=!0);E(h)})}else E(this);this.K.power||(this.R=!0);!d&&this.R&&ne(this,this.Wa)}else t("Unable to find CPU component")}y(he);var je=0;
function ie(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){t(c.message+" ("+d+")")}}a.W=b}function lc(a,b,d){var c=b.toLowerCase(),c=Va[b]||Va[c];void 0===c&&a.W&&(c=a.W[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function ne(a,b,d){for(var c=bb(a.id),e=0;e<=c.length;e++){var f=e<c.length?c[e]:a;if(!rb(f)){rb(f,function(){ne(a,b,d)});return}}b.call(a,d)}
function oe(a,b){var d=new I(a,"1.30.0","validate");if(le(d)&&pe(d)){var c=qe(d,"timestamp"),e=b?qe(b,"timestamp"):"unknown";c!=e&&(a.ea("Machine state may be out-of-date\n("+c+" vs. "+e+")\nCheck your browser's local storage limits"),b||d.clear())}}m=he.prototype;
m.Va=function(a){void 0===a&&(a=this.j||(this.O?1:je));if(!this.G){this.G++;var b=!1,d=!1;this.U=!1;var c=this.P||new I(this,"1.30.0");if(-1==a)b=!0;else if(a>je){if(le(c,this.O)){this.J=new I(this,"1.30.0","failsafe");le(this.J)&&(re(this,c),a=2,se(this.J));J(this.J,"timestamp",wa());te(this.J);var e=this.j&&!this.L;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=pe(c)){var f=qe(c,"code"),h=qe(c,"data");f&&("ok"==f?le(c,h):("error"==f&&
m.Wa=function(a){void 0===a&&(a=this.j||(this.O?1:je));if(!this.G){this.G++;var b=!1,d=!1;this.U=!1;var c=this.P||new I(this,"1.30.0");if(-1==a)b=!0;else if(a>je){if(le(c,this.O)){this.J=new I(this,"1.30.0","failsafe");le(this.J)&&(re(this,c),a=2,se(this.J));J(this.J,"timestamp",wa());te(this.J);var e=this.j&&!this.L;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=pe(c)){var f=qe(c,"code"),h=qe(c,"data");f&&("ok"==f?le(c,h):("error"==f&&
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ca("user",""),this.B=null)):this.g(f+": "+h),se(c),le(c)?(d=pe(c),e=!0):d=!1))}e&&oe(this,d?c:null)}else 2==a&&c.clear()}else oe(this);delete this.O;delete this.P}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.f&&(d=ue(this,h,c,b,d));b=[c,a,d];-1!=a?ne(this,this.sb,b):this.sb(b)}};
function ue(a,b,d,c,e){if(!b.A.$){b.A.$=!0;if(b.ta){var f=null;e&&((f=qe(d,b.id))||(f=qe(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ta(f,c)&&f&&(t("Unable to restore state for "+b.type),a.T&&!a.V?(d.clear(),a.j=je,window&&window.location.reload()):a.U=!0,b.ta(null),e=!1)}if(!c&&b.tb)for(a=b.tb.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e}
m.sb=function(a){var b=a[0],d=0>a[1];a=a[2];this.Z=!0;this.A.$=!0;var c=this.K.power;c&&(c.textContent="Shutdown");this.f&&(ue(this,this.f,b,d,a),this.f.Pa());this.U&&(re(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.G=0};
m.sb=function(a){var b=a[0],d=0>a[1];a=a[2];this.Z=!0;this.A.$=!0;var c=this.K.power;c&&(c.textContent="Shutdown");this.f&&(ue(this,this.f,b,d,a),this.f.Qa());this.U&&(re(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.G=0};
function re(a,b){if(ya("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 d=a.B||"",c=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.Y;e.user=d;e.type="bug";e.data=c;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
function ge(a,b,d){var c,e="none";if(a.G)return null;a.G--;var f=new I(a,"1.30.0"),h=new I(a,"1.30.0","validate"),g=wa();J(h,"timestamp",g);J(f,"timestamp",g);J(f,"version","1.30.0");J(f,"url",window?window.location.href:null);J(f,"browser",window?window.navigator.userAgent:"");a.f&&a.f.sa&&(d&&a.f.ca(),c=a.f.sa(b,d),"object"===typeof c&&J(f,a.f.id,c),d&&(a.f.A.$=!1,!1===c&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.$&&(l.sa&&(c=l.sa(b,d),"object"===typeof c&&J(f,l.id,c)),d&&
(l.A.$=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.B&&ve(a,a.B,f.toString()),te(h)&&te(f)||(e=null,c=g=!0)):a.j&&(c=!0,g=3==a.j),c&&f.clear(g)):e=f.toString());d&&(a.A.$=!1,b=a.K.power)&&(b.textContent="Power");a.G=0;return e}m.reset=function(){this.F&&this.F.reset&&(this.I&&ob(this,0)&&this.I.message("Resetting "+this.F.type,void 0),this.F.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.F&&d.reset&&(this.I&&ob(this,0)&&this.I.message("Resetting "+d.type,void 0),d.reset())}};
m.start=function(a,b){for(var d=bb(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var d=bb(this.id),c=0;c<d.length;c++){var e=d[c];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.ha=function(a,b,d){var c=this;switch(b){case "power":return this.K[b]=d,d.onclick=function(){c.G||(c.A.$?ge(c,!1,!0):ne(c,c.Va))},!0;case "reset":return this.K[b]=d,d.onclick=function(){if(c.A.$&&!c.G)if(c.j&&!c.M){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ge(c,a,!0);!a&&c.T?window&&window.location.reload():c.Va(je)}else c.reset(),c.f&&c.f.Pa()},!0;case "save":if(ja()){d.parentNode.removeChild(d);break}this.K[b]=
m.ha=function(a,b,d){var c=this;switch(b){case "power":return this.K[b]=d,d.onclick=function(){c.G||(c.A.$?ge(c,!1,!0):ne(c,c.Wa))},!0;case "reset":return this.K[b]=d,d.onclick=function(){if(c.A.$&&!c.G)if(c.j&&!c.M){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ge(c,a,!0);!a&&c.T?window&&window.location.reload():c.Wa(je)}else c.reset(),c.f&&c.f.Qa()},!0;case "save":if(ja()){d.parentNode.removeChild(d);break}this.K[b]=
d;d.onclick=function(){var a=ke(c,!0);if(a){var b=!!(c.j&&!c.M||c.T),d=ge(c,b);b?ve(c,a,d):c.ea("Resume disabled, machine state not saved")}};return!0}return!1};
function ke(a,b){var d=a.B;d||(d=Ba("user"),void 0!==d?!d&&b&&(d=null,window&&(d=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.","")),d&&((d=we(a,d))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return d}
function we(a,b){a.B=null;var d=xa(ka()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ca("user",d.data),a.B=d.data)}catch(e){t(e.message+" ("+c+")")}return a.B}function me(a){var b=null;a.B&&(b=ka()+"/api/v1/user?req=load&user="+a.B+"&state="+xe(a,"1.30.0"));return b}
function ve(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=xe(a,"1.30.0");c.data=d;b=xa(ka()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var e=c.indexOf("\n");0<e&&(c=c.substr(0,e));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.ea("Machine state saved to server"):d&&(d=b&&b.data||"unable to save machine state",d="error"==b.code?"Error: "+d:"Error "+b.code+": "+d,a.ea(d),Ca("user",""),a.B=null)}}m.Xa=function(){};
m.ja=function(a){this.f&&this.f.ja(a);this.H&&this.H.ja(a)};Qa(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=B(d),d=C(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=B(f),h=new he(h,c,!0);nb(h,f);h.R&&ne(h,h.Va)}});La.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=cb("Computer",d.id))&&d.Z&&!d.A.$&&d.Va(-1)}});
function ve(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=xe(a,"1.30.0");c.data=d;b=xa(ka()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var e=c.indexOf("\n");0<e&&(c=c.substr(0,e));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.ea("Machine state saved to server"):d&&(d=b&&b.data||"unable to save machine state",d="error"==b.code?"Error: "+d:"Error "+b.code+": "+d,a.ea(d),Ca("user",""),a.B=null)}}m.Ya=function(){};
m.ja=function(a){this.f&&this.f.ja(a);this.H&&this.H.ja(a)};Qa(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=B(d),d=C(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=B(f),h=new he(h,c,!0);nb(h,f);h.R&&ne(h,h.Wa)}});La.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=cb("Computer",d.id))&&d.Z&&!d.A.$&&d.Wa(-1)}});
La.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=cb("Computer",d.id))&&d.A.$&&ge(d,!(!d.j||d.M),!0)}});function I(a,b,d){this.id=a.id;this.key=xe(a,b,d);this.I=a.I;se(this,a.Mb)}function xe(a,b,d){a=a.id;if(b){var c=b.indexOf(".");0<c&&(a+=".v"+b.substr(0,c))}d&&(a+="."+d);return a}
I.prototype={constructor:I,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){se(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(e){}for(d=0;d<b.length;d++)if((c=b[d])&&(a||c.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(c)}catch(e){}b.splice(d,1);d=0}}};
function se(a,b){a[a.id]={};b&&J(a,"parms",b);a.f=!1}function te(a){var b=!0;if(Aa()){var d=JSON.stringify(a[a.id]);Ca(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function pe(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function le(a,b){return b?(a[a.id]=b,a.f=!0):a.f?!0:Aa()&&(b=Ba(a.key))?(a[a.id]=b,a.f=!0):!1}function qe(a,b){return a[a.id][b]||null}function J(a,b,d){try{a[a.id][b]=d}catch(c){}}var ye=0;

View file

@ -3,56 +3,56 @@ function aa(a){var b=16,c;if(a){b||(b=10);var d=a.charAt(0),f=0<a.indexOf(",");f
f&&null!==d.match(/^[01]+$/):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}function n(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 p(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"==
function q(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="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));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 q(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 r={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 t(a){r.init.push(a)}
function ta(a){if(ra)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){q(""+("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){r[a]&&ta(r[a])}sa("onload",function(){pa=!0;ta(r.init)});sa("onpageshow",function(){qa=!0;ta(r.show)});sa(oa("Opera")||oa("iOS")?"onunload":"onbeforeunload",function(){ta(r.exit)});
function u(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Qa=b.comment;this.hb=b;b=this.id.indexOf(".");0>b?this.za=this.id:(this.Ra=this.id.substr(0,b),this.za=this.id.substr(b+1));this[a]=c;this.h={ready:!1,ia:!1,Aa:!1,B:!1,error:!1};this.va=null;this.h.error=!1;this.o={};this.w=null;w.push(this)}var wa=void 0,xa={};
function r(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 t={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 u(a){t.init.push(a)}
function ta(a){if(ra)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r(""+("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){t[a]&&ta(t[a])}sa("onload",function(){pa=!0;ta(t.init)});sa("onpageshow",function(){qa=!0;ta(t.show)});sa(oa("Opera")||oa("iOS")?"onunload":"onbeforeunload",function(){ta(t.exit)});
function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Qa=b.comment;this.hb=b;b=this.id.indexOf(".");0>b?this.za=this.id:(this.Ra=this.id.substr(0,b),this.za=this.id.substr(b+1));this[a]=c;this.h={ready:!1,ja:!1,Aa:!1,B:!1,error:!1};this.va=null;this.h.error=!1;this.o={};this.w=null;w.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 x(a,b){b||(b=u);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={}),w=window.PCjs.Components||(window.PCjs.Components=[])}else Ca={},w=[];function Da(a,b,c){Ca[a]&&b&&(Ca[a][b]=c)}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<w.length;b++){var d=w[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function 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<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
function x(a,b){b||(b=v);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={}),w=window.PCjs.Components||(window.PCjs.Components=[])}else Ca={},w=[];function Da(a,b,c){Ca[a]&&b&&(Ca[a][b]=c)}function y(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<w.length;b++){var d=w[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function 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<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
function B(a,b){for(var c=C(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,e=0;e<f.length;e++){var g=f[e];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var k=h.split(" "),l=0;l<k.length;l++)switch(h=k[l],h){case "pdp11-binding":(h=z(g))&&h.binding&&a.L(h.type,h.binding,g,h.value),l=k.length}}}}
function C(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
u.prototype={constructor:u,parent:null,toString:function(){return this.name?this.name:this.id||this.type},L: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.Ca=this.o[b]=c,c.value="",this.H=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.A=function(a){this.H(a,this.za)}),!0;default:return!1}},log:function(){},H:function(){},status:function(a){this.H(this.za+": "+a)},A:function(a,b,c){c=c||this.type;b||q((c?c+": ":"")+a)},Y:function(){return this.h.B=!0},X:function(a,b){b&&(this.h.B=!1);return!0}};function Fa(a,b){if(a.h.Aa)return a.h.ia&&(a.h.ia=!1),a.h.Aa=!1;if(a.h.error)return a.H(a.toString()+" error"),!1;a.h.ia=b;return a.h.ia}function D(a){if(!a.h.error&&(a.h.ready=!0,a.h.ready)){var b=a.va;a.va=null;b&&b()}}
function Ga(a,b){b&&(a.h.ready?b():a.va=b);return a.h.ready}var Ha="undefined"!==typeof ArrayBuffer;function Ia(a){u.call(this,"Panel",a,Ia)}x(Ia);m=Ia.prototype;m.L=function(a,b,c,d){return this.l&&this.l.L(a,b,c,d)||this.a&&this.a.L(a,b,c,d)?!0:this.parent.L.call(this,a,b,c,d)};m.ba=function(a,b,c,d){this.l=a;this.s=b;this.a=c;this.w=d};m.Y=function(a,b){b||Ja();return!0};m.X=function(){return!0};m.ca=function(){};
function Ja(){for(var a=!1,b=C(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=z(d),e;a:{e=f.id;if(void 0!==e)for(var g=void 0,g=0;g<w.length;g++)if(w[g].id===e){e=w[g];break a}e=null}e||(a=!0,e=new Ia(f));B(e,d);a&&D(e)}}t(Ja);
function Ka(a,b,c){u.call(this,"Bus",a,Ka);this.a=b;this.w=c;this.m=a.busWidth||16;this.l=Math.pow(2,this.m);this.i=this.l-1|0;this.c=(this.m>>1)+2;10>this.c&&(this.c=10);15<this.c&&(this.c=15);this.f=1<<this.c;this.u=this.f>>2;this.g=this.f-1;this.s=this.l/this.f|0;this.v=this.s-1;this.ta=[];a=new E;La(a,this.w);this.b=Array(this.s);for(b=0;b<this.s;b++)this.b[b]=a;this.ga=Array(4);this.ga[0]=Ma;this.ga[1]=Na;this.ga[2]=Oa;this.ga[3]=Pa;this.j=this.l-8192;Qa(this,this.j,8192,Ra,this);D(this)}x(Ka);
function Ma(){return 0}function Na(a,b){var c=this.controller.ta[a];return c?c[0](b):0}function Oa(){}function Pa(a,b,c){return(a=this.controller.ta[a])?a[1](b,c):0}Ka.prototype.reset=function(){};Ka.prototype.Y=function(a,b){b||this.reset();return!0};
function Qa(a,b,c,d,f){for(var e=b,g=c,h=e>>>a.c;0<g&&h<a.b.length;){var k=a.b[h],l=h*a.f,v=a.f-(e-l);v>g&&(v=g);if(k&&k.size){if(k.type==d&&k.controller==f){if(e+g<=k.fa)return k.xa+=k.fa-e,k.fa=e,!0;if(e>=k.fa+k.xa){v=k.size-(e-l);v>g&&(v=g);k.xa=e-k.fa+v;e=l+a.f;g-=v;h++;continue}}return Sa(1,e,g)}e=new E(e,v,a.f,d,f);La(e,a.w,k);a.b[h++]=e;e=l+a.f;g-=v}return 0>=g?(a.status(Math.floor(c/1024)+"Kb "+Ta[d]+" at "+n(b,8,!0)),!0):Sa(2,b,c)}
function Sa(a,b,c){q("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}function F(a){u.call(this,"Device",a,F);this.b=a.name}x(F);
F.prototype.ba=function(a,b,c,d){this.s=b;this.a=c;this.w=d;switch(this.b){default:a=Ua;for(var f in a){var e=a[f];c=b;d=+f;for(var g=e[0]?e[0].bind(this):null,e=e[1]?e[1].bind(this):null,h=+f;h<=d;h+=2){var k=h&8191;if(0>k||8192<=k){q("I/O address out of bounds: "+n(c.j+k,8,!0));break}void 0!==c.ta[k]?q("I/O address already registered: "+n(c.j+k,8,!0)):c.ta[k]=[g,e,!1]}}}D(this)};F.prototype.wa=function(){return this.a.wa()};F.prototype.ma=function(a){this.a.ma(a)};var Ua={};
Ua[4194302]=[F.prototype.wa,F.prototype.ma];t(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new F(d);B(d,c)}});var Va;if(Ha){var Wa=new ArrayBuffer(2);(new DataView(Wa)).setUint16(0,256,!0);Va=256===(new Uint16Array(Wa))[0]}else Va=!1;var Xa=Va;
function E(a,b,c,d,f){this.id=Ya+=2;this.a=null;this.fa=a;this.xa=b;this.size=c||0;this.type=d||Za;this.g=d==$a;this.controller=null;La(this);this.W=this.bb=!1;if(c)if(f)this.controller=f,this.a=null,ab(this,f.ga);else if(Ha)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.s=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),ab(this,Xa?bb:cb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;ab(this,db)}else ab(this)}
v.prototype={constructor:v,parent:null,toString:function(){return this.name?this.name:this.id||this.type},L: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.Ca=this.o[b]=c,c.value="",this.H=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.A=function(a){this.H(a,this.za)}),!0;default:return!1}},log:function(){},H:function(){},status:function(a){this.H(this.za+": "+a)},A:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},Y:function(){return this.h.B=!0},X:function(a,b){b&&(this.h.B=!1);return!0}};function Fa(a,b){if(a.h.Aa)return a.h.ja&&(a.h.ja=!1),a.h.Aa=!1;if(a.h.error)return a.H(a.toString()+" error"),!1;a.h.ja=b;return a.h.ja}function D(a){if(!a.h.error&&(a.h.ready=!0,a.h.ready)){var b=a.va;a.va=null;b&&b()}}
function Ga(a,b){b&&(a.h.ready?b():a.va=b);return a.h.ready}var Ha="undefined"!==typeof ArrayBuffer;function Ia(a){v.call(this,"Panel",a,Ia)}x(Ia);m=Ia.prototype;m.L=function(a,b,c,d){return this.l&&this.l.L(a,b,c,d)||this.a&&this.a.L(a,b,c,d)?!0:this.parent.L.call(this,a,b,c,d)};m.ba=function(a,b,c,d){this.l=a;this.s=b;this.a=c;this.w=d};m.Y=function(a,b){b||Ja();return!0};m.X=function(){return!0};m.ca=function(){};
function Ja(){for(var a=!1,b=C(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=z(d),e;a:{e=f.id;if(void 0!==e)for(var g=void 0,g=0;g<w.length;g++)if(w[g].id===e){e=w[g];break a}e=null}e||(a=!0,e=new Ia(f));B(e,d);a&&D(e)}}u(Ja);
function Ka(a,b,c){v.call(this,"Bus",a,Ka);this.a=b;this.w=c;this.m=a.busWidth||16;this.l=Math.pow(2,this.m);this.i=this.l-1|0;this.c=(this.m>>1)+2;10>this.c&&(this.c=10);15<this.c&&(this.c=15);this.f=1<<this.c;this.u=this.f>>2;this.g=this.f-1;this.s=this.l/this.f|0;this.v=this.s-1;this.da=[];a=new E;La(a,this.w);this.b=Array(this.s);for(b=0;b<this.s;b++)this.b[b]=a;this.ha=Array(4);this.ha[0]=Ma;this.ha[1]=Na;this.ha[2]=Oa;this.ha[3]=Pa;this.j=this.l-8192;Qa(this,this.j,8192,Ra,this);D(this)}x(Ka);
function Ma(a,b){var c=this.controller.da[a];return c&&c[0]?c[0](b):0}function Oa(a,b,c){if((a=this.controller.da[a])&&a[1])a[1](c,b)}function Na(a,b){var c=this.controller.da[a];if(c){if(c[2])return c[2](b);if(c[0])return c[0](b)|c[0](b+1)<<8}return 0}function Pa(a,b,c){if(a=this.controller.da[a])if(a[3])a[3](c,b);else a[1]&&(a[1](c,b&255),a[1](c+1,b>>8))}Ka.prototype.reset=function(){};Ka.prototype.Y=function(a,b){b||this.reset();return!0};
function Qa(a,b,c,d,f){for(var e=b,g=c,h=e>>>a.c;0<g&&h<a.b.length;){var k=a.b[h],l=h*a.f,p=a.f-(e-l);p>g&&(p=g);if(k&&k.size){if(k.type==d&&k.controller==f){if(e+g<=k.ga)return k.xa+=k.ga-e,k.ga=e,!0;if(e>=k.ga+k.xa){p=k.size-(e-l);p>g&&(p=g);k.xa=e-k.ga+p;e=l+a.f;g-=p;h++;continue}}return Sa(1,e,g)}e=new E(e,p,a.f,d,f);La(e,a.w,k);a.b[h++]=e;e=l+a.f;g-=p}return 0>=g?(a.status(Math.floor(c/1024)+"Kb "+Ta[d]+" at "+n(b,8,!0)),!0):Sa(2,b,c)}
function Sa(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}function F(a){v.call(this,"Device",a,F);this.b=a.name}x(F);
F.prototype.ba=function(a,b,c,d){this.s=b;this.a=c;this.w=d;switch(this.b){default:a=Ua;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,l=+f;l<=d;l+=2){var p=l&8191;if(0>p||8192<=p){r("I/O address out of bounds: "+n(c.j+p,8,!0));break}void 0!==c.da[p]?r("I/O address already registered: "+n(c.j+p,8,!0)):c.da[p]=[g,h,k,e,!1]}}}D(this)};F.prototype.wa=function(){return this.a.wa()};
F.prototype.na=function(a){this.a.na(a)};var Ua={};Ua[4194302]=[null,null,F.prototype.wa,F.prototype.na];u(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new F(d);B(d,c)}});var Va;if(Ha){var Wa=new ArrayBuffer(2);(new DataView(Wa)).setUint16(0,256,!0);Va=256===(new Uint16Array(Wa))[0]}else Va=!1;var Xa=Va;
function E(a,b,c,d,f){this.id=Ya+=2;this.a=null;this.ga=a;this.xa=b;this.size=c||0;this.type=d||Za;this.g=d==$a;this.controller=null;La(this);this.W=this.bb=!1;if(c)if(f)this.controller=f,this.a=null,ab(this,f.ha);else if(Ha)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.s=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),ab(this,Xa?bb:cb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;ab(this,db)}else ab(this)}
var Za=0,$a=2,Ra=4,Ta=["NONE","RAM","ROM","VID","H/W"],Ya=0;
E.prototype={constructor:E,parent:null,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.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(Ha)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.W=!0}return!1},j:function(){return 255},m:function(){},l:function(a,b){return this.ka(a++,b++)|this.ka(a,b)<<8},u:function(a,b,
c){this.la(a++,b&255,c++);this.la(a,b>>8,c)},G:function(a){return this.a[a>>2]>>>((a&3)<<3)&255},O: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},T:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.W=!0},aa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.W=!0},C:function(a,b){return this.D(a,b)},J:function(a,b){return this.K(a,
E.prototype={constructor:E,parent:null,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.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(this.controller)return null==a;if(a&&this.size==a.length<<2){var b;if(Ha)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.W=!0}return!1},j:function(){return 255},m:function(){},l:function(a,b){return this.la(a++,b++)|this.la(a,b)<<8},u:function(a,b,
c){this.ma(a++,b&255,c++);this.ma(a,b>>8,c)},G:function(a){return this.a[a>>2]>>>((a&3)<<3)&255},O: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},T:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.W=!0},aa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.W=!0},C:function(a,b){return this.D(a,b)},J:function(a,b){return this.K(a,
b)},R:function(a,b,c){this.g||this.$a(a,b,c)},V:function(a,b,c){this.g||this.Z(a,b,c)},v:function(a){return this.b[a]},F:function(a){return this.b[a]},I:function(a){return this.f.getUint16(a,!0)},N:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.s[a>>1]},P:function(a,b){this.b[a]=b;this.W=!0},S:function(a,b){this.b[a]=b;this.W=!0},U:function(a,b){this.f.setUint16(a,b,!0);this.W=!0},$:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.s[a>>1]=b;this.W=!0}};
function La(a,b,c){a.w=b;a.i=a.o=0;c&&((a.i=c.i)&&eb(a,fb,!1),(a.o=c.o)&&gb(a,fb,!1))}function gb(a,b,c){c&&a.o||(a.la=!a.g&&b[2]||a.m,a.kb=!a.g&&b[3]||a.u);if(c||void 0===c)a.$a=b[2]||a.m,a.Z=b[3]||a.u}function eb(a,b,c){c&&a.i||(a.ka=b[0]||a.j,a.eb=b[1]||a.l);if(c||void 0===c)a.D=b[0]||a.j,a.K=b[1]||a.l}function ab(a,b){b||(b=hb);eb(a,b,void 0);gb(a,b,void 0)}var hb=[],db=[E.prototype.G,E.prototype.O,E.prototype.T,E.prototype.aa],fb=[E.prototype.C,E.prototype.J,E.prototype.R,E.prototype.V];
if(Ha)var cb=[E.prototype.v,E.prototype.I,E.prototype.P,E.prototype.U],bb=[E.prototype.F,E.prototype.N,E.prototype.S,E.prototype.$];function ib(a,b){u.call(this,"CPU",a,ib);var c=a.multiplier||1;this.Ga=a.cycles||b;this.T=c;this.Ba=Math.round(this.Ga/1E4)/100;this.R=this.Ba*this.T;this.h.M=!1;this.h.Ya=!1;this.h.ha=a.autoStart;this.h.Ma=!1;this.h.ua=!1;this.ra=this.S=0;this.sa=a.csStart;this.$=a.csInterval;this.aa=a.csStop;this.oa=[];this.gb=this.Ka.bind(this);D(this)}x(ib);var jb=["power","reset"];
m=ib.prototype;m.ba=function(a,b,c,d){this.l=a;this.s=b;this.w=d;for(b=0;b<jb.length;b++)(c=this.o[jb[b]])&&this.l.L(null,jb[b],c);this.Z=null;a=kb(a,"autoStart");null!=a&&(this.h.ha="true"==a?!0:"false"==a?!1:!!a);D(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Y=function(a,b){if(!b){if(a&&this.restore){lb(this);if(!this.restore(a))return!1;mb(this)}else this.reset();this.H("No debugger detected")}nb(this);return!0};
m.X=function(a){return a?this.save():!0};m.ha=function(){return this.h.ha||void 0===this.o.run?(this.Ka(),!0):!1};m.Oa=function(){return 0};function mb(a){void 0===a.sa&&(a.sa=0);void 0===a.$&&(a.$=-1);void 0===a.aa&&(a.aa=-1);a.h.ua=0<=a.sa&&0<a.$;a.h.ua&&(a.ra=0,a.S=a.sa-a.N)}
function La(a,b,c){a.w=b;a.i=a.o=0;c&&((a.i=c.i)&&eb(a,fb,!1),(a.o=c.o)&&gb(a,fb,!1))}function gb(a,b,c){c&&a.o||(a.ma=!a.g&&b[1]||a.m,a.kb=!a.g&&b[3]||a.u);if(c||void 0===c)a.$a=b[1]||a.m,a.Z=b[3]||a.u}function eb(a,b,c){c&&a.i||(a.la=b[0]||a.j,a.eb=b[2]||a.l);if(c||void 0===c)a.D=b[0]||a.j,a.K=b[2]||a.l}function ab(a,b){b||(b=hb);eb(a,b,void 0);gb(a,b,void 0)}var hb=[],db=[E.prototype.G,E.prototype.T,E.prototype.O,E.prototype.aa],fb=[E.prototype.C,E.prototype.R,E.prototype.J,E.prototype.V];
if(Ha)var cb=[E.prototype.v,E.prototype.P,E.prototype.I,E.prototype.U],bb=[E.prototype.F,E.prototype.S,E.prototype.N,E.prototype.$];function ib(a,b){v.call(this,"CPU",a,ib);var c=a.multiplier||1;this.Ga=a.cycles||b;this.T=c;this.Ba=Math.round(this.Ga/1E4)/100;this.R=this.Ba*this.T;this.h.M=!1;this.h.Ya=!1;this.h.ia=a.autoStart;this.h.Ma=!1;this.h.ua=!1;this.sa=this.S=0;this.ta=a.csStart;this.$=a.csInterval;this.aa=a.csStop;this.pa=[];this.gb=this.Ka.bind(this);D(this)}x(ib);var jb=["power","reset"];
m=ib.prototype;m.ba=function(a,b,c,d){this.l=a;this.s=b;this.w=d;for(b=0;b<jb.length;b++)(c=this.o[jb[b]])&&this.l.L(null,jb[b],c);this.Z=null;a=kb(a,"autoStart");null!=a&&(this.h.ia="true"==a?!0:"false"==a?!1:!!a);D(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Y=function(a,b){if(!b){if(a&&this.restore){lb(this);if(!this.restore(a))return!1;mb(this)}else this.reset();this.H("No debugger detected")}nb(this);return!0};
m.X=function(a){return a?this.save():!0};m.ia=function(){return this.h.ia||void 0===this.o.run?(this.Ka(),!0):!1};m.Oa=function(){return 0};function mb(a){void 0===a.ta&&(a.ta=0);void 0===a.$&&(a.$=-1);void 0===a.aa&&(a.aa=-1);a.h.ua=0<=a.ta&&0<a.$;a.h.ua&&(a.sa=0,a.S=a.ta-a.N)}
function G(a,b,c,d){if(a.o[b]){void 0===c&&(a.h.error=!0,a.A("Value for "+b+" is invalid"),H(a));var f=a.w&&a.w.b||8;if(!a.h.M||a.h.Ma)if(8==f){f="";d?11<d&&(d=11):d=c&-65536?11:6;if(null==c||isNaN(c))for(;0<d--;)f="?"+f;else for(;0<d--;)f=String.fromCharCode((c&7)+48)+f,c>>=3;d=""+f}else d=n(c,d);else d="--------".substr(0,d||4);a.o[b].textContent!=d&&(a.o[b].textContent=d)}}
m.L=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.l)if(a=d.l,a.h.B)a=!0;else{var b=null,c,h=y(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.B);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.h.ready?"powered yet":"ready yet"+(b.va?" (waiting for notification)":""))+".");a=!1}a&&(d.h.M?H(d):d.Ka())};a=!0;break;
case "speed":this.o[b]=c;a=!0;break;case "setSpeed":this.o[b]=c,c.onclick=function(){ob(d,d.T<<1)},c.textContent=this.R.toFixed(2)+"Mhz",a=!0}return a};function pb(a,b,c){a.N+=b;c&&(a.K=a.G=0)}function qb(a,b){var c=1;b&&1<a.T&&a.I&&(c=a.I/a.Ba);a.Va=Math.round(1E3/30);a.na=Math.floor(a.Ga/30*c);b||(a.da=a.na);a.Ha=0}function rb(a){return a.N+a.F+a.K-a.G}function lb(a){a.I=0;a.Wa=0;a.N=a.F=a.K=a.G=0;mb(a);ob(a,1)}
m.L=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.l)if(a=d.l,a.h.B)a=!0;else{var b=null,c,h=y(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.B);c++);c==h.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.h.ready?"powered yet":"ready yet"+(b.va?" (waiting for notification)":""))+".");a=!1}a&&(d.h.M?H(d):d.Ka())};a=!0;break;
case "speed":this.o[b]=c;a=!0;break;case "setSpeed":this.o[b]=c,c.onclick=function(){ob(d,d.T<<1)},c.textContent=this.R.toFixed(2)+"Mhz",a=!0}return a};function pb(a,b,c){a.N+=b;c&&(a.K=a.G=0)}function qb(a,b){var c=1;b&&1<a.T&&a.I&&(c=a.I/a.Ba);a.Va=Math.round(1E3/30);a.oa=Math.floor(a.Ga/30*c);b||(a.ea=a.oa);a.Ha=0}function rb(a){return a.N+a.F+a.K-a.G}function lb(a){a.I=0;a.Wa=0;a.N=a.F=a.K=a.G=0;mb(a);ob(a,1)}
function ob(a,b){if(void 0!==b){.8>a.I/a.R&&(b=1);a.T=b;var c=a.Ba*a.T;if(a.R!=c){a.R=c;var c=a.R.toFixed(2)+"Mhz",d=a.o.setSpeed;d&&(d.textContent=c);a.H("target speed: "+c)}}pb(a,a.F);a.F=0;a.D=ha();a.J=0;qb(a)}function sb(a){a.K-=a.G;a.G=0}
m.Ka=function(){if(Fa(this,!0)){if(!this.h.M){ob(this);this.l&&this.l.start(this.D,rb(this));this.h.M=!0;this.h.Ya=!0;this.Z&&this.Z.start();var a=this.o.run;a&&(a.textContent="Halt");this.l&&this.l.ca(!0)}this.Ha>=this.Ga&&qb(this,!0);this.ea=0;this.qa=ha();this.J&&(a=this.qa-this.J,a>this.Va&&(this.D+=a,this.D>this.qa&&(this.D=this.qa)));try{do{for(var b=this.h.ua?1:this.na,c=this.oa.length-1;0<=c;c--){var d=this.oa[c];0>d[0]||b>d[0]&&(b=d[0])}this.Za(b);for(var f=this.K-this.G,a=f,e=this.oa.length-
1;0<=e;e--){var g=this.oa[e];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ea+=f;this.F+=f;pb(this,0,!0);a=f;if(this.h.ua){var h=!1;this.ra=this.ra+this.Oa()|0;this.S-=a;0>=this.S&&(this.S+=this.$,h=!0);0<=this.aa&&this.aa<=rb(this)&&(this.$=this.aa=-1,mb(this),H(this),h=!0);h&&this.H(rb(this)+" cycles: checksum="+n(this.ra))}this.da-=f;if(0>=this.da){this.da+=this.na;15<=++this.Wa&&(this.l&&this.l.ca(),this.Wa=0);break}}while(this.h.M)}catch(k){H(this);nb(this);this.l&&this.l.stop(ha(),rb(this));
Fa(this,!1);b=k.stack||k.message;this.h.error=!0;this.A(b);return}b=setTimeout;c=this.gb;this.J=ha();d=this.Va;this.ea&&(d=Math.round(d*this.ea/this.na));d=d-(this.J-this.qa);if(f=this.J-this.D)this.I=Math.round(this.F/(10*f))/100,864E5<=f&&(this.N=0,ob(this));if(0>d||this.I<this.R)-1E3>d&&(this.D-=d),d=0;this.Ha+=this.ea;this.J+=d;b(c,d)}else nb(this),this.l&&this.l.stop(ha(),rb(this))};m.Za=function(){return 0};
function H(a){a.h.ia&&(a.h.Aa=!0);sb(a);pb(a,a.F);a.F=0;if(a.h.M){a.h.M=!1;a.Z&&a.Z.stop();var b=a.o.run;b&&(b.textContent="Run")}a.h.complete=void 0}function nb(a){a.l&&a.l.ca(void 0)}
function tb(a){this.fb=+a.model||1170;this.ib=a.resetAddr||0;ib.call(this,a,1E6);this.Pa=0;this.g=65536;this.c=32768;this.f=65535;this.b=32768;this.i=15;this.a=[0,0,0,0,0,0,0,this.ib];this.Ia=[0,0,0,0,0,0];this.U=[0,0,0,0];this.memory=[];this.u=[];this.Ja=this.Xa=0;this.O=2;this.P=255;this.m=0;this.V=-1;this.Ua=this.Da=this.Ta=this.j=this.ya=this.C=this.v=0;this.pa=[7,7,7,7];this.Fa=[[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,
m.Ka=function(){if(Fa(this,!0)){if(!this.h.M){ob(this);this.l&&this.l.start(this.D,rb(this));this.h.M=!0;this.h.Ya=!0;this.Z&&this.Z.start();var a=this.o.run;a&&(a.textContent="Halt");this.l&&this.l.ca(!0)}this.Ha>=this.Ga&&qb(this,!0);this.fa=0;this.ra=ha();this.J&&(a=this.ra-this.J,a>this.Va&&(this.D+=a,this.D>this.ra&&(this.D=this.ra)));try{do{for(var b=this.h.ua?1:this.oa,c=this.pa.length-1;0<=c;c--){var d=this.pa[c];0>d[0]||b>d[0]&&(b=d[0])}this.Za(b);for(var f=this.K-this.G,a=f,e=this.pa.length-
1;0<=e;e--){var g=this.pa[e];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.fa+=f;this.F+=f;pb(this,0,!0);a=f;if(this.h.ua){var h=!1;this.sa=this.sa+this.Oa()|0;this.S-=a;0>=this.S&&(this.S+=this.$,h=!0);0<=this.aa&&this.aa<=rb(this)&&(this.$=this.aa=-1,mb(this),H(this),h=!0);h&&this.H(rb(this)+" cycles: checksum="+n(this.sa))}this.ea-=f;if(0>=this.ea){this.ea+=this.oa;15<=++this.Wa&&(this.l&&this.l.ca(),this.Wa=0);break}}while(this.h.M)}catch(k){H(this);nb(this);this.l&&this.l.stop(ha(),rb(this));
Fa(this,!1);b=k.stack||k.message;this.h.error=!0;this.A(b);return}b=setTimeout;c=this.gb;this.J=ha();d=this.Va;this.fa&&(d=Math.round(d*this.fa/this.oa));d=d-(this.J-this.ra);if(f=this.J-this.D)this.I=Math.round(this.F/(10*f))/100,864E5<=f&&(this.N=0,ob(this));if(0>d||this.I<this.R)-1E3>d&&(this.D-=d),d=0;this.Ha+=this.fa;this.J+=d;b(c,d)}else nb(this),this.l&&this.l.stop(ha(),rb(this))};m.Za=function(){return 0};
function H(a){a.h.ja&&(a.h.Aa=!0);sb(a);pb(a,a.F);a.F=0;if(a.h.M){a.h.M=!1;a.Z&&a.Z.stop();var b=a.o.run;b&&(b.textContent="Run")}a.h.complete=void 0}function nb(a){a.l&&a.l.ca(void 0)}
function tb(a){this.fb=+a.model||1170;this.ib=a.resetAddr||0;ib.call(this,a,1E6);this.Pa=0;this.g=65536;this.c=32768;this.f=65535;this.b=32768;this.i=15;this.a=[0,0,0,0,0,0,0,this.ib];this.Ia=[0,0,0,0,0,0];this.U=[0,0,0,0];this.memory=[];this.u=[];this.Ja=this.Xa=0;this.O=2;this.P=255;this.m=0;this.V=-1;this.Ua=this.Da=this.Ta=this.j=this.ya=this.C=this.v=0;this.qa=[7,7,7,7];this.Fa=[[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.h.complete=this.h.ab=!1}x(tb,ib);m=tb.prototype;m.reset=function(){this.h.M&&H(this);ub(this);lb(this);this.h.error=!1;this.parent.reset.call(this)};
function ub(a){a.P=255;a.u=[];a.Xa=0;a.v=a.C=a.ya=a.Ta=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Da=0}m.Oa=function(){return 0};m.save=function(){var a=new I(this);J(a,0,[]);J(a,1,[this.Sa,this.N,this.T]);for(var b=this.s,c=0,d=[],f=0;f<b.s;f++){var e=b.b[f];if(e.W||e.bb){d[c++]=f;var g=c++;a:if(e=e.save()){for(var h=0,k=0,l=[];h<e.length;){for(var v=e[h],A=h+1;A<e.length&&e[A]===v;)A++;l[k++]=A-h;l[k++]=v;h=A}if(l.length<e.length){e=l;break a}}d[g]=e}}J(a,2,d);return a.data()};
m.restore=function(a){var b=a[1];this.Sa=b[0];this.N=b[1];ob(this,b[3]);a:{b=this.s;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.u){for(var e=0,g=Array(b.u),h=0;h<f.length-1;)for(var k=f[h++],l=f[h++];k--;)g[e++]=l;f=g}e=b.b[d];if(!e||!e.restore(f)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
function ub(a){a.P=255;a.u=[];a.Xa=0;a.v=a.C=a.ya=a.Ta=0;a.qa[0]=a.qa[1]=a.qa[3]=7;a.Da=0}m.Oa=function(){return 0};m.save=function(){var a=new I(this);J(a,0,[]);J(a,1,[this.Sa,this.N,this.T]);for(var b=this.s,c=0,d=[],f=0;f<b.s;f++){var e=b.b[f];if(e.W||e.bb){d[c++]=f;var g=c++;a:if(e=e.save()){for(var h=0,k=0,l=[];h<e.length;){for(var p=e[h],A=h+1;A<e.length&&e[A]===p;)A++;l[k++]=A-h;l[k++]=p;h=A}if(l.length<e.length){e=l;break a}}d[g]=e}}J(a,2,d);return a.data()};
m.restore=function(a){var b=a[1];this.Sa=b[0];this.N=b[1];ob(this,b[3]);a:{b=this.s;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.u){for(var e=0,g=Array(b.u),h=0;h<f.length-1;)for(var k=f[h++],l=f[h++];k--;)g[e++]=l;f=g}e=b.b[d];if(!e||!e.restore(f)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.L=function(a,b,c){var d=!1;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 "PSW":this.o[b]=c;this.Pa++;d=!0;break;default:d=this.parent.L.call(this,a,b,c)}return d};
m.ca=function(a){if(this.Pa&&(a||!this.h.M||this.h.Ma)){for(a=0;a<this.a.length;a++)G(this,"R"+a,this.a[a]);a=this.i&-16|(this.b&32768?8:0)|(this.f&65535?0:4)|(this.c&32768?2:0)|(this.g&65536?1:0);G(this,"PSW",a);G(this,"NF",a&8?1:0,1);G(this,"ZF",a&4?1:0,1);G(this,"VF",a&2?1:0,1);G(this,"CF",a&1?1:0,1)}if(a=this.o.speed)a.textContent=this.h.M&&this.I?this.I.toFixed(2)+"Mhz":"Stopped"};
m.ma=function(a){this.b=a<<12;this.f=~a&4;this.c=a<<14;this.g=a<<16;if((a^this.i)&2048)for(var b=this.Ia.length;0<=--b;){var c=this.a[b];this.a[b]=this.Ia[b];this.Ia[b]=c}this.j=a>>14&3;b=this.i>>14&3;this.j!=b&&(this.U[b]=this.a[6],this.a[6]=this.U[this.j]);this.O=2;this.i=a};m.wa=function(){return this.i=this.i&63728|(this.b&32768?8:0)|(this.f&65535?0:4)|(this.c&32768?2:0)|(this.g&65536?1:0)};
function K(a,b){var c,d,f=0;0>a.V?a.V=a.wa():a.j||(b=4,f=1);a.v&57344||(a.C=63222);a.j=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(a.ma(d&53247|a.V>>2&12288),f&&(a.a[6]=4),0<=M(a,a.V)&&0<=M(a,a.a[7])&&(a.a[7]=c));a.m=0;return a.V=-1}
function vb(a,b,c){var d,f,e,g=0;if(c&a.Ta){d=b>>13&a.pa[a.j];f=a.Fa[a.j][d];e=(a.Fa[a.j][d+16]<<6)+(b&8191)&4194303;if(a.ya&16){if(3932160<=e&&4186112>e){e=e&262143;var h=e>>13&31;31>h?a.ya&32&&(e=a.jb[h]+(e&8190)&4194302,3932160<=e&&4186112>e&&console.log("panic(898)")):e|=4186112}}else e&=262143,253952<=e&&(e|=4186112);if(3932160>e&&(3915776<=e||e&1&&!(c&1)))return K(a,4);switch(f&7){case 1:g=4096;case 2:f|=128;c&4&&(g=8192);break;case 4:g=4096;case 5:c&4&&(g=4096);case 6:f|=c&4?192:128;break;
m.na=function(a){this.b=a<<12;this.f=~a&4;this.c=a<<14;this.g=a<<16;if((a^this.i)&2048)for(var b=this.Ia.length;0<=--b;){var c=this.a[b];this.a[b]=this.Ia[b];this.Ia[b]=c}this.j=a>>14&3;b=this.i>>14&3;this.j!=b&&(this.U[b]=this.a[6],this.a[6]=this.U[this.j]);this.O=2;this.i=a};m.wa=function(){return this.i=this.i&63728|(this.b&32768?8:0)|(this.f&65535?0:4)|(this.c&32768?2:0)|(this.g&65536?1:0)};
function K(a,b){var c,d,f=0;0>a.V?a.V=a.wa():a.j||(b=4,f=1);a.v&57344||(a.C=63222);a.j=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(a.na(d&53247|a.V>>2&12288),f&&(a.a[6]=4),0<=M(a,a.V)&&0<=M(a,a.a[7])&&(a.a[7]=c));a.m=0;return a.V=-1}
function vb(a,b,c){var d,f,e,g=0;if(c&a.Ta){d=b>>13&a.qa[a.j];f=a.Fa[a.j][d];e=(a.Fa[a.j][d+16]<<6)+(b&8191)&4194303;if(a.ya&16){if(3932160<=e&&4186112>e){e=e&262143;var h=e>>13&31;31>h?a.ya&32&&(e=a.jb[h]+(e&8190)&4194302,3932160<=e&&4186112>e&&console.log("panic(898)")):e|=4186112}}else e&=262143,253952<=e&&(e|=4186112);if(3932160>e&&(3915776<=e||e&1&&!(c&1)))return K(a,4);switch(f&7){case 1:g=4096;case 2:f|=128;c&4&&(g=8192);break;case 4:g=4096;case 5:c&4&&(g=4096);case 6:f|=c&4?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.Fa[a.j][d]=f;if(4194170!==e||a.j)a.Da=a.j,a.Ua=d;if(g){if(g&57344)return 0<=a.V&&(g|=128),a.v&57344||(a.v=a.v|g|a.Da<<5|a.Ua<<1),K(a,168);a.v&61440||!(4191360>e||4194239<e)||(a.v|=4096,a.v&512&&(a.m|=2))}}else if(e=b&65535,57344<=e)e|=4186112;else if(e&1&&!(c&1))return K(a,4);return e}
function N(a,b){var c;if(4194304<=b)c=a.a[b-4194304];else if(3932160<=b)c=-1;else if(0<=b){c=a.s;var d=b&c.g,f=(b&c.i)>>>c.c;c=d!=c.g?c.b[f].eb(d,b):c.b[f++].ka(d,b)|c.b[f&c.v].ka(0,b+1)<<8}else c=b;return c}function O(a,b,c){c&=65535;if(4194304<=b)return a.a[b-4194304]=c;if(0<=b){a=a.s;var d=c,f=b&a.g,e=(b&a.i)>>>a.c;f!=a.g?a.b[e].kb(f,d&65535,b):(a.b[e++].la(f,d&255,b),a.b[e&a.v].la(0,d>>8&255,b+1));return c}return b}
function P(a,b){var c;4194304<=b?c=a.a[b-4194304]&255:3932160<=b?c=-1:0<=b?(c=a.s,c=c.b[(b&c.i)>>>c.c].ka(b&c.g,b)):c=b;return c}function Q(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:3932160<=b?-1:0<=b?(a=a.s,a.b[(b&a.i)>>>a.c].la(b&a.g,c&255,b),c):b}function L(a,b){return N(a,vb(a,b,2))}function wb(a){var b=L(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}
function N(a,b){var c;if(4194304<=b)c=a.a[b-4194304];else if(3932160<=b)c=-1;else if(0<=b){c=a.s;var d=b&c.g,f=(b&c.i)>>>c.c;c=d!=c.g?c.b[f].eb(d,b):c.b[f++].la(d,b)|c.b[f&c.v].la(0,b+1)<<8}else c=b;return c}function O(a,b,c){c&=65535;if(4194304<=b)return a.a[b-4194304]=c;if(0<=b){a=a.s;var d=c,f=b&a.g,e=(b&a.i)>>>a.c;f!=a.g?a.b[e].kb(f,d&65535,b):(a.b[e++].ma(f,d&255,b),a.b[e&a.v].ma(0,d>>8&255,b+1));return c}return b}
function P(a,b){var c;4194304<=b?c=a.a[b-4194304]&255:3932160<=b?c=-1:0<=b?(c=a.s,c=c.b[(b&c.i)>>>c.c].la(b&c.g,b)):c=b;return c}function Q(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:3932160<=b?-1:0<=b?(a=a.s,a.b[(b&a.i)>>>a.c].ma(b&a.g,c&255,b),c):b}function L(a,b){return N(a,vb(a,b,2))}function wb(a){var b=L(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}
function M(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.v&57344||(a.C=a.C<<8|246);if(!a.j&&d<=a.P&&4<d){if(d<=a.P-32)return a.a[6]=4,K(a,4);a.m|=4}return 0<=(c=vb(a,d|65536,4))?O(a,c,b):c}
function R(a,b,c){var d,f,e=b&7;switch(b>>3&7){case 0:return K(a,4);case 1:if(6===e&&!a.j&&c&4&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32||65534<=a.a[6])return a.a[6]=4,K(a,4);a.m|=4}return 7===e?a.a[e]:a.a[e]|65536;case 2:f=2;d=a.a[e];7!==e&&(d|=65536,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.a[e];7!==e&&(d|=65536);if(0>(d=L(a,d)))return d;d|=65536;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.a[e]+f&65535;7!==e&&(d|=65536);break;case 5:f=-2;d=a.a[e]-2&65535;7!==e&&(d|=65536);if(0>(d=L(a,d)))return d;
d|=65536;break;case 6:if(0>(d=L(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=L(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=L(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.v&57344||(a.C=a.C<<8|f<<3&248|e);if(6===e&&!a.j&&c&4&&0>=f&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32)return a.a[6]=4,K(a,4);a.m|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=R(a,b,c))&&(d=vb(a,d,c)),d):4194304+(b&7)}
@ -78,43 +78,43 @@ break;case 35584:0<=(c=P(this,d=S(this,a,7)))&&(a=-c,0<=Q(this,d,a)&&(this.g=thi
65536)>>8|c)>>1,0<=Q(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 35904:0<=(c=P(this,d=S(this,a,7)))&&(a=c<<1|this.g>>16&1,0<=Q(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 35968:0<=(c=P(this,d=S(this,a,7)))&&(a=c&128|c>>1,0<=Q(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 36032:0<=(c=P(this,d=S(this,a,7)))&&(a=c<<1,0<=Q(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 36160:a&56?0<=(f=R(this,
a,0))&&(this.j=this.i>>12&3,0<=(b=L(this,f|65536))&&(this.j=this.i>>14&3,0<=M(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=M(this,b)&&(this.b=this.f=b,this.c=0));break;case 36224:0<=(c=wb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(this.j=this.i>>12&3,0<=(d=vb(this,f|65536,4))&&(this.j=this.i>>14&3,0<=O(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=
c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;default:switch(a&65528){case 128:0<=(b=wb(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.i&49152||(this.i=this.i&63519|(a&7)<<5,this.O=1);break;case 160:case 168:a&1&&(this.g=0);a&2&&(this.c=0);a&4&&(this.f=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.g=65536);a&2&&(this.c=32768);a&4&&(this.f=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.i?K(this,4):(this.Ja=3,sb(this),console.log("HALT at "+
this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.u.length))for(;0<a--;)e+=this.u[a].Ea,this.u[a].Ea=0;0===e&&0===this.Ja&&(this.Ja=2,sb(this));break;case 3:K(this,12);break;case 4:K(this,16);break;case 5:this.i&49152||ub(this);break;case 2:case 6:d=this.a[6];0<=(f=L(this,d|65536))&&(d=d+2&65535,0<=(b=L(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.i&49152&&(b=b&63519|this.i&63712),this.a[7]=f,this.ma(b),this.m&=-17,2===a&&(this.m|=this.i&16)));break;default:K(this,8)}}}}}}this.m&&(this.m&
2?K(this,168):this.m&4?K(this,4):this.m&16&&K(this,12),this.m=0)}while(0<this.G)}return this.h.complete?this.K-this.G:void 0===this.h.complete?0:-1};t(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new tb(d);B(d,c)}});
function W(a){u.call(this,"ROM",a,W);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=ba(this.g);if(this.g){a=this.g;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,e){xb(c,a,b,e)})}}x(W);W.prototype.ba=function(a,b,c,d){this.s=b;this.a=c;this.w=d;yb(this)};W.prototype.Y=function(){this.i&&(this.w&&this.w.a(this.id,this.j,this.c,this.i),delete this.i);return!0};
this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.u.length))for(;0<a--;)e+=this.u[a].Ea,this.u[a].Ea=0;0===e&&0===this.Ja&&(this.Ja=2,sb(this));break;case 3:K(this,12);break;case 4:K(this,16);break;case 5:this.i&49152||ub(this);break;case 2:case 6:d=this.a[6];0<=(f=L(this,d|65536))&&(d=d+2&65535,0<=(b=L(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.i&49152&&(b=b&63519|this.i&63712),this.a[7]=f,this.na(b),this.m&=-17,2===a&&(this.m|=this.i&16)));break;default:K(this,8)}}}}}}this.m&&(this.m&
2?K(this,168):this.m&4?K(this,4):this.m&16&&K(this,12),this.m=0)}while(0<this.G)}return this.h.complete?this.K-this.G:void 0===this.h.complete?0:-1};u(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new tb(d);B(d,c)}});
function W(a){v.call(this,"ROM",a,W);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=ba(this.g);if(this.g){a=this.g;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=ea()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;q(a,null,!0,function(a,b,e){xb(c,a,b,e)})}}x(W);W.prototype.ba=function(a,b,c,d){this.s=b;this.a=c;this.w=d;yb(this)};W.prototype.Y=function(){this.i&&(this.w&&this.w.a(this.id,this.j,this.c,this.i),delete this.i);return!0};
W.prototype.X=function(){return!0};
function xb(a,b,c,d){if(d)a.A("Unable to load system ROM (error "+d+": "+b+")");else{Da(a.Ra,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.i=h.symbols;if(!a.b.length){q("Empty ROM: "+b);
return}if(1==a.b.length){q(a.b[0]);return}}catch(k){a.A("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]);yb(a)}}
function xb(a,b,c,d){if(d)a.A("Unable to load system ROM (error "+d+": "+b+")");else{Da(a.Ra,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.i=h.symbols;if(!a.b.length){r("Empty ROM: "+b);
return}if(1==a.b.length){r(a.b[0]);return}}catch(k){a.A("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]);yb(a)}}
function yb(a){if(!Ga(a))if(!a.g)D(a);else if(a.b&&a.s){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.c,8,!0)+")";a.h.error=!0;a.A(b)}else{b=a.j;if(Qa(a.s,b,a.c,a.l?1:$a)){var c;for(c=0;c<a.b.length;c++){var d=a.s,f=b+c;d.b[(f&d.i)>>>d.c].$a(f&d.g,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.s,g=e.c,h=[],k=e.j>>>f.c;0<g&&
k<f.b.length;)h.push(f.b[k++]),g-=f.f;f=e.s;e=e.c;g=0;for(d>>>=f.c;0<e&&d<f.b.length;){k=h[g++];if(!k)break;f.b[d++]=k;e-=f.f}}delete a.b}}D(a)}}t(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new W(d);B(d,c)}});function zb(a){u.call(this,"RAM",a,zb);this.f=a.addr;this.c=a.size;this.b=!1}x(zb);m=zb.prototype;m.ba=function(a,b,c,d){this.s=b;this.a=c;this.w=d;D(this)};m.Y=function(a,b){b||this.reset();return!0};m.X=function(a){return a?this.save():!0};
m.reset=function(){!this.b&&this.c&&Qa(this.s,this.f,this.c,1)&&(this.b=!0);this.b||q("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};t(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new zb(d);B(d,c)}});function Ab(a){u.call(this,"Keyboard",a,Ab);D(this)}x(Ab);Ab.prototype.L=function(){return!1};Ab.prototype.ba=function(a,b,c,d){this.l=a;this.a=c;this.w=d;this.Z=null};
t(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Ab(d);B(d,c)}});
function Bb(a,b,c){u.call(this,"Computer",a,Bb);this.h.B=!1;Cb(this,b);this.v=kb(this,"autoPower",a);this.f=0;this.I=a.busWidth||a.buswidth;this.b=X;this.m=null;this.j=this.F=!1;this.J=kb(this,"url")||"";(Math.random()+.1).toString(36);this.c=Db(this);if(this.a=Ea("CPU",this.id)){this.w=Ea("Debugger",this.id);this.s=new Ka({id:this.Ra+".bus",busWidth:this.I},this.a,this.w);var d,f=y(this.id);if((this.g=Ea("Panel",this.id))&&this.g.Ca)for(b=0;b<f.length;b++)d=f[b],d.A=this.g.A,d.H=this.g.H,d.Ca=this.g.Ca;
k<f.b.length;)h.push(f.b[k++]),g-=f.f;f=e.s;e=e.c;g=0;for(d>>>=f.c;0<e&&d<f.b.length;){k=h[g++];if(!k)break;f.b[d++]=k;e-=f.f}}delete a.b}}D(a)}}u(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new W(d);B(d,c)}});function zb(a){v.call(this,"RAM",a,zb);this.f=a.addr;this.c=a.size;this.b=!1}x(zb);m=zb.prototype;m.ba=function(a,b,c,d){this.s=b;this.a=c;this.w=d;D(this)};m.Y=function(a,b){b||this.reset();return!0};m.X=function(a){return a?this.save():!0};
m.reset=function(){!this.b&&this.c&&Qa(this.s,this.f,this.c,1)&&(this.b=!0);this.b||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};u(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new zb(d);B(d,c)}});function Ab(a){v.call(this,"Keyboard",a,Ab);D(this)}x(Ab);Ab.prototype.L=function(){return!1};Ab.prototype.ba=function(a,b,c,d){this.l=a;this.a=c;this.w=d;this.Z=null};
u(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Ab(d);B(d,c)}});
function Bb(a,b,c){v.call(this,"Computer",a,Bb);this.h.B=!1;Cb(this,b);this.v=kb(this,"autoPower",a);this.f=0;this.I=a.busWidth||a.buswidth;this.b=X;this.m=null;this.j=this.F=!1;this.J=kb(this,"url")||"";(Math.random()+.1).toString(36);this.c=Db(this);if(this.a=Ea("CPU",this.id)){this.w=Ea("Debugger",this.id);this.s=new Ka({id:this.Ra+".bus",busWidth:this.I},this.a,this.w);var d,f=y(this.id);if((this.g=Ea("Panel",this.id))&&this.g.Ca)for(b=0;b<f.length;b++)d=f[b],d.A=this.g.A,d.H=this.g.H,d.Ca=this.g.Ca;
this.H("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.H("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.ba&&d.ba(this,this.s,this.a,this.w);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.l=d:this.b=parseInt(d,10));var e;if(a=kb(this,"state")||(e=!0,a.state))b=this.C=a,e||(this.j=!0,this.b=X),this.b&&(this.u=new I(this,
"1.30.0"),Y(this.u)?b=null:delete this.u);!b&&this.b&&(b=Eb(this))&&(this.j=!0);if(b){var g=this;p(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.A("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(g.m=b,g.F=!0);D(g)})}else D(this);this.o.power||(this.v=!0);!c&&this.v&&Fb(this,this.ja)}else q("Unable to find CPU component")}x(Bb);var X=0;
function Cb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.G=b}function kb(a,b,c){var d=b.toLowerCase(),d=xa[b]||xa[d];void 0===d&&a.G&&(d=a.G[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Fb(a,b,c){for(var d=y(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ga(e)){Ga(e,function(){Fb(a,b,c)});return}}b.call(a,c)}
"1.30.0"),Y(this.u)?b=null:delete this.u);!b&&this.b&&(b=Eb(this))&&(this.j=!0);if(b){var g=this;q(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.A("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(g.m=b,g.F=!0);D(g)})}else D(this);this.o.power||(this.v=!0);!c&&this.v&&Fb(this,this.ka)}else r("Unable to find CPU component")}x(Bb);var X=0;
function Cb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.G=b}function kb(a,b,c){var d=b.toLowerCase(),d=xa[b]||xa[d];void 0===d&&a.G&&(d=a.G[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Fb(a,b,c){for(var d=y(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ga(e)){Ga(e,function(){Fb(a,b,c)});return}}b.call(a,c)}
function Gb(a,b){var c=new I(a,"1.30.0","validate");if(Y(c)&&Hb(c)){var d=Z(c,"timestamp"),f=b?Z(b,"timestamp"):"unknown";d!=f&&(a.A("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Bb.prototype;
m.ja=function(a){void 0===a&&(a=this.b||(this.m?1:X));if(!this.f){this.f++;var b=!1,c=!1;this.D=!1;var d=this.u||new I(this,"1.30.0");if(-1==a)b=!0;else if(a>X){if(Y(d,this.m)){this.i=new I(this,"1.30.0","failsafe");Y(this.i)&&(Ib(this,d),a=2,Jb(this.i));J(this.i,"timestamp",ia());Kb(this.i);var f=this.b&&!this.j;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Hb(d)){var e=Z(d,"code"),g=Z(d,"data");e&&("ok"==e?Y(d,g):("error"==e&&"no machine state"!=
m.ka=function(a){void 0===a&&(a=this.b||(this.m?1:X));if(!this.f){this.f++;var b=!1,c=!1;this.D=!1;var d=this.u||new I(this,"1.30.0");if(-1==a)b=!0;else if(a>X){if(Y(d,this.m)){this.i=new I(this,"1.30.0","failsafe");Y(this.i)&&(Ib(this,d),a=2,Jb(this.i));J(this.i,"timestamp",ia());Kb(this.i);var f=this.b&&!this.j;if(1==a||ja("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Hb(d)){var e=Z(d,"code"),g=Z(d,"data");e&&("ok"==e?Y(d,g):("error"==e&&"no machine state"!=
g?(this.A("Error: "+g),"unable to verify user"==g&&(na("user",""),this.c=null)):this.H(e+": "+g),Jb(d),Y(d)?(c=Hb(d),f=!0):c=!1))}f&&Gb(this,c?d:null)}else 2==a&&d.clear()}else Gb(this);delete this.m;delete this.u}f=y(this.id);for(e=0;e<f.length;e++)g=f[e],g!==this&&g!=this.a&&(c=Lb(this,g,d,b,c));b=[d,a,c];-1!=a?Fb(this,this.Na,b):this.Na(b)}};
function Lb(a,b,c,d,f){if(!b.h.B){b.h.B=!0;if(b.Y){var e=null;f&&((e=Z(c,b.id))||(e=Z(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Y(e,d)&&e&&(q("Unable to restore state for "+b.type),a.C&&!a.F?(c.clear(),a.b=X,window&&window.location.reload()):a.D=!0,b.Y(null),f=!1)}if(!d&&b.Qa)for(a=b.Qa.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
m.Na=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.h.B=!0;var d=this.o.power;d&&(d.textContent="Shutdown");this.a&&(Lb(this,this.a,b,c,a),this.a.ha());this.D&&(Ib(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
function Ib(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.c||"",d=b.toString(),f={app:"PDP11js",ver:"1.30.0"};f.url=a.J;f.user=c;f.type="bug";f.data=d;p("http://www.pcjs.org/api/v1/report",f,!0)}}
function Lb(a,b,c,d,f){if(!b.h.B){b.h.B=!0;if(b.Y){var e=null;f&&((e=Z(c,b.id))||(e=Z(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Y(e,d)&&e&&(r("Unable to restore state for "+b.type),a.C&&!a.F?(c.clear(),a.b=X,window&&window.location.reload()):a.D=!0,b.Y(null),f=!1)}if(!d&&b.Qa)for(a=b.Qa.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
m.Na=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.h.B=!0;var d=this.o.power;d&&(d.textContent="Shutdown");this.a&&(Lb(this,this.a,b,c,a),this.a.ia());this.D&&(Ib(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
function Ib(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.c||"",d=b.toString(),f={app:"PDP11js",ver:"1.30.0"};f.url=a.J;f.user=c;f.type="bug";f.data=d;q("http://www.pcjs.org/api/v1/report",f,!0)}}
function Mb(a,b,c){var d,f="none";if(a.f)return null;a.f--;var e=new I(a,"1.30.0"),g=new I(a,"1.30.0","validate"),h=ia();J(g,"timestamp",h);J(e,"timestamp",h);J(e,"version","1.30.0");J(e,"url",window?window.location.href:null);J(e,"browser",window?window.navigator.userAgent:"");a.a&&a.a.X&&(c&&H(a.a),d=a.a.X(b,c),"object"===typeof d&&J(e,a.a.id,d),c&&(a.a.h.B=!1,!1===d&&(f=null)));for(var h=y(a.id),k=0;k<h.length;k++){var l=h[k];l.h.B&&(l.X&&(d=l.X(b,c),"object"===typeof d&&J(e,l.id,d)),c&&(l.h.B=
!1,!1===d&&(f=null)))}f&&(c?(h=d=!1,b?(a.c&&Nb(a,a.c,e.toString()),Kb(g)&&Kb(e)||(f=null,d=h=!0)):a.b&&(d=!0,h=3==a.b),d&&e.clear(h)):f=e.toString());c&&(a.h.B=!1,b=a.o.power)&&(b.textContent="Power");a.f=0;return f}m.reset=function(){this.s&&this.s.reset&&this.s.reset();for(var a=y(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.s&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
m.stop=function(a,b){for(var c=y(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
m.L=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.f||(d.h.B?Mb(d,!1,!0):Fb(d,d.ja))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.h.B&&!d.f)if(d.b&&!d.l){var a=ja("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Mb(d,a,!0);!a&&d.C?window&&window.location.reload():d.ja(X)}else d.reset(),d.a&&d.a.ha()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.o[b]=c;
m.L=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.f||(d.h.B?Mb(d,!1,!0):Fb(d,d.ka))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.h.B&&!d.f)if(d.b&&!d.l){var a=ja("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Mb(d,a,!0);!a&&d.C?window&&window.location.reload():d.ka(X)}else d.reset(),d.a&&d.a.ia()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.o[b]=c;
c.onclick=function(){var a=Db(d,!0);if(a){var b=!!(d.b&&!d.l||d.C),c=Mb(d,b);b?Nb(d,a,c):d.A("Resume disabled, machine state not saved")}};return!0}return!1};
function Db(a,b){var c=a.c;c||(c=ma("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=Ob(a,c))||a.A("The user ID is invalid."))):b&&a.A("Browser local storage is not available"));return c}
function Ob(a,b){a.c=null;var c=p(ea()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(na("user",c.data),a.c=c.data)}catch(f){q(f.message+" ("+d+")")}return a.c}function Eb(a){var b=null;a.c&&(b=ea()+"/api/v1/user?req=load&user="+a.c+"&state="+Pb(a,"1.30.0"));return b}
function Nb(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Pb(a,"1.30.0");d.data=c;b=p(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.A("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.A(c),na("user",""),a.c=null)}}
m.ca=function(a){this.a&&this.a.ca(a);this.g&&this.g.ca(a)};t(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=C(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],g=z(e),g=new Bb(g,d,!0);B(g,e);g.v&&Fb(g,g.ja)}});r.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Ea("Computer",c.id))&&c.K&&!c.h.B&&c.ja(-1)}});
r.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Ea("Computer",c.id))&&c.h.B&&Mb(c,!(!c.b||c.l),!0)}});function I(a,b,c){this.id=a.id;this.key=Pb(a,b,c);this.w=a.w;Jb(this,a.hb)}function Pb(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}
function Ob(a,b){a.c=null;var c=q(ea()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(na("user",c.data),a.c=c.data)}catch(f){r(f.message+" ("+d+")")}return a.c}function Eb(a){var b=null;a.c&&(b=ea()+"/api/v1/user?req=load&user="+a.c+"&state="+Pb(a,"1.30.0"));return b}
function Nb(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Pb(a,"1.30.0");d.data=c;b=q(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.A("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.A(c),na("user",""),a.c=null)}}
m.ca=function(a){this.a&&this.a.ca(a);this.g&&this.g.ca(a)};u(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=C(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],g=z(e),g=new Bb(g,d,!0);B(g,e);g.v&&Fb(g,g.ka)}});t.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Ea("Computer",c.id))&&c.K&&!c.h.B&&c.ka(-1)}});
t.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=Ea("Computer",c.id))&&c.h.B&&Mb(c,!(!c.b||c.l),!0)}});function I(a,b,c){this.id=a.id;this.key=Pb(a,b,c);this.w=a.w;Jb(this,a.hb)}function Pb(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}
I.prototype={constructor:I,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){Jb(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 Jb(a,b){a[a.id]={};b&&J(a,"parms",b);a.a=!1}function Kb(a){var b=!0;if(la()){var c=JSON.stringify(a[a.id]);na(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Hb(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function Y(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}function Z(a,b){return a[a.id][b]||null}function J(a,b,c){try{a[a.id][b]=c}catch(d){}}var Qb=0;
function Rb(a,b,c,d,f,e){f("Loading "+a+"...");p(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),e(h,null)):Sb(h,a,b,c,d,f,e)})}
function Jb(a,b){a[a.id]={};b&&J(a,"parms",b);a.a=!1}function Kb(a){var b=!0;if(la()){var c=JSON.stringify(a[a.id]);na(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Hb(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function Y(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}function Z(a,b){return a[a.id][b]||null}function J(a,b,c){try{a[a.id][b]=c}catch(d){}}var Qb=0;
function Rb(a,b,c,d,f,e){f("Loading "+a+"...");q(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),e(h,null)):Sb(h,a,b,c,d,f,e)})}
function Sb(a,b,c,d,f,e,g){function h(a,e){if(e)g(e,null);else{if(c){Da(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));h=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(A){h=null,a=A.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,h)}}a?f?Tb(a,e,h):h(a,null):g("no data"+(b?" for file: "+b:""),null)}
function Tb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");p(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],l,v=/( [a-z]+=)(['"])(.*?)\2/g;l=v.exec(e);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[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]*/,
function Tb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");q(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],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(e);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[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);Tb(a,b,c)}})}else c(a,null)}
function Ub(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&&(--Qb||ua(!0));k=!1}var g,h,k=!0;Qb++;Ca[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],A=document.createElement("style");A.type="text/css";A.styleSheet?A.styleSheet.cssText=l:A.appendChild(document.createTextNode(l));v.appendChild(A)}c||
function Ub(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&&(--Qb||ua(!0));k=!1}var g,h,k=!0;Qb++;Ca[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],A=document.createElement("style");A.type="text/css";A.styleSheet?A.styleSheet.cssText=l:A.appendChild(document.createTextNode(l));p.appendChild(A)}c||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,h){h?Rb(c,null,null,!1,f,function(d,k){if(k)if(Da(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(k);l?(g.outerHTML=l,--Qb||ua(!0)):e("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Qb||ua(!0)):e("invalid machine element: "+
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(d)}):e(d)};"<"!=b.charAt(0)?Rb(b,a,d,!0,f,l):Sb(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(Vb){e(Vb.message)}return k}window.embedPDP11=function(a,b,c,d){ua(!1);return Ub(a,b,c,d)};window.enableEvents=ua;window.sendEvent=va;})();