|
|
|
|
@ -1,173 +1,174 @@
|
|
|
|
|
(function(){var m;
|
|
|
|
|
function fa(a){var b=16,d;if(a){b||(b=10);var c=a.charAt(0),e=0<a.indexOf(",");e&&(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&&e&&(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 f,c=a;((e=b)&&10!=e?16==e?null!==c.match(/^[0-9a-f]+$/i):8==e?null!==c.match(/^[0-7]+$/):2==
|
|
|
|
|
e&&null!==c.match(/^[01]+$/):null!==c.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(d=f|0)}return d}function p(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 e=a&15,e=e+(0<=e&&9>=e?48:55),c=String.fromCharCode(e)+c;a>>=4}return(d?"0x":"")+c}function r(a){return p(a,4,!0)}function ga(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 ha(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function ka(){var a=la();return-1!==a.indexOf("pcjs.org",a.length-8)}var ma={"&":"&","<":"<",">":">",'"':""","'":"'"};function na(a){return a.replace(/[&<>"']/g,function(a){return ma[a]})}function oa(a,b){return(a+" ").slice(0,b)}function pa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
|
|
|
|
|
function ta(a,b,d){var c=0,e=a.length,f=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<e;){var h=c+e>>1,g;g=d(b,a[h]);0<g?c=h+1:(e=h,f=!g)}return f?c:~c}var ua=Date.now||function(){return+new Date};function va(){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 wa(a,b,d,c){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return c&&c(a,f,e),[f,e];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),c&&c(a,f,e))});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,"+");g.open("POST",a,!!d);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!d),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();d||(f=g.responseText,200!=g.status&&(e=g.status||-1),c&&c(a,f,e),h=[f,e]);return h}function la(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
|
|
|
|
function u(a){window&&window.alert(a)}function xa(a){var b=!1;window&&(b=window.confirm(a));return b}var ya=null;function za(){if(null==ya){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}ya=a}return ya}function Fa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
|
|
|
|
|
function Ga(a,b){try{return window.localStorage.setItem(a,b),!0}catch(d){}return!1}function Ha(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 Ia(a,b,d){function c(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(c,0):d()}c()}
|
|
|
|
|
function Ja(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 Ka={init:[],show:[],exit:[]},La=!1,Ma=!1,Na=!0;function Oa(a,b){if(window){var d=window[a];window[a]="function"!==typeof d?b:function(){d&&d();b()}}}function Pa(a){Ka.init.push(a)}
|
|
|
|
|
function Qa(a){if(Na)try{for(var b=0;b<a.length;b++)a[b]()}catch(d){u(""+("An unexpected exception occurred:\n\n"+d.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function Ra(a){!Na&&a?(Na=!0,La&&Sa("init"),Ma&&Sa("show")):Na=a}function Sa(a){Ka[a]&&Qa(Ka[a])}Oa("onload",function(){La=!0;Qa(Ka.init)});Oa("onpageshow",function(){Ma=!0;Qa(Ka.show)});Oa(Ha("Opera")||Ha("iOS")?"onunload":"onbeforeunload",function(){Qa(Ka.exit)});
|
|
|
|
|
function x(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.kb=b.comment;this.Eb=b;b=this.id.indexOf(".");0>b?this.La=this.id:(this.lb=this.id.substr(0,b),this.La=this.id.substr(b+1));this[a]=d;this.w={ready:!1,Fa:!1,Za:!1,Z:!1,error:!1};this.Xa=null;this.w.error=!1;this.L={};this.I=null;this.$=c||0;z.push(this)}var Ta=void 0,Ua={};
|
|
|
|
|
if(window){Ta||(Ta=window.location.search.substr(1));for(var Va,Wa=/\+/g,Xa=/([^&=]+)=?([^&]*)/g;Va=Xa.exec(Ta);)Ua[decodeURIComponent(Va[1].replace(Wa," "))]=decodeURIComponent(Va[2].replace(Wa," "))}function Ya(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 A(a,b){b||(b=x);a.prototype=Ya(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Za=window.PCjs.Machines||(window.PCjs.Machines={}),z=window.PCjs.Components||(window.PCjs.Components=[])}else Za={},z=[];function $a(a,b,d){Za[a]&&b&&(Za[a][b]=d)}function ab(a){var b,d=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<z.length;b++){var c=z[b];a&&c.id.indexOf(a)||d.push(c)}return d}
|
|
|
|
|
function bb(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<z.length;c++)if(d)d==z[c]&&(d=null);else if(!(a!=z[c].type||b&&z[c].id.indexOf(b)))return z[c]}return null}function C(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){u(d.message+" ("+a+")")}return b}
|
|
|
|
|
function lb(a,b){for(var d=E(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)for(var e=d[c].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=C(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
|
|
|
|
function E(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}
|
|
|
|
|
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,d){switch(b){case "clear":return this.L[b]||(this.L[b]=d,d.onclick=function(a){return function(){a.L.print&&(a.L.print.value="")}}(this)),!0;case "print":return this.L[b]||(this.xa=this.L[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.La)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.La+": "+a)},ea:function(a,b,d){d=d||this.type;b||u((d?d+": ":"")+a)},ra:function(){return this.w.Z=!0},qa:function(a,b){b&&(this.w.Z=!1);return!0}};function mb(a,b){if(a.I){a===a.I?b|=0:b=b||a.$;var d=a.I.$&b;return!!b&&d===b||!!(d&a.I.zb)}return!1}
|
|
|
|
|
function nb(a,b){if(a.w.Za)return a.w.Fa&&(a.w.Fa=!1),a.w.Za=!1;if(a.w.error)return a.g(a.toString()+" error"),!1;a.w.Fa=b;return a.w.Fa}function ob(a,b){a.w.Fa&&(b?a.w.Za=!0:void 0===b&&a.g(a.toString()+" busy"));return a.w.Fa}function F(a){if(!a.w.error&&(a.w.ready=!0,a.w.ready)){var b=a.Xa;a.Xa=null;b&&b()}}function pb(a,b){b&&(a.w.ready?b():a.Xa=b);return a.w.ready}function qb(a,b){a.w.error=!0;a.ea(b)}
|
|
|
|
|
var rb="undefined"!==typeof ArrayBuffer,G={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 sb(a){x.call(this,"Panel",a,sb)}A(sb);m=sb.prototype;m.ha=function(a,b,d,c){return this.A&&this.A.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.ya=function(a,b,d,c){this.A=a;this.H=b;this.f=d;this.I=c};
|
|
|
|
|
m.ra=function(a,b){b||tb();return!0};m.qa=function(){return!0};m.ia=function(){};function tb(){for(var a=!1,b=E(document,"pdp11","panel"),d=0;d<b.length;d++){var c=b[d],e=C(c),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<z.length;h++)if(z[h].id===f){f=z[h];break a}f=null}f||(a=!0,f=new sb(e));lb(f,c);a&&F(f)}}Pa(tb);
|
|
|
|
|
function ub(a,b,d){x.call(this,"Bus",a,ub);this.f=b;this.I=d;this.B=a.busWidth||16;this.G=Math.pow(2,this.B);this.A=this.G-1|0;this.ba=16>=this.B?10:20>=this.B?12:24>=this.B?14:15;this.la=1<<this.ba;this.J=this.la>>2;this.H=this.la-1;this.F=this.G/this.la|0;this.K=this.F-1;a=new H;vb(a,this.I);this.P=Array(this.F);for(b=0;b<this.F;b++)this.P[b]=a;F(this)}A(ub);ub.prototype.reset=function(){};ub.prototype.ra=function(a,b){b||this.reset();return!0};
|
|
|
|
|
function wb(a,b,d,c){for(var e=b,f=d,h=e>>>a.ba;0<f&&h<a.P.length;){var g=a.P[h],k=h*a.la,l=a.la-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==c){if(e+f<=g.D)return g.Va+=g.D-e,g.D=e,!0;if(e>=g.D+g.Va){l=g.size-(e-k);l>f&&(l=f);g.Va=e-g.D+l;e=k+a.la;f-=l;h++;continue}}return xb(1,e,f)}e=new H(e,l,a.la,c);vb(e,a.I,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(d/1024)+"Kb "+yb[c]+" at "+r(b)),!0):xb(2,b,d)}
|
|
|
|
|
function zb(a,b){var d=b&a.H,c=(b&a.A)>>>a.ba;return d!=a.H?a.P[c].ub(d,b):a.P[c++].Ta(d,b)|a.P[c&a.K].Ta(0,b+1)<<8}function xb(a,b,d){u("Memory block error ("+a+": "+p(b)+","+p(d)+")");return!1}var Ab;if(rb){var Mb=new ArrayBuffer(2);(new DataView(Mb)).setUint16(0,256,!0);Ab=256===(new Uint16Array(Mb))[0]}else Ab=!1;var Nb=Ab;
|
|
|
|
|
function H(a,b,d,c){this.id=Ob+=2;this.f=null;this.D=a;this.Va=b;this.size=d||0;this.type=c||Pb;this.J=c==Qb;vb(this);this.ua=this.Bb=!1;if(d)if(rb)this.F=new ArrayBuffer(d),this.G=new DataView(this.F,0,d),this.H=new Uint8Array(this.F,0,d),this.N=new Uint16Array(this.F,0,d>>1),this.f=new Int32Array(this.F,0,d>>2),Rb(this,Nb?Sb:Tb);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;Rb(this,Ub)}else Rb(this)}var Pb=0,Qb=2,yb=["NONE","RAM","ROM","VID","H/W"],Ob=0;
|
|
|
|
|
H.prototype={constructor:H,parent:null,save:function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.G.getInt32(b<<2,!0);else a=this.f;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.G.setInt32(b<<2,a[b],!0);else this.f=a;return this.ua=!0}return!1},wa:function(a,b){b?0===this.A++&&Vb(this,Wb,!1):0===this.L++&&Xb(this,Wb,!1)},O:function(){this.I&&mb(this.I,129)&&this.I.message("attempt to read invalid block %"+p(this.D),!0);
|
|
|
|
|
return 255},B:function(a,b){this.I&&mb(this.I,129)&&this.I.message("attempt to write "+r(b)+" to invalid block %"+p(this.D),!0)},X:function(a,b){return this.K(a++,b++)|this.K(a,b)<<8},sa:function(a,b,d){this.M(a++,b&255,d++);this.M(a,b>>8,d)},U:function(a){return this.f[a>>2]>>>((a&3)<<3)&255},da: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},ka:function(a,b){var d=a>>2,c=(a&3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.ua=!0},ta: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},S:function(a,b){if(this.I&&null!=this.D){var d=this.I;Yb(d,this.D+a,1,d.R)&&d.ca(!0)}return this.Ta(a,b)},W:function(a,b){if(this.I&&null!=this.D){var d=this.I;Yb(d,this.D+a,2,d.R)&&d.ca(!0)}return this.ub(a,b)},ga:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;Yb(c,this.D+a,1,c.J)&&c.ca(!0)}this.J?this.B(a,b,d):this.Ka(a,b,d)},na:function(a,b,d){if(this.I&&
|
|
|
|
|
null!=this.D){var c=this.I;Yb(c,this.D+a,2,c.J)&&c.ca(!0)}this.J?this.B(a,b,d):this.wb(a,b,d)},R:function(a){return this.H[a]},T:function(a){return this.H[a]},V:function(a){return this.G.getUint16(a,!0)},Y:function(a){return a&1?this.H[a]|this.H[a+1]<<8:this.N[a>>1]},fa:function(a,b){this.H[a]=b;this.ua=!0},ja:function(a,b){this.H[a]=b;this.ua=!0},ma:function(a,b){this.G.setUint16(a,b,!0);this.ua=!0},La:function(a,b){a&1?(this.H[a]=b,this.H[a+1]=b>>8):this.N[a>>1]=b;this.ua=!0}};
|
|
|
|
|
function vb(a,b,d){a.I=b;a.L=a.A=0;d&&((a.L=d.L)&&Xb(a,Wb,!1),(a.A=d.A)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.A&&(a.M=a.J?a.B:a.Ka):0===--a.L&&(a.K=a.Ta)}function Vb(a,b,d){d&&a.A||(a.M=!a.J&&b[2]||a.B);if(d||void 0===d)a.Ka=b[2]||a.B,a.wb=b[3]||a.sa}function Xb(a,b,d){d&&a.L||(a.K=b[0]||a.O);if(d||void 0===d)a.Ta=b[0]||a.O,a.ub=b[1]||a.X}function Rb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
|
|
|
|
|
var $b=[],Ub=[H.prototype.U,H.prototype.da,H.prototype.ka,H.prototype.ta],Wb=[H.prototype.S,H.prototype.W,H.prototype.ga,H.prototype.na];if(rb)var Tb=[H.prototype.R,H.prototype.V,H.prototype.fa,H.prototype.ma],Sb=[H.prototype.T,H.prototype.Y,H.prototype.ja,H.prototype.La];
|
|
|
|
|
function ac(a,b){x.call(this,"CPU",a,ac,1);var d=a.multiplier||1;this.Na=a.cycles||b;this.Aa=d;this.ta=Math.round(this.Na/1E4)/100;this.za=this.ta*this.Aa;this.w.aa=!1;this.w.bb=!1;this.w.Ma=a.autoStart;this.w.hb=!1;this.w.Ga=!1;this.Qa=this.X=0;this.Ra=a.csStart;this.Ha=a.csInterval;this.Ia=a.csStop;this.ja=[];this.Db=this.Ca.bind(this);F(this)}A(ac);var bc=["power","reset"];m=ac.prototype;
|
|
|
|
|
m.ya=function(a,b,d,c){this.A=a;this.H=b;this.I=c;for(b=0;b<bc.length;b++)(d=this.L[bc[b]])&&this.A.ha(null,bc[b],d);this.fa=null;a=cc(a,"autoStart");null!=a&&(this.w.Ma="true"==a?!0:"false"==a?!1:!!a);F(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
|
|
|
|
m.ra=function(a,b){if(!b){if(a&&this.restore){dc(this);if(!this.restore(a))return!1;ec(this)}else this.reset();if(this.I){var d=this.I;d.g("Type ? for help with PDP11 Debugger commands");d.ia();if(d.na){var c=d.na;d.na=null;fc(d,c)}}else this.g("No debugger detected")}I(this);return!0};m.qa=function(a){return a?this.save():!0};m.Ma=function(){return this.w.Ma||!this.I&&void 0===this.L.run?(this.Ca(!0),!0):!1};m.mb=function(){return 0};
|
|
|
|
|
function ec(a){void 0===a.Ra&&(a.Ra=0);void 0===a.Ha&&(a.Ha=-1);void 0===a.Ia&&(a.Ia=-1);a.w.Ga=0<=a.Ra&&0<a.Ha;a.w.Ga&&(a.Qa=0,a.X=a.Ra-a.U)}function gc(a,b){if(a.w.Ga){var d=!1;a.Qa=a.Qa+a.mb()|0;a.X-=b;0>=a.X&&(a.X+=a.Ha,d=!0);0<=a.Ia&&a.Ia<=hc(a)&&(a.Ha=a.Ia=-1,ec(a),a.ca(),d=!0);d&&a.g(hc(a)+" cycles: checksum="+p(a.Qa))}}
|
|
|
|
|
function ic(a,b,d,c){a.L[b]&&(void 0===d&&(qb(a,"Value for "+b+" is invalid"),a.ca()),d=!a.w.aa||a.w.hb?p(d,c):"--------".substr(0,c),a.L[b].textContent!=d&&(a.L[b].textContent=d))}
|
|
|
|
|
m.ha=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.L[b]=d;a=!0;break;case "run":this.L[b]=d;d.onclick=function(){var a;if(a=c.A)if(a=c.A,a.w.Z)a=!0;else{var b=null,d,g=ab(a.id);for(d=0;d<g.length&&(b=g[d],b===a||b.w.ready);d++);if(d==g.length)for(d=0;d<g.length&&(b=g[d],b===a||b.w.Z);d++);d==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.w.ready?"powered yet":"ready yet"+(b.Xa?" (waiting for notification)":""))+".");a=!1}a&&(c.w.aa?c.ca():c.Ca())};a=
|
|
|
|
|
!0;break;case "speed":this.L[b]=d;a=!0;break;case "setSpeed":this.L[b]=d,d.onclick=function(){jc(c,c.Aa<<1,!0)},d.textContent=this.za.toFixed(2)+"Mhz",a=!0}return a};function kc(a,b,d){a.U+=b;d&&(a.T=a.O=0)}function lc(a,b){var d=1;b&&1<a.Aa&&a.R&&(d=a.R/a.ta);a.qb=Math.round(1E3/30);a.na=Math.floor(a.Na/30*d);b||(a.Y=a.na);a.Oa=0}function hc(a){return a.U+a.N+a.T-a.O}function dc(a){a.R=0;a.rb=0;a.U=a.N=a.T=a.O=0;ec(a);jc(a,1)}
|
|
|
|
|
function jc(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.za?b=1:c=!0;a.Aa=b;b=a.ta*a.Aa;if(a.za!=b){a.za=b;b=a.za.toFixed(2)+"Mhz";var e=a.L.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}d&&a.A&&a.A.Ua()}kc(a,a.N);a.N=0;a.M=ua();a.S=0;lc(a);return c}function yc(a){a.T-=a.O;a.O=0}
|
|
|
|
|
m.Ca=function(a){if(nb(this,!0)){if(!this.w.aa){jc(this);this.A&&this.A.start(this.M,hc(this));this.w.aa=!0;this.w.bb=!0;this.fa&&this.fa.start();var b=this.L.run;b&&(b.textContent="Halt");this.A&&(this.A.ia(!0),a&&this.A.Ua(!0))}this.Oa>=this.Na&&lc(this,!0);this.ga=0;this.ma=ua();this.S&&(a=this.ma-this.S,a>this.qb&&(this.M+=a,this.M>this.ma&&(this.M=this.ma)));try{do{for(var d=this.w.Ga?1:this.na,c=this.ja.length-1;0<=c;c--){var e=this.ja[c];0>e[0]||d>e[0]&&(d=e[0])}this.Ja(d);var f=this.T-this.O;
|
|
|
|
|
a=f;for(var h=this.ja.length-1;0<=h;h--){var g=this.ja[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ga+=f;this.N+=f;kc(this,0,!0);gc(this,f);this.Y-=f;if(0>=this.Y){this.Y+=this.na;15<=++this.rb&&(this.A&&this.A.ia(),this.rb=0);break}}while(this.w.aa)}catch(k){this.ca();I(this);this.A&&this.A.stop(ua(),hc(this));nb(this,!1);qb(this,k.stack||k.message);return}d=setTimeout;c=this.Db;this.S=ua();e=this.qb;this.ga&&(e=Math.round(e*this.ga/this.na));e=e-(this.S-this.ma);if(f=this.S-this.M)this.R=
|
|
|
|
|
Math.round(this.N/(10*f))/100,864E5<=f&&(this.U=0,jc(this));if(0>e||this.R<this.za)-1E3>e&&(this.M-=e),e=0;this.Oa+=this.ga;this.S+=e;d(c,e)}else I(this),this.A&&this.A.stop(ua(),hc(this))};m.Ja=function(){return 0};m.ca=function(a){ob(this,!0);yc(this);kc(this,this.N);this.N=0;if(this.w.aa){this.w.aa=!1;this.fa&&this.fa.stop();var b=this.L.run;b&&(b.textContent="Run")}this.w.complete=a};function I(a,b){a.A&&a.A.ia(b)}
|
|
|
|
|
function zc(a){this.tb=+a.model||1170;ac.call(this,a,1E6);this.jb=0;this.C=65536;this.j=this.i=32768;this.u=65535;this.f=15;this.b=[0,0,0,0,0,0,0,0];this.Ya=[0,0,0,0,0,0];this.Ba=[0,0,0,0];this.memory=[];this.G=[];this.Pa=this.sb=0;this.V=2;this.W=255;this.F=0;this.da=-1;this.pb=this.Da=this.ob=this.B=this.sa=this.K=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,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.Fb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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.w.complete=this.w.Ab=!1}A(zc,ac);m=zc.prototype;m.reset=function(){this.w.aa&&this.ca();Ac(this);dc(this);this.w.error=!1;this.parent.reset.call(this)};
|
|
|
|
|
function Ac(a){a.W=255;a.G=[];a.sb=0;a.J=a.K=a.sa=a.ob=0;a.ka[0]=a.ka[1]=a.ka[3]=7;a.Da=0}m.mb=function(){return 0};m.save=function(){var a=new J(this);K(a,0,[]);K(a,1,[this.nb,this.U,this.Aa]);for(var b=this.H,d=0,c=[],e=0;e<b.F;e++){var f=b.P[e];if(f.ua||f.Bb){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],q=g+1;q<f.length&&f[q]===n;)q++;l[k++]=q-g;l[k++]=n;g=q}if(l.length<f.length){f=l;break a}}c[h]=f}}K(a,2,c);return a.data()};
|
|
|
|
|
m.restore=function(a){var b=a[1];this.nb=b[0];this.U=b[1];jc(this,b[3]);a:{b=this.H;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.J){for(var f=0,h=Array(b.J),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[c];if(!f||!f.restore(e)){u("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 "PC":case "PSW":case "NF":case "ZF":case "VF":case "CF":this.L[b]=d;this.jb++;c=!0;break;default:c=this.parent.ha.call(this,a,b,d)}return c};function Bc(a){return a.f&-16|a.i>>12&8|(a.u&65535?0:4)|(a.j&32768?2:0)|(a.C&65536?1:0)}
|
|
|
|
|
m.ia=function(a){this.jb&&(a||!this.w.aa||this.w.hb)&&(a=Bc(this),ic(this,"PSW",a,4),ic(this,"NF",a&8?1:0,1),ic(this,"ZF",a&4?1:0,1),ic(this,"VF",a&2?1:0,1),ic(this,"CF",a&1?1:0,1));if(a=this.L.speed)a.textContent=this.w.aa&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};function Cc(a,b){a.i=b<<12;a.u=~b&4;a.j=b<<14;a.C=b<<16;if((b^a.f)&2048)for(var d=a.Ya.length;0<=--d;){var c=a.b[d];a.b[d]=a.Ya[d];a.Ya[d]=c}a.B=b>>14&3;d=a.f>>14&3;a.B!=d&&(a.Ba[d]=a.b[6],a.b[6]=a.Ba[a.B]);a.V=2;a.f=b}
|
|
|
|
|
function M(a,b){var d,c,e=0;0>a.da?a.da=a.f=a.f&63728|a.i>>12&8|(a.u&65535?0:4)|(a.j&32768?2:0)|(a.C&65536?1:0):a.B||(b=4,e=1);a.J&57344||(a.K=63222);a.B=0;0<=(d=N(a,b|65536))&&0<=(c=N(a,b+2&65535|65536))&&(Cc(a,c&53247|a.da>>2&12288),e&&(a.b[6]=4),0<=Dc(a,a.da)&&0<=Dc(a,a.b[7])&&(a.b[7]=d));a.F=0;return a.da=-1}
|
|
|
|
|
function Ec(a,b,d){var c,e,f,h=0;if(d&a.ob){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.sa&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.sa&32&&(f=a.Fb[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 M(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.Da=a.B,a.pb=c;if(h){if(h&57344)return 0<=a.da&&(h|=128),a.J&57344||(a.J=a.J|h|a.Da<<5|a.pb<<1),M(a,168);a.J&61440||!(4191360>f||4194239<f)||(a.J|=4096,a.J&512&&(a.F|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return M(a,4);return f}function O(a,b){return 4194304<=b?a.b[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
|
|
|
|
function P(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:3932160<=b?-1:0<=b?a.memory[b>>1]=d:b}function S(a,b){var d;return 4194304<=b?a.b[b-4194304]&255:3932160<=b?-1:0<=b?(d=a.memory[b>>1],b&1&&(d=d>>8),d&255):b}function T(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=d<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|d:b}function N(a,b){return O(a,Ec(a,b,2))}
|
|
|
|
|
function Fc(a){var b=N(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}function Dc(a,b){var d,c;a.b[6]=c=a.b[6]-2&65535;a.J&57344||(a.K=a.K<<8|246);if(!a.B&&c<=a.W&&4<c){if(c<=a.W-32)return a.b[6]=4,M(a,4);a.F|=4}return 0<=(d=Ec(a,c|65536,4))?P(a,d,b):d}
|
|
|
|
|
function Gc(a,b,d){var c,e,f=b&7;switch(b>>3&7){case 0:return M(a,4);case 1:if(6===f&&!a.B&&d&4&&(a.b[6]<=a.W||65534<=a.b[6])){if(a.b[6]<=a.W-32||65534<=a.b[6])return a.b[6]=4,M(a,4);a.F|=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=N(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=N(a,c)))return c;
|
|
|
|
|
c|=65536;break;case 6:if(0>(c=N(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=N(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return 0>(c=N(a,c|65536))?c:c|65536}a.b[f]=a.b[f]+e&65535;a.J&57344||(a.K=a.K<<8|e<<3&248|f);if(6===f&&!a.B&&d&4&&0>=e&&(a.b[6]<=a.W||65534<=a.b[6])){if(a.b[6]<=a.W-32)return a.b[6]=4,M(a,4);a.F|=4}return c}function U(a,b,d){var c;return b&56?(0<=(c=Gc(a,b,d))&&(c=Ec(a,c,d)),c):4194304+(b&7)}
|
|
|
|
|
function V(a,b){var d;b&56?0<=(d=U(a,b,2))&&(d=O(a,d)):d=a.b[b&7];return d}function Hc(a,b){var d;b&56?0<=(d=U(a,b,3))&&(d=S(a,d)):d=a.b[b&7]&255;return d}function W(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
|
|
|
|
m.Ja=function(a){this.w.complete=!0;var b=this.w.Ab=this.I&&Ic(this.I),d=a?this.w.bb?0:1:-1;this.w.bb=!1;this.T=this.O=a;this.nb&256?(yc(this),a=!1):a=!0;if(a){do{if(b){if(Jc(this.I,this.b[7],d)){this.ca();break}d=1}var c,e,f,h,g;if(this.V)if(1===this.V)this.V=2;else{this.V=0;g=-1;c=this.sb&224;if(0<(a=this.G.length))for(;0<a--;){if(0<this.G[a].ab){this.G[a].ab--;this.V=2;break}if(this.G[a].fb){if(!this.G[a].fb()){this.G.splice(a,1);g--;continue}this.G[a].fb=null}this.G[a].Gb>c&&(c=this.G[a].Gb,g=
|
|
|
|
|
a)}c>(this.f&224)&&(0>g?M(this,160):(M(this,this.G[g].Ib),this.G.splice(g,1)))}this.J&57344||(this.K=0);this.F=this.f&16;if(0<=(a=N(this,this.b[7])))switch(this.b[7]=this.b[7]+2&65535,a&61440){case 4096:0<=(c=V(this,a>>6))&&(a&56?0<=(f=U(this,a,4))&&0<=P(this,f,c)&&(this.i=this.u=c,this.j=0):(this.i=this.u=this.b[a&7]=c,this.j=0));break;case 8192:0<=(c=V(this,a>>6))&&0<=(e=V(this,a))&&(this.i=this.u=this.C=a=c-e,this.j=(c^e)&(c^a));break;case 12288:0<=(c=V(this,a>>6))&&0<=(e=V(this,a))&&(this.i=this.u=
|
|
|
|
|
function aa(a,b){var d;if(a){b||(b=10);var c=a.charAt(0),e=0<a.indexOf(",");e&&(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&&e&&(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 f,c=a;((e=b)&&10!=e?16==e?null!==c.match(/^[0-9a-f]+$/i):8==e?null!==c.match(/^[0-7]+$/):2==
|
|
|
|
|
e&&null!==c.match(/^[01]+$/):null!==c.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(d=f|0)}return d}function ga(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 q(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 e=a&15,e=e+(0<=e&&9>=e?48:55),c=String.fromCharCode(e)+c;a>>=4}return(d?"0x":"")+c}
|
|
|
|
|
function t(a){return q(a,4,!0)}function ha(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 ia(a){var b="",d=a.lastIndexOf(".");0<=d&&(b=a.substr(d+1).toLowerCase());return b}function la(){var a=ma();return-1!==a.indexOf("pcjs.org",a.length-8)}var na={"&":"&","<":"<",">":">",'"':""","'":"'"};function oa(a){return a.replace(/[&<>"']/g,function(a){return na[a]})}
|
|
|
|
|
function pa(a,b){return(a+" ").slice(0,b)}function qa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function ua(a,b,d){var c=0,e=a.length,f=0;for(void 0===d&&(d=function(a,b){return a>b?1:a<b?-1:0});c<e;){var h=c+e>>1,g;g=d(b,a[h]);0<g?c=h+1:(e=h,f=!g)}return f?c:~c}var va=Date.now||function(){return+new Date};
|
|
|
|
|
function wa(){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 xa(a,b,d,c){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return c&&c(a,f,e),[f,e];if(d&&"function"==typeof resources)return resources(a,function(b,d){c&&c(a,b,d)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),c&&c(a,f,e))});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,"+");g.open("POST",a,!!d);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!d),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();d||(f=g.responseText,200!=g.status&&(e=g.status||-1),c&&c(a,f,e),h=[f,e]);return h}function ma(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
|
|
|
|
function u(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.confirm(a));return b}var za=null;function Aa(){if(null==za){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}za=a}return za}function Ga(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(d){}return b}
|
|
|
|
|
function Ha(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){u(""+("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 w(a,b,d,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.kb=b.comment;this.Eb=b;b=this.id.indexOf(".");0>b?this.Ma=this.id:(this.lb=this.id.substr(0,b),this.Ma=this.id.substr(b+1));this[a]=d;this.A={ready:!1,Ga:!1,$a:!1,Z:!1,error:!1};this.Xa=null;this.A.error=!1;this.L={};this.I=null;this.$=c||0;y.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 A(a,b){b||(b=w);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={}),y=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},y=[];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<y.length;b++){var c=y[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<y.length;c++)if(d)d==y[c]&&(d=null);else if(!(a!=y[c].type||b&&y[c].id.indexOf(b)))return y[c]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(d){u(d.message+" ("+a+")")}return b}
|
|
|
|
|
function nb(a,b){for(var d=D(b.parentNode,"pdp11-control"),c=0;c<d.length;c++)for(var e=d[c].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pdp11-binding":(g=B(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
|
|
|
|
function D(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}
|
|
|
|
|
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,d){switch(b){case "clear":return this.L[b]||(this.L[b]=d,d.onclick=function(a){return function(){a.L.print&&(a.L.print.value="")}}(this)),!0;case "print":return this.L[b]||(this.xa=this.L[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.Ma)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Ma+": "+a)},ea:function(a,b,d){d=d||this.type;b||u((d?d+": ":"")+a)},sa:function(){return this.A.Z=!0},ra:function(a,b){b&&(this.A.Z=!1);return!0}};function ob(a,b){if(a.I){a===a.I?b|=0:b=b||a.$;var d=a.I.$&b;return!!b&&d===b||!!(d&a.I.zb)}return!1}
|
|
|
|
|
function pb(a,b){if(a.A.$a)return a.A.Ga&&(a.A.Ga=!1),a.A.$a=!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.$a=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Ga}function F(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Xa;a.Xa=null;b&&b()}}function rb(a,b){b&&(a.A.ready?b():a.Xa=b);return a.A.ready}function sb(a,b){a.A.error=!0;a.ea(b)}
|
|
|
|
|
var tb="undefined"!==typeof ArrayBuffer,G={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){w.call(this,"Panel",a,ub)}A(ub);m=ub.prototype;m.ha=function(a,b,d,c){return this.w&&this.w.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.ya=function(a,b,d,c){this.w=a;this.H=b;this.f=d;this.I=c};
|
|
|
|
|
m.sa=function(a,b){b||vb();return!0};m.ra=function(){return!0};m.ia=function(){};function vb(){for(var a=!1,b=D(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<y.length;h++)if(y[h].id===f){f=y[h];break a}f=null}f||(a=!0,f=new ub(e));nb(f,c);a&&F(f)}}Qa(vb);
|
|
|
|
|
function wb(a,b,d){w.call(this,"Bus",a,wb);this.f=b;this.I=d;this.B=a.busWidth||16;this.G=Math.pow(2,this.B);this.w=this.G-1|0;this.ba=16>=this.B?10:20>=this.B?12:24>=this.B?14:15;this.ma=1<<this.ba;this.J=this.ma>>2;this.H=this.ma-1;this.F=this.G/this.ma|0;this.K=this.F-1;a=new H;xb(a,this.I);this.P=Array(this.F);for(b=0;b<this.F;b++)this.P[b]=a;F(this)}A(wb);wb.prototype.reset=function(){};wb.prototype.sa=function(a,b){b||this.reset();return!0};
|
|
|
|
|
function yb(a,b,d,c){for(var e=b,f=d,h=e>>>a.ba;0<f&&h<a.P.length;){var g=a.P[h],k=h*a.ma,l=a.ma-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==c){if(e+f<=g.D)return g.Va+=g.D-e,g.D=e,!0;if(e>=g.D+g.Va){l=g.size-(e-k);l>f&&(l=f);g.Va=e-g.D+l;e=k+a.ma;f-=l;h++;continue}}return zb(1,e,f)}e=new H(e,l,a.ma,c);xb(e,a.I,g);a.P[h++]=e;e=k+a.ma;f-=l}return 0>=f?(a.status(Math.floor(d/1024)+"Kb "+Ab[c]+" at "+q(b,8,!0)),!0):zb(2,b,d)}
|
|
|
|
|
function Bb(a,b){var d=b&a.H,c=(b&a.w)>>>a.ba;return d!=a.H?a.P[c].ub(d,b):a.P[c++].Ta(d,b)|a.P[c&a.K].Ta(0,b+1)<<8}function zb(a,b,d){u("Memory block error ("+a+": "+q(b)+","+q(d)+")");return!1}var Cb;if(tb){var Ob=new ArrayBuffer(2);(new DataView(Ob)).setUint16(0,256,!0);Cb=256===(new Uint16Array(Ob))[0]}else Cb=!1;var Pb=Cb;
|
|
|
|
|
function H(a,b,d,c){this.id=Qb+=2;this.f=null;this.D=a;this.Va=b;this.size=d||0;this.type=c||Rb;this.J=c==Sb;xb(this);this.va=this.Bb=!1;if(d)if(tb)this.F=new ArrayBuffer(d),this.G=new DataView(this.F,0,d),this.H=new Uint8Array(this.F,0,d),this.N=new Uint16Array(this.F,0,d>>1),this.f=new Int32Array(this.F,0,d>>2),Tb(this,Pb?Ub:Vb);else{this.f=Array(d>>2);for(a=0;a<this.f.length;a++)this.f[a]=0;Tb(this,Wb)}else Tb(this)}var Rb=0,Sb=2,Ab=["NONE","RAM","ROM","VID","H/W"],Qb=0;
|
|
|
|
|
H.prototype={constructor:H,parent:null,save:function(){var a,b;if(tb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.G.getInt32(b<<2,!0);else a=this.f;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(tb)for(b=0;b<a.length;b++)this.G.setInt32(b<<2,a[b],!0);else this.f=a;return this.va=!0}return!1},wa:function(a,b){b?0===this.w++&&Xb(this,Yb,!1):0===this.L++&&Zb(this,Yb,!1)},O:function(){this.I&&ob(this.I,129)&&this.I.message("attempt to read invalid block %"+q(this.D),!0);
|
|
|
|
|
return 255},B:function(a,b){this.I&&ob(this.I,129)&&this.I.message("attempt to write "+t(b)+" to invalid block %"+q(this.D),!0)},X:function(a,b){return this.K(a++,b++)|this.K(a,b)<<8},pa:function(a,b,d){this.M(a++,b&255,d++);this.M(a,b>>8,d)},U:function(a){return this.f[a>>2]>>>((a&3)<<3)&255},da: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},ka:function(a,b){var d=a>>2,c=(a&3)<<3;this.f[d]=this.f[d]&~(255<<c)|b<<c;this.va=!0},ua: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.va=!0},S:function(a,b){if(this.I&&null!=this.D){var d=this.I;$b(d,this.D+a,1,d.R)&&d.ca(!0)}return this.Ta(a,b)},W:function(a,b){if(this.I&&null!=this.D){var d=this.I;$b(d,this.D+a,2,d.R)&&d.ca(!0)}return this.ub(a,b)},ga:function(a,b,d){if(this.I&&null!=this.D){var c=this.I;$b(c,this.D+a,1,c.J)&&c.ca(!0)}this.J?this.B(a,b,d):this.La(a,b,d)},na:function(a,b,d){if(this.I&&
|
|
|
|
|
null!=this.D){var c=this.I;$b(c,this.D+a,2,c.J)&&c.ca(!0)}this.J?this.B(a,b,d):this.wb(a,b,d)},R:function(a){return this.H[a]},T:function(a){return this.H[a]},V:function(a){return this.G.getUint16(a,!0)},Y:function(a){return a&1?this.H[a]|this.H[a+1]<<8:this.N[a>>1]},fa:function(a,b){this.H[a]=b;this.va=!0},ja:function(a,b){this.H[a]=b;this.va=!0},la:function(a,b){this.G.setUint16(a,b,!0);this.va=!0},Ma:function(a,b){a&1?(this.H[a]=b,this.H[a+1]=b>>8):this.N[a>>1]=b;this.va=!0}};
|
|
|
|
|
function xb(a,b,d){a.I=b;a.L=a.w=0;d&&((a.L=d.L)&&Zb(a,Yb,!1),(a.w=d.w)&&Xb(a,Yb,!1))}function ac(a,b){b?0===--a.w&&(a.M=a.J?a.B:a.La):0===--a.L&&(a.K=a.Ta)}function Xb(a,b,d){d&&a.w||(a.M=!a.J&&b[2]||a.B);if(d||void 0===d)a.La=b[2]||a.B,a.wb=b[3]||a.pa}function Zb(a,b,d){d&&a.L||(a.K=b[0]||a.O);if(d||void 0===d)a.Ta=b[0]||a.O,a.ub=b[1]||a.X}function Tb(a,b){b||(b=bc);Zb(a,b,void 0);Xb(a,b,void 0)}
|
|
|
|
|
var bc=[],Wb=[H.prototype.U,H.prototype.da,H.prototype.ka,H.prototype.ua],Yb=[H.prototype.S,H.prototype.W,H.prototype.ga,H.prototype.na];if(tb)var Vb=[H.prototype.R,H.prototype.V,H.prototype.fa,H.prototype.la],Ub=[H.prototype.T,H.prototype.Y,H.prototype.ja,H.prototype.Ma];
|
|
|
|
|
function cc(a,b){w.call(this,"CPU",a,cc,1);var d=a.multiplier||1;this.Fa=a.cycles||b;this.Aa=d;this.ua=Math.round(this.Fa/1E4)/100;this.za=this.ua*this.Aa;this.A.aa=!1;this.A.cb=!1;this.A.Na=a.autoStart;this.A.ib=!1;this.A.Ha=!1;this.Qa=this.X=0;this.Ra=a.csStart;this.Ia=a.csInterval;this.Ja=a.csStop;this.ja=[];this.Db=this.Ca.bind(this);F(this)}A(cc);var dc=["power","reset"];m=cc.prototype;
|
|
|
|
|
m.ya=function(a,b,d,c){this.w=a;this.H=b;this.I=c;for(b=0;b<dc.length;b++)(d=this.L[dc[b]])&&this.w.ha(null,dc[b],d);this.fa=null;a=ec(a,"autoStart");null!=a&&(this.A.Na="true"==a?!0:"false"==a?!1:!!a);F(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};
|
|
|
|
|
m.sa=function(a,b){if(!b){if(a&&this.restore){fc(this);if(!this.restore(a))return!1;gc(this)}else this.reset();if(this.I){var d=this.I;d.g("Type ? for help with PDP11 Debugger commands");d.ia();if(d.pa){var c=d.pa;d.pa=null;hc(d,c)}}else this.g("No debugger detected")}I(this);return!0};m.ra=function(a){return a?this.save():!0};m.Na=function(){return this.A.Na||!this.I&&void 0===this.L.run?(this.Ca(!0),!0):!1};m.mb=function(){return 0};
|
|
|
|
|
function gc(a){void 0===a.Ra&&(a.Ra=0);void 0===a.Ia&&(a.Ia=-1);void 0===a.Ja&&(a.Ja=-1);a.A.Ha=0<=a.Ra&&0<a.Ia;a.A.Ha&&(a.Qa=0,a.X=a.Ra-a.U)}function ic(a,b){if(a.A.Ha){var d=!1;a.Qa=a.Qa+a.mb()|0;a.X-=b;0>=a.X&&(a.X+=a.Ia,d=!0);0<=a.Ja&&a.Ja<=jc(a)&&(a.Ia=a.Ja=-1,gc(a),a.ca(),d=!0);d&&a.g(jc(a)+" cycles: checksum="+q(a.Qa))}}
|
|
|
|
|
function kc(a,b,d,c){a.L[b]&&(void 0===d&&(sb(a,"Value for "+b+" is invalid"),a.ca()),d=!a.A.aa||a.A.ib?q(d,c):"--------".substr(0,c),a.L[b].textContent!=d&&(a.L[b].textContent=d))}
|
|
|
|
|
m.ha=function(a,b,d){var c=this;a=!1;switch(b){case "power":case "reset":this.L[b]=d;a=!0;break;case "run":this.L[b]=d;d.onclick=function(){var a;if(a=c.w)if(a=c.w,a.A.Z)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.Z);d++);d==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Xa?" (waiting for notification)":""))+".");a=!1}a&&(c.A.aa?c.ca():c.Ca())};a=
|
|
|
|
|
!0;break;case "speed":this.L[b]=d;a=!0;break;case "setSpeed":this.L[b]=d,d.onclick=function(){lc(c,c.Aa<<1,!0)},d.textContent=this.za.toFixed(2)+"Mhz",a=!0}return a};function mc(a,b,d){a.U+=b;d&&(a.T=a.O=0)}function nc(a,b){var d=1;b&&1<a.Aa&&a.R&&(d=a.R/a.ua);a.qb=Math.round(1E3/30);a.na=Math.floor(a.Fa/30*d);b||(a.Y=a.na);a.Oa=0}function jc(a){return a.U+a.N+a.T-a.O}function fc(a){a.R=0;a.rb=0;a.U=a.N=a.T=a.O=0;gc(a);lc(a,1)}
|
|
|
|
|
function lc(a,b,d){var c=!1;if(void 0!==b){.8>a.R/a.za?b=1:c=!0;a.Aa=b;b=a.ua*a.Aa;if(a.za!=b){a.za=b;b=a.za.toFixed(2)+"Mhz";var e=a.L.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}d&&a.w&&a.w.Ua()}mc(a,a.N);a.N=0;a.M=va();a.S=0;nc(a);return c}function Ac(a){a.T-=a.O;a.O=0}
|
|
|
|
|
m.Ca=function(a){if(pb(this,!0)){if(!this.A.aa){lc(this);this.w&&this.w.start(this.M,jc(this));this.A.aa=!0;this.A.cb=!0;this.fa&&this.fa.start();var b=this.L.run;b&&(b.textContent="Halt");this.w&&(this.w.ia(!0),a&&this.w.Ua(!0))}this.Oa>=this.Fa&&nc(this,!0);this.ga=0;this.la=va();this.S&&(a=this.la-this.S,a>this.qb&&(this.M+=a,this.M>this.la&&(this.M=this.la)));try{do{for(var d=this.A.Ha?1:this.na,c=this.ja.length-1;0<=c;c--){var e=this.ja[c];0>e[0]||d>e[0]&&(d=e[0])}this.Ka(d);var f=this.T-this.O;
|
|
|
|
|
a=f;for(var h=this.ja.length-1;0<=h;h--){var g=this.ja[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ga+=f;this.N+=f;mc(this,0,!0);ic(this,f);this.Y-=f;if(0>=this.Y){this.Y+=this.na;15<=++this.rb&&(this.w&&this.w.ia(),this.rb=0);break}}while(this.A.aa)}catch(k){this.ca();I(this);this.w&&this.w.stop(va(),jc(this));pb(this,!1);sb(this,k.stack||k.message);return}d=setTimeout;c=this.Db;this.S=va();e=this.qb;this.ga&&(e=Math.round(e*this.ga/this.na));e=e-(this.S-this.la);if(f=this.S-this.M)this.R=
|
|
|
|
|
Math.round(this.N/(10*f))/100,864E5<=f&&(this.U=0,lc(this));if(0>e||this.R<this.za)-1E3>e&&(this.M-=e),e=0;this.Oa+=this.ga;this.S+=e;d(c,e)}else I(this),this.w&&this.w.stop(va(),jc(this))};m.Ka=function(){return 0};m.ca=function(a){qb(this,!0);Ac(this);mc(this,this.N);this.N=0;if(this.A.aa){this.A.aa=!1;this.fa&&this.fa.stop();var b=this.L.run;b&&(b.textContent="Run")}this.A.complete=a};function I(a,b){a.w&&a.w.ia(b)}
|
|
|
|
|
function Bc(a){this.tb=+a.model||1170;this.Fb=a.resetAddr||0;cc.call(this,a,1E6);this.Wa=0;this.C=65536;this.j=32768;this.u=65535;this.i=32768;this.f=15;this.b=[0,0,0,0,0,0,0,0];this.Ya=[0,0,0,0,0,0];this.Ba=[0,0,0,0];this.memory=[];this.G=[];this.Pa=this.sb=0;this.V=2;this.W=255;this.F=0;this.da=-1;this.pb=this.Da=this.ob=this.B=this.pa=this.K=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,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.Hb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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.Ab=!1}A(Bc,cc);m=Bc.prototype;m.reset=function(){this.A.aa&&this.ca();Cc(this);fc(this);this.A.error=!1;this.parent.reset.call(this)};
|
|
|
|
|
function Cc(a){a.b[7]=a.Fb;a.W=255;a.G=[];a.sb=0;a.J=a.K=a.pa=a.ob=0;a.ka[0]=a.ka[1]=a.ka[3]=7;a.Da=0}m.mb=function(){return 0};m.save=function(){var a=new J(this);K(a,0,[]);K(a,1,[this.nb,this.U,this.Aa]);for(var b=this.H,d=0,c=[],e=0;e<b.F;e++){var f=b.P[e];if(f.va||f.Bb){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}}K(a,2,c);return a.data()};
|
|
|
|
|
m.restore=function(a){var b=a[1];this.nb=b[0];this.U=b[1];lc(this,b[3]);a:{b=this.H;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.J){for(var f=0,h=Array(b.J),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[c];if(!f||!f.restore(e)){u("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 "PC":case "PSW":case "NF":case "ZF":case "VF":case "CF":this.L[b]=d;this.Wa++;c=!0;break;default:c=this.parent.ha.call(this,a,b,d)}return c};function Dc(a){return a.f&-16|a.i>>12&8|(a.u&65535?0:4)|(a.j&32768?2:0)|(a.C&65536?1:0)}
|
|
|
|
|
m.ia=function(a){this.Wa&&(a||!this.A.aa||this.A.ib)&&(a=Dc(this),kc(this,"PSW",a,4),kc(this,"NF",a&8?1:0,1),kc(this,"ZF",a&4?1:0,1),kc(this,"VF",a&2?1:0,1),kc(this,"CF",a&1?1:0,1));if(a=this.L.speed)a.textContent=this.A.aa&&this.R?this.R.toFixed(2)+"Mhz":"Stopped"};function Ec(a,b){a.i=b<<12;a.u=~b&4;a.j=b<<14;a.C=b<<16;if((b^a.f)&2048)for(var d=a.Ya.length;0<=--d;){var c=a.b[d];a.b[d]=a.Ya[d];a.Ya[d]=c}a.B=b>>14&3;d=a.f>>14&3;a.B!=d&&(a.Ba[d]=a.b[6],a.b[6]=a.Ba[a.B]);a.V=2;a.f=b}
|
|
|
|
|
function L(a,b){var d,c,e=0;0>a.da?a.da=a.f=a.f&63728|a.i>>12&8|(a.u&65535?0:4)|(a.j&32768?2:0)|(a.C&65536?1:0):a.B||(b=4,e=1);a.J&57344||(a.K=63222);a.B=0;0<=(d=N(a,b|65536))&&0<=(c=N(a,b+2&65535|65536))&&(Ec(a,c&53247|a.da>>2&12288),e&&(a.b[6]=4),0<=Fc(a,a.da)&&0<=Fc(a,a.b[7])&&(a.b[7]=d));a.F=0;return a.da=-1}
|
|
|
|
|
function Gc(a,b,d){var c,e,f,h=0;if(d&a.ob){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.pa&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.pa&32&&(f=a.Hb[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 L(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.Da=a.B,a.pb=c;if(h){if(h&57344)return 0<=a.da&&(h|=128),a.J&57344||(a.J=a.J|h|a.Da<<5|a.pb<<1),L(a,168);a.J&61440||!(4191360>f||4194239<f)||(a.J|=4096,a.J&512&&(a.F|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(d&1))return L(a,4);return f}function O(a,b){return 4194304<=b?a.b[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
|
|
|
|
function P(a,b,d){d&=65535;return 4194304<=b?a.b[b-4194304]=d:3932160<=b?-1:0<=b?a.memory[b>>1]=d:b}function S(a,b){var d;return 4194304<=b?a.b[b-4194304]&255:3932160<=b?-1:0<=b?(d=a.memory[b>>1],b&1&&(d=d>>8),d&255):b}function T(a,b,d){d&=255;return 4194304<=b?a.b[b-4194304]=a.b[b-4194304]&65280|d:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=d<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|d:b}function N(a,b){return O(a,Gc(a,b,2))}
|
|
|
|
|
function Hc(a){var b=N(a,a.b[6]|65536);0<=b&&(a.b[6]=a.b[6]+2&65535);return b}function Fc(a,b){var d,c;a.b[6]=c=a.b[6]-2&65535;a.J&57344||(a.K=a.K<<8|246);if(!a.B&&c<=a.W&&4<c){if(c<=a.W-32)return a.b[6]=4,L(a,4);a.F|=4}return 0<=(d=Gc(a,c|65536,4))?P(a,d,b):d}
|
|
|
|
|
function Ic(a,b,d){var c,e,f=b&7;switch(b>>3&7){case 0:return L(a,4);case 1:if(6===f&&!a.B&&d&4&&(a.b[6]<=a.W||65534<=a.b[6])){if(a.b[6]<=a.W-32||65534<=a.b[6])return a.b[6]=4,L(a,4);a.F|=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=N(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=N(a,c)))return c;
|
|
|
|
|
c|=65536;break;case 6:if(0>(c=N(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=N(a,a.b[7])))return c;a.b[7]=a.b[7]+2&65535;c=c+a.b[f]&65535;return 0>(c=N(a,c|65536))?c:c|65536}a.b[f]=a.b[f]+e&65535;a.J&57344||(a.K=a.K<<8|e<<3&248|f);if(6===f&&!a.B&&d&4&&0>=e&&(a.b[6]<=a.W||65534<=a.b[6])){if(a.b[6]<=a.W-32)return a.b[6]=4,L(a,4);a.F|=4}return c}function U(a,b,d){var c;return b&56?(0<=(c=Ic(a,b,d))&&(c=Gc(a,c,d)),c):4194304+(b&7)}
|
|
|
|
|
function V(a,b){var d;b&56?0<=(d=U(a,b,2))&&(d=O(a,d)):d=a.b[b&7];return d}function Jc(a,b){var d;b&56?0<=(d=U(a,b,3))&&(d=S(a,d)):d=a.b[b&7]&255;return d}function W(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
|
|
|
|
m.Ka=function(a){this.A.complete=!0;var b=this.A.Ab=this.I&&Kc(this.I),d=a?this.A.cb?0:1:-1;this.A.cb=!1;this.T=this.O=a;this.nb&256?(Ac(this),a=!1):a=!0;if(a){do{if(b){if(Lc(this.I,this.b[7],d)){this.ca();break}d=1}var c,e,f,h,g;if(this.V)if(1===this.V)this.V=2;else{this.V=0;g=-1;c=this.sb&224;if(0<(a=this.G.length))for(;0<a--;){if(0<this.G[a].bb){this.G[a].bb--;this.V=2;break}if(this.G[a].gb){if(!this.G[a].gb()){this.G.splice(a,1);g--;continue}this.G[a].gb=null}this.G[a].Gb>c&&(c=this.G[a].Gb,g=
|
|
|
|
|
a)}c>(this.f&224)&&(0>g?L(this,160):(L(this,this.G[g].Jb),this.G.splice(g,1)))}this.J&57344||(this.K=0);this.F=this.f&16;if(0<=(a=N(this,this.b[7])))switch(this.b[7]=this.b[7]+2&65535,a&61440){case 4096:0<=(c=V(this,a>>6))&&(a&56?0<=(f=U(this,a,4))&&0<=P(this,f,c)&&(this.i=this.u=c,this.j=0):(this.i=this.u=this.b[a&7]=c,this.j=0));break;case 8192:0<=(c=V(this,a>>6))&&0<=(e=V(this,a))&&(this.i=this.u=this.C=a=c-e,this.j=(c^e)&(c^a));break;case 12288:0<=(c=V(this,a>>6))&&0<=(e=V(this,a))&&(this.i=this.u=
|
|
|
|
|
c&e,this.j=0);break;case 16384:0<=(c=V(this,a>>6))&&(a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e&~c,0<=P(this,f,a)&&(this.i=this.u=a,this.j=0)):(this.i=this.u=a=this.b[a&7]&=~c,this.j=0));break;case 20480:0<=(c=V(this,a>>6))&&(a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e|c,0<=P(this,f,a)&&(this.i=this.u=a,this.j=0)):(this.i=this.u=a=this.b[a&7]|=c,this.j=0));break;case 24576:0<=(c=V(this,a>>6))&&(a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=c+e,0<=P(this,f,a)&&(this.i=this.u=this.C=a,this.j=(c^a)&(e^a))):(g=a&7,
|
|
|
|
|
e=this.b[g],this.b[g]=(a=c+e)&65535,this.i=this.u=this.C=a,this.j=(c^a)&(e^a)));break;case 36864:0<=(c=Hc(this,a>>6))&&(a&56?0<=(f=U(this,a,5))&&0<=T(this,f,c)&&(this.i=this.u=c<<8,this.j=0):(c&128&&(c|=65280),this.i=this.u=this.b[a&7]=c,this.j=0));break;case 40960:0<=(c=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(a=c-e,this.i=this.u=this.C=a<<8,this.j=((c^e)&(c^a))<<8);break;case 45056:0<=(c=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(this.i=this.u=(c&e)<<8,this.j=0);break;case 49152:0<=(c=Hc(this,a>>6))&&0<=(e=
|
|
|
|
|
S(this,f=U(this,a,7)))&&(a=e&~c,0<=T(this,f,a)&&(this.i=this.u=a<<8,this.j=0));break;case 53248:0<=(c=Hc(this,a>>6))&&0<=(e=S(this,f=U(this,a,7)))&&(a=e|c,0<=T(this,f,a)&&(this.i=this.u=a<<8,this.j=0));break;case 57344:0<=(c=V(this,a>>6))&&(a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e-c,0<=P(this,f,a)&&(this.i=this.u=this.C=a,this.j=(c^e)&(e^a))):(g=a&7,e=this.b[g],this.b[g]=(a=e-c)&65535,this.i=this.u=this.C=a,this.j=(c^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Gc(this,a,0))&&(g=a>>6&7,
|
|
|
|
|
0<=Dc(this,this.b[g])&&(this.b[g]=this.b[7],this.b[7]=h&65535));break;case 28672:0<=(c=V(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),e=this.b[g],e&32768&&(e|=-65536),a=~~(c*e),this.b[g]=a>>16&65535,this.b[g|1]=a&65535,this.i=a>>16,this.u=this.i|a,this.C=this.j=0,-32768>a||32767<a)&&(this.C=65536);break;case 29184:0<=(c=V(this,a))&&(c?(g=a>>6&7,e=this.b[g]<<16|this.b[g|1],this.C=this.j=0,c&32768&&(c|=-65536),a=~~(e/c),-32768<=a&&32767>=a?(this.b[g]=a&65535,this.b[g|1]=e-a*c&65535,this.u=a>>16|a,this.i=
|
|
|
|
|
e=this.b[g],this.b[g]=(a=c+e)&65535,this.i=this.u=this.C=a,this.j=(c^a)&(e^a)));break;case 36864:0<=(c=Jc(this,a>>6))&&(a&56?0<=(f=U(this,a,5))&&0<=T(this,f,c)&&(this.i=this.u=c<<8,this.j=0):(c&128&&(c|=65280),this.i=this.u=this.b[a&7]=c,this.j=0));break;case 40960:0<=(c=Jc(this,a>>6))&&0<=(e=Jc(this,a))&&(a=c-e,this.i=this.u=this.C=a<<8,this.j=((c^e)&(c^a))<<8);break;case 45056:0<=(c=Jc(this,a>>6))&&0<=(e=Jc(this,a))&&(this.i=this.u=(c&e)<<8,this.j=0);break;case 49152:0<=(c=Jc(this,a>>6))&&0<=(e=
|
|
|
|
|
S(this,f=U(this,a,7)))&&(a=e&~c,0<=T(this,f,a)&&(this.i=this.u=a<<8,this.j=0));break;case 53248:0<=(c=Jc(this,a>>6))&&0<=(e=S(this,f=U(this,a,7)))&&(a=e|c,0<=T(this,f,a)&&(this.i=this.u=a<<8,this.j=0));break;case 57344:0<=(c=V(this,a>>6))&&(a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e-c,0<=P(this,f,a)&&(this.i=this.u=this.C=a,this.j=(c^e)&(e^a))):(g=a&7,e=this.b[g],this.b[g]=(a=e-c)&65535,this.i=this.u=this.C=a,this.j=(c^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Ic(this,a,0))&&(g=a>>6&7,
|
|
|
|
|
0<=Fc(this,this.b[g])&&(this.b[g]=this.b[7],this.b[7]=h&65535));break;case 28672:0<=(c=V(this,a))&&(g=a>>6&7,c&32768&&(c|=-65536),e=this.b[g],e&32768&&(e|=-65536),a=~~(c*e),this.b[g]=a>>16&65535,this.b[g|1]=a&65535,this.i=a>>16,this.u=this.i|a,this.C=this.j=0,-32768>a||32767<a)&&(this.C=65536);break;case 29184:0<=(c=V(this,a))&&(c?(g=a>>6&7,e=this.b[g]<<16|this.b[g|1],this.C=this.j=0,c&32768&&(c|=-65536),a=~~(e/c),-32768<=a&&32767>=a?(this.b[g]=a&65535,this.b[g|1]=e-a*c&65535,this.u=a>>16|a,this.i=
|
|
|
|
|
a>>16):(this.j=32768,this.u=a>>15|a,this.i=e>>16,-1===c&&65534===this.b[g]&&(this.b[g]=this.b[g|1]=1))):(this.u=this.i=0,this.j=32768,this.C=65536));break;case 29696:0<=(c=V(this,a))&&(g=a>>6&7,a=this.b[g],a&32768&&(a|=4294901760),this.C=this.j=0,c&=63,c&32?(c=64-c,16<c&&(c=16),this.C=a<<17-c,a=a>>c):c&&(16<c?(this.j=a,a=0):(this.C=a=a<<c,(e=a>>15&65535)&&65535!==e&&(this.j=32768))),this.b[g]=a&65535,this.i=this.u=a);break;case 30208:if(0<=(c=V(this,a))){g=a>>6&7;e=this.b[g]<<16|this.b[g|1];this.C=
|
|
|
|
|
this.j=0;c&=63;if(c&32)c=64-c,32<c&&(c=32),a=e>>c-1,this.C=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-c);else if(c){if(a=e<<c-1,this.C=a>>15,a<<=1,32<c&&(c=32),e>>=32-c)e|=4294967295<<c&4294967295,4294967295!==e&&(this.j=32768)}else a=e;this.b[g]=a>>16&65535;this.b[g|1]=a&65535;this.i=a>>16;this.u=a>>16|a}break;case 30720:a&56?0<=(e=O(this,f=U(this,a,6)))&&(e^=this.b[a>>6&7],0<=P(this,f,e)&&(this.i=this.u=e,this.j=0)):(this.i=this.u=e=this.b[a&7]^=this.b[a>>6&7],this.j=0);break;case 32256:g=a>>
|
|
|
|
|
6&7;if(this.b[g]=this.b[g]-1&65535)this.b[7]=this.b[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.b[7]=W(this.b[7],a);break;case 512:this.u&65535&&(this.b[7]=W(this.b[7],a));break;case 768:this.u&65535||(this.b[7]=W(this.b[7],a));break;case 1024:(this.i&32768)===(this.j&32768)&&(this.b[7]=W(this.b[7],a));break;case 1280:(this.i&32768)!==(this.j&32768)&&(this.b[7]=W(this.b[7],a));break;case 1536:this.u&65535&&(this.i&32768)===(this.j&32768)&&(this.b[7]=W(this.b[7],a));break;case 1792:this.u&
|
|
|
|
|
65535&&(this.i&32768)===(this.j&32768)||(this.b[7]=W(this.b[7],a));break;case 32768:this.i&32768||(this.b[7]=W(this.b[7],a));break;case 33280:!(this.C&65536)&&this.u&65535&&(this.b[7]=W(this.b[7],a));break;case 33024:this.i&32768&&(this.b[7]=W(this.b[7],a));break;case 33536:if(this.C&65536||!(this.u&65535))this.b[7]=W(this.b[7],a);break;case 33792:this.j&32768||(this.b[7]=W(this.b[7],a));break;case 34048:this.j&32768&&(this.b[7]=W(this.b[7],a));break;case 34304:this.C&65536||(this.b[7]=W(this.b[7],
|
|
|
|
|
a));break;case 34560:this.C&65536&&(this.b[7]=W(this.b[7],a));break;case 34816:M(this,24);break;case 35072:M(this,28);break;default:switch(a&65472){case 64:0<=(h=Gc(this,a,0))&&(this.b[7]=h&65535);break;case 192:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e<<8|e>>8,0<=P(this,f,a)&&(this.i=this.u=e&65280,this.j=this.C=0)):(g=a&7,e=this.b[g],this.b[g]=(e<<8|e>>8)&65535,this.i=this.u=e&65280,this.j=this.C=0);break;case 2560:a&56?0<=(f=U(this,a,4))&&0<=P(this,f,0)&&(this.i=this.C=this.j=this.u=0):this.i=this.C=
|
|
|
|
|
a));break;case 34560:this.C&65536&&(this.b[7]=W(this.b[7],a));break;case 34816:L(this,24);break;case 35072:L(this,28);break;default:switch(a&65472){case 64:0<=(h=Ic(this,a,0))&&(this.b[7]=h&65535);break;case 192:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e<<8|e>>8,0<=P(this,f,a)&&(this.i=this.u=e&65280,this.j=this.C=0)):(g=a&7,e=this.b[g],this.b[g]=(e<<8|e>>8)&65535,this.i=this.u=e&65280,this.j=this.C=0);break;case 2560:a&56?0<=(f=U(this,a,4))&&0<=P(this,f,0)&&(this.i=this.C=this.j=this.u=0):this.i=this.C=
|
|
|
|
|
this.j=this.u=this.b[a&7]=0;break;case 2624:0<=(e=O(this,f=U(this,a,6)))&&(a=~e,0<=P(this,f,a)&&(this.i=this.u=a,this.C=65536,this.j=0));break;case 2688:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e+1,0<=P(this,f,a)&&(this.i=this.u=a,this.j=a&(a^e))):(g=a&7,e=this.b[g],a=e+1,this.b[g]=a&65535,this.i=this.u=a,this.j=a&(a^e));break;case 2752:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e-1,0<=P(this,f,a)&&(this.i=this.u=a,this.j=(a^e)&e)):(g=a&7,e=this.b[g],a=e-1,this.b[g]=a&65535,this.i=this.u=a,this.j=(a^e)&e);
|
|
|
|
|
break;case 2816:0<=(e=O(this,f=U(this,a,6)))&&(a=-e,0<=P(this,f,a)&&(this.C=this.i=this.u=a,this.j=a&e));break;case 2880:0<=(e=O(this,f=U(this,a,6)))&&(a=e+(this.C>>16&1),0<=P(this,f,a)&&(this.C=this.i=this.u=a,this.j=a&(a^e)));break;case 2944:0<=(e=O(this,f=U(this,a,6)))&&(a=e-(this.C>>16&1),0<=P(this,f,a)&&(this.C=this.i=this.u=a,this.j=(a^e)&e));break;case 3008:0<=(e=V(this,a))&&(this.i=this.u=e,this.C=this.j=0);break;case 3072:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=(this.C&65536|e)>>1,0<=P(this,
|
|
|
|
|
f,a)&&(this.C=e<<16,this.i=this.u=a,this.j=a^this.C>>1)):(g=a&7,e=this.b[g],a=(this.C&65536|e)>>1,this.b[g]=a&65535,this.C=e<<16,this.i=this.u=a,this.j=a^this.C>>1);break;case 3136:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e<<1|this.C>>16&1,0<=P(this,f,a)&&(this.C=this.i=this.u=a,this.j=a^e)):(g=a&7,e=this.b[g],a=e<<1|this.C>>16&1,this.b[g]=a&65535,this.C=this.i=this.u=a,this.j=a^e);break;case 3200:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e&32768|e>>1,0<=P(this,f,a)&&(this.C=e<<16,this.i=this.u=a,this.j=
|
|
|
|
|
this.i^this.C>>1)):(g=a&7,e=this.b[g],a=e&32768|e>>1,this.b[g]=a&65535,this.C=e<<16,this.i=this.u=a,this.j=this.i^this.C>>1);break;case 3264:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e<<1,0<=P(this,f,a)&&(this.C=this.i=this.u=a,this.j=a^e)):(g=a&7,e=this.b[g],a=e<<1,this.b[g]=a&65535,this.C=this.i=this.u=a,this.j=a^e);break;case 3328:h=this.b[7]+((a&63)<<1)&65535;0<=(c=N(this,h|65536))&&(this.b[7]=this.b[5],this.b[5]=c,this.b[6]=h+2&65535);break;case 3392:a&56?0<=(h=Gc(this,a,0))&&(61440!==(this.f&61440)&&
|
|
|
|
|
(h&=65535),this.B=this.f>>12&3,0<=(c=N(this,h))&&(this.B=this.f>>14&3,0<=Dc(this,c)&&(this.i=this.u=c,this.j=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Ba[this.f>>12&3],0<=Dc(this,c)&&(this.i=this.u=c,this.j=0));break;case 3456:0<=(e=Fc(this))&&((this.J&57344||(this.K=22),a&56)?0<=(h=Gc(this,a,0))&&(h&=65535,this.B=this.f>>12&3,0<=(f=Ec(this,h,4))&&(this.B=this.f>>14&3,0<=P(this,f,e)&&(this.i=this.u=e,this.j=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=
|
|
|
|
|
this.i^this.C>>1)):(g=a&7,e=this.b[g],a=e&32768|e>>1,this.b[g]=a&65535,this.C=e<<16,this.i=this.u=a,this.j=this.i^this.C>>1);break;case 3264:a&56?0<=(e=O(this,f=U(this,a,6)))&&(a=e<<1,0<=P(this,f,a)&&(this.C=this.i=this.u=a,this.j=a^e)):(g=a&7,e=this.b[g],a=e<<1,this.b[g]=a&65535,this.C=this.i=this.u=a,this.j=a^e);break;case 3328:h=this.b[7]+((a&63)<<1)&65535;0<=(c=N(this,h|65536))&&(this.b[7]=this.b[5],this.b[5]=c,this.b[6]=h+2&65535);break;case 3392:a&56?0<=(h=Ic(this,a,0))&&(61440!==(this.f&61440)&&
|
|
|
|
|
(h&=65535),this.B=this.f>>12&3,0<=(c=N(this,h))&&(this.B=this.f>>14&3,0<=Fc(this,c)&&(this.i=this.u=c,this.j=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Ba[this.f>>12&3],0<=Fc(this,c)&&(this.i=this.u=c,this.j=0));break;case 3456:0<=(e=Hc(this))&&((this.J&57344||(this.K=22),a&56)?0<=(h=Ic(this,a,0))&&(h&=65535,this.B=this.f>>12&3,0<=(f=Gc(this,h,4))&&(this.B=this.f>>14&3,0<=P(this,f,e)&&(this.i=this.u=e,this.j=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=
|
|
|
|
|
e:this.Ba[this.f>>12&3]=e,this.i=this.u=e,this.j=0));break;case 3520:0<=(f=U(this,a,4))&&(a=-(this.i>>15&1),0<=P(this,f,a)&&(this.u=a,this.j=0));break;case 35328:a&56?0<=(f=U(this,a,5))&&0<=T(this,f,0)&&(this.i=this.C=this.j=this.u=0):(this.b[a&7]&=65280,this.i=this.C=this.j=this.u=0);break;case 35392:0<=(e=S(this,f=U(this,a,7)))&&(a=~e,0<=T(this,f,a)&&(this.i=this.u=a<<8,this.C=65536,this.j=0));break;case 35456:0<=(e=S(this,f=U(this,a,7)))&&(a=e+1,0<=T(this,f,a)&&(this.i=this.u=a<<8,this.j=(a&(a^
|
|
|
|
|
e))<<8));break;case 35520:0<=(e=S(this,f=U(this,a,7)))&&(a=e-1,0<=T(this,f,a)&&(this.i=this.u=a<<8,this.j=((a^e)&e)<<8));break;case 35584:0<=(e=S(this,f=U(this,a,7)))&&(a=-e,0<=T(this,f,a)&&(this.C=this.i=this.u=a<<8,this.j=(a&e)<<8));break;case 35648:0<=(e=S(this,f=U(this,a,7)))&&(a=e+(this.C>>16&1),0<=T(this,f,a)&&(this.i=this.u=this.C=a<<8,this.j=(a&(a^e))<<8));break;case 35712:0<=(e=S(this,f=U(this,a,7)))&&(a=e-(this.C>>16&1),0<=T(this,f,a)&&(this.i=this.u=this.C=a<<8,this.j=((a^e)&e)<<8));break;
|
|
|
|
|
case 35776:0<=(e=Hc(this,a))&&(this.i=this.u=e<<8,this.C=this.j=0);break;case 35840:0<=(e=S(this,f=U(this,a,7)))&&(a=((this.C&65536)>>8|e)>>1,0<=T(this,f,a)&&(this.C=e<<16,this.i=this.u=a<<8,this.j=this.i^this.C>>1));break;case 35904:0<=(e=S(this,f=U(this,a,7)))&&(a=e<<1|this.C>>16&1,0<=T(this,f,a)&&(this.C=this.i=this.u=a<<8,this.j=(a^e)<<8));break;case 35968:0<=(e=S(this,f=U(this,a,7)))&&(a=e&128|e>>1,0<=T(this,f,a)&&(this.C=e<<16,this.i=this.u=a<<8,this.j=this.i^this.C>>1));break;case 36032:0<=
|
|
|
|
|
(e=S(this,f=U(this,a,7)))&&(a=e<<1,0<=T(this,f,a)&&(this.C=this.i=this.u=a<<8,this.j=(a^e)<<8));break;case 36160:a&56?0<=(h=Gc(this,a,0))&&(this.B=this.f>>12&3,0<=(c=N(this,h|65536))&&(this.B=this.f>>14&3,0<=Dc(this,c)&&(this.i=this.u=c,this.j=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Ba[this.f>>12&3],0<=Dc(this,c)&&(this.i=this.u=c,this.j=0));break;case 36224:0<=(e=Fc(this))&&((this.J&57344||(this.K=22),a&56)?0<=(h=Gc(this,a,0))&&(this.B=this.f>>12&3,0<=(f=Ec(this,h|
|
|
|
|
|
65536,4))&&(this.B=this.f>>14&3,0<=P(this,f,e)&&(this.i=this.u=e,this.j=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=e:this.Ba[this.f>>12&3]=e,this.i=this.u=e,this.j=0));break;default:switch(a&65528){case 128:0<=(c=Fc(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.V=1);break;case 160:case 168:a&1&&(this.C=0);a&2&&(this.j=0);a&4&&(this.u=1);a&8&&(this.i=0);break;case 176:case 184:a&1&&(this.C=65536);a&2&&(this.j=32768);
|
|
|
|
|
a&4&&(this.u=0);a&8&&(this.i=32768);break;default:switch(a){case 0:49152&this.f?M(this,4):(this.Pa=3,yc(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:g=0;if(0<(a=this.G.length))for(;0<a--;)g+=this.G[a].ab,this.G[a].ab=0;0===g&&0===this.Pa&&(this.Pa=2,yc(this));break;case 3:M(this,12);break;case 4:M(this,16);break;case 5:this.f&49152||Ac(this);break;case 2:case 6:f=this.b[6];0<=(h=N(this,f|65536))&&(f=f+2&65535,0<=(c=N(this,f|65536))&&(this.b[6]=f+2&65535,c&=63743,this.f&49152&&
|
|
|
|
|
(c=c&63519|this.f&63712),this.b[7]=h,Cc(this,c),this.F&=-17,2===a&&(this.F|=this.f&16)));break;default:M(this,8)}}}}}}this.F&&(this.F&2?M(this,168):this.F&4?M(this,4):this.F&16&&M(this,12),this.F=0)}while(0<this.O)}return this.w.complete?this.T-this.O:void 0===this.w.complete?0:-1};Pa(function(){for(var a=E(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=C(d),c=new zc(c);lb(c,d)}});
|
|
|
|
|
function Kc(a){x.call(this,"ROM",a,Kc);this.A=null;this.J=a.addr;this.B=a.size;this.K=a.writable;this.F=a.alias;this.G=a.file;this.M=ga(this.G);if(this.G){a=this.G;var b=ha(this.M);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var d=this;wa(a,null,!0,function(a,b,f){Lc(d,a,b,f)})}}A(Kc);Kc.prototype.ya=function(a,b,d,c){this.H=b;this.f=d;this.I=c;Mc(this)};
|
|
|
|
|
Kc.prototype.ra=function(){if(this.pa){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.B,e=this.pa,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],q=ta(n,k,a.gb);0>q&&n.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.K.push({Hb:b,D:d,Cb:c,pa:e,eb:f})}delete this.pa}return!0};Kc.prototype.qa=function(){return!0};
|
|
|
|
|
function Lc(a,b,d,c){if(c)a.ea("Unable to load system ROM (error "+c+": "+b+")");else{$a(a.lb,b,d);if("["==d.charAt(0)||"{"==d.charAt(0))try{var e=eval("("+d+")"),f=e.bytes,h=e.data;if(f)a.A=f;else if(h)for(a.A=Array(4*h.length),c=d=0;d<h.length;d++)a.A[c++]=h[d]&255,a.A[c++]=h[d]>>8&255,a.A[c++]=h[d]>>16&255,a.A[c++]=h[d]>>24&255;else a.A=e;a.pa=e.symbols;if(!a.A.length){u("Empty ROM: "+b);return}if(1==a.A.length){u(a.A[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=d.replace(/\n/gm,
|
|
|
|
|
" ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e<b.length;e++)a.A[e]=fa(b[e]);Mc(a)}}
|
|
|
|
|
function Mc(a){if(!pb(a))if(!a.G)F(a);else if(a.A&&a.H){a.B||(a.B=a.A.length);if(a.A.length!=a.B)qb(a,"ROM size ("+p(a.A.length,8,!0)+") does not match specified size ("+p(a.B,8,!0)+")");else{var b;b=a.J;if(wb(a.H,b,a.B,a.K?1:Qb)){var d;for(d=0;d<a.A.length;d++){var c=a.H,e=b+d;c.P[(e&c.A)>>>c.ba].Ka(e&c.H,a.A[d]&255,e)}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(d=0;d<b.length;d++){for(var f=a,c=b[d],e=f.H,h=f.B,g=[],k=f.J>>>e.ba;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
|
|
|
|
h-=e.la;e=f.H;f=f.B;h=0;for(c>>>=e.ba;0<f&&c<e.P.length;){k=g[h++];if(!k)break;e.P[c++]=k;f-=e.la}}delete a.A}}F(a)}}Pa(function(){for(var a=E(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=C(d),c=new Kc(c);lb(c,d)}});function Nc(a){x.call(this,"RAM",a,Nc);this.F=a.addr;this.B=a.size;this.A=!1}A(Nc);m=Nc.prototype;m.ya=function(a,b,d,c){this.H=b;this.f=d;this.I=c;F(this)};m.ra=function(a,b){b||this.reset();return!0};m.qa=function(a){return a?this.save():!0};
|
|
|
|
|
m.reset=function(){!this.A&&this.B&&wb(this.H,this.F,this.B,1)&&(this.A=!0);this.A||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Pa(function(){for(var a=E(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=C(d),c=new Nc(c);lb(c,d)}});function Oc(a){x.call(this,"Keyboard",a,Oc,65536);F(this)}A(Oc);Oc.prototype.ha=function(){return!1};Oc.prototype.ya=function(a,b,d,c){this.A=a;this.f=d;this.I=c;this.fa=null};
|
|
|
|
|
Pa(function(){for(var a=E(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=C(d),c=new Oc(c);lb(c,d)}});function Pc(a){x.call(this,"Debugger",a,Pc);this.S=this.ka=this.M=0;this.U=!1;this.G=-1;this.F=[];this.W={}}A(Pc);var Qc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
|
|
|
function Rc(a,b,d,c){if(d)if(b){0>a.G&&a.F.length&&(a.G=0);if(0>a.G||b!=a.F[a.G])a.F.splice(0,0,b),a.G=0;a.G--}else a.U?b="end":b=a.F[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var e=null;c=c||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==c&&!e||!h)a.push(pa(b.substring(d,f))),d=f+1}}return a}
|
|
|
|
|
function Sc(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(c){case "*":c=f*e;break;case "/":if(!e)return!1;c=f/e;break;case "%":if(!e)return!1;c=f%e;break;case "+":c=f+e;break;case "-":c=f-e;break;case "<<":c=f<<e;break;case ">>":c=f>>e;break;case ">>>":c=f>>>e;break;case "<":c=f<e?1:0;break;case "<=":c=f<=e?1:0;break;case ">":c=f>e?1:0;break;case ">=":c=f>=e?1:0;break;case "==":c=f==e?1:0;break;case "!=":c=f!=e?1:0;break;case "&":c=f&e;break;
|
|
|
|
|
case 35776:0<=(e=Jc(this,a))&&(this.i=this.u=e<<8,this.C=this.j=0);break;case 35840:0<=(e=S(this,f=U(this,a,7)))&&(a=((this.C&65536)>>8|e)>>1,0<=T(this,f,a)&&(this.C=e<<16,this.i=this.u=a<<8,this.j=this.i^this.C>>1));break;case 35904:0<=(e=S(this,f=U(this,a,7)))&&(a=e<<1|this.C>>16&1,0<=T(this,f,a)&&(this.C=this.i=this.u=a<<8,this.j=(a^e)<<8));break;case 35968:0<=(e=S(this,f=U(this,a,7)))&&(a=e&128|e>>1,0<=T(this,f,a)&&(this.C=e<<16,this.i=this.u=a<<8,this.j=this.i^this.C>>1));break;case 36032:0<=
|
|
|
|
|
(e=S(this,f=U(this,a,7)))&&(a=e<<1,0<=T(this,f,a)&&(this.C=this.i=this.u=a<<8,this.j=(a^e)<<8));break;case 36160:a&56?0<=(h=Ic(this,a,0))&&(this.B=this.f>>12&3,0<=(c=N(this,h|65536))&&(this.B=this.f>>14&3,0<=Fc(this,c)&&(this.i=this.u=c,this.j=0))):(g=a&7,c=6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]:this.Ba[this.f>>12&3],0<=Fc(this,c)&&(this.i=this.u=c,this.j=0));break;case 36224:0<=(e=Hc(this))&&((this.J&57344||(this.K=22),a&56)?0<=(h=Ic(this,a,0))&&(this.B=this.f>>12&3,0<=(f=Gc(this,h|
|
|
|
|
|
65536,4))&&(this.B=this.f>>14&3,0<=P(this,f,e)&&(this.i=this.u=e,this.j=0))):(g=a&7,6!==g||(this.f>>2&12288)===(this.f&12288)?this.b[g]=e:this.Ba[this.f>>12&3]=e,this.i=this.u=e,this.j=0));break;default:switch(a&65528){case 128:0<=(c=Hc(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.V=1);break;case 160:case 168:a&1&&(this.C=0);a&2&&(this.j=0);a&4&&(this.u=1);a&8&&(this.i=0);break;case 176:case 184:a&1&&(this.C=65536);a&2&&(this.j=32768);
|
|
|
|
|
a&4&&(this.u=0);a&8&&(this.i=32768);break;default:switch(a){case 0:49152&this.f?L(this,4):(this.Pa=3,Ac(this),console.log("HALT at "+this.b[7].toString(8)));break;case 1:g=0;if(0<(a=this.G.length))for(;0<a--;)g+=this.G[a].bb,this.G[a].bb=0;0===g&&0===this.Pa&&(this.Pa=2,Ac(this));break;case 3:L(this,12);break;case 4:L(this,16);break;case 5:this.f&49152||Cc(this);break;case 2:case 6:f=this.b[6];0<=(h=N(this,f|65536))&&(f=f+2&65535,0<=(c=N(this,f|65536))&&(this.b[6]=f+2&65535,c&=63743,this.f&49152&&
|
|
|
|
|
(c=c&63519|this.f&63712),this.b[7]=h,Ec(this,c),this.F&=-17,2===a&&(this.F|=this.f&16)));break;default:L(this,8)}}}}}}this.F&&(this.F&2?L(this,168):this.F&4?L(this,4):this.F&16&&L(this,12),this.F=0)}while(0<this.O)}return this.A.complete?this.T-this.O:void 0===this.A.complete?0:-1};Qa(function(){for(var a=D(document,"pdp11","cpu"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Bc(c);nb(c,d)}});
|
|
|
|
|
function Mc(a){w.call(this,"ROM",a,Mc);this.w=null;this.J=a.addr;this.B=a.size;this.K=a.writable;this.F=a.alias;this.G=a.file;this.M=ha(this.G);if(this.G){a=this.G;var b=ia(this.M);"json"!=b&&"hex"!=b&&(a=ma()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var d=this;xa(a,null,!0,function(a,b,f){Nc(d,a,b,f)})}}A(Mc);Mc.prototype.ya=function(a,b,d,c){this.H=b;this.f=d;this.I=c;Oc(this)};
|
|
|
|
|
Mc.prototype.sa=function(){if(this.qa){if(this.I){var a=this.I,b=this.id,d=this.J,c=this.B,e=this.qa,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=ua(n,k,a.hb);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.K.push({Ib:b,D:d,Cb:c,qa:e,fb:f})}delete this.qa}return!0};Mc.prototype.ra=function(){return!0};
|
|
|
|
|
function Nc(a,b,d,c){if(c)a.ea("Unable to load system ROM (error "+c+": "+b+")");else{ab(a.lb,b,d);var e;if("["==d.charAt(0)||"{"==d.charAt(0))try{var f,h,g=eval("("+d+")");if(f=g.bytes)a.w=f;else if(f=g.words)for(a.w=Array(2*f.length),h=e=0;e<f.length;e++)a.w[h++]=f[e]&255,a.w[h++]=f[e]>>8&255;else if(f=g.data)for(a.w=Array(4*f.length),h=e=0;e<f.length;e++)a.w[h++]=f[e]&255,a.w[h++]=f[e]>>8&255,a.w[h++]=f[e]>>16&255,a.w[h++]=f[e]>>24&255;else a.w=g;a.qa=g.symbols;if(!a.w.length){u("Empty ROM: "+
|
|
|
|
|
b);return}if(1==a.w.length){u(a.w[0]);return}}catch(k){a.ea("ROM data error: "+k.message);return}else for(b=d.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e<b.length;e++)a.w[e]=aa(b[e],16);Oc(a)}}
|
|
|
|
|
function Oc(a){if(!rb(a))if(!a.G)F(a);else if(a.w&&a.H){a.B||(a.B=a.w.length);if(a.w.length!=a.B)sb(a,"ROM size ("+q(a.w.length,8,!0)+") does not match specified size ("+q(a.B,8,!0)+")");else{var b;b=a.J;if(yb(a.H,b,a.B,a.K?1:Sb)){var d;for(d=0;d<a.w.length;d++){var c=a.H,e=b+d;c.P[(e&c.w)>>>c.ba].La(e&c.H,a.w[d]&255,e)}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(d=0;d<b.length;d++){for(var f=a,c=b[d],e=f.H,h=f.B,g=[],k=f.J>>>e.ba;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
|
|
|
|
h-=e.ma;e=f.H;f=f.B;h=0;for(c>>>=e.ba;0<f&&c<e.P.length;){k=g[h++];if(!k)break;e.P[c++]=k;f-=e.ma}}delete a.w}}F(a)}}Qa(function(){for(var a=D(document,"pdp11","rom"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Mc(c);nb(c,d)}});function Pc(a){w.call(this,"RAM",a,Pc);this.F=a.addr;this.B=a.size;this.w=!1}A(Pc);m=Pc.prototype;m.ya=function(a,b,d,c){this.H=b;this.f=d;this.I=c;F(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
|
|
|
|
|
m.reset=function(){!this.w&&this.B&&yb(this.H,this.F,this.B,1)&&(this.w=!0);this.w||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=D(document,"pdp11","ram"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Pc(c);nb(c,d)}});function Qc(a){w.call(this,"Keyboard",a,Qc,65536);F(this)}A(Qc);Qc.prototype.ha=function(){return!1};Qc.prototype.ya=function(a,b,d,c){this.w=a;this.f=d;this.I=c;this.fa=null};
|
|
|
|
|
Qa(function(){for(var a=D(document,"pdp11","keyboard"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new Qc(c);nb(c,d)}});function Rc(a){w.call(this,"Debugger",a,Rc);this.la=16;this.S=this.ka=this.M=0;this.U=!1;this.G=-1;this.F=[];this.W={}}A(Rc);var Sc={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
|
|
|
|
function Tc(a,b,d,c){if(d)if(b){0>a.G&&a.F.length&&(a.G=0);if(0>a.G||b!=a.F[a.G])a.F.splice(0,0,b),a.G=0;a.G--}else a.U?b="end":b=a.F[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");d=0;var e=null;c=c||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==c&&!e||!h)a.push(qa(b.substring(d,f))),d=f+1}}return a}
|
|
|
|
|
function Uc(a,b,d){for(d=d||-1;d--&&b.length;){var c=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(c){case "*":c=f*e;break;case "/":if(!e)return!1;c=f/e;break;case "%":if(!e)return!1;c=f%e;break;case "+":c=f+e;break;case "-":c=f-e;break;case "<<":c=f<<e;break;case ">>":c=f>>e;break;case ">>>":c=f>>>e;break;case "<":c=f<e?1:0;break;case "<=":c=f<=e?1:0;break;case ">":c=f>e?1:0;break;case ">=":c=f>=e?1:0;break;case "==":c=f==e?1:0;break;case "!=":c=f!=e?1:0;break;case "&":c=f&e;break;
|
|
|
|
|
case "^":c=f^e;break;case "|":c=f|e;break;case "&&":c=f&&e?1:0;break;case "||":c=f||e?1:0;break;default:return!1}a.push(c|0)}return!0}
|
|
|
|
|
function Tc(a,b,d){var c;if(b){b=Uc(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],q=n.length,n=pa(n);if(!n){f=!0;break}n=Vc(a,n,null,!1===d);if(void 0===n){f=!0;d=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],v=n.length;k.length&&Qc[n]<Qc[k[k.length-1]]&&Sc(g,k,1);k.push(n);b=b.substr(q+v)}Sc(g,k)&&1==g.length||(f=!0);f?d&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Wc(a,null,
|
|
|
|
|
c))}return c}function Uc(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=Tc(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?p(c):"undefined")}for(;(d=b.match(/\[(.*?)]/))&&!(0<=d[1].indexOf("["));)b=b.replace("["+d[1]+"]","unimplemented");for(d=b;c=d.match(/\$([a-z]+)/i);){var e=null;switch(c[1].toLowerCase()){case "ops":e=a.S-a.ka}if(null==e)break;d=d.replace(c[0],e.toString())}return d}
|
|
|
|
|
function Vc(a,b,d,c){var e;null!=b?(e=a.W[b],null==e&&(e=fa(b)),null!=e||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return e}
|
|
|
|
|
function Wc(a,b,d){var c,e=!1;if(void 0!==d){var e=!0,f=d,h=0;c="";if(!h||4<h)h=4;for(var g=0;g<h;g++){c&&(c=","+c);var k=f&255,l=8,n="";l?32<l&&(l=32):l=32;if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;c=n+c;f>>=8}f=d;h=0;g="";h?11<h&&(h=11):h=f&-65536?11:6;if(null==f||isNaN(f))for(;0<h--;)g="?"+g;else for(;0<h--;)g=String.fromCharCode((f&7)+48)+g,f>>=3;c=p(d,0,!0)+" "+d+". "+("0o"+g)+" "+("0b"+c)}a.g((null!=b?b+": ":"")+c);return e}
|
|
|
|
|
function Xc(a,b){if(b)return Wc(a,b,a.W[b]);var d=0;for(b in a.W)Wc(a,b,a.W[b]),d++;return 0<d}function Yc(a){Pc.call(this,a);this.O=X();this.sa=X();this.T=X();this.K=[];this.B=this.R=this.J=[];Zc(this);this.fa=0;$c(this);this.ma=[];ad(this,a.messages);this.na=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return fc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return fc(b,a)})}A(Yc,Pc);
|
|
|
|
|
var bd={"?":"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"},cd="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(" "),
|
|
|
|
|
dd={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],
|
|
|
|
|
function Vc(a,b,d){var c;if(b){b=Wc(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var n=l[e++],p=n.length,n=qa(n);if(!n){f=!0;break}n=Xc(a,n,null,!1===d);if(void 0===n){f=!0;d=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],v=n.length;k.length&&Sc[n]<Sc[k[k.length-1]]&&Uc(g,k,1);k.push(n);b=b.substr(p+v)}Uc(g,k)&&1==g.length||(f=!0);f?d&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(c=g.pop(),d&&Yc(a,null,
|
|
|
|
|
c))}return c}function Wc(a,b){for(var d;(d=b.match(/\{(.*?)}/))&&!(0<=d[1].indexOf("{"));){var c=Vc(a,d[1]);b=b.replace("{"+d[1]+"}",null!=c?q(c):"undefined")}for(;(d=b.match(/\[(.*?)]/))&&!(0<=d[1].indexOf("["));)b=b.replace("["+d[1]+"]","unimplemented");for(d=b;c=d.match(/\$([a-z]+)/i);){var e=null;switch(c[1].toLowerCase()){case "ops":e=a.S-a.ka}if(null==e)break;d=d.replace(c[0],e.toString())}return d}
|
|
|
|
|
function Xc(a,b,d,c){var e;null!=b?(e=a.W[b],null==e&&(e=aa(b,a.la)),null!=e||c||a.g("invalid "+(d?d:"value")+": "+b)):c||a.g("missing "+(d||"value"));return e}function Yc(a,b,d){var c,e=!1;if(void 0!==d){e=!0;c=d;var f=0,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=c&255,l=8,n="";l?32<l&&(l=32):l=32;if(null==k||isNaN(k))for(;0<l--;)n="?"+n;else for(;0<l--;)n=(k&1?"1":"0")+n,k>>=1;h=n+h;c>>=8}c=q(d,0,!0)+" "+d+". "+ga(d,0,!0)+" "+("0b"+h)}a.g((null!=b?b+": ":"")+c);return e}
|
|
|
|
|
function Zc(a,b){if(b)return Yc(a,b,a.W[b]);var d=0;for(b in a.W)Yc(a,b,a.W[b]),d++;return 0<d}function X(a,b){switch(a.la){case 8:return ga(b,void 0);case 10:return b.toString();default:return q(b,void 0)}}
|
|
|
|
|
function $c(a){Rc.call(this,a);this.O=Y();this.ua=Y();this.T=Y();this.K=[];this.B=this.R=this.J=[];ad(this);this.fa=0;bd(this);this.na=[];cd(this,a.messages);this.pa=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return hc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return hc(b,a)})}A($c,Rc);
|
|
|
|
|
var dd={"?":"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"},ed="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(" "),
|
|
|
|
|
fd={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:[38,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:[32],164:[45],165:[35],166:[43],167:[34],168:[37],169:[32],170:[42],171:[33],172:[46],173:[36],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=Yc.prototype;
|
|
|
|
|
m.ya=function(a,b,d,c){this.H=b;this.f=d;this.A=a;(a=cc(a,"messages"))&&ad(this,a);this.Ea=dd;ed(this,function(a){a:{var b=c.H.P,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.H.ba;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=yb[d],n&&c.g(p(n.id)+" %"+p(g<<c.H.ba)+" %%"+p(n.D)+" "+r(n.Va)+" "+r(n.size)+
|
|
|
|
|
" "+l),d!=Pb&&(d=-1),l=0);a+=c.H.la;g++}}});F(this)};
|
|
|
|
|
m.ha=function(a,b,d){var c=this;switch(b){case "debugInput":return this.da=this.L[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",fc(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.G<c.F.length-1&&(b=c.F[++c.G])):40==a.keyCode&&(0<c.G?b=c.F[--c.G]:(b="",c.G=-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.L[b]=d,Ja(d,function(){if(c.da){var a=c.da.value;
|
|
|
|
|
c.da.value="";fc(c,a,!0);return!0}return!1}),!0;case "step":return this.L[b]=d,Ja(d,function(a){var b=!1;ob(c,!0)||(nb(c,!0),b=c.Ja(a?1:0),nb(c,!1));return b}),!0}return!1};m.Ua=function(){this.da&&this.da.focus()};function Y(a){a=a&&a.D;null==a&&(a=-1);return a}m.Wa=function(a,b){var d=255,c=Y(a);-1!==c&&(d=this.H,d=d.P[(c&d.A)>>>d.ba].Ta(c&d.H,c),b&&fd(a,b));return d};m.va=function(a,b){var d=65535,c=Y(a);-1!==c&&(d=zb(this.H,c),b&&fd(a,b));return d};
|
|
|
|
|
m.cb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.H;e.P[(c&e.A)>>>e.ba].Ka(c&e.H,b&255,c);d&&fd(a,d);I(this.f,!0)}};m.xb=function(a,b,d){var c=Y(a);if(-1!==c){var e=this.H,f=c&e.H,h=(c&e.A)>>>e.ba;f!=e.H?e.P[h].wb(f,b&65535,c):(e.P[h++].Ka(f,b&255,c),e.P[h&e.K].Ka(0,b>>8&255,c+1));d&&fd(a,d);I(this.f,!0)}};function X(a){return{D:a,oa:!1}}function gd(a){return[a.D,a.oa]}function hd(a){return{D:a[0],oa:a[1]}}
|
|
|
|
|
function Z(a,b,d){var c;d=(d?a.O:a.sa).D;if(void 0!==b){c=b=Uc(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.K.length;d++){var f=a.K[d].pa[c];if(void 0!==f){c=f.o;void 0!==c&&(e=X(c));break}}if(c=e)return c;d=Tc(a,b,void 0)}null!=d&&(c=X(d));return c}function id(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.yb=Rc(a,b.vb=d[2]))}function fd(a,b){null!=a.D&&(a.D+=b||1)}
|
|
|
|
|
function ad(a,b){a.I=a;a.$=a.zb=536870912;a.ga=null;a.ja=[];var d=Rc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in G){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.$|=G[c],a.g(c+" messages enabled"))}}function ed(a,b){for(var d in G)if(64==G[d]){a.ma[d]=b;break}}
|
|
|
|
|
m.message=function(a,b){b&&(a+=" at "+p(X(this.f.b[7]).D,4));if(this.$&1073741824)this.ja.push(a);else if(!this.ga||a!=this.ga)if(this.ga=a,this.$&-2147483648&&(this.ca(),a+=" (cpu halted)"),this.g(a),this.f){var d=this.f;yc(d);d.Y=0;I(d)}};
|
|
|
|
|
function $c(a){var b;if(Ic(a)){if(!a.N||!a.N.length){a.N=Array(1E3);for(b=0;b<a.N.length;b++)a.N[b]=X();a.Y=0;a.g("instruction history buffer allocated")}if(!a.X||!a.X.length)for(a.X=Array(256),b=0;b<a.X.length;b++)a.X[b]=[b,0]}else a.N&&a.N.length&&a.g("instruction history buffer freed"),a.Y=0,a.N=[],a.X=[]}m.Ca=function(a){if(!jd(this))return!1;this.f.Ca(a);return!0};
|
|
|
|
|
m.Ja=function(a,b,d){if(!jd(this))return!1;this.M=0;a||Ic(this)&&Jc(this,this.f.b[7],0);try{var c=this.f.Ja(a);0<c&&(this.M+=c,kc(this.f,c,!0),gc(this.f,c),this.S++)}catch(e){"number"!=typeof e&&(this.M=0,qb(this.f,e.stack||e.message))}!1!==d&&I(this.f);this.ia(b||!1);return 0<this.M};m.ca=function(a){this.f&&this.f.ca(a)};m.ia=function(a){void 0===a&&(a=!0);this.O=X(this.f.b[7]);a&&1!=this.V?kd(this):ld(this)};
|
|
|
|
|
function jd(a){var b;if(b=a.f&&pb(a.f))b=a.f,b.w.Z?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ob(a.f)?(a=a.f,a.w.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.ra=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.qa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){$c(this);this.S=this.ka=0;this.ga=null;this.M=0;this.O=X(this.f.b[7]);this.w.aa=!1;md(this);a||this.ia()};
|
|
|
|
|
m.save=function(){var a=new J(this);K(a,0,gd(this.O));K(a,1,gd(this.T));K(a,2,[this.F,this.U,this.$]);K(a,3,this.K);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.O=hd(a[b++]),this.T=hd(a[b++]),this.F=a[b][0],"string"==typeof this.F&&(this.F=[this.F]),this.U=a[b][1],this.$|=a[b][2]);a[3]&&(this.K=a[3]);return!0};m.start=function(a,b){this.V||this.g("running");this.w.aa=!0;this.Na=a;this.Oa=b};
|
|
|
|
|
m.stop=function(a,b){if(this.w.aa){this.w.aa=!1;this.M=b-this.Oa;if(!this.V){var d="stopped";if(this.M){var c=a-this.Na,e=0<c?Math.round(1E3*this.M/c):0,d=d+" (";Ic(this)&&(d+=this.S+" opcodes, ",this.ka-=this.S,this.S=0);d+=this.M+" cycles, "+c+" ms, "+e+" hz)"}else mb(this,-2147483648)&&(d+=" (use the 't' command to execute blocked faults)");this.g(d)}this.ia(!0);this.Ua();md(this,this.f.b[7])}};function Ic(a){return 1<a.B.length||!!a.fa}
|
|
|
|
|
function Jc(a,b,d){var c=a.f;if(0<d&&(a.fa&&!--a.fa||Yb(a,b,1,a.B)))return!0;0<=d&&a.X.length&&(a.S++,null!=zb(a.H,b)&&(b=a.N[a.Y],b.D=c.b[7],b.oa=!1,++a.Y==a.N.length&&(a.Y=0)));return!1}function Zc(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.H;Zb(c.P[Y(d)>>>c.ba],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)d=a.J[b],c=a.H,Zb(c.P[Y(d)>>>c.ba],!0);a.J=["bw"];a.ta=0}
|
|
|
|
|
m.wa=function(a,b,d){var c=!0;d||nd(this,a,b,!1,!0);if(a!=this.B){var e=Y(b);if(-1===e)this.g("invalid address: "+p(b.D,4)),c=!1;else{var f=this.H;f.P[e>>>f.ba].wa(e&f.H,a==this.J)}}c&&(a.push(b),d?b.oa=!0:(od(this,a,a.length-1,"set"),$c(this)));return c};function nd(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||od(a,b,h,"cleared");b.splice(h,1);b!=a.B&&(c=a.H,Zb(c.P[d>>>c.ba],b==a.J));g.oa||$c(a);break}}return f}
|
|
|
|
|
function pd(a,b){for(var d=1;d<b.length;d++)od(a,b,d);return b.length-1}function od(a,b,d,c){d=b[d];a.g(b[0]+" "+p(d.D,4)+(c?" "+c:d.vb?' "'+d.vb+'"':""))}function md(a,b){if(void 0!==b)Yb(a,b,1,a.B,!0),a.V=0;else for(var d=1;d<a.B.length;d++){var c=a.B[d];if(c.oa){if(!nd(a,a.B,c,!0))break;d=0}}}
|
|
|
|
|
function Yb(a,b,d,c,e){var f=!1;if(!a.ta++)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&&(nd(a,c,g,!0),e=!0);if(n=g.yb){for(var f=!1,q=0;q<n.length;q++)if(!qd(a,n[q],!0)){if(n[q].indexOf("if")){f=!0;break}for(var v=q+1;v<n.length&&n[v].indexOf("else");v++)q++;if(v==n.length){f=!0;break}}a.f.w.aa||(f=!0)}if(f){e||od(a,c,h,"hit");break}}}a.ta--;return f}
|
|
|
|
|
function rd(a,b,d,c){var e=X(b.D),f=a.va(b,2),h,g;for(g in a.Ea)if(h=a.Ea[g][f&g])break;h||(h=[0]);g="";for(var k=cd[h[0]],l=h.length-1,n=1;n<=l;n++){var q=h[n];if(void 0!==q){var v;v=a;var D=q,q=b,w="",t=void 0,t=void 0,t=D&61440;if(4096==t)t=(f&255)<<24>>24,t=q.D+t&65535,w=r(t);else if(8192==t)t=(f&63)<<1,t=q.D-t&65535,w=r(t);else if(12288==t)t=f&7,w=p(t,2,!0);else if(24576==t)t=f&63,w=p(t,2,!0);else if(t=f&D,D&4032&&(t>>=6,D>>=6),D&63){var D=void 0,y=t&7;switch(t&56){case 0:w="R"+y;break;case 1:w=
|
|
|
|
|
"@R"+y;break;case 2:7>y?w="(R"+y+")+":(D=v.va(q,2),w="#"+r(D));break;case 3:7>y?w="@(R"+y+")+":(D=v.va(q,2),w="@#"+r(D));break;case 4:w="-(R"+y+")";break;case 5:w="@-R("+y+")";break;case 6:D=v.va(q,2);w=r(D)+(7>y?"(R"+y+")":"(PC)");break;case 7:D=v.va(q,2),w="@"+r(D)+(7>y?"(R"+y+")":"(PC)")}}v=w;if(!v||!v.length){g="INVALID";break}0<g.length&&(g+=",");g+=v||"???"}}f="";h=p(e.D,4)+": ";if(-1!==e.D&&-1!==b.D){do if(f+=p(a.Wa(e,1),2),null==e.D)break;while(e.D!=b.D)}h+=oa(f,10);h+=oa(k,7);g&&(h+=" "+
|
|
|
|
|
g);d&&(h=oa(h,40)+";"+d,h=a.f.w.Ga?h+("cycles="+hc(a.f).toString()+" cs="+p(a.f.Qa)):h+(null!=c?"="+c.toString():""));return h}function sd(a,b){var d;switch(b){case "N":d=a.f.i>>12&8;break;case "Z":d=a.f.u&65535?0:4;break;case "V":d=a.f.j&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 Rd(a,b){var d="",c=a.f;8>b?d=(6>b?"R"+b:6==b?"SP":"PC")+("="+p(c.b[b],4)):13>b?d="A"+(b-8)+"="+p(c.Ya[b-8],4):16<=b&&20>b?d="S"+(b-16)+"="+p(c.Ba[b-16],4):20==b&&(d="PS="+p(Bc(c),4));d&&(d+=" ");return d}m.gb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function Sd(a,b,d){var c=[],e=Y(b)>>>0;for(b=0;b<a.K.length;b++){var f=a.K[b],h=f.D>>>0,g=f.Cb;if(e>=h&&e<h+g){e=ta(f.eb,[e-h],a.gb);0<=e?Td(a,b,e,c):d&&(e=~e,Td(a,b,e-1,c),Td(a,b,e,c));break}}return c}
|
|
|
|
|
function Td(a,b,d,c){var e={},f=a.K[b].eb,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.K[b].pa[g],g="."==g.charAt(0)?null:e.l||g);c.push(g);c.push(h);c.push(e.a);c.push(e.c)}function Ud(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Xc(a)||a.g("no variables"),!0;if(!d[2])return Xc(a,d[1]);if(!d[3])return delete a.W[d[1]],!0;var c=Tc(a,d[3]);return void 0!==c?(a.W[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
|
|
|
|
|
function Vd(a,b,d){var c=null;if(b=Z(a,b,!0)){var e=Sd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.D-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+p(e[1],4)+")"+h,d&&a.g(f),c=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.D)&&(h=" - "+r(f)),f=e[4]+" ("+p(e[5],4)+")"+h,d&&a.g(f),c||(c=f))}else d&&a.g("no symbols")}return c}
|
|
|
|
|
function kd(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=Tc(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":c.b[7]=g;a.O=X(c.b[7]);break;case "NF":break;case "ZF":break;case "VF":break;case "CF":break;
|
|
|
|
|
default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}I(c);a.g("updated registers:")}f="";for(e=0;6>e;e++)f+=Rd(a,e);f=f+"\n"+(Rd(a,6)+Rd(a,7));f+=sd(a,"T")+sd(a,"N")+sd(a,"Z")+sd(a,"V")+sd(a,"C");a.g(f);d&&(a.O=X(c.b[7]),ld(a,p(a.O.D,4)))}}function Wd(a,b){b=pa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):Tc(a,b,!0)}
|
|
|
|
|
function Xd(a,b,d){var c="t"!=b;d=Vc(a,d,null,!0)||1;var e=1==d?0:1;"tc"==b&&(e=d,d=1);Ia(d,function(){return nb(a,!0)&&a.Ja(e,c,!1)},function(){I(a.f);nb(a,!1)})}
|
|
|
|
|
function ld(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=ob(a,!1)||a.V?a.M:null;var h=null!=f?"cycles":null,g=Sd(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=rd(a,b,h,f);a.g(f);a.O=b;e-=b.D-k;d++}}}
|
|
|
|
|
function qd(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.g(">> "+b):(a.U&&(a.g("ended assemble at "+p(a.T.D,4)),a.O=a.T,a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ga=null;if(pb(a)&&0<b.length){a.U&&(b="a "+p(a.T.D,4)+" "+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.T=
|
|
|
|
|
n,void 0===f[2])a.g("begin assemble at "+p(n.D,4)),a.U=!0,I(a.f);else{var q;a.g("not supported yet");q=[];if(q.length){for(var v=0;v<q.length;v++)a.cb(n,q[v],1);a.g(rd(a,a.T))}}break;case "b":a:{var D=f[0],w=f[1],t=b;if("?"==w)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 y=D.charAt(1);if("l"==y){var Aa=0,Aa=Aa+pd(a,a.B),Aa=Aa+pd(a,a.R);(Aa+=pd(a,a.J))||a.g("no breakpoints")}else if("n"==y)a.fa=Vc(a,w),a.g("break after "+a.fa+" instruction(s)");else if(void 0===w)a.g("missing breakpoint address");else{var Q=X();if("*"!=w&&(Q=Z(a,w,!0),!Q))break a;"c"==y?null==Q.D?(Zc(a),a.g("all breakpoints cleared")):nd(a,a.B,Q)||nd(a,a.R,Q)||nd(a,a.J,Q)||a.g("breakpoint missing: "+p(Q.D,4)):null!=Q.D&&(id(a,Q,t),"p"==y?a.wa(a.B,Q):"r"==y?a.wa(a.R,Q):"w"==y?a.wa(a.J,Q):a.g("unknown breakpoint command: "+
|
|
|
|
|
y))}}}break;case "c":a.xa&&(a.xa.value="");break;case "d":a:{var Ba,Ca=f[0],aa=f[1],qa=f[2],qe=f[3];if("?"==aa){var ba="";for(Ba in G)a.ma[Ba]&&(ba&&(ba+=","),ba+=Ba);ba+=",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");ba.length&&a.g("dump extension commands:\n\t"+ba)}else if("state"==aa){var td=Yd(a.A,
|
|
|
|
|
!0);"console"==qa?console.log(td):(a.xa&&(a.xa.value=""),a.g(td))}else if("symbols"==aa)for(var mc=0;mc<a.K.length;mc++){var nc=a.K[mc],Da;for(Da in nc.pa)if("."!=Da.charAt(0)){var ud=nc.pa[Da].o;if(void 0!==ud){var vd=nc.pa[Da].l;vd&&(Da=vd);a.g(p(ud,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in G)if(f[1]==Ba){var wd=a.ma[Ba];wd?(f.shift(),f.shift(),wd(f)):a.g("no dump registered for "+aa);break a}aa||(Ca=a.Pa||"db")}else a.Pa=Ca;if("dh"==Ca){var xd=aa,yd=qa,zd="",Ad=0,L=a.Y,ca=a.N;if(ca.length){var R=
|
|
|
|
|
+xd||a.Da,Ea=+yd||10;isNaN(R)?R=Ea:zd="more ";R>ca.length&&(a.g("note: only "+ca.length+" available"),R=ca.length);L-=R;0>L&&(null==ca[ca.length-1].D?(R=L+R,L=0):L+=ca.length);var oc=[];"call"==yd&&(Ea=1E5,oc=["CALL"]);for(void 0!==xd&&a.g(R+" instructions earlier:");0<Ea&&L!=a.Y;){var Bd=ca[L++];if(null==Bd.D)break;var cb=X(Bd.D),re=R--,Cd=rd(a,cb,"history",re);(!oc.length||0<=Cd.indexOf(oc[0]))&&a.g(Cd);cb.$a&&(L+=cb.$a,Ea-=cb.$a,R-=cb.$a);L>=ca.length&&(L=0);a.Da=R;Ad++;Ea--}}Ad||(a.g("no "+zd+
|
|
|
|
|
"history available"),a.Da=void 0)}else{var Bb=Z(a,aa);if(Bb){var Cb=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||qe),Cb=Vc(a,qa)>>>0,65536<Cb&&(Cb=65536));for(var ra="",Db="dd"==Ca?4:"dw"==Ca?2:1,Eb=Db*Cb||128,se=Eb+15>>4||1;se--&&0<Eb;){var Fb=0,pc=0,db,eb="",qc="",aa=p(Bb.D,4);for(db=16;0<db&&0<Eb;db--){var Gb=a.Wa(Bb,1),Fb=Fb|Gb<<(pc++<<3);pc==Db&&(eb+=p(Fb,2*Db),eb+=1==Db?9==db?"-":" ":" ",Fb=pc=0);qc+=32<=Gb&&128>Gb?String.fromCharCode(Gb):".";Eb--}ra&&(ra+="\n");ra+=aa+" "+eb+(0==db?" "+qc:
|
|
|
|
|
"")}ra&&a.g(ra);a.sa=Bb}}}}break;case "e":if("else"==f[0])break;var Hb=1,Dd=255,Ed=a.Wa,Fd=a.cb;"ew"==f[0]&&(Hb=2,Dd=65535,Ed=a.va,Fd=a.xb);var Gd=Hb<<1,Hd=f[1];if(null==Hd)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 Ib=Z(a,Hd);if(Ib)for(var Jb=2;Jb<f.length;Jb++){var fb=Tc(a,f[Jb]);if(void 0===fb){a.g("unrecognized value: "+f[Jb]);break}fb&~Dd&&a.g("warning: "+p(fb)+" exceeds "+Hb+"-byte value");var te=Ed.call(a,
|
|
|
|
|
Ib);a.g("changing "+p(Ib.D,4)+" from "+p(te,Gd,!0)+" to "+p(fb,Gd,!0));Fd.call(a,Ib,fb,Hb)}}break;case "g":a:{var Id=f[1],ue=b;if(void 0!==Id){var rc=Z(a,Id,!0);if(!rc)break a;id(a,rc,ue);a.wa(a.B,rc,!0)}a.Ca(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var sc;if(a.w.aa)sc="halting",a.ca();else{if(ob(a,!0))break a;sc="already halted"}d||a.g(sc)}break;case "i":if("if"==f[0]){var tc;var gb=b.substr(2),gb=pa(gb);Tc(a,gb)?(d||a.g("true: "+gb),tc=!0):(d||a.g("false: "+
|
|
|
|
|
gb),tc=!1);tc||(c=!1)}break;case "k":var ve=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var uc=0,Jd=X(),hb=X(a.f.b[6]);for(a.g("stack trace for "+p(hb.D,4));10>uc;){for(var sa=null,we=256;65536>hb.D>>>0;){Jd.D=a.va(hb,2);if(null==hb.D||!we--)break;for(var xe=a,Kb=Jd,Kd=null,ib=Kb.D,Ld=ib,vc=1;6>=vc&&ib;vc++){if(2<vc){Kb.D=ib;var Lb=rd(xe,Kb);if(0<=Lb.indexOf("JSR")){var Md=Lb.indexOf(" ");if(ib+(Lb.indexOf(" ",Md+1)-Md-
|
|
|
|
|
1)/2==Ld){Kd=Lb;break}}}ib--}Kb.D=Ld;if(sa=Kd)break}if(!sa||null==sa)break;var Nd=null;if("ks"==ve){var Od=sa.match(/[0-9A-F]+$/);Od&&(Nd=Vd(a,Od[0]))}sa=oa(sa,50)+" ;"+(Nd||"stack="+p(hb.D,4));a.g(sa);uc++}uc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Vd(a,f[1],!0);break}break;case "m":a:{var da,ea=null,B=f[1];"?"==B&&(B=void 0);if(void 0!==B){var ia=0;if("all"==B)ia=1878917119,B=null;else if("on"==B)ea=!0,B=null;else if("off"==B)ea=!1,B=null;else{"keys"==B&&(B="key");"kbd"==
|
|
|
|
|
B&&(B="keyboard");for(da in G)if(B==da){ia=G[da];ea=!!(a.$&ia);break}if(!ia){a.g("unknown message category: "+B);break a}}if(ia)if("on"==f[2])a.$|=ia,ea=!0;else if("off"==f[2]&&(a.$&=~ia,ea=!1,1073741824==ia)){for(var wc=0;wc<a.ja.length;wc++)a.g(a.ja[wc]);a.ja=[]}}var ye=0,ja="";for(da in G)if(!B||B==da){var ze=!!(a.$&G[da]);if(null===ea||ea==ze)ja&&(ja+=","),++ye%10||(ja+="\n\t"),"key"==da&&(da="keys"),ja+=da}void 0===B&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
|
|
|
|
a.g((null!==ea?ea?"messages on: ":"messages off: ":"message categories:\n\t")+(ja||"none"));$c(a)}break;case "p":if("print"==f[0]){Wd(a,b.substr(5));break}var Ae="pr"==f[0]?1:0;if(a.V)a.g("step in progress");else{var Pd=X(a.f.b[7]);a.Wa(Pd);a.V?(a.wa(a.B,Pd,!0),a.Ca()||(a.A&&a.A.Ua(),a.V=0)):Xd(a,Ae?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.reset();break}kd(a,f);break;case "s":a:switch(f[1]){case "cs":var jb;void 0!==f[3]&&(jb=+f[3]);switch(f[2]){case "int":a.f.Ha=jb;break;case "start":a.f.Ra=
|
|
|
|
|
jb;break;case "stop":a.f.Ia=jb;break;default:a.g("unknown cs option");break a}void 0!==jb&&ec(a.f);a.g("checksums "+(a.f.w.Ga?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(jc(a.f,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.za.toFixed(2)+"Mhz")+" ("+a.f.Aa+"x)");break;case "?":a.g("debugger options:");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":Xd(a,f[0],f[1]);break;case "u":ld(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ud(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.f.tb+",RELEASE"+(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Wd(a,b.substr(1));break}var kb="commands:",xc;for(xc in bd)kb+="\n"+oa(xc,9)+bd[xc];Ic(a)||(kb+="\nnote: history disabled if no exec breakpoints");
|
|
|
|
|
a.g(kb);break;default:a.g("unknown command: "+b),c=!1}}}catch(Qd){a.g("debugger error: "+(Qd.stack||Qd.message)),c=!1}return c}function fc(a,b,d){b=Rc(a,b,d);for(var c in b)if(!qd(a,b[c]))return!1;return!0}Pa(function(){for(var a=E(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=C(d),c=new Yc(c);lb(c,d)}});
|
|
|
|
|
function Zd(a,b,d){x.call(this,"Computer",a,Zd,67108864);this.w.Z=!1;$d(this,b);this.R=cc(this,"autoPower",a);this.F=0;this.W=a.busWidth||a.buswidth;this.A=ae;this.N=null;this.K=this.U=!1;this.X=cc(this,"url")||"";(Math.random()+.1).toString(36);this.B=be(this);if(this.f=bb("CPU",this.id)){this.I=bb("Debugger",this.id);this.H=new ub({id:this.lb+".bus",busWidth:this.W},this.f,this.I);var c,e=ab(this.id);if((this.G=bb("Panel",this.id))&&this.G.xa)for(b=0;b<e.length;b++)c=e[b],c.ea=this.G.ea,c.g=this.G.g,
|
|
|
|
|
c.xa=this.G.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.ya&&c.ya(this,this.H,this.f,this.I);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.M=c:this.A=parseInt(c,10));var f;if(a=cc(this,"state")||(f=!0,a.state))b=this.S=a,f||(this.K=!0,this.A=ae),this.A&&(this.O=
|
|
|
|
|
new J(this,"1.30.0"),ce(this.O)?b=null:delete this.O);!b&&this.A&&(b=de(this))&&(this.K=!0);if(b){var h=this;wa(b,null,!0,function(a,b,c){c?(h.M=null,h.K=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(h.N=b,h.U=!0);F(h)})}else F(this);this.L.power||(this.R=!0);!d&&this.R&&ee(this,this.Sa)}else u("Unable to find CPU component")}A(Zd);var ae=0;
|
|
|
|
|
function $d(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){u(c.message+" ("+d+")")}}a.V=b}function cc(a,b,d){var c=b.toLowerCase(),c=Ua[b]||Ua[c];void 0===c&&a.V&&(c=a.V[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function ee(a,b,d){for(var c=ab(a.id),e=0;e<=c.length;e++){var f=e<c.length?c[e]:a;if(!pb(f)){pb(f,function(){ee(a,b,d)});return}}b.call(a,d)}
|
|
|
|
|
function fe(a,b){var d=new J(a,"1.30.0","validate");if(ce(d)&&ge(d)){var c=he(d,"timestamp"),e=b?he(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=Zd.prototype;
|
|
|
|
|
m.Sa=function(a){void 0===a&&(a=this.A||(this.N?1:ae));if(!this.F){this.F++;var b=!1,d=!1;this.T=!1;var c=this.O||new J(this,"1.30.0");if(-1==a)b=!0;else if(a>ae){if(ce(c,this.N)){this.J=new J(this,"1.30.0","failsafe");ce(this.J)&&(ie(this,c),a=2,je(this.J));K(this.J,"timestamp",va());ke(this.J);var e=this.A&&!this.K;if(1==a||xa("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=ge(c)){var f=he(c,"code"),h=he(c,"data");f&&("ok"==f?ce(c,h):("error"==f&&
|
|
|
|
|
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ga("user",""),this.B=null)):this.g(f+": "+h),je(c),ce(c)?(d=ge(c),e=!0):d=!1))}e&&fe(this,d?c:null)}else 2==a&&c.clear()}else fe(this);delete this.N;delete this.O}e=ab(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.f&&(d=le(this,h,c,b,d));b=[c,a,d];-1!=a?ee(this,this.ib,b):this.ib(b)}};
|
|
|
|
|
function le(a,b,d,c,e){if(!b.w.Z){b.w.Z=!0;if(b.ra){var f=null;e&&((f=he(d,b.id))||(f=he(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ra(f,c)&&f&&(u("Unable to restore state for "+b.type),a.S&&!a.U?(d.clear(),a.A=ae,window&&window.location.reload()):a.T=!0,b.ra(null),e=!1)}if(!c&&b.kb)for(a=b.kb.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e}
|
|
|
|
|
m.ib=function(a){var b=a[0],d=0>a[1];a=a[2];this.Y=!0;this.w.Z=!0;var c=this.L.power;c&&(c.textContent="Shutdown");this.f&&(le(this,this.f,b,d,a),this.f.Ma());this.T&&(ie(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.F=0};
|
|
|
|
|
function ie(a,b){if(xa("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.X;e.user=d;e.type="bug";e.data=c;wa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
|
|
|
|
function Yd(a,b,d){var c,e="none";if(a.F)return null;a.F--;var f=new J(a,"1.30.0"),h=new J(a,"1.30.0","validate"),g=va();K(h,"timestamp",g);K(f,"timestamp",g);K(f,"version","1.30.0");K(f,"url",window?window.location.href:null);K(f,"browser",window?window.navigator.userAgent:"");a.f&&a.f.qa&&(d&&a.f.ca(),c=a.f.qa(b,d),"object"===typeof c&&K(f,a.f.id,c),d&&(a.f.w.Z=!1,!1===c&&(e=null)));for(var g=ab(a.id),k=0;k<g.length;k++){var l=g[k];l.w.Z&&(l.qa&&(c=l.qa(b,d),"object"===typeof c&&K(f,l.id,c)),d&&
|
|
|
|
|
(l.w.Z=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.B&&me(a,a.B,f.toString()),ke(h)&&ke(f)||(e=null,c=g=!0)):a.A&&(c=!0,g=3==a.A),c&&f.clear(g)):e=f.toString());d&&(a.w.Z=!1,b=a.L.power)&&(b.textContent="Power");a.F=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.I&&mb(this,0)&&this.I.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=ab(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.H&&d.reset&&(this.I&&mb(this,0)&&this.I.message("Resetting "+d.type,void 0),d.reset())}};
|
|
|
|
|
m.start=function(a,b){for(var d=ab(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=ab(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.L[b]=d,d.onclick=function(){c.F||(c.w.Z?Yd(c,!1,!0):ee(c,c.Sa))},!0;case "reset":return this.L[b]=d,d.onclick=function(){if(c.w.Z&&!c.F)if(c.A&&!c.M){var a=xa("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Yd(c,a,!0);!a&&c.S?window&&window.location.reload():c.Sa(ae)}else c.reset(),c.f&&c.f.Ma()},!0;case "save":if(ka()){d.parentNode.removeChild(d);break}this.L[b]=
|
|
|
|
|
d;d.onclick=function(){var a=be(c,!0);if(a){var b=!!(c.A&&!c.M||c.S),d=Yd(c,b);b?me(c,a,d):c.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
|
|
|
|
function be(a,b){var d=a.B;d||(d=Fa("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=ne(a,d))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return d}
|
|
|
|
|
function ne(a,b){a.B=null;var d=wa(la()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ga("user",d.data),a.B=d.data)}catch(e){u(e.message+" ("+c+")")}return a.B}function de(a){var b=null;a.B&&(b=la()+"/api/v1/user?req=load&user="+a.B+"&state="+oe(a,"1.30.0"));return b}
|
|
|
|
|
function me(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=oe(a,"1.30.0");c.data=d;b=wa(la()+"/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),Ga("user",""),a.B=null)}}m.Ua=function(){};
|
|
|
|
|
m.ia=function(a){this.f&&this.f.ia(a);this.G&&this.G.ia(a)};Pa(function(){for(var a=E(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=C(d),d=E(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=C(f),h=new Zd(h,c,!0);lb(h,f);h.R&&ee(h,h.Sa)}});Ka.show.push(function(){for(var a=E(document,"pdp11","computer"),b=0;b<a.length;b++){var d=C(a[b]);(d=bb("Computer",d.id))&&d.Y&&!d.w.Z&&d.Sa(-1)}});
|
|
|
|
|
Ka.exit.push(function(){for(var a=E(document,"pdp11","computer"),b=0;b<a.length;b++){var d=C(a[b]);(d=bb("Computer",d.id))&&d.w.Z&&Yd(d,!(!d.A||d.M),!0)}});function J(a,b,d){this.id=a.id;this.key=oe(a,b,d);this.I=a.I;je(this,a.Eb)}function oe(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}
|
|
|
|
|
J.prototype={constructor:J,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){je(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 je(a,b){a[a.id]={};b&&K(a,"parms",b);a.f=!1}function ke(a){var b=!0;if(za()){var d=JSON.stringify(a[a.id]);Ga(a.key,d)||(u("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function ge(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){u(d.message||d),b=!1}return b}function ce(a,b){return b?(a[a.id]=b,a.f=!0):a.f?!0:za()&&(b=Fa(a.key))?(a[a.id]=b,a.f=!0):!1}function he(a,b){return a[a.id][b]||null}function K(a,b,d){try{a[a.id][b]=d}catch(c){}}var pe=0;
|
|
|
|
|
function Be(a,b,d,c,e,f){e("Loading "+a+"...");wa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Ce(g,a,b,d,c,e,f)})}
|
|
|
|
|
function Ce(a,b,d,c,e,f,h){function g(a,f){if(f)h(f,null);else{if(d){$a(d,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{";c+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
|
|
|
|
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?De(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
|
|
|
|
function De(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=c[2];b("Loading "+e+"...");wa(e,null,!0,function(f,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(f=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{d(a,"missing <"+c[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
|
|
|
|
"");a=a.replace(c[0],h);De(a,b,d)}})}else d(a,null)}
|
|
|
|
|
function Ee(a,b,d,c){function e(a){if(void 0===g){var b=h&&E(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(a))}function f(a){e("Error: "+a);k&&(--pe||Ra(!0));k=!1}var h,g,k=!0;pe++;Za[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));n.appendChild(q)}d||
|
|
|
|
|
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Be(d,null,null,!1,e,function(c,k){if(k)if($a(a,d,c),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--pe||Ra(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--pe||Ra(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(c)}):f(c)};"<"!=b.charAt(0)?Be(b,a,c,!0,e,l):Ce(b,null,a,c,!1,e,l)}else f("missing machine element: "+a)}catch(v){f(v.message)}return k}window.embedPDP11=function(a,b,d,c){Ra(!1);return Ee(a,b,d,c)};window.enableEvents=Ra;window.sendEvent=Sa;})();
|
|
|
|
|
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:[32],164:[45],165:[35],166:[43],167:[34],168:[37],169:[32],170:[42],171:[33],172:[46],173:[36],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=$c.prototype;
|
|
|
|
|
m.ya=function(a,b,d,c){this.H=b;this.f=d;this.w=a;(a=ec(a,"messages"))&&cd(this,a);this.Fa=fd;gd(this,function(a){a:{var b=c.H.P,d=a[0],g=a=0,k=b.length;if(d){a=Z(hd(c,d));if(-1===a){c.g("invalid address: "+d);break a}g=a>>>c.H.ba;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=Ab[d],n&&c.g(q(n.id,8)+" %"+q(g<<c.H.ba,8)+" %%"+q(n.D,8)+" "+t(n.Va)+
|
|
|
|
|
" "+t(n.size)+" "+l),d!=Rb&&(d=-1),l=0);a+=c.H.ma;g++}}});F(this)};
|
|
|
|
|
m.ha=function(a,b,d){var c=this;switch(b){case "debugInput":return this.da=this.L[b]=d,d.onkeydown=function(a){var b;if(13==a.keyCode)b=d.value,d.value="",hc(c,b,!0);else if(27==a.keyCode)d.value=b="";else if(38==a.keyCode?(b=null,c.G<c.F.length-1&&(b=c.F[++c.G])):40==a.keyCode&&(0<c.G?b=c.F[--c.G]:(b="",c.G=-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.L[b]=d,Ka(d,function(){if(c.da){var a=c.da.value;
|
|
|
|
|
c.da.value="";hc(c,a,!0);return!0}return!1}),!0;case "step":return this.L[b]=d,Ka(d,function(a){var b=!1;qb(c,!0)||(pb(c,!0),b=c.Ka(a?1:0),pb(c,!1));return b}),!0}return!1};m.Ua=function(){this.da&&this.da.focus()};function Z(a){a=a&&a.D;null==a&&(a=-1);return a}m.Za=function(a,b){var d=255,c=Z(a);-1!==c&&(d=this.H,d=d.P[(c&d.w)>>>d.ba].Ta(c&d.H,c),b&&id(a,b));return d};m.ta=function(a,b){var d=65535,c=Z(a);-1!==c&&(d=Bb(this.H,c),b&&id(a,b));return d};
|
|
|
|
|
m.eb=function(a,b,d){var c=Z(a);if(-1!==c){var e=this.H;e.P[(c&e.w)>>>e.ba].La(c&e.H,b&255,c);d&&id(a,d);I(this.f,!0)}};m.xb=function(a,b,d){var c=Z(a);if(-1!==c){var e=this.H,f=c&e.H,h=(c&e.w)>>>e.ba;f!=e.H?e.P[h].wb(f,b&65535,c):(e.P[h++].La(f,b&255,c),e.P[h&e.K].La(0,b>>8&255,c+1));d&&id(a,d);I(this.f,!0)}};function Y(a){return{D:a,oa:!1}}function jd(a){return[a.D,a.oa]}function kd(a){return{D:a[0],oa:a[1]}}
|
|
|
|
|
function hd(a,b,d){var c;d=(d?a.O:a.ua).D;if(void 0!==b){c=b=Wc(a,b);var e;if(c.match(/^[a-z_][a-z0-9_]*$/i))for(c=c.toUpperCase(),d=0;d<a.K.length;d++){var f=a.K[d].qa[c];if(void 0!==f){c=f.o;void 0!==c&&(e=Y(c));break}}if(c=e)return c;d=Vc(a,b,void 0)}null!=d&&(c=Y(d));return c}function ld(a,b,d){d&&(d=d.match(/(['"])(.*?)\1/))&&(b.yb=Tc(a,b.vb=d[2]))}function id(a,b){null!=a.D&&(a.D+=b||1)}
|
|
|
|
|
function cd(a,b){a.I=a;a.$=a.zb=536870912;a.ga=null;a.ja=[];var d=Tc(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(d.length)for(var c in G){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.$|=G[c],a.g(c+" messages enabled"))}}function gd(a,b){for(var d in G)if(64==G[d]){a.na[d]=b;break}}
|
|
|
|
|
m.message=function(a,b){b&&(a+=" at "+X(this,Y(this.f.b[7]).D));if(this.$&1073741824)this.ja.push(a);else if(!this.ga||a!=this.ga)if(this.ga=a,this.$&-2147483648&&(this.ca(),a+=" (cpu halted)"),this.g(a),this.f){var d=this.f;Ac(d);d.Y=0;I(d)}};
|
|
|
|
|
function bd(a){var b;if(Kc(a)){if(!a.N||!a.N.length){a.N=Array(1E3);for(b=0;b<a.N.length;b++)a.N[b]=Y();a.Y=0;a.g("instruction history buffer allocated")}if(!a.X||!a.X.length)for(a.X=Array(256),b=0;b<a.X.length;b++)a.X[b]=[b,0]}else a.N&&a.N.length&&a.g("instruction history buffer freed"),a.Y=0,a.N=[],a.X=[]}m.Ca=function(a){if(!md(this))return!1;this.f.Ca(a);return!0};
|
|
|
|
|
m.Ka=function(a,b,d){if(!md(this))return!1;this.M=0;a||Kc(this)&&Lc(this,this.f.b[7],0);try{var c=this.f.Ka(a);0<c&&(this.M+=c,mc(this.f,c,!0),ic(this.f,c),this.S++)}catch(e){"number"!=typeof e&&(this.M=0,sb(this.f,e.stack||e.message))}!1!==d&&I(this.f);this.ia(b||!1);return 0<this.M};m.ca=function(a){this.f&&this.f.ca(a)};m.ia=function(a){void 0===a&&(a=!0);this.O=Y(this.f.b[7]);a&&1!=this.V?nd(this):od(this)};
|
|
|
|
|
function md(a){var b;if(b=a.f&&rb(a.f))b=a.f,b.A.Z?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.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ra=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){bd(this);this.S=this.ka=0;this.ga=null;this.M=0;this.O=Y(this.f.b[7]);this.A.aa=!1;pd(this);a||this.ia()};
|
|
|
|
|
m.save=function(){var a=new J(this);K(a,0,jd(this.O));K(a,1,jd(this.T));K(a,2,[this.F,this.U,this.$]);K(a,3,this.K);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.O=kd(a[b++]),this.T=kd(a[b++]),this.F=a[b][0],"string"==typeof this.F&&(this.F=[this.F]),this.U=a[b][1],this.$|=a[b][2]);a[3]&&(this.K=a[3]);return!0};m.start=function(a,b){this.V||this.g("running");this.A.aa=!0;this.Oa=a;this.Pa=b};
|
|
|
|
|
m.stop=function(a,b){if(this.A.aa){this.A.aa=!1;this.M=b-this.Pa;if(!this.V){var d="stopped";if(this.M){var c=a-this.Oa,e=0<c?Math.round(1E3*this.M/c):0,d=d+" (";Kc(this)&&(d+=this.S+" opcodes, ",this.ka-=this.S,this.S=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.ia(!0);this.Ua();pd(this,this.f.b[7])}};function Kc(a){return 1<a.B.length||!!a.fa}
|
|
|
|
|
function Lc(a,b,d){var c=a.f;if(0<d&&(a.fa&&!--a.fa||$b(a,b,1,a.B)))return!0;0<=d&&a.X.length&&(a.S++,null!=Bb(a.H,b)&&(b=a.N[a.Y],b.D=c.b[7],b.oa=!1,++a.Y==a.N.length&&(a.Y=0)));return!1}function ad(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.H;ac(c.P[Z(d)>>>c.ba],!1)}a.R=["br"];if(void 0!==a.J)for(b=1;b<a.J.length;b++)d=a.J[b],c=a.H,ac(c.P[Z(d)>>>c.ba],!0);a.J=["bw"];a.Da=0}
|
|
|
|
|
m.wa=function(a,b,d){var c=!0;d||qd(this,a,b,!1,!0);if(a!=this.B){var e=Z(b);if(-1===e)this.g("invalid address: "+X(this,b.D)),c=!1;else{var f=this.H;f.P[e>>>f.ba].wa(e&f.H,a==this.J)}}c&&(a.push(b),d?b.oa=!0:(rd(this,a,a.length-1,"set"),bd(this)));return c};function qd(a,b,d,c,e){var f=!1;d=Z(d);for(var h=1;h<b.length;h++){var g=b[h];if(d==Z(g)&&(!c||g.oa)){f=!0;g.oa||e||rd(a,b,h,"cleared");b.splice(h,1);b!=a.B&&(c=a.H,ac(c.P[d>>>c.ba],b==a.J));g.oa||bd(a);break}}return f}
|
|
|
|
|
function sd(a,b){for(var d=1;d<b.length;d++)rd(a,b,d);return b.length-1}function rd(a,b,d,c){d=b[d];a.g(b[0]+" "+X(a,d.D)+(c?" "+c:d.vb?' "'+d.vb+'"':""))}function pd(a,b){if(void 0!==b)$b(a,b,1,a.B,!0),a.V=0;else for(var d=1;d<a.B.length;d++){var c=a.B[d];if(c.oa){if(!qd(a,a.B,c,!0))break;d=0}}}
|
|
|
|
|
function $b(a,b,d,c,e){var f=!1;if(!a.Da++)for(var h=1;!f&&h<c.length;h++){var g=c[h];if(!e||g.oa)for(var k=Z(g),l=0;l<d;l++)if(b+l==k){var n,f=!0;g.oa&&(qd(a,c,g,!0),e=!0);if(n=g.yb){for(var f=!1,p=0;p<n.length;p++)if(!td(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var v=p+1;v<n.length&&n[v].indexOf("else");v++)p++;if(v==n.length){f=!0;break}}a.f.A.aa||(f=!0)}if(f){e||rd(a,c,h,"hit");break}}}a.Da--;return f}
|
|
|
|
|
function ud(a,b,d,c){var e=Y(b.D),f=a.ta(b,2),h,g;for(g in a.Fa)if(h=a.Fa[g][f&g])break;h||(h=[0]);g="";for(var k=ed[h[0]],l=h.length-1,n=1;n<=l;n++){var p=h[n];if(void 0!==p){var v;v=a;var E=p,p=b,x="",r=void 0,r=void 0,r=E&61440;if(4096==r)r=(f&255)<<24>>24,r=p.D+r&65535,x=t(r);else if(8192==r)r=(f&63)<<1,r=p.D-r&65535,x=t(r);else if(12288==r)r=f&7,x=q(r,2,!0);else if(24576==r)r=f&63,x=q(r,2,!0);else if(r=f&E,E&4032&&(r>>=6,E>>=6),E&63){var E=void 0,z=r&7;switch(r&56){case 0:x="R"+z;break;case 1:x=
|
|
|
|
|
"@R"+z;break;case 2:7>z?x="(R"+z+")+":(E=v.ta(p,2),x="#"+t(E));break;case 3:7>z?x="@(R"+z+")+":(E=v.ta(p,2),x="@#"+t(E));break;case 4:x="-(R"+z+")";break;case 5:x="@-R("+z+")";break;case 6:E=v.ta(p,2);x=t(E)+(7>z?"(R"+z+")":"(PC)");break;case 7:E=v.ta(p,2),x="@"+t(E)+(7>z?"(R"+z+")":"(PC)")}}v=x;if(!v||!v.length){g="INVALID";break}0<g.length&&(g+=",");g+=v||"???"}}f="";h=X(a,e.D)+": ";if(-1!==e.D&&-1!==b.D){do if(f+=X(a,a.ta(e,2)),null==e.D)break;while(e.D!=b.D)}h+=pa(f,10);h+=pa(k,7);g&&(h+=" "+
|
|
|
|
|
g);d&&(h=pa(h,40)+";"+d,h=a.f.A.Ha?h+("cycles="+jc(a.f).toString()+" cs="+q(a.f.Qa)):h+(null!=c?"="+c.toString():""));return h}function vd(a,b){var d;switch(b){case "N":d=a.f.i>>12&8;break;case "Z":d=a.f.u&65535?0:4;break;case "V":d=a.f.j&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 Ud(a,b){var d="",c=a.f;8>b?d=(6>b?"R"+b:6==b?"SP":"PC")+("="+X(a,c.b[b])):13>b?d="A"+(b-8)+"="+X(a,c.Ya[b-8]):16<=b&&20>b?d="S"+(b-16)+"="+X(a,c.Ba[b-16]):20==b&&(d="PS="+X(a,Dc(c)));d&&(d+=" ");return d}m.hb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};function Vd(a,b,d){var c=[],e=Z(b)>>>0;for(b=0;b<a.K.length;b++){var f=a.K[b],h=f.D>>>0,g=f.Cb;if(e>=h&&e<h+g){e=ua(f.fb,[e-h],a.hb);0<=e?Wd(a,b,e,c):d&&(e=~e,Wd(a,b,e-1,c),Wd(a,b,e,c));break}}return c}
|
|
|
|
|
function Wd(a,b,d,c){var e={},f=a.K[b].fb,h=0,g=null;0<=d&&d<f.length&&(h=f[d][0],g=f[d][1]);g&&(e=a.K[b].qa[g],g="."==g.charAt(0)?null:e.l||g);c.push(g);c.push(h);c.push(e.a);c.push(e.c)}function Xd(a,b){var d=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(d){if(!d[1])return Zc(a)||a.g("no variables"),!0;if(!d[2])return Zc(a,d[1]);if(!d[3])return delete a.W[d[1]],!0;var c=Vc(a,d[3]);return void 0!==c?(a.W[d[1]]=c,!0):!1}a.g("invalid assignment:"+b);return!1}
|
|
|
|
|
function Yd(a,b,d){var c=null;if(b=hd(a,b,!0)){var e=Vd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.D-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+X(a,e[1])+")"+h,d&&a.g(f),c=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.D)&&(h=" - "+t(f)),f=e[4]+" ("+X(a,e[5])+")"+h,d&&a.g(f),c||(c=f))}else d&&a.g("no symbols")}return c}
|
|
|
|
|
function nd(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=Vc(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":c.b[7]=g;a.O=Y(c.b[7]);break;case "NF":break;case "ZF":break;case "VF":break;case "CF":break;
|
|
|
|
|
default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}I(c);a.g("updated registers:")}f="";for(e=0;6>e;e++)f+=Ud(a,e);f=f+"\n"+(Ud(a,6)+Ud(a,7));f+=vd(a,"T")+vd(a,"N")+vd(a,"Z")+vd(a,"V")+vd(a,"C");a.g(f);d&&(a.O=Y(c.b[7]),od(a,X(a,a.O.D)))}}function Zd(a,b){b=qa(b);var d=b.match(/^(['"])(.*?)\1$/);d?a.g(d[2]):Vc(a,b,!0)}
|
|
|
|
|
function $d(a,b,d){var c="t"!=b;d=Xc(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.Ka(e,c,!1)},function(){I(a.f);pb(a,!1)})}
|
|
|
|
|
function od(a,b,d,c){if(b=hd(a,b,!0)){void 0===c&&(c=1);var e=256;if(void 0!==d){c=hd(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.V?a.M:null;var h=null!=f?"cycles":null,g=Vd(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=ud(a,b,h,f);a.g(f);a.O=b;e-=b.D-k;d++}}}
|
|
|
|
|
function td(a,b,d){var c=!0;try{b.length&&"end"!=b?d||a.g(">> "+b):(a.U&&(a.g("ended assemble at "+X(a,a.T.D)),a.O=a.T,a.U=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ga=null;if(rb(a)&&0<b.length){a.U&&(b="a "+X(a,a.T.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=hd(a,f[1],!0);if(n)if(a.T=
|
|
|
|
|
n,void 0===f[2])a.g("begin assemble at "+X(a,n.D)),a.U=!0,I(a.f);else{var p;a.g("not supported yet");p=[];if(p.length){for(var v=0;v<p.length;v++)a.eb(n,p[v],1);a.g(ud(a,a.T))}}break;case "b":a:{var E=f[0],x=f[1],r=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 z=E.charAt(1);if("l"==z){var Ba=0,Ba=Ba+sd(a,a.B),Ba=Ba+sd(a,a.R);(Ba+=sd(a,a.J))||a.g("no breakpoints")}else if("n"==z)a.fa=Xc(a,x),a.g("break after "+a.fa+" instruction(s)");else if(void 0===x)a.g("missing breakpoint address");else{var Q=Y();if("*"!=x&&(Q=hd(a,x,!0),!Q))break a;"c"==z?null==Q.D?(ad(a),a.g("all breakpoints cleared")):qd(a,a.B,Q)||qd(a,a.R,Q)||qd(a,a.J,Q)||a.g("breakpoint missing: "+X(a,Q.D)):null!=Q.D&&(ld(a,Q,r),"p"==z?a.wa(a.B,Q):"r"==z?a.wa(a.R,Q):"w"==z?a.wa(a.J,Q):
|
|
|
|
|
a.g("unknown breakpoint command: "+z))}}}break;case "c":a.xa&&(a.xa.value="");break;case "d":a:{var Ca,Da=f[0],ba=f[1],ra=f[2],te=f[3];if("?"==ba){var ca="";for(Ca in G)a.na[Ca]&&(ca&&(ca+=","),ca+=Ca);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 wd=ae(a.w,!0);"console"==ra?console.log(wd):(a.xa&&(a.xa.value=""),a.g(wd))}else if("symbols"==ba)for(var oc=0;oc<a.K.length;oc++){var pc=a.K[oc],Ea;for(Ea in pc.qa)if("."!=Ea.charAt(0)){var xd=pc.qa[Ea].o;if(void 0!==xd){var yd=pc.qa[Ea].l;yd&&(Ea=yd);a.g(X(a,xd)+" "+Ea)}}}else{if("d"==Da){for(Ca in G)if(f[1]==Ca){var zd=a.na[Ca];zd?(f.shift(),f.shift(),zd(f)):a.g("no dump registered for "+ba);break a}ba||(Da=a.Wa||"db")}else a.Wa=Da;if("dh"==Da){var Ad=ba,Bd=ra,Cd="",
|
|
|
|
|
Dd=0,M=a.Y,da=a.N;if(da.length){var R=+Ad||a.Ea,Fa=+Bd||10;isNaN(R)?R=Fa:Cd="more ";R>da.length&&(a.g("note: only "+da.length+" available"),R=da.length);M-=R;0>M&&(null==da[da.length-1].D?(R=M+R,M=0):M+=da.length);var qc=[];"call"==Bd&&(Fa=1E5,qc=["CALL"]);for(void 0!==Ad&&a.g(R+" instructions earlier:");0<Fa&&M!=a.Y;){var Ed=da[M++];if(null==Ed.D)break;var db=Y(Ed.D),ue=R--,Fd=ud(a,db,"history",ue);(!qc.length||0<=Fd.indexOf(qc[0]))&&a.g(Fd);db.ab&&(M+=db.ab,Fa-=db.ab,R-=db.ab);M>=da.length&&(M=
|
|
|
|
|
0);a.Ea=R;Dd++;Fa--}}Dd||(a.g("no "+Cd+"history available"),a.Ea=void 0)}else{var Db=hd(a,ba);if(Db){var Eb=0;ra&&("l"==ra.charAt(0)&&(ra=ra.substr(1)||te),Eb=Xc(a,ra)>>>0,65536<Eb&&(Eb=65536));for(var sa="",Fb="dd"==Da?4:"dw"==Da?2:1,Gb=Fb*Eb||128,ve=Gb+15>>4||1;ve--&&0<Gb;){var Hb=0,rc=0,eb,fb="",sc="",ba=X(a,Db.D);for(eb=16;0<eb&&0<Gb;eb--){var Ib=a.Za(Db,1),Hb=Hb|Ib<<(rc++<<3);rc==Fb&&(fb+=q(Hb,2*Fb),fb+=1==Fb?9==eb?"-":" ":" ",Hb=rc=0);sc+=32<=Ib&&128>Ib?String.fromCharCode(Ib):".";Gb--}sa&&
|
|
|
|
|
(sa+="\n");sa+=ba+" "+fb+(0==eb?" "+sc:"")}sa&&a.g(sa);a.ua=Db}}}}break;case "e":if("else"==f[0])break;var Jb=1,Gd=255,Hd=a.Za,Id=a.eb;"ew"==f[0]&&(Jb=2,Gd=65535,Hd=a.ta,Id=a.xb);var Jd=Jb<<1,Kd=f[1];if(null==Kd)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 Kb=hd(a,Kd);if(Kb)for(var Lb=2;Lb<f.length;Lb++){var gb=Vc(a,f[Lb]);if(void 0===gb){a.g("unrecognized value: "+f[Lb]);break}gb&~Gd&&a.g("warning: "+q(gb)+" exceeds "+
|
|
|
|
|
Jb+"-byte value");var we=Hd.call(a,Kb);a.g("changing "+X(a,Kb.D)+" from "+q(we,Jd,!0)+" to "+q(gb,Jd,!0));Id.call(a,Kb,gb,Jb)}}break;case "g":a:{var Ld=f[1],xe=b;if(void 0!==Ld){var tc=hd(a,Ld,!0);if(!tc)break a;ld(a,tc,xe);a.wa(a.B,tc,!0)}a.Ca(!0)||d||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var uc;if(a.A.aa)uc="halting",a.ca();else{if(qb(a,!0))break a;uc="already halted"}d||a.g(uc)}break;case "i":if("if"==f[0]){var vc;var hb=b.substr(2),hb=qa(hb);Vc(a,hb)?(d||a.g("true: "+
|
|
|
|
|
hb),vc=!0):(d||a.g("false: "+hb),vc=!1);vc||(c=!1)}break;case "k":var ye=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var wc=0,Md=Y(),ib=Y(a.f.b[6]);for(a.g("stack trace for "+X(a,ib.D));10>wc;){for(var ta=null,ze=256;65536>ib.D>>>0;){Md.D=a.ta(ib,2);if(null==ib.D||!ze--)break;for(var Ae=a,Mb=Md,Nd=null,jb=Mb.D,Od=jb,xc=1;6>=xc&&jb;xc++){if(2<xc){Mb.D=jb;var Nb=ud(Ae,Mb);if(0<=Nb.indexOf("JSR")){var Pd=Nb.indexOf(" ");if(jb+
|
|
|
|
|
(Nb.indexOf(" ",Pd+1)-Pd-1)/2==Od){Nd=Nb;break}}}jb--}Mb.D=Od;if(ta=Nd)break}if(!ta||null==ta)break;var Qd=null;if("ks"==ye){var Rd=ta.match(/[0-9A-F]+$/);Rd&&(Qd=Yd(a,Rd[0]))}ta=pa(ta,50)+" ;"+(Qd||"stack="+X(a,ib.D));a.g(ta);wc++}wc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Yd(a,f[1],!0);break}break;case "m":a:{var ea,fa=null,C=f[1];"?"==C&&(C=void 0);if(void 0!==C){var ja=0;if("all"==C)ja=1878917119,C=null;else if("on"==C)fa=!0,C=null;else if("off"==C)fa=!1,C=null;else{"keys"==
|
|
|
|
|
C&&(C="key");"kbd"==C&&(C="keyboard");for(ea in G)if(C==ea){ja=G[ea];fa=!!(a.$&ja);break}if(!ja){a.g("unknown message category: "+C);break a}}if(ja)if("on"==f[2])a.$|=ja,fa=!0;else if("off"==f[2]&&(a.$&=~ja,fa=!1,1073741824==ja)){for(var yc=0;yc<a.ja.length;yc++)a.g(a.ja[yc]);a.ja=[]}}var Be=0,ka="";for(ea in G)if(!C||C==ea){var Ce=!!(a.$&G[ea]);if(null===fa||fa==Ce)ka&&(ka+=","),++Be%10||(ka+="\n\t"),"key"==ea&&(ea="keys"),ka+=ea}void 0===C&&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")+(ka||"none"));bd(a)}break;case "p":if("print"==f[0]){Zd(a,b.substr(5));break}var De="pr"==f[0]?1:0;if(a.V)a.g("step in progress");else{var Sd=Y(a.f.b[7]);a.Za(Sd);a.V?(a.wa(a.B,Sd,!0),a.Ca()||(a.w&&a.w.Ua(),a.V=0)):$d(a,De?"tr":"t")}break;case "r":if("reset"==b){a.w&&a.w.reset();break}nd(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.la=kb;else{a.g("invalid base: "+kb);break}}a.g("default base: "+
|
|
|
|
|
a.la);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.Ra=lb;break;case "stop":a.f.Ja=lb;break;default:a.g("unknown cs option");break a}void 0!==lb&&gc(a.f);a.g("checksums "+(a.f.A.Ha?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(lc(a.f,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.f.za.toFixed(2)+"Mhz")+" ("+a.f.Aa+"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":$d(a,f[0],f[1]);break;case "u":od(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xd(a,b.substr(3))||(c=!1);break}a.g("PDP11js version 1.30.0 ("+a.f.tb+",RELEASE"+(tb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(window?window.navigator.userAgent:
|
|
|
|
|
"");break;case "?":if(f[1]){Zd(a,b.substr(1));break}var mb="commands:",zc;for(zc in dd)mb+="\n"+pa(zc,9)+dd[zc];Kc(a)||(mb+="\nnote: history disabled if no exec breakpoints");a.g(mb);break;default:a.g("unknown command: "+b),c=!1}}}catch(Td){a.g("debugger error: "+(Td.stack||Td.message)),c=!1}return c}function hc(a,b,d){b=Tc(a,b,d);for(var c in b)if(!td(a,b[c]))return!1;return!0}Qa(function(){for(var a=D(document,"pdp11","debugger"),b=0;b<a.length;b++){var d=a[b],c=B(d),c=new $c(c);nb(c,d)}});
|
|
|
|
|
function be(a,b,d){w.call(this,"Computer",a,be,67108864);this.A.Z=!1;ce(this,b);this.R=ec(this,"autoPower",a);this.F=0;this.W=a.busWidth||a.buswidth;this.w=de;this.N=null;this.K=this.U=!1;this.X=ec(this,"url")||"";(Math.random()+.1).toString(36);this.B=ee(this);if(this.f=cb("CPU",this.id)){this.I=cb("Debugger",this.id);this.H=new wb({id:this.lb+".bus",busWidth:this.W},this.f,this.I);var c,e=bb(this.id);if((this.G=cb("Panel",this.id))&&this.G.xa)for(b=0;b<e.length;b++)c=e[b],c.ea=this.G.ea,c.g=this.G.g,
|
|
|
|
|
c.xa=this.G.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.ya&&c.ya(this,this.H,this.f,this.I);b=null;c=a.resume;void 0!==c&&(1<c.length?b=this.M=c:this.w=parseInt(c,10));var f;if(a=ec(this,"state")||(f=!0,a.state))b=this.S=a,f||(this.K=!0,this.w=de),this.w&&(this.O=
|
|
|
|
|
new J(this,"1.30.0"),fe(this.O)?b=null:delete this.O);!b&&this.w&&(b=ge(this))&&(this.K=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.M=null,h.K=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(h.N=b,h.U=!0);F(h)})}else F(this);this.L.power||(this.R=!0);!d&&this.R&&he(this,this.Sa)}else u("Unable to find CPU component")}A(be);var de=0;
|
|
|
|
|
function ce(a,b){if(!b){var d;if("object"==typeof resources&&(d=resources.parms))try{b=eval("("+d+")")}catch(c){u(c.message+" ("+d+")")}}a.V=b}function ec(a,b,d){var c=b.toLowerCase(),c=Va[b]||Va[c];void 0===c&&a.V&&(c=a.V[b]);void 0===c&&d&&(c=d[b]);void 0===c&&"object"==typeof resources&&resources[b]&&(c=b);return c}function he(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(){he(a,b,d)});return}}b.call(a,d)}
|
|
|
|
|
function ie(a,b){var d=new J(a,"1.30.0","validate");if(fe(d)&&je(d)){var c=ke(d,"timestamp"),e=b?ke(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=be.prototype;
|
|
|
|
|
m.Sa=function(a){void 0===a&&(a=this.w||(this.N?1:de));if(!this.F){this.F++;var b=!1,d=!1;this.T=!1;var c=this.O||new J(this,"1.30.0");if(-1==a)b=!0;else if(a>de){if(fe(c,this.N)){this.J=new J(this,"1.30.0","failsafe");fe(this.J)&&(le(this,c),a=2,me(this.J));K(this.J,"timestamp",wa());ne(this.J);var e=this.w&&!this.K;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(d=je(c)){var f=ke(c,"code"),h=ke(c,"data");f&&("ok"==f?fe(c,h):("error"==f&&
|
|
|
|
|
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.B=null)):this.g(f+": "+h),me(c),fe(c)?(d=je(c),e=!0):d=!1))}e&&ie(this,d?c:null)}else 2==a&&c.clear()}else ie(this);delete this.N;delete this.O}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.f&&(d=oe(this,h,c,b,d));b=[c,a,d];-1!=a?he(this,this.jb,b):this.jb(b)}};
|
|
|
|
|
function oe(a,b,d,c,e){if(!b.A.Z){b.A.Z=!0;if(b.sa){var f=null;e&&((f=ke(d,b.id))||(f=ke(d,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,c)&&f&&(u("Unable to restore state for "+b.type),a.S&&!a.U?(d.clear(),a.w=de,window&&window.location.reload()):a.T=!0,b.sa(null),e=!1)}if(!c&&b.kb)for(a=b.kb.split("|"),d=0;d<a.length;d++)b.status(a[d])}return e}
|
|
|
|
|
m.jb=function(a){var b=a[0],d=0>a[1];a=a[2];this.Y=!0;this.A.Z=!0;var c=this.L.power;c&&(c.textContent="Shutdown");this.f&&(oe(this,this.f,b,d,a),this.f.Na());this.T&&(le(this,b),b.clear());!d&&this.J&&(this.J.clear(),delete this.J);this.F=0};
|
|
|
|
|
function le(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.X;e.user=d;e.type="bug";e.data=c;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
|
|
|
|
function ae(a,b,d){var c,e="none";if(a.F)return null;a.F--;var f=new J(a,"1.30.0"),h=new J(a,"1.30.0","validate"),g=wa();K(h,"timestamp",g);K(f,"timestamp",g);K(f,"version","1.30.0");K(f,"url",window?window.location.href:null);K(f,"browser",window?window.navigator.userAgent:"");a.f&&a.f.ra&&(d&&a.f.ca(),c=a.f.ra(b,d),"object"===typeof c&&K(f,a.f.id,c),d&&(a.f.A.Z=!1,!1===c&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.Z&&(l.ra&&(c=l.ra(b,d),"object"===typeof c&&K(f,l.id,c)),d&&
|
|
|
|
|
(l.A.Z=!1,!1===c&&(e=null)))}e&&(d?(g=c=!1,b?(a.B&&pe(a,a.B,f.toString()),ne(h)&&ne(f)||(e=null,c=g=!0)):a.w&&(c=!0,g=3==a.w),c&&f.clear(g)):e=f.toString());d&&(a.A.Z=!1,b=a.L.power)&&(b.textContent="Power");a.F=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.I&&ob(this,0)&&this.I.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var d=a[b];d!==this&&d!==this.H&&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.L[b]=d,d.onclick=function(){c.F||(c.A.Z?ae(c,!1,!0):he(c,c.Sa))},!0;case "reset":return this.L[b]=d,d.onclick=function(){if(c.A.Z&&!c.F)if(c.w&&!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.");ae(c,a,!0);!a&&c.S?window&&window.location.reload():c.Sa(de)}else c.reset(),c.f&&c.f.Na()},!0;case "save":if(la()){d.parentNode.removeChild(d);break}this.L[b]=
|
|
|
|
|
d;d.onclick=function(){var a=ee(c,!0);if(a){var b=!!(c.w&&!c.M||c.S),d=ae(c,b);b?pe(c,a,d):c.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
|
|
|
|
function ee(a,b){var d=a.B;d||(d=Ga("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=qe(a,d))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return d}
|
|
|
|
|
function qe(a,b){a.B=null;var d=xa(ma()+"/api/v1/user?req=verify&user="+b),c=d[1];if(!d[0]&&c)try{d=eval("("+c+")"),d.code&&"ok"==d.code&&(Ha("user",d.data),a.B=d.data)}catch(e){u(e.message+" ("+c+")")}return a.B}function ge(a){var b=null;a.B&&(b=ma()+"/api/v1/user?req=load&user="+a.B+"&state="+re(a,"1.30.0"));return b}
|
|
|
|
|
function pe(a,b,d){if(d){var c={req:"store"};c.user=b;c.state=re(a,"1.30.0");c.data=d;b=xa(ma()+"/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),Ha("user",""),a.B=null)}}m.Ua=function(){};
|
|
|
|
|
m.ia=function(a){this.f&&this.f.ia(a);this.G&&this.G.ia(a)};Qa(function(){for(var a=D(document,"pdp11-machine"),b=0;b<a.length;b++)for(var d=a[b],c=B(d),d=D(d,"pdp11","computer"),e=0;e<d.length;e++){var f=d[e],h=B(f),h=new be(h,c,!0);nb(h,f);h.R&&he(h,h.Sa)}});La.show.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=cb("Computer",d.id))&&d.Y&&!d.A.Z&&d.Sa(-1)}});
|
|
|
|
|
La.exit.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var d=B(a[b]);(d=cb("Computer",d.id))&&d.A.Z&&ae(d,!(!d.w||d.M),!0)}});function J(a,b,d){this.id=a.id;this.key=re(a,b,d);this.I=a.I;me(this,a.Eb)}function re(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}
|
|
|
|
|
J.prototype={constructor:J,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){me(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 me(a,b){a[a.id]={};b&&K(a,"parms",b);a.f=!1}function ne(a){var b=!0;if(Aa()){var d=JSON.stringify(a[a.id]);Ha(a.key,d)||(u("Unable to store "+d.length+" bytes in browser local storage"),b=!1)}return b}function je(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(d){u(d.message||d),b=!1}return b}function fe(a,b){return b?(a[a.id]=b,a.f=!0):a.f?!0:Aa()&&(b=Ga(a.key))?(a[a.id]=b,a.f=!0):!1}function ke(a,b){return a[a.id][b]||null}function K(a,b,d){try{a[a.id][b]=d}catch(c){}}var se=0;
|
|
|
|
|
function Ee(a,b,d,c,e,f){e("Loading "+a+"...");xa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Fe(g,a,b,d,c,e,f)})}
|
|
|
|
|
function Fe(a,b,d,c,e,f,h){function g(a,f){if(f)h(f,null);else{if(d){ab(d,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);c?"}"==c.slice(-1)?(c=c.slice(0,-1),1<c.length&&(c+=",")):c='{state:"'+c+'",':c="{";c+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+d+"$2"+(c?" parms='"+c+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDP11js$2"),
|
|
|
|
|
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pdp11$2"));g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Ge(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
|
|
|
|
function Ge(a,b,d){var c;if(c=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=c[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)d(a,"unable to resolve XML reference: "+c[0]+" ("+g+")");else{if(f=c[3])if(g=h.match(new RegExp("<"+c[1]+"[^>]*>"))){for(var k=g[0],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{d(a,"missing <"+c[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
|
|
|
|
"");a=a.replace(c[0],h);Ge(a,b,d)}})}else d(a,null)}
|
|
|
|
|
function He(a,b,d,c){function e(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=oa(a))}function f(a){e("Error: "+a);k&&(--se||Sa(!0));k=!1}var h,g,k=!0;se++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=l:p.appendChild(document.createTextNode(l));n.appendChild(p)}d||
|
|
|
|
|
(d="/versions/pdp11/1.30.0/components.xsl");l=function(c,g){g?Ee(d,null,null,!1,e,function(c,k){if(k)if(ab(a,d,c),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--se||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--se||Sa(!0)):f("invalid machine element: "+
|
|
|
|
|
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(c)}):f(c)};"<"!=b.charAt(0)?Ee(b,a,c,!0,e,l):Fe(b,null,a,c,!1,e,l)}else f("missing machine element: "+a)}catch(v){f(v.message)}return k}window.embedPDP11=function(a,b,d,c){Sa(!1);return He(a,b,d,c)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
|
|
|
|
|