201 lines
84 KiB
JavaScript
201 lines
84 KiB
JavaScript
(function(){var l;
|
|
function ca(a,b){var d;if(a){b||(b=10);var c=a.charAt(0),f=0<a.indexOf(",");f&&(a=a.replace(/,/g,""));"#"==c?(b=8,c=null):"$"==c&&(b=16,c=null);null==c?a=a.substr(1):("0"==c&&(c=a.charAt(1),"b"==c&&f&&(b=2,c=null),"o"==c?(b=8,c=null):"x"==c&&(b=16,c=null)),null==c?a=a.substr(2):(c=a.charAt(a.length-1).toLowerCase(),"y"==c?(b=2,c=null):"."==c?(b=10,c=null):"h"==c&&(b=16,c=null),null==c&&(a=a.substr(0,a.length-1))));var e,c=a;((f=b)&&10!=f?16==f?c.match(/^[0-9a-f]+$/i):8==f?c.match(/^[0-7]+$/):2==f&&
|
|
c.match(/^[01]+$/):c.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(d=e|0)}return d}function da(a,b,d){var c="";b?11<b&&(b=11):b=a&-65536?11:6;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;)c=String.fromCharCode((a&7)+48)+c,a>>=3;return(d?"0o":"")+c}function r(a,b,d){var c="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var f=a&15,f=f+(0<=f&&9>=f?48:55),c=String.fromCharCode(f)+c;a>>=4}return(d?"0x":"")+c}
|
|
function ea(a){var b=a,d=a.lastIndexOf("/");0<=d&&(b=a.substr(d+1));d=b.indexOf("&");0<d&&(b=b.substr(0,d));return b}function fa(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function ga(){var a=ha();return-1!==a.indexOf("pcjs.org",a.length-8)}var ia={"&":"&","<":"<",">":">",'"':""","'":"'"};function ja(a){return a.replace(/[&<>"']/g,function(a){return ia[a]})}function ka(a,b){return(a+" ").slice(0,b)}
|
|
function la(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function na(a,b,d){var c=0,f=a.length,e=0;for(d||(d=function(a,b){return a>b?1:a<b?-1:0});c<f;){var g=c+f>>1,h;h=d(b,a[g]);0<h?c=g+1:(f=g,e=!h)}return e?c:~c}var oa=Date.now||function(){return+new Date};function pa(){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 ta(a,b,d,c){var f=0,e=null,g=null;if("object"==typeof resources&&(e=resources[a]))return c&&c(a,e,f),[e,f];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(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),c&&c(a,e,f))});if(b&&"object"==
|
|
typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,!!d);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,!!d),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();d||(e=h.responseText,200!=h.status&&(f=h.status||-1),c&&c(a,e,f),g=[e,f]);return g}function ha(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
|
function t(a){window&&window.alert(a)}function ua(a){var b=!1;window&&(b=window.confirm(a));return b}var va=null;function wa(){if(null==va){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}va=a}return va}function xa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
|
|
function ya(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function za(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Aa(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
|
|
function Ba(a,b){function d(){b(100===c)&&(f=setTimeout(d,c),c=100)}var c=0,f=null,e=!1;a.onmousedown=function(){e||f||(c=500,d())};a.ontouchstart=function(){f||(c=500,d())};a.onmouseup=a.onmouseout=function(){f&&(clearTimeout(f),f=null)};a.ontouchend=a.ontouchcancel=function(){f&&(clearTimeout(f),f=null);e=!0}}var Ha={init:[],show:[],exit:[]},Ia=!1,Ja=!1,Ka=!0;function La(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Ma(a){Ha.init.push(a)}
|
|
function Na(a){if(Ka)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 Oa(a){!Ka&&a?(Ka=!0,Ia&&Pa("init"),Ja&&Pa("show")):Ka=a}function Pa(a){Ha[a]&&Na(Ha[a])}La("onload",function(){Ia=!0;Na(Ha.init)});La("onpageshow",function(){Ja=!0;Na(Ha.show)});La(za("Opera")||za("iOS")?"onunload":"onbeforeunload",function(){Na(Ha.exit)});
|
|
function u(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.rc=b.comment;this.Pc=b;b=this.id.indexOf(".");0>b?this.Eb=this.id:(this.tc=this.id.substr(0,b),this.Eb=this.id.substr(b+1));this[a]=d;this.j={ready:!1,pb:!1,ic:!1,ca:!1,error:!1};this.$b=null;this.j.error=!1;this.J={};this.D=null;this.da=c||0;v.push(this)}var Qa=void 0,Ra={};
|
|
if(window){Qa||(Qa=window.location.search.substr(1));for(var Sa,Ta=/\+/g,Ua=/([^&=]+)=?([^&]*)/g;Sa=Ua.exec(Qa);)Ra[decodeURIComponent(Sa[1].replace(Ta," "))]=decodeURIComponent(Sa[2].replace(Ta," "))}function Va(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 w(a,b){b||(b=u);a.prototype=Va(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Wa=window.PCjs.Machines||(window.PCjs.Machines={}),v=window.PCjs.Components||(window.PCjs.Components=[])}else Wa={},v=[];function Xa(a,b,d){Wa[a]&&b&&(Wa[a][b]=d)}function Ya(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<v.length;b++){var c=v[b];a&&c.id.indexOf(a)||d.push(c)}return d}
|
|
function Za(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<v.length;c++)if(d)d==v[c]&&(d=null);else if(!(a!=v[c].type||b&&v[c].id.indexOf(b)))return v[c]}return null}function y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){t(d.message+" ("+a+")")}return b}
|
|
function $a(a,b){b=C(b.parentNode,"pdp11-control");for(var d=0;d<b.length;d++)for(var c=b[d].childNodes,f=0;f<c.length;f++){var e=c[f];if(1===e.nodeType){var g=e.getAttribute("class");if(g)for(var h=g.split(" "),k=0;k<h.length;k++)switch(g=h[k],g){case "pdp11-binding":(g=y(e))&&g.binding&&a.ra(g.type,g.binding,e,g.value),k=h.length}}}}
|
|
function C(a,b,d){d&&(b+="-"+d+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var c;d=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(c=a.length;b<c;b++)f.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},ra:function(a,b,d){switch(b){case "clear":return this.J[b]||(this.J[b]=d,d.onclick=function(a){return function(){a.J.print&&(a.J.print.value="")}}(this)),!0;case "print":return this.J[b]||(this.hb=this.J[b]=d,d.value="",this.g=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(d),
|
|
this.ma=function(a){this.g(a,this.Eb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Eb+": "+a)},ma:function(a,b,d){d=d||this.type;b||t((d?d+": ":"")+a)},Ma:function(){return this.j.ca=!0},La:function(a,b){b&&(this.j.ca=!1);return!0}};function mb(a,b){if(a.D){a===a.D?b|=0:b=b||a.da;var d=a.D.da&b;return!!b&&d===b||!!(d&a.D.Jc)}return!1}
|
|
function nb(a,b){if(a.j.ic)return a.j.pb&&(a.j.pb=!1),a.j.ic=!1;if(a.j.error)return a.g(a.toString()+" error"),!1;a.j.pb=b;return a.j.pb}function ob(a,b){a.j.pb&&(b?a.j.ic=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.pb}function D(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.$b;a.$b=null;b&&b()}}function pb(a,b){b&&(a.j.ready?b():a.$b=b);return a.j.ready}function qb(a,b){a.j.error=!0;a.ma(b)}
|
|
var rb="undefined"!==typeof ArrayBuffer,sb=2,E=4,tb=6,sb=0|sb,ub=1|sb,E=0|E,vb=1|E,tb=0|tb,wb=1|tb,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 xb(a){u.call(this,"Panel",a,xb)}w(xb);l=xb.prototype;l.ra=function(a,b,d,c){return this.u&&this.u.ra(a,b,d,c)||this.b&&this.b.ra(a,b,d,c)||this.D&&this.D.ra(a,b,d,c)?!0:this.parent.ra.call(this,a,b,d,c)};
|
|
l.Za=function(a,b,d,c){this.u=a;this.C=b;this.b=d;this.D=c};l.Ma=function(a,b){b||yb();return!0};l.La=function(){return!0};l.ta=function(){};function yb(){for(var a=!1,b=C(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],f=y(c),e;a:{e=f.id;if(void 0!==e){var g;for(g=0;g<v.length;g++)if(v[g].id===e){e=v[g];break a}}e=null}e||(a=!0,e=new xb(f));$a(e,c);a&&D(e)}}Ma(yb);
|
|
function zb(a,b,d){u.call(this,"Bus",a,zb);this.b=b;this.D=d;this.H=a.busWidth||16;this.B=Math.pow(2,this.H);this.C=this.B-1|0;this.S=(this.H>>1)+2;10>this.S&&(this.S=10);15<this.S&&(this.S=15);this.Aa=1<<this.S;this.K=this.Aa>>2;this.f=this.Aa-1;this.w=this.B/this.Aa|0;this.u=this.w-1;this.Ua=[];this.F=null;this.Kb=this.Fc;a=new G;Ab(a,this.D);this.L=Array(this.w);for(b=0;b<this.w;b++)this.L[b]=a;this.Fb=Array(4);this.Fb[0]=Bb;this.Fb[1]=Cb;this.Fb[2]=Db;this.Fb[3]=Eb;Fb(this,this.B-8192,8192,Gb,
|
|
this);Fb(this,57344,8192,Gb,this);D(this)}w(zb);function Bb(a,b){var d=this.controller,c=d.Ua[a];if(c){if(c[0])return c[0](b);if(c[2])return b&1?c[2](b&-2)>>8:c[2](b)&255}else if(b&1&&(c=d.Ua[a&-2],c[2]))return c[2](b&-2)>>8;d.g("warning: unconverted read access to byte @"+da(b));return d.Kb(b,-1,1)}
|
|
function Cb(a,b,d){var c=this.controller,f=c.Ua[a];if(f){if(f[1]){f[1](b,d);return}if(f[3]){a=f[2]?f[2](d):0;if(d&1)f[3](a&255|b<<8,d&-2);else f[3](a&-256|b,d);return}}else if(d&1&&(f=c.Ua[a&-2],f[3])){d&=-2;a=f[2]?f[2](d):0;f[3](a&255|b<<8,d);return}c.g("warning: unconverted write access to byte @"+da(d));c.Kb(d,b,1)}
|
|
function Db(a,b){var d=this.controller;if(a=d.Ua[a]){if(a[2])return a[2](b);if(a[0])return a[0](b)|a[0](b+1)<<8}d.g("warning: unconverted read access to word @"+da(b));return d.Kb(b,-1,0)}function Eb(a,b,d){var c=this.controller;if(a=c.Ua[a]){if(a[3]){a[3](b,d);return}if(a[1]){a[1](b&255,d);a[1](b>>8,d+1);return}}c.g("warning: unconverted write access to word @"+da(d));c.Kb(d,b,0)}l=zb.prototype;l.reset=function(){this.F&&this.F()};l.Fc=function(){return 0};l.Ma=function(a,b){b||this.reset();return!0};
|
|
function Fb(a,b,d,c,f){for(var e=b,g=d,h=e>>>a.S;0<g&&h<a.L.length;){var k=a.L[h],m=h*a.Aa,n=a.Aa-(e-m);n>g&&(n=g);if(k&&k.size){if(k.type==c&&k.controller==f){if(e+g<=k.A)return k.Yb+=k.A-e,k.A=e,!0;if(e>=k.A+k.Yb){n=k.size-(e-m);n>g&&(n=g);k.Yb=e-k.A+n;e=m+a.Aa;g-=n;h++;continue}}return Hb(1,e,g)}e=new G(e,n,a.Aa,c,f);Ab(e,a.D,k);a.L[h++]=e;e=m+a.Aa;g-=n}return 0>=g?(a.status(Math.floor(d/1024)+"Kb "+Ib[c]+" at "+r(b,8,!0)),!0):Hb(2,b,d)}
|
|
l.Lb=function(a){return this.L[(a&this.C)>>>this.S].vb(a&this.f,a)};l.Ea=function(a){var b=a&this.f,d=(a&this.C)>>>this.S;return b!=this.f?this.L[d].Sb(b,a):this.L[d++].vb(b,a)|this.L[d&this.u].vb(0,a+1)<<8};function Jb(a,b){var d=b&a.f,c=(b&a.C)>>>a.S;return d!=a.f?a.L[c].mc(d,b):a.L[c++].Rb(d,b)|a.L[c&a.u].Rb(0,b+1)<<8}l.gc=function(a,b){this.L[(a&this.C)>>>this.S].Ab(a&this.f,b&255,a)};
|
|
l.oc=function(a,b){var d=a&this.f,c=(a&this.C)>>>this.S;d!=this.f?this.L[c].Ec(d,b&65535,a):(this.L[c++].Ab(d,b&255,a),this.L[c&this.u].Ab(0,b>>8&255,a+1))};function Tb(a){for(var b=0,d=[],c=0;c<a.w;c++){var f=a.L[c];if(f.Ya||f.Nc){d[b++]=c;var e=b++;if(f=f.save()){for(var g=0,h=0,k=[];g<f.length;){for(var m=f[g],n=g+1;n<f.length&&f[n]===m;)n++;k[h++]=n-g;k[h++]=m;g=n}k.length<f.length&&(f=k)}d[e]=f}}return d}function Hb(a,b,d){t("Memory block error ("+a+": "+r(b)+","+r(d)+")");return!1}
|
|
function Ub(a){u.call(this,"Device",a,Ub);this.f={lc:[],Fa:0,sa:128,D:127,Lc:0};this.u={data:0,od:0,rb:20,kd:0};this.w={Mb:0,G:0};this.B={Ub:2496,ja:0,M:128,Vb:0,Tb:0,qa:0,zc:0,la:[],fb:[406,406,406,406],U:[12,12,12,12]};this.F={G:129,Ib:0,Z:0,$a:0,Va:0,cb:0,la:[],U:[40,40,40,40],fb:[1024,1024,512,512],Hc:[157,157,29,29]};this.H={b:[8210,8208,8210,8226],U:[22,22,22,50],eb:[19,19,19,32],hc:[815,411,815,630],la:[],N:2176,yb:0,wb:0,Ca:[0,0,0,0,0,0,0,0],Ba:0,na:[4544,4544,4544,4544,4544,4544,4544,4544],
|
|
xb:[0,0,0,0,0,0,0,0],mb:0,hd:[0,0,0,0,0,0,0,0],Ac:0,Bc:[0,0,0,0,0,0,0,0],f:[0,0,0,0,0,0,0,0],jd:[1,2,3,4,5,6,7,8],Cc:[0,0,0,0,0,0,0,0],Qa:[0,0,0,0,0,0,0,0],fc:[0,0,0,0,0,0,0,0],fd:[0,0,0,0,0,0,0,0],gd:[0,0,0,0,0,0,0,0],dd:[0,0,0,0,0,0,0,0],ed:[0,0,0,0,0,0,0,0],bb:0,nc:0}}w(Ub);
|
|
var Vb=[4127,448,4191,450,4383,452,2591,454,21983,32768,65534,13791,16384,65534,770,2719,454,2591,65534,257,0,2566,33028,34051,33282,1281,33537,0,2758,32771,770,1025,1793,0,3078,33794,34305,513,0,5574,43690,4480,4097,4162,4227,4292,4357,57665,1281,769,0,3138,34305,1281,0,24707,2691,2627,24769,34561,1793,0,3076,20739,24899,2691,34562,2753,1281,0,2624,33537,0,16385,24641,1537,1793,0,193,8279,21589,516,12549,1538,2629,513,0,38336,65281,32769,0,32258,2561,2689,32258,3008,514,3009,769,0,5574,510,2551,
|
|
2,0,9678,208,769,0,5582,226,135,0,2598,5606,236,2,0,95,242,128,5573,57344,2591,6,5599,256,4,5574,510,3045,5599,460,76,2591,78,5571,65510,5579,12,5570,512,4224,4104,3024,8197,33788,4224,4609,8193,769,0,2640,8197,33785,6145,2625,8193,769,0,8194,761,2574,5572,43690,5579,24,5568,2048,5570,512,2628,4360,2632,2632,8708,769,0,3103,65514,34562,0,305,35406,754,258,119,65160,3024,32403,5579,36,5568,3072,35446,1,740,5570,512,4224,4104,3024,8197,33788,5569,3,2574,3039,454,528,5582,24,4224,2632,2632,8200,769,
|
|
0,3024,3103,65514,34562,0,264,8197,33779,5003,2574,32337,260,0,258,5579,12,6080,448,6081,450,6084,452,116,2,6084,65400,17860,65024,21956,62976,38848,65401,3200,161,76,0,16944,10797];l=Ub.prototype;
|
|
l.Za=function(a,b,d,c){this.C=b;this.b=d;this.D=c;a=Wb;for(var f in a){var e=a[f];d=b;c=+f;for(var g=e[0]?e[0].bind(this):null,h=e[1]?e[1].bind(this):null,k=e[2]?e[2].bind(this):null,e=e[3]?e[3].bind(this):null,m=+f;m<=c;m+=2){var n=m&8191;void 0!==d.Ua[n]?t("I/O address already registered: "+r(m,8,!0)):d.Ua[n]=[g,h,k,e,!1]}}f=this.Gc.bind(this);b.F=this.reset.bind(this);b.Kb=f;D(this)};l.Zc=function(){return Xb(this.b)};l.md=function(a){Yb(this.b,a&-1809|Xb(this.b)&1808);this.b.T|=128};l.$c=function(){return this.f.sa};
|
|
l.nd=function(a){if(128==(this.f.sa&192)&&a&64){var b=this;H(this.b,8,4,52,function(){b.f.sa|=128;return!!(b.f.sa&64)})}this.f.sa=this.f.sa&128|a&-129};
|
|
function Zb(a){var b=a.B,d,c,f,e=b.qa>>13&7;"undefined"===typeof b.la[e]&&(b.la[e]={cache:[],postProcess:a.ad,drive:e,blocksize:256,mapped:0,maxblock:b.fb[e]*b.U[e],url:"rk"+e+".dsk"});b.M&=-129;switch(b.M>>1&7){case 0:b.Ub=2496;b.ja=0;b.M=128;b.qa=0;break;case 1:if((b.qa>>4&511)>=b.fb[e]){b.ja|=32832;b.M|=49152;break}if((b.qa&15)>=b.U[e]){b.ja|=32800;b.M|=49152;break}d=(b.qa>>4&511)*b.U[e]+(b.qa&15);c=(b.M&48)<<12|b.Tb;f=65536-b.Vb&65535;$b(a,b.la[e],d,c,f);return;case 2:if((b.qa>>4&511)>=b.fb[e])b.ja|=
|
|
32832,b.M|=49152;else if((b.qa&15)>=b.U[e])b.ja|=32800,b.M|=49152;else{d=(b.qa>>4&511)*b.U[e]+(b.qa&15);c=(b.M&48)<<12|b.Tb;f=65536-b.Vb&65535;a.cc(b.la[e],d,c,f);return}}b.Ub=e<<13|b.Ub&8176|b.qa%9&15;H(a.b,20,5,144,function(){b.M=b.M&65534|128;return!!(b.M&64)})}l.ad=function(a,b,d,c,f){var e=this.B;e.Tb=c&65535;e.M=e.M&-49|c>>12&48;e.Vb=65536-f&65535;switch(a){case 1:e.ja|=33024;e.M|=49152;break;case 2:e.ja|=33792,e.M|=49152}H(this.b,20,5,144,function(){e.M=e.M&65534|128;return!!(e.M&64)})};
|
|
function ac(a){var b=a.F,d,c,f,e=b.G>>8&3;b.G&=-2;"undefined"===typeof b.la[e]&&(b.la[e]={cache:[],postProcess:a.bd,drive:e,blocksize:128,mapped:1,maxblock:b.fb[e]*b.U[e],url:"rl"+e+".dsk"});switch(b.G>>1&7){case 2:b.$a&8&&(b.G&=63);b.$a=b.Hc[e]|b.cb&64;break;case 3:1==(b.Z&3)&&(b.cb=b.Z&4?b.cb+(b.Z&65408)&65408|b.Z<<2&64:b.cb-(b.Z&65408)&65408|b.Z<<2&64,b.Z=b.cb);break;case 4:b.$a=b.cb;break;case 5:if(b.Z>>6>=b.fb[e]){b.G|=37888;break}if((b.Z&63)>=b.U[e]){b.G|=37888;break}d=(b.Z>>6)*b.U[e]+(b.Z&
|
|
63);c=(b.Va&63)<<16|b.Ib;f=65536-b.$a&65535;$b(a,b.la[e],d,c,f);return;case 6:if(b.Z>>6>=b.fb[e])b.G|=37888;else if((b.Z&63)>=b.U[e])b.G|=37888;else{d=(b.Z>>6)*b.U[e]+(b.Z&63);c=(b.Va&63)<<16|b.Ib;f=65536-b.$a&65535;a.cc(b.la[e],d,c,f);return}}H(a.b,20,5,112,function(){b.G|=129;return!!(b.G&64)})}
|
|
l.bd=function(a,b,d,c,f){var e=this.F;e.Ib=c&65535;e.G=e.G&-49|c>>12&48;e.Va=c>>16&63;e.Z=~~(d/e.U[b.Ka])<<6|d%e.U[b.Ka];e.cb=e.Z;e.$a=65536-f&65535;switch(a){case 1:e.G|=33792;break;case 2:e.G|=40960}H(this.b,20,5,112,function(){e.G|=129;return!!(e.G&64)})};function bc(a){a=a.H;a.N=2176;a.Ba=0;a.na=[4544,4544,4544,4544,4544,4544,4544,4544];a.xb=[0,0,0,0,0,0,0,0];a.mb=a.yb=a.wb=a.bb=a.nc=0}
|
|
function cc(a,b){var d=a.H,c,f,e;d.N&=-16513;d.Ba&=-2049;d.na[b]&=-1153;H(a.b,-1,0,172);"undefined"===typeof d.la[b]&&(d.la[b]={cache:[],postProcess:a.cd,drive:b,blocksize:256,mapped:0,maxblock:d.hc[0]*d.eb[0]*d.U[0],url:"rp"+b+".dsk"});switch(d.N&63){case 5:d.fc[b]=d.Qa[b];d.N|=32896;d.na[b]|=32896;d.mb|=1<<b;break;case 9:bc(a);break;case 19:d.na[b]|=64;break;case 49:if(d.Qa[b]>=d.hc[0]||d.Ca[b]>>8>=d.eb[0]||(d.Ca[b]&255)>=d.U[0]){d.xb[b]|=1024;d.N|=49152;break}c=(d.Qa[b]*d.eb[0]+(d.Ca[b]>>8))*d.U[0]+
|
|
(d.Ca[b]&255);f=(d.bb&63)<<16|d.wb;e=65536-d.yb&65535;$b(a,d.la[b],c,f,e);return;case 57:if(d.Qa[b]>=d.hc[0]||d.Ca[b]>>8>=d.eb[0]||(d.Ca[b]&255)>=d.U[0])d.xb[b]|=1024,d.N|=49152;else{c=(d.Qa[b]*d.eb[0]+(d.Ca[b]>>8))*d.U[0]+(d.Ca[b]&255);f=(d.bb&63)<<16|d.wb;e=65536-d.yb&65535;a.cc(d.la[b],c,f,e);return}}H(a.b,3,5,172,function(){d.N=d.N&65534|128;d.na[b]|=128;return!!(d.N&64)})}
|
|
l.cd=function(a,b,d,c,f){var e=this.H;e.yb=65536-f&65535;e.wb=c&65535;e.N=e.N&-769|c>>8&768;e.bb=c>>16&63;f=~~(d/e.U[0]);c=~~(f/e.eb[0]);e.Ca[b.Ka]=f%e.eb[0]<<8|d%e.U[0];e.fc[b.Ka]=e.Qa[b.Ka]=c;e.mb|=1<<b.Ka;d>=b.Wc-1&&(e.na[b.Ka]|=1024);switch(a){case 1:e.Ba|=512;e.N|=49152;break;case 2:e.Ba|=2048,e.N|=49152}H(this.b,20,5,172,function(){e.na[b.Ka]|=128;e.N=e.N&65534|128;return!!(e.N&64)})};l.Tc=function(){this.w.G|=128;this.w.G&64&&H(this.b,0,6,64)};
|
|
function dc(a,b,d,c,f,e){var g=~~((e+d.Wa-1)/d.Wa),h=new XMLHttpRequest;2048>g&&c+2048<d.Wc&&(g=2048);h.open("GET",d.url,!0);h.setRequestHeader("Range","bytes="+(c*d.Wa<<1)+"-"+(((c+g)*d.Wa<<1)-1));h.responseType="arraybuffer";h.onreadystatechange=function(){if(4==h.readyState){var g=b.bind(a),m,n,q,p;m=h.response;if(h.status&&206!=h.status||!m)d.bc(1,d,c,f,e);else{m=new Uint8Array(m);n=c;for(p=0;p<m.length;){if("undefined"===typeof d.cache[n])for(d.cache[n]=[],q=0;q<d.Wa;q++)d.cache[n][q]=p<m.length?
|
|
m[p]&255|m[p+1]<<8&65280:0,p+=2;else p+=d.Wa<<1;n++}g(d,c,f,e)}}};h.send(null)}function I(a,b,d,c,f){if(d&1){if(!f)return J(a.b,4,122);c=0<=c?c<<8&65280|b&255:b}else 0<=c?f&&(c=b&65280|c&255):c=b;return c}l.cc=function(a,b,d,c){for(var f;0<c;){if("undefined"===typeof a.cache[b]){dc(this,this.cc,a,b,d,c);return}for(f=0;f<a.Wa&&0<c;f++){if(0>ec(this.b,a.Vc?fc(this.b,d):d,a.cache[b][f])){a.bc(2,a,b,d,c);return}d+=2;--c}b++}a.bc(0,a,b,d,c)};
|
|
function $b(a,b,d,c,f){for(var e,g;0<f;){if("undefined"===typeof b.cache[d])for(b.cache[d]=[],e=0;e<b.Wa;e++)b.cache[d][e]=0;for(e=0;e<b.Wa&&0<f;e++){g=a.b.dc(b.Vc?fc(a.b,c):c);if(0>g){b.bc(2,b,d,c,f);return}b.cache[d][e]=g;c+=2;--f}d++}b.bc(0,b,d,c,f)}l.reset=function(){this.u.rb=this.u.rb&-120|20;this.f.Fa=0;this.f.sa=128;this.w.G=0;this.B.M=128;this.F.G=128;bc(this)};
|
|
l.Gc=function(a,b,d){var c,f,e=this.b;switch(a&-64){case 4194240:switch(a&-2){case 4194300:0>b?c=e.Oa&65280:(a&1&&(b<<=8),e.Oa=b|255,c=0);break;case 4194298:if(0>b)c=e.ec;else{a&1&&(b<<=8);if(c=b&65024){f=c>>9;do c+=34;while(f>>=1)}e.ec=c;e.Na=2}break;case 4194294:if(70!==e.ib)return J(e,4,222);0>b?c=e.I:c=e.I=0;break;case 4194292:if(70!==e.ib)return J(e,4,224);c=1;break;case 4194290:if(70!==e.ib)return J(e,4,226);c=0;break;case 4194288:if(70!==e.ib)return J(e,4,228);c=61183;break;case 4194296:0<=
|
|
b&&!(a&1)&&(b&=255);case 4194286:case 4194284:case 4194282:case 4194280:case 4194278:case 4194276:case 4194274:case 4194272:if(70!==e.ib)return J(e,4,232);f=a-4194272>>1;0>b?c=e.kc[f]:(c=I(this,e.kc[f],a,b,d),0<=c&&(e.kc[f]=c));break;case 4194254:return a&1?e.ga>>14&1?(0<=b&&(e.i[6]=b),c=e.i[6]):(0<=b&&(e.Pa[3]=b),c=e.Pa[3]):e.ga>>14&0?(0<=b&&(e.i[6]=b),c=e.i[6]):(0<=b&&(e.Pa[1]=b),c=e.Pa[1]),c;case 4194252:case 4194250:case 4194248:return f=a&7,e.ga&2048?(0<=b&&(e.i[f]=b),c=e.i[f]):(0<=b&&(e.ab[f]=
|
|
b),c=e.ab[f]),c;case 4194246:return a&1?(0<=b&&(e.i[7]=b),c=e.i[7]):e.ga>>14&0?(0<=b&&(e.i[6]=b),c=e.i[6]):(0<=b&&(e.Pa[0]=b),c=e.Pa[0]),c;case 4194244:case 4194242:case 4194240:return f=a&7,e.ga&2048?(0<=b&&(e.ab[f]=b),c=e.ab[f]):(0<=b&&(e.i[f]=b),c=e.i[f]),c;default:return e.I|=16,J(e,4,124)}break;case 4194176:f=a>>1&31;c=I(this,e.ia[3][f],a,b,d);0<=c&&(e.ia[3][f]=c,e.ia[3][f&15]&=65295);break;case 4194112:var g=this.f;f=this.w;switch(a&-2){case 4194174:c=I(this,e.Db,a,b,d);0<=c&&(e.Db=c);break;
|
|
case 4194172:c=e.Ra;c&65280&&(c=(c<<8|c>>8)&65535);break;case 4194170:e.ba=e.ba&62337|e.Nb<<5|e.ac<<1;0>b?c=e.ba:(c=I(this,e.ba,a,b,d),0<=c&&(e.ba=c&=62337,e.Nb=c>>5&3,e.ac=c>>1&15,c&257?(f=2,e.Sa&16&&(f=1),e.sb=c&1?sb|E:E):(e.sb=0,f=4),this.u.rb=this.u.rb&-8|f));break;case 4194168:0>b?c=this.u.kd&65535:(c=I(this,this.u.data,a,b,d),0<=c&&(this.u.data=c));break;case 4194166:0<=b&&(b&127&&(g.Lc=0),g.sa&=-129,H(e,100,4,52,function(){g.sa|=128;return!!(g.sa&64)}));c=0;break;case 4194164:break;case 4194162:c=
|
|
0;0>b&&(g.Fa&=-129,0<g.lc.length&&(c=g.lc.shift(),0<g.lc.length&&setTimeout(function(){g.Fa|=128;g.Fa&64&&H(e,40,4,48)},50)));break;case 4194160:0>b?c=g.Fa:(c=I(this,g.Fa,a,b,d),0<=c&&(g.Fa=g.Fa&128|c&-129));break;case 4194150:0>b?(c=f.G,f.G&=-129):(c=I(this,f.G,a,b,d),0<=c&&(c&64&&!f.Mb&&(setInterval(this.Tc.bind(this),25),f.Mb=1),f.G=c&-129));break;default:return e.I|=16,J(e,4,126)}break;case 4194048:f=this.B;switch(a&-2){case 4194048:c=I(this,f.Ub,a,b,d);0<=c&&(f.Ub=c);break;case 4194050:c=I(this,
|
|
f.ja,a,b,d);0<=c&&(f.ja=c);break;case 4194052:c=I(this,f.M,a,b,d);0<=b&&0<=c&&(f.M=c&-36993|f.M&36992,f.M&1&&Zb(this));break;case 4194054:c=I(this,f.Vb,a,b,d);0<=c&&(f.Vb=c);break;case 4194056:c=I(this,f.Tb,a,b,d);0<=c&&(f.Tb=c);break;case 4194058:c=I(this,f.qa,a,b,d);0<=c&&(f.qa=c);break;case 4194060:break;case 4194062:c=I(this,f.zc,a,b,d);0<=c&&(f.zc=c);break;default:return e.I|=16,J(e,4,128)}break;case 4193728:var h=this.H;f=h.Ba&7;switch(a&-2){case 4193728:c=I(this,h.N,a,b,d);0<=b&&0<=c&&(h.bb=
|
|
h.bb&60|c>>8&3,h.N=c&17279|h.N&34944|2048,c&1&&h.N&128?cc(this,f):192==(c&192)&&H(e,0,5,172));break;case 4193730:c=I(this,h.yb,a,b,d);0<=c&&(h.yb=c);break;case 4193732:c=I(this,h.wb,a,b,d);0<=c&&(h.wb=c&65534);break;case 4193734:c=I(this,h.Ca[f],a,b,d);0<=c&&(h.Ca[f]=c&7967);break;case 4193736:c=I(this,h.Ba,a,b,d);0<=c&&(h.Ba=c&63|h.Ba&65472,c&128&&bc(this));break;case 4193738:c=h.na[f];break;case 4193740:c=h.xb[f];break;case 4193742:c=I(this,h.mb,a,b,d);0<=c&&(h.mb=c&255);break;case 4193744:c=h.hd[f];
|
|
break;case 4193746:c=I(this,h.Ac,a,b,d);0<=c&&(h.Ac=c);break;case 4193748:c=I(this,h.Bc[f],a,b,d);0<=c&&(h.Bc[f]=c&1023);break;case 4193750:c=8210;break;case 4193752:c=h.jd[f];break;case 4193754:c=I(this,h.Cc[f],a,b,d);0<=c&&(h.Cc[f]=c);break;case 4193756:c=I(this,h.Qa[f],a,b,d);0<=c&&(h.Qa[f]=c&511);break;case 4193758:h.fc[f]=h.Qa[f];c=h.fc[f];break;case 4193760:c=h.fd[f];break;case 4193762:c=h.gd[f];break;case 4193764:c=h.dd[f];break;case 4193766:c=h.ed[f];break;case 4193768:c=I(this,h.bb,a,b,d);
|
|
0<=c&&(h.bb=c&63,h.N=h.N&-769|(c&3)<<8);break;case 4193770:c=I(this,h.nc,a,b,d);0<=c&&(h.nc=c);break;default:return e.I|=16,J(e,4,132)}break;case 4192512:f=this.F;switch(a&-2){case 4192512:c=I(this,f.G,a,b,d);0<=b&&0<=c&&(f.Va=f.Va&60|c>>4&3,f.G=f.G&-1023|c&1022,f.G&128||ac(this));break;case 4192514:c=I(this,f.Ib,a,b,d);0<=c&&(f.Ib=c&65534);break;case 4192516:c=I(this,f.Z,a,b,d);0<=c&&(f.Z=c);break;case 4192518:c=I(this,f.$a,a,b,d);0<=c&&(f.$a=c);break;case 4192520:c=I(this,f.Va,a,b,d);0<=c&&(f.Va=
|
|
c&63,f.G=f.G&-49|(f.Va&3)<<4);break;default:return e.I|=16,J(e,4,134)}break;case 4191552:switch(a&-2){case 4191566:0>b?c=e.Sa:(c=I(this,e.Sa,a,b,d),0<=c&&(70!==e.ib&&(c&=-49),e.Sa=c,e.kb[0]=c&4?15:7,e.kb[1]=c&2?15:7,e.kb[3]=c&1?15:7,e.sb&&(f=2,e.Sa&16&&(f=1),this.u.rb=this.u.rb&-8|f)));break;default:return e.I|=16,J(e,4,136)}break;case 4191424:f=a>>1&31;c=I(this,e.ia[0][f],a,b,d);0<=c&&(e.ia[0][f]=c,e.ia[0][f&15]&=65295);break;case 4191360:f=a>>1&31;c=I(this,e.ia[1][f],a,b,d);0<=c&&(e.ia[1][f]=c,
|
|
e.ia[1][f&15]&=65295);break;case 4190400:case 4190336:if(70!==e.ib)return J(e,4,234);f=a>>2&31;c=e.Wb[f];a&2&&(c>>=16);c&=65535;0<=b&&(c=I(this,c,a,b,d),0<=c&&(e.Wb[f]=a&2?c<<16|e.Wb[f]&65535:e.Wb[f]&4294901760|c&65534));break;case 4188672:case 4188736:case 4188800:case 4188864:case 4188928:case 4188992:case 4189056:case 4189120:if(0>b)c=Vb[a>>1&255];else return e.I|=16,J(e,4,138);break;default:return e.I|=16,J(e,4,142)}d&&0<=c&&(a&1?c>>=8:c&=255);"undefined"===typeof c&&console.log("panic(76)");
|
|
return c};var gc={},Wb=(gc[65534]=[null,null,Ub.prototype.Zc,Ub.prototype.md],gc[65396]=[null,null,Ub.prototype.$c,Ub.prototype.nd],gc);Ma(function(){for(var a=C(document,"pdp11","device"),b=0;b<a.length;b++){var d=a[b],c=y(d),c=new Ub(c);$a(c,d)}});var hc;if(rb){var ic=new ArrayBuffer(2);(new DataView(ic)).setUint16(0,256,!0);hc=256===(new Uint16Array(ic))[0]}else hc=!1;var jc=hc;
|
|
function G(a,b,d,c,f){this.id=kc+=2;this.b=null;this.A=a;this.Yb=b;this.size=d||0;this.type=c||lc;this.C=c==mc;this.controller=null;Ab(this);this.Ya=this.Nc=!1;if(d)if(f)this.controller=f,this.b=null,nc(this,f.Fb);else if(rb)this.B=new ArrayBuffer(d),this.F=new DataView(this.B,0,d),this.f=new Uint8Array(this.B,0,d),this.K=new Uint16Array(this.B,0,d>>1),this.b=new Int32Array(this.B,0,d>>2),nc(this,jc?oc:pc);else{this.b=Array(d>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;nc(this,qc)}else nc(this)}
|
|
var lc=0,mc=2,Gb=4,Ib=["NONE","RAM","ROM","VID","H/W"],kc=0;
|
|
G.prototype={constructor:G,parent:null,Mb:function(a){this.A=a},save:function(){var a,b;if(this.controller)a=null;else if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.F.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(this.controller)return!a;if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.F.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ya=!0}return!1},gb:function(a,b){b?this.u++||rc(this,sc,!1):this.J++||tc(this,sc,!1)},O:function(){this.D&&mb(this.D,
|
|
129)&&this.D.message("attempt to read invalid block %"+r(this.A),!0);return 255},w:function(a,b){this.D&&mb(this.D,129)&&this.D.message("attempt to write "+r(b,4,!0)+" to invalid block %"+r(this.A),!0)},P:function(a,b){return this.vb(a++,b++)|this.vb(a,b)<<8},H:function(a,b,d){this.Ab(a++,b&255,d++);this.Ab(a,b>>8,d)},Y:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},oa:function(a){var b=a>>2;a=(a&3)<<3;var d=this.b[b]>>a;return 24>a?d&65535:d&255|(this.b[b+1]&255)<<8},wa:function(a,b){var d=a>>
|
|
2;a=(a&3)<<3;this.b[d]=this.b[d]&~(255<<a)|b<<a;this.Ya=!0},Eb:function(a,b){var d=a>>2;a=(a&3)<<3;24>a?this.b[d]=this.b[d]&~(65535<<a)|b<<a:(this.b[d]=this.b[d]&16777215|b<<24,d++,this.b[d]=this.b[d]&-256|b>>8);this.Ya=!0},V:function(a,b){if(this.D&&null!=this.A){var d=this.D;uc(d,this.A+a,1,d.R)&&d.ka(!0)}return this.Rb(a,b)},aa:function(a,b){if(this.D&&null!=this.A){var d=this.D;uc(d,this.A+a,2,d.R)&&d.ka(!0)}return this.mc(a,b)},ua:function(a,b,d){if(this.D&&null!=this.A){var c=this.D;uc(c,this.A+
|
|
a,1,c.F)&&c.ka(!0)}this.C?this.w(a,b,d):this.Bb(a,b,d)},Ia:function(a,b,d){if(this.D&&null!=this.A){var c=this.D;uc(c,this.A+a,2,c.F)&&c.ka(!0)}this.C?this.w(a,b,d):this.qc(a,b,d)},R:function(a){return this.f[a]},X:function(a){return this.f[a]},$:function(a){return this.F.getUint16(a,!0)},fa:function(a){return a&1?this.f[a]|this.f[a+1]<<8:this.K[a>>1]},pa:function(a,b){this.f[a]=b;this.Ya=!0},va:function(a,b){this.f[a]=b;this.Ya=!0},Ha:function(a,b){this.F.setUint16(a,b,!0);this.Ya=!0},Ta:function(a,
|
|
b){a&1?(this.f[a]=b,this.f[a+1]=b>>8):this.K[a>>1]=b;this.Ya=!0}};function Ab(a,b,d){a.D=b;a.J=a.u=0;d&&((a.J=d.J)&&tc(a,sc,!1),(a.u=d.u)&&rc(a,sc,!1))}function vc(a,b){b?--a.u||(a.Ab=a.C?a.w:a.Bb,a.Ec=a.C?a.H:a.qc):--a.J||(a.vb=a.Rb,a.Sb=a.mc)}function rc(a,b,d){d&&a.u||(a.Ab=!a.C&&b[1]||a.w,a.Ec=!a.C&&b[3]||a.H);if(d||void 0===d)a.Bb=b[1]||a.w,a.qc=b[3]||a.H}function tc(a,b,d){d&&a.J||(a.vb=b[0]||a.O,a.Sb=b[2]||a.P);if(d||void 0===d)a.Rb=b[0]||a.O,a.mc=b[2]||a.P}
|
|
function nc(a,b){b||(b=wc);tc(a,b,void 0);rc(a,b,void 0)}var wc=[],qc=[G.prototype.Y,G.prototype.wa,G.prototype.oa,G.prototype.Eb],sc=[G.prototype.V,G.prototype.ua,G.prototype.aa,G.prototype.Ia];if(rb)var pc=[G.prototype.R,G.prototype.pa,G.prototype.$,G.prototype.Ha],oc=[G.prototype.X,G.prototype.va,G.prototype.fa,G.prototype.Ta];
|
|
function xc(a,b){u.call(this,"CPU",a,xc,1);var d=a.multiplier||1;this.va=a.cycles||b;this.lb=d;this.ua=Math.round(this.va/1E4)/100;this.jb=this.ua*this.lb;this.j.ea=!1;this.j.pc=!1;this.j.Gb=a.autoStart;this.j.wc=!1;this.j.qb=!1;this.Ob=this.V=0;this.Pb=a.csStart;this.tb=a.csInterval;this.ub=a.csStop;this.fa=[];this.Hb=this.nb.bind(this);D(this)}w(xc);var Mc=["power","reset"];l=xc.prototype;
|
|
l.Za=function(a,b,d,c){this.u=a;this.C=b;this.D=c;for(b=0;b<Mc.length;b++)(d=this.J[Mc[b]])&&this.u.ra(null,Mc[b],d);this.$=null;a=Nc(a,"autoStart");null!=a&&(this.j.Gb="true"==a?!0:"false"==a?!1:!!a);D(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};l.Ma=function(a,b){if(!b){if(a&&this.restore){Oc(this);if(!this.restore(a))return!1;Pc(this)}else this.reset();this.D?this.D.Mb():this.g("No debugger detected")}K(this);return!0};
|
|
l.La=function(a){return a?this.save():!0};l.Gb=function(){return this.j.Gb||!this.D&&void 0===this.J.run?(this.nb(!0),!0):!1};l.yc=function(){return 0};function Pc(a){void 0===a.Pb&&(a.Pb=0);void 0===a.tb&&(a.tb=-1);void 0===a.ub&&(a.ub=-1);a.j.qb=0<=a.Pb&&0<a.tb;a.j.qb&&(a.Ob=0,a.V=a.Pb-a.R)}function Qc(a,b){if(a.j.qb){var d=!1;a.Ob=a.Ob+a.yc()|0;a.V-=b;0>=a.V&&(a.V+=a.tb,d=!0);0<=a.ub&&a.ub<=Rc(a)&&(a.tb=a.ub=-1,Pc(a),a.ka(),d=!0);d&&a.g(Rc(a)+" cycles: checksum="+r(a.Ob))}}
|
|
function Sc(a,b,d,c){if(a.J[b]){void 0===d&&(qb(a,"Value for "+b+" is invalid"),a.ka());var f=a.D&&a.D.$||8;d=!a.j.ea||a.j.wc?8==f?da(d,c):r(d,c):"--------".substr(0,c||4);a.J[b].textContent!=d&&(a.J[b].textContent=d)}}
|
|
l.ra=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.J[b]=d;a=!0;break;case "run":this.J[b]=d;d.onclick=function(){var a;if(a=c.u)if(a=c.u,a.j.ca)a=!0;else{var b=null,d,h=Ya(a.id);for(d=0;d<h.length&&(b=h[d],b===a||b.j.ready);d++);if(d==h.length)for(d=0;d<h.length&&(b=h[d],b===a||b.j.ca);d++);d==h.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.$b?" (waiting for notification)":""))+".");a=!1}a&&(c.j.ea?c.ka():c.nb())};
|
|
a=!0;break;case "speed":this.J[b]=d;a=!0;break;case "setSpeed":this.J[b]=d,d.onclick=function(){Tc(c,c.lb<<1,!0)},d.textContent=this.jb.toFixed(2)+"Mhz",a=!0}return a};function Uc(a,b,d){a.R+=b;d&&(a.P=a.b=0)}function Vc(a,b){var d=1;b&&1<a.lb&&a.K&&(d=a.K/a.ua);a.ob=Math.round(1E3/30);a.pa=Math.floor(a.va/30*d);b||(a.X=a.pa);a.wa=0}function Rc(a){return a.R+a.H+a.P-a.b}function Oc(a){a.K=0;a.Cb=0;a.R=a.H=a.P=a.b=0;Pc(a);Tc(a,1)}
|
|
function Tc(a,b,d){var c=!1;if(void 0!==b){.8>a.K/a.jb?b=1:c=!0;a.lb=b;b=a.ua*a.lb;if(a.jb!=b){a.jb=b;b=a.jb.toFixed(2)+"Mhz";var f=a.J.setSpeed;f&&(f.textContent=b);a.g("target speed: "+b)}d&&a.u&&a.u.Xb()}Uc(a,a.H);a.H=0;a.F=oa();a.O=0;Vc(a);return c}function Wc(a){a.P-=a.b;a.b=0}
|
|
l.nb=function(a){if(nb(this,!0)){if(!this.j.ea){Tc(this);this.u&&this.u.start(this.F,Rc(this));this.j.ea=!0;this.j.pc=!0;this.$&&this.$.start();var b=this.J.run;b&&(b.textContent="Halt");this.u&&(this.u.ta(!0),a&&this.u.Xb(!0))}this.wa>=this.va&&Vc(this,!0);this.aa=0;this.oa=oa();this.O&&(a=this.oa-this.O,a>this.ob&&(this.F+=a,this.F>this.oa&&(this.F=this.oa)));try{do{for(var d,c=this.j.qb?1:this.pa,f=this.fa.length-1;0<=f;f--){var e=this.fa[f];0>e[0]||c>e[0]&&(c=e[0])}d=c;try{this.zb(d)}catch(m){if("number"!=
|
|
typeof m)throw m;}var g=this.P-this.b;a=g;for(var h=this.fa.length-1;0<=h;h--){var k=this.fa[h];0>k[0]||(k[0]-=a,0>=k[0]&&(k[0]=-1,k[1]()))}this.aa+=g;this.H+=g;Uc(this,0,!0);Qc(this,g);this.X-=g;if(0>=this.X){this.X+=this.pa;15<=++this.Cb&&(this.u&&this.u.ta(),this.Cb=0);break}}while(this.j.ea)}catch(m){this.ka();K(this);this.u&&this.u.stop(oa(),Rc(this));nb(this,!1);qb(this,m.stack||m.message);return}d=setTimeout;c=this.Hb;this.O=oa();f=this.ob;this.aa&&(f=Math.round(f*this.aa/this.pa));f-=this.O-
|
|
this.oa;if(e=this.O-this.F)this.K=Math.round(this.H/(10*e))/100,864E5<=e&&(this.R=0,Tc(this));if(0>f||this.K<this.jb)-1E3>f&&(this.F-=f),f=0;this.wa+=this.aa;this.O+=f;d(c,f)}else K(this),this.u&&this.u.stop(oa(),Rc(this))};l.zb=function(){return 0};l.ka=function(a){ob(this,!0);Wc(this);Uc(this,this.H);this.H=0;if(this.j.ea){this.j.ea=!1;this.$&&this.$.stop();var b=this.J.run;b&&(b.textContent="Run")}this.j.complete=a};function K(a,b){a.u&&a.u.ta(b)}
|
|
function Xc(a){this.Xc=+a.model||1170;this.Zb=a.resetAddr||0;xc.call(this,a,1E6);this.Ia=0;this.decode=Yc.bind(this);this.ha=65536;this.ya=32768;this.za=65535;this.xa=32768;this.i=[0,0,0,0,0,0,0,this.Zb];this.ab=[0,0,0,0,0,0];this.Pa=[0,0,0,0];this.Oa=255;this.ac=this.Nb=this.sb=this.B=this.Sa=this.Db=this.Ra=this.ba=this.I=this.ec=0;this.kb=[7,7,7,7];this.ia=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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.Wb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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.kc=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.f=-1;this.T=0;this.ib=70;this.Y=-1;this.w=[];this.Jb=0;this.Na=2;Zc(this);this.j.complete=this.j.Kc=!1}w(Xc,xc);l=Xc.prototype;
|
|
l.reset=function(){this.j.ea&&this.ka();$c(this);Oc(this);this.j.error=!1;this.parent.reset.call(this)};function $c(a){a.Oa=255;a.I=0;a.w=[];a.ec=0;a.ba=a.Ra=a.Db=a.Sa=a.sb=0;a.kb[0]=a.kb[1]=a.kb[3]=7;a.Nb=0;Zc(a)}function Zc(a){a.sb?(a.Ha=65536,a.W=a.Rc,a.Sb=a.Ga):(a.Ha=0,a.W=a.Qc,a.Sb=a.dc)}l.yc=function(){return 0};l.save=function(){var a=new L(this);a.set(0,[]);a.set(1,[this.Ta,this.R,this.lb]);a.set(2,Tb(this.C));return a.data()};
|
|
l.restore=function(a){var b=a[1];this.Ta=b[0];this.R=b[1];Tc(this,b[3]);a:{b=this.C;a=a[2];var d;for(d=0;d<a.length-1;d+=2){var c=a[d],f=a[d+1];if(f&&f.length<b.K){for(var e=0,g=Array(b.K),h=0;h<f.length-1;)for(var k=f[h++],m=f[h++];k--;)g[e++]=m;f=g}e=b.L[c];if(!e||!e.restore(f)){t("Unable to restore memory block "+c);b=!1;break a}}b=!0}return b};
|
|
l.ra=function(a,b,d){switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":this.J[b]=d;this.Ia++;a=!0;break;default:a=this.parent.ra.call(this,a,b,d)}return a};
|
|
l.ta=function(a){if(this.Ia&&(a||!this.j.ea||this.j.wc)){for(a=0;a<this.i.length;a++)Sc(this,"R"+a,this.i[a]);a=Xb(this);Sc(this,"PS",a);Sc(this,"NF",a&8?1:0,1);Sc(this,"ZF",a&4?1:0,1);Sc(this,"VF",a&2?1:0,1);Sc(this,"CF",a&1?1:0,1)}if(a=this.J.speed)a.textContent=this.j.ea&&this.K?this.K.toFixed(2)+"Mhz":"Stopped"};function ad(a){return a.ya&32768?2:0}function bd(a){return a.za&65535?0:4}function cd(a){return a.xa&32768?8:0}
|
|
function H(a,b,d,c,f){for(var e=a.w.length;0<e--;)if(a.w[e].ld===c){0<e&&(a.w[e-1].Xa+=a.w[e].Xa);a.w.splice(e,1);break}if(0<=b){2===a.Jb&&(b=0,a.Jb=0,setTimeout(a.Hb,0));for(e=a.w.length;0<e--;){if(a.w[e].Xa>b){a.w[e].Xa-=b;break}b-=a.w[e].Xa}a.w.splice(e+1,0,{delay:b,priority:d<<5&224,vector:c,callback:f})}a.Na=2}function Xb(a){return a.ga=a.ga&63728|cd(a)|bd(a)|ad(a)|(a.ha&65536?1:0)}
|
|
function Yb(a,b){a.xa=b<<12;a.za=~b&4;a.ya=b<<14;a.ha=b<<16;if((b^a.ga)&2048)for(var d=a.ab.length;0<=--d;){var c=a.i[d];a.i[d]=a.ab[d];a.ab[d]=c}a.B=b>>14&3;d=a.ga>>14&3;a.B!=d&&(a.Pa[d]=a.i[6],a.i[6]=a.Pa[a.B]);a.Na=2;a.ga=b}function dd(a,b){a.T&128||(a.xa=a.za=a.ha=b,a.ya=0)}function ed(a,b){a.T&128||(a.xa=a.za=b,a.ya=0)}function fd(a,b,d,c){a.T&128||(a.xa=a.za=a.ha=b,a.ya=(d^c)&(c^b))}
|
|
function J(a,b,d){var c=!1;0>a.Y?a.Y=Xb(a):a.B||(b=4,c=!0);a.ba&57344||(a.Ra=63222,a.Db=b);a.B=0;var f=a.Ga(b|65536),e=a.Ga(b+2&65535|65536);Yb(a,e&53247|a.Y>>2&12288);c&&(a.I|=4,a.i[6]=4);gd(a,a.Y);gd(a,a.i[7]);a.i[7]=f;a.T&=-113;a.Y=-1;throw b|d<<8;}function fc(a,b){var d=b>>13&31;31>d?a.Sa&32&&(b=a.Wb[d]+(b&8190)&4194302,3932160<=b&&4186112>b&&console.log("panic(898)")):b|=4186112;return b}
|
|
function hd(a,b,d){var c,f,e,g=0;if(d&a.sb){c=b>>13&a.kb[a.B];f=a.ia[a.B][c];e=(a.ia[a.B][c+16]<<6)+(b&8191)&4194303;a.Sa&16?3932160<=e&&4186112>e&&(e=fc(a,e&262143)):(e&=262143,253952<=e&&(e|=4186112));3932160>e&&(3915776<=e&&(a.I|=32,J(a,4,24)),e&1&&!(d&1)&&(a.I|=64,J(a,4,26)));switch(f&7){case 1:g=4096;case 2:f|=128;d&E&&(g=8192);break;case 4:g=4096;case 5:d&E&&(g=4096);case 6:f|=d&E?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.ia[a.B][c]=f;if(4194170!==e||a.B)a.Nb=a.B,a.ac=c;g&&(g&57344&&(0<=a.Y&&(g|=128),a.ba&57344||(a.ba=a.ba|g|a.Nb<<5|a.ac<<1),J(a,168,28)),a.ba&61440||!(4191360>e||4194239<e)||(a.ba|=4096,a.ba&512&&(a.T|=32)))}else e=b&65535,57344<=e?e|=4186112:e&1&&!(d&1)&&(a.I|=64,J(a,4,22));return e}l.dc=function(a){return 4194304<=a?this.i[a-4194304]:0<=a?this.C.Ea(a):a};l.Ga=function(a){return this.dc(hd(this,a,sb))};
|
|
function ec(a,b,d){d&=65535;return 4194304<=b?a.i[b-4194304]=d:0<=b?(a.C.oc(b,d),d):b}function id(a,b){return 4194304<=b?a.i[b-4194304]&255:0<=b?a.C.Lb(b):b}function jd(a,b,d){d&=255;4194304<=b?a.i[b-4194304]=a.i[b-4194304]&65280|d:0<=b&&a.C.gc(b,d)}function gd(a,b){var d=a.i[6]-2&65535;a.i[6]=d;a.ba&57344||(a.Ra=a.Ra<<8|246);!a.B&&d<=a.Oa&&4<d&&(d<=a.Oa-32?(a.I|=4,a.i[6]=4,J(a,4,32)):(a.I|=8,a.T|=4));d=hd(a,d|65536,E);ec(a,d,b)}
|
|
function kd(a,b,d){var c,f,e=b&7,g=d&8?0:a.Ha;switch(b>>3&7){case 0:J(a,4,34);break;case 1:return 6===e&&!a.B&&d&E&&(a.i[6]<=a.Oa||65534<=a.i[6])&&(a.i[6]<=a.Oa-32||65534<=a.i[6]?(a.I|=4,a.i[6]=4,J(a,4,36)):(a.I|=8,a.T|=64)),7===e?a.i[e]:a.i[e]|g;case 2:f=2;c=a.i[e];7!==e&&(c|=g,6>e&&d&1&&(f=1));break;case 3:f=2;c=a.i[e];7!==e&&(c|=g);if(0>(c=a.Ga(c)))return c;c|=g;break;case 4:f=-2;6>e&&d&1&&(f=-1);c=a.i[e]+f&65535;7!==e&&(c|=g);break;case 5:f=-2;c=a.i[e]-2&65535;7!==e&&(c|=g);if(0>(c=a.Ga(c)))return c;
|
|
c|=g;break;case 6:if(0>(c=a.Ga(a.i[7])))return c;a.i[7]=a.i[7]+2&65535;c=c+a.i[e]&65535;return c|g;case 7:if(0>(c=a.Ga(a.i[7])))return c;a.i[7]=a.i[7]+2&65535;c=c+a.i[e]&65535;return 0>(c=a.Ga(c|65536))?c:c|g}a.i[e]=a.i[e]+f&65535;!g||a.ba&57344||(a.Ra=a.Ra<<8|f<<3&248|e);6===e&&!a.B&&d&E&&0>=f&&(a.i[6]<=a.Oa||65534<=a.i[6])&&(a.i[6]<=a.Oa-32?(a.I|=4,a.i[6]=4,J(a,4,38)):(a.I|=8,a.T|=64));return c}l.Qc=function(a,b){return kd(this,a,b)};l.Rc=function(a,b){return hd(this,kd(this,a,b),b)};
|
|
function N(a,b){return b&56?a.Sb(kd(a,b,sb)):a.i[b&7]}function ld(a,b){return b&56?id(a,a.W(b,ub)):a.i[b&7]&255}function md(a,b,d,c){b&56?(b=a.W(b,tb),ec(a,b,c.call(a,d,a.dc(b)))):(b&=7,a.i[b]=c.call(a,d,a.i[b])&65535)}function nd(a,b,d,c){b&56?(b=a.W(b,wb),jd(a,b,c.call(a,d,id(a,b)))):(b&=7,a.i[b]=a.i[b]&65280|c.call(a,d,a.i[b])&255)}function od(a,b,d){b&56?ec(a,a.W(b,E),d):a.i[b&7]=d&65535;return d}
|
|
function pd(a,b,d,c){b&56?jd(a,a.W(b,vb),d):(b&=7,a.i[b]=d?c&1?d<<24>>24&65535:a.i[b]&-256|d&255:a.i[b]&-256);return d}function O(a,b){return a.i[7]+(b<<24>>23)&65535}
|
|
l.zb=function(a){this.j.complete=!0;var b=this.j.Kc=this.D&&qd(this.D),d=a?this.j.pc?0:1:-1;this.j.pc=!1;this.P=this.b=a;this.Ta&256?(Wc(this),a=!1):a=!0;if(a){do{if(b){if(rd(this.D,this.i[7],d)){this.ka();break}d=1}var c,f;this.T&112&&(this.T&32?J(this,168,52):this.T&64?J(this,4,54):this.T&16&&J(this,12,56),this.T&=-113);if(this.Na)if(1===this.Na)this.Na=2;else{this.Na=0;f=-1;a=this.ec&224;if(0<(c=this.w.length))for(;0<c--;){if(0<this.w[c].Xa){this.w[c].Xa--;this.Na=2;break}if(this.w[c].uc){if(!this.w[c].uc()){this.w.splice(c,
|
|
1);f--;continue}this.w[c].uc=null}this.w[c].Yc>a&&(a=this.w[c].Yc,f=c)}a>(this.ga&224)&&(0>f?J(this,160,42):(J(this,this.w[f].ld,44),this.w.splice(f,1)))}this.ba&57344||(this.Ra=0,this.Db=this.i[7]);this.T=this.ga&16;this.f=a=this.Ga(this.i[7]);0<=a&&(this.i[7]=this.i[7]+2&65535);this.decode(a);if(0>this.f){this.i[7]=this.i[7]-2&65535;this.g("unimplemented");break}}while(0<this.b)}return this.j.complete?this.P-this.b:void 0===this.j.complete?0:-1};
|
|
Ma(function(){for(var a=C(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=y(d),c=new Xc(c);$a(c,d)}});function sd(a,b){var d=a+b;this.T&128||(this.xa=this.za=this.ha=d,this.ya=(a^d)&(b^d));return d&65535}function td(a,b){a=~a&b;ed(this,a);return a}function ud(a,b){a=~a&b;ed(this,a<<8);return a}function vd(a,b){a|=b;ed(this,a);return a}function wd(a,b){a|=b;ed(this,a<<8);return a}function xd(a,b){var d=b-a;fd(this,d,a,b);return d&65535}function yd(){this.f=-1;--this.b}
|
|
function zd(){this.f=-1;--this.b}function P(a){a&1&&(this.ha=0);a&2&&(this.ya=0);a&4&&(this.za=1);a&8&&(this.xa=0);--this.b}function Ad(){this.f=-1;--this.b}function Bd(a){var b=kd(this,a,8);a=a>>6&7;gd(this,this.i[a]);this.i[a]=this.i[7];this.i[7]=b;--this.b}function Cd(){this.f=-1;--this.b}function Dd(){--this.b}function R(a){a&1&&(this.ha=65536);a&2&&(this.ya=32768);a&4&&(this.za=0);a&8&&(this.xa=32768);--this.b}function Ed(){this.f=-1;--this.b}function Fd(){this.f=-1;--this.b}
|
|
function S(){J(this,8,48)}function Yc(a){Gd[a>>12].call(this,a)}
|
|
var Gd=[function(a){Hd[a>>8&15].call(this,a)},function(a){ed(this,od(this,a,N(this,a>>6)));--this.b},function(a){var b=N(this,a>>6);a=N(this,a);fd(this,b-a,a,b);--this.b},function(a){ed(this,N(this,a>>6)&N(this,a));--this.b},function(a){md(this,a,N(this,a>>6),td);--this.b},function(a){md(this,a,N(this,a>>6),vd);--this.b},function(a){md(this,a,N(this,a>>6),sd);--this.b},function(a){Id[a>>8&15].call(this,a)},function(a){Jd[a>>8&15].call(this,a)},function(a){var b=ld(this,a>>6);ed(this,pd(this,a,b,1)<<
|
|
8);--this.b},function(a){var b=ld(this,a>>6)<<8;a=ld(this,a)<<8;fd(this,b-a,a,b);--this.b},function(a){ed(this,(ld(this,a>>6)&ld(this,a))<<8);--this.b},function(a){nd(this,a,ld(this,a>>6),ud);--this.b},function(a){nd(this,a,ld(this,a>>6),wd);--this.b},function(a){md(this,a,N(this,a>>6),xd);--this.b},S],Hd=[function(a){Kd[a>>4&15].call(this,a)},function(a){this.i[7]=O(this,a);--this.b},function(a){bd(this)||(this.i[7]=O(this,a));--this.b},function(a){bd(this)&&(this.i[7]=O(this,a));--this.b},function(a){!cd(this)==
|
|
!ad(this)&&(this.i[7]=O(this,a));--this.b},function(a){!cd(this)!=!ad(this)&&(this.i[7]=O(this,a));--this.b},function(a){bd(this)||!cd(this)!=!ad(this)||(this.i[7]=O(this,a));--this.b},function(a){if(bd(this)||!cd(this)!=!ad(this))this.i[7]=O(this,a);--this.b},Bd,Bd,function(a){Ld[a>>6&3].call(this,a)},function(a){Md[a>>6&3].call(this,a)},function(a){Nd[a>>6&3].call(this,a)},function(a){Od[a>>6&3].call(this,a)},S,S],Kd=[function(a){Pd[a&15].call(this,a)},S,S,S,S,S,S,S,function(a){var b=this.Ga(this.i[6]|
|
|
65536);0<=b&&(this.i[6]=this.i[6]+2&65535);a&=7;this.i[7]=this.i[a];this.i[a]=b;--this.b},function(a){this.ga&49152||(this.ga=this.ga&-2017|(a&7)<<5,this.Na=1);--this.b},function(a){Qd[a&15].call(this,a)},function(a){Rd[a&15].call(this,a)},S,S,S,S],Qd=[Dd,function(){this.ha=0;--this.b},function(){this.ya=0;--this.b},P,function(){this.za=1;--this.b},P,P,P,function(){this.xa=0;--this.b},P,P,P,P,P,P,P],Rd=[Dd,function(){this.ha=65536;--this.b},function(){this.ya=32768;--this.b},R,function(){this.za=
|
|
0;--this.b},R,R,R,function(){this.xa=32768;--this.b},R,R,R,R,R,R,R],Pd=[function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.ga&49152||($c(this),this.C.reset());--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},S,S,S,S,S,S,S,S],Id=[Cd,Cd,Ad,Ad,yd,yd,zd,zd,Fd,Fd,S,S,S,S,Ed,Ed],Jd=[function(a){cd(this)||(this.i[7]=O(this,a));--this.b},function(a){cd(this)&&(this.i[7]=
|
|
O(this,a));--this.b},function(a){this.ha&65536||bd(this)||(this.i[7]=O(this,a));--this.b},function(a){if(this.ha&65536||bd(this))this.i[7]=O(this,a);--this.b},function(a){ad(this)||(this.i[7]=O(this,a));--this.b},function(a){ad(this)&&(this.i[7]=O(this,a));--this.b},function(a){this.ha&65536||(this.i[7]=O(this,a));--this.b},function(a){this.ha&65536&&(this.i[7]=O(this,a));--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(a){Sd[a>>6&3].call(this,a)},function(a){Td[a>>
|
|
6&3].call(this,a)},function(a){se[a>>6&3].call(this,a)},function(a){te[a>>6&3].call(this,a)},S,S],Ld=[function(a){dd(this,od(this,a,0));--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b}],Md=[function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b}],Nd=[function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b}],Od=
|
|
[function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b}],Sd=[function(a){dd(this,pd(this,a,0));--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b}],Td=[function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b}],se=[function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=
|
|
-1;--this.b}],te=[function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b},function(){this.f=-1;--this.b}];function ue(a){u.call(this,"ROM",a,ue);this.f=null;this.F=a.addr;this.u=a.size;this.H=a.writable;this.w=a.alias;this.B=a.file;this.K=ea(this.B);if(this.B){a=this.B;var b=fa(this.K);"json"!=b&&"hex"!=b&&(a=ha()+"/api/v1/dump?file="+this.B+"&format=bytes&decimal=true");var d=this;ta(a,null,!0,function(a,b,e){ve(d,a,b,e)})}}w(ue);
|
|
ue.prototype.Za=function(a,b,d,c){this.C=b;this.b=d;this.D=c;we(this)};ue.prototype.Ma=function(){if(this.Ja){if(this.D){var a=this.D,b=this.id,d=this.F,c=this.u,f=this.Ja,e=[],g;for(g in f){var h=f[g];"number"==typeof h&&(f[g]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var n=e,k=[k>>>0,g],q=na(n,k,a.vc);0>q&&n.splice(-(q+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.H.push({pd:b,A:d,Uc:c,Ja:f,sc:e})}delete this.Ja}return!0};ue.prototype.La=function(){return!0};
|
|
function ve(a,b,d,c){if(c)a.ma("Unable to load system ROM (error "+c+": "+b+")");else{Xa(a.tc,b,d);var f;if("["==d.charAt(0)||"{"==d.charAt(0))try{var e,g,h=eval("("+d+")");if(e=h.bytes)a.f=e;else if(e=h.words)for(a.f=Array(2*e.length),g=f=0;f<e.length;f++)a.f[g++]=e[f]&255,a.f[g++]=e[f]>>8&255;else if(e=h.data)for(a.f=Array(4*e.length),g=f=0;f<e.length;f++)a.f[g++]=e[f]&255,a.f[g++]=e[f]>>8&255,a.f[g++]=e[f]>>16&255,a.f[g++]=e[f]>>24&255;else a.f=h;a.Ja=h.symbols;if(!a.f.length){t("Empty ROM: "+
|
|
b);return}if(1==a.f.length){t(a.f[0]);return}}catch(k){a.ma("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.f=Array(b.length),f=0;f<b.length;f++)a.f[f]=ca(b[f],16);we(a)}}
|
|
function we(a){if(!pb(a))if(!a.B)D(a);else if(a.f&&a.C){a.u||(a.u=a.f.length);if(a.f.length!=a.u)qb(a,"ROM size ("+r(a.f.length,8,!0)+") does not match specified size ("+r(a.u,8,!0)+")");else{var b;b=a.F;if(Fb(a.C,b,a.u,a.H?1:mc)){var d;for(d=0;d<a.f.length;d++){var c=a.C,f=b+d;c.L[(f&c.C)>>>c.S].Bb(f&c.f,a.f[d]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(d=0;d<b.length;d++){for(var e=a,c=b[d],f=e.C,g=e.u,h=[],k=e.F>>>f.S;0<g&&k<f.L.length;)h.push(f.L[k++]),
|
|
g-=f.Aa;f=e.C;e=e.u;g=0;for(c>>>=f.S;0<e&&c<f.L.length;){k=h[g++];if(!k)break;f.L[c++]=k;e-=f.Aa}}delete a.f}}D(a)}}Ma(function(){for(var a=C(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=y(d),c=new ue(c);$a(c,d)}});function xe(a){u.call(this,"RAM",a,xe);this.w=a.addr;this.u=a.size;this.f=!1}w(xe);l=xe.prototype;l.Za=function(a,b,d,c){this.C=b;this.b=d;this.D=c;D(this)};l.Ma=function(a,b){b||this.reset();return!0};l.La=function(a){return a?this.save():!0};
|
|
l.reset=function(){!this.f&&this.u&&Fb(this.C,this.w,this.u,1)&&(this.f=!0);this.f||t("No RAM allocated")};l.save=function(){return null};l.restore=function(){return!0};Ma(function(){for(var a=C(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=y(d),c=new xe(c);$a(c,d)}});function ye(a){u.call(this,"Keyboard",a,ye,65536);D(this)}w(ye);ye.prototype.ra=function(){return!1};ye.prototype.Za=function(a,b,d,c){this.u=a;this.b=d;this.D=c;this.$=null};
|
|
Ma(function(){for(var a=C(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=y(d),c=new ye(c);$a(c,d)}});function ze(a){u.call(this,"Debugger",a,ze);this.$=a.base||16;this.V=this.Ia=this.K=0;this.Y=!1;this.B=-1;this.w=[];this.fa={}}w(ze);var Ae={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
function Be(a,b,d,c){if(d)if(b){0>a.B&&a.w.length&&(a.B=0);if(0>a.B||b!=a.w[a.B])a.w.splice(0,0,b),a.B=0;a.B--}else a.Y?b="end":b=a.w[a.B+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var f=null;c=c||";";for(var e=0;e<=b.length;e++){var g=b.charAt(e);if('"'==g||"'"==g)f?g==f&&(f=null):f=g;else if(g==c&&!f||!g)a.push(la(b.substring(d,e))),d=e+1}}return a}
|
|
function Ce(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var f=a.pop(),e=a.pop();switch(c){case "*":c=e*f;break;case "/":if(!f)return!1;c=e/f;break;case "%":if(!f)return!1;c=e%f;break;case "+":c=e+f;break;case "-":c=e-f;break;case "<<":c=e<<f;break;case ">>":c=e>>f;break;case ">>>":c=e>>>f;break;case "<":c=e<f?1:0;break;case "<=":c=e<=f?1:0;break;case ">":c=e>f?1:0;break;case ">=":c=e>=f?1:0;break;case "==":c=e==f?1:0;break;case "!=":c=e!=f?1:0;break;case "&":c=e&f;break;
|
|
case "^":c=e^f;break;case "|":c=e|f;break;case "&&":c=e&&f?1:0;break;case "||":c=e||f?1:0;break;default:return!1}a.push(c|0)}return!0}
|
|
function De(a,b,d){var c;if(b){b=Ee(a,b);for(var f=0,e=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);f<m.length;){var n=m[f++],q=n.length,n=la(n);if(!n){e=!0;break}n=Fe(a,n,null,!1===d);if(void 0===n){e=!0;d=!1;break}h.push(n);if(f==m.length)break;var n=m[f++],p=n.length;k.length&&Ae[n]<Ae[k[k.length-1]]&&Ce(h,k,1);k.push(n);b=b.substr(q+p)}Ce(h,k)&&1==h.length||(e=!0);e?d&&a.g("error parsing '"+g+"' at character "+(g.length-b.length)):(c=h.pop(),d&&Ge(a,null,
|
|
c))}return c}function Ee(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=De(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?r(c):"undefined")}for(;(d=b.match(/\[(.*?)]/))&&!(0<=d[1].indexOf("["));)b=b.replace("["+d[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){c=null;switch(d[1].toLowerCase()){case "ops":c=a.V-a.Ia}if(null==c)break;b=b.replace(d[0],c.toString())}return b}
|
|
function Fe(a,b,d,c){var f;null!=b?(f=a.fa[b],null==f&&(f=ca(b,a.$)),null!=f||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return f}function Ge(a,b,d){var c,f=!1;if(void 0!==d){f=!0;c=d;var e=0,g="";if(!e||4<e)e=4;for(var h=0;h<e;h++){g&&(g=","+g);var k=c&255,m=8,n="";m?32<m&&(m=32):m=32;if(null==k||isNaN(k))for(;0<m--;)n="?"+n;else for(;0<m--;)n=(k&1?"1":"0")+n,k>>=1;g=n+g;c>>=8}c=r(d,0,!0)+" "+d+". "+da(d,0,!0)+" "+("0b"+g)}a.g((null!=b?b+": ":"")+c);return f}
|
|
function He(a,b){if(b)return Ge(a,b,a.fa[b]);var d=0;for(b in a.fa)Ge(a,b,a.fa[b]),d++;return 0<d}function T(a,b,d){switch(a.$){case 8:return da(b,d);case 10:return b.toString();default:return r(b,d)}}
|
|
function Ie(a){ze.call(this,a);this.P=V();this.Cb=V();this.X=V();this.H=[];this.f=this.R=this.F=[];Je(this);this.va=0;Ke(this);this.Ta={};Le(this,a.messages);this.ob=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return Me(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return Me(b,a)})}w(Ie,ze);
|
|
var Ne={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Oe="NONE ADC ADCB ADD ASL ASLB ASR ASRB BCC BCS BEQ BGE BGT BHI BIC BICB BIS BISB BIT BITB BLE BLOS BLT BMI BNE BPL BPT BR BVC BVS CCC CLC CLCN CLCV CLCVN CLCVZ CLCZ CLCZN CLN CLR CLRB CLV CLVN CLVZ CLVZN CLZ CLZN CMP CMPB COM COMB DEC DECB INC INCB HALT JMP JSR MARK MFPD MFPI MFPS MOV MOVB MTPD MTPI MTPS NEG NEGB NOP RESET ROL ROLB ROR RORB RTI RTS SBC SBCB SCC SEC SECN SECV SECVN SECVZ SECZ SECZN SEN SEV SEVN SEVZ SEVZN SEZ SEZN SUB SWAB SXT TST TSTB WAIT MUL DIV ASH ASHC XOR SOB EMT TRAP SPL IOT RTT MFPT".split(" "),
|
|
Pe={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]}};l=Ie.prototype;
|
|
l.Za=function(a,b,d,c){this.C=b;this.b=d;this.u=a;(a=Nc(a,"messages"))&&Le(this,a);this.Zb=Pe;Qe(this,function(a){a:{var b=c.C.L,d=a[0],f=a=0,k=b.length;if(d){a=c.W(W(c,d));if(-1===a){c.g("invalid address: "+d);break a}f=a>>>c.C.S;k=1}c.g("blockid physical blockaddr used size type");c.g("-------- --------- ---------- ------ ------ ----");for(var d=-1,m=0;k--;){var n=b[f];n.type==d?m++||c.g("..."):(d=n.type,m=Ib[d],n&&c.g(r(n.id,8)+" %"+r(f<<c.C.S,8)+" %%"+r(n.A,8)+" "+r(n.Yb,4,
|
|
!0)+" "+r(n.size,4,!0)+" "+m),d!=lc&&(d=-1),m=0);a+=c.C.Aa;f++}}});D(this)};
|
|
l.ra=function(a,b,d){var c=this;switch(b){case "debugInput":return this.ua=this.J[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",Me(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.B<c.w.length-1&&(b=c.w[++c.B])):40==a.keyCode&&(0<c.B?b=c.w[--c.B]:(b="",c.B=-1)),null!=b){var f=b.length;d.value=b;d.setSelectionRange(f,f)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.J[b]=d,Ba(d,function(){if(c.ua){var a=c.ua.value;
|
|
c.ua.value="";Me(c,a,!0);return!0}return!1}),!0;case "step":return this.J[b]=d,Ba(d,function(a){var b=!1;ob(c,!0)||(nb(c,!0),b=c.zb(a?1:0),nb(c,!1));return b}),!0}return!1};l.Xb=function(){this.ua&&this.ua.focus()};l.W=function(a){a=a&&a.A;null==a&&(a=-1);return a};l.Lb=function(a,b){var d=255,c=this.W(a,!1,1);-1!==c&&(d=this.C,d=d.L[(c&d.C)>>>d.S].Rb(c&d.f,c),b&&Re(a,b));return d};l.Ea=function(a,b){var d=65535,c=this.W(a,!1,2);-1!==c&&(d=Jb(this.C,c),b&&Re(a,b));return d};
|
|
l.gc=function(a,b,d){var c=this.W(a,!0,1);if(-1!==c){var f=this.C;f.L[(c&f.C)>>>f.S].Bb(c&f.f,b&255,c);d&&Re(a,d);K(this.b,!0)}};l.oc=function(a,b,d){var c=this.W(a,!0,2);if(-1!==c){var f=this.C,e=c&f.f,g=(c&f.C)>>>f.S;e!=f.f?f.L[g].qc(e,b&65535,c):(f.L[g++].Bb(e,b&255,c),f.L[g&f.u].Bb(0,b>>8&255,c+1));d&&Re(a,d);K(this.b,!0)}};function V(a){return{A:a,Da:!1}}function Se(a){return[a.A,a.Da]}function Te(a){return{A:a[0],Da:a[1]}}
|
|
function W(a,b,d){var c;d=(d?a.P:a.Cb).A;if(void 0!==b){c=b=Ee(a,b);var f;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.H.length;d++){var e=a.H[d].Ja[c];if(void 0!==e){c=e.o;void 0!==c&&(f=V(c));break}}if(c=f)return c;d=De(a,b,void 0)}null!=d&&(c=V(d));return c}function Ue(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.Ic=Be(a,b.Dc=d[2]))}function Re(a,b){null!=a.A&&(a.A+=b||1)}
|
|
function Le(a,b){a.D=a;a.da=a.Jc=536870912;a.wa=null;a.Ha=[];b=Be(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var d in F){var c;a:if(c=void 0,Array.prototype.indexOf)c=b.indexOf(d,c);else{c=c||0;0>c&&(c+=b.length);0>c&&(c=0);for(var f=b.length;c<f;c++)if(c in b&&b[c]===d)break a;c=-1}0<=c&&(a.da|=F[d],a.g(d+" messages enabled"))}}function Qe(a,b){for(var d in F)if(64==F[d]){a.Ta[d]=b;break}}
|
|
l.message=function(a,b){b&&(a+=" at "+T(this,V(this.b.i[7]).A));this.da&1073741824?this.Ha.push(a):this.wa&&a==this.wa||(this.wa=a,this.da&-2147483648&&(this.ka(),a+=" (cpu halted)"),this.g(a),this.b&&(a=this.b,Wc(a),a.X=0,K(a)))};l.Mb=function(){this.g("Type ? for help with PDP11 Debugger commands");this.ta();if(this.ob){var a=this.ob;this.ob=null;Me(this,a)}};
|
|
function Ke(a){var b;if(qd(a)){if(!a.O||!a.O.length){a.O=Array(1E3);for(b=0;b<a.O.length;b++)a.O[b]=V();a.pa=0;a.g("instruction history buffer allocated")}if(!a.oa||!a.oa.length)for(a.oa=Array(256),b=0;b<a.oa.length;b++)a.oa[b]=[b,0]}else a.O&&a.O.length&&a.g("instruction history buffer freed"),a.pa=0,a.O=[],a.oa=[]}l.nb=function(a){if(!Ve(this))return!1;this.b.nb(a);return!0};
|
|
l.zb=function(a,b,d){if(!Ve(this))return!1;this.K=0;a||qd(this)&&rd(this,this.b.i[7],0);try{var c=this.b.zb(a);0<c&&(this.K+=c,Uc(this.b,c,!0),Qc(this.b,c),this.V++)}catch(f){"number"!=typeof f&&(this.K=0,qb(this.b,f.stack||f.message))}!1!==d&&K(this.b);this.ta(b||!1);return 0<this.K};l.ka=function(a){this.b&&this.b.ka(a)};l.ta=function(a){void 0===a&&(a=!0);this.P=V(this.b.i[7]);a&&1!=this.aa?We(this):Xe(this)};
|
|
function Ve(a){var b;if(b=a.b&&pb(a.b))b=a.b,b.j.ca?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ob(a.b)?(a=a.b,a.j.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}l.Ma=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};l.La=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Ke(this);this.V=this.Ia=0;this.wa=null;this.K=0;this.P=V(this.b.i[7]);this.j.ea=!1;Ye(this);a||this.ta()};
|
|
l.save=function(){var a=new L(this);a.set(0,Se(this.P));a.set(1,Se(this.X));a.set(2,[this.w,this.Y,this.da]);a.set(3,this.H);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.P=Te(a[b++]),this.X=Te(a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.Y=a[b][1],this.da|=a[b][2]);a[3]&&(this.H=a[3]);return!0};l.start=function(a,b){this.aa||this.g("running");this.j.ea=!0;this.Mc=a;this.Oc=b};
|
|
l.stop=function(a,b){if(this.j.ea){this.j.ea=!1;this.K=b-this.Oc;if(!this.aa){b="stopped";if(this.K){a-=this.Mc;var d=0<a?Math.round(1E3*this.K/a):0;b+=" (";qd(this)&&(b+=this.V+" opcodes, ",this.Ia-=this.V,this.V=0);b+=this.K+" cycles, "+a+" ms, "+d+" hz)"}else mb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.g(b)}this.ta(!0);this.Xb();Ye(this,this.b.i[7])}};function qd(a){return 1<a.f.length||!!a.va}
|
|
function rd(a,b,d){var c=a.b;if(0<d&&(a.va&&!--a.va||uc(a,b,1,a.f)))return!0;0<=d&&a.oa.length&&(a.V++,null!=Jb(a.C,b)&&(b=a.O[a.pa],b.A=c.i[7],b.Da=!1,++a.pa==a.O.length&&(a.pa=0)));return!1}function Je(a){var b,d;a.f=["bp"];if(a.R)for(b=1;b<a.R.length;b++){d=a.R[b];var c=a.C;d=a.W(d);vc(c.L[d>>>c.S],!1)}a.R=["br"];if(a.F)for(b=1;b<a.F.length;b++)d=a.F[b],c=a.C,d=a.W(d),vc(c.L[d>>>c.S],!0);a.F=["bw"];a.Hb=0}
|
|
l.gb=function(a,b,d){var c=!0;d||Ze(this,a,b,!1,!0);if(a!=this.f){var f=this.W(b);if(-1===f)this.g("invalid address: "+T(this,b.A)),c=!1;else{var e=this.C;e.L[f>>>e.S].gb(f&e.f,a==this.F)}}c&&(a.push(b),d?b.Da=!0:($e(this,a,a.length-1,"set"),Ke(this)));return c};function Ze(a,b,d,c,f){var e=!1;d=a.W(d);for(var g=1;g<b.length;g++){var h=b[g];if(d==a.W(h)&&(!c||h.Da)){e=!0;h.Da||f||$e(a,b,g,"cleared");b.splice(g,1);b!=a.f&&(c=a.C,vc(c.L[d>>>c.S],b==a.F));h.Da||Ke(a);break}}return e}
|
|
function af(a,b){for(var d=1;d<b.length;d++)$e(a,b,d);return b.length-1}function $e(a,b,d,c){d=b[d];a.g(b[0]+" "+T(a,d.A)+(c?" "+c:d.Dc?' "'+d.Dc+'"':""))}function Ye(a,b){if(void 0!==b)uc(a,b,1,a.f,!0),a.aa=0;else for(b=1;b<a.f.length;b++){var d=a.f[b];if(d.Da){if(!Ze(a,a.f,d,!0))break;b=0}}}
|
|
function uc(a,b,d,c,f){var e=!1;if(!a.Hb++)for(var g=1;!e&&g<c.length;g++){var h=c[g];if(!f||h.Da)for(var k=a.W(h),m=0;m<d;m++)if(b+m==k){var n,e=!0;h.Da&&(Ze(a,c,h,!0),f=!0);if(n=h.Ic){for(var e=!1,q=0;q<n.length;q++)if(!bf(a,n[q],!0)){if(n[q].indexOf("if")){e=!0;break}for(var p=q+1;p<n.length&&n[p].indexOf("else");p++)q++;if(p==n.length){e=!0;break}}a.b.j.ea||(e=!0)}if(e){f||$e(a,c,g,"hit");break}}}a.Hb--;return e}
|
|
function cf(a,b,d,c){var f=V(b.A),e=a.Ea(b,2),g,h;for(h in a.Zb)if(g=a.Zb[h][e&h])break;g||(g=[0]);h="";for(var k=Oe[g[0]],m=g.length-1,n=1;n<=m;n++){var q=g[n];if(void 0!==q){var p;p=a;var z=q,q=b,x="",A=z&61440;if(4096==A)q=q.A+((e&255)<<24>>23)&65535,x=T(p,q);else if(8192==A)q=q.A-((e&63)<<1)&65535,x=T(p,q);else if(12288==A)x=T(p,e&7,2);else if(24576==A)x=T(p,e&63);else if(A=e&z,z&4032&&(A>>=6,z>>=6),z&63)switch(z=A&7,A&56){case 0:x=X(z);break;case 8:x="@"+X(z);break;case 16:7>z?x="("+X(z)+")+":
|
|
(A=p.Ea(q,2),x="#"+T(p,A));break;case 24:7>z?x="@("+X(z)+")+":(A=p.Ea(q,2),x="@#"+T(p,A));break;case 32:x="-("+X(z)+")";break;case 40:x="@-("+X(z)+")";break;case 48:A=p.Ea(q,2);x=T(p,A)+"("+X(z)+")";7==z&&(x=[x,T(p,A+q.A&65535)]);break;case 56:A=p.Ea(q,2),x="@"+T(p,A)+"("+X(z)+")",7==z&&(x=[x,T(p,A+q.A&65535)])}p=x;if(!p||!p.length){h="INVALID";break}"string"!=typeof p&&(d=p[1],c=null,p=p[0]);0<h.length&&(h+=",");h+=p||"???"}}e="";g=T(a,f.A)+":";if(-1!==f.A&&-1!==b.A){do if(e+=" "+T(a,a.Ea(f,2)),
|
|
null==f.A)break;while(f.A!=b.A)}g+=ka(e,24);g+=ka(k,5);h&&(g+=" "+h);d&&(g=ka(g,60)+";"+d,g=a.b.j.qb?g+("cycles="+Rc(a.b).toString()+" cs="+r(a.b.Ob)):g+(null!=c?"="+c.toString():""));return g}function df(a,b){switch(b){case "N":a=cd(a.b);break;case "Z":a=bd(a.b);break;case "V":a=ad(a.b);break;case "C":a=a.b.ha&65536?1:0;break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function X(a){return 6>a?"R"+a:6==a?"SP":"PC"}
|
|
function ef(a,b){var d="",c=a.b;8>b?(d=X(b),d+="="+T(a,c.i[b])):13>b?d="A"+(b-8)+"="+T(a,c.ab[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+T(a,c.Pa[b-16]):20==b&&(d="PS="+T(a,Xb(c)));d&&(d+=" ");return d}function ff(a){var b,d="";for(b=0;6>b;b++)d+=ef(a,b);d=d+"\n"+(ef(a,6)+ef(a,7)+ef(a,20));return d+=df(a,"T")+df(a,"N")+df(a,"Z")+df(a,"V")+df(a,"C")}l.vc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
|
function gf(a,b,d){var c=[],f=a.W(b)>>>0;for(b=0;b<a.H.length;b++){var e=a.H[b],g=e.A>>>0,h=e.Uc;if(f>=g&&f<g+h){f=na(e.sc,[f-g],a.vc);0<=f?hf(a,b,f,c):d&&(f=~f,hf(a,b,f-1,c),hf(a,b,f,c));break}}return c}function hf(a,b,d,c){var f={},e=a.H[b].sc,g=0,h=null;0<=d&&d<e.length&&(g=e[d][0],h=e[d][1]);h&&(f=a.H[b].Ja[h],h="."==h.charAt(0)?null:f.l||h);c.push(h);c.push(g);c.push(f.a);c.push(f.c)}
|
|
function jf(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return He(a)||a.g("no variables"),!0;if(!d[2])return He(a,d[1]);if(!d[3])return delete a.fa[d[1]],!0;b=De(a,d[3]);return void 0!==b?(a.fa[d[1]]=b,!0):!1}a.g("invalid assignment:"+b);return!1}
|
|
function kf(a,b,d){var c=null;if(b=W(a,b,!0)){a.W(b);var f=gf(a,b,!0);if(f.length){var e,g;f[0]&&(g="",(e=b.A-f[1])&&(g=" + "+r(e,4,!0)),e=f[0]+" ("+T(a,f[1])+")"+g,d&&a.g(e),c=e);4<f.length&&f[4]&&(g="",(e=f[5]-b.A)&&(g=" - "+r(e,4,!0)),e=f[4]+" ("+T(a,f[5])+")"+g,d&&a.g(e),c||(c=e))}else d&&a.g("no symbols")}return c}
|
|
function We(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.b;null==d&&(d=!0);if(b&&1<b.length){var f=b[1],e=f.indexOf("=");if(0<e)b=f.substr(e+1),f=f.substr(0,e);else if(2<b.length)b=b[2];else{a.g("missing value for "+b[1]);return}var e=!1,g=De(a,b);if(void 0!==g)switch(e=!0,f.toUpperCase()){case "PC":c.i[7]=g;a.P=V(c.i[7]);break;case "NF":c.xa=g?32768:0;break;case "ZF":c.za=g?0:1;break;case "VF":c.ya=g?32768:
|
|
0;break;case "CF":c.ha=g?65536:0;break;default:a.g("unknown register: "+f);return}if(!e){a.g("invalid value: "+b);return}K(c);a.g("updated registers:")}a.g(ff(a));d&&(a.P=V(c.i[7]),Xe(a,T(a,a.P.A)))}}function lf(a,b){b=la(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):De(a,b,!0)}function mf(a,b,d){var c="t"!=b;d=Fe(a,d,null,!0)||1;var f=1==d?0:1;"tc"==b&&(f=d,d=1);Aa(d,function(){return nb(a,!0)&&a.zb(f,c,!1)},function(){K(a.b);nb(a,!1)})}
|
|
function Xe(a,b,d,c){if(b=W(a,b,!0)){void 0===c&&(c=1);var f=256;if(void 0!==d){c=W(a,d,!0);if(!c||c.A<b.A)return;f=c.A-b.A;if(256<f){a.g("range too large");return}c=-1}d=0;for(var e;0<f&&c--;){e=ob(a,!1)||a.aa?a.K:null;var g=null!=e?"cycles":null,h=gf(a,b),k=b.A;if(h[0]&&c&&(!d&&c||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.g(m)}h[3]&&(g=h[3],e=null);e=cf(a,b,g,e);a.g(e);a.P=b;f-=b.A-k;d++}}}
|
|
function bf(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.g(">> "+b):(a.Y&&(a.g("ended assemble at "+T(a,a.X.A)),a.P=a.X,a.Y=!1),b="");var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.wa=null;if(pb(a)&&0<b.length){a.Y&&(b="a "+T(a,a.X.A)+" "+b);var e=b.replace(/ +/g," ").split(" ");if(e&&e.length)for(var g=e[0],h=g.charAt(0),k=1;k<g.length;k++){var m=g.charAt(k);if("?"==h||"r"==h||"a">m||"z"<m){e[0]=g.substr(k);e.unshift(g.substr(0,k));break}}switch(e[0].charAt(0)){case "a":var n=W(a,e[1],!0);if(n)if(a.X=
|
|
n,void 0===e[2])a.g("begin assemble at "+T(a,n.A)),a.Y=!0,K(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var p=0;p<q.length;p++)a.gc(n,q[p],1);a.g(cf(a,a.X))}}break;case "b":a:{var z=e[0],x=e[1],A=b;if("?"==x)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 qa=z.charAt(1);if("l"==qa){var yc;yc=0+af(a,a.f);yc+=af(a,a.R);(yc+=af(a,a.F))||a.g("no breakpoints")}else if("n"==qa)a.va=Fe(a,x),a.g("break after "+a.va+" instruction(s)");else if(void 0===x)a.g("missing breakpoint address");else{var M=V();if("*"!=x&&(M=W(a,x,!0),!M))break a;"c"==qa?null==M.A?(Je(a),a.g("all breakpoints cleared")):Ze(a,a.f,M)||Ze(a,a.R,M)||Ze(a,a.F,M)||a.g("breakpoint missing: "+T(a,M.A)):null!=M.A&&(Ue(a,M,A),"p"==qa?a.gb(a.f,M):"r"==qa?a.gb(a.R,M):"w"==qa?a.gb(a.F,M):
|
|
a.g("unknown breakpoint command: "+qa))}}}break;case "c":a.hb&&(a.hb.value="");break;case "d":a:{var Ca,Da=e[0],Y=e[1],ra=e[2],Ff=e[3];if("?"==Y){var Ea="";for(Ca in F)a.Ta[Ca]&&(Ea&&(Ea+=","),Ea+=Ca);Ea+=",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");Ea.length&&a.g("dump extension commands:\n\t"+
|
|
Ea)}else if("state"==Y){var Ud=nf(a.u,!0);"console"==ra?console.log(Ud):(a.hb&&(a.hb.value=""),a.g(Ud))}else if("symbols"==Y)for(var zc=0;zc<a.H.length;zc++){var Ac=a.H[zc],Fa;for(Fa in Ac.Ja)if("."!=Fa.charAt(0)){var Vd=Ac.Ja[Fa].o;if(void 0!==Vd){var Wd=Ac.Ja[Fa].l;Wd&&(Fa=Wd);a.g(T(a,Vd)+" "+Fa)}}}else{if("d"==Da){for(Ca in F)if(e[1]==Ca){var Xd=a.Ta[Ca];Xd?(e.shift(),e.shift(),Xd(e)):a.g("no dump registered for "+Y);break a}Y||(Da=a.Sc||"db")}else a.Sc=Da;if("dh"==Da){var Yd=Y,Zd=ra,$d="",ae=
|
|
0,U=a.pa,Z=a.O;if(Z.length){var Q=+Yd||a.Jb,ab=+Zd||10;isNaN(Q)?Q=ab:$d="more ";Q>Z.length&&(a.g("note: only "+Z.length+" available"),Q=Z.length);U-=Q;0>U&&(null==Z[Z.length-1].A?(Q=U+Q,U=0):U+=Z.length);var Bc=[];"call"==Zd&&(ab=1E5,Bc=["CALL"]);for(void 0!==Yd&&a.g(Q+" instructions earlier:");0<ab&&U!=a.pa;){var be=Z[U++];if(null==be.A)break;var bb=V(be.A),Gf=Q--,ce=cf(a,bb,"history",Gf);(!Bc.length||0<=ce.indexOf(Bc[0]))&&a.g(ce);bb.jc&&(U+=bb.jc,ab-=bb.jc,Q-=bb.jc);U>=Z.length&&(U=0);a.Jb=Q;ae++;
|
|
ab--}}ae||(a.g("no "+$d+"history available"),a.Jb=void 0)}else{var Kb=W(a,Y);if(Kb){var Lb=0;ra&&("l"==ra.charAt(0)&&(ra=ra.substr(1)||Ff),Lb=Fe(a,ra)>>>0,65536<Lb&&(Lb=65536));for(var cb="",Ga="dd"==Da?4:"dw"==Da?2:1,Mb=Ga*Lb||128,Hf=Mb+15>>4||1;Hf--&&0<Mb;){var db=0,Cc=0,eb,Dc="",de="",Y=T(a,Kb.A);for(eb=4==Ga?16:a.$;0<eb&&0<Mb;eb--){var Nb=a.Lb(Kb,1),db=db|Nb<<(Cc++<<3);Cc==Ga&&(Dc+=8==a.$?da(db,3*Ga):r(db,2*Ga),Dc+=1==Ga?9==eb?"-":" ":" ",db=Cc=0);de+=32<=Nb&&128>Nb?String.fromCharCode(Nb):".";
|
|
Mb--}cb&&(cb+="\n");cb+=Y+" "+Dc+(0==eb?" "+de:"")}cb&&a.g(cb);a.Cb=Kb}}}}break;case "e":if("else"==e[0])break;var Ob=1,ee=255,fe=a.Lb,ge=a.gc;"ew"==e[0]&&(Ob=2,ee=65535,fe=a.Ea,ge=a.oc);var he=Ob<<1,ie=e[1];if(null==ie)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 Pb=W(a,ie);if(Pb)for(var Qb=2;Qb<e.length;Qb++){var fb=De(a,e[Qb]);if(void 0===fb){a.g("unrecognized value: "+e[Qb]);break}fb&~ee&&a.g("warning: "+r(fb)+
|
|
" exceeds "+Ob+"-byte value");var If=fe.call(a,Pb);a.g("changing "+T(a,Pb.A)+" from "+r(If,he,!0)+" to "+r(fb,he,!0));ge.call(a,Pb,fb,Ob)}}break;case "g":a:{var je=e[1],Jf=b;if(void 0!==je){var Ec=W(a,je,!0);if(!Ec)break a;Ue(a,Ec,Jf);a.gb(a.f,Ec,!0)}a.nb(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var Fc;if(a.j.ea)Fc="halting",a.ka();else{if(ob(a,!0))break a;Fc="already halted"}d||a.g(Fc)}break;case "i":if("if"==e[0]){var Gc;var gb=b.substr(2),gb=la(gb);De(a,gb)?
|
|
(d||a.g("true: "+gb),Gc=!0):(d||a.g("false: "+gb),Gc=!1);Gc||(c=!1)}break;case "k":var Kf=e[0];if("?"==e[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var Hc=0,ke=V(),hb=V(a.b.i[6]);for(a.g("stack trace for "+T(a,hb.A));10>Hc;){for(var sa=null,Lf=256;65536>hb.A>>>0;){ke.A=a.Ea(hb,2);if(null==hb.A||!Lf--)break;for(var Mf=a,Rb=ke,le=null,ib=Rb.A,me=ib,Ic=1;6>=Ic&&ib;Ic++){if(2<Ic){Rb.A=ib;var Sb=cf(Mf,Rb);if(0<=Sb.indexOf("JSR")){var ne=Sb.indexOf(" ");
|
|
if(ib+(Sb.indexOf(" ",ne+1)-ne-1)/2==me){le=Sb;break}}}ib--}Rb.A=me;if(sa=le)break}if(!sa||null==sa)break;var oe=null;if("ks"==Kf){var pe=sa.match(/[0-9A-F]+$/);pe&&(oe=kf(a,pe[0]))}sa=ka(sa,50)+" ;"+(oe||"stack="+T(a,hb.A));a.g(sa);Hc++}Hc||a.g("no return addresses found")}break;case "l":"ln"==e[0]&&kf(a,e[1],!0);break;case "m":a:{var aa,ba=null,B=e[1];"?"==B&&(B=void 0);if(void 0!==B){var ma=0;if("all"==B)ma=1878917119,B=null;else if("on"==B)ba=!0,B=null;else if("off"==B)ba=!1,B=null;else{"keys"==
|
|
B&&(B="key");"kbd"==B&&(B="keyboard");for(aa in F)if(B==aa){ma=F[aa];ba=!!(a.da&ma);break}if(!ma){a.g("unknown message category: "+B);break a}}if(ma)if("on"==e[2])a.da|=ma,ba=!0;else if("off"==e[2]&&(a.da&=~ma,ba=!1,1073741824==ma)){for(var Jc=0;Jc<a.Ha.length;Jc++)a.g(a.Ha[Jc]);a.Ha=[]}}var Nf=0,jb="";for(aa in F)if(!B||B==aa){var Of=!!(a.da&F[aa]);if(null===ba||ba==Of)jb&&(jb+=","),++Nf%10||(jb+="\n\t"),"key"==aa&&(aa="keys"),jb+=aa}void 0===B&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
|
a.g((null!==ba?ba?"messages on: ":"messages off: ":"message categories:\n\t")+(jb||"none"));Ke(a)}break;case "p":if("print"==e[0]){lf(a,b.substr(5));break}var Pf="pr"==e[0]?1:0;if(a.aa)a.g("step in progress");else{var qe=V(a.b.i[7]);a.Lb(qe);a.aa?(a.gb(a.f,qe,!0),a.nb()||(a.u&&a.u.Xb(),a.aa=0)):mf(a,Pf?"tr":"t")}break;case "r":if("reset"==b){a.u&&a.u.reset();break}We(a,e);break;case "s":a:switch(e[1]){case "base":if(e[2]){var kb=+e[2];if(8==kb||10==kb||16==kb)a.$=kb;else{a.g("invalid base: "+kb);
|
|
break}}a.g("default base: "+a.$);break;case "cs":var lb;void 0!==e[3]&&(lb=+e[3]);switch(e[2]){case "int":a.b.tb=lb;break;case "start":a.b.Pb=lb;break;case "stop":a.b.ub=lb;break;default:a.g("unknown cs option");break a}void 0!==lb&&Pc(a.b);a.g("checksums "+(a.b.j.qb?"enabled":"disabled"));break;case "sp":void 0!==e[2]&&(Tc(a.b,+e[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.jb.toFixed(2)+"Mhz")+" ("+a.b.lb+"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:e[1]&&a.g("unknown option: "+e[1])}break;case "t":mf(a,e[0],e[1]);break;case "u":Xe(a,e[1],e[2],8);break;case "v":if("var"==e[0]){jf(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.b.Xc+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+
|
|
")");a.g(window?window.navigator.userAgent:"");break;case "?":if(e[1]){lf(a,b.substr(1));break}var Kc="commands:",Lc;for(Lc in Ne)Kc+="\n"+ka(Lc,9)+Ne[Lc];qd(a)||(Kc+="\nnote: history disabled if no exec breakpoints");a.g(Kc);break;default:a.g("unknown command: "+b),c=!1}}}catch(re){a.g("debugger error: "+(re.stack||re.message)),c=!1}return c}function Me(a,b,d){b=Be(a,b,d);for(var c in b)if(!bf(a,b[+c]))return!1;return!0}
|
|
Ma(function(){for(var a=C(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=y(d),c=new Ie(c);$a(c,d)}});
|
|
function of(a,b,d){u.call(this,"Computer",a,of,67108864);this.j.ca=!1;pf(this,b);this.R=Nc(this,"autoPower",a);this.w=0;this.aa=a.busWidth||a.buswidth;this.f=qf;this.O=null;this.H=this.Y=!1;this.url=Nc(this,"url")||"";(Math.random()+.1).toString(36);this.u=rf(this);if(this.b=Za("CPU",this.id)){this.D=Za("Debugger",this.id);this.C=new zb({id:this.tc+".bus",busWidth:this.aa},this.b,this.D);var c,f=Ya(this.id);if((this.B=Za("Panel",this.id))&&this.B.hb)for(b=0;b<f.length;b++)c=f[b],c.ma=this.B.ma,c.g=
|
|
this.B.g,c.hb=this.B.hb;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<f.length;b++)c=f[b],c.Za&&c.Za(this,this.C,this.b,this.D);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.K=c:this.f=parseInt(c,10));var e;if(a=Nc(this,"state")||(e=!0,a.state))b=this.V=a,e||(this.H=!0,this.f=qf),this.f&&
|
|
(this.P=new L(this,"1.30.0"),sf(this.P)?b=null:delete this.P);!b&&this.f&&(b=tf(this))&&(this.H=!0);if(b){var g=this;ta(b,null,!0,function(a,b,c){c?(g.K=null,g.H=!1,g.ma("Unable to load machine state from server (error "+c+(b?": "+la(b):"")+")")):(g.O=b,g.Y=!0);D(g)})}else D(this);this.J.power||(this.R=!0);!d&&this.R&&uf(this,this.Qb)}else t("Unable to find CPU component")}w(of);var qf=0;
|
|
function pf(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){t(c.message+" ("+d+")")}}a.$=b}function Nc(a,b,d){var c=b.toLowerCase(),c=Ra[b]||Ra[c];void 0===c&&a.$&&(c=a.$[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function uf(a,b,d){for(var c=Ya(a.id),f=0;f<=c.length;f++){var e=f<c.length?c[f]:a;if(!pb(e)){pb(e,function(){uf(a,b,d)});return}}b.call(a,d)}
|
|
function vf(a,b){var d=new L(a,"1.30.0","validate");if(sf(d)&&wf(d)){var c=d.get("timestamp"),f=b?b.get("timestamp"):"unknown";c!=f&&(a.ma("Machine state may be out-of-date\n("+c+" vs. "+f+")\nCheck your browser's local storage limits"),b||d.clear())}}l=of.prototype;
|
|
l.Qb=function(a){void 0===a&&(a=this.f||(this.O?1:qf));if(!this.w){this.w++;var b=!1,d=!1;this.X=!1;var c=this.P||new L(this,"1.30.0");if(-1==a)b=!0;else if(a>qf){if(sf(c,this.O)){this.F=new L(this,"1.30.0","failsafe");sf(this.F)&&(xf(this,c),a=2,yf(this.F));this.F.set("timestamp",pa());zf(this.F);var f=this.f&&!this.H;if(1==a||ua("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=wf(c)){var e=c.get("code"),g=c.get("data");e&&("ok"==e?sf(c,g):("error"==
|
|
e&&"no machine state"!=g?(this.ma("Error: "+g),"unable to verify user"==g&&(ya("user",""),this.u=null)):this.g(e+": "+g),yf(c),sf(c)?(d=wf(c),f=!0):d=!1))}f&&vf(this,d?c:null)}else 2==a&&c.clear()}else vf(this);delete this.O;delete this.P}f=Ya(this.id);for(e=0;e<f.length;e++)g=f[e],g!==this&&g!=this.b&&(d=Af(this,g,c,b,d));b=[c,a,d];-1!=a?uf(this,this.xc,b):this.xc(b)}};
|
|
function Af(a,b,d,c,f){if(!b.j.ca){b.j.ca=!0;if(b.Ma){var e=null;f&&((e=d.get(b.id))||(e=d.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Ma(e,c)&&e&&(t("Unable to restore state for "+b.type),a.V&&!a.Y?(d.clear(),a.f=qf,window&&window.location.reload()):a.X=!0,b.Ma(null),f=!1)}if(!c&&b.rc)for(a=b.rc.split("|"),d=0;d<a.length;d++)b.status(a[d])}return f}
|
|
l.xc=function(a){var b=a[0],d=0>a[1];a=a[2];this.fa=!0;this.j.ca=!0;var c=this.J.power;c&&(c.textContent="Shutdown");this.b&&(Af(this,this.b,b,d,a),this.b.Gb());this.X&&(xf(this,b),b.clear());!d&&this.F&&(this.F.clear(),delete this.F);this.w=0};
|
|
function xf(a,b){if(ua("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.u||"";b=b.toString();var c={app:"PDP11js",ver:"1.30.0"};c.url=a.url;c.user=d;c.type="bug";c.data=b;ta("http://www.pcjs.org/api/v1/report",c,!0)}}
|
|
function nf(a,b,d){var c,f="none";if(a.w)return null;a.w--;var e=new L(a,"1.30.0"),g=new L(a,"1.30.0","validate"),h=pa();g.set("timestamp",h);e.set("timestamp",h);e.set("version","1.30.0");e.set("url",window?window.location.href:null);e.set("browser",window?window.navigator.userAgent:"");a.b&&a.b.La&&(d&&a.b.ka(),c=a.b.La(b,d),"object"===typeof c&&e.set(a.b.id,c),d&&(a.b.j.ca=!1,!1===c&&(f=null)));for(var h=Ya(a.id),k=0;k<h.length;k++){var m=h[k];m.j.ca&&(m.La&&(c=m.La(b,d),"object"===typeof c&&e.set(m.id,
|
|
c)),d&&(m.j.ca=!1,!1===c&&(f=null)))}f&&(d?(h=c=!1,b?(a.u&&Bf(a,a.u,e.toString()),zf(g)&&zf(e)||(f=null,c=h=!0)):a.f&&(c=!0,h=3==a.f),c&&e.clear(h)):f=e.toString());d&&(a.j.ca=!1,b=a.J.power)&&(b.textContent="Power");a.w=0;return f}
|
|
l.reset=function(){this.C&&this.C.reset&&(this.D&&mb(this,0)&&this.D.message("Resetting "+this.C.type,void 0),this.C.reset());for(var a=Ya(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.C&&d.reset&&(this.D&&mb(this,0)&&this.D.message("Resetting "+d.type,void 0),d.reset())}};l.start=function(a,b){for(var d=Ya(this.id),c=0;c<d.length;c++){var f=d[c];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
|
l.stop=function(a,b){for(var d=Ya(this.id),c=0;c<d.length;c++){var f=d[c];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
|
l.ra=function(a,b,d){var c=this;switch(b){case "power":return this.J[b]=d,d.onclick=function(){c.w||(c.j.ca?nf(c,!1,!0):uf(c,c.Qb))},!0;case "reset":return this.J[b]=d,d.onclick=function(){if(c.j.ca&&!c.w)if(c.f&&!c.K){var a=ua("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");nf(c,a,!0);!a&&c.V?window&&window.location.reload():c.Qb(qf)}else c.reset(),c.b&&c.b.Gb()},!0;case "save":if(ga())d.parentNode.removeChild(d);else return this.J[b]=
|
|
d,d.onclick=function(){var a=rf(c,!0);if(a){var b=!!(c.f&&!c.K||c.V),d=nf(c,b);b?Bf(c,a,d):c.ma("Resume disabled, machine state not saved")}},!0}return!1};
|
|
function rf(a,b){var d=a.u;d||((d=xa("user"),void 0!==d)?!d&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),d=b)&&((d=Cf(a,d))||a.ma("The user ID is invalid.")):b&&a.ma("Browser local storage is not available"));return d}
|
|
function Cf(a,b){a.u=null;b=ta(ha()+"/api/v1/user?req=verify&user="+b);var d=b[1];if(!b[0]&&d)try{b=eval("("+d+")"),b.code&&"ok"==b.code&&(ya("user",b.data),a.u=b.data)}catch(c){t(c.message+" ("+d+")")}return a.u}function tf(a){var b=null;a.u&&(b=ha()+"/api/v1/user?req=load&user="+a.u+"&state="+Df(a,"1.30.0"));return b}
|
|
function Bf(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=Df(a,"1.30.0");c.data=d;b=ta(ha()+"/api/v1/user",c);c=b[0];if(b[1]){if(c){var f=c.indexOf("\n");0<f&&(c=c.substr(0,f));c.indexOf("Error: ")||(c=c.substr(7))}c='{"code":'+b[1]+',"data":"'+c+'"}'}b=JSON.parse(c);b&&"ok"==b.code?a.ma("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.ma(d),ya("user",""),a.u=null)}}l.Xb=function(){};
|
|
l.ta=function(a){this.b&&this.b.ta(a);this.B&&this.B.ta(a)};Ma(function(){for(var a=C(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=y(d),d=C(d,"pdp11","computer"),f=0;f<d.length;f++){var e=d[f],g=y(e),g=new of(g,c,!0);$a(g,e);g.R&&uf(g,g.Qb)}});Ha.show.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=y(a[b]);(d=Za("Computer",d.id))&&d.fa&&!d.j.ca&&d.Qb(-1)}});
|
|
Ha.exit.push(function(){for(var a=C(document,"pdp11","computer"),b=0;b<a.length;b++){var d=y(a[b]);(d=Za("Computer",d.id))&&d.j.ca&&nf(d,!(!d.f||d.K),!0)}});function L(a,b,d){this.id=a.id;this.key=Df(a,b,d);this.D=a.D;yf(this,a.Pc)}function Df(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}
|
|
L.prototype={constructor:L,set:function(a,b){try{this[this.id][a]=b}catch(d){}},get:function(a){return this[this.id][a]||null},value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){yf(this);var b=[];try{for(var d=0,c=window.localStorage.length;d<c;d++)b.push(window.localStorage.key(d))}catch(f){}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(f){}b.splice(d,
|
|
1);d=0}}};function yf(a,b){a[a.id]={};b&&a.set("parms",b);a.b=!1}function zf(a){var b=!0;if(wa()){var d=JSON.stringify(a[a.id]);ya(a.key,d)||(t("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function wf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){t(d.message||d),b=!1}return b}function sf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:wa()&&(b=xa(a.key))?(a[a.id]=b,a.b=!0):!1}var Ef=0;
|
|
function Qf(a,b,d,c,f,e){f("Loading "+a+"...");ta(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),e(h,null)):Rf(h,a,b,d,c,f,e)})}
|
|
function Rf(a,b,d,c,f,e,g){function h(a,e){if(e)g(e,null);else{d&&(Xa(d,b,a),(e=b)&&0>e.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(e=window.location.pathname+e),c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{",c+='url:"'+e+'"}',"object"==typeof resources&&(e=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(e?' url="'+e+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
|
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));e=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(e=new window.ActiveXObject("Microsoft.XMLDOM"),e.async=!1,e.loadXML(a)):e=(new window.DOMParser).parseFromString(a,"text/xml")}catch(n){e=null,a=n.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,e)}}a?f?Sf(a,e,h):h(a,null):g("no data"+(b?" for file: "+b:""),null)}
|
|
function Sf(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=c[2];b("Loading "+f+"...");ta(f,null,!0,function(e,g,h){if(h||!g)d(a,"unable to resolve XML reference: "+c[0]+" ("+h+")");else{if(e=c[3])if(h=g.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(e);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{d(a,"missing <"+c[1]+"> in "+f);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
|
"");a=a.replace(c[0],g);Sf(a,b,d)}})}else d(a,null)}
|
|
function Tf(a,b,d,c){function f(a){if(void 0===h){var b=g&&C(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ja(a))}function e(a){f("Error: "+a);k&&(--Ef||Oa(!0));k=!1}var g,h,k=!0;Ef++;Wa[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=m:q.appendChild(document.createTextNode(m));n.appendChild(q)}d||
|
|
(d="/versions/pdp11/1.30.0/components.xsl");m=function(c,h){h?Qf(d,null,null,!1,f,function(c,k){k?(Xa(a,d,c),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Ef||Oa(!0)):e("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(c=new XSLTProcessor,c.importStylesheet(k),(k=c.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Ef||Oa(!0)):e("invalid machine element: "+
|
|
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser")):e(c)}):e(c)};"<"!=b.charAt(0)?Qf(b,a,c,!0,f,m):Rf(b,null,a,c,!1,f,m)}else e("missing machine element: "+a)}catch(p){e(p.message)}return k}window.embedPDP11=function(a,b,d,c){Oa(!1);return Tf(a,b,d,c)};window.enableEvents=Oa;window.sendEvent=Pa;})();
|