Bumped version to 1.30 in honor of the PDP11 module that's being integrated, along with my first attempt to use a newer version of the Closure Compiler (ie, the JavaScript version), as well as giving Gulp a try -- although Gulp leaves just as bad a taste in my mouth as Grunt did
This commit is contained in:
parent
bbaf0d141f
commit
3bd02c7e19
298 changed files with 16473 additions and 3885 deletions
|
|
@ -8,163 +8,163 @@ function r(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.
|
|||
function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}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,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Ka(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};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 c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();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(c){r(""+("An unexpected exception occurred:\n\n"+c.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 t(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.ob=b.comment;this.Jb=b;b=this.id.indexOf(".");0>b?this.Za=this.id:(this.pb=this.id.substr(0,b),this.Za=this.id.substr(b+1));this[a]=c;this.A={Ha:!1,Ea:!1,ab:!1,X:!1,Ga:!1};this.Xa=null;this.A.Ga=!1;this.K={};this.F=null;this.Y=d||0;u.push(this)}var Ua=void 0,Va={};
|
||||
function t(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.lb=b.comment;this.Gb=b;b=this.id.indexOf(".");0>b?this.Ya=this.id:(this.mb=this.id.substr(0,b),this.Ya=this.id.substr(b+1));this[a]=c;this.A={ready:!1,Ea:!1,Wa:!1,X:!1,error:!1};this.Va=null;this.A.error=!1;this.K={};this.F=null;this.Y=d||0;u.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 c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function v(a,b){b||(b=t);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={}),u=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},u=[];function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function cb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
|
||||
function mb(a,b){for(var c=y(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var e=c[d].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=w(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function y(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,c){switch(b){case "clear":return this.K[b]||(this.K[b]=c,c.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.ya=this.K[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.ea=function(a){this.u(a,this.Za)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.Za+": "+a)},ea:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},sa:function(){return this.A.X=!0},ra:function(a,b){b&&(this.A.X=!1);return!0}};function nb(a,b){if(a.F){a===a.F?b|=0:b=b||a.Y;var c=a.F.Y&b;return!!b&&c===b||!!(c&a.F.Db)}return!1}
|
||||
function ob(a,b){if(a.A.ab)return a.A.Ea&&(a.A.Ea=!1),a.A.ab=!1;if(a.A.Ga)return a.u(a.toString()+" error"),!1;a.A.Ea=b;return a.A.Ea}function pb(a,b){a.A.Ea&&(b?a.A.ab=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Ea}function A(a){if(!a.A.Ga&&(a.A.Ha=!0,a.A.Ha)){var b=a.Xa;a.Xa=null;b&&b()}}function qb(a,b){b&&(a.A.Ha?b():a.Xa=b);return a.A.Ha}function rb(a,b){a.A.Ga=!0;a.ea(b)}
|
||||
this.ea=function(a){this.u(a,this.Ya)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.Ya+": "+a)},ea:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},sa:function(){return this.A.X=!0},ra:function(a,b){b&&(this.A.X=!1);return!0}};function nb(a,b){if(a.F){a===a.F?b|=0:b=b||a.Y;var c=a.F.Y&b;return!!b&&c===b||!!(c&a.F.Ab)}return!1}
|
||||
function ob(a,b){if(a.A.Wa)return a.A.Ea&&(a.A.Ea=!1),a.A.Wa=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Ea=b;return a.A.Ea}function pb(a,b){a.A.Ea&&(b?a.A.Wa=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Ea}function A(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Va;a.Va=null;b&&b()}}function qb(a,b){b&&(a.A.ready?b():a.Va=b);return a.A.ready}function rb(a,b){a.A.error=!0;a.ea(b)}
|
||||
var sb="undefined"!==typeof ArrayBuffer,C={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 tb(a){t.call(this,"Panel",a,tb)}v(tb);m=tb.prototype;m.ha=function(a,b,c,d){return this.D&&this.D.ha(a,b,c,d)||this.b&&this.b.ha(a,b,c,d)||this.F&&this.F.ha(a,b,c,d)?!0:this.parent.ha.call(this,a,b,c,d)};m.za=function(a,b,c,d){this.D=a;this.H=b;this.b=c;this.F=d};
|
||||
m.sa=function(a,b){b||ub();return!0};m.ra=function(){return!0};m.ia=function(){};function ub(){for(var a=!1,b=y(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],e=w(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new tb(e));mb(f,d);a&&A(f)}}Qa(ub);
|
||||
function vb(a,b,c){t.call(this,"Bus",a,vb);this.b=b;this.F=c;this.w=a.busWidth||16;this.D=Math.pow(2,this.w);this.j=this.D-1|0;this.aa=16>=this.w?10:20>=this.w?12:24>=this.w?14:15;this.la=1<<this.aa;this.C=this.la>>2;this.i=this.la-1;this.H=this.D/this.la|0;this.G=this.H-1;a=new D;wb(a,this.F);this.P=Array(this.H);for(b=0;b<this.H;b++)this.P[b]=a;A(this)}v(vb);vb.prototype.reset=function(){};vb.prototype.sa=function(a,b){b||this.reset();return!0};
|
||||
function xb(a,b,c,d){for(var e=b,f=c,h=e>>>a.aa;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==d){if(e+f<=g.B)return g.Ua+=g.B-e,g.B=e,!0;if(e>=g.B+g.Ua){l=g.size-(e-k);l>f&&(l=f);g.Ua=e-g.B+l;e=k+a.la;f-=l;h++;continue}}return yb(1,e,f)}e=new D(e,l,a.la,d);wb(e,a.F,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+ea(b)),!0):yb(2,b,c)}function Ab(a,b){return a.P[(b&a.j)>>>a.aa].Sa(b&a.i,b)}
|
||||
function xb(a,b,c,d){for(var e=b,f=c,h=e>>>a.aa;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==d){if(e+f<=g.B)return g.Ta+=g.B-e,g.B=e,!0;if(e>=g.B+g.Ta){l=g.size-(e-k);l>f&&(l=f);g.Ta=e-g.B+l;e=k+a.la;f-=l;h++;continue}}return yb(1,e,f)}e=new D(e,l,a.la,d);wb(e,a.F,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+ea(b)),!0):yb(2,b,c)}function Ab(a,b){return a.P[(b&a.j)>>>a.aa].Ra(b&a.i,b)}
|
||||
function yb(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Bb;if(sb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Bb=256===(new Uint16Array(Nb))[0]}else Bb=!1;var Ob=Bb;
|
||||
function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.B=a;this.Ua=b;this.size=c||0;this.type=d||Qb;this.C=d==Rb;wb(this);this.va=this.Fb=!1;if(c)if(sb)this.K=new ArrayBuffer(c),this.D=new DataView(this.K,0,c),this.i=new Uint8Array(this.K,0,c),this.L=new Uint16Array(this.K,0,c>>1),this.b=new Int32Array(this.K,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,zb=["NONE","RAM","ROM","VID","H/W"],Pb=0;
|
||||
function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.B=a;this.Ta=b;this.size=c||0;this.type=d||Qb;this.C=d==Rb;wb(this);this.va=this.Cb=!1;if(c)if(sb)this.K=new ArrayBuffer(c),this.D=new DataView(this.K,0,c),this.i=new Uint8Array(this.K,0,c),this.L=new Uint16Array(this.K,0,c>>1),this.b=new Int32Array(this.K,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,zb=["NONE","RAM","ROM","VID","H/W"],Pb=0;
|
||||
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(sb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(sb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},xa:function(a,b){b?0===this.w++&&Wb(this,Xb,!1):0===this.j++&&Yb(this,Xb,!1)},M:function(){this.F&&nb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.B),!0);
|
||||
return 255},H:function(a,b){this.F&&nb(this.F,129)&&this.F.message("attempt to write "+ea(b)+" to invalid block %"+q(this.B),!0)},V:function(a,b){return this.G(a++,b++)|this.G(a,b)<<8},oa:function(a,b,c){this.J(a++,b&255,c++);this.J(a,b>>8,c)},S:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},$:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ga:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.va=!0},na:function(a,b){var c=
|
||||
a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.va=!0},O:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,1,c.O)&&c.ba(!0)}return this.Sa(a,b)},U:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,2,c.O)&&c.ba(!0)}return this.xb(a,b)},da:function(a,b,c){if(this.F&&null!=this.B){var d=this.F;Zb(d,this.B+a,1,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.La(a,b,c)},ka:function(a,b,c){if(this.F&&
|
||||
null!=this.B){var d=this.F;Zb(d,this.B+a,2,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.Ab(a,b,c)},N:function(a){return this.i[a]},R:function(a){return this.i[a]},T:function(a){return this.D.getUint16(a,!0)},W:function(a){return a&1?this.i[a]|this.i[a+1]<<8:this.L[a>>1]},ca:function(a,b){this.i[a]=b;this.va=!0},fa:function(a,b){this.i[a]=b;this.va=!0},ja:function(a,b){this.D.setUint16(a,b,!0);this.va=!0},pa:function(a,b){a&1?(this.i[a]=b,this.i[a+1]=b>>8):this.L[a>>1]=b;this.va=!0}};
|
||||
function wb(a,b,c){a.F=b;a.j=a.w=0;c&&((a.j=c.j)&&Yb(a,Xb,!1),(a.w=c.w)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.w&&(a.J=a.C?a.H:a.La):0===--a.j&&(a.G=a.Sa)}function Wb(a,b,c){c&&a.w||(a.J=!a.C&&b[2]||a.H);if(c||void 0===c)a.La=b[2]||a.H,a.Ab=b[3]||a.oa}function Yb(a,b,c){c&&a.j||(a.G=b[0]||a.M);if(c||void 0===c)a.Sa=b[0]||a.M,a.xb=b[1]||a.V}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
|
||||
a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.va=!0},O:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,1,c.O)&&c.ba(!0)}return this.Ra(a,b)},U:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,2,c.O)&&c.ba(!0)}return this.ub(a,b)},da:function(a,b,c){if(this.F&&null!=this.B){var d=this.F;Zb(d,this.B+a,1,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.Ja(a,b,c)},ka:function(a,b,c){if(this.F&&
|
||||
null!=this.B){var d=this.F;Zb(d,this.B+a,2,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.xb(a,b,c)},N:function(a){return this.i[a]},R:function(a){return this.i[a]},T:function(a){return this.D.getUint16(a,!0)},W:function(a){return a&1?this.i[a]|this.i[a+1]<<8:this.L[a>>1]},ca:function(a,b){this.i[a]=b;this.va=!0},fa:function(a,b){this.i[a]=b;this.va=!0},ja:function(a,b){this.D.setUint16(a,b,!0);this.va=!0},pa:function(a,b){a&1?(this.i[a]=b,this.i[a+1]=b>>8):this.L[a>>1]=b;this.va=!0}};
|
||||
function wb(a,b,c){a.F=b;a.j=a.w=0;c&&((a.j=c.j)&&Yb(a,Xb,!1),(a.w=c.w)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.w&&(a.J=a.C?a.H:a.Ja):0===--a.j&&(a.G=a.Ra)}function Wb(a,b,c){c&&a.w||(a.J=!a.C&&b[2]||a.H);if(c||void 0===c)a.Ja=b[2]||a.H,a.xb=b[3]||a.oa}function Yb(a,b,c){c&&a.j||(a.G=b[0]||a.M);if(c||void 0===c)a.Ra=b[0]||a.M,a.ub=b[1]||a.V}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
|
||||
var ac=[],Vb=[D.prototype.S,D.prototype.$,D.prototype.ga,D.prototype.na],Xb=[D.prototype.O,D.prototype.U,D.prototype.da,D.prototype.ka];if(sb)var Ub=[D.prototype.N,D.prototype.T,D.prototype.ca,D.prototype.ja],Tb=[D.prototype.R,D.prototype.W,D.prototype.fa,D.prototype.pa];
|
||||
function bc(a,b){t.call(this,"CPU",a,bc,1);var c=a.multiplier||1;this.cb=a.cycles||b;this.Ba=c;this.Ma=Math.round(this.cb/1E4)/100;this.Aa=this.Ma*this.Ba;this.A.Z=!1;this.A.bb=!1;this.A.kb=a.autoStart;this.A.lb=!1;this.A.Fa=!1;this.Pa=this.ca=0;this.Qa=a.csStart;this.Ia=a.csInterval;this.Ja=a.csStop;this.oa=[];this.Ib=this.Ca.bind(this);A(this)}v(bc);var cc=["power","reset"];m=bc.prototype;
|
||||
m.za=function(a,b,c,d){this.D=a;this.H=b;this.F=d;for(b=0;b<cc.length;b++)(c=this.K[cc[b]])&&this.D.ha(null,cc[b],c);this.ja=null;a=dc(a,"autoStart");null!=a&&(this.A.kb="true"==a?!0:"false"==a?!1:!!a);A(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){ec(this);if(!this.restore(a))return!1;fc(this)}else this.reset();if(this.F){var c=this.F;c.u("Type ? for help with PDP11 Debugger commands");c.ia();if(c.ka){var d=c.ka;c.ka=null;gc(c,d)}}else this.u("No debugger detected")}F(this);return!0};m.ra=function(a){return a?this.save():!0};function hc(a){(a.A.kb||!a.F&&void 0===a.K.run)&&a.Ca(!0)}m.mb=function(){return 0};
|
||||
function fc(a){void 0===a.Qa&&(a.Qa=0);void 0===a.Ia&&(a.Ia=-1);void 0===a.Ja&&(a.Ja=-1);a.A.Fa=0<=a.Qa&&0<a.Ia;a.A.Fa&&(a.Pa=0,a.ca=a.Qa-a.V)}function ic(a,b){if(a.A.Fa){var c=!1;a.Pa=a.Pa+a.mb()|0;a.ca-=b;0>=a.ca&&(a.ca+=a.Ia,c=!0);0<=a.Ja&&a.Ja<=jc(a)&&(a.Ia=a.Ja=-1,fc(a),a.ba(),c=!0);c&&a.u(jc(a)+" cycles: checksum="+q(a.Pa))}}
|
||||
function kc(a,b,c,d){a.K[b]&&(void 0===c&&(rb(a,"Value for "+b+" is invalid"),a.ba()),c=!a.A.Z||a.A.lb?q(c,d):"--------".substr(0,d),a.K[b].textContent!=c&&(a.K[b].textContent=c))}
|
||||
m.ha=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.K[b]=c;a=!0;break;case "run":this.K[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.A.X)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ha);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.X);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.Ha?"powered yet":"ready yet"+(b.Xa?" (waiting for notification)":""))+".");a=!1}a&&(d.A.Z?d.ba():d.Ca())};a=!0;break;
|
||||
case "speed":this.K[b]=c;a=!0;break;case "setSpeed":this.K[b]=c,c.onclick=function(){lc(d,d.Ba<<1,!0)},c.textContent=this.Aa.toFixed(2)+"Mhz",a=!0}return a};function mc(a,b,c){a.V+=b;c&&(a.U=a.R=0)}function nc(a,b){var c=1;b&&1<a.Ba&&a.S&&(c=a.S/a.Ma);a.ub=Math.round(1E3/30);a.wa=Math.floor(a.cb/30*c);b||(a.da=a.wa);a.eb=0}function jc(a){return a.V+a.O+a.U-a.R}function ec(a){a.S=0;a.vb=0;a.V=a.O=a.U=a.R=0;fc(a);lc(a,1)}
|
||||
function lc(a,b,c){var d=!1;if(void 0!==b){.8>a.S/a.Aa?b=1:d=!0;a.Ba=b;b=a.Ma*a.Ba;if(a.Aa!=b){a.Aa=b;b=a.Aa.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.D&&a.D.Ta()}mc(a,a.O);a.O=0;a.N=ua();a.T=0;nc(a);return d}function Ac(a){a.U-=a.R;a.R=0}
|
||||
m.Ca=function(a){if(ob(this,!0)){if(!this.A.Z){lc(this);this.D&&this.D.start(this.N,jc(this));this.A.Z=!0;this.A.bb=!0;this.ja&&this.ja.start();var b=this.K.run;b&&(b.textContent="Halt");this.D&&(this.D.ia(!0),a&&this.D.Ta(!0))}this.eb>=this.cb&&nc(this,!0);this.ka=0;this.na=ua();this.T&&(a=this.na-this.T,a>this.ub&&(this.N+=a,this.N>this.na&&(this.N=this.na)));try{do{for(var c=this.A.Fa?1:this.wa,d=this.oa.length-1;0<=d;d--){var e=this.oa[d];0>e[0]||c>e[0]&&(c=e[0])}this.Ka(c);var f=this.U-this.R;
|
||||
a=f;for(var h=this.oa.length-1;0<=h;h--){var g=this.oa[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ka+=f;this.O+=f;mc(this,0,!0);ic(this,f);this.da-=f;if(0>=this.da){this.da+=this.wa;15<=++this.vb&&(this.D&&this.D.ia(),this.vb=0);break}}while(this.A.Z)}catch(k){this.ba();F(this);this.D&&this.D.stop(ua(),jc(this));ob(this,!1);rb(this,k.stack||k.message);return}c=setTimeout;d=this.Ib;this.T=ua();e=this.ub;this.ka&&(e=Math.round(e*this.ka/this.wa));e=e-(this.T-this.na);if(f=this.T-this.N)this.S=
|
||||
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,lc(this));if(0>e||this.S<this.Aa)-1E3>e&&(this.N-=e),e=0;this.eb+=this.ka;this.T+=e;c(d,e)}else F(this),this.D&&this.D.stop(ua(),jc(this))};m.Ka=function(){return 0};m.ba=function(a){pb(this,!0);Ac(this);mc(this,this.O);this.O=0;if(this.A.Z){this.A.Z=!1;this.ja&&this.ja.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.Wa=a};function F(a,b){a.D&&a.D.ia(b)}
|
||||
function Bc(a){this.rb=+a.model||1170;bc.call(this,a,1E6);this.nb=0;this.w=65536;this.i=this.b=32768;this.j=65535;this.I=15;this.g=[0,0,0,0,0,0,0,0];this.zb=[0,0,0,0,0,0];this.fa=[0,0,0,0];this.memory=[];this.J=[];this.fb=this.wb=0;this.W=2;this.$=255;this.G=0;this.ga=-1;this.tb=this.Na=this.sb=this.C=this.Da=this.M=this.L=0;this.pa=[7,7,7,7];this.Oa=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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.Kb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];ec(this);this.A.Wa=this.A.Eb=!1}v(Bc,bc);m=Bc.prototype;m.reset=function(){this.A.Z&&this.ba();Cc(this);ec(this);this.A.Ga=!1;this.parent.reset.call(this)};
|
||||
function Cc(a){a.$=255;a.J=[];a.wb=0;a.L=a.M=a.Da=a.sb=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Na=0}m.mb=function(){return 0};m.save=function(){var a=new G(this);H(a,0,[]);H(a,1,[this.qb,this.V,this.Ba]);for(var b=this.H,c=0,d=[],e=0;e<b.H;e++){var f=b.P[e];if(f.va||f.Fb){d[c++]=e;var h=c++;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}}d[h]=f}}H(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.qb=b[0];this.V=b[1];lc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.C){for(var f=0,h=Array(b.C),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.ha=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.K[b]=c;this.nb++;d=!0;break;default:d=this.parent.ha.call(this,a,b,c)}return d};m.ia=function(a){this.nb&&(a||!this.A.Z||this.A.lb)&&(a=this.I&-14|0|(this.ta&255?0:4)|(this.ta&256?1:0),kc(this,"PSW",a,4),kc(this,"SF",a&8?1:0,1),kc(this,"ZF",a&4?1:0,1),kc(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=this.A.Z&&this.S?this.S.toFixed(2)+"Mhz":"Stopped"};
|
||||
function Dc(a,b){var c,d;a.b=b<<12;a.j=~b&4;a.i=b<<14;a.w=b<<16;if((b^a.I)&2048)for(c=0;6>c;c++)d=a.g[c],a.g[c]=a.zb[c],a.zb[c]=d;(a.C=b>>14&3)!==(a.I>>14&3)&&(a.fa[d]=a.g[6],a.g[6]=a.fa[a.C]);a.W=2;a.I=b}
|
||||
function I(a,b){var c,d,e=0;0>a.ga?(a.I=a.I&63728|a.b>>12&8|a.i>>14&2|a.w>>16&1,a.j&65535||(a.I|=4),a.ga=a.I):a.C||(b=4,e=1);a.L&57344||(a.M=63222);a.C=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(Dc(a,d&53247|a.ga>>2&12288),e&&(a.g[6]=4),0<=Ec(a,a.ga)&&0<=Ec(a,a.g[7])&&(a.g[7]=c));a.G=0;return a.ga=-1}
|
||||
function Fc(a,b,c){var d,e,f,h=0;if(c&a.sb){d=b>>13&a.pa[a.C];e=a.Oa[a.C][d];f=(a.Oa[a.C][d+16]<<6)+(b&8191)&4194303;if(a.Da&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Da&32&&(f=a.Kb[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&&!(c&1)))return I(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:e|=c&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.Oa[a.C][d]=e;if(4194170!==f||a.C)a.Na=a.C,a.tb=d;if(h){if(h&57344)return 0<=a.ga&&(h|=128),a.L&57344||(a.L=a.L|h|a.Na<<5|a.tb<<1),I(a,168);a.L&61440||!(4191360>f||4194239<f)||(a.L|=4096,a.L&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(c&1))return I(a,4);return f}function M(a,b){return 4194304<=b?a.g[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.g[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.g[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function R(a,b,c){c&=255;return 4194304<=b?a.g[b-4194304]=a.g[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function L(a,b){return M(a,Fc(a,b,2))}
|
||||
function Gc(a){var b=L(a,a.g[6]|65536);0<=b&&(a.g[6]=a.g[6]+2&65535);return b}function Ec(a,b){var c,d;a.g[6]=d=a.g[6]-2&65535;a.L&57344||(a.M=a.M<<8|246);if(!a.C&&d<=a.$&&4<d){if(d<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return 0<=(c=Fc(a,d|65536,4))?N(a,c,b):c}
|
||||
function Hc(a,b,c){var d,e,f=b&7;switch(b>>3&7){case 0:return I(a,4);case 1:if(6===f&&!a.C&&c&4&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32||65534<=a.g[6])return a.g[6]=4,I(a,4);a.G|=4}return 7===f?a.g[f]:a.g[f]|65536;case 2:e=2;d=a.g[f];7!==f&&(d|=65536,6>f&&c&1&&(e=1));break;case 3:e=2;d=a.g[f];7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;d|=65536;break;case 4:e=-2;6>f&&c&1&&(e=-1);d=a.g[f]+e&65535;7!==f&&(d|=65536);break;case 5:e=-2;d=a.g[f]-2&65535;7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;
|
||||
d|=65536;break;case 6:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return d|65536;case 7:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return 0>(d=L(a,d|65536))?d:d|65536}a.g[f]=a.g[f]+e&65535;a.L&57344||(a.M=a.M<<8|e<<3&248|f);if(6===f&&!a.C&&c&4&&0>=e&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=Hc(a,b,c))&&(d=Fc(a,d,c)),d):4194304+(b&7)}
|
||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.g[b&7];return c}function Ic(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.g[b&7]&255;return c}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Ka=function(a){this.A.Wa=!0;var b=this.A.Eb=this.F&&Jc(this.F),c=a?this.A.bb?0:1:-1;this.A.bb=!1;this.U=this.R=a;this.qb&256?(Ac(this),a=!1):a=!0;if(a){do{if(b){if(Kc(this.F,this.g[7],c)){this.ba();break}c=1}var d,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;d=this.wb&224;if(0<(a=this.J.length))for(;0<a--;){if(0<this.J[a].$a){this.J[a].$a--;this.W=2;break}if(this.J[a].ib){if(!this.J[a].ib()){this.J.splice(a,1);g--;continue}this.J[a].ib=null}this.J[a].Hb>d&&(d=this.J[a].Hb,g=a)}d>
|
||||
(this.I&224)&&(0>g?I(this,160):(I(this,this.J[g].Mb),this.J.splice(g,1)))}this.L&57344||(this.M=0);this.G=this.I&16;if(0<=(a=L(this,this.g[7])))switch(this.g[7]=this.g[7]+2&65535,a&61440){case 4096:0<=(d=T(this,a>>6))&&(a&56?0<=(f=S(this,a,4))&&0<=N(this,f,d)&&(this.b=this.j=d,this.i=0):(this.b=this.j=this.g[a&7]=d,this.i=0));break;case 8192:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=this.w=a=d-e,this.i=(d^e)&(d^a));break;case 12288:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=
|
||||
function bc(a,b){t.call(this,"CPU",a,bc,1);var c=a.multiplier||1;this.$a=a.cycles||b;this.Ba=c;this.La=Math.round(this.$a/1E4)/100;this.Aa=this.La*this.Ba;this.A.Z=!1;this.A.cb=!1;this.A.Ka=a.autoStart;this.A.hb=!1;this.A.Fa=!1;this.Oa=this.ca=0;this.Pa=a.csStart;this.Ga=a.csInterval;this.Ha=a.csStop;this.oa=[];this.Fb=this.Ca.bind(this);A(this)}v(bc);var cc=["power","reset"];m=bc.prototype;
|
||||
m.za=function(a,b,c,d){this.D=a;this.H=b;this.F=d;for(b=0;b<cc.length;b++)(c=this.K[cc[b]])&&this.D.ha(null,cc[b],c);this.ja=null;a=dc(a,"autoStart");null!=a&&(this.A.Ka="true"==a?!0:"false"==a?!1:!!a);A(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){ec(this);if(!this.restore(a))return!1;fc(this)}else this.reset();if(this.F){var c=this.F;c.u("Type ? for help with PDP11 Debugger commands");c.ia();if(c.ka){var d=c.ka;c.ka=null;gc(c,d)}}else this.u("No debugger detected")}F(this);return!0};m.ra=function(a){return a?this.save():!0};m.Ka=function(){return this.A.Ka||!this.F&&void 0===this.K.run?(this.Ca(!0),!0):!1};m.jb=function(){return 0};
|
||||
function fc(a){void 0===a.Pa&&(a.Pa=0);void 0===a.Ga&&(a.Ga=-1);void 0===a.Ha&&(a.Ha=-1);a.A.Fa=0<=a.Pa&&0<a.Ga;a.A.Fa&&(a.Oa=0,a.ca=a.Pa-a.V)}function hc(a,b){if(a.A.Fa){var c=!1;a.Oa=a.Oa+a.jb()|0;a.ca-=b;0>=a.ca&&(a.ca+=a.Ga,c=!0);0<=a.Ha&&a.Ha<=ic(a)&&(a.Ga=a.Ha=-1,fc(a),a.ba(),c=!0);c&&a.u(ic(a)+" cycles: checksum="+q(a.Oa))}}
|
||||
function jc(a,b,c,d){a.K[b]&&(void 0===c&&(rb(a,"Value for "+b+" is invalid"),a.ba()),c=!a.A.Z||a.A.hb?q(c,d):"--------".substr(0,d),a.K[b].textContent!=c&&(a.K[b].textContent=c))}
|
||||
m.ha=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.K[b]=c;a=!0;break;case "run":this.K[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.A.X)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.X);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Va?" (waiting for notification)":""))+".");a=!1}a&&(d.A.Z?d.ba():d.Ca())};a=!0;
|
||||
break;case "speed":this.K[b]=c;a=!0;break;case "setSpeed":this.K[b]=c,c.onclick=function(){kc(d,d.Ba<<1,!0)},c.textContent=this.Aa.toFixed(2)+"Mhz",a=!0}return a};function lc(a,b,c){a.V+=b;c&&(a.U=a.R=0)}function mc(a,b){var c=1;b&&1<a.Ba&&a.S&&(c=a.S/a.La);a.rb=Math.round(1E3/30);a.wa=Math.floor(a.$a/30*c);b||(a.da=a.wa);a.ab=0}function ic(a){return a.V+a.O+a.U-a.R}function ec(a){a.S=0;a.sb=0;a.V=a.O=a.U=a.R=0;fc(a);kc(a,1)}
|
||||
function kc(a,b,c){var d=!1;if(void 0!==b){.8>a.S/a.Aa?b=1:d=!0;a.Ba=b;b=a.La*a.Ba;if(a.Aa!=b){a.Aa=b;b=a.Aa.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.D&&a.D.Sa()}lc(a,a.O);a.O=0;a.N=ua();a.T=0;mc(a);return d}function zc(a){a.U-=a.R;a.R=0}
|
||||
m.Ca=function(a){if(ob(this,!0)){if(!this.A.Z){kc(this);this.D&&this.D.start(this.N,ic(this));this.A.Z=!0;this.A.cb=!0;this.ja&&this.ja.start();var b=this.K.run;b&&(b.textContent="Halt");this.D&&(this.D.ia(!0),a&&this.D.Sa(!0))}this.ab>=this.$a&&mc(this,!0);this.ka=0;this.na=ua();this.T&&(a=this.na-this.T,a>this.rb&&(this.N+=a,this.N>this.na&&(this.N=this.na)));try{do{for(var c=this.A.Fa?1:this.wa,d=this.oa.length-1;0<=d;d--){var e=this.oa[d];0>e[0]||c>e[0]&&(c=e[0])}this.Ia(c);var f=this.U-this.R;
|
||||
a=f;for(var h=this.oa.length-1;0<=h;h--){var g=this.oa[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ka+=f;this.O+=f;lc(this,0,!0);hc(this,f);this.da-=f;if(0>=this.da){this.da+=this.wa;15<=++this.sb&&(this.D&&this.D.ia(),this.sb=0);break}}while(this.A.Z)}catch(k){this.ba();F(this);this.D&&this.D.stop(ua(),ic(this));ob(this,!1);rb(this,k.stack||k.message);return}c=setTimeout;d=this.Fb;this.T=ua();e=this.rb;this.ka&&(e=Math.round(e*this.ka/this.wa));e=e-(this.T-this.na);if(f=this.T-this.N)this.S=
|
||||
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,kc(this));if(0>e||this.S<this.Aa)-1E3>e&&(this.N-=e),e=0;this.ab+=this.ka;this.T+=e;c(d,e)}else F(this),this.D&&this.D.stop(ua(),ic(this))};m.Ia=function(){return 0};m.ba=function(a){pb(this,!0);zc(this);lc(this,this.O);this.O=0;if(this.A.Z){this.A.Z=!1;this.ja&&this.ja.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function F(a,b){a.D&&a.D.ia(b)}
|
||||
function Ac(a){this.ob=+a.model||1170;bc.call(this,a,1E6);this.kb=0;this.w=65536;this.i=this.b=32768;this.j=65535;this.I=15;this.g=[0,0,0,0,0,0,0,0];this.wb=[0,0,0,0,0,0];this.fa=[0,0,0,0];this.memory=[];this.J=[];this.bb=this.tb=0;this.W=2;this.$=255;this.G=0;this.ga=-1;this.qb=this.Ma=this.pb=this.C=this.Da=this.M=this.L=0;this.pa=[7,7,7,7];this.Na=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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.Bb=!1}v(Ac,bc);m=Ac.prototype;m.reset=function(){this.A.Z&&this.ba();Bc(this);ec(this);this.A.error=!1;this.parent.reset.call(this)};
|
||||
function Bc(a){a.$=255;a.J=[];a.tb=0;a.L=a.M=a.Da=a.pb=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Ma=0}m.jb=function(){return 0};m.save=function(){var a=new G(this);H(a,0,[]);H(a,1,[this.nb,this.V,this.Ba]);for(var b=this.H,c=0,d=[],e=0;e<b.H;e++){var f=b.P[e];if(f.va||f.Cb){d[c++]=e;var h=c++;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}}d[h]=f}}H(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.nb=b[0];this.V=b[1];kc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.C){for(var f=0,h=Array(b.C),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.ha=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.K[b]=c;this.kb++;d=!0;break;default:d=this.parent.ha.call(this,a,b,c)}return d};m.ia=function(a){this.kb&&(a||!this.A.Z||this.A.hb)&&(a=this.I&-14|0|(this.ta&255?0:4)|(this.ta&256?1:0),jc(this,"PSW",a,4),jc(this,"SF",a&8?1:0,1),jc(this,"ZF",a&4?1:0,1),jc(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=this.A.Z&&this.S?this.S.toFixed(2)+"Mhz":"Stopped"};
|
||||
function Cc(a,b){var c,d;a.b=b<<12;a.j=~b&4;a.i=b<<14;a.w=b<<16;if((b^a.I)&2048)for(c=0;6>c;c++)d=a.g[c],a.g[c]=a.wb[c],a.wb[c]=d;(a.C=b>>14&3)!==(a.I>>14&3)&&(a.fa[d]=a.g[6],a.g[6]=a.fa[a.C]);a.W=2;a.I=b}
|
||||
function I(a,b){var c,d,e=0;0>a.ga?(a.I=a.I&63728|a.b>>12&8|a.i>>14&2|a.w>>16&1,a.j&65535||(a.I|=4),a.ga=a.I):a.C||(b=4,e=1);a.L&57344||(a.M=63222);a.C=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(Cc(a,d&53247|a.ga>>2&12288),e&&(a.g[6]=4),0<=Dc(a,a.ga)&&0<=Dc(a,a.g[7])&&(a.g[7]=c));a.G=0;return a.ga=-1}
|
||||
function Ec(a,b,c){var d,e,f,h=0;if(c&a.pb){d=b>>13&a.pa[a.C];e=a.Na[a.C][d];f=(a.Na[a.C][d+16]<<6)+(b&8191)&4194303;if(a.Da&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Da&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&&!(c&1)))return I(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:e|=c&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.Na[a.C][d]=e;if(4194170!==f||a.C)a.Ma=a.C,a.qb=d;if(h){if(h&57344)return 0<=a.ga&&(h|=128),a.L&57344||(a.L=a.L|h|a.Ma<<5|a.qb<<1),I(a,168);a.L&61440||!(4191360>f||4194239<f)||(a.L|=4096,a.L&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(c&1))return I(a,4);return f}function M(a,b){return 4194304<=b?a.g[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.g[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.g[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function R(a,b,c){c&=255;return 4194304<=b?a.g[b-4194304]=a.g[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function L(a,b){return M(a,Ec(a,b,2))}
|
||||
function Fc(a){var b=L(a,a.g[6]|65536);0<=b&&(a.g[6]=a.g[6]+2&65535);return b}function Dc(a,b){var c,d;a.g[6]=d=a.g[6]-2&65535;a.L&57344||(a.M=a.M<<8|246);if(!a.C&&d<=a.$&&4<d){if(d<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return 0<=(c=Ec(a,d|65536,4))?N(a,c,b):c}
|
||||
function Gc(a,b,c){var d,e,f=b&7;switch(b>>3&7){case 0:return I(a,4);case 1:if(6===f&&!a.C&&c&4&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32||65534<=a.g[6])return a.g[6]=4,I(a,4);a.G|=4}return 7===f?a.g[f]:a.g[f]|65536;case 2:e=2;d=a.g[f];7!==f&&(d|=65536,6>f&&c&1&&(e=1));break;case 3:e=2;d=a.g[f];7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;d|=65536;break;case 4:e=-2;6>f&&c&1&&(e=-1);d=a.g[f]+e&65535;7!==f&&(d|=65536);break;case 5:e=-2;d=a.g[f]-2&65535;7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;
|
||||
d|=65536;break;case 6:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return d|65536;case 7:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return 0>(d=L(a,d|65536))?d:d|65536}a.g[f]=a.g[f]+e&65535;a.L&57344||(a.M=a.M<<8|e<<3&248|f);if(6===f&&!a.C&&c&4&&0>=e&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=Gc(a,b,c))&&(d=Ec(a,d,c)),d):4194304+(b&7)}
|
||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.g[b&7];return c}function Hc(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.g[b&7]&255;return c}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Ia=function(a){this.A.complete=!0;var b=this.A.Bb=this.F&&Ic(this.F),c=a?this.A.cb?0:1:-1;this.A.cb=!1;this.U=this.R=a;this.nb&256?(zc(this),a=!1):a=!0;if(a){do{if(b){if(Jc(this.F,this.g[7],c)){this.ba();break}c=1}var d,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;d=this.tb&224;if(0<(a=this.J.length))for(;0<a--;){if(0<this.J[a].Za){this.J[a].Za--;this.W=2;break}if(this.J[a].gb){if(!this.J[a].gb()){this.J.splice(a,1);g--;continue}this.J[a].gb=null}this.J[a].Eb>d&&(d=this.J[a].Eb,g=
|
||||
a)}d>(this.I&224)&&(0>g?I(this,160):(I(this,this.J[g].Jb),this.J.splice(g,1)))}this.L&57344||(this.M=0);this.G=this.I&16;if(0<=(a=L(this,this.g[7])))switch(this.g[7]=this.g[7]+2&65535,a&61440){case 4096:0<=(d=T(this,a>>6))&&(a&56?0<=(f=S(this,a,4))&&0<=N(this,f,d)&&(this.b=this.j=d,this.i=0):(this.b=this.j=this.g[a&7]=d,this.i=0));break;case 8192:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=this.w=a=d-e,this.i=(d^e)&(d^a));break;case 12288:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=
|
||||
d&e,this.i=0);break;case 16384:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&~d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]&=~d,this.i=0));break;case 20480:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e|d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]|=d,this.i=0));break;case 24576:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=d+e,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^a)&(e^a))):(g=a&7,
|
||||
e=this.g[g],this.g[g]=(a=d+e)&65535,this.b=this.j=this.w=a,this.i=(d^a)&(e^a)));break;case 36864:0<=(d=Ic(this,a>>6))&&(a&56?0<=(f=S(this,a,5))&&0<=R(this,f,d)&&(this.b=this.j=d<<8,this.i=0):(d&128&&(d|=65280),this.b=this.j=this.g[a&7]=d,this.i=0));break;case 40960:0<=(d=Ic(this,a>>6))&&0<=(e=Ic(this,a))&&(a=d-e,this.b=this.j=this.w=a<<8,this.i=((d^e)&(d^a))<<8);break;case 45056:0<=(d=Ic(this,a>>6))&&0<=(e=Ic(this,a))&&(this.b=this.j=(d&e)<<8,this.i=0);break;case 49152:0<=(d=Ic(this,a>>6))&&0<=(e=
|
||||
O(this,f=S(this,a,7)))&&(a=e&~d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 53248:0<=(d=Ic(this,a>>6))&&0<=(e=O(this,f=S(this,a,7)))&&(a=e|d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 57344:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-d,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^e)&(e^a))):(g=a&7,e=this.g[g],this.g[g]=(a=e-d)&65535,this.b=this.j=this.w=a,this.i=(d^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Hc(this,a,0))&&(g=a>>6&7,
|
||||
0<=Ec(this,this.g[g])&&(this.g[g]=this.g[7],this.g[7]=h&65535));break;case 28672:0<=(d=T(this,a))&&(g=a>>6&7,d&32768&&(d|=-65536),e=this.g[g],e&32768&&(e|=-65536),a=~~(d*e),this.g[g]=a>>16&65535,this.g[g|1]=a&65535,this.b=a>>16,this.j=this.b|a,this.w=this.i=0,-32768>a||32767<a)&&(this.w=65536);break;case 29184:0<=(d=T(this,a))&&(d?(g=a>>6&7,e=this.g[g]<<16|this.g[g|1],this.w=this.i=0,d&32768&&(d|=-65536),a=~~(e/d),-32768<=a&&32767>=a?(this.g[g]=a&65535,this.g[g|1]=e-a*d&65535,this.j=a>>16|a,this.b=
|
||||
e=this.g[g],this.g[g]=(a=d+e)&65535,this.b=this.j=this.w=a,this.i=(d^a)&(e^a)));break;case 36864:0<=(d=Hc(this,a>>6))&&(a&56?0<=(f=S(this,a,5))&&0<=R(this,f,d)&&(this.b=this.j=d<<8,this.i=0):(d&128&&(d|=65280),this.b=this.j=this.g[a&7]=d,this.i=0));break;case 40960:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(a=d-e,this.b=this.j=this.w=a<<8,this.i=((d^e)&(d^a))<<8);break;case 45056:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(this.b=this.j=(d&e)<<8,this.i=0);break;case 49152:0<=(d=Hc(this,a>>6))&&0<=(e=
|
||||
O(this,f=S(this,a,7)))&&(a=e&~d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 53248:0<=(d=Hc(this,a>>6))&&0<=(e=O(this,f=S(this,a,7)))&&(a=e|d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 57344:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-d,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^e)&(e^a))):(g=a&7,e=this.g[g],this.g[g]=(a=e-d)&65535,this.b=this.j=this.w=a,this.i=(d^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Gc(this,a,0))&&(g=a>>6&7,
|
||||
0<=Dc(this,this.g[g])&&(this.g[g]=this.g[7],this.g[7]=h&65535));break;case 28672:0<=(d=T(this,a))&&(g=a>>6&7,d&32768&&(d|=-65536),e=this.g[g],e&32768&&(e|=-65536),a=~~(d*e),this.g[g]=a>>16&65535,this.g[g|1]=a&65535,this.b=a>>16,this.j=this.b|a,this.w=this.i=0,-32768>a||32767<a)&&(this.w=65536);break;case 29184:0<=(d=T(this,a))&&(d?(g=a>>6&7,e=this.g[g]<<16|this.g[g|1],this.w=this.i=0,d&32768&&(d|=-65536),a=~~(e/d),-32768<=a&&32767>=a?(this.g[g]=a&65535,this.g[g|1]=e-a*d&65535,this.j=a>>16|a,this.b=
|
||||
a>>16):(this.i=32768,this.j=a>>15|a,this.b=e>>16,-1===d&&65534===this.g[g]&&(this.g[g]=this.g[g|1]=1))):(this.j=this.b=0,this.i=32768,this.w=65536));break;case 29696:0<=(d=T(this,a))&&(g=a>>6&7,a=this.g[g],a&32768&&(a|=4294901760),this.w=this.i=0,d&=63,d&32?(d=64-d,16<d&&(d=16),this.w=a<<17-d,a=a>>d):d&&(16<d?(this.i=a,a=0):(this.w=a=a<<d,(e=a>>15&65535)&&65535!==e&&(this.i=32768))),this.g[g]=a&65535,this.b=this.j=a);break;case 30208:if(0<=(d=T(this,a))){g=a>>6&7;e=this.g[g]<<16|this.g[g|1];this.w=
|
||||
this.i=0;d&=63;if(d&32)d=64-d,32<d&&(d=32),a=e>>d-1,this.w=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-d);else if(d){if(a=e<<d-1,this.w=a>>15,a<<=1,32<d&&(d=32),e>>=32-d)e|=4294967295<<d&4294967295,4294967295!==e&&(this.i=32768)}else a=e;this.g[g]=a>>16&65535;this.g[g|1]=a&65535;this.b=a>>16;this.j=a>>16|a}break;case 30720:a&56?0<=(e=M(this,f=S(this,a,6)))&&(e^=this.g[a>>6&7],0<=N(this,f,e)&&(this.b=this.j=e,this.i=0)):(this.b=this.j=e=this.g[a&7]^=this.g[a>>6&7],this.i=0);break;case 32256:g=a>>
|
||||
6&7;if(this.g[g]=this.g[g]-1&65535)this.g[7]=this.g[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.g[7]=U(this.g[7],a);break;case 512:this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 768:this.j&65535||(this.g[7]=U(this.g[7],a));break;case 1024:(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1280:(this.b&32768)!==(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1536:this.j&65535&&(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1792:this.j&
|
||||
65535&&(this.b&32768)===(this.i&32768)||(this.g[7]=U(this.g[7],a));break;case 32768:this.b&32768||(this.g[7]=U(this.g[7],a));break;case 33280:!(this.w&65536)&&this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 33024:this.b&32768&&(this.g[7]=U(this.g[7],a));break;case 33536:if(this.w&65536||!(this.j&65535))this.g[7]=U(this.g[7],a);break;case 33792:this.i&32768||(this.g[7]=U(this.g[7],a));break;case 34048:this.i&32768&&(this.g[7]=U(this.g[7],a));break;case 34304:this.w&65536||(this.g[7]=U(this.g[7],
|
||||
a));break;case 34560:this.w&65536&&(this.g[7]=U(this.g[7],a));break;case 34816:I(this,24);break;case 35072:I(this,28);break;default:switch(a&65472){case 64:0<=(h=Hc(this,a,0))&&(this.g[7]=h&65535);break;case 192:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<8|e>>8,0<=N(this,f,a)&&(this.b=this.j=e&65280,this.i=this.w=0)):(g=a&7,e=this.g[g],this.g[g]=(e<<8|e>>8)&65535,this.b=this.j=e&65280,this.i=this.w=0);break;case 2560:a&56?0<=(f=S(this,a,4))&&0<=N(this,f,0)&&(this.b=this.w=this.i=this.j=0):this.b=this.w=
|
||||
a));break;case 34560:this.w&65536&&(this.g[7]=U(this.g[7],a));break;case 34816:I(this,24);break;case 35072:I(this,28);break;default:switch(a&65472){case 64:0<=(h=Gc(this,a,0))&&(this.g[7]=h&65535);break;case 192:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<8|e>>8,0<=N(this,f,a)&&(this.b=this.j=e&65280,this.i=this.w=0)):(g=a&7,e=this.g[g],this.g[g]=(e<<8|e>>8)&65535,this.b=this.j=e&65280,this.i=this.w=0);break;case 2560:a&56?0<=(f=S(this,a,4))&&0<=N(this,f,0)&&(this.b=this.w=this.i=this.j=0):this.b=this.w=
|
||||
this.i=this.j=this.g[a&7]=0;break;case 2624:0<=(e=M(this,f=S(this,a,6)))&&(a=~e,0<=N(this,f,a)&&(this.b=this.j=a,this.w=65536,this.i=0));break;case 2688:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e+1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=a&(a^e))):(g=a&7,e=this.g[g],a=e+1,this.g[g]=a&65535,this.b=this.j=a,this.i=a&(a^e));break;case 2752:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=(a^e)&e)):(g=a&7,e=this.g[g],a=e-1,this.g[g]=a&65535,this.b=this.j=a,this.i=(a^e)&e);
|
||||
break;case 2816:0<=(e=M(this,f=S(this,a,6)))&&(a=-e,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&e));break;case 2880:0<=(e=M(this,f=S(this,a,6)))&&(a=e+(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&(a^e)));break;case 2944:0<=(e=M(this,f=S(this,a,6)))&&(a=e-(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=(a^e)&e));break;case 3008:0<=(e=T(this,a))&&(this.b=this.j=e,this.w=this.i=0);break;case 3072:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=(this.w&65536|e)>>1,0<=N(this,
|
||||
f,a)&&(this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1)):(g=a&7,e=this.g[g],a=(this.w&65536|e)>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1);break;case 3136:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1|this.w>>16&1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1|this.w>>16&1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3200:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&32768|e>>1,0<=N(this,f,a)&&(this.w=e<<16,this.b=this.j=a,this.i=
|
||||
this.b^this.w>>1)):(g=a&7,e=this.g[g],a=e&32768|e>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=this.b^this.w>>1);break;case 3264:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3328:h=this.g[7]+((a&63)<<1)&65535;0<=(d=L(this,h|65536))&&(this.g[7]=this.g[5],this.g[5]=d,this.g[6]=h+2&65535);break;case 3392:a&56?0<=(h=Hc(this,a,0))&&(61440!==(this.I&61440)&&
|
||||
(h&=65535),this.C=this.I>>12&3,0<=(d=L(this,h))&&(this.C=this.I>>14&3,0<=Ec(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Ec(this,d)&&(this.b=this.j=d,this.i=0));break;case 3456:0<=(e=Gc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Hc(this,a,0))&&(h&=65535,this.C=this.I>>12&3,0<=(f=Fc(this,h,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=
|
||||
this.b^this.w>>1)):(g=a&7,e=this.g[g],a=e&32768|e>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=this.b^this.w>>1);break;case 3264:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3328:h=this.g[7]+((a&63)<<1)&65535;0<=(d=L(this,h|65536))&&(this.g[7]=this.g[5],this.g[5]=d,this.g[6]=h+2&65535);break;case 3392:a&56?0<=(h=Gc(this,a,0))&&(61440!==(this.I&61440)&&
|
||||
(h&=65535),this.C=this.I>>12&3,0<=(d=L(this,h))&&(this.C=this.I>>14&3,0<=Dc(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Dc(this,d)&&(this.b=this.j=d,this.i=0));break;case 3456:0<=(e=Fc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Gc(this,a,0))&&(h&=65535,this.C=this.I>>12&3,0<=(f=Ec(this,h,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=
|
||||
e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;case 3520:0<=(f=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,f,a)&&(this.j=a,this.i=0));break;case 35328:a&56?0<=(f=S(this,a,5))&&0<=R(this,f,0)&&(this.b=this.w=this.i=this.j=0):(this.g[a&7]&=65280,this.b=this.w=this.i=this.j=0);break;case 35392:0<=(e=O(this,f=S(this,a,7)))&&(a=~e,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.w=65536,this.i=0));break;case 35456:0<=(e=O(this,f=S(this,a,7)))&&(a=e+1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=(a&(a^
|
||||
e))<<8));break;case 35520:0<=(e=O(this,f=S(this,a,7)))&&(a=e-1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=((a^e)&e)<<8));break;case 35584:0<=(e=O(this,f=S(this,a,7)))&&(a=-e,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a&e)<<8));break;case 35648:0<=(e=O(this,f=S(this,a,7)))&&(a=e+(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=(a&(a^e))<<8));break;case 35712:0<=(e=O(this,f=S(this,a,7)))&&(a=e-(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=((a^e)&e)<<8));break;
|
||||
case 35776:0<=(e=Ic(this,a))&&(this.b=this.j=e<<8,this.w=this.i=0);break;case 35840:0<=(e=O(this,f=S(this,a,7)))&&(a=((this.w&65536)>>8|e)>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 35904:0<=(e=O(this,f=S(this,a,7)))&&(a=e<<1|this.w>>16&1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 35968:0<=(e=O(this,f=S(this,a,7)))&&(a=e&128|e>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 36032:0<=
|
||||
(e=O(this,f=S(this,a,7)))&&(a=e<<1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 36160:a&56?0<=(h=Hc(this,a,0))&&(this.C=this.I>>12&3,0<=(d=L(this,h|65536))&&(this.C=this.I>>14&3,0<=Ec(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Ec(this,d)&&(this.b=this.j=d,this.i=0));break;case 36224:0<=(e=Gc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Hc(this,a,0))&&(this.C=this.I>>12&3,0<=(f=Fc(this,h|
|
||||
65536,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;default:switch(a&65528){case 128:0<=(d=Gc(this))&&(g=a&7,this.g[7]=this.g[g],this.g[g]=d);break;case 152:this.I&49152||(this.I=this.I&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.w=0);a&2&&(this.i=0);a&4&&(this.j=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.w=65536);a&2&&(this.i=32768);
|
||||
a&4&&(this.j=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.I?I(this,4):(this.fb=3,Ac(this),console.log("HALT at "+this.g[7].toString(8)));break;case 1:g=0;if(0<(a=this.J.length))for(;0<a--;)g+=this.J[a].$a,this.J[a].$a=0;0===g&&0===this.fb&&(this.fb=2,Ac(this));break;case 3:I(this,12);break;case 4:I(this,16);break;case 5:this.I&49152||Cc(this);break;case 2:case 6:f=this.g[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(d=L(this,f|65536))&&(this.g[6]=f+2&65535,d&=63743,this.I&49152&&
|
||||
(d=d&63519|this.I&63712),this.g[7]=h,Dc(this,d),this.G&=-17,2===a&&(this.G|=this.I&16)));break;default:I(this,8)}}}}}}this.G&&(this.G&2?I(this,168):this.G&4?I(this,4):this.G&16&&I(this,12),this.G=0)}while(0<this.R)}return this.A.Wa?this.U-this.R:void 0===this.A.Wa?0:-1};Qa(function(){for(var a=y(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Bc(d);mb(d,c)}});
|
||||
function Lc(a){t.call(this,"ROM",a,Lc);this.i=null;this.C=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.J=fa(this.D);if(this.D){a=this.D;var b=ja(this.J);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){Mc(c,a,b,f)})}}v(Lc);Lc.prototype.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;Nc(this)};
|
||||
Lc.prototype.sa=function(){if(this.qa){if(this.F){var a=this.F,b=this.id,c=this.C,d=this.j,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=ta(n,k,a.pa);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({Lb:b,B:c,Gb:d,qa:e,hb:f})}delete this.qa}return!0};Lc.prototype.ra=function(){return!0};
|
||||
function Mc(a,b,c,d){if(d)a.ea("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.pb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.i=f;else if(h)for(a.i=Array(4*h.length),d=c=0;c<h.length;c++)a.i[d++]=h[c]&255,a.i[d++]=h[c]>>8&255,a.i[d++]=h[c]>>16&255,a.i[d++]=h[c]>>24&255;else a.i=e;a.qa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=da(b[e],16);Nc(a)}}
|
||||
function Nc(a){if(!qb(a))if(!a.D)A(a);else if(a.i&&a.H){a.j||(a.j=a.i.length);if(a.i.length!=a.j)rb(a,"ROM size (0x"+q(a.i.length)+") does not match specified size ("+("0x"+q(a.j))+")");else{var b;b=a.C;if(xb(a.H,b,a.j,a.G?1:Rb)){var c;for(c=0;c<a.i.length;c++){var d=a.H,e=b+c;d.P[(e&d.j)>>>d.aa].La(e&d.i,a.i[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.H,h=f.j,g=[],k=f.C>>>e.aa;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
||||
h-=e.la;e=f.H;f=f.j;h=0;for(d>>>=e.aa;0<f&&d<e.P.length;){k=g[h++];if(!k)break;e.P[d++]=k;f-=e.la}}delete a.i}}A(a)}}Qa(function(){for(var a=y(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Lc(d);mb(d,c)}});function Oc(a){t.call(this,"RAM",a,Oc);this.w=a.addr;this.j=a.size;this.i=!1}v(Oc);m=Oc.prototype;m.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;A(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.i&&this.j&&xb(this.H,this.w,this.j,1)&&(this.i=!0);this.i||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=y(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Oc(d);mb(d,c)}});function Pc(a){t.call(this,"Keyboard",a,Pc,65536);A(this)}v(Pc);Pc.prototype.ha=function(){return!1};Pc.prototype.za=function(a,b,c,d){this.D=a;this.b=c;this.F=d;this.ja=null};
|
||||
Qa(function(){for(var a=y(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Pc(d);mb(d,c)}});
|
||||
function Qc(a){t.call(this,"Debugger",a,Qc);this.R=this.ga=this.L=0;this.N=V();this.na=V();this.w=-1;this.j=[];this.T=!1;this.S=V();this.G=[];this.V={};this.i=this.O=this.C=[];Rc(this);this.ca=0;Sc(this);this.ja=[];Tc(this,a.messages);this.ka=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return gc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return gc(b,a)})}v(Qc);
|
||||
var Uc={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","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"},Vc=["NONE"],Wc=["PC","PSW"],Xc=[];m=Qc.prototype;
|
||||
m.za=function(a,b,c,d){this.H=b;this.b=c;this.D=a;(a=dc(a,"messages"))&&Tc(this,a);this.oa=Xc;Yc(this,function(a){a:{var b=d.H.P,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.u("invalid address: "+c);break a}g=a>>>d.H.aa;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.u("..."):(c=n.type,l=zb[c],n&&d.u(q(n.id)+" %"+q(g<<d.H.aa)+" %%"+q(n.B)+" "+ea(n.Ua)+" "+
|
||||
case 35776:0<=(e=Hc(this,a))&&(this.b=this.j=e<<8,this.w=this.i=0);break;case 35840:0<=(e=O(this,f=S(this,a,7)))&&(a=((this.w&65536)>>8|e)>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 35904:0<=(e=O(this,f=S(this,a,7)))&&(a=e<<1|this.w>>16&1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 35968:0<=(e=O(this,f=S(this,a,7)))&&(a=e&128|e>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 36032:0<=
|
||||
(e=O(this,f=S(this,a,7)))&&(a=e<<1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 36160:a&56?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(d=L(this,h|65536))&&(this.C=this.I>>14&3,0<=Dc(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Dc(this,d)&&(this.b=this.j=d,this.i=0));break;case 36224:0<=(e=Fc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(f=Ec(this,h|
|
||||
65536,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;default:switch(a&65528){case 128:0<=(d=Fc(this))&&(g=a&7,this.g[7]=this.g[g],this.g[g]=d);break;case 152:this.I&49152||(this.I=this.I&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.w=0);a&2&&(this.i=0);a&4&&(this.j=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.w=65536);a&2&&(this.i=32768);
|
||||
a&4&&(this.j=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.I?I(this,4):(this.bb=3,zc(this),console.log("HALT at "+this.g[7].toString(8)));break;case 1:g=0;if(0<(a=this.J.length))for(;0<a--;)g+=this.J[a].Za,this.J[a].Za=0;0===g&&0===this.bb&&(this.bb=2,zc(this));break;case 3:I(this,12);break;case 4:I(this,16);break;case 5:this.I&49152||Bc(this);break;case 2:case 6:f=this.g[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(d=L(this,f|65536))&&(this.g[6]=f+2&65535,d&=63743,this.I&49152&&
|
||||
(d=d&63519|this.I&63712),this.g[7]=h,Cc(this,d),this.G&=-17,2===a&&(this.G|=this.I&16)));break;default:I(this,8)}}}}}}this.G&&(this.G&2?I(this,168):this.G&4?I(this,4):this.G&16&&I(this,12),this.G=0)}while(0<this.R)}return this.A.complete?this.U-this.R:void 0===this.A.complete?0:-1};Qa(function(){for(var a=y(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Ac(d);mb(d,c)}});
|
||||
function Kc(a){t.call(this,"ROM",a,Kc);this.i=null;this.C=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.J=fa(this.D);if(this.D){a=this.D;var b=ja(this.J);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){Lc(c,a,b,f)})}}v(Kc);Kc.prototype.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;Mc(this)};
|
||||
Kc.prototype.sa=function(){if(this.qa){if(this.F){var a=this.F,b=this.id,c=this.C,d=this.j,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=ta(n,k,a.pa);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({Ib:b,B:c,Db:d,qa:e,fb:f})}delete this.qa}return!0};Kc.prototype.ra=function(){return!0};
|
||||
function Lc(a,b,c,d){if(d)a.ea("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.mb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.i=f;else if(h)for(a.i=Array(4*h.length),d=c=0;c<h.length;c++)a.i[d++]=h[c]&255,a.i[d++]=h[c]>>8&255,a.i[d++]=h[c]>>16&255,a.i[d++]=h[c]>>24&255;else a.i=e;a.qa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=da(b[e],16);Mc(a)}}
|
||||
function Mc(a){if(!qb(a))if(!a.D)A(a);else if(a.i&&a.H){a.j||(a.j=a.i.length);if(a.i.length!=a.j)rb(a,"ROM size (0x"+q(a.i.length)+") does not match specified size ("+("0x"+q(a.j))+")");else{var b;b=a.C;if(xb(a.H,b,a.j,a.G?1:Rb)){var c;for(c=0;c<a.i.length;c++){var d=a.H,e=b+c;d.P[(e&d.j)>>>d.aa].Ja(e&d.i,a.i[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.H,h=f.j,g=[],k=f.C>>>e.aa;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
||||
h-=e.la;e=f.H;f=f.j;h=0;for(d>>>=e.aa;0<f&&d<e.P.length;){k=g[h++];if(!k)break;e.P[d++]=k;f-=e.la}}delete a.i}}A(a)}}Qa(function(){for(var a=y(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Kc(d);mb(d,c)}});function Nc(a){t.call(this,"RAM",a,Nc);this.w=a.addr;this.j=a.size;this.i=!1}v(Nc);m=Nc.prototype;m.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;A(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.i&&this.j&&xb(this.H,this.w,this.j,1)&&(this.i=!0);this.i||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=y(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Nc(d);mb(d,c)}});function Oc(a){t.call(this,"Keyboard",a,Oc,65536);A(this)}v(Oc);Oc.prototype.ha=function(){return!1};Oc.prototype.za=function(a,b,c,d){this.D=a;this.b=c;this.F=d;this.ja=null};
|
||||
Qa(function(){for(var a=y(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Oc(d);mb(d,c)}});
|
||||
function Pc(a){t.call(this,"Debugger",a,Pc);this.R=this.ga=this.L=0;this.N=V();this.na=V();this.w=-1;this.j=[];this.T=!1;this.S=V();this.G=[];this.V={};this.i=this.O=this.C=[];Qc(this);this.ca=0;Rc(this);this.ja=[];Sc(this,a.messages);this.ka=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return gc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return gc(b,a)})}v(Pc);
|
||||
var Tc={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","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"},Uc=["NONE"],Vc=["PC","PSW"],Wc=[];m=Pc.prototype;
|
||||
m.za=function(a,b,c,d){this.H=b;this.b=c;this.D=a;(a=dc(a,"messages"))&&Sc(this,a);this.oa=Wc;Xc(this,function(a){a:{var b=d.H.P,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.u("invalid address: "+c);break a}g=a>>>d.H.aa;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.u("..."):(c=n.type,l=zb[c],n&&d.u(q(n.id)+" %"+q(g<<d.H.aa)+" %%"+q(n.B)+" "+ea(n.Ta)+" "+
|
||||
ea(n.size)+" "+l),c!=Qb&&(c=-1),l=0);a+=d.H.la;g++}}});A(this)};
|
||||
m.ha=function(a,b,c){var d=this;switch(b){case "debugInput":return this.$=this.K[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",gc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.w<d.j.length-1&&(b=d.j[++d.w]):40==a.keyCode&&(0<d.w?b=d.j[--d.w]:(b="",d.w=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=c,Ka(c,function(){if(d.$){var a=d.$.value;d.$.value=
|
||||
"";gc(d,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=c,Ka(c,function(a){var b=!1;pb(d,!0)||(ob(d,!0),b=d.Ka(a?1:0),ob(d,!1));return b}),!0}return!1};m.Ta=function(){this.$&&this.$.focus()};function W(a){a=a&&a.B;null==a&&(a=-1);return a}m.ua=function(a,b){var c=255,d=W(a);-1!==d&&(c=Ab(this.H,d),b&&Zc(a,b));return c};m.Va=function(a,b){var c=65535,d=W(a);if(-1!==d){var c=this.H,e=d&c.i,f=(d&c.j)>>>c.aa,c=e!=c.i?c.P[f].xb(e,d):c.P[f++].Sa(e,d)|c.P[f&c.G].Sa(0,d+1)<<8;b&&Zc(a,b)}return c};
|
||||
m.gb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H;e.P[(d&e.j)>>>e.aa].La(d&e.i,b&255,d);c&&Zc(a,c);F(this.b,!0)}};m.Bb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H,f=d&e.i,h=(d&e.j)>>>e.aa;f!=e.i?e.P[h].Ab(f,b&65535,d):(e.P[h++].La(f,b&255,d),e.P[h&e.G].La(0,b>>8&255,d+1));c&&Zc(a,c);F(this.b,!0)}};function V(a){return{B:a,ma:!1}}function $c(a){return[a.B,a.ma]}function ad(a){return{B:a[0],ma:a[1]}}
|
||||
function X(a,b,c){var d;c=(c?a.N:a.na).B;if(void 0!==b){d=b=bd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=V(d));break}}if(d=e)return d;c=cd(a,b,void 0)}null!=c&&(d=V(c));return d}function dd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Cb=ed(a,b.yb=c[2]))}function Zc(a,b){null!=a.B&&(a.B+=b||1)}
|
||||
function fd(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Tc(a,b){a.F=a;a.Y=a.Db=536870912;a.da=null;a.fa=[];var c=ed(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in C)0<=wa(c,d)&&(a.Y|=C[d],a.u(d+" messages enabled"))}function Yc(a,b){for(var c in C)if(64==C[c]){a.ja[c]=b;break}}
|
||||
function gd(a,b){var c;a=a.toUpperCase();null==b?c=wa(Wc,a):(c=wa(Wc,a.substr(b,2)),0>c&&(c=wa(Wc,a.substr(b,1))));return c}function hd(a,b){var c;if(0<=b){var d=a.b;switch(b){case 12:c=d.g[7];break;case 14:c=d.I&-14|0|(d.ta&255?0:4)|(d.ta&256?1:0)}}return c}
|
||||
function id(a,b){b=bd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));){e=gd(b,c+1);if(0<=e){d=0;var f=hd(a,e);if(void 0!==f)switch(e){case 12:case 14:d=4}b=b.substr(0,c)+(d?q(f,d):"??")+b.substr(c+1+Wc[e].length)}c++}for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=X(a,e))?(d=e+' "'+fd(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=
|
||||
0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=X(a,e))?(Zc(d),d=e+' "'+fd(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+q(V(this.b.g[7]).B,4));if(this.Y&1073741824)this.fa.push(a);else if(!this.da||a!=this.da)if(this.da=a,this.Y&-2147483648&&(this.ba(),a+=" (cpu halted)"),this.u(a),this.b){var c=this.b;Ac(c);c.da=0;F(c)}};
|
||||
function Sc(a){var b;if(Jc(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=V();a.W=0;a.u("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.u("instruction history buffer freed"),a.W=0,a.M=[],a.J=[]}m.Ca=function(a){if(!jd(this))return!1;this.b.Ca(a);return!0};
|
||||
m.Ka=function(a,b,c){if(!jd(this))return!1;this.L=0;a||Jc(this)&&Kc(this,this.b.g[7],0);try{var d=this.b.Ka(a);0<d&&(this.L+=d,mc(this.b,d,!0),ic(this.b,d),this.R++)}catch(e){"number"!=typeof e&&(this.L=0,rb(this.b,e.stack||e.message))}!1!==c&&F(this.b);this.ia(b||!1);return 0<this.L};m.ba=function(a){this.b&&this.b.ba(a)};m.ia=function(a){void 0===a&&(a=!0);this.N=V(this.b.g[7]);a&&1!=this.U?kd(this):ld(this)};
|
||||
function jd(a){var b;if(b=a.b&&qb(a.b))b=a.b,b.A.X?b=!0:(b.u(b.toString()+" not powered"),b=!1);b&&!pb(a.b)?(a=a.b,a.A.Ga?(a.u(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.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Sc(this);this.R=this.ga=0;this.da=null;this.L=0;this.N=V(this.b.g[7]);this.A.Z=!1;md(this);a||this.ia()};
|
||||
m.save=function(){var a=new G(this);H(a,0,$c(this.N));H(a,1,$c(this.S));H(a,2,[this.j,this.T,this.Y]);H(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.N=ad(a[b++]),this.S=ad(a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.Y|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.U||this.u("running");this.A.Z=!0;this.Ma=a;this.Na=b};
|
||||
m.stop=function(a,b){if(this.A.Z){this.A.Z=!1;this.L=b-this.Na;if(!this.U){var c="stopped";if(this.L){var d=a-this.Ma,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Jc(this)&&(c+=this.R+" opcodes, ",this.ga-=this.R,this.R=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else nb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.u(c)}this.ia(!0);this.Ta();md(this,this.b.g[7])}};function Jc(a){return 1<a.i.length||!!a.ca}
|
||||
function Kc(a,b,c){var d=a.b;if(0<c&&(a.ca&&!--a.ca||Zb(a,b,1,a.i)))return!0;0<=c&&a.J.length&&(a.R++,b=Ab(a.H,b),null!=b&&(a.J[b][1]++,b=a.M[a.W],b.B=d.g[7],b.ma=!1,++a.W==a.M.length&&(a.W=0)));return!1}function Rc(a){var b,c;a.i=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.H;$b(d.P[W(c)>>>d.aa],!1)}a.O=["br"];if(void 0!==a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=a.H,$b(d.P[W(c)>>>d.aa],!0);a.C=["bw"];a.wa=0}
|
||||
m.xa=function(a,b,c){var d=!0;c||nd(this,a,b,!1,!0);if(a!=this.i){var e=W(b);if(-1===e)this.u("invalid address: "+q(b.B,4)),d=!1;else{var f=this.H;f.P[e>>>f.aa].xa(e&f.i,a==this.C)}}d&&(a.push(b),c?b.ma=!0:(od(this,a,a.length-1,"set"),Sc(this)));return d};function nd(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.ma)){f=!0;g.ma||e||od(a,b,h,"cleared");b.splice(h,1);b!=a.i&&(d=a.H,$b(d.P[c>>>d.aa],b==a.C));g.ma||Sc(a);break}}return f}
|
||||
function pd(a,b){for(var c=1;c<b.length;c++)od(a,b,c);return b.length-1}function od(a,b,c,d){c=b[c];a.u(b[0]+" "+q(c.B,4)+(d?" "+d:c.yb?' "'+c.yb+'"':""))}function md(a,b){if(void 0!==b)Zb(a,b,1,a.i,!0),a.U=0;else for(var c=1;c<a.i.length;c++){var d=a.i[c];if(d.ma){if(!nd(a,a.i,d,!0))break;c=0}}}
|
||||
function Zb(a,b,c,d,e){var f=!1;if(!a.wa++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.ma)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.ma&&(nd(a,d,g,!0),e=!0);if(n=g.Cb){for(var f=!1,p=0;p<n.length;p++)if(!qd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var z=p+1;z<n.length&&n[z].indexOf("else");z++)p++;if(z==n.length){f=!0;break}}a.b.A.Z||(f=!0)}if(f){e||od(a,d,h,"hit");break}}}a.wa--;return f}
|
||||
function rd(a,b,c,d){for(var e=V(b.B),f=a.ua(b,1),h=a.oa[f]||[0],g="",k=Vc[h[0]],l=h.length-1,n=0,p,z=1;z<=l;z++){var J="";p=h[z];if(void 0!==p){var E=p&240;if(E){var ga=p&15;ga?n=ga:p|=n;p&61440||(p|=1==z?8192:4096);if(E&32)a:{var J=a,E=p,ga=b,B=" ";switch(E&15){case 1:B=q(J.ua(ga,1),2);break;case 2:B=q(J.ua(ga,1)<<24>>24,4);break;case 3:B=q(J.Va(ga,2),4);break;default:J="imm("+ea(E)+")";break a}E&64?B="["+B+"]":E&16||(B="0x"+B);J=B}else E&16?J=Wc[(p&3840)>>8]:E&128&&(J=(f>>3&7).toString());if(!J||
|
||||
!J.length){g="INVALID";break}0<g.length&&(g+=",");g+=J||"???"}}}f="";h=q(e.B,4)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=q(a.ua(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=oa(f,10);h=h+(p&32768?"*":" ")+oa(k,7);g&&(h+=" "+g);c&&(h=oa(h,40)+";"+c,h=a.b.A.Fa?h+("cycles="+jc(a.b).toString()+" cs="+q(a.b.Pa)):h+(null!=d?"="+d.toString():""));return h}var sd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function td(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
"";gc(d,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=c,Ka(c,function(a){var b=!1;pb(d,!0)||(ob(d,!0),b=d.Ia(a?1:0),ob(d,!1));return b}),!0}return!1};m.Sa=function(){this.$&&this.$.focus()};function W(a){a=a&&a.B;null==a&&(a=-1);return a}m.ua=function(a,b){var c=255,d=W(a);-1!==d&&(c=Ab(this.H,d),b&&Yc(a,b));return c};m.Ua=function(a,b){var c=65535,d=W(a);if(-1!==d){var c=this.H,e=d&c.i,f=(d&c.j)>>>c.aa,c=e!=c.i?c.P[f].ub(e,d):c.P[f++].Ra(e,d)|c.P[f&c.G].Ra(0,d+1)<<8;b&&Yc(a,b)}return c};
|
||||
m.eb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H;e.P[(d&e.j)>>>e.aa].Ja(d&e.i,b&255,d);c&&Yc(a,c);F(this.b,!0)}};m.yb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H,f=d&e.i,h=(d&e.j)>>>e.aa;f!=e.i?e.P[h].xb(f,b&65535,d):(e.P[h++].Ja(f,b&255,d),e.P[h&e.G].Ja(0,b>>8&255,d+1));c&&Yc(a,c);F(this.b,!0)}};function V(a){return{B:a,ma:!1}}function Zc(a){return[a.B,a.ma]}function $c(a){return{B:a[0],ma:a[1]}}
|
||||
function X(a,b,c){var d;c=(c?a.N:a.na).B;if(void 0!==b){d=b=ad(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=V(d));break}}if(d=e)return d;c=bd(a,b,void 0)}null!=c&&(d=V(c));return d}function cd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.zb=dd(a,b.vb=c[2]))}function Yc(a,b){null!=a.B&&(a.B+=b||1)}
|
||||
function ed(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Sc(a,b){a.F=a;a.Y=a.Ab=536870912;a.da=null;a.fa=[];var c=dd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in C)0<=wa(c,d)&&(a.Y|=C[d],a.u(d+" messages enabled"))}function Xc(a,b){for(var c in C)if(64==C[c]){a.ja[c]=b;break}}
|
||||
function fd(a,b){var c;a=a.toUpperCase();null==b?c=wa(Vc,a):(c=wa(Vc,a.substr(b,2)),0>c&&(c=wa(Vc,a.substr(b,1))));return c}function gd(a,b){var c;if(0<=b){var d=a.b;switch(b){case 12:c=d.g[7];break;case 14:c=d.I&-14|0|(d.ta&255?0:4)|(d.ta&256?1:0)}}return c}
|
||||
function hd(a,b){b=ad(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));){e=fd(b,c+1);if(0<=e){d=0;var f=gd(a,e);if(void 0!==f)switch(e){case 12:case 14:d=4}b=b.substr(0,c)+(d?q(f,d):"??")+b.substr(c+1+Vc[e].length)}c++}for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=X(a,e))?(d=e+' "'+ed(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=
|
||||
0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=X(a,e))?(Yc(d),d=e+' "'+ed(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+q(V(this.b.g[7]).B,4));if(this.Y&1073741824)this.fa.push(a);else if(!this.da||a!=this.da)if(this.da=a,this.Y&-2147483648&&(this.ba(),a+=" (cpu halted)"),this.u(a),this.b){var c=this.b;zc(c);c.da=0;F(c)}};
|
||||
function Rc(a){var b;if(Ic(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=V();a.W=0;a.u("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.u("instruction history buffer freed"),a.W=0,a.M=[],a.J=[]}m.Ca=function(a){if(!id(this))return!1;this.b.Ca(a);return!0};
|
||||
m.Ia=function(a,b,c){if(!id(this))return!1;this.L=0;a||Ic(this)&&Jc(this,this.b.g[7],0);try{var d=this.b.Ia(a);0<d&&(this.L+=d,lc(this.b,d,!0),hc(this.b,d),this.R++)}catch(e){"number"!=typeof e&&(this.L=0,rb(this.b,e.stack||e.message))}!1!==c&&F(this.b);this.ia(b||!1);return 0<this.L};m.ba=function(a){this.b&&this.b.ba(a)};m.ia=function(a){void 0===a&&(a=!0);this.N=V(this.b.g[7]);a&&1!=this.U?jd(this):kd(this)};
|
||||
function id(a){var b;if(b=a.b&&qb(a.b))b=a.b,b.A.X?b=!0:(b.u(b.toString()+" not powered"),b=!1);b&&!pb(a.b)?(a=a.b,a.A.error?(a.u(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.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Rc(this);this.R=this.ga=0;this.da=null;this.L=0;this.N=V(this.b.g[7]);this.A.Z=!1;ld(this);a||this.ia()};
|
||||
m.save=function(){var a=new G(this);H(a,0,Zc(this.N));H(a,1,Zc(this.S));H(a,2,[this.j,this.T,this.Y]);H(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.N=$c(a[b++]),this.S=$c(a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.Y|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.U||this.u("running");this.A.Z=!0;this.La=a;this.Ma=b};
|
||||
m.stop=function(a,b){if(this.A.Z){this.A.Z=!1;this.L=b-this.Ma;if(!this.U){var c="stopped";if(this.L){var d=a-this.La,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Ic(this)&&(c+=this.R+" opcodes, ",this.ga-=this.R,this.R=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else nb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.u(c)}this.ia(!0);this.Sa();ld(this,this.b.g[7])}};function Ic(a){return 1<a.i.length||!!a.ca}
|
||||
function Jc(a,b,c){var d=a.b;if(0<c&&(a.ca&&!--a.ca||Zb(a,b,1,a.i)))return!0;0<=c&&a.J.length&&(a.R++,b=Ab(a.H,b),null!=b&&(a.J[b][1]++,b=a.M[a.W],b.B=d.g[7],b.ma=!1,++a.W==a.M.length&&(a.W=0)));return!1}function Qc(a){var b,c;a.i=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.H;$b(d.P[W(c)>>>d.aa],!1)}a.O=["br"];if(void 0!==a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=a.H,$b(d.P[W(c)>>>d.aa],!0);a.C=["bw"];a.wa=0}
|
||||
m.xa=function(a,b,c){var d=!0;c||md(this,a,b,!1,!0);if(a!=this.i){var e=W(b);if(-1===e)this.u("invalid address: "+q(b.B,4)),d=!1;else{var f=this.H;f.P[e>>>f.aa].xa(e&f.i,a==this.C)}}d&&(a.push(b),c?b.ma=!0:(nd(this,a,a.length-1,"set"),Rc(this)));return d};function md(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.ma)){f=!0;g.ma||e||nd(a,b,h,"cleared");b.splice(h,1);b!=a.i&&(d=a.H,$b(d.P[c>>>d.aa],b==a.C));g.ma||Rc(a);break}}return f}
|
||||
function od(a,b){for(var c=1;c<b.length;c++)nd(a,b,c);return b.length-1}function nd(a,b,c,d){c=b[c];a.u(b[0]+" "+q(c.B,4)+(d?" "+d:c.vb?' "'+c.vb+'"':""))}function ld(a,b){if(void 0!==b)Zb(a,b,1,a.i,!0),a.U=0;else for(var c=1;c<a.i.length;c++){var d=a.i[c];if(d.ma){if(!md(a,a.i,d,!0))break;c=0}}}
|
||||
function Zb(a,b,c,d,e){var f=!1;if(!a.wa++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.ma)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.ma&&(md(a,d,g,!0),e=!0);if(n=g.zb){for(var f=!1,p=0;p<n.length;p++)if(!pd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var z=p+1;z<n.length&&n[z].indexOf("else");z++)p++;if(z==n.length){f=!0;break}}a.b.A.Z||(f=!0)}if(f){e||nd(a,d,h,"hit");break}}}a.wa--;return f}
|
||||
function qd(a,b,c,d){for(var e=V(b.B),f=a.ua(b,1),h=a.oa[f]||[0],g="",k=Uc[h[0]],l=h.length-1,n=0,p,z=1;z<=l;z++){var J="";p=h[z];if(void 0!==p){var E=p&240;if(E){var ga=p&15;ga?n=ga:p|=n;p&61440||(p|=1==z?8192:4096);if(E&32)a:{var J=a,E=p,ga=b,B=" ";switch(E&15){case 1:B=q(J.ua(ga,1),2);break;case 2:B=q(J.ua(ga,1)<<24>>24,4);break;case 3:B=q(J.Ua(ga,2),4);break;default:J="imm("+ea(E)+")";break a}E&64?B="["+B+"]":E&16||(B="0x"+B);J=B}else E&16?J=Vc[(p&3840)>>8]:E&128&&(J=(f>>3&7).toString());if(!J||
|
||||
!J.length){g="INVALID";break}0<g.length&&(g+=",");g+=J||"???"}}}f="";h=q(e.B,4)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=q(a.ua(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=oa(f,10);h=h+(p&32768?"*":" ")+oa(k,7);g&&(h+=" "+g);c&&(h=oa(h,40)+";"+c,h=a.b.A.Fa?h+("cycles="+ic(a.b).toString()+" cs="+q(a.b.Oa)):h+(null!=d?"="+d.toString():""));return h}var rd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function sd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
|
||||
function cd(a,b,c){var d;if(b){b=bd(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=pa(n);if(!n){f=!0;break}n=ud(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],z=n.length;k.length&&sd[n]<sd[k[k.length-1]]&&td(g,k,1);k.push(n);b=b.substr(p+z)}td(g,k)&&1==g.length||(f=!0);f?c&&a.u("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&vd(a,null,
|
||||
d))}return d}function bd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=cd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Va(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.R-a.ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function ud(a,b,c,d){var e;void 0!==b?(e=gd(b),0<=e?e=hd(a,e):(e=a.V[b],void 0===e&&(e=da(b))),void 0!==e||d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return e}
|
||||
function vd(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,n="";void 0===l?l=32:32<l&&(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+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.u((null!=b?b+": ":"")+d);return e}function Ud(a,b){if(b)return vd(a,b,a.V[b]);var c=0;for(b in a.V)vd(a,b,a.V[b]),c++;return 0<c}Qc.prototype.pa=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Vd(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.B>>>0,g=f.Gb;if(e>=h&&e<h+g){e=ta(f.hb,[e-h],a.pa);0<=e?Wd(a,b,e,d):c&&(e=~e,Wd(a,b,e-1,d),Wd(a,b,e,d));break}}return d}function Wd(a,b,c,d){var e={},f=a.G[b].hb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||
function Xd(a,b){if("?"==b)a.u("frequency commands:"),a.u("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.u("frequency data cleared");d++}else if(void 0!==b)a.u("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],h=e[c][1];h&&(a.u((Vc[a.oa[f][0]]+" ").substr(0,5)+" ("+("0x"+q(f,2))+"): "+h+" times"),d++)}}d||a.u("no frequency data available")}}
|
||||
function Yd(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ud(a)||a.u("no variables"),!0;if(!c[2])return Ud(a,c[1]);if(!c[3])return delete a.V[c[1]],!0;var d=cd(a,c[3]);return void 0!==d?(a.V[c[1]]=d,!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||
function Zd(a,b,c){var d=null;if(b=X(a,b,!0)){var e=Vd(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+ea(f)),f=e[0]+" ("+q(e[1],4)+")"+h,c&&a.u(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+ea(f)),f=e[4]+" ("+q(e[5],4)+")"+h,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
|
||||
function kd(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!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.u("missing value for "+b[1]);return}var h=!1,g=cd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":d.g[7]=g;a.N=V(d.g[7]);break;case "CF":d.ta=g?d.ta|256:d.ta&255;break;case "ZF":d.ta=g?d.ta&
|
||||
-256:d.ta|255;break;case "SF":break;default:a.u("unknown register: "+e);return}if(!h){a.u("invalid value: "+f);return}F(d);a.u("updated registers:")}a.u("no regs");c&&(a.N=V(d.g[7]),ld(a,q(a.N.B,4)))}}function $d(a,b){b=pa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.u(id(a,c[2])):cd(a,b,!0)}function ae(a,b,c){var d="t"!=b;c=ud(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ja(c,function(){return ob(a,!0)&&a.Ka(e,d,!1)},function(){F(a.b);ob(a,!1)})}
|
||||
function ld(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=pb(a,!1)||a.U?a.L:null;var h=null!=f?"cycles":null,g=Vd(a,b),k=b.B;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.u(l)}g[3]&&(h=g[3],f=null);f=rd(a,b,h,f);a.u(f);a.N=b;e-=b.B-k;c++}}}
|
||||
function ed(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";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==d&&!e||!h)a.push(pa(b.substring(c,f))),c=f+1}}return a}
|
||||
function qd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(">> "+b):(a.T&&(a.u("ended assemble at "+q(a.S.B,4)),a.N=a.S,a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.da=null;if(qb(a)&&0<b.length){a.T&&(b="a "+q(a.S.B,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=X(a,f[1],!0);if(n)if(a.S=
|
||||
n,void 0===f[2])a.u("begin assemble at "+q(n.B,4)),a.T=!0,F(a.b);else{var p;a.u("not supported yet");p=[];if(p.length){for(var z=0;z<p.length;z++)a.gb(n,p[z],1);a.u(rd(a,a.S))}}break;case "b":a:{var J=f[0],E=f[1],ga=b;if("?"==E)a.u("breakpoint commands:"),a.u("\tbp [a]\tset exec breakpoint at addr [a]"),a.u("\tbr [a]\tset read breakpoint at addr [a]"),a.u("\tbw [a]\tset write breakpoint at addr [a]"),a.u("\tbc [a]\tclear breakpoint at addr [a]"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [n]\tbreak after [n] instruction(s)");
|
||||
else{var B=J.charAt(1);if("l"==B){var Aa=0,Aa=Aa+pd(a,a.i),Aa=Aa+pd(a,a.O);(Aa+=pd(a,a.C))||a.u("no breakpoints")}else if("n"==B)a.ca=ud(a,E),a.u("break after "+a.ca+" instruction(s)");else if(void 0===E)a.u("missing breakpoint address");else{var P=V();if("*"!=E&&(P=X(a,E,!0),!P))break a;"c"==B?null==P.B?(Rc(a),a.u("all breakpoints cleared")):nd(a,a.i,P)||nd(a,a.O,P)||nd(a,a.C,P)||a.u("breakpoint missing: "+q(P.B,4)):null!=P.B&&(dd(a,P,ga),"p"==B?a.xa(a.i,P):"r"==B?a.xa(a.O,P):"w"==B?a.xa(a.C,P):
|
||||
a.u("unknown breakpoint command: "+B))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ba,Ca=f[0],Y=f[1],qa=f[2],ue=f[3];if("?"==Y){var Z="";for(Ba in C)a.ja[Ba]&&(Z&&(Z+=","),Z+=Ba);Z+=",state,symbols";a.u("dump memory commands:");a.u("\tdb [a] [#] dump # bytes at address a");a.u("\tdw [a] [#] dump # words at address a");a.u("\tdd [a] [#] dump # dwords at address a");a.u("\tdh [#] [#] dump # instructions from history");Z.length&&a.u("dump extension commands:\n\t"+Z)}else if("state"==
|
||||
Y){var wd=be(a.D,!0);"console"==qa?console.log(wd):(a.ya&&(a.ya.value=""),a.u(wd))}else if("symbols"==Y)for(var oc=0;oc<a.G.length;oc++){var pc=a.G[oc],Da;for(Da in pc.qa)if("."!=Da.charAt(0)){var xd=pc.qa[Da].o;if(void 0!==xd){var yd=pc.qa[Da].l;yd&&(Da=yd);a.u(q(xd,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in C)if(f[1]==Ba){var zd=a.ja[Ba];zd?(f.shift(),f.shift(),zd(f)):a.u("no dump registered for "+Y);break a}Y||(Ca=a.Oa||"db")}else a.Oa=Ca;if("dh"==Ca){var Ad=Y,Bd=qa,Cd="",Dd=0,K=a.W,aa=a.M;if(aa.length){var Q=
|
||||
+Ad||a.Da,Ea=+Bd||10;isNaN(Q)?Q=Ea:Cd="more ";Q>aa.length&&(a.u("note: only "+aa.length+" available"),Q=aa.length);K-=Q;0>K&&(null==aa[aa.length-1].B?(Q=K+Q,K=0):K+=aa.length);var qc=[];"call"==Bd&&(Ea=1E5,qc=["CALL"]);for(void 0!==Ad&&a.u(Q+" instructions earlier:");0<Ea&&K!=a.W;){var Ed=aa[K++];if(null==Ed.B)break;var db=V(Ed.B),ve=Q--,Fd=rd(a,db,"history",ve);(!qc.length||0<=Fd.indexOf(qc[0]))&&a.u(Fd);db.Ya&&(K+=db.Ya,Ea-=db.Ya,Q-=db.Ya);K>=aa.length&&(K=0);a.Da=Q;Dd++;Ea--}}Dd||(a.u("no "+Cd+
|
||||
"history available"),a.Da=void 0)}else{var Cb=X(a,Y);if(Cb){var Db=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||ue),Db=ud(a,qa)>>>0,65536<Db&&(Db=65536));for(var ra="",Eb="dd"==Ca?4:"dw"==Ca?2:1,Fb=Eb*Db||128,we=Fb+15>>4||1;we--&&0<Fb;){var Gb=0,rc=0,eb,fb="",sc="",Y=q(Cb.B,4);for(eb=16;0<eb&&0<Fb;eb--){var Hb=a.ua(Cb,1),Gb=Gb|Hb<<(rc++<<3);rc==Eb&&(fb+=q(Gb,2*Eb),fb+=1==Eb?9==eb?"-":" ":" ",Gb=rc=0);sc+=32<=Hb&&128>Hb?String.fromCharCode(Hb):".";Fb--}ra&&(ra+="\n");ra+=Y+" "+fb+(0==eb?" "+sc:"")}ra&&
|
||||
a.u(ra);a.na=Cb}}}}break;case "e":if("else"==f[0])break;var Ib=1,Gd=255,Hd=a.ua,Id=a.gb;"ew"==f[0]&&(Ib=2,Gd=65535,Hd=a.Va,Id=a.Bb);var Jd=Ib<<1,Kd=f[1];if(null==Kd)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var Jb=X(a,Kd);if(Jb)for(var Kb=2;Kb<f.length;Kb++){var gb=cd(a,f[Kb]);if(void 0===gb){a.u("unrecognized value: "+f[Kb]);break}gb&~Gd&&a.u("warning: "+q(gb)+" exceeds "+Ib+"-byte value");var xe=Hd.call(a,Jb);
|
||||
a.u("changing "+q(Jb.B,4)+" from 0x"+q(xe,Jd)+" to 0x"+q(gb,Jd));Id.call(a,Jb,gb,Ib)}}break;case "f":Xd(a,f[1]);break;case "g":a:{var Ld=f[1],ye=b;if(void 0!==Ld){var tc=X(a,Ld,!0);if(!tc)break a;dd(a,tc,ye);a.xa(a.i,tc,!0)}a.Ca(!0)||c||a.u("cpu busy or unavailable, run command ignored")}break;case "h":a:{var uc;if(a.A.Z)uc="halting",a.ba();else{if(pb(a,!0))break a;uc="already halted"}c||a.u(uc)}break;case "i":if("if"==f[0]){var vc;var hb=b.substr(2),hb=pa(hb);cd(a,hb)?(c||a.u("true: "+hb),vc=!0):
|
||||
(c||a.u("false: "+hb),vc=!1);vc||(d=!1)}break;case "k":var ze=f[0];if("?"==f[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var wc=0,Md=V(),ib=V(a.b.g[6]);for(a.u("stack trace for "+q(ib.B,4));10>wc;){for(var sa=null,Ae=256;65536>ib.B>>>0;){Md.B=a.Va(ib,2);if(null==ib.B||!Ae--)break;for(var Be=a,Lb=Md,Nd=null,jb=Lb.B,Od=jb,xc=1;6>=xc&&jb;xc++){if(2<xc){Lb.B=jb;var Mb=rd(Be,Lb);if(0<=Mb.indexOf("CALL")){var Pd=Mb.indexOf(" ");if(jb+(Mb.indexOf(" ",
|
||||
Pd+1)-Pd-1)/2==Od){Nd=Mb;break}}}jb--}Lb.B=Od;if(sa=Nd)break}if(!sa||null==sa)break;var Qd=null;if("ks"==ze){var Rd=sa.match(/[0-9A-F]+$/);Rd&&(Qd=Zd(a,Rd[0]))}sa=oa(sa,50)+" ;"+(Qd||"stack="+q(ib.B,4));a.u(sa);wc++}wc||a.u("no return addresses found")}break;case "l":if("ln"==f[0]){Zd(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,x=f[1];"?"==x&&(x=void 0);if(void 0!==x){var ha=0;if("all"==x)ha=1878917119,x=null;else if("on"==x)ca=!0,x=null;else if("off"==x)ca=!1,x=null;else{"keys"==x&&(x="key");
|
||||
"kbd"==x&&(x="keyboard");for(ba in C)if(x==ba){ha=C[ba];ca=!!(a.Y&ha);break}if(!ha){a.u("unknown message category: "+x);break a}}if(ha)if("on"==f[2])a.Y|=ha,ca=!0;else if("off"==f[2]&&(a.Y&=~ha,ca=!1,1073741824==ha)){for(var yc=0;yc<a.fa.length;yc++)a.u(a.fa[yc]);a.fa=[]}}var Ce=0,ia="";for(ba in C)if(!x||x==ba){var De=!!(a.Y&C[ba]);if(null===ca||ca==De)ia&&(ia+=","),++Ce%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),ia+=ba}void 0===x&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.u((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));Sc(a)}break;case "p":if("print"==f[0]){$d(a,b.substr(5));break}var Ee="pr"==f[0]?1:0;if(a.U)a.u("step in progress");else{var Sd=V(a.b.g[7]);a.ua(Sd);a.U?(a.xa(a.i,Sd,!0),a.Ca()||(a.D&&a.D.Ta(),a.U=0)):ae(a,Ee?"tr":"t")}break;case "r":if("reset"==b){a.D&&a.D.reset();break}kd(a,f);break;case "s":a:switch(f[1]){case "cs":var kb;void 0!==f[3]&&(kb=+f[3]);switch(f[2]){case "int":a.b.Ia=kb;break;case "start":a.b.Qa=
|
||||
kb;break;case "stop":a.b.Ja=kb;break;default:a.u("unknown cs option");break a}void 0!==kb&&fc(a.b);a.u("checksums "+(a.b.A.Fa?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(lc(a.b,+f[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.b.Aa.toFixed(2)+"Mhz")+" ("+a.b.Ba+"x)");break;case "?":a.u("debugger options:");a.u("\tcs int #\tset checksum cycle interval to #");a.u("\tcs start #\tset checksum cycle start count to #");a.u("\tcs stop #\tset checksum cycle stop count to #");
|
||||
a.u("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.u("unknown option: "+f[1])}break;case "t":ae(a,f[0],f[1]);break;case "u":ld(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Yd(a,b.substr(3))||(d=!1);break}a.u("PDP11js version 1.24.2 ("+a.b.rb+",RELEASE"+(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.u(window?window.navigator.userAgent:"");break;case "?":if(f[1]){$d(a,b.substr(1));break}var lb="commands:",zc;for(zc in Uc)lb+="\n"+oa(zc,9)+Uc[zc];Jc(a)||(lb+="\nnote: frequency/history disabled if no exec breakpoints");
|
||||
a.u(lb);break;default:a.u("unknown command: "+b),d=!1}}}catch(Td){a.u("debugger error: "+(Td.stack||Td.message)),d=!1}return d}function gc(a,b,c){b=ed(a,b,c);for(var d in b)if(!qd(a,b[d]))return!1;return!0}Qa(function(){for(var a=y(document,"pdp11","debugger"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Qc(d);mb(d,c)}});
|
||||
function ce(a,b,c){t.call(this,"Computer",a,ce,67108864);this.A.X=!1;de(this,b);this.N=dc(this,"autoPower",a);this.w=0;this.U=a.busWidth||a.buswidth;this.i=ee;this.L=null;this.G=this.S=!1;this.V=dc(this,"url")||"";(Math.random()+.1).toString(36);this.j=fe(this);if(this.b=cb("CPU",this.id)){this.F=cb("Debugger",this.id);this.H=new vb({id:this.pb+".bus",busWidth:this.U},this.b,this.F);var d,e=bb(this.id);if((this.D=cb("Panel",this.id))&&this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.ea=this.D.ea,d.u=this.D.u,
|
||||
d.ya=this.D.ya;this.u("PDP11js v1.24.2\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.u("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)d=e[b],d.za&&d.za(this,this.H,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.i=parseInt(d,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.G=!0,this.i=ee),this.i&&(this.M=
|
||||
new G(this,"1.24.2"),ge(this.M)?b=null:delete this.M);!b&&this.i&&(b=he(this))&&(this.G=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.J=null,h.G=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(h.L=b,h.S=!0);A(h)})}else A(this);this.K.power||(this.N=!0);!c&&this.N&&ie(this,this.Ra)}else r("Unable to find CPU component")}v(ce);var ee=0;
|
||||
function de(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.T=b}function dc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.T&&(d=a.T[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ie(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!qb(f)){qb(f,function(){ie(a,b,c)});return}}b.call(a,c)}
|
||||
function je(a,b){var c=new G(a,"1.24.2","validate");if(ge(c)&&ke(c)){var d=le(c,"timestamp"),e=b?le(b,"timestamp"):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=ce.prototype;
|
||||
m.Ra=function(a){void 0===a&&(a=this.i||(this.L?1:ee));if(!this.w){this.w++;var b=!1,c=!1;this.R=!1;var d=this.M||new G(this,"1.24.2");if(-1==a)b=!0;else if(a>ee){if(ge(d,this.L)){this.C=new G(this,"1.24.2","failsafe");ge(this.C)&&(me(this,d),a=2,ne(this.C));H(this.C,"timestamp",va());oe(this.C);var e=this.i&&!this.G;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=ke(d)){var f=le(d,"code"),h=le(d,"data");f&&("ok"==f?ge(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.j=null)):this.u(f+": "+h),ne(d),ge(d)?(c=ke(d),e=!0):c=!1))}e&&je(this,c?d:null)}else 2==a&&d.clear()}else je(this);delete this.L;delete this.M}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=pe(this,h,d,b,c));b=[d,a,c];-1!=a?ie(this,this.jb,b):this.jb(b)}};
|
||||
function pe(a,b,c,d,e){if(!b.A.X){b.A.X=!0;if(b.sa){var f=null;e&&((f=le(c,b.id))||(f=le(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.O&&!a.S?(c.clear(),a.i=ee,window&&window.location.reload()):a.R=!0,b.sa(null),e=!1)}if(!d&&b.ob)for(a=b.ob.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.jb=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.A.X=!0;var d=this.K.power;d&&(d.textContent="Shutdown");this.b&&(pe(this,this.b,b,c,a),hc(this.b));this.R&&(me(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
||||
function me(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 c=a.j||"",d=b.toString(),e={app:"PDP11js",ver:"1.24.2"};e.url=a.V;e.user=c;e.type="bug";e.data=d;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function be(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.24.2"),h=new G(a,"1.24.2","validate"),g=va();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.24.2");H(f,"url",window?window.location.href:null);H(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ra&&(c&&a.b.ba(),d=a.b.ra(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.X=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.X&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&H(f,l.id,d)),c&&
|
||||
(l.A.X=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.j&&qe(a,a.j,f.toString()),oe(h)&&oe(f)||(e=null,d=g=!0)):a.i&&(d=!0,g=3==a.i),d&&f.clear(g)):e=f.toString());c&&(a.A.X=!1,b=a.K.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
|
||||
function bd(a,b,c){var d;if(b){b=ad(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=pa(n);if(!n){f=!0;break}n=td(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],z=n.length;k.length&&rd[n]<rd[k[k.length-1]]&&sd(g,k,1);k.push(n);b=b.substr(p+z)}sd(g,k)&&1==g.length||(f=!0);f?c&&a.u("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&ud(a,null,
|
||||
d))}return d}function ad(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=bd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ua(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.R-a.ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function td(a,b,c,d){var e;void 0!==b?(e=fd(b),0<=e?e=gd(a,e):(e=a.V[b],void 0===e&&(e=da(b))),void 0!==e||d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return e}
|
||||
function ud(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,n="";void 0===l?l=32:32<l&&(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+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.u((null!=b?b+": ":"")+d);return e}function Td(a,b){if(b)return ud(a,b,a.V[b]);var c=0;for(b in a.V)ud(a,b,a.V[b]),c++;return 0<c}Pc.prototype.pa=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Ud(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.B>>>0,g=f.Db;if(e>=h&&e<h+g){e=ta(f.fb,[e-h],a.pa);0<=e?Vd(a,b,e,d):c&&(e=~e,Vd(a,b,e-1,d),Vd(a,b,e,d));break}}return d}function Vd(a,b,c,d){var e={},f=a.G[b].fb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||
function Wd(a,b){if("?"==b)a.u("frequency commands:"),a.u("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.u("frequency data cleared");d++}else if(void 0!==b)a.u("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],h=e[c][1];h&&(a.u((Uc[a.oa[f][0]]+" ").substr(0,5)+" ("+("0x"+q(f,2))+"): "+h+" times"),d++)}}d||a.u("no frequency data available")}}
|
||||
function Xd(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Td(a)||a.u("no variables"),!0;if(!c[2])return Td(a,c[1]);if(!c[3])return delete a.V[c[1]],!0;var d=bd(a,c[3]);return void 0!==d?(a.V[c[1]]=d,!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||
function Yd(a,b,c){var d=null;if(b=X(a,b,!0)){var e=Ud(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+ea(f)),f=e[0]+" ("+q(e[1],4)+")"+h,c&&a.u(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+ea(f)),f=e[4]+" ("+q(e[5],4)+")"+h,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
|
||||
function jd(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!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.u("missing value for "+b[1]);return}var h=!1,g=bd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":d.g[7]=g;a.N=V(d.g[7]);break;case "CF":d.ta=g?d.ta|256:d.ta&255;break;case "ZF":d.ta=g?d.ta&
|
||||
-256:d.ta|255;break;case "SF":break;default:a.u("unknown register: "+e);return}if(!h){a.u("invalid value: "+f);return}F(d);a.u("updated registers:")}a.u("no regs");c&&(a.N=V(d.g[7]),kd(a,q(a.N.B,4)))}}function Zd(a,b){b=pa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.u(hd(a,c[2])):bd(a,b,!0)}function $d(a,b,c){var d="t"!=b;c=td(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ja(c,function(){return ob(a,!0)&&a.Ia(e,d,!1)},function(){F(a.b);ob(a,!1)})}
|
||||
function kd(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=pb(a,!1)||a.U?a.L:null;var h=null!=f?"cycles":null,g=Ud(a,b),k=b.B;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.u(l)}g[3]&&(h=g[3],f=null);f=qd(a,b,h,f);a.u(f);a.N=b;e-=b.B-k;c++}}}
|
||||
function dd(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";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==d&&!e||!h)a.push(pa(b.substring(c,f))),c=f+1}}return a}
|
||||
function pd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(">> "+b):(a.T&&(a.u("ended assemble at "+q(a.S.B,4)),a.N=a.S,a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.da=null;if(qb(a)&&0<b.length){a.T&&(b="a "+q(a.S.B,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=X(a,f[1],!0);if(n)if(a.S=
|
||||
n,void 0===f[2])a.u("begin assemble at "+q(n.B,4)),a.T=!0,F(a.b);else{var p;a.u("not supported yet");p=[];if(p.length){for(var z=0;z<p.length;z++)a.eb(n,p[z],1);a.u(qd(a,a.S))}}break;case "b":a:{var J=f[0],E=f[1],ga=b;if("?"==E)a.u("breakpoint commands:"),a.u("\tbp [a]\tset exec breakpoint at addr [a]"),a.u("\tbr [a]\tset read breakpoint at addr [a]"),a.u("\tbw [a]\tset write breakpoint at addr [a]"),a.u("\tbc [a]\tclear breakpoint at addr [a]"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [n]\tbreak after [n] instruction(s)");
|
||||
else{var B=J.charAt(1);if("l"==B){var Aa=0,Aa=Aa+od(a,a.i),Aa=Aa+od(a,a.O);(Aa+=od(a,a.C))||a.u("no breakpoints")}else if("n"==B)a.ca=td(a,E),a.u("break after "+a.ca+" instruction(s)");else if(void 0===E)a.u("missing breakpoint address");else{var P=V();if("*"!=E&&(P=X(a,E,!0),!P))break a;"c"==B?null==P.B?(Qc(a),a.u("all breakpoints cleared")):md(a,a.i,P)||md(a,a.O,P)||md(a,a.C,P)||a.u("breakpoint missing: "+q(P.B,4)):null!=P.B&&(cd(a,P,ga),"p"==B?a.xa(a.i,P):"r"==B?a.xa(a.O,P):"w"==B?a.xa(a.C,P):
|
||||
a.u("unknown breakpoint command: "+B))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ba,Ca=f[0],Y=f[1],qa=f[2],te=f[3];if("?"==Y){var Z="";for(Ba in C)a.ja[Ba]&&(Z&&(Z+=","),Z+=Ba);Z+=",state,symbols";a.u("dump memory commands:");a.u("\tdb [a] [#] dump # bytes at address a");a.u("\tdw [a] [#] dump # words at address a");a.u("\tdd [a] [#] dump # dwords at address a");a.u("\tdh [#] [#] dump # instructions from history");Z.length&&a.u("dump extension commands:\n\t"+Z)}else if("state"==
|
||||
Y){var vd=ae(a.D,!0);"console"==qa?console.log(vd):(a.ya&&(a.ya.value=""),a.u(vd))}else if("symbols"==Y)for(var nc=0;nc<a.G.length;nc++){var oc=a.G[nc],Da;for(Da in oc.qa)if("."!=Da.charAt(0)){var wd=oc.qa[Da].o;if(void 0!==wd){var xd=oc.qa[Da].l;xd&&(Da=xd);a.u(q(wd,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in C)if(f[1]==Ba){var yd=a.ja[Ba];yd?(f.shift(),f.shift(),yd(f)):a.u("no dump registered for "+Y);break a}Y||(Ca=a.Na||"db")}else a.Na=Ca;if("dh"==Ca){var zd=Y,Ad=qa,Bd="",Cd=0,K=a.W,aa=a.M;if(aa.length){var Q=
|
||||
+zd||a.Da,Ea=+Ad||10;isNaN(Q)?Q=Ea:Bd="more ";Q>aa.length&&(a.u("note: only "+aa.length+" available"),Q=aa.length);K-=Q;0>K&&(null==aa[aa.length-1].B?(Q=K+Q,K=0):K+=aa.length);var pc=[];"call"==Ad&&(Ea=1E5,pc=["CALL"]);for(void 0!==zd&&a.u(Q+" instructions earlier:");0<Ea&&K!=a.W;){var Dd=aa[K++];if(null==Dd.B)break;var db=V(Dd.B),ue=Q--,Ed=qd(a,db,"history",ue);(!pc.length||0<=Ed.indexOf(pc[0]))&&a.u(Ed);db.Xa&&(K+=db.Xa,Ea-=db.Xa,Q-=db.Xa);K>=aa.length&&(K=0);a.Da=Q;Cd++;Ea--}}Cd||(a.u("no "+Bd+
|
||||
"history available"),a.Da=void 0)}else{var Cb=X(a,Y);if(Cb){var Db=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||te),Db=td(a,qa)>>>0,65536<Db&&(Db=65536));for(var ra="",Eb="dd"==Ca?4:"dw"==Ca?2:1,Fb=Eb*Db||128,ve=Fb+15>>4||1;ve--&&0<Fb;){var Gb=0,qc=0,eb,fb="",rc="",Y=q(Cb.B,4);for(eb=16;0<eb&&0<Fb;eb--){var Hb=a.ua(Cb,1),Gb=Gb|Hb<<(qc++<<3);qc==Eb&&(fb+=q(Gb,2*Eb),fb+=1==Eb?9==eb?"-":" ":" ",Gb=qc=0);rc+=32<=Hb&&128>Hb?String.fromCharCode(Hb):".";Fb--}ra&&(ra+="\n");ra+=Y+" "+fb+(0==eb?" "+rc:"")}ra&&
|
||||
a.u(ra);a.na=Cb}}}}break;case "e":if("else"==f[0])break;var Ib=1,Fd=255,Gd=a.ua,Hd=a.eb;"ew"==f[0]&&(Ib=2,Fd=65535,Gd=a.Ua,Hd=a.yb);var Id=Ib<<1,Jd=f[1];if(null==Jd)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var Jb=X(a,Jd);if(Jb)for(var Kb=2;Kb<f.length;Kb++){var gb=bd(a,f[Kb]);if(void 0===gb){a.u("unrecognized value: "+f[Kb]);break}gb&~Fd&&a.u("warning: "+q(gb)+" exceeds "+Ib+"-byte value");var we=Gd.call(a,Jb);
|
||||
a.u("changing "+q(Jb.B,4)+" from 0x"+q(we,Id)+" to 0x"+q(gb,Id));Hd.call(a,Jb,gb,Ib)}}break;case "f":Wd(a,f[1]);break;case "g":a:{var Kd=f[1],xe=b;if(void 0!==Kd){var sc=X(a,Kd,!0);if(!sc)break a;cd(a,sc,xe);a.xa(a.i,sc,!0)}a.Ca(!0)||c||a.u("cpu busy or unavailable, run command ignored")}break;case "h":a:{var tc;if(a.A.Z)tc="halting",a.ba();else{if(pb(a,!0))break a;tc="already halted"}c||a.u(tc)}break;case "i":if("if"==f[0]){var uc;var hb=b.substr(2),hb=pa(hb);bd(a,hb)?(c||a.u("true: "+hb),uc=!0):
|
||||
(c||a.u("false: "+hb),uc=!1);uc||(d=!1)}break;case "k":var ye=f[0];if("?"==f[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var vc=0,Ld=V(),ib=V(a.b.g[6]);for(a.u("stack trace for "+q(ib.B,4));10>vc;){for(var sa=null,ze=256;65536>ib.B>>>0;){Ld.B=a.Ua(ib,2);if(null==ib.B||!ze--)break;for(var Ae=a,Lb=Ld,Md=null,jb=Lb.B,Nd=jb,wc=1;6>=wc&&jb;wc++){if(2<wc){Lb.B=jb;var Mb=qd(Ae,Lb);if(0<=Mb.indexOf("CALL")){var Od=Mb.indexOf(" ");if(jb+(Mb.indexOf(" ",
|
||||
Od+1)-Od-1)/2==Nd){Md=Mb;break}}}jb--}Lb.B=Nd;if(sa=Md)break}if(!sa||null==sa)break;var Pd=null;if("ks"==ye){var Qd=sa.match(/[0-9A-F]+$/);Qd&&(Pd=Yd(a,Qd[0]))}sa=oa(sa,50)+" ;"+(Pd||"stack="+q(ib.B,4));a.u(sa);vc++}vc||a.u("no return addresses found")}break;case "l":if("ln"==f[0]){Yd(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,x=f[1];"?"==x&&(x=void 0);if(void 0!==x){var ha=0;if("all"==x)ha=1878917119,x=null;else if("on"==x)ca=!0,x=null;else if("off"==x)ca=!1,x=null;else{"keys"==x&&(x="key");
|
||||
"kbd"==x&&(x="keyboard");for(ba in C)if(x==ba){ha=C[ba];ca=!!(a.Y&ha);break}if(!ha){a.u("unknown message category: "+x);break a}}if(ha)if("on"==f[2])a.Y|=ha,ca=!0;else if("off"==f[2]&&(a.Y&=~ha,ca=!1,1073741824==ha)){for(var xc=0;xc<a.fa.length;xc++)a.u(a.fa[xc]);a.fa=[]}}var Be=0,ia="";for(ba in C)if(!x||x==ba){var Ce=!!(a.Y&C[ba]);if(null===ca||ca==Ce)ia&&(ia+=","),++Be%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),ia+=ba}void 0===x&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.u((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));Rc(a)}break;case "p":if("print"==f[0]){Zd(a,b.substr(5));break}var De="pr"==f[0]?1:0;if(a.U)a.u("step in progress");else{var Rd=V(a.b.g[7]);a.ua(Rd);a.U?(a.xa(a.i,Rd,!0),a.Ca()||(a.D&&a.D.Sa(),a.U=0)):$d(a,De?"tr":"t")}break;case "r":if("reset"==b){a.D&&a.D.reset();break}jd(a,f);break;case "s":a:switch(f[1]){case "cs":var kb;void 0!==f[3]&&(kb=+f[3]);switch(f[2]){case "int":a.b.Ga=kb;break;case "start":a.b.Pa=
|
||||
kb;break;case "stop":a.b.Ha=kb;break;default:a.u("unknown cs option");break a}void 0!==kb&&fc(a.b);a.u("checksums "+(a.b.A.Fa?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(kc(a.b,+f[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.b.Aa.toFixed(2)+"Mhz")+" ("+a.b.Ba+"x)");break;case "?":a.u("debugger options:");a.u("\tcs int #\tset checksum cycle interval to #");a.u("\tcs start #\tset checksum cycle start count to #");a.u("\tcs stop #\tset checksum cycle stop count to #");
|
||||
a.u("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.u("unknown option: "+f[1])}break;case "t":$d(a,f[0],f[1]);break;case "u":kd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xd(a,b.substr(3))||(d=!1);break}a.u("PDP11js version 1.24.2 ("+a.b.ob+",RELEASE"+(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.u(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Zd(a,b.substr(1));break}var lb="commands:",yc;for(yc in Tc)lb+="\n"+oa(yc,9)+Tc[yc];Ic(a)||(lb+="\nnote: frequency/history disabled if no exec breakpoints");
|
||||
a.u(lb);break;default:a.u("unknown command: "+b),d=!1}}}catch(Sd){a.u("debugger error: "+(Sd.stack||Sd.message)),d=!1}return d}function gc(a,b,c){b=dd(a,b,c);for(var d in b)if(!pd(a,b[d]))return!1;return!0}Qa(function(){for(var a=y(document,"pdp11","debugger"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Pc(d);mb(d,c)}});
|
||||
function be(a,b,c){t.call(this,"Computer",a,be,67108864);this.A.X=!1;ce(this,b);this.N=dc(this,"autoPower",a);this.w=0;this.U=a.busWidth||a.buswidth;this.i=de;this.L=null;this.G=this.S=!1;this.V=dc(this,"url")||"";(Math.random()+.1).toString(36);this.j=ee(this);if(this.b=cb("CPU",this.id)){this.F=cb("Debugger",this.id);this.H=new vb({id:this.mb+".bus",busWidth:this.U},this.b,this.F);var d,e=bb(this.id);if((this.D=cb("Panel",this.id))&&this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.ea=this.D.ea,d.u=this.D.u,
|
||||
d.ya=this.D.ya;this.u("PDP11js v1.24.2\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.u("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)d=e[b],d.za&&d.za(this,this.H,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.i=parseInt(d,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.G=!0,this.i=de),this.i&&(this.M=
|
||||
new G(this,"1.24.2"),fe(this.M)?b=null:delete this.M);!b&&this.i&&(b=ge(this))&&(this.G=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.J=null,h.G=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(h.L=b,h.S=!0);A(h)})}else A(this);this.K.power||(this.N=!0);!c&&this.N&&he(this,this.Qa)}else r("Unable to find CPU component")}v(be);var de=0;
|
||||
function ce(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.T=b}function dc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.T&&(d=a.T[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function he(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!qb(f)){qb(f,function(){he(a,b,c)});return}}b.call(a,c)}
|
||||
function ie(a,b){var c=new G(a,"1.24.2","validate");if(fe(c)&&je(c)){var d=ke(c,"timestamp"),e=b?ke(b,"timestamp"):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=be.prototype;
|
||||
m.Qa=function(a){void 0===a&&(a=this.i||(this.L?1:de));if(!this.w){this.w++;var b=!1,c=!1;this.R=!1;var d=this.M||new G(this,"1.24.2");if(-1==a)b=!0;else if(a>de){if(fe(d,this.L)){this.C=new G(this,"1.24.2","failsafe");fe(this.C)&&(le(this,d),a=2,me(this.C));H(this.C,"timestamp",va());ne(this.C);var e=this.i&&!this.G;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=je(d)){var f=ke(d,"code"),h=ke(d,"data");f&&("ok"==f?fe(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.j=null)):this.u(f+": "+h),me(d),fe(d)?(c=je(d),e=!0):c=!1))}e&&ie(this,c?d:null)}else 2==a&&d.clear()}else ie(this);delete this.L;delete this.M}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=oe(this,h,d,b,c));b=[d,a,c];-1!=a?he(this,this.ib,b):this.ib(b)}};
|
||||
function oe(a,b,c,d,e){if(!b.A.X){b.A.X=!0;if(b.sa){var f=null;e&&((f=ke(c,b.id))||(f=ke(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.O&&!a.S?(c.clear(),a.i=de,window&&window.location.reload()):a.R=!0,b.sa(null),e=!1)}if(!d&&b.lb)for(a=b.lb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.ib=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.A.X=!0;var d=this.K.power;d&&(d.textContent="Shutdown");this.b&&(oe(this,this.b,b,c,a),this.b.Ka());this.R&&(le(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=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 c=a.j||"",d=b.toString(),e={app:"PDP11js",ver:"1.24.2"};e.url=a.V;e.user=c;e.type="bug";e.data=d;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function ae(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.24.2"),h=new G(a,"1.24.2","validate"),g=va();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.24.2");H(f,"url",window?window.location.href:null);H(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ra&&(c&&a.b.ba(),d=a.b.ra(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.X=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.X&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&H(f,l.id,d)),c&&
|
||||
(l.A.X=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.j&&pe(a,a.j,f.toString()),ne(h)&&ne(f)||(e=null,d=g=!0)):a.i&&(d=!0,g=3==a.i),d&&f.clear(g)):e=f.toString());c&&(a.A.X=!1,b=a.K.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
|
||||
m.start=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
m.ha=function(a,b,c){var d=this;switch(b){case "power":return this.K[b]=c,c.onclick=function(){d.w||(d.A.X?be(d,!1,!0):ie(d,d.Ra))},!0;case "reset":return this.K[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.i&&!d.J){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");be(d,a,!0);!a&&d.O?window&&window.location.reload():d.Ra(ee)}else d.reset(),d.b&&hc(d.b)},!0;case "save":if(ka()){c.parentNode.removeChild(c);break}this.K[b]=c;
|
||||
c.onclick=function(){var a=fe(d,!0);if(a){var b=!!(d.i&&!d.J||d.O),c=be(d,b);b?qe(d,a,c):d.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function fe(a,b){var c=a.j;c||(c=Ga("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=re(a,c))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return c}
|
||||
function re(a,b){a.j=null;var c=xa(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Ha("user",c.data),a.j=c.data)}catch(e){r(e.message+" ("+d+")")}return a.j}function he(a){var b=null;a.j&&(b=la()+"/api/v1/user?req=load&user="+a.j+"&state="+se(a,"1.24.2"));return b}
|
||||
function qe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=se(a,"1.24.2");d.data=c;b=xa(la()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ea("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ea(c),Ha("user",""),a.j=null)}}m.Ta=function(){};
|
||||
m.ia=function(a){this.b&&this.b.ia(a);this.D&&this.D.ia(a)};Qa(function(){for(var a=y(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=y(c,"pdp11","computer"),e=0;e<c.length;e++){var f=c[e],h=w(f),h=new ce(h,d,!0);mb(h,f);h.N&&ie(h,h.Ra)}});La.show.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.W&&!c.A.X&&c.Ra(-1)}});
|
||||
La.exit.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.A.X&&be(c,!(!c.i||c.J),!0)}});function G(a,b,c){this.id=a.id;this.key=se(a,b,c);this.F=a.F;ne(this,a.Jb)}function se(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
G.prototype={constructor:G,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){ne(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||
function ne(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function oe(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ke(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function ge(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Fa()&&(b=Ga(a.key))?(a[a.id]=b,a.b=!0):!1}function le(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}var te=0;
|
||||
function Fe(a,b,c,d,e,f){e("Loading "+a+"...");xa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Ge(g,a,b,c,d,e,f)})}
|
||||
function Ge(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(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?He(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function He(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[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{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);He(a,b,c)}})}else c(a,null)}
|
||||
function Ie(a,b,c,d){function e(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(a))}function f(a){e("Error: "+a);k&&(--te||Sa(!0));k=!1}var h,g,k=!0;te++;$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)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");l=function(d,g){g?Fe(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--te||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),--te||Sa(!0)):f("invalid machine element: "+
|
||||
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Fe(b,a,d,!0,e,l):Ge(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPDP11=function(a,b,c,d){Sa(!1);return Ie(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
||||
m.ha=function(a,b,c){var d=this;switch(b){case "power":return this.K[b]=c,c.onclick=function(){d.w||(d.A.X?ae(d,!1,!0):he(d,d.Qa))},!0;case "reset":return this.K[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.i&&!d.J){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ae(d,a,!0);!a&&d.O?window&&window.location.reload():d.Qa(de)}else d.reset(),d.b&&d.b.Ka()},!0;case "save":if(ka()){c.parentNode.removeChild(c);break}this.K[b]=
|
||||
c;c.onclick=function(){var a=ee(d,!0);if(a){var b=!!(d.i&&!d.J||d.O),c=ae(d,b);b?pe(d,a,c):d.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function ee(a,b){var c=a.j;c||(c=Ga("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=qe(a,c))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return c}
|
||||
function qe(a,b){a.j=null;var c=xa(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Ha("user",c.data),a.j=c.data)}catch(e){r(e.message+" ("+d+")")}return a.j}function ge(a){var b=null;a.j&&(b=la()+"/api/v1/user?req=load&user="+a.j+"&state="+re(a,"1.24.2"));return b}
|
||||
function pe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=re(a,"1.24.2");d.data=c;b=xa(la()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ea("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ea(c),Ha("user",""),a.j=null)}}m.Sa=function(){};
|
||||
m.ia=function(a){this.b&&this.b.ia(a);this.D&&this.D.ia(a)};Qa(function(){for(var a=y(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=y(c,"pdp11","computer"),e=0;e<c.length;e++){var f=c[e],h=w(f),h=new be(h,d,!0);mb(h,f);h.N&&he(h,h.Qa)}});La.show.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.W&&!c.A.X&&c.Qa(-1)}});
|
||||
La.exit.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.A.X&&ae(c,!(!c.i||c.J),!0)}});function G(a,b,c){this.id=a.id;this.key=re(a,b,c);this.F=a.F;me(this,a.Gb)}function re(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
G.prototype={constructor:G,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 c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||
function me(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function ne(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(r("Unable to store "+c.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(c){r(c.message||c),b=!1}return b}function fe(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Fa()&&(b=Ga(a.key))?(a[a.id]=b,a.b=!0):!1}function ke(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}var se=0;
|
||||
function Ee(a,b,c,d,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,c,d,e,f)})}
|
||||
function Fe(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(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,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[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{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Ge(a,b,c)}})}else c(a,null)}
|
||||
function He(a,b,c,d){function e(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(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)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");l=function(d,g){g?Ee(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),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(d)}):f(d)};"<"!=b.charAt(0)?Ee(b,a,d,!0,e,l):Fe(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPDP11=function(a,b,c,d){Sa(!1);return He(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
||||
|
|
|
|||
|
|
@ -6,49 +6,49 @@ typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encod
|
|||
function t(a){window&&window.alert(a)}function ha(a){var b=!1;window&&(b=window.confirm(a));return b}var ia=null;function ja(){if(null==ia){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}ia=a}return ia}function ka(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function la(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ma(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var u={init:[],show:[],exit:[]},na=!1,oa=!1,pa=!0;function qa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function v(a){u.init.push(a)}
|
||||
function ra(a){if(pa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function sa(a){!pa&&a?(pa=!0,na&&ta("init"),oa&&ta("show")):pa=a}function ta(a){u[a]&&ra(u[a])}qa("onload",function(){na=!0;ra(u.init)});qa("onpageshow",function(){oa=!0;ra(u.show)});qa(ma("Opera")||ma("iOS")?"onunload":"onbeforeunload",function(){ra(u.exit)});
|
||||
function w(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Na=b.comment;this.cb=b;b=this.id.indexOf(".");0>b?this.va=this.id:(this.Oa=this.id.substr(0,b),this.va=this.id.substr(b+1));this[a]=c;this.h={fa:!1,ia:!1,Ba:!1,w:!1,da:!1};this.sa=null;this.h.da=!1;this.o={};this.B=null;x.push(this)}var ua=void 0,va={};
|
||||
function w(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ja=b.comment;this.$a=b;b=this.id.indexOf(".");0>b?this.ta=this.id:(this.Ka=this.id.substr(0,b),this.ta=this.id.substr(b+1));this[a]=c;this.h={ready:!1,ha:!1,ua:!1,A:!1,error:!1};this.qa=null;this.h.error=!1;this.o={};this.B=null;x.push(this)}var ua=void 0,va={};
|
||||
if(window){ua||(ua=window.location.search.substr(1));for(var wa,xa=/\+/g,ya=/([^&=]+)=?([^&]*)/g;wa=ya.exec(ua);)va[decodeURIComponent(wa[1].replace(xa," "))]=decodeURIComponent(wa[2].replace(xa," "))}function za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function y(a,b){b||(b=w);a.prototype=za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Aa=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else Aa={},x=[];function Ba(a,b,c){Aa[a]&&b&&(Aa[a][b]=c)}function A(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function Ca(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
|
||||
function C(a,b){for(var c=D(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,e=0;e<f.length;e++){var h=f[e];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.L(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},L:function(a,b,c){switch(b){case "clear":return this.o[b]||(this.o[b]=c,c.onclick=function(a){return function(){a.o.print&&(a.o.print.value="")}}(this)),!0;case "print":return this.o[b]||(this.xa=this.o[b]=c,c.value="",this.H=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.A=function(a){this.H(a,this.va)}),!0;default:return!1}},log:function(){},H:function(){},status:function(a){this.H(this.va+": "+a)},A:function(a,b,c){c=c||this.type;b||t((c?c+": ":"")+a)},Y:function(){return this.h.w=!0},X:function(a,b){b&&(this.h.w=!1);return!0}};function Da(a,b){if(a.h.Ba)return a.h.ia&&(a.h.ia=!1),a.h.Ba=!1;if(a.h.da)return a.H(a.toString()+" error"),!1;a.h.ia=b;return a.h.ia}function E(a){if(!a.h.da&&(a.h.fa=!0,a.h.fa)){var b=a.sa;a.sa=null;b&&b()}}
|
||||
function Ea(a,b){b&&(a.h.fa?b():a.sa=b);return a.h.fa}var Fa="undefined"!==typeof ArrayBuffer;function Ga(a){w.call(this,"Panel",a,Ga)}y(Ga);m=Ga.prototype;m.L=function(a,b,c,d){return this.l&&this.l.L(a,b,c,d)||this.a&&this.a.L(a,b,c,d)?!0:this.parent.L.call(this,a,b,c,d)};m.ga=function(a,b,c,d){this.l=a;this.u=b;this.a=c;this.B=d};m.Y=function(a,b){b||Ha();return!0};m.X=function(){return!0};m.ea=function(){};
|
||||
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},L:function(a,b,c){switch(b){case "clear":return this.o[b]||(this.o[b]=c,c.onclick=function(a){return function(){a.o.print&&(a.o.print.value="")}}(this)),!0;case "print":return this.o[b]||(this.wa=this.o[b]=c,c.value="",this.H=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.w=function(a){this.H(a,this.ta)}),!0;default:return!1}},log:function(){},H:function(){},status:function(a){this.H(this.ta+": "+a)},w:function(a,b,c){c=c||this.type;b||t((c?c+": ":"")+a)},Y:function(){return this.h.A=!0},X:function(a,b){b&&(this.h.A=!1);return!0}};function Da(a,b){if(a.h.ua)return a.h.ha&&(a.h.ha=!1),a.h.ua=!1;if(a.h.error)return a.H(a.toString()+" error"),!1;a.h.ha=b;return a.h.ha}function E(a){if(!a.h.error&&(a.h.ready=!0,a.h.ready)){var b=a.qa;a.qa=null;b&&b()}}
|
||||
function Ea(a,b){b&&(a.h.ready?b():a.qa=b);return a.h.ready}var Fa="undefined"!==typeof ArrayBuffer;function Ga(a){w.call(this,"Panel",a,Ga)}y(Ga);m=Ga.prototype;m.L=function(a,b,c,d){return this.l&&this.l.L(a,b,c,d)||this.a&&this.a.L(a,b,c,d)?!0:this.parent.L.call(this,a,b,c,d)};m.ea=function(a,b,c,d){this.l=a;this.u=b;this.a=c;this.B=d};m.Y=function(a,b){b||Ha();return!0};m.X=function(){return!0};m.da=function(){};
|
||||
function Ha(){for(var a=!1,b=D(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=B(d),e;a:{e=f.id;if(void 0!==e)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===e){e=x[h];break a}e=null}e||(a=!0,e=new Ga(f));C(e,d);a&&E(e)}}v(Ha);
|
||||
function Ia(a,b,c){w.call(this,"Bus",a,Ia);this.a=b;this.B=c;this.g=a.busWidth||16;this.j=Math.pow(2,this.g);this.u=this.j-1|0;this.f=16>=this.g?10:20>=this.g?12:24>=this.g?14:15;this.c=1<<this.f;this.l=this.c>>2;this.m=this.c-1;this.i=this.j/this.c|0;a=new F;Ja(a,this.B);this.b=Array(this.i);for(b=0;b<this.i;b++)this.b[b]=a;E(this)}y(Ia);Ia.prototype.reset=function(){};Ia.prototype.Y=function(a,b){b||this.reset();return!0};
|
||||
function Ka(a,b,c,d){for(var f=b,e=c,h=f>>>a.f;0<e&&h<a.b.length;){var g=a.b[h],k=h*a.c,l=a.c-(f-k);l>e&&(l=e);if(g&&g.size){if(g.type==d){if(f+e<=g.ha)return g.ta+=g.ha-f,g.ha=f,!0;if(f>=g.ha+g.ta){l=g.size-(f-k);l>e&&(l=e);g.ta=f-g.ha+l;f=k+a.c;e-=l;h++;continue}}return La(1,f,e)}f=new F(f,l,a.c,d);Ja(f,a.B,g);a.b[h++]=f;f=k+a.c;e-=l}return 0>=e?(a.status(Math.floor(c/1024)+"Kb "+Ma[d]+" at "+("0x"+n(b,4))),!0):La(2,b,c)}
|
||||
function Ka(a,b,c,d){for(var f=b,e=c,h=f>>>a.f;0<e&&h<a.b.length;){var g=a.b[h],k=h*a.c,l=a.c-(f-k);l>e&&(l=e);if(g&&g.size){if(g.type==d){if(f+e<=g.fa)return g.ra+=g.fa-f,g.fa=f,!0;if(f>=g.fa+g.ra){l=g.size-(f-k);l>e&&(l=e);g.ra=f-g.fa+l;f=k+a.c;e-=l;h++;continue}}return La(1,f,e)}f=new F(f,l,a.c,d);Ja(f,a.B,g);a.b[h++]=f;f=k+a.c;e-=l}return 0>=e?(a.status(Math.floor(c/1024)+"Kb "+Ma[d]+" at "+("0x"+n(b,4))),!0):La(2,b,c)}
|
||||
function La(a,b,c){t("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Na;if(Fa){var Oa=new ArrayBuffer(2);(new DataView(Oa)).setUint16(0,256,!0);Na=256===(new Uint16Array(Oa))[0]}else Na=!1;var Pa=Na;
|
||||
function F(a,b,c,d){this.id=Qa+=2;this.a=null;this.ha=a;this.ta=b;this.size=c||0;this.type=d||Ra;this.o=d==Sa;Ja(this);this.W=this.Za=!1;if(c)if(Fa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.j=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),Ta(this,Pa?Ua:Va);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;Ta(this,Wa)}else Ta(this)}var Ra=0,Sa=2,Ma=["NONE","RAM","ROM","VID","H/W"],Qa=0;
|
||||
function F(a,b,c,d){this.id=Qa+=2;this.a=null;this.fa=a;this.ra=b;this.size=c||0;this.type=d||Ra;this.o=d==Sa;Ja(this);this.W=this.Wa=!1;if(c)if(Fa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.j=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),Ta(this,Pa?Ua:Va);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;Ta(this,Wa)}else Ta(this)}var Ra=0,Sa=2,Ma=["NONE","RAM","ROM","VID","H/W"],Qa=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(Fa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Fa)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.W=!0}return!1},m:function(){return 255},s:function(){},K:function(a,b){return this.l(a++,b++)|this.l(a,b)<<8},$:function(a,b,c){this.u(a++,b&255,c++);this.u(a,b>>8,c)},G:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},P:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},U:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.W=!0},ca:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.W=!0},C:function(a,b){return this.D(a,b)},J:function(a,b){return this.N(a,b)},S:function(a,b,c){this.o||this.Xa(a,b,c)},Z:function(a,b,c){this.o||
|
||||
2]>>>((a&3)<<3)&255},P:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},U:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.W=!0},ca:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.W=!0},C:function(a,b){return this.D(a,b)},J:function(a,b){return this.N(a,b)},S:function(a,b,c){this.o||this.Ua(a,b,c)},Z:function(a,b,c){this.o||
|
||||
this.aa(a,b,c)},v:function(a){return this.b[a]},F:function(a){return this.b[a]},I:function(a){return this.f.getUint16(a,!0)},O:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.j[a>>1]},R:function(a,b){this.b[a]=b;this.W=!0},T:function(a,b){this.b[a]=b;this.W=!0},V:function(a,b){this.f.setUint16(a,b,!0);this.W=!0},ba:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.j[a>>1]=b;this.W=!0}};function Ja(a,b,c){a.B=b;a.g=a.i=0;c&&((a.g=c.g)&&Xa(a,Ya,!1),(a.i=c.i)&&Za(a,Ya,!1))}
|
||||
function Za(a,b,c){c&&a.i||(a.u=!a.o&&b[2]||a.s);if(c||void 0===c)a.Xa=b[2]||a.s,a.aa=b[3]||a.$}function Xa(a,b,c){c&&a.g||(a.l=b[0]||a.m);if(c||void 0===c)a.D=b[0]||a.m,a.N=b[1]||a.K}function Ta(a,b){b||(b=$a);Xa(a,b,void 0);Za(a,b,void 0)}var $a=[],Wa=[F.prototype.G,F.prototype.P,F.prototype.U,F.prototype.ca],Ya=[F.prototype.C,F.prototype.J,F.prototype.S,F.prototype.Z];if(Fa)var Va=[F.prototype.v,F.prototype.I,F.prototype.R,F.prototype.V],Ua=[F.prototype.F,F.prototype.O,F.prototype.T,F.prototype.ba];
|
||||
function ab(a,b){w.call(this,"CPU",a,ab);var c=a.multiplier||1;this.Ca=a.cycles||b;this.T=c;this.wa=Math.round(this.Ca/1E4)/100;this.R=this.wa*this.T;this.h.M=!1;this.h.Ka=!1;this.h.Ia=a.autoStart;this.h.Ja=!1;this.h.qa=!1;this.oa=this.S=0;this.pa=a.csStart;this.$=a.csInterval;this.aa=a.csStop;this.la=[];this.bb=this.Fa.bind(this);E(this)}y(ab);var bb=["power","reset"];m=ab.prototype;
|
||||
m.ga=function(a,b,c,d){this.l=a;this.u=b;this.B=d;for(b=0;b<bb.length;b++)(c=this.o[bb[b]])&&this.l.L(null,bb[b],c);this.Z=null;a=cb(a,"autoStart");null!=a&&(this.h.Ia="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Y=function(a,b){if(!b){if(a&&this.restore){db(this);if(!this.restore(a))return!1;eb(this)}else this.reset();this.H("No debugger detected")}fb(this);return!0};m.X=function(a){return a?this.save():!0};
|
||||
function gb(a){(a.h.Ia||void 0===a.o.run)&&a.Fa()}m.La=function(){return 0};function eb(a){void 0===a.pa&&(a.pa=0);void 0===a.$&&(a.$=-1);void 0===a.aa&&(a.aa=-1);a.h.qa=0<=a.pa&&0<a.$;a.h.qa&&(a.oa=0,a.S=a.pa-a.N)}function hb(a,b,c,d){a.o[b]&&(void 0===c&&(a.h.da=!0,a.A("Value for "+b+" is invalid"),G(a)),c=!a.h.M||a.h.Ja?n(c,d):"--------".substr(0,d),a.o[b].textContent!=c&&(a.o[b].textContent=c))}
|
||||
m.L=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.o[b]=c;a=!0;break;case "run":this.o[b]=c;c.onclick=function(){var a;if(a=d.l)if(a=d.l,a.h.w)a=!0;else{var b=null,c,g=A(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.fa);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.w);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.h.fa?"powered yet":"ready yet"+(b.sa?" (waiting for notification)":""))+".");a=!1}a&&(d.h.M?G(d):d.Fa())};a=!0;break;case "speed":this.o[b]=
|
||||
c;a=!0;break;case "setSpeed":this.o[b]=c,c.onclick=function(){ib(d,d.T<<1)},c.textContent=this.R.toFixed(2)+"Mhz",a=!0}return a};function jb(a,b,c){a.N+=b;c&&(a.K=a.G=0)}function kb(a,b){var c=1;b&&1<a.T&&a.I&&(c=a.I/a.wa);a.Sa=Math.round(1E3/30);a.ka=Math.floor(a.Ca/30*c);b||(a.ba=a.ka);a.Da=0}function lb(a){return a.N+a.F+a.K-a.G}function db(a){a.I=0;a.Ta=0;a.N=a.F=a.K=a.G=0;eb(a);ib(a,1)}
|
||||
function ib(a,b){if(void 0!==b){.8>a.I/a.R&&(b=1);a.T=b;var c=a.wa*a.T;if(a.R!=c){a.R=c;var c=a.R.toFixed(2)+"Mhz",d=a.o.setSpeed;d&&(d.textContent=c);a.H("target speed: "+c)}}jb(a,a.F);a.F=0;a.D=q();a.J=0;kb(a)}function mb(a){a.K-=a.G;a.G=0}
|
||||
m.Fa=function(){if(Da(this,!0)){if(!this.h.M){ib(this);this.l&&this.l.start(this.D,lb(this));this.h.M=!0;this.h.Ka=!0;this.Z&&this.Z.start();var a=this.o.run;a&&(a.textContent="Halt");this.l&&this.l.ea(!0)}this.Da>=this.Ca&&kb(this,!0);this.ca=0;this.na=q();this.J&&(a=this.na-this.J,a>this.Sa&&(this.D+=a,this.D>this.na&&(this.D=this.na)));try{do{for(var b=this.h.qa?1:this.ka,c=this.la.length-1;0<=c;c--){var d=this.la[c];0>d[0]||b>d[0]&&(b=d[0])}this.Wa(b);for(var f=this.K-this.G,a=f,e=this.la.length-
|
||||
1;0<=e;e--){var h=this.la[e];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ca+=f;this.F+=f;jb(this,0,!0);a=f;if(this.h.qa){var g=!1;this.oa=this.oa+this.La()|0;this.S-=a;0>=this.S&&(this.S+=this.$,g=!0);0<=this.aa&&this.aa<=lb(this)&&(this.$=this.aa=-1,eb(this),G(this),g=!0);g&&this.H(lb(this)+" cycles: checksum="+n(this.oa))}this.ba-=f;if(0>=this.ba){this.ba+=this.ka;15<=++this.Ta&&(this.l&&this.l.ea(),this.Ta=0);break}}while(this.h.M)}catch(k){G(this);fb(this);this.l&&this.l.stop(q(),lb(this));
|
||||
Da(this,!1);b=k.stack||k.message;this.h.da=!0;this.A(b);return}b=setTimeout;c=this.bb;this.J=q();d=this.Sa;this.ca&&(d=Math.round(d*this.ca/this.ka));d=d-(this.J-this.na);if(f=this.J-this.D)this.I=Math.round(this.F/(10*f))/100,864E5<=f&&(this.N=0,ib(this));if(0>d||this.I<this.R)-1E3>d&&(this.D-=d),d=0;this.Da+=this.ca;this.J+=d;b(c,d)}else fb(this),this.l&&this.l.stop(q(),lb(this))};m.Wa=function(){return 0};
|
||||
function G(a){a.h.ia&&(a.h.Ba=!0);mb(a);jb(a,a.F);a.F=0;if(a.h.M){a.h.M=!1;a.Z&&a.Z.stop();var b=a.o.run;b&&(b.textContent="Run")}a.h.ra=void 0}function fb(a){a.l&&a.l.ea(void 0)}
|
||||
function nb(a){this.ab=+a.model||1170;ab.call(this,a,1E6);this.Ma=0;this.g=65536;this.c=this.b=32768;this.f=65535;this.i=15;this.a=[0,0,0,0,0,0,0,0];this.Va=[0,0,0,0,0,0];this.U=[0,0,0,0];this.memory=[];this.s=[];this.Ea=this.Ua=0;this.O=2;this.P=255;this.m=0;this.V=-1;this.Ra=this.ya=this.Qa=this.j=this.ua=this.C=this.v=0;this.ma=[7,7,7,7];this.Aa=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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];db(this);this.h.ra=this.h.Ya=!1}y(nb,ab);m=nb.prototype;m.reset=function(){this.h.M&&G(this);ob(this);db(this);this.h.da=!1;this.parent.reset.call(this)};
|
||||
function ob(a){a.P=255;a.s=[];a.Ua=0;a.v=a.C=a.ua=a.Qa=0;a.ma[0]=a.ma[1]=a.ma[3]=7;a.ya=0}m.La=function(){return 0};m.save=function(){var a=new H(this);I(a,0,[]);I(a,1,[this.Pa,this.N,this.T]);for(var b=this.u,c=0,d=[],f=0;f<b.i;f++){var e=b.b[f];if(e.W||e.Za){d[c++]=f;var h=c++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var Q=e[g],z=g+1;z<e.length&&e[z]===Q;)z++;l[k++]=z-g;l[k++]=Q;g=z}if(l.length<e.length){e=l;break a}}d[h]=e}}I(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.Pa=b[0];this.N=b[1];ib(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.l){for(var e=0,h=Array(b.l),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.b[d];if(!e||!e.restore(f)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.L=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.o[b]=c;this.Ma++;d=!0;break;default:d=this.parent.L.call(this,a,b,c)}return d};m.ea=function(a){this.Ma&&(a||!this.h.M||this.h.Ja)&&(a=this.i&-14|0|(this.eb&255?0:4)|(this.eb&256?1:0),hb(this,"PSW",a,4),hb(this,"SF",a&8?1:0,1),hb(this,"ZF",a&4?1:0,1),hb(this,"CF",a&1?1:0,1));if(a=this.o.speed)a.textContent=this.h.M&&this.I?this.I.toFixed(2)+"Mhz":"Stopped"};
|
||||
function pb(a,b){var c,d;a.b=b<<12;a.f=~b&4;a.c=b<<14;a.g=b<<16;if((b^a.i)&2048)for(c=0;6>c;c++)d=a.a[c],a.a[c]=a.Va[c],a.Va[c]=d;(a.j=b>>14&3)!==(a.i>>14&3)&&(a.U[d]=a.a[6],a.a[6]=a.U[a.j]);a.O=2;a.i=b}
|
||||
function J(a,b){var c,d,f=0;0>a.V?(a.i=a.i&63728|a.b>>12&8|a.c>>14&2|a.g>>16&1,a.f&65535||(a.i|=4),a.V=a.i):a.j||(b=4,f=1);a.v&57344||(a.C=63222);a.j=0;0<=(c=K(a,b|65536))&&0<=(d=K(a,b+2&65535|65536))&&(pb(a,d&53247|a.V>>2&12288),f&&(a.a[6]=4),0<=L(a,a.V)&&0<=L(a,a.a[7])&&(a.a[7]=c));a.m=0;return a.V=-1}
|
||||
function qb(a,b,c){var d,f,e,h=0;if(c&a.Qa){d=b>>13&a.ma[a.j];f=a.Aa[a.j][d];e=(a.Aa[a.j][d+16]<<6)+(b&8191)&4194303;if(a.ua&16){if(3932160<=e&&4186112>e){e=e&262143;var g=e>>13&31;31>g?a.ua&32&&(e=a.fb[g]+(e&8190)&4194302,3932160<=e&&4186112>e&&console.log("panic(898)")):e|=4186112}}else e&=262143,253952<=e&&(e|=4186112);if(3932160>e&&(3915776<=e||e&1&&!(c&1)))return J(a,4);switch(f&7){case 1:h=4096;case 2:f|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:f|=c&4?192:128;break;
|
||||
default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&8128)&&(h|=16384));a.Aa[a.j][d]=f;if(4194170!==e||a.j)a.ya=a.j,a.Ra=d;if(h){if(h&57344)return 0<=a.V&&(h|=128),a.v&57344||(a.v=a.v|h|a.ya<<5|a.Ra<<1),J(a,168);a.v&61440||!(4191360>e||4194239<e)||(a.v|=4096,a.v&512&&(a.m|=2))}}else if(e=b&65535,57344<=e)e|=4186112;else if(e&1&&!(c&1))return J(a,4);return e}function M(a,b){return 4194304<=b?a.a[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.a[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.a[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function P(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function K(a,b){return M(a,qb(a,b,2))}
|
||||
function rb(a){var b=K(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function L(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.v&57344||(a.C=a.C<<8|246);if(!a.j&&d<=a.P&&4<d){if(d<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return 0<=(c=qb(a,d|65536,4))?N(a,c,b):c}
|
||||
function Za(a,b,c){c&&a.i||(a.u=!a.o&&b[2]||a.s);if(c||void 0===c)a.Ua=b[2]||a.s,a.aa=b[3]||a.$}function Xa(a,b,c){c&&a.g||(a.l=b[0]||a.m);if(c||void 0===c)a.D=b[0]||a.m,a.N=b[1]||a.K}function Ta(a,b){b||(b=$a);Xa(a,b,void 0);Za(a,b,void 0)}var $a=[],Wa=[F.prototype.G,F.prototype.P,F.prototype.U,F.prototype.ca],Ya=[F.prototype.C,F.prototype.J,F.prototype.S,F.prototype.Z];if(Fa)var Va=[F.prototype.v,F.prototype.I,F.prototype.R,F.prototype.V],Ua=[F.prototype.F,F.prototype.O,F.prototype.T,F.prototype.ba];
|
||||
function ab(a,b){w.call(this,"CPU",a,ab);var c=a.multiplier||1;this.Aa=a.cycles||b;this.T=c;this.va=Math.round(this.Aa/1E4)/100;this.R=this.va*this.T;this.h.M=!1;this.h.Sa=!1;this.h.ga=a.autoStart;this.h.Fa=!1;this.h.pa=!1;this.na=this.S=0;this.oa=a.csStart;this.$=a.csInterval;this.aa=a.csStop;this.ka=[];this.Za=this.Da.bind(this);E(this)}y(ab);var bb=["power","reset"];m=ab.prototype;
|
||||
m.ea=function(a,b,c,d){this.l=a;this.u=b;this.B=d;for(b=0;b<bb.length;b++)(c=this.o[bb[b]])&&this.l.L(null,bb[b],c);this.Z=null;a=cb(a,"autoStart");null!=a&&(this.h.ga="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Y=function(a,b){if(!b){if(a&&this.restore){db(this);if(!this.restore(a))return!1;eb(this)}else this.reset();this.H("No debugger detected")}fb(this);return!0};m.X=function(a){return a?this.save():!0};
|
||||
m.ga=function(){return this.h.ga||void 0===this.o.run?(this.Da(),!0):!1};m.Ha=function(){return 0};function eb(a){void 0===a.oa&&(a.oa=0);void 0===a.$&&(a.$=-1);void 0===a.aa&&(a.aa=-1);a.h.pa=0<=a.oa&&0<a.$;a.h.pa&&(a.na=0,a.S=a.oa-a.N)}function gb(a,b,c,d){a.o[b]&&(void 0===c&&(a.h.error=!0,a.w("Value for "+b+" is invalid"),G(a)),c=!a.h.M||a.h.Fa?n(c,d):"--------".substr(0,d),a.o[b].textContent!=c&&(a.o[b].textContent=c))}
|
||||
m.L=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.o[b]=c;a=!0;break;case "run":this.o[b]=c;c.onclick=function(){var a;if(a=d.l)if(a=d.l,a.h.A)a=!0;else{var b=null,c,g=A(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.A);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.h.ready?"powered yet":"ready yet"+(b.qa?" (waiting for notification)":""))+".");a=!1}a&&(d.h.M?G(d):d.Da())};a=!0;break;
|
||||
case "speed":this.o[b]=c;a=!0;break;case "setSpeed":this.o[b]=c,c.onclick=function(){hb(d,d.T<<1)},c.textContent=this.R.toFixed(2)+"Mhz",a=!0}return a};function ib(a,b,c){a.N+=b;c&&(a.K=a.G=0)}function jb(a,b){var c=1;b&&1<a.T&&a.I&&(c=a.I/a.va);a.Oa=Math.round(1E3/30);a.ja=Math.floor(a.Aa/30*c);b||(a.ba=a.ja);a.Ba=0}function kb(a){return a.N+a.F+a.K-a.G}function db(a){a.I=0;a.Pa=0;a.N=a.F=a.K=a.G=0;eb(a);hb(a,1)}
|
||||
function hb(a,b){if(void 0!==b){.8>a.I/a.R&&(b=1);a.T=b;var c=a.va*a.T;if(a.R!=c){a.R=c;var c=a.R.toFixed(2)+"Mhz",d=a.o.setSpeed;d&&(d.textContent=c);a.H("target speed: "+c)}}ib(a,a.F);a.F=0;a.D=q();a.J=0;jb(a)}function lb(a){a.K-=a.G;a.G=0}
|
||||
m.Da=function(){if(Da(this,!0)){if(!this.h.M){hb(this);this.l&&this.l.start(this.D,kb(this));this.h.M=!0;this.h.Sa=!0;this.Z&&this.Z.start();var a=this.o.run;a&&(a.textContent="Halt");this.l&&this.l.da(!0)}this.Ba>=this.Aa&&jb(this,!0);this.ca=0;this.ma=q();this.J&&(a=this.ma-this.J,a>this.Oa&&(this.D+=a,this.D>this.ma&&(this.D=this.ma)));try{do{for(var b=this.h.pa?1:this.ja,c=this.ka.length-1;0<=c;c--){var d=this.ka[c];0>d[0]||b>d[0]&&(b=d[0])}this.Ta(b);for(var f=this.K-this.G,a=f,e=this.ka.length-
|
||||
1;0<=e;e--){var h=this.ka[e];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ca+=f;this.F+=f;ib(this,0,!0);a=f;if(this.h.pa){var g=!1;this.na=this.na+this.Ha()|0;this.S-=a;0>=this.S&&(this.S+=this.$,g=!0);0<=this.aa&&this.aa<=kb(this)&&(this.$=this.aa=-1,eb(this),G(this),g=!0);g&&this.H(kb(this)+" cycles: checksum="+n(this.na))}this.ba-=f;if(0>=this.ba){this.ba+=this.ja;15<=++this.Pa&&(this.l&&this.l.da(),this.Pa=0);break}}while(this.h.M)}catch(k){G(this);fb(this);this.l&&this.l.stop(q(),kb(this));
|
||||
Da(this,!1);b=k.stack||k.message;this.h.error=!0;this.w(b);return}b=setTimeout;c=this.Za;this.J=q();d=this.Oa;this.ca&&(d=Math.round(d*this.ca/this.ja));d=d-(this.J-this.ma);if(f=this.J-this.D)this.I=Math.round(this.F/(10*f))/100,864E5<=f&&(this.N=0,hb(this));if(0>d||this.I<this.R)-1E3>d&&(this.D-=d),d=0;this.Ba+=this.ca;this.J+=d;b(c,d)}else fb(this),this.l&&this.l.stop(q(),kb(this))};m.Ta=function(){return 0};
|
||||
function G(a){a.h.ha&&(a.h.ua=!0);lb(a);ib(a,a.F);a.F=0;if(a.h.M){a.h.M=!1;a.Z&&a.Z.stop();var b=a.o.run;b&&(b.textContent="Run")}a.h.complete=void 0}function fb(a){a.l&&a.l.da(void 0)}
|
||||
function mb(a){this.Ya=+a.model||1170;ab.call(this,a,1E6);this.Ia=0;this.g=65536;this.c=this.b=32768;this.f=65535;this.i=15;this.a=[0,0,0,0,0,0,0,0];this.Ra=[0,0,0,0,0,0];this.U=[0,0,0,0];this.memory=[];this.s=[];this.Ca=this.Qa=0;this.O=2;this.P=255;this.m=0;this.V=-1;this.Na=this.xa=this.Ma=this.j=this.sa=this.C=this.v=0;this.la=[7,7,7,7];this.za=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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.bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h.complete=this.h.Va=!1}y(mb,ab);m=mb.prototype;m.reset=function(){this.h.M&&G(this);nb(this);db(this);this.h.error=!1;this.parent.reset.call(this)};
|
||||
function nb(a){a.P=255;a.s=[];a.Qa=0;a.v=a.C=a.sa=a.Ma=0;a.la[0]=a.la[1]=a.la[3]=7;a.xa=0}m.Ha=function(){return 0};m.save=function(){var a=new H(this);I(a,0,[]);I(a,1,[this.La,this.N,this.T]);for(var b=this.u,c=0,d=[],f=0;f<b.i;f++){var e=b.b[f];if(e.W||e.Wa){d[c++]=f;var h=c++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var Q=e[g],z=g+1;z<e.length&&e[z]===Q;)z++;l[k++]=z-g;l[k++]=Q;g=z}if(l.length<e.length){e=l;break a}}d[h]=e}}I(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.La=b[0];this.N=b[1];hb(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.l){for(var e=0,h=Array(b.l),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.b[d];if(!e||!e.restore(f)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.L=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.o[b]=c;this.Ia++;d=!0;break;default:d=this.parent.L.call(this,a,b,c)}return d};m.da=function(a){this.Ia&&(a||!this.h.M||this.h.Fa)&&(a=this.i&-14|0|(this.ab&255?0:4)|(this.ab&256?1:0),gb(this,"PSW",a,4),gb(this,"SF",a&8?1:0,1),gb(this,"ZF",a&4?1:0,1),gb(this,"CF",a&1?1:0,1));if(a=this.o.speed)a.textContent=this.h.M&&this.I?this.I.toFixed(2)+"Mhz":"Stopped"};
|
||||
function ob(a,b){var c,d;a.b=b<<12;a.f=~b&4;a.c=b<<14;a.g=b<<16;if((b^a.i)&2048)for(c=0;6>c;c++)d=a.a[c],a.a[c]=a.Ra[c],a.Ra[c]=d;(a.j=b>>14&3)!==(a.i>>14&3)&&(a.U[d]=a.a[6],a.a[6]=a.U[a.j]);a.O=2;a.i=b}
|
||||
function J(a,b){var c,d,f=0;0>a.V?(a.i=a.i&63728|a.b>>12&8|a.c>>14&2|a.g>>16&1,a.f&65535||(a.i|=4),a.V=a.i):a.j||(b=4,f=1);a.v&57344||(a.C=63222);a.j=0;0<=(c=K(a,b|65536))&&0<=(d=K(a,b+2&65535|65536))&&(ob(a,d&53247|a.V>>2&12288),f&&(a.a[6]=4),0<=L(a,a.V)&&0<=L(a,a.a[7])&&(a.a[7]=c));a.m=0;return a.V=-1}
|
||||
function pb(a,b,c){var d,f,e,h=0;if(c&a.Ma){d=b>>13&a.la[a.j];f=a.za[a.j][d];e=(a.za[a.j][d+16]<<6)+(b&8191)&4194303;if(a.sa&16){if(3932160<=e&&4186112>e){e=e&262143;var g=e>>13&31;31>g?a.sa&32&&(e=a.bb[g]+(e&8190)&4194302,3932160<=e&&4186112>e&&console.log("panic(898)")):e|=4186112}}else e&=262143,253952<=e&&(e|=4186112);if(3932160>e&&(3915776<=e||e&1&&!(c&1)))return J(a,4);switch(f&7){case 1:h=4096;case 2:f|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:f|=c&4?192:128;break;
|
||||
default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&8128)&&(h|=16384));a.za[a.j][d]=f;if(4194170!==e||a.j)a.xa=a.j,a.Na=d;if(h){if(h&57344)return 0<=a.V&&(h|=128),a.v&57344||(a.v=a.v|h|a.xa<<5|a.Na<<1),J(a,168);a.v&61440||!(4191360>e||4194239<e)||(a.v|=4096,a.v&512&&(a.m|=2))}}else if(e=b&65535,57344<=e)e|=4186112;else if(e&1&&!(c&1))return J(a,4);return e}function M(a,b){return 4194304<=b?a.a[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.a[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.a[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function P(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function K(a,b){return M(a,pb(a,b,2))}
|
||||
function qb(a){var b=K(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function L(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.v&57344||(a.C=a.C<<8|246);if(!a.j&&d<=a.P&&4<d){if(d<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return 0<=(c=pb(a,d|65536,4))?N(a,c,b):c}
|
||||
function R(a,b,c){var d,f,e=b&7;switch(b>>3&7){case 0:return J(a,4);case 1:if(6===e&&!a.j&&c&4&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32||65534<=a.a[6])return a.a[6]=4,J(a,4);a.m|=4}return 7===e?a.a[e]:a.a[e]|65536;case 2:f=2;d=a.a[e];7!==e&&(d|=65536,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.a[e];7!==e&&(d|=65536);if(0>(d=K(a,d)))return d;d|=65536;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.a[e]+f&65535;7!==e&&(d|=65536);break;case 5:f=-2;d=a.a[e]-2&65535;7!==e&&(d|=65536);if(0>(d=K(a,d)))return d;
|
||||
d|=65536;break;case 6:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=K(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.v&57344||(a.C=a.C<<8|f<<3&248|e);if(6===e&&!a.j&&c&4&&0>=f&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=R(a,b,c))&&(d=qb(a,d,c)),d):4194304+(b&7)}
|
||||
d|=65536;break;case 6:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=K(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.v&57344||(a.C=a.C<<8|f<<3&248|e);if(6===e&&!a.j&&c&4&&0>=f&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=R(a,b,c))&&(d=pb(a,d,c)),d):4194304+(b&7)}
|
||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.a[b&7];return c}function U(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.a[b&7]&255;return c}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Wa=function(a){this.h.ra=!0;this.h.Ya=!1;this.h.Ka=!1;this.K=this.G=a;this.Pa&256?(mb(this),a=!1):a=!0;if(a){do{var b,c,d,f,e;if(this.O)if(1===this.O)this.O=2;else{this.O=0;e=-1;b=this.Ua&224;if(0<(a=this.s.length))for(;0<a--;){if(0<this.s[a].za){this.s[a].za--;this.O=2;break}if(this.s[a].Ga){if(!this.s[a].Ga()){this.s.splice(a,1);e--;continue}this.s[a].Ga=null}this.s[a].$a>b&&(b=this.s[a].$a,e=a)}b>(this.i&224)&&(0>e?J(this,160):(J(this,this.s[e].gb),this.s.splice(e,1)))}this.v&57344||(this.C=
|
||||
m.Ta=function(a){this.h.complete=!0;this.h.Va=!1;this.h.Sa=!1;this.K=this.G=a;this.La&256?(lb(this),a=!1):a=!0;if(a){do{var b,c,d,f,e;if(this.O)if(1===this.O)this.O=2;else{this.O=0;e=-1;b=this.Qa&224;if(0<(a=this.s.length))for(;0<a--;){if(0<this.s[a].ya){this.s[a].ya--;this.O=2;break}if(this.s[a].Ea){if(!this.s[a].Ea()){this.s.splice(a,1);e--;continue}this.s[a].Ea=null}this.s[a].Xa>b&&(b=this.s[a].Xa,e=a)}b>(this.i&224)&&(0>e?J(this,160):(J(this,this.s[e].cb),this.s.splice(e,1)))}this.v&57344||(this.C=
|
||||
0);this.m=this.i&16;if(0<=(a=K(this,this.a[7])))switch(this.a[7]=this.a[7]+2&65535,a&61440){case 4096:0<=(b=T(this,a>>6))&&(a&56?0<=(d=S(this,a,4))&&0<=N(this,d,b)&&(this.b=this.f=b,this.c=0):(this.b=this.f=this.a[a&7]=b,this.c=0));break;case 8192:0<=(b=T(this,a>>6))&&0<=(c=T(this,a))&&(this.b=this.f=this.g=a=b-c,this.c=(b^c)&(b^a));break;case 12288:0<=(b=T(this,a>>6))&&0<=(c=T(this,a))&&(this.b=this.f=b&c,this.c=0);break;case 16384:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c&~b,
|
||||
0<=N(this,d,a)&&(this.b=this.f=a,this.c=0)):(this.b=this.f=a=this.a[a&7]&=~b,this.c=0));break;case 20480:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c|b,0<=N(this,d,a)&&(this.b=this.f=a,this.c=0)):(this.b=this.f=a=this.a[a&7]|=b,this.c=0));break;case 24576:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=b+c,0<=N(this,d,a)&&(this.b=this.f=this.g=a,this.c=(b^a)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=b+c)&65535,this.b=this.f=this.g=a,this.c=(b^a)&(c^a)));break;case 36864:0<=
|
||||
(b=U(this,a>>6))&&(a&56?0<=(d=S(this,a,5))&&0<=P(this,d,b)&&(this.b=this.f=b<<8,this.c=0):(b&128&&(b|=65280),this.b=this.f=this.a[a&7]=b,this.c=0));break;case 40960:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(a=b-c,this.b=this.f=this.g=a<<8,this.c=((b^c)&(b^a))<<8);break;case 45056:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(this.b=this.f=(b&c)<<8,this.c=0);break;case 49152:0<=(b=U(this,a>>6))&&0<=(c=O(this,d=S(this,a,7)))&&(a=c&~b,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=0));break;case 53248:0<=(b=U(this,
|
||||
|
|
@ -63,48 +63,49 @@ default:switch(a&65472){case 64:0<=(f=R(this,a,0))&&(this.a[7]=f&65535);break;ca
|
|||
(c=M(this,d=S(this,a,6)))&&(a=c+(this.g>>16&1),0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a&(a^c)));break;case 2944:0<=(c=M(this,d=S(this,a,6)))&&(a=c-(this.g>>16&1),0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=(a^c)&c));break;case 3008:0<=(c=T(this,a))&&(this.b=this.f=c,this.g=this.c=0);break;case 3072:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=(this.g&65536|c)>>1,0<=N(this,d,a)&&(this.g=c<<16,this.b=this.f=a,this.c=a^this.g>>1)):(e=a&7,c=this.a[e],a=(this.g&65536|c)>>1,this.a[e]=a&65535,this.g=
|
||||
c<<16,this.b=this.f=a,this.c=a^this.g>>1);break;case 3136:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<1|this.g>>16&1,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a^c)):(e=a&7,c=this.a[e],a=c<<1|this.g>>16&1,this.a[e]=a&65535,this.g=this.b=this.f=a,this.c=a^c);break;case 3200:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c&32768|c>>1,0<=N(this,d,a)&&(this.g=c<<16,this.b=this.f=a,this.c=this.b^this.g>>1)):(e=a&7,c=this.a[e],a=c&32768|c>>1,this.a[e]=a&65535,this.g=c<<16,this.b=this.f=a,this.c=this.b^this.g>>
|
||||
1);break;case 3264:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<1,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.g=this.b=this.f=a,this.c=a^c);break;case 3328:f=this.a[7]+((a&63)<<1)&65535;0<=(b=K(this,f|65536))&&(this.a[7]=this.a[5],this.a[5]=b,this.a[6]=f+2&65535);break;case 3392:a&56?0<=(f=R(this,a,0))&&(61440!==(this.i&61440)&&(f&=65535),this.j=this.i>>12&3,0<=(b=K(this,f))&&(this.j=this.i>>14&3,0<=L(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&
|
||||
7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 3456:0<=(c=rb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(f&=65535,this.j=this.i>>12&3,0<=(d=qb(this,f,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;case 3520:0<=(d=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,d,
|
||||
7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 3456:0<=(c=qb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(f&=65535,this.j=this.i>>12&3,0<=(d=pb(this,f,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;case 3520:0<=(d=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,d,
|
||||
a)&&(this.f=a,this.c=0));break;case 35328:a&56?0<=(d=S(this,a,5))&&0<=P(this,d,0)&&(this.b=this.g=this.c=this.f=0):(this.a[a&7]&=65280,this.b=this.g=this.c=this.f=0);break;case 35392:0<=(c=O(this,d=S(this,a,7)))&&(a=~c,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.g=65536,this.c=0));break;case 35456:0<=(c=O(this,d=S(this,a,7)))&&(a=c+1,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=(a&(a^c))<<8));break;case 35520:0<=(c=O(this,d=S(this,a,7)))&&(a=c-1,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=((a^c)&c)<<8));
|
||||
break;case 35584:0<=(c=O(this,d=S(this,a,7)))&&(a=-c,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a&c)<<8));break;case 35648:0<=(c=O(this,d=S(this,a,7)))&&(a=c+(this.g>>16&1),0<=P(this,d,a)&&(this.b=this.f=this.g=a<<8,this.c=(a&(a^c))<<8));break;case 35712:0<=(c=O(this,d=S(this,a,7)))&&(a=c-(this.g>>16&1),0<=P(this,d,a)&&(this.b=this.f=this.g=a<<8,this.c=((a^c)&c)<<8));break;case 35776:0<=(c=U(this,a))&&(this.b=this.f=c<<8,this.g=this.c=0);break;case 35840:0<=(c=O(this,d=S(this,a,7)))&&(a=((this.g&
|
||||
65536)>>8|c)>>1,0<=P(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 35904:0<=(c=O(this,d=S(this,a,7)))&&(a=c<<1|this.g>>16&1,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 35968:0<=(c=O(this,d=S(this,a,7)))&&(a=c&128|c>>1,0<=P(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 36032:0<=(c=O(this,d=S(this,a,7)))&&(a=c<<1,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 36160:a&56?0<=(f=R(this,
|
||||
a,0))&&(this.j=this.i>>12&3,0<=(b=K(this,f|65536))&&(this.j=this.i>>14&3,0<=L(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 36224:0<=(c=rb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(this.j=this.i>>12&3,0<=(d=qb(this,f|65536,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=
|
||||
c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;default:switch(a&65528){case 128:0<=(b=rb(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.i&49152||(this.i=this.i&63519|(a&7)<<5,this.O=1);break;case 160:case 168:a&1&&(this.g=0);a&2&&(this.c=0);a&4&&(this.f=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.g=65536);a&2&&(this.c=32768);a&4&&(this.f=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.i?J(this,4):(this.Ea=3,mb(this),console.log("HALT at "+
|
||||
this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.s.length))for(;0<a--;)e+=this.s[a].za,this.s[a].za=0;0===e&&0===this.Ea&&(this.Ea=2,mb(this));break;case 3:J(this,12);break;case 4:J(this,16);break;case 5:this.i&49152||ob(this);break;case 2:case 6:d=this.a[6];0<=(f=K(this,d|65536))&&(d=d+2&65535,0<=(b=K(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.i&49152&&(b=b&63519|this.i&63712),this.a[7]=f,pb(this,b),this.m&=-17,2===a&&(this.m|=this.i&16)));break;default:J(this,8)}}}}}}this.m&&(this.m&
|
||||
2?J(this,168):this.m&4?J(this,4):this.m&16&&J(this,12),this.m=0)}while(0<this.G)}return this.h.ra?this.K-this.G:void 0===this.h.ra?0:-1};v(function(){for(var a=D(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new nb(d);C(d,c)}});
|
||||
function W(a){w.call(this,"ROM",a,W);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=ba(this.g);if(this.g){a=this.g;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=p()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;r(a,null,!0,function(a,b,e){sb(c,a,b,e)})}}y(W);W.prototype.ga=function(a,b,c,d){this.u=b;this.a=c;this.B=d;tb(this)};W.prototype.Y=function(){this.i&&(this.B&&this.B.a(this.id,this.j,this.c,this.i),delete this.i);return!0};
|
||||
a,0))&&(this.j=this.i>>12&3,0<=(b=K(this,f|65536))&&(this.j=this.i>>14&3,0<=L(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 36224:0<=(c=qb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(this.j=this.i>>12&3,0<=(d=pb(this,f|65536,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=
|
||||
c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;default:switch(a&65528){case 128:0<=(b=qb(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.i&49152||(this.i=this.i&63519|(a&7)<<5,this.O=1);break;case 160:case 168:a&1&&(this.g=0);a&2&&(this.c=0);a&4&&(this.f=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.g=65536);a&2&&(this.c=32768);a&4&&(this.f=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.i?J(this,4):(this.Ca=3,lb(this),console.log("HALT at "+
|
||||
this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.s.length))for(;0<a--;)e+=this.s[a].ya,this.s[a].ya=0;0===e&&0===this.Ca&&(this.Ca=2,lb(this));break;case 3:J(this,12);break;case 4:J(this,16);break;case 5:this.i&49152||nb(this);break;case 2:case 6:d=this.a[6];0<=(f=K(this,d|65536))&&(d=d+2&65535,0<=(b=K(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.i&49152&&(b=b&63519|this.i&63712),this.a[7]=f,ob(this,b),this.m&=-17,2===a&&(this.m|=this.i&16)));break;default:J(this,8)}}}}}}this.m&&(this.m&
|
||||
2?J(this,168):this.m&4?J(this,4):this.m&16&&J(this,12),this.m=0)}while(0<this.G)}return this.h.complete?this.K-this.G:void 0===this.h.complete?0:-1};v(function(){for(var a=D(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new mb(d);C(d,c)}});
|
||||
function W(a){w.call(this,"ROM",a,W);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=ba(this.g);if(this.g){a=this.g;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=p()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;r(a,null,!0,function(a,b,e){rb(c,a,b,e)})}}y(W);W.prototype.ea=function(a,b,c,d){this.u=b;this.a=c;this.B=d;sb(this)};W.prototype.Y=function(){this.i&&(this.B&&this.B.a(this.id,this.j,this.c,this.i),delete this.i);return!0};
|
||||
W.prototype.X=function(){return!0};
|
||||
function sb(a,b,c,d){if(d)a.A("Unable to load system ROM (error "+d+": "+b+")");else{Ba(a.Oa,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),e=f.bytes,h=f.data;if(e)a.b=e;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=f;a.i=f.symbols;if(!a.b.length){t("Empty ROM: "+b);return}if(1==a.b.length){t(a.b[0]);return}}catch(g){a.A("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);tb(a)}}
|
||||
function tb(a){if(!Ea(a))if(!a.g)E(a);else if(a.b&&a.u){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.h.da=!0;a.A(b)}else{b=a.j;if(Ka(a.u,b,a.c,a.l?1:Sa)){var c;for(c=0;c<a.b.length;c++){var d=a.u,f=b+c;d.b[(f&d.u)>>>d.f].Xa(f&d.m,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.u,h=e.c,g=[],k=e.j>>>f.f;0<h&&k<
|
||||
f.b.length;)g.push(f.b[k++]),h-=f.c;f=e.u;e=e.c;h=0;for(d>>>=f.f;0<e&&d<f.b.length;){k=g[h++];if(!k)break;f.b[d++]=k;e-=f.c}}delete a.b}}E(a)}}v(function(){for(var a=D(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new W(d);C(d,c)}});function ub(a){w.call(this,"RAM",a,ub);this.f=a.addr;this.c=a.size;this.b=!1}y(ub);m=ub.prototype;m.ga=function(a,b,c,d){this.u=b;this.a=c;this.B=d;E(this)};m.Y=function(a,b){b||this.reset();return!0};m.X=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.b&&this.c&&Ka(this.u,this.f,this.c,1)&&(this.b=!0);this.b||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};v(function(){for(var a=D(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new ub(d);C(d,c)}});function vb(a){w.call(this,"Keyboard",a,vb);E(this)}y(vb);vb.prototype.L=function(){return!1};vb.prototype.ga=function(a,b,c,d){this.l=a;this.a=c;this.B=d;this.Z=null};
|
||||
v(function(){for(var a=D(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new vb(d);C(d,c)}});
|
||||
function wb(a,b,c){w.call(this,"Computer",a,wb);this.h.w=!1;xb(this,b);this.v=cb(this,"autoPower",a);this.f=0;this.I=a.busWidth||a.buswidth;this.b=X;this.m=null;this.j=this.F=!1;this.J=cb(this,"url")||"";(Math.random()+.1).toString(36);this.c=yb(this);if(this.a=Ca("CPU",this.id)){this.B=Ca("Debugger",this.id);this.u=new Ia({id:this.Oa+".bus",busWidth:this.I},this.a,this.B);var d,f=A(this.id);if((this.g=Ca("Panel",this.id))&&this.g.xa)for(b=0;b<f.length;b++)d=f[b],d.A=this.g.A,d.H=this.g.H,d.xa=this.g.xa;
|
||||
this.H("PDP11js v1.24.2\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.H("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)d=f[b],d.ga&&d.ga(this,this.u,this.a,this.B);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.l=d:this.b=parseInt(d,10));var e;if(a=cb(this,"state")||(e=!0,a.state))b=this.C=a,e||(this.j=!0,this.b=X),this.b&&(this.s=new H(this,
|
||||
"1.24.2"),Y(this.s)?b=null:delete this.s);!b&&this.b&&(b=zb(this))&&(this.j=!0);if(b){var h=this;r(b,null,!0,function(a,b,c){c?(h.l=null,h.j=!1,h.A("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.m=b,h.F=!0);E(h)})}else E(this);this.o.power||(this.v=!0);!c&&this.v&&Ab(this,this.ja)}else t("Unable to find CPU component")}y(wb);var X=0;
|
||||
function xb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.G=b}function cb(a,b,c){var d=b.toLowerCase(),d=va[b]||va[d];void 0===d&&a.G&&(d=a.G[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Ab(a,b,c){for(var d=A(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ea(e)){Ea(e,function(){Ab(a,b,c)});return}}b.call(a,c)}
|
||||
function Bb(a,b){var c=new H(a,"1.24.2","validate");if(Y(c)&&Cb(c)){var d=Z(c,"timestamp"),f=b?Z(b,"timestamp"):"unknown";d!=f&&(a.A("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}m=wb.prototype;
|
||||
m.ja=function(a){void 0===a&&(a=this.b||(this.m?1:X));if(!this.f){this.f++;var b=!1,c=!1;this.D=!1;var d=this.s||new H(this,"1.24.2");if(-1==a)b=!0;else if(a>X){if(Y(d,this.m)){this.i=new H(this,"1.24.2","failsafe");Y(this.i)&&(Db(this,d),a=2,Eb(this.i));I(this.i,"timestamp",ga());Fb(this.i);var f=this.b&&!this.j;if(1==a||ha("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Cb(d)){var e=Z(d,"code"),h=Z(d,"data");e&&("ok"==e?Y(d,h):("error"==e&&"no machine state"!=
|
||||
h?(this.A("Error: "+h),"unable to verify user"==h&&(la("user",""),this.c=null)):this.H(e+": "+h),Eb(d),Y(d)?(c=Cb(d),f=!0):c=!1))}f&&Bb(this,c?d:null)}else 2==a&&d.clear()}else Bb(this);delete this.m;delete this.s}f=A(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.a&&(c=Gb(this,h,d,b,c));b=[d,a,c];-1!=a?Ab(this,this.Ha,b):this.Ha(b)}};
|
||||
function Gb(a,b,c,d,f){if(!b.h.w){b.h.w=!0;if(b.Y){var e=null;f&&((e=Z(c,b.id))||(e=Z(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Y(e,d)&&e&&(t("Unable to restore state for "+b.type),a.C&&!a.F?(c.clear(),a.b=X,window&&window.location.reload()):a.D=!0,b.Y(null),f=!1)}if(!d&&b.Na)for(a=b.Na.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
m.Ha=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.h.w=!0;var d=this.o.power;d&&(d.textContent="Shutdown");this.a&&(Gb(this,this.a,b,c,a),gb(this.a));this.D&&(Db(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function Db(a,b){if(ha("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.c||"",d=b.toString(),f={app:"PDP11js",ver:"1.24.2"};f.url=a.J;f.user=c;f.type="bug";f.data=d;r("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Hb(a,b,c){var d,f="none";if(a.f)return null;a.f--;var e=new H(a,"1.24.2"),h=new H(a,"1.24.2","validate"),g=ga();I(h,"timestamp",g);I(e,"timestamp",g);I(e,"version","1.24.2");I(e,"url",window?window.location.href:null);I(e,"browser",window?window.navigator.userAgent:"");a.a&&a.a.X&&(c&&G(a.a),d=a.a.X(b,c),"object"===typeof d&&I(e,a.a.id,d),c&&(a.a.h.w=!1,!1===d&&(f=null)));for(var g=A(a.id),k=0;k<g.length;k++){var l=g[k];l.h.w&&(l.X&&(d=l.X(b,c),"object"===typeof d&&I(e,l.id,d)),c&&(l.h.w=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.c&&Ib(a,a.c,e.toString()),Fb(h)&&Fb(e)||(f=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&e.clear(g)):f=e.toString());c&&(a.h.w=!1,b=a.o.power)&&(b.textContent="Power");a.f=0;return f}m.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=A(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=A(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
function rb(a,b,c,d){if(d)a.w("Unable to load system ROM (error "+d+": "+b+")");else{Ba(a.Ka,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),e=f.bytes,h=f.data;if(e)a.b=e;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=f;a.i=f.symbols;if(!a.b.length){t("Empty ROM: "+b);return}if(1==a.b.length){t(a.b[0]);return}}catch(g){a.w("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);sb(a)}}
|
||||
function sb(a){if(!Ea(a))if(!a.g)E(a);else if(a.b&&a.u){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.h.error=!0;a.w(b)}else{b=a.j;if(Ka(a.u,b,a.c,a.l?1:Sa)){var c;for(c=0;c<a.b.length;c++){var d=a.u,f=b+c;d.b[(f&d.u)>>>d.f].Ua(f&d.m,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.u,h=e.c,g=[],k=e.j>>>f.f;0<h&&
|
||||
k<f.b.length;)g.push(f.b[k++]),h-=f.c;f=e.u;e=e.c;h=0;for(d>>>=f.f;0<e&&d<f.b.length;){k=g[h++];if(!k)break;f.b[d++]=k;e-=f.c}}delete a.b}}E(a)}}v(function(){for(var a=D(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new W(d);C(d,c)}});function tb(a){w.call(this,"RAM",a,tb);this.f=a.addr;this.c=a.size;this.b=!1}y(tb);m=tb.prototype;m.ea=function(a,b,c,d){this.u=b;this.a=c;this.B=d;E(this)};m.Y=function(a,b){b||this.reset();return!0};m.X=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.b&&this.c&&Ka(this.u,this.f,this.c,1)&&(this.b=!0);this.b||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};v(function(){for(var a=D(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new tb(d);C(d,c)}});function ub(a){w.call(this,"Keyboard",a,ub);E(this)}y(ub);ub.prototype.L=function(){return!1};ub.prototype.ea=function(a,b,c,d){this.l=a;this.a=c;this.B=d;this.Z=null};
|
||||
v(function(){for(var a=D(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new ub(d);C(d,c)}});
|
||||
function vb(a,b,c){w.call(this,"Computer",a,vb);this.h.A=!1;wb(this,b);this.v=cb(this,"autoPower",a);this.f=0;this.I=a.busWidth||a.buswidth;this.b=X;this.m=null;this.j=this.F=!1;this.J=cb(this,"url")||"";(Math.random()+.1).toString(36);this.c=xb(this);if(this.a=Ca("CPU",this.id)){this.B=Ca("Debugger",this.id);this.u=new Ia({id:this.Ka+".bus",busWidth:this.I},this.a,this.B);var d,f=A(this.id);if((this.g=Ca("Panel",this.id))&&this.g.wa)for(b=0;b<f.length;b++)d=f[b],d.w=this.g.w,d.H=this.g.H,d.wa=this.g.wa;
|
||||
this.H("PDP11js v1.24.2\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.H("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)d=f[b],d.ea&&d.ea(this,this.u,this.a,this.B);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.l=d:this.b=parseInt(d,10));var e;if(a=cb(this,"state")||(e=!0,a.state))b=this.C=a,e||(this.j=!0,this.b=X),this.b&&(this.s=new H(this,
|
||||
"1.24.2"),Y(this.s)?b=null:delete this.s);!b&&this.b&&(b=yb(this))&&(this.j=!0);if(b){var h=this;r(b,null,!0,function(a,b,c){c?(h.l=null,h.j=!1,h.w("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.m=b,h.F=!0);E(h)})}else E(this);this.o.power||(this.v=!0);!c&&this.v&&zb(this,this.ia)}else t("Unable to find CPU component")}y(vb);var X=0;
|
||||
function wb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.G=b}function cb(a,b,c){var d=b.toLowerCase(),d=va[b]||va[d];void 0===d&&a.G&&(d=a.G[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function zb(a,b,c){for(var d=A(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ea(e)){Ea(e,function(){zb(a,b,c)});return}}b.call(a,c)}
|
||||
function Ab(a,b){var c=new H(a,"1.24.2","validate");if(Y(c)&&Bb(c)){var d=Z(c,"timestamp"),f=b?Z(b,"timestamp"):"unknown";d!=f&&(a.w("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}m=vb.prototype;
|
||||
m.ia=function(a){void 0===a&&(a=this.b||(this.m?1:X));if(!this.f){this.f++;var b=!1,c=!1;this.D=!1;var d=this.s||new H(this,"1.24.2");if(-1==a)b=!0;else if(a>X){if(Y(d,this.m)){this.i=new H(this,"1.24.2","failsafe");Y(this.i)&&(Cb(this,d),a=2,Db(this.i));I(this.i,"timestamp",ga());Eb(this.i);var f=this.b&&!this.j;if(1==a||ha("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Bb(d)){var e=Z(d,"code"),h=Z(d,"data");e&&("ok"==e?Y(d,h):("error"==e&&"no machine state"!=
|
||||
h?(this.w("Error: "+h),"unable to verify user"==h&&(la("user",""),this.c=null)):this.H(e+": "+h),Db(d),Y(d)?(c=Bb(d),f=!0):c=!1))}f&&Ab(this,c?d:null)}else 2==a&&d.clear()}else Ab(this);delete this.m;delete this.s}f=A(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.a&&(c=Fb(this,h,d,b,c));b=[d,a,c];-1!=a?zb(this,this.Ga,b):this.Ga(b)}};
|
||||
function Fb(a,b,c,d,f){if(!b.h.A){b.h.A=!0;if(b.Y){var e=null;f&&((e=Z(c,b.id))||(e=Z(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Y(e,d)&&e&&(t("Unable to restore state for "+b.type),a.C&&!a.F?(c.clear(),a.b=X,window&&window.location.reload()):a.D=!0,b.Y(null),f=!1)}if(!d&&b.Ja)for(a=b.Ja.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
m.Ga=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.h.A=!0;var d=this.o.power;d&&(d.textContent="Shutdown");this.a&&(Fb(this,this.a,b,c,a),this.a.ga());this.D&&(Cb(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function Cb(a,b){if(ha("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.c||"",d=b.toString(),f={app:"PDP11js",ver:"1.24.2"};f.url=a.J;f.user=c;f.type="bug";f.data=d;r("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Gb(a,b,c){var d,f="none";if(a.f)return null;a.f--;var e=new H(a,"1.24.2"),h=new H(a,"1.24.2","validate"),g=ga();I(h,"timestamp",g);I(e,"timestamp",g);I(e,"version","1.24.2");I(e,"url",window?window.location.href:null);I(e,"browser",window?window.navigator.userAgent:"");a.a&&a.a.X&&(c&&G(a.a),d=a.a.X(b,c),"object"===typeof d&&I(e,a.a.id,d),c&&(a.a.h.A=!1,!1===d&&(f=null)));for(var g=A(a.id),k=0;k<g.length;k++){var l=g[k];l.h.A&&(l.X&&(d=l.X(b,c),"object"===typeof d&&I(e,l.id,d)),c&&(l.h.A=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.c&&Hb(a,a.c,e.toString()),Eb(h)&&Eb(e)||(f=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&e.clear(g)):f=e.toString());c&&(a.h.A=!1,b=a.o.power)&&(b.textContent="Power");a.f=0;return f}m.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=A(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=A(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var c=A(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
m.L=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.f||(d.h.w?Hb(d,!1,!0):Ab(d,d.ja))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.h.w&&!d.f)if(d.b&&!d.l){var a=ha("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Hb(d,a,!0);!a&&d.C?window&&window.location.reload():d.ja(X)}else d.reset(),d.a&&gb(d.a)},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.o[b]=c;c.onclick=
|
||||
function(){var a=yb(d,!0);if(a){var b=!!(d.b&&!d.l||d.C),c=Hb(d,b);b?Ib(d,a,c):d.A("Resume disabled, machine state not saved")}};return!0}return!1};function yb(a,b){var c=a.c;c||(c=ka("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Jb(a,c))||a.A("The user ID is invalid."))):b&&a.A("Browser local storage is not available"));return c}
|
||||
function Jb(a,b){a.c=null;var c=r(p()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(la("user",c.data),a.c=c.data)}catch(f){t(f.message+" ("+d+")")}return a.c}function zb(a){var b=null;a.c&&(b=p()+"/api/v1/user?req=load&user="+a.c+"&state="+Kb(a,"1.24.2"));return b}
|
||||
function Ib(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Kb(a,"1.24.2");d.data=c;b=r(p()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.A("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.A(c),la("user",""),a.c=null)}}
|
||||
m.ea=function(a){this.a&&this.a.ea(a);this.g&&this.g.ea(a)};v(function(){for(var a=D(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],h=B(e),h=new wb(h,d,!0);C(h,e);h.v&&Ab(h,h.ja)}});u.show.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.K&&!c.h.w&&c.ja(-1)}});
|
||||
u.exit.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.h.w&&Hb(c,!(!c.b||c.l),!0)}});function H(a,b,c){this.id=a.id;this.key=Kb(a,b,c);this.B=a.B;Eb(this,a.cb)}function Kb(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
H.prototype={constructor:H,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){Eb(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}}};
|
||||
function Eb(a,b){a[a.id]={};b&&I(a,"parms",b);a.a=!1}function Fb(a){var b=!0;if(ja()){var c=JSON.stringify(a[a.id]);la(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Cb(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function Y(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:ja()&&(b=ka(a.key))?(a[a.id]=b,a.a=!0):!1}function Z(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var Lb=0;
|
||||
function Mb(a,b,c,d,f,e){f("Loading "+a+"...");r(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Nb(g,a,b,c,d,f,e)})}
|
||||
function Nb(a,b,c,d,f,e,h){function g(a,e){if(e)h(e,null);else{if(c){Ba(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}f||(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{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(z){g=null,a=z.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Ob(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Ob(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,null,!0,function(e,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(e=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,Q=/( [a-z]+=)(['"])(.*?)\2/g;l=Q.exec(e);)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{c(a,"missing <"+d[1]+"> in "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Ob(a,b,c)}})}else c(a,null)}
|
||||
function Pb(a,b,c,d){function f(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function e(a){f("Error: "+a);k&&(--Lb||sa(!0));k=!1}var h,g,k=!0;Lb++;Aa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var Q=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=l:z.appendChild(document.createTextNode(l));Q.appendChild(z)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");l=function(d,g){g?Mb(c,null,null,!1,f,function(d,k){if(k)if(Ba(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Lb||sa(!0)):e("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),--Lb||sa(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(d)}):e(d)};"<"!=b.charAt(0)?Mb(b,a,d,!0,f,l):Nb(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(Qb){e(Qb.message)}return k}window.embedPDP11=function(a,b,c,d){sa(!1);return Pb(a,b,c,d)};window.enableEvents=sa;window.sendEvent=ta;})();
|
||||
m.L=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.f||(d.h.A?Gb(d,!1,!0):zb(d,d.ia))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.h.A&&!d.f)if(d.b&&!d.l){var a=ha("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Gb(d,a,!0);!a&&d.C?window&&window.location.reload():d.ia(X)}else d.reset(),d.a&&d.a.ga()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.o[b]=c;
|
||||
c.onclick=function(){var a=xb(d,!0);if(a){var b=!!(d.b&&!d.l||d.C),c=Gb(d,b);b?Hb(d,a,c):d.w("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function xb(a,b){var c=a.c;c||(c=ka("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Ib(a,c))||a.w("The user ID is invalid."))):b&&a.w("Browser local storage is not available"));return c}
|
||||
function Ib(a,b){a.c=null;var c=r(p()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(la("user",c.data),a.c=c.data)}catch(f){t(f.message+" ("+d+")")}return a.c}function yb(a){var b=null;a.c&&(b=p()+"/api/v1/user?req=load&user="+a.c+"&state="+Jb(a,"1.24.2"));return b}
|
||||
function Hb(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Jb(a,"1.24.2");d.data=c;b=r(p()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.w("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.w(c),la("user",""),a.c=null)}}
|
||||
m.da=function(a){this.a&&this.a.da(a);this.g&&this.g.da(a)};v(function(){for(var a=D(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],h=B(e),h=new vb(h,d,!0);C(h,e);h.v&&zb(h,h.ia)}});u.show.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.K&&!c.h.A&&c.ia(-1)}});
|
||||
u.exit.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.h.A&&Gb(c,!(!c.b||c.l),!0)}});function H(a,b,c){this.id=a.id;this.key=Jb(a,b,c);this.B=a.B;Db(this,a.$a)}function Jb(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
H.prototype={constructor:H,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){Db(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}}};
|
||||
function Db(a,b){a[a.id]={};b&&I(a,"parms",b);a.a=!1}function Eb(a){var b=!0;if(ja()){var c=JSON.stringify(a[a.id]);la(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Bb(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function Y(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:ja()&&(b=ka(a.key))?(a[a.id]=b,a.a=!0):!1}function Z(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var Kb=0;
|
||||
function Lb(a,b,c,d,f,e){f("Loading "+a+"...");r(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Mb(g,a,b,c,d,f,e)})}
|
||||
function Mb(a,b,c,d,f,e,h){function g(a,e){if(e)h(e,null);else{if(c){Ba(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}f||(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{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(z){g=null,a=z.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Nb(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Nb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,null,!0,function(e,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(e=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,Q=/( [a-z]+=)(['"])(.*?)\2/g;l=Q.exec(e);)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{c(a,"missing <"+d[1]+"> in "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Nb(a,b,c)}})}else c(a,null)}
|
||||
function Ob(a,b,c,d){function f(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function e(a){f("Error: "+a);k&&(--Kb||sa(!0));k=!1}var h,g,k=!0;Kb++;Aa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var Q=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=l:z.appendChild(document.createTextNode(l));Q.appendChild(z)}c||
|
||||
(c="/versions/pdp11/1.24.2/components.xsl");l=function(d,g){g?Lb(c,null,null,!1,f,function(d,k){if(k)if(Ba(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Kb||sa(!0)):e("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),--Kb||sa(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(d)}):e(d)};"<"!=b.charAt(0)?Lb(b,a,d,!0,f,l):Mb(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(Pb){e(Pb.message)}return k}window.embedPDP11=function(a,b,c,d){sa(!1);return Ob(a,b,c,d)};window.enableEvents=sa;window.sendEvent=ta;})();
|
||||
|
|
|
|||
265
versions/pdp11/1.30.0/common.css
Normal file
265
versions/pdp11/1.30.0/common.css
Normal file
|
|
@ -0,0 +1,265 @@
|
|||
@CHARSET "UTF-8";
|
||||
/**
|
||||
@author Jeff Parsons (@jeffpar)
|
||||
@website http://www.pcjs.org/
|
||||
@created 2013-05-05
|
||||
@modified 2014-02-23
|
||||
@license http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
body {
|
||||
margin: 0;
|
||||
background: #202020;
|
||||
}
|
||||
h1, h2 {
|
||||
margin-top: 0;
|
||||
color: #cccccc;
|
||||
}
|
||||
h1, h2, h3, h4 {
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
h4 a {
|
||||
color: #cccccc !important;
|
||||
}
|
||||
p {
|
||||
line-height: 1.5em;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
a img {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
pre, code {
|
||||
color: #000000;
|
||||
background-color: #cccccc;
|
||||
font-family: Monaco, Consolas, "Lucida Console", monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
pre {
|
||||
margin: 1em 2em;
|
||||
padding: 1em;
|
||||
border-radius: 5px;
|
||||
overflow: auto;
|
||||
}
|
||||
code {
|
||||
padding: 1px;
|
||||
}
|
||||
pre a, code a {
|
||||
color: #006400 !important;
|
||||
}
|
||||
.common {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
color: #cccccc;
|
||||
}
|
||||
.common a {
|
||||
|
||||
color: #7fc07f;
|
||||
text-decoration: none;
|
||||
}
|
||||
.common hr {
|
||||
border-color: #808080;
|
||||
}
|
||||
.common a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.common, .machine {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif;
|
||||
font-size: 15px;
|
||||
}
|
||||
.machine {
|
||||
margin: 15px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.c1pjs {
|
||||
overflow: visible;
|
||||
}
|
||||
.machine-placeholder {
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
.common-top {
|
||||
background: #202020;
|
||||
font-size: small;
|
||||
}
|
||||
.common-top-left {
|
||||
float: left;
|
||||
width: 60%;
|
||||
}
|
||||
.common-top-left ul {
|
||||
line-height: 1.5em;
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 1em 1em 1em 9px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.common-top-left ul li {
|
||||
display: block;
|
||||
float: left;
|
||||
}
|
||||
.common-top-left ul li a {
|
||||
border-right: 1px solid #6f6f6f;
|
||||
padding: 2px 6px 2px 6px;
|
||||
}
|
||||
.common-top-left ul li:last-child a {
|
||||
border-right: none;
|
||||
}
|
||||
.common-top-right {
|
||||
float: right;
|
||||
width: 40%;
|
||||
}
|
||||
.common-top-right p {
|
||||
float: right;
|
||||
margin: 0;
|
||||
padding: 1em;
|
||||
}
|
||||
.common-middle {
|
||||
clear: both;
|
||||
padding: 1px 1em 1px 1em;
|
||||
background: #404040;
|
||||
}
|
||||
.common-sidebar {
|
||||
float: left;
|
||||
font-size: small;
|
||||
width: 140px;
|
||||
padding-bottom: 20px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.common-list {
|
||||
list-style-type: none;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
.common-list li {
|
||||
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
.common-list-data {
|
||||
list-style-type: none;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
.common-list-data li {
|
||||
line-height: 1.5em;
|
||||
}
|
||||
.common-list-data-items, .common-list-data-subitems {
|
||||
font-size: x-small;
|
||||
list-style-type: none;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
padding-left: 2em;
|
||||
}
|
||||
.common-list-data-items li, .common-list-data-subitems li {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
.common-main {
|
||||
margin-left: 150px;
|
||||
|
||||
}
|
||||
.common-main blockquote {
|
||||
text-align: justify;
|
||||
}
|
||||
.common-image-gallery {
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
.common-image-gallery:after {
|
||||
content: '';
|
||||
display: block;
|
||||
}
|
||||
.common-image-frame {
|
||||
display: inline-block;
|
||||
margin: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
.common-image-link {
|
||||
padding: 5px;
|
||||
border: 1px solid black;
|
||||
border-radius: 5px;
|
||||
background-color: #FAEBD7;
|
||||
}
|
||||
.common-image-label {
|
||||
font-size: x-small;
|
||||
}
|
||||
.common-bottom {
|
||||
clear: both;
|
||||
padding-top: 1em;
|
||||
}
|
||||
.common-bottom:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
.common-reference {
|
||||
float: left;
|
||||
font-size: x-small;
|
||||
}
|
||||
.common-reference a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.common-copyright {
|
||||
float: right;
|
||||
font-size: x-small;
|
||||
}
|
||||
.common-copyright a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.md-list {
|
||||
}
|
||||
.md-list li {
|
||||
line-height: 1.5em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.md-list li p {
|
||||
padding-left: 2em;
|
||||
}
|
||||
.md-list-compact {
|
||||
}
|
||||
.md-list-compact li {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.md-list-none {
|
||||
list-style-type: none;
|
||||
padding-left: 2em;
|
||||
}
|
||||
.md-list-none li {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@media screen and (max-width: 900px) {
|
||||
|
||||
.common-sidebar {
|
||||
width: 100%;
|
||||
white-space: normal;
|
||||
}
|
||||
.common-list {
|
||||
padding-left: 0;
|
||||
}
|
||||
.common-list-data {
|
||||
padding-left: 0;
|
||||
}
|
||||
.common-sidebar h4, .common-list li, .common-list-data li, .common-list-data-items li {
|
||||
width: 130px;
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
vertical-align: top;
|
||||
padding-right: 1em;
|
||||
margin-top: 0;
|
||||
}
|
||||
.common-list-data-subitems {
|
||||
display: none;
|
||||
}
|
||||
.common-main {
|
||||
clear: both;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
.md-list-none {
|
||||
padding-left: 1em;
|
||||
}
|
||||
}
|
||||
58
versions/pdp11/1.30.0/common.xsl
Normal file
58
versions/pdp11/1.30.0/common.xsl
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY nbsp " "> <!ENTITY ne "≠"> <!ENTITY le "≤"> <!ENTITY ge "≥">
|
||||
<!ENTITY times "×"> <!ENTITY sdot "⋅"> <!ENTITY divide "÷">
|
||||
<!ENTITY copy "©"> <!ENTITY Sigma "Σ"> <!ENTITY sigma "σ"> <!ENTITY sum "∑"> <!ENTITY lbrace "{">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output method="html"/>
|
||||
|
||||
<xsl:template name="commonStyles">
|
||||
<meta charset="utf-8"/>
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/versions/icons/current/pc-icon-57.png"/>
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/versions/icons/current/pc-icon-72.png"/>
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/versions/icons/current/pc-icon-76.png"/>
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/versions/icons/current/pc-icon-114.png"/>
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/versions/icons/current/pc-icon-120.png"/>
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/versions/icons/current/pc-icon-144.png"/>
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/versions/icons/current/pc-icon-152.png"/>
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/versions/icons/current/pc-icon-180.png"/>
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
|
||||
<link rel="apple-touch-icon" href="/versions/icons/current/apple-touch-icon.png"/>
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/versions/icons/current/pc-icon-192.png"/>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/versions/icons/current/favicon.ico"/>
|
||||
<link rel="stylesheet" type="text/css" href="/versions/pdp11/1.30.0/common.css"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="commonTop">
|
||||
<div class="common-top">
|
||||
<div class="common-top-left">
|
||||
<ul>
|
||||
<li><a href="/">PCjs</a></li>
|
||||
<li><a href="/apps/pcx86/">Demos</a></li>
|
||||
<li><a href="/devices/">Devices</a></li>
|
||||
<li><a href="/disks/">Disks</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/pubs/">Pubs</a></li>
|
||||
<li><a href="/docs/about/">About</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="common-top-right">
|
||||
<p>Powered by JavaScript and <a href="http://github.com/jeffpar/pcjs" target="_blank">GitHub</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="commonBottom">
|
||||
<div class="common-bottom">
|
||||
<p class="common-reference"></p>
|
||||
<p class="common-copyright">
|
||||
<span class="common-copyright"><a href="http://www.pcjs.org/">pcjs.org</a> website © 2012-2016 by <a href="http://twitter.com/jeffpar">@jeffpar</a></span><br/>
|
||||
<span class="common-copyright"><a href="http://github.com/jeffpar/pcjs">PCjs Project</a> released under <a href="http://gnu.org/licenses/gpl.html">GPL version 3 or later</a></span>
|
||||
</p>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
159
versions/pdp11/1.30.0/components.css
Normal file
159
versions/pdp11/1.30.0/components.css
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
@CHARSET "UTF-8";
|
||||
|
||||
|
||||
*:not(input,textarea) {
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
.pcjs-embed {
|
||||
}
|
||||
.pcjs-embed:after {
|
||||
clear:both;
|
||||
}
|
||||
.pcjs-machine {
|
||||
}
|
||||
.pcjs-name, .pcjs-menu {
|
||||
clear: both;
|
||||
font-weight: bold;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
.pcjs-menu {
|
||||
float: left;
|
||||
}
|
||||
.pcjs-canvas {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.pcjs-container {
|
||||
color: #000000;
|
||||
position: relative;
|
||||
}
|
||||
.pcjs-label {
|
||||
font-size: small;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
float: left;
|
||||
font-family: "Lucida Console", monospace;
|
||||
}
|
||||
.pcjs-controls textarea {
|
||||
font-family: Monaco, monospace;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-fieldset {
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.pcjs-flag {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.pcjs-register {
|
||||
font-family: "Lucida Console", monospace;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
vertical-align: middle;
|
||||
border: 1px solid black;
|
||||
}
|
||||
.pcjs-switches {
|
||||
float: left;
|
||||
}
|
||||
.pcjs-bitBucket {
|
||||
float: left;
|
||||
width: 19px;
|
||||
height: 38px;
|
||||
}
|
||||
.pcjs-bitCell {
|
||||
float: left;
|
||||
width: 19px;
|
||||
height: 19px;
|
||||
margin-right: -1px;
|
||||
margin-bottom: -1px;
|
||||
border: 1px solid black;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
}
|
||||
.pcjs-bitCellLeft {
|
||||
border-left: 1px solid black;
|
||||
}
|
||||
.pcjs-bitLabel {
|
||||
font-size: xx-small;
|
||||
text-align: center;
|
||||
}
|
||||
.pcjs-description, .pcjs-status {
|
||||
font-size: x-small;
|
||||
line-height: 2em;
|
||||
}
|
||||
.pcjs-key {
|
||||
border: 1px solid black;
|
||||
font-size: x-small;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
height: 34px;
|
||||
line-height: 34px;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.pcjs-led {
|
||||
float: left;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
margin: 4px;
|
||||
border: 1px solid black;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-rled {
|
||||
float: left;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
margin: 4px;
|
||||
border: 1px solid black;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
line-height: 19px;
|
||||
background-color: #000000;
|
||||
}
|
||||
.pcjs-screen {
|
||||
clear: both;
|
||||
height: auto;
|
||||
position: relative;
|
||||
line-height: 0;
|
||||
}
|
||||
.pcjs-screen textarea {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.pcjs-reference {
|
||||
float: left;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-reference a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.pcjs-copyright {
|
||||
float: right;
|
||||
font-size: x-small;
|
||||
}
|
||||
.pcjs-copyright a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 900px) {
|
||||
.pcjs-textarea {
|
||||
width: 100% !important;
|
||||
}
|
||||
.pcjs-registers {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
1242
versions/pdp11/1.30.0/components.xsl
Normal file
1242
versions/pdp11/1.30.0/components.xsl
Normal file
File diff suppressed because it is too large
Load diff
162
versions/pdp11/1.30.0/document.css
Normal file
162
versions/pdp11/1.30.0/document.css
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
@CHARSET "UTF-8";
|
||||
|
||||
.page {
|
||||
margin: 2% 2%;
|
||||
padding: 2% 2%;
|
||||
min-width: 30em;
|
||||
overflow: auto;
|
||||
font-size: large;
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
background: #303030;
|
||||
color: #ccc;
|
||||
|
||||
}
|
||||
.page-header {
|
||||
}
|
||||
.page-header-title {
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.page a {
|
||||
color: #7fc07f;
|
||||
text-decoration: none;
|
||||
}
|
||||
a.footlink, a.paralink {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.footlink:link, a.paralink:link {
|
||||
color: blue;
|
||||
}
|
||||
a.footlink:visited, a.paralink:visited {
|
||||
color: blue;
|
||||
}
|
||||
.galleryitem {
|
||||
float: left;
|
||||
width: 200px;
|
||||
}
|
||||
.item {
|
||||
float: left;
|
||||
width: 2em;
|
||||
text-indent: 1em;
|
||||
}
|
||||
.list {
|
||||
margin-left: 3em;
|
||||
text-indent: 0;
|
||||
text-align: justify;
|
||||
}
|
||||
ul {
|
||||
list-style: none;
|
||||
}
|
||||
div.pnumber {
|
||||
float: left;
|
||||
width: 2em;
|
||||
text-indent: 1em;
|
||||
}
|
||||
div.pitem {
|
||||
margin-left: 10em;
|
||||
}
|
||||
p.indent, .justified p {
|
||||
text-indent: 2em;
|
||||
text-align: justify;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
p.noindent {
|
||||
text-indent: 0;
|
||||
text-align: justify;
|
||||
}
|
||||
p.center, .center {
|
||||
text-align: center;
|
||||
}
|
||||
li.para {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.left {
|
||||
text-align: left;
|
||||
}
|
||||
.right {
|
||||
text-align: right;
|
||||
}
|
||||
blockquote.tag {
|
||||
font-size: small;
|
||||
font-family: Monaco, Fixed, monospace;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.blockquote {
|
||||
padding-left: 1em;
|
||||
text-indent: 0;
|
||||
text-align: justify;
|
||||
}
|
||||
.italics {
|
||||
font-style: italic;
|
||||
}
|
||||
.medium {
|
||||
font-size: medium;
|
||||
}
|
||||
.small {
|
||||
font-size: x-small;
|
||||
}
|
||||
.smallcaps {
|
||||
font-variant: small-caps;
|
||||
}
|
||||
.strike {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
.summation, .bracelist {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
margin-bottom: 0.5ex;
|
||||
text-indent: 0;
|
||||
}
|
||||
.bracelist-symbol {
|
||||
font-size: 3em;
|
||||
vertical-align: -40%;
|
||||
}
|
||||
.summation .summation-lower, .summation .summation-upper, .bracelist-item {
|
||||
display: block;
|
||||
font-size: 75%;
|
||||
text-align: center;
|
||||
}
|
||||
.summation .summation-upper {
|
||||
margin-bottom: 0;
|
||||
margin-left: 0.8ex;
|
||||
font-style: italic;
|
||||
}
|
||||
.summation .summation-lower{
|
||||
margin-bottom: -0.6ex;
|
||||
font-style: italic;
|
||||
}
|
||||
.summation .summation-symbol {
|
||||
font-size: 2em;
|
||||
}
|
||||
p sup {
|
||||
vertical-align: baseline;
|
||||
position: relative;
|
||||
bottom: .5em;
|
||||
font-size: small;
|
||||
}
|
||||
p sub {
|
||||
vertical-align: baseline;
|
||||
position: relative;
|
||||
bottom: -.5em;
|
||||
font-size: small;
|
||||
}
|
||||
.footnote {
|
||||
font-size: medium;
|
||||
text-indent: 1em;
|
||||
text-align: justify;
|
||||
margin-top: .5em;
|
||||
}
|
||||
.image-right {
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.image-caption {
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
}
|
||||
452
versions/pdp11/1.30.0/document.xsl
Normal file
452
versions/pdp11/1.30.0/document.xsl
Normal file
|
|
@ -0,0 +1,452 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY nbsp " "> <!ENTITY ne "≠"> <!ENTITY le "≤"> <!ENTITY ge "≥">
|
||||
<!ENTITY times "×"> <!ENTITY sdot "⋅"> <!ENTITY divide "÷">
|
||||
<!ENTITY copy "©"> <!ENTITY Sigma "Σ"> <!ENTITY sigma "σ"> <!ENTITY sum "∑"> <!ENTITY lbrace "{">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output method="html"/>
|
||||
|
||||
<xsl:template name="documentStyles">
|
||||
<link rel="stylesheet" type="text/css" href="/versions/pdp11/1.30.0/document.css"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="title">
|
||||
<h1><xsl:apply-templates/></h1>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="p">
|
||||
<xsl:if test="@id">
|
||||
<a name="{@id}"></a>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(@class)">
|
||||
<p><xsl:apply-templates/></p>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<p class="{@class}"><xsl:apply-templates/></p>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="p">
|
||||
<xsl:call-template name="p"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="br">
|
||||
<br/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="p[@number]">
|
||||
<div class="pnumber">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(@number) or @number = ''"> </xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="@number"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</div>
|
||||
<div class="pitem">
|
||||
<xsl:call-template name="p"/>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="span">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(@class)">
|
||||
<span><xsl:apply-templates/></span>
|
||||
</xsl:when>
|
||||
<xsl:when test="@class = 'italics'">
|
||||
<em><xsl:apply-templates/></em>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<span class="{@class}"><xsl:apply-templates/></span>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="h2">
|
||||
<h2><xsl:apply-templates/></h2>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="h3">
|
||||
<h3><xsl:apply-templates/></h3>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="h4">
|
||||
<h4><xsl:apply-templates/></h4>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="h5">
|
||||
<h5><xsl:apply-templates/></h5>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="h6">
|
||||
<h6><xsl:apply-templates/></h6>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="em">
|
||||
<em><xsl:apply-templates/></em>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="strong">
|
||||
<strong><xsl:apply-templates/></strong>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="a">
|
||||
<a href="{@href}" target="{@target}"><xsl:apply-templates/></a>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="ol">
|
||||
<blockquote><ol><xsl:apply-templates/></ol></blockquote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="ul">
|
||||
<blockquote><ul><xsl:apply-templates/></ul></blockquote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="li">
|
||||
<li><xsl:apply-templates/></li>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="img">
|
||||
<div><img src="{@src}" alt="image"/></div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="pre">
|
||||
<pre><xsl:apply-templates/></pre>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="figure">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@pos">
|
||||
<div class="{@pos}"><img src="{@ref}" alt="{.}"/><br/><xsl:value-of select="."/></div>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<div><img src="{@ref}" alt="{.}"/><br/><xsl:value-of select="."/></div>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="sub">
|
||||
<sub><xsl:apply-templates/></sub>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="sup">
|
||||
<sup><xsl:apply-templates/></sup>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="lt"><</xsl:template>
|
||||
<xsl:template match="gt">></xsl:template>
|
||||
<xsl:template match="ne">≠</xsl:template>
|
||||
<xsl:template match="le">≤</xsl:template>
|
||||
<xsl:template match="ge">≥</xsl:template>
|
||||
<xsl:template match="times">×</xsl:template>
|
||||
<xsl:template match="dot">⋅</xsl:template>
|
||||
<xsl:template match="divide">÷</xsl:template>
|
||||
<xsl:template match="sigma">σ</xsl:template>
|
||||
|
||||
<xsl:template match="summation">
|
||||
<span class="summation">
|
||||
<span class="summation-upper"><xsl:value-of select="@upper"/></span>
|
||||
<span class="summation-symbol">∑</span>
|
||||
<span class="summation-lower"><xsl:value-of select="@lower"/></span>
|
||||
</span>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="bracelist">
|
||||
<span class="bracelist-symbol">{</span>
|
||||
<span class="bracelist">
|
||||
<xsl:for-each select="item">
|
||||
<span class="bracelist-item"><xsl:apply-templates/></span>
|
||||
</xsl:for-each>
|
||||
</span>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="footlink">
|
||||
<xsl:variable name="docID" select="/document/@id"/>
|
||||
<a class="footlink" id="fn{$docID}_ref{@n}" href="#fn{$docID}_{@n}"><sup><xsl:if test="@quoted"><xsl:text>[</xsl:text></xsl:if><xsl:value-of select="@n"/><xsl:if test="@quoted"><xsl:text>]</xsl:text></xsl:if></sup></a>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="footnote">
|
||||
<xsl:variable name="docID" select="/document/@id"/>
|
||||
<div class="footnote"><a id="fn{$docID}_{@n}" href="#fn{$docID}_ref{@n}"><sup><xsl:value-of select="@n"/></sup></a><xsl:text> </xsl:text>
|
||||
<xsl:apply-templates/>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="authors">
|
||||
<xsl:for-each select="author"><xsl:if test="position() != 1"><xsl:text>, </xsl:text></xsl:if><xsl:if test="position() != 1 and position() = last()"><xsl:text>and </xsl:text></xsl:if><xsl:value-of select="."/></xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="formatDate">
|
||||
<xsl:param name="date"/>
|
||||
<xsl:param name="format">MDY</xsl:param>
|
||||
<xsl:variable name="year">
|
||||
<xsl:value-of select="substring-before($date,'-')"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="mon-day">
|
||||
<xsl:value-of select="substring-after($date,'-')"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="mon">
|
||||
<xsl:value-of select="substring-before($mon-day,'-')"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="full-day">
|
||||
<xsl:value-of select="substring-after($mon-day,'-')"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="day">
|
||||
<xsl:choose>
|
||||
<xsl:when test="substring($full-day,1,1) = '0'"><xsl:value-of select="substring($full-day,2)"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="$full-day"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$mon = '01'">January </xsl:when>
|
||||
<xsl:when test="$mon = '02'">February </xsl:when>
|
||||
<xsl:when test="$mon = '03'">March </xsl:when>
|
||||
<xsl:when test="$mon = '04'">April </xsl:when>
|
||||
<xsl:when test="$mon = '05'">May </xsl:when>
|
||||
<xsl:when test="$mon = '06'">June </xsl:when>
|
||||
<xsl:when test="$mon = '07'">July </xsl:when>
|
||||
<xsl:when test="$mon = '08'">August </xsl:when>
|
||||
<xsl:when test="$mon = '09'">September </xsl:when>
|
||||
<xsl:when test="$mon = '10'">October </xsl:when>
|
||||
<xsl:when test="$mon = '11'">November </xsl:when>
|
||||
<xsl:when test="$mon = '12'">December </xsl:when>
|
||||
<xsl:when test="$mon = '00'"/> </xsl:choose>
|
||||
<xsl:if test="$day != '0' and $format = 'MDY'">
|
||||
<xsl:value-of select="$day"/><xsl:text>, </xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="$year"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="gallery">
|
||||
<h2><xsl:value-of select="description"/></h2>
|
||||
<div class="gallery">
|
||||
<xsl:apply-templates select="item" mode="gallery"/>
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="gallery">
|
||||
<div class="galleryitem">
|
||||
<a href="{@ref}"><img src="/versions/images/current/pdf-192.jpg" alt="{.}"/></a><br/>
|
||||
<div style="font-size:small; text-align:center;"><xsl:value-of select="."/></div>
|
||||
</div>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="list[@type = 'timeline']">
|
||||
<xsl:if test="not(description)">
|
||||
<h2>Timeline</h2>
|
||||
</xsl:if>
|
||||
<xsl:if test="description">
|
||||
<h2><xsl:value-of select="description"/></h2>
|
||||
</xsl:if>
|
||||
<blockquote>
|
||||
<xsl:apply-templates select="item" mode="timeline"/>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="timeline">
|
||||
<xsl:if test="@ref">
|
||||
<xsl:variable name="documentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
|
||||
<xsl:apply-templates select="document($documentFile)/document" mode="withDate">
|
||||
<xsl:with-param name="itemRef" select="@ref"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(@ref)">
|
||||
<h3><xsl:call-template name="formatDate"><xsl:with-param name="date" select="@date"/></xsl:call-template></h3>
|
||||
<blockquote>
|
||||
<xsl:value-of select="."/>
|
||||
</blockquote>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="list[@type = 'people']">
|
||||
<xsl:if test="not(description)">
|
||||
<h2>People</h2>
|
||||
</xsl:if>
|
||||
<xsl:if test="description">
|
||||
<h2><xsl:value-of select="description"/></h2>
|
||||
</xsl:if>
|
||||
<blockquote>
|
||||
<xsl:apply-templates select="item" mode="people"/>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="people">
|
||||
<h3><xsl:value-of select="name"/></h3>
|
||||
<xsl:apply-templates select="list"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="list[@type = 'documents']">
|
||||
<xsl:if test="description"><h2><xsl:value-of select="description"/></h2></xsl:if>
|
||||
<ul>
|
||||
<xsl:apply-templates select="item" mode="document"/>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="document">
|
||||
<xsl:variable name="documentFile"><xsl:value-of select="$rootDir"/><xsl:value-of select="@ref"/></xsl:variable>
|
||||
<xsl:apply-templates select="document($documentFile)/document">
|
||||
<xsl:with-param name="itemRef" select="@ref"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="document">
|
||||
<xsl:param name="itemRef"/>
|
||||
<li>
|
||||
<xsl:call-template name="documentSummary"><xsl:with-param name="itemRef" select="$itemRef"/></xsl:call-template>
|
||||
</li>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="document" mode="withDate">
|
||||
<xsl:param name="itemRef"/>
|
||||
<h3><xsl:call-template name="formatDate"><xsl:with-param name="date" select="date"/><xsl:with-param name="format" select="MY"/></xsl:call-template></h3>
|
||||
<blockquote>
|
||||
<p>
|
||||
<xsl:call-template name="documentSummary"><xsl:with-param name="itemRef" select="$itemRef"/><xsl:with-param name="multiLine" select="'true'"/></xsl:call-template>
|
||||
</p>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="documentSummary">
|
||||
<xsl:param name="itemRef"/>
|
||||
<xsl:param name="multiLine">false</xsl:param>
|
||||
<xsl:choose>
|
||||
<xsl:when test="content|include">
|
||||
<a href="{$itemRef}"><xsl:value-of select="title"/></a>
|
||||
<xsl:if test="@ref">
|
||||
<span class="small">
|
||||
<xsl:text> [</xsl:text><a href="{@ref}">Original</a><xsl:text>]</xsl:text>
|
||||
</span>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<a href="{$itemRef}"><xsl:value-of select="title"/></a>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:if test="copy">
|
||||
<span class="small">
|
||||
<xsl:text> [</xsl:text><a href="{copy/@ref}"><xsl:value-of select="copy"/></a><xsl:text>]</xsl:text>
|
||||
</span>
|
||||
</xsl:if>
|
||||
<xsl:if test="author"><xsl:if test="$multiLine = 'true'"><br/></xsl:if><span class="medium"><xsl:text> by </xsl:text><xsl:call-template name="authors"/></span></xsl:if>
|
||||
<xsl:if test="source">
|
||||
<span class="small">
|
||||
<br/>
|
||||
<xsl:text>[Source: </xsl:text>
|
||||
<xsl:if test="site">
|
||||
<a href="{site/@url}"><xsl:value-of select="site"/></a>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(site)">
|
||||
<a href="{source/@url}"><xsl:value-of select="source"/></a>
|
||||
</xsl:if>
|
||||
<xsl:text>]</xsl:text>
|
||||
</span>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="list[@type = 'resources']">
|
||||
<xsl:if test="not(description)">
|
||||
<h2>Resources</h2>
|
||||
</xsl:if>
|
||||
<xsl:if test="description">
|
||||
<h2><xsl:value-of select="description"/></h2>
|
||||
</xsl:if>
|
||||
<blockquote>
|
||||
<xsl:apply-templates select="item" mode="resources"/>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="resources">
|
||||
<h3><xsl:value-of select="description"/></h3>
|
||||
<xsl:apply-templates select="list"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="list[@type = 'links']">
|
||||
<xsl:if test="description">
|
||||
<h4><xsl:value-of select="description"/></h4>
|
||||
</xsl:if>
|
||||
<ul>
|
||||
<xsl:apply-templates select="item" mode="links"/>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="links">
|
||||
<li><a href="{@ref}"><xsl:value-of select="."/></a></li>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="list[not(@type)]">
|
||||
<xsl:if test="description">
|
||||
<h2><xsl:value-of select="description"/></h2>
|
||||
</xsl:if>
|
||||
<blockquote>
|
||||
<xsl:apply-templates select="item|tag" mode="outer"/>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="outer">
|
||||
<xsl:if test="description">
|
||||
<h3><xsl:value-of select="description"/></h3>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="list|item|tag" mode="inner"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="list" mode="inner">
|
||||
<xsl:if test="description">
|
||||
<h4><xsl:value-of select="description"/></h4>
|
||||
</xsl:if>
|
||||
<ul>
|
||||
<xsl:apply-templates select="list|item|para|tag" mode="inner"/>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="innerlist">
|
||||
<xsl:if test="description">
|
||||
<xsl:value-of select="description"/>
|
||||
</xsl:if>
|
||||
<ul>
|
||||
<xsl:apply-templates select="list|item|para|tag" mode="inner"/>
|
||||
</ul>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item" mode="inner">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@ref">
|
||||
<li><a href="{@ref}"><xsl:apply-templates/></a></li>
|
||||
</xsl:when>
|
||||
<xsl:when test="description">
|
||||
<li><xsl:call-template name="innerlist"/></li>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<li><xsl:apply-templates/></li>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="para" mode="inner">
|
||||
<li class="para"><xsl:apply-templates/></li>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="tag" mode="outer">
|
||||
<xsl:call-template name="tag"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="tag" mode="inner">
|
||||
<xsl:call-template name="tag"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="tag">
|
||||
<blockquote class="tag">
|
||||
<xsl:text><</xsl:text><xsl:if test="@href"><a href="{@href}"><xsl:value-of select="@name"/></a></xsl:if><xsl:if test="not(@href)"><xsl:value-of select="@name"/></xsl:if><xsl:for-each select="attr"><xsl:text> </xsl:text><xsl:value-of select="@name"/><xsl:text>="</xsl:text><xsl:value-of select="@value"/><xsl:text>"</xsl:text></xsl:for-each>
|
||||
<xsl:choose>
|
||||
<xsl:when test="tag"><xsl:text>></xsl:text><xsl:apply-templates mode="inner"/><xsl:text></</xsl:text><xsl:value-of select="@name"/><xsl:text>></xsl:text></xsl:when>
|
||||
<xsl:when test="normalize-space(.) != ''"><xsl:text>></xsl:text><xsl:value-of select="."/><xsl:text></</xsl:text><xsl:value-of select="@name"/><xsl:text>></xsl:text></xsl:when>
|
||||
<xsl:otherwise><xsl:text>/></xsl:text></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</blockquote>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
49
versions/pdp11/1.30.0/machine.xsl
Normal file
49
versions/pdp11/1.30.0/machine.xsl
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY nbsp " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat" method="html"/>
|
||||
|
||||
<xsl:include href="/versions/pdp11/1.30.0/common.xsl"/>
|
||||
<xsl:include href="/versions/pdp11/1.30.0/components.xsl"/>
|
||||
|
||||
<xsl:template match="/machine">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><xsl:value-of select="$SITEHOST"/></title>
|
||||
<xsl:call-template name="commonStyles"/>
|
||||
<xsl:call-template name="componentStyles"/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="common">
|
||||
<xsl:call-template name="commonTop"/>
|
||||
<div class="common-middle">
|
||||
<p></p>
|
||||
<div id="{@id}" class="machine {@class}js">
|
||||
<xsl:call-template name="component">
|
||||
<xsl:with-param name="machine" select="@id"/>
|
||||
<xsl:with-param name="component" select="'machine'"/>
|
||||
<xsl:with-param name="class"><xsl:value-of select="@class"/>js</xsl:with-param>
|
||||
<xsl:with-param name="parms"><xsl:if test="@parms">,<xsl:value-of select="@parms"/></xsl:if></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="commonBottom"/>
|
||||
</div>
|
||||
<xsl:call-template name="componentScripts">
|
||||
<xsl:with-param name="component">
|
||||
<xsl:choose>
|
||||
<xsl:when test="debugger"><xsl:value-of select="@class"/>-dbg</xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="@class"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
247
versions/pdp11/1.30.0/manifest.xsl
Normal file
247
versions/pdp11/1.30.0/manifest.xsl
Normal file
|
|
@ -0,0 +1,247 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2014-04-10" modified="2014-04-10" license="http://www.gnu.org/licenses/gpl.html" -->
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY nbsp " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat" method="html"/>
|
||||
|
||||
<xsl:include href="/versions/pdp11/1.30.0/common.xsl"/>
|
||||
<xsl:include href="/versions/pdp11/1.30.0/components.xsl"/>
|
||||
|
||||
<xsl:template match="/manifest[@type = 'document']">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><xsl:value-of select="$SITEHOST"/></title>
|
||||
<xsl:call-template name="commonStyles"/>
|
||||
<xsl:call-template name="componentStyles"/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="common">
|
||||
<xsl:call-template name="commonTop"/>
|
||||
<div class="common-middle">
|
||||
<h4>Document Manifest</h4>
|
||||
<div class="common-sidebar">
|
||||
<ul class="common-list-data">
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Title'"/>
|
||||
<xsl:with-param name="node" select="title"/>
|
||||
<xsl:with-param name="default">None</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Version'"/>
|
||||
<xsl:with-param name="node" select="version"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Source'"/>
|
||||
<xsl:with-param name="node" select="source"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Documents'"/>
|
||||
<xsl:with-param name="node" select="document"/>
|
||||
<xsl:with-param name="default"><xsl:value-of select="title"/> <xsl:if test="version != ''"><xsl:text> </xsl:text><xsl:value-of select="version"/></xsl:if></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="common-main">
|
||||
<p><xsl:value-of select="desc"/></p>
|
||||
<xsl:call-template name="commonBottom"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/manifest[@type = 'software' or not(@type)]">
|
||||
<xsl:variable name="machineClass">
|
||||
<xsl:choose>
|
||||
<xsl:when test="machine/@class"><xsl:value-of select="machine/@class"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="$APPCLASS"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><xsl:value-of select="$SITEHOST"/></title>
|
||||
<xsl:call-template name="commonStyles"/>
|
||||
<xsl:call-template name="componentStyles"/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="common">
|
||||
<xsl:call-template name="commonTop"/>
|
||||
<div class="common-middle">
|
||||
<h4>Software Manifest</h4>
|
||||
<div class="common-sidebar">
|
||||
<ul class="common-list-data">
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Title'"/>
|
||||
<xsl:with-param name="node" select="title"/>
|
||||
<xsl:with-param name="default">None</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Version'"/>
|
||||
<xsl:with-param name="node" select="version"/>
|
||||
<xsl:with-param name="default">Unknown</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Type'"/>
|
||||
<xsl:with-param name="node" select="type"/>
|
||||
<xsl:with-param name="default">None</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Category'"/>
|
||||
<xsl:with-param name="node" select="category"/>
|
||||
<xsl:with-param name="default">None</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Created'"/>
|
||||
<xsl:with-param name="node" select="creationDate"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Creators'"/>
|
||||
<xsl:with-param name="node" select="creator"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label"><xsl:if test="creationDate">Updated</xsl:if><xsl:if test="not(creationDate)">Released</xsl:if></xsl:with-param>
|
||||
<xsl:with-param name="node" select="releaseDate"/>
|
||||
<xsl:with-param name="default">Unknown</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Company'"/>
|
||||
<xsl:with-param name="node" select="company"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Authors'"/>
|
||||
<xsl:with-param name="node" select="author"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Contributors'"/>
|
||||
<xsl:with-param name="node" select="contributor"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Publisher'"/>
|
||||
<xsl:with-param name="node" select="publisher"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'License'"/>
|
||||
<xsl:with-param name="node" select="license"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Source'"/>
|
||||
<xsl:with-param name="node" select="source"/>
|
||||
<xsl:with-param name="default" select="''"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="listItem">
|
||||
<xsl:with-param name="label" select="'Disks'"/>
|
||||
<xsl:with-param name="node" select="disk"/>
|
||||
<xsl:with-param name="default"><xsl:value-of select="title"/> <xsl:if test="version != ''"><xsl:text> </xsl:text><xsl:value-of select="version"/></xsl:if></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="common-main">
|
||||
<xsl:for-each select="machine[not(@type) or @type = 'default']">
|
||||
<xsl:call-template name="machine">
|
||||
<xsl:with-param name="href" select="@href"/>
|
||||
<xsl:with-param name="state" select="@state"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
<xsl:if test="not(machine[not(@type) or @type = 'default'])">
|
||||
<p>No default machine specified for '<xsl:value-of select="title"/>' in manifest.xml</p>
|
||||
</xsl:if>
|
||||
<xsl:call-template name="commonBottom"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="componentScripts">
|
||||
<xsl:with-param name="component">
|
||||
<xsl:choose>
|
||||
<xsl:when test="machine/@debugger"><xsl:value-of select="$machineClass"/>-dbg</xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="$machineClass"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="listItem">
|
||||
<xsl:param name="label"/>
|
||||
<xsl:param name="node"/>
|
||||
<xsl:param name="default">Unknown</xsl:param>
|
||||
<xsl:if test="$node != '' or $default != ''">
|
||||
<li><xsl:value-of select="$label"/>
|
||||
<ul class="common-list-data-items">
|
||||
<xsl:for-each select="$node">
|
||||
<xsl:variable name="desc">
|
||||
<xsl:choose>
|
||||
<xsl:when test="desc"><xsl:value-of select="desc"/></xsl:when>
|
||||
<xsl:when test="org"><xsl:value-of select="org"/></xsl:when>
|
||||
<xsl:otherwise/>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<li title="{$desc}">
|
||||
<xsl:variable name="value">
|
||||
<xsl:choose>
|
||||
<xsl:when test="name">
|
||||
<xsl:value-of select="name"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="normalize-space(./text()) != ''">
|
||||
<xsl:value-of select="normalize-space(./text())"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$default"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="href">
|
||||
<xsl:if test="@href"><xsl:value-of select="@href"/></xsl:if>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$href != ''">
|
||||
<a href="{$href}"><xsl:value-of select="$value"/></a>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$value"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:if test="page">
|
||||
<ul class="common-list-data-subitems">
|
||||
<xsl:for-each select="page">
|
||||
<li>
|
||||
<xsl:if test="@href">
|
||||
<a href="{$href}{@href}"><xsl:value-of select="."/></a>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(@href)">
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:if>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
</ul>
|
||||
</xsl:if>
|
||||
</li>
|
||||
</xsl:for-each>
|
||||
<xsl:if test="not($node)">
|
||||
<xsl:if test="@href">
|
||||
<a href="{@href}"><xsl:value-of select="$default"/></a>
|
||||
</xsl:if>
|
||||
<xsl:if test="not(@href)">
|
||||
<xsl:value-of select="$default"/>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
</ul>
|
||||
</li>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
47
versions/pdp11/1.30.0/outline.xsl
Normal file
47
versions/pdp11/1.30.0/outline.xsl
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2014-02-23" license="http://www.gnu.org/licenses/gpl.html" -->
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY nbsp " "> <!ENTITY sect "§"> <!ENTITY copy "©"> <!ENTITY para "¶"> <!ENTITY ndash "–"> <!ENTITY mdash "—">
|
||||
<!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output doctype-system="about:legacy-compat" method="html"/>
|
||||
|
||||
<xsl:include href="/versions/pdp11/1.30.0/common.xsl"/>
|
||||
<xsl:include href="/versions/pdp11/1.30.0/document.xsl"/>
|
||||
<xsl:include href="/versions/pdp11/1.30.0/components.xsl"/>
|
||||
|
||||
<xsl:template match="/outline">
|
||||
<xsl:variable name="machineClass">
|
||||
<xsl:choose>
|
||||
<xsl:when test="machine/@class"><xsl:value-of select="machine/@class"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="$MACHINECLASS"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/></title>
|
||||
<xsl:call-template name="commonStyles"/>
|
||||
<xsl:call-template name="documentStyles"/>
|
||||
<xsl:call-template name="componentStyles"/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="common">
|
||||
<div class="page justified">
|
||||
<xsl:apply-templates/>
|
||||
</div>
|
||||
</div>
|
||||
<xsl:call-template name="componentScripts">
|
||||
<xsl:with-param name="component">
|
||||
<xsl:choose>
|
||||
<xsl:when test="debugger"><xsl:value-of select="$machineClass"/>-dbg</xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="$machineClass"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
170
versions/pdp11/1.30.0/pdp11-dbg.js
Normal file
170
versions/pdp11/1.30.0/pdp11-dbg.js
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
(function(){var m;function da(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
|
||||
function q(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function ea(a){return"0x"+q(a,4)}function fa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ja(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+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,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}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){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
|
||||
function xa(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(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),d&&d(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,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function la(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function r(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.confirm(a));return b}var za=null;function Fa(){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(c){}return b}
|
||||
function Ha(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}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,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function Ka(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};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 c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();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(c){r(""+("An unexpected exception occurred:\n\n"+c.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 t(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.lb=b.comment;this.Gb=b;b=this.id.indexOf(".");0>b?this.Ya=this.id:(this.mb=this.id.substr(0,b),this.Ya=this.id.substr(b+1));this[a]=c;this.A={ready:!1,Ea:!1,Wa:!1,X:!1,error:!1};this.Va=null;this.A.error=!1;this.K={};this.F=null;this.Y=d||0;u.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 c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function v(a,b){b||(b=t);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={}),u=window.PCjs.Components||(window.PCjs.Components=[])}else $a={},u=[];function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function cb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function w(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
|
||||
function mb(a,b){for(var c=y(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var e=c[d].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=w(h))&&g.binding&&a.ha(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function y(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
|
||||
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ha:function(a,b,c){switch(b){case "clear":return this.K[b]||(this.K[b]=c,c.onclick=function(a){return function(){a.K.print&&(a.K.print.value="")}}(this)),!0;case "print":return this.K[b]||(this.ya=this.K[b]=c,c.value="",this.u=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.ea=function(a){this.u(a,this.Ya)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.Ya+": "+a)},ea:function(a,b,c){c=c||this.type;b||r((c?c+": ":"")+a)},sa:function(){return this.A.X=!0},ra:function(a,b){b&&(this.A.X=!1);return!0}};function nb(a,b){if(a.F){a===a.F?b|=0:b=b||a.Y;var c=a.F.Y&b;return!!b&&c===b||!!(c&a.F.Ab)}return!1}
|
||||
function ob(a,b){if(a.A.Wa)return a.A.Ea&&(a.A.Ea=!1),a.A.Wa=!1;if(a.A.error)return a.u(a.toString()+" error"),!1;a.A.Ea=b;return a.A.Ea}function pb(a,b){a.A.Ea&&(b?a.A.Wa=!0:void 0===b&&a.u(a.toString()+" busy"));return a.A.Ea}function A(a){if(!a.A.error&&(a.A.ready=!0,a.A.ready)){var b=a.Va;a.Va=null;b&&b()}}function qb(a,b){b&&(a.A.ready?b():a.Va=b);return a.A.ready}function rb(a,b){a.A.error=!0;a.ea(b)}
|
||||
var sb="undefined"!==typeof ArrayBuffer,C={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 tb(a){t.call(this,"Panel",a,tb)}v(tb);m=tb.prototype;m.ha=function(a,b,c,d){return this.D&&this.D.ha(a,b,c,d)||this.b&&this.b.ha(a,b,c,d)||this.F&&this.F.ha(a,b,c,d)?!0:this.parent.ha.call(this,a,b,c,d)};m.za=function(a,b,c,d){this.D=a;this.H=b;this.b=c;this.F=d};
|
||||
m.sa=function(a,b){b||ub();return!0};m.ra=function(){return!0};m.ia=function(){};function ub(){for(var a=!1,b=y(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],e=w(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new tb(e));mb(f,d);a&&A(f)}}Qa(ub);
|
||||
function vb(a,b,c){t.call(this,"Bus",a,vb);this.b=b;this.F=c;this.w=a.busWidth||16;this.D=Math.pow(2,this.w);this.j=this.D-1|0;this.aa=16>=this.w?10:20>=this.w?12:24>=this.w?14:15;this.la=1<<this.aa;this.C=this.la>>2;this.i=this.la-1;this.H=this.D/this.la|0;this.G=this.H-1;a=new D;wb(a,this.F);this.P=Array(this.H);for(b=0;b<this.H;b++)this.P[b]=a;A(this)}v(vb);vb.prototype.reset=function(){};vb.prototype.sa=function(a,b){b||this.reset();return!0};
|
||||
function xb(a,b,c,d){for(var e=b,f=c,h=e>>>a.aa;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==d){if(e+f<=g.B)return g.Ta+=g.B-e,g.B=e,!0;if(e>=g.B+g.Ta){l=g.size-(e-k);l>f&&(l=f);g.Ta=e-g.B+l;e=k+a.la;f-=l;h++;continue}}return yb(1,e,f)}e=new D(e,l,a.la,d);wb(e,a.F,g);a.P[h++]=e;e=k+a.la;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+zb[d]+" at "+ea(b)),!0):yb(2,b,c)}function Ab(a,b){return a.P[(b&a.j)>>>a.aa].Ra(b&a.i,b)}
|
||||
function yb(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Bb;if(sb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Bb=256===(new Uint16Array(Nb))[0]}else Bb=!1;var Ob=Bb;
|
||||
function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.B=a;this.Ta=b;this.size=c||0;this.type=d||Qb;this.C=d==Rb;wb(this);this.va=this.Cb=!1;if(c)if(sb)this.K=new ArrayBuffer(c),this.D=new DataView(this.K,0,c),this.i=new Uint8Array(this.K,0,c),this.L=new Uint16Array(this.K,0,c>>1),this.b=new Int32Array(this.K,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Sb(this,Vb)}else Sb(this)}var Qb=0,Rb=2,zb=["NONE","RAM","ROM","VID","H/W"],Pb=0;
|
||||
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(sb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.D.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(sb)for(b=0;b<a.length;b++)this.D.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},xa:function(a,b){b?0===this.w++&&Wb(this,Xb,!1):0===this.j++&&Yb(this,Xb,!1)},M:function(){this.F&&nb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.B),!0);
|
||||
return 255},H:function(a,b){this.F&&nb(this.F,129)&&this.F.message("attempt to write "+ea(b)+" to invalid block %"+q(this.B),!0)},V:function(a,b){return this.G(a++,b++)|this.G(a,b)<<8},oa:function(a,b,c){this.J(a++,b&255,c++);this.J(a,b>>8,c)},S:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},$:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},ga:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.va=!0},na:function(a,b){var c=
|
||||
a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.va=!0},O:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,1,c.O)&&c.ba(!0)}return this.Ra(a,b)},U:function(a,b){if(this.F&&null!=this.B){var c=this.F;Zb(c,this.B+a,2,c.O)&&c.ba(!0)}return this.ub(a,b)},da:function(a,b,c){if(this.F&&null!=this.B){var d=this.F;Zb(d,this.B+a,1,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.Ja(a,b,c)},ka:function(a,b,c){if(this.F&&
|
||||
null!=this.B){var d=this.F;Zb(d,this.B+a,2,d.C)&&d.ba(!0)}this.C?this.H(a,b,c):this.xb(a,b,c)},N:function(a){return this.i[a]},R:function(a){return this.i[a]},T:function(a){return this.D.getUint16(a,!0)},W:function(a){return a&1?this.i[a]|this.i[a+1]<<8:this.L[a>>1]},ca:function(a,b){this.i[a]=b;this.va=!0},fa:function(a,b){this.i[a]=b;this.va=!0},ja:function(a,b){this.D.setUint16(a,b,!0);this.va=!0},pa:function(a,b){a&1?(this.i[a]=b,this.i[a+1]=b>>8):this.L[a>>1]=b;this.va=!0}};
|
||||
function wb(a,b,c){a.F=b;a.j=a.w=0;c&&((a.j=c.j)&&Yb(a,Xb,!1),(a.w=c.w)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.w&&(a.J=a.C?a.H:a.Ja):0===--a.j&&(a.G=a.Ra)}function Wb(a,b,c){c&&a.w||(a.J=!a.C&&b[2]||a.H);if(c||void 0===c)a.Ja=b[2]||a.H,a.xb=b[3]||a.oa}function Yb(a,b,c){c&&a.j||(a.G=b[0]||a.M);if(c||void 0===c)a.Ra=b[0]||a.M,a.ub=b[1]||a.V}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
|
||||
var ac=[],Vb=[D.prototype.S,D.prototype.$,D.prototype.ga,D.prototype.na],Xb=[D.prototype.O,D.prototype.U,D.prototype.da,D.prototype.ka];if(sb)var Ub=[D.prototype.N,D.prototype.T,D.prototype.ca,D.prototype.ja],Tb=[D.prototype.R,D.prototype.W,D.prototype.fa,D.prototype.pa];
|
||||
function bc(a,b){t.call(this,"CPU",a,bc,1);var c=a.multiplier||1;this.$a=a.cycles||b;this.Ba=c;this.La=Math.round(this.$a/1E4)/100;this.Aa=this.La*this.Ba;this.A.Z=!1;this.A.cb=!1;this.A.Ka=a.autoStart;this.A.hb=!1;this.A.Fa=!1;this.Oa=this.ca=0;this.Pa=a.csStart;this.Ga=a.csInterval;this.Ha=a.csStop;this.oa=[];this.Fb=this.Ca.bind(this);A(this)}v(bc);var cc=["power","reset"];m=bc.prototype;
|
||||
m.za=function(a,b,c,d){this.D=a;this.H=b;this.F=d;for(b=0;b<cc.length;b++)(c=this.K[cc[b]])&&this.D.ha(null,cc[b],c);this.ja=null;a=dc(a,"autoStart");null!=a&&(this.A.Ka="true"==a?!0:"false"==a?!1:!!a);A(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){ec(this);if(!this.restore(a))return!1;fc(this)}else this.reset();if(this.F){var c=this.F;c.u("Type ? for help with PDP11 Debugger commands");c.ia();if(c.ka){var d=c.ka;c.ka=null;gc(c,d)}}else this.u("No debugger detected")}F(this);return!0};m.ra=function(a){return a?this.save():!0};m.Ka=function(){return this.A.Ka||!this.F&&void 0===this.K.run?(this.Ca(!0),!0):!1};m.jb=function(){return 0};
|
||||
function fc(a){void 0===a.Pa&&(a.Pa=0);void 0===a.Ga&&(a.Ga=-1);void 0===a.Ha&&(a.Ha=-1);a.A.Fa=0<=a.Pa&&0<a.Ga;a.A.Fa&&(a.Oa=0,a.ca=a.Pa-a.V)}function hc(a,b){if(a.A.Fa){var c=!1;a.Oa=a.Oa+a.jb()|0;a.ca-=b;0>=a.ca&&(a.ca+=a.Ga,c=!0);0<=a.Ha&&a.Ha<=ic(a)&&(a.Ga=a.Ha=-1,fc(a),a.ba(),c=!0);c&&a.u(ic(a)+" cycles: checksum="+q(a.Oa))}}
|
||||
function jc(a,b,c,d){a.K[b]&&(void 0===c&&(rb(a,"Value for "+b+" is invalid"),a.ba()),c=!a.A.Z||a.A.hb?q(c,d):"--------".substr(0,d),a.K[b].textContent!=c&&(a.K[b].textContent=c))}
|
||||
m.ha=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.K[b]=c;a=!0;break;case "run":this.K[b]=c;c.onclick=function(){var a;if(a=d.D)if(a=d.D,a.A.X)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.X);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.A.ready?"powered yet":"ready yet"+(b.Va?" (waiting for notification)":""))+".");a=!1}a&&(d.A.Z?d.ba():d.Ca())};a=!0;
|
||||
break;case "speed":this.K[b]=c;a=!0;break;case "setSpeed":this.K[b]=c,c.onclick=function(){kc(d,d.Ba<<1,!0)},c.textContent=this.Aa.toFixed(2)+"Mhz",a=!0}return a};function lc(a,b,c){a.V+=b;c&&(a.U=a.R=0)}function mc(a,b){var c=1;b&&1<a.Ba&&a.S&&(c=a.S/a.La);a.rb=Math.round(1E3/30);a.wa=Math.floor(a.$a/30*c);b||(a.da=a.wa);a.ab=0}function ic(a){return a.V+a.O+a.U-a.R}function ec(a){a.S=0;a.sb=0;a.V=a.O=a.U=a.R=0;fc(a);kc(a,1)}
|
||||
function kc(a,b,c){var d=!1;if(void 0!==b){.8>a.S/a.Aa?b=1:d=!0;a.Ba=b;b=a.La*a.Ba;if(a.Aa!=b){a.Aa=b;b=a.Aa.toFixed(2)+"Mhz";var e=a.K.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.D&&a.D.Sa()}lc(a,a.O);a.O=0;a.N=ua();a.T=0;mc(a);return d}function zc(a){a.U-=a.R;a.R=0}
|
||||
m.Ca=function(a){if(ob(this,!0)){if(!this.A.Z){kc(this);this.D&&this.D.start(this.N,ic(this));this.A.Z=!0;this.A.cb=!0;this.ja&&this.ja.start();var b=this.K.run;b&&(b.textContent="Halt");this.D&&(this.D.ia(!0),a&&this.D.Sa(!0))}this.ab>=this.$a&&mc(this,!0);this.ka=0;this.na=ua();this.T&&(a=this.na-this.T,a>this.rb&&(this.N+=a,this.N>this.na&&(this.N=this.na)));try{do{for(var c=this.A.Fa?1:this.wa,d=this.oa.length-1;0<=d;d--){var e=this.oa[d];0>e[0]||c>e[0]&&(c=e[0])}this.Ia(c);var f=this.U-this.R;
|
||||
a=f;for(var h=this.oa.length-1;0<=h;h--){var g=this.oa[h];0>g[0]||(g[0]-=a,0>=g[0]&&(g[0]=-1,g[1]()))}this.ka+=f;this.O+=f;lc(this,0,!0);hc(this,f);this.da-=f;if(0>=this.da){this.da+=this.wa;15<=++this.sb&&(this.D&&this.D.ia(),this.sb=0);break}}while(this.A.Z)}catch(k){this.ba();F(this);this.D&&this.D.stop(ua(),ic(this));ob(this,!1);rb(this,k.stack||k.message);return}c=setTimeout;d=this.Fb;this.T=ua();e=this.rb;this.ka&&(e=Math.round(e*this.ka/this.wa));e=e-(this.T-this.na);if(f=this.T-this.N)this.S=
|
||||
Math.round(this.O/(10*f))/100,864E5<=f&&(this.V=0,kc(this));if(0>e||this.S<this.Aa)-1E3>e&&(this.N-=e),e=0;this.ab+=this.ka;this.T+=e;c(d,e)}else F(this),this.D&&this.D.stop(ua(),ic(this))};m.Ia=function(){return 0};m.ba=function(a){pb(this,!0);zc(this);lc(this,this.O);this.O=0;if(this.A.Z){this.A.Z=!1;this.ja&&this.ja.stop();var b=this.K.run;b&&(b.textContent="Run")}this.A.complete=a};function F(a,b){a.D&&a.D.ia(b)}
|
||||
function Ac(a){this.ob=+a.model||1170;bc.call(this,a,1E6);this.kb=0;this.w=65536;this.i=this.b=32768;this.j=65535;this.I=15;this.g=[0,0,0,0,0,0,0,0];this.wb=[0,0,0,0,0,0];this.fa=[0,0,0,0];this.memory=[];this.J=[];this.bb=this.tb=0;this.W=2;this.$=255;this.G=0;this.ga=-1;this.qb=this.Ma=this.pb=this.C=this.Da=this.M=this.L=0;this.pa=[7,7,7,7];this.Na=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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.Bb=!1}v(Ac,bc);m=Ac.prototype;m.reset=function(){this.A.Z&&this.ba();Bc(this);ec(this);this.A.error=!1;this.parent.reset.call(this)};
|
||||
function Bc(a){a.$=255;a.J=[];a.tb=0;a.L=a.M=a.Da=a.pb=0;a.pa[0]=a.pa[1]=a.pa[3]=7;a.Ma=0}m.jb=function(){return 0};m.save=function(){var a=new G(this);H(a,0,[]);H(a,1,[this.nb,this.V,this.Ba]);for(var b=this.H,c=0,d=[],e=0;e<b.H;e++){var f=b.P[e];if(f.va||f.Cb){d[c++]=e;var h=c++;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}}d[h]=f}}H(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.nb=b[0];this.V=b[1];kc(this,b[3]);a:{b=this.H;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.C){for(var f=0,h=Array(b.C),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.P[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.ha=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.K[b]=c;this.kb++;d=!0;break;default:d=this.parent.ha.call(this,a,b,c)}return d};m.ia=function(a){this.kb&&(a||!this.A.Z||this.A.hb)&&(a=this.I&-14|0|(this.ta&255?0:4)|(this.ta&256?1:0),jc(this,"PSW",a,4),jc(this,"SF",a&8?1:0,1),jc(this,"ZF",a&4?1:0,1),jc(this,"CF",a&1?1:0,1));if(a=this.K.speed)a.textContent=this.A.Z&&this.S?this.S.toFixed(2)+"Mhz":"Stopped"};
|
||||
function Cc(a,b){var c,d;a.b=b<<12;a.j=~b&4;a.i=b<<14;a.w=b<<16;if((b^a.I)&2048)for(c=0;6>c;c++)d=a.g[c],a.g[c]=a.wb[c],a.wb[c]=d;(a.C=b>>14&3)!==(a.I>>14&3)&&(a.fa[d]=a.g[6],a.g[6]=a.fa[a.C]);a.W=2;a.I=b}
|
||||
function I(a,b){var c,d,e=0;0>a.ga?(a.I=a.I&63728|a.b>>12&8|a.i>>14&2|a.w>>16&1,a.j&65535||(a.I|=4),a.ga=a.I):a.C||(b=4,e=1);a.L&57344||(a.M=63222);a.C=0;0<=(c=L(a,b|65536))&&0<=(d=L(a,b+2&65535|65536))&&(Cc(a,d&53247|a.ga>>2&12288),e&&(a.g[6]=4),0<=Dc(a,a.ga)&&0<=Dc(a,a.g[7])&&(a.g[7]=c));a.G=0;return a.ga=-1}
|
||||
function Ec(a,b,c){var d,e,f,h=0;if(c&a.pb){d=b>>13&a.pa[a.C];e=a.Na[a.C][d];f=(a.Na[a.C][d+16]<<6)+(b&8191)&4194303;if(a.Da&16){if(3932160<=f&&4186112>f){f=f&262143;var g=f>>13&31;31>g?a.Da&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&&!(c&1)))return I(a,4);switch(e&7){case 1:h=4096;case 2:e|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:e|=c&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.Na[a.C][d]=e;if(4194170!==f||a.C)a.Ma=a.C,a.qb=d;if(h){if(h&57344)return 0<=a.ga&&(h|=128),a.L&57344||(a.L=a.L|h|a.Ma<<5|a.qb<<1),I(a,168);a.L&61440||!(4191360>f||4194239<f)||(a.L|=4096,a.L&512&&(a.G|=2))}}else if(f=b&65535,57344<=f)f|=4186112;else if(f&1&&!(c&1))return I(a,4);return f}function M(a,b){return 4194304<=b?a.g[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.g[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.g[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function R(a,b,c){c&=255;return 4194304<=b?a.g[b-4194304]=a.g[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function L(a,b){return M(a,Ec(a,b,2))}
|
||||
function Fc(a){var b=L(a,a.g[6]|65536);0<=b&&(a.g[6]=a.g[6]+2&65535);return b}function Dc(a,b){var c,d;a.g[6]=d=a.g[6]-2&65535;a.L&57344||(a.M=a.M<<8|246);if(!a.C&&d<=a.$&&4<d){if(d<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return 0<=(c=Ec(a,d|65536,4))?N(a,c,b):c}
|
||||
function Gc(a,b,c){var d,e,f=b&7;switch(b>>3&7){case 0:return I(a,4);case 1:if(6===f&&!a.C&&c&4&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32||65534<=a.g[6])return a.g[6]=4,I(a,4);a.G|=4}return 7===f?a.g[f]:a.g[f]|65536;case 2:e=2;d=a.g[f];7!==f&&(d|=65536,6>f&&c&1&&(e=1));break;case 3:e=2;d=a.g[f];7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;d|=65536;break;case 4:e=-2;6>f&&c&1&&(e=-1);d=a.g[f]+e&65535;7!==f&&(d|=65536);break;case 5:e=-2;d=a.g[f]-2&65535;7!==f&&(d|=65536);if(0>(d=L(a,d)))return d;
|
||||
d|=65536;break;case 6:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return d|65536;case 7:if(0>(d=L(a,a.g[7])))return d;a.g[7]=a.g[7]+2&65535;d=d+a.g[f]&65535;return 0>(d=L(a,d|65536))?d:d|65536}a.g[f]=a.g[f]+e&65535;a.L&57344||(a.M=a.M<<8|e<<3&248|f);if(6===f&&!a.C&&c&4&&0>=e&&(a.g[6]<=a.$||65534<=a.g[6])){if(a.g[6]<=a.$-32)return a.g[6]=4,I(a,4);a.G|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=Gc(a,b,c))&&(d=Ec(a,d,c)),d):4194304+(b&7)}
|
||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.g[b&7];return c}function Hc(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.g[b&7]&255;return c}function U(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Ia=function(a){this.A.complete=!0;var b=this.A.Bb=this.F&&Ic(this.F),c=a?this.A.cb?0:1:-1;this.A.cb=!1;this.U=this.R=a;this.nb&256?(zc(this),a=!1):a=!0;if(a){do{if(b){if(Jc(this.F,this.g[7],c)){this.ba();break}c=1}var d,e,f,h,g;if(this.W)if(1===this.W)this.W=2;else{this.W=0;g=-1;d=this.tb&224;if(0<(a=this.J.length))for(;0<a--;){if(0<this.J[a].Za){this.J[a].Za--;this.W=2;break}if(this.J[a].gb){if(!this.J[a].gb()){this.J.splice(a,1);g--;continue}this.J[a].gb=null}this.J[a].Eb>d&&(d=this.J[a].Eb,g=
|
||||
a)}d>(this.I&224)&&(0>g?I(this,160):(I(this,this.J[g].Jb),this.J.splice(g,1)))}this.L&57344||(this.M=0);this.G=this.I&16;if(0<=(a=L(this,this.g[7])))switch(this.g[7]=this.g[7]+2&65535,a&61440){case 4096:0<=(d=T(this,a>>6))&&(a&56?0<=(f=S(this,a,4))&&0<=N(this,f,d)&&(this.b=this.j=d,this.i=0):(this.b=this.j=this.g[a&7]=d,this.i=0));break;case 8192:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=this.w=a=d-e,this.i=(d^e)&(d^a));break;case 12288:0<=(d=T(this,a>>6))&&0<=(e=T(this,a))&&(this.b=this.j=
|
||||
d&e,this.i=0);break;case 16384:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&~d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]&=~d,this.i=0));break;case 20480:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e|d,0<=N(this,f,a)&&(this.b=this.j=a,this.i=0)):(this.b=this.j=a=this.g[a&7]|=d,this.i=0));break;case 24576:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=d+e,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^a)&(e^a))):(g=a&7,
|
||||
e=this.g[g],this.g[g]=(a=d+e)&65535,this.b=this.j=this.w=a,this.i=(d^a)&(e^a)));break;case 36864:0<=(d=Hc(this,a>>6))&&(a&56?0<=(f=S(this,a,5))&&0<=R(this,f,d)&&(this.b=this.j=d<<8,this.i=0):(d&128&&(d|=65280),this.b=this.j=this.g[a&7]=d,this.i=0));break;case 40960:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(a=d-e,this.b=this.j=this.w=a<<8,this.i=((d^e)&(d^a))<<8);break;case 45056:0<=(d=Hc(this,a>>6))&&0<=(e=Hc(this,a))&&(this.b=this.j=(d&e)<<8,this.i=0);break;case 49152:0<=(d=Hc(this,a>>6))&&0<=(e=
|
||||
O(this,f=S(this,a,7)))&&(a=e&~d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 53248:0<=(d=Hc(this,a>>6))&&0<=(e=O(this,f=S(this,a,7)))&&(a=e|d,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=0));break;case 57344:0<=(d=T(this,a>>6))&&(a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-d,0<=N(this,f,a)&&(this.b=this.j=this.w=a,this.i=(d^e)&(e^a))):(g=a&7,e=this.g[g],this.g[g]=(a=e-d)&65535,this.b=this.j=this.w=a,this.i=(d^e)&(e^a)));break;default:switch(a&65024){case 2048:0<=(h=Gc(this,a,0))&&(g=a>>6&7,
|
||||
0<=Dc(this,this.g[g])&&(this.g[g]=this.g[7],this.g[7]=h&65535));break;case 28672:0<=(d=T(this,a))&&(g=a>>6&7,d&32768&&(d|=-65536),e=this.g[g],e&32768&&(e|=-65536),a=~~(d*e),this.g[g]=a>>16&65535,this.g[g|1]=a&65535,this.b=a>>16,this.j=this.b|a,this.w=this.i=0,-32768>a||32767<a)&&(this.w=65536);break;case 29184:0<=(d=T(this,a))&&(d?(g=a>>6&7,e=this.g[g]<<16|this.g[g|1],this.w=this.i=0,d&32768&&(d|=-65536),a=~~(e/d),-32768<=a&&32767>=a?(this.g[g]=a&65535,this.g[g|1]=e-a*d&65535,this.j=a>>16|a,this.b=
|
||||
a>>16):(this.i=32768,this.j=a>>15|a,this.b=e>>16,-1===d&&65534===this.g[g]&&(this.g[g]=this.g[g|1]=1))):(this.j=this.b=0,this.i=32768,this.w=65536));break;case 29696:0<=(d=T(this,a))&&(g=a>>6&7,a=this.g[g],a&32768&&(a|=4294901760),this.w=this.i=0,d&=63,d&32?(d=64-d,16<d&&(d=16),this.w=a<<17-d,a=a>>d):d&&(16<d?(this.i=a,a=0):(this.w=a=a<<d,(e=a>>15&65535)&&65535!==e&&(this.i=32768))),this.g[g]=a&65535,this.b=this.j=a);break;case 30208:if(0<=(d=T(this,a))){g=a>>6&7;e=this.g[g]<<16|this.g[g|1];this.w=
|
||||
this.i=0;d&=63;if(d&32)d=64-d,32<d&&(d=32),a=e>>d-1,this.w=a<<16,a>>=1,e&2147483648&&(a|=4294967295<<32-d);else if(d){if(a=e<<d-1,this.w=a>>15,a<<=1,32<d&&(d=32),e>>=32-d)e|=4294967295<<d&4294967295,4294967295!==e&&(this.i=32768)}else a=e;this.g[g]=a>>16&65535;this.g[g|1]=a&65535;this.b=a>>16;this.j=a>>16|a}break;case 30720:a&56?0<=(e=M(this,f=S(this,a,6)))&&(e^=this.g[a>>6&7],0<=N(this,f,e)&&(this.b=this.j=e,this.i=0)):(this.b=this.j=e=this.g[a&7]^=this.g[a>>6&7],this.i=0);break;case 32256:g=a>>
|
||||
6&7;if(this.g[g]=this.g[g]-1&65535)this.g[7]=this.g[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.g[7]=U(this.g[7],a);break;case 512:this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 768:this.j&65535||(this.g[7]=U(this.g[7],a));break;case 1024:(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1280:(this.b&32768)!==(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1536:this.j&65535&&(this.b&32768)===(this.i&32768)&&(this.g[7]=U(this.g[7],a));break;case 1792:this.j&
|
||||
65535&&(this.b&32768)===(this.i&32768)||(this.g[7]=U(this.g[7],a));break;case 32768:this.b&32768||(this.g[7]=U(this.g[7],a));break;case 33280:!(this.w&65536)&&this.j&65535&&(this.g[7]=U(this.g[7],a));break;case 33024:this.b&32768&&(this.g[7]=U(this.g[7],a));break;case 33536:if(this.w&65536||!(this.j&65535))this.g[7]=U(this.g[7],a);break;case 33792:this.i&32768||(this.g[7]=U(this.g[7],a));break;case 34048:this.i&32768&&(this.g[7]=U(this.g[7],a));break;case 34304:this.w&65536||(this.g[7]=U(this.g[7],
|
||||
a));break;case 34560:this.w&65536&&(this.g[7]=U(this.g[7],a));break;case 34816:I(this,24);break;case 35072:I(this,28);break;default:switch(a&65472){case 64:0<=(h=Gc(this,a,0))&&(this.g[7]=h&65535);break;case 192:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<8|e>>8,0<=N(this,f,a)&&(this.b=this.j=e&65280,this.i=this.w=0)):(g=a&7,e=this.g[g],this.g[g]=(e<<8|e>>8)&65535,this.b=this.j=e&65280,this.i=this.w=0);break;case 2560:a&56?0<=(f=S(this,a,4))&&0<=N(this,f,0)&&(this.b=this.w=this.i=this.j=0):this.b=this.w=
|
||||
this.i=this.j=this.g[a&7]=0;break;case 2624:0<=(e=M(this,f=S(this,a,6)))&&(a=~e,0<=N(this,f,a)&&(this.b=this.j=a,this.w=65536,this.i=0));break;case 2688:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e+1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=a&(a^e))):(g=a&7,e=this.g[g],a=e+1,this.g[g]=a&65535,this.b=this.j=a,this.i=a&(a^e));break;case 2752:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e-1,0<=N(this,f,a)&&(this.b=this.j=a,this.i=(a^e)&e)):(g=a&7,e=this.g[g],a=e-1,this.g[g]=a&65535,this.b=this.j=a,this.i=(a^e)&e);
|
||||
break;case 2816:0<=(e=M(this,f=S(this,a,6)))&&(a=-e,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&e));break;case 2880:0<=(e=M(this,f=S(this,a,6)))&&(a=e+(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a&(a^e)));break;case 2944:0<=(e=M(this,f=S(this,a,6)))&&(a=e-(this.w>>16&1),0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=(a^e)&e));break;case 3008:0<=(e=T(this,a))&&(this.b=this.j=e,this.w=this.i=0);break;case 3072:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=(this.w&65536|e)>>1,0<=N(this,
|
||||
f,a)&&(this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1)):(g=a&7,e=this.g[g],a=(this.w&65536|e)>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=a^this.w>>1);break;case 3136:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1|this.w>>16&1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1|this.w>>16&1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3200:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e&32768|e>>1,0<=N(this,f,a)&&(this.w=e<<16,this.b=this.j=a,this.i=
|
||||
this.b^this.w>>1)):(g=a&7,e=this.g[g],a=e&32768|e>>1,this.g[g]=a&65535,this.w=e<<16,this.b=this.j=a,this.i=this.b^this.w>>1);break;case 3264:a&56?0<=(e=M(this,f=S(this,a,6)))&&(a=e<<1,0<=N(this,f,a)&&(this.w=this.b=this.j=a,this.i=a^e)):(g=a&7,e=this.g[g],a=e<<1,this.g[g]=a&65535,this.w=this.b=this.j=a,this.i=a^e);break;case 3328:h=this.g[7]+((a&63)<<1)&65535;0<=(d=L(this,h|65536))&&(this.g[7]=this.g[5],this.g[5]=d,this.g[6]=h+2&65535);break;case 3392:a&56?0<=(h=Gc(this,a,0))&&(61440!==(this.I&61440)&&
|
||||
(h&=65535),this.C=this.I>>12&3,0<=(d=L(this,h))&&(this.C=this.I>>14&3,0<=Dc(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Dc(this,d)&&(this.b=this.j=d,this.i=0));break;case 3456:0<=(e=Fc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Gc(this,a,0))&&(h&=65535,this.C=this.I>>12&3,0<=(f=Ec(this,h,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=
|
||||
e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;case 3520:0<=(f=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,f,a)&&(this.j=a,this.i=0));break;case 35328:a&56?0<=(f=S(this,a,5))&&0<=R(this,f,0)&&(this.b=this.w=this.i=this.j=0):(this.g[a&7]&=65280,this.b=this.w=this.i=this.j=0);break;case 35392:0<=(e=O(this,f=S(this,a,7)))&&(a=~e,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.w=65536,this.i=0));break;case 35456:0<=(e=O(this,f=S(this,a,7)))&&(a=e+1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=(a&(a^
|
||||
e))<<8));break;case 35520:0<=(e=O(this,f=S(this,a,7)))&&(a=e-1,0<=R(this,f,a)&&(this.b=this.j=a<<8,this.i=((a^e)&e)<<8));break;case 35584:0<=(e=O(this,f=S(this,a,7)))&&(a=-e,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a&e)<<8));break;case 35648:0<=(e=O(this,f=S(this,a,7)))&&(a=e+(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=(a&(a^e))<<8));break;case 35712:0<=(e=O(this,f=S(this,a,7)))&&(a=e-(this.w>>16&1),0<=R(this,f,a)&&(this.b=this.j=this.w=a<<8,this.i=((a^e)&e)<<8));break;
|
||||
case 35776:0<=(e=Hc(this,a))&&(this.b=this.j=e<<8,this.w=this.i=0);break;case 35840:0<=(e=O(this,f=S(this,a,7)))&&(a=((this.w&65536)>>8|e)>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 35904:0<=(e=O(this,f=S(this,a,7)))&&(a=e<<1|this.w>>16&1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 35968:0<=(e=O(this,f=S(this,a,7)))&&(a=e&128|e>>1,0<=R(this,f,a)&&(this.w=e<<16,this.b=this.j=a<<8,this.i=this.b^this.w>>1));break;case 36032:0<=
|
||||
(e=O(this,f=S(this,a,7)))&&(a=e<<1,0<=R(this,f,a)&&(this.w=this.b=this.j=a<<8,this.i=(a^e)<<8));break;case 36160:a&56?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(d=L(this,h|65536))&&(this.C=this.I>>14&3,0<=Dc(this,d)&&(this.b=this.j=d,this.i=0))):(g=a&7,d=6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]:this.fa[this.I>>12&3],0<=Dc(this,d)&&(this.b=this.j=d,this.i=0));break;case 36224:0<=(e=Fc(this))&&((this.L&57344||(this.M=22),a&56)?0<=(h=Gc(this,a,0))&&(this.C=this.I>>12&3,0<=(f=Ec(this,h|
|
||||
65536,4))&&(this.C=this.I>>14&3,0<=N(this,f,e)&&(this.b=this.j=e,this.i=0))):(g=a&7,6!==g||(this.I>>2&12288)===(this.I&12288)?this.g[g]=e:this.fa[this.I>>12&3]=e,this.b=this.j=e,this.i=0));break;default:switch(a&65528){case 128:0<=(d=Fc(this))&&(g=a&7,this.g[7]=this.g[g],this.g[g]=d);break;case 152:this.I&49152||(this.I=this.I&63519|(a&7)<<5,this.W=1);break;case 160:case 168:a&1&&(this.w=0);a&2&&(this.i=0);a&4&&(this.j=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.w=65536);a&2&&(this.i=32768);
|
||||
a&4&&(this.j=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.I?I(this,4):(this.bb=3,zc(this),console.log("HALT at "+this.g[7].toString(8)));break;case 1:g=0;if(0<(a=this.J.length))for(;0<a--;)g+=this.J[a].Za,this.J[a].Za=0;0===g&&0===this.bb&&(this.bb=2,zc(this));break;case 3:I(this,12);break;case 4:I(this,16);break;case 5:this.I&49152||Bc(this);break;case 2:case 6:f=this.g[6];0<=(h=L(this,f|65536))&&(f=f+2&65535,0<=(d=L(this,f|65536))&&(this.g[6]=f+2&65535,d&=63743,this.I&49152&&
|
||||
(d=d&63519|this.I&63712),this.g[7]=h,Cc(this,d),this.G&=-17,2===a&&(this.G|=this.I&16)));break;default:I(this,8)}}}}}}this.G&&(this.G&2?I(this,168):this.G&4?I(this,4):this.G&16&&I(this,12),this.G=0)}while(0<this.R)}return this.A.complete?this.U-this.R:void 0===this.A.complete?0:-1};Qa(function(){for(var a=y(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Ac(d);mb(d,c)}});
|
||||
function Kc(a){t.call(this,"ROM",a,Kc);this.i=null;this.C=a.addr;this.j=a.size;this.G=a.writable;this.w=a.alias;this.D=a.file;this.J=fa(this.D);if(this.D){a=this.D;var b=ja(this.J);"json"!=b&&"hex"!=b&&(a=la()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;xa(a,null,!0,function(a,b,f){Lc(c,a,b,f)})}}v(Kc);Kc.prototype.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;Mc(this)};
|
||||
Kc.prototype.sa=function(){if(this.qa){if(this.F){var a=this.F,b=this.id,c=this.C,d=this.j,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=ta(n,k,a.pa);0>p&&n.splice(-(p+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.G.push({Ib:b,B:c,Db:d,qa:e,fb:f})}delete this.qa}return!0};Kc.prototype.ra=function(){return!0};
|
||||
function Lc(a,b,c,d){if(d)a.ea("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.mb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.i=f;else if(h)for(a.i=Array(4*h.length),d=c=0;c<h.length;c++)a.i[d++]=h[c]&255,a.i[d++]=h[c]>>8&255,a.i[d++]=h[c]>>16&255,a.i[d++]=h[c]>>24&255;else a.i=e;a.qa=e.symbols;if(!a.i.length){r("Empty ROM: "+b);return}if(1==a.i.length){r(a.i[0]);return}}catch(g){a.ea("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.i=Array(b.length),e=0;e<b.length;e++)a.i[e]=da(b[e],16);Mc(a)}}
|
||||
function Mc(a){if(!qb(a))if(!a.D)A(a);else if(a.i&&a.H){a.j||(a.j=a.i.length);if(a.i.length!=a.j)rb(a,"ROM size (0x"+q(a.i.length)+") does not match specified size ("+("0x"+q(a.j))+")");else{var b;b=a.C;if(xb(a.H,b,a.j,a.G?1:Rb)){var c;for(c=0;c<a.i.length;c++){var d=a.H,e=b+c;d.P[(e&d.j)>>>d.aa].Ja(e&d.i,a.i[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.H,h=f.j,g=[],k=f.C>>>e.aa;0<h&&k<e.P.length;)g.push(e.P[k++]),
|
||||
h-=e.la;e=f.H;f=f.j;h=0;for(d>>>=e.aa;0<f&&d<e.P.length;){k=g[h++];if(!k)break;e.P[d++]=k;f-=e.la}}delete a.i}}A(a)}}Qa(function(){for(var a=y(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Kc(d);mb(d,c)}});function Nc(a){t.call(this,"RAM",a,Nc);this.w=a.addr;this.j=a.size;this.i=!1}v(Nc);m=Nc.prototype;m.za=function(a,b,c,d){this.H=b;this.b=c;this.F=d;A(this)};m.sa=function(a,b){b||this.reset();return!0};m.ra=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.i&&this.j&&xb(this.H,this.w,this.j,1)&&(this.i=!0);this.i||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Qa(function(){for(var a=y(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Nc(d);mb(d,c)}});function Oc(a){t.call(this,"Keyboard",a,Oc,65536);A(this)}v(Oc);Oc.prototype.ha=function(){return!1};Oc.prototype.za=function(a,b,c,d){this.D=a;this.b=c;this.F=d;this.ja=null};
|
||||
Qa(function(){for(var a=y(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Oc(d);mb(d,c)}});
|
||||
function Pc(a){t.call(this,"Debugger",a,Pc);this.R=this.ga=this.L=0;this.N=V();this.na=V();this.w=-1;this.j=[];this.T=!1;this.S=V();this.G=[];this.V={};this.i=this.O=this.C=[];Qc(this);this.ca=0;Rc(this);this.ja=[];Sc(this,a.messages);this.ka=a.commands;var b=this;window?void 0===window.pdp11&&(window.pdp11=function(a){return gc(b,a)}):void 0===global.pdp11&&(global.pdp11=function(a){return gc(b,a)})}v(Pc);
|
||||
var Tc={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","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"},Uc=["NONE"],Vc=["PC","PSW"],Wc=[];m=Pc.prototype;
|
||||
m.za=function(a,b,c,d){this.H=b;this.b=c;this.D=a;(a=dc(a,"messages"))&&Sc(this,a);this.oa=Wc;Xc(this,function(a){a:{var b=d.H.P,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.u("invalid address: "+c);break a}g=a>>>d.H.aa;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var n=b[g];n.type==c?l++||d.u("..."):(c=n.type,l=zb[c],n&&d.u(q(n.id)+" %"+q(g<<d.H.aa)+" %%"+q(n.B)+" "+ea(n.Ta)+" "+
|
||||
ea(n.size)+" "+l),c!=Qb&&(c=-1),l=0);a+=d.H.la;g++}}});A(this)};
|
||||
m.ha=function(a,b,c){var d=this;switch(b){case "debugInput":return this.$=this.K[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",gc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.w<d.j.length-1&&(b=d.j[++d.w]):40==a.keyCode&&(0<d.w?b=d.j[--d.w]:(b="",d.w=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.K[b]=c,Ka(c,function(){if(d.$){var a=d.$.value;d.$.value=
|
||||
"";gc(d,a,!0);return!0}return!1}),!0;case "step":return this.K[b]=c,Ka(c,function(a){var b=!1;pb(d,!0)||(ob(d,!0),b=d.Ia(a?1:0),ob(d,!1));return b}),!0}return!1};m.Sa=function(){this.$&&this.$.focus()};function W(a){a=a&&a.B;null==a&&(a=-1);return a}m.ua=function(a,b){var c=255,d=W(a);-1!==d&&(c=Ab(this.H,d),b&&Yc(a,b));return c};m.Ua=function(a,b){var c=65535,d=W(a);if(-1!==d){var c=this.H,e=d&c.i,f=(d&c.j)>>>c.aa,c=e!=c.i?c.P[f].ub(e,d):c.P[f++].Ra(e,d)|c.P[f&c.G].Ra(0,d+1)<<8;b&&Yc(a,b)}return c};
|
||||
m.eb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H;e.P[(d&e.j)>>>e.aa].Ja(d&e.i,b&255,d);c&&Yc(a,c);F(this.b,!0)}};m.yb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.H,f=d&e.i,h=(d&e.j)>>>e.aa;f!=e.i?e.P[h].xb(f,b&65535,d):(e.P[h++].Ja(f,b&255,d),e.P[h&e.G].Ja(0,b>>8&255,d+1));c&&Yc(a,c);F(this.b,!0)}};function V(a){return{B:a,ma:!1}}function Zc(a){return[a.B,a.ma]}function $c(a){return{B:a[0],ma:a[1]}}
|
||||
function X(a,b,c){var d;c=(c?a.N:a.na).B;if(void 0!==b){d=b=ad(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=V(d));break}}if(d=e)return d;c=bd(a,b,void 0)}null!=c&&(d=V(c));return d}function cd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.zb=dd(a,b.vb=c[2]))}function Yc(a,b){null!=a.B&&(a.B+=b||1)}
|
||||
function ed(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Sc(a,b){a.F=a;a.Y=a.Ab=536870912;a.da=null;a.fa=[];var c=dd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in C)0<=wa(c,d)&&(a.Y|=C[d],a.u(d+" messages enabled"))}function Xc(a,b){for(var c in C)if(64==C[c]){a.ja[c]=b;break}}
|
||||
function fd(a,b){var c;a=a.toUpperCase();null==b?c=wa(Vc,a):(c=wa(Vc,a.substr(b,2)),0>c&&(c=wa(Vc,a.substr(b,1))));return c}function gd(a,b){var c;if(0<=b){var d=a.b;switch(b){case 12:c=d.g[7];break;case 14:c=d.I&-14|0|(d.ta&255?0:4)|(d.ta&256?1:0)}}return c}
|
||||
function hd(a,b){b=ad(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));){e=fd(b,c+1);if(0<=e){d=0;var f=gd(a,e);if(void 0!==f)switch(e){case 12:case 14:d=4}b=b.substr(0,c)+(d?q(f,d):"??")+b.substr(c+1+Vc[e].length)}c++}for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=X(a,e))?(d=e+' "'+ed(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=
|
||||
0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=X(a,e))?(Yc(d),d=e+' "'+ed(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+q(V(this.b.g[7]).B,4));if(this.Y&1073741824)this.fa.push(a);else if(!this.da||a!=this.da)if(this.da=a,this.Y&-2147483648&&(this.ba(),a+=" (cpu halted)"),this.u(a),this.b){var c=this.b;zc(c);c.da=0;F(c)}};
|
||||
function Rc(a){var b;if(Ic(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=V();a.W=0;a.u("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.u("instruction history buffer freed"),a.W=0,a.M=[],a.J=[]}m.Ca=function(a){if(!id(this))return!1;this.b.Ca(a);return!0};
|
||||
m.Ia=function(a,b,c){if(!id(this))return!1;this.L=0;a||Ic(this)&&Jc(this,this.b.g[7],0);try{var d=this.b.Ia(a);0<d&&(this.L+=d,lc(this.b,d,!0),hc(this.b,d),this.R++)}catch(e){"number"!=typeof e&&(this.L=0,rb(this.b,e.stack||e.message))}!1!==c&&F(this.b);this.ia(b||!1);return 0<this.L};m.ba=function(a){this.b&&this.b.ba(a)};m.ia=function(a){void 0===a&&(a=!0);this.N=V(this.b.g[7]);a&&1!=this.U?jd(this):kd(this)};
|
||||
function id(a){var b;if(b=a.b&&qb(a.b))b=a.b,b.A.X?b=!0:(b.u(b.toString()+" not powered"),b=!1);b&&!pb(a.b)?(a=a.b,a.A.error?(a.u(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.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Rc(this);this.R=this.ga=0;this.da=null;this.L=0;this.N=V(this.b.g[7]);this.A.Z=!1;ld(this);a||this.ia()};
|
||||
m.save=function(){var a=new G(this);H(a,0,Zc(this.N));H(a,1,Zc(this.S));H(a,2,[this.j,this.T,this.Y]);H(a,3,this.G);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.N=$c(a[b++]),this.S=$c(a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.T=a[b][1],this.Y|=a[b][2]);a[3]&&(this.G=a[3]);return!0};m.start=function(a,b){this.U||this.u("running");this.A.Z=!0;this.La=a;this.Ma=b};
|
||||
m.stop=function(a,b){if(this.A.Z){this.A.Z=!1;this.L=b-this.Ma;if(!this.U){var c="stopped";if(this.L){var d=a-this.La,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";Ic(this)&&(c+=this.R+" opcodes, ",this.ga-=this.R,this.R=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else nb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.u(c)}this.ia(!0);this.Sa();ld(this,this.b.g[7])}};function Ic(a){return 1<a.i.length||!!a.ca}
|
||||
function Jc(a,b,c){var d=a.b;if(0<c&&(a.ca&&!--a.ca||Zb(a,b,1,a.i)))return!0;0<=c&&a.J.length&&(a.R++,b=Ab(a.H,b),null!=b&&(a.J[b][1]++,b=a.M[a.W],b.B=d.g[7],b.ma=!1,++a.W==a.M.length&&(a.W=0)));return!1}function Qc(a){var b,c;a.i=["bp"];if(void 0!==a.O)for(b=1;b<a.O.length;b++){c=a.O[b];var d=a.H;$b(d.P[W(c)>>>d.aa],!1)}a.O=["br"];if(void 0!==a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=a.H,$b(d.P[W(c)>>>d.aa],!0);a.C=["bw"];a.wa=0}
|
||||
m.xa=function(a,b,c){var d=!0;c||md(this,a,b,!1,!0);if(a!=this.i){var e=W(b);if(-1===e)this.u("invalid address: "+q(b.B,4)),d=!1;else{var f=this.H;f.P[e>>>f.aa].xa(e&f.i,a==this.C)}}d&&(a.push(b),c?b.ma=!0:(nd(this,a,a.length-1,"set"),Rc(this)));return d};function md(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.ma)){f=!0;g.ma||e||nd(a,b,h,"cleared");b.splice(h,1);b!=a.i&&(d=a.H,$b(d.P[c>>>d.aa],b==a.C));g.ma||Rc(a);break}}return f}
|
||||
function od(a,b){for(var c=1;c<b.length;c++)nd(a,b,c);return b.length-1}function nd(a,b,c,d){c=b[c];a.u(b[0]+" "+q(c.B,4)+(d?" "+d:c.vb?' "'+c.vb+'"':""))}function ld(a,b){if(void 0!==b)Zb(a,b,1,a.i,!0),a.U=0;else for(var c=1;c<a.i.length;c++){var d=a.i[c];if(d.ma){if(!md(a,a.i,d,!0))break;c=0}}}
|
||||
function Zb(a,b,c,d,e){var f=!1;if(!a.wa++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.ma)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var n,f=!0;g.ma&&(md(a,d,g,!0),e=!0);if(n=g.zb){for(var f=!1,p=0;p<n.length;p++)if(!pd(a,n[p],!0)){if(n[p].indexOf("if")){f=!0;break}for(var z=p+1;z<n.length&&n[z].indexOf("else");z++)p++;if(z==n.length){f=!0;break}}a.b.A.Z||(f=!0)}if(f){e||nd(a,d,h,"hit");break}}}a.wa--;return f}
|
||||
function qd(a,b,c,d){for(var e=V(b.B),f=a.ua(b,1),h=a.oa[f]||[0],g="",k=Uc[h[0]],l=h.length-1,n=0,p,z=1;z<=l;z++){var J="";p=h[z];if(void 0!==p){var E=p&240;if(E){var ga=p&15;ga?n=ga:p|=n;p&61440||(p|=1==z?8192:4096);if(E&32)a:{var J=a,E=p,ga=b,B=" ";switch(E&15){case 1:B=q(J.ua(ga,1),2);break;case 2:B=q(J.ua(ga,1)<<24>>24,4);break;case 3:B=q(J.Ua(ga,2),4);break;default:J="imm("+ea(E)+")";break a}E&64?B="["+B+"]":E&16||(B="0x"+B);J=B}else E&16?J=Vc[(p&3840)>>8]:E&128&&(J=(f>>3&7).toString());if(!J||
|
||||
!J.length){g="INVALID";break}0<g.length&&(g+=",");g+=J||"???"}}}f="";h=q(e.B,4)+" ";if(-1!==e.B&&-1!==b.B){do if(f+=q(a.ua(e,1),2),null==e.B)break;while(e.B!=b.B)}h+=oa(f,10);h=h+(p&32768?"*":" ")+oa(k,7);g&&(h+=" "+g);c&&(h=oa(h,40)+";"+c,h=a.b.A.Fa?h+("cycles="+ic(a.b).toString()+" cs="+q(a.b.Oa)):h+(null!=d?"="+d.toString():""));return h}var rd={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
|
||||
function sd(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
|
||||
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
|
||||
function bd(a,b,c){var d;if(b){b=ad(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=pa(n);if(!n){f=!0;break}n=td(a,n,null,!1===c);if(void 0===n){f=!0;c=!1;break}g.push(n);if(e==l.length)break;var n=l[e++],z=n.length;k.length&&rd[n]<rd[k[k.length-1]]&&sd(g,k,1);k.push(n);b=b.substr(p+z)}sd(g,k)&&1==g.length||(f=!0);f?c&&a.u("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&ud(a,null,
|
||||
d))}return d}function ad(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=bd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ua(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.R-a.ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
|
||||
function td(a,b,c,d){var e;void 0!==b?(e=fd(b),0<=e?e=gd(a,e):(e=a.V[b],void 0===e&&(e=da(b))),void 0!==e||d||a.u("invalid "+(c?c:"value")+": "+b)):d||a.u("missing "+(c||"value"));return e}
|
||||
function ud(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,n="";void 0===l?l=32:32<l&&(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+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.u((null!=b?b+": ":"")+d);return e}function Td(a,b){if(b)return ud(a,b,a.V[b]);var c=0;for(b in a.V)ud(a,b,a.V[b]),c++;return 0<c}Pc.prototype.pa=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Ud(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],h=f.B>>>0,g=f.Db;if(e>=h&&e<h+g){e=ta(f.fb,[e-h],a.pa);0<=e?Vd(a,b,e,d):c&&(e=~e,Vd(a,b,e-1,d),Vd(a,b,e,d));break}}return d}function Vd(a,b,c,d){var e={},f=a.G[b].fb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.G[b].qa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
|
||||
function Wd(a,b){if("?"==b)a.u("frequency commands:"),a.u("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[c]=[c,0];a.u("frequency data cleared");d++}else if(void 0!==b)a.u("unknown frequency command: "+b),d++;else{var e=a.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],h=e[c][1];h&&(a.u((Uc[a.oa[f][0]]+" ").substr(0,5)+" ("+("0x"+q(f,2))+"): "+h+" times"),d++)}}d||a.u("no frequency data available")}}
|
||||
function Xd(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Td(a)||a.u("no variables"),!0;if(!c[2])return Td(a,c[1]);if(!c[3])return delete a.V[c[1]],!0;var d=bd(a,c[3]);return void 0!==d?(a.V[c[1]]=d,!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||
function Yd(a,b,c){var d=null;if(b=X(a,b,!0)){var e=Ud(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.B-e[1])&&(h=" + "+ea(f)),f=e[0]+" ("+q(e[1],4)+")"+h,c&&a.u(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.B)&&(h=" - "+ea(f)),f=e[4]+" ("+q(e[5],4)+")"+h,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols")}return d}
|
||||
function jd(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!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.u("missing value for "+b[1]);return}var h=!1,g=bd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "PC":d.g[7]=g;a.N=V(d.g[7]);break;case "CF":d.ta=g?d.ta|256:d.ta&255;break;case "ZF":d.ta=g?d.ta&
|
||||
-256:d.ta|255;break;case "SF":break;default:a.u("unknown register: "+e);return}if(!h){a.u("invalid value: "+f);return}F(d);a.u("updated registers:")}a.u("no regs");c&&(a.N=V(d.g[7]),kd(a,q(a.N.B,4)))}}function Zd(a,b){b=pa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.u(hd(a,c[2])):bd(a,b,!0)}function $d(a,b,c){var d="t"!=b;c=td(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ja(c,function(){return ob(a,!0)&&a.Ia(e,d,!1)},function(){F(a.b);ob(a,!1)})}
|
||||
function kd(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=pb(a,!1)||a.U?a.L:null;var h=null!=f?"cycles":null,g=Ud(a,b),k=b.B;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.u(l)}g[3]&&(h=g[3],f=null);f=qd(a,b,h,f);a.u(f);a.N=b;e-=b.B-k;c++}}}
|
||||
function dd(a,b,c,d){if(c)if(b){0>a.w&&a.j.length&&(a.w=0);if(0>a.w||b!=a.j[a.w])a.j.splice(0,0,b),a.w=0;a.w--}else a.T?b="end":b=a.j[a.w+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";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==d&&!e||!h)a.push(pa(b.substring(c,f))),c=f+1}}return a}
|
||||
function pd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(">> "+b):(a.T&&(a.u("ended assemble at "+q(a.S.B,4)),a.N=a.S,a.T=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.da=null;if(qb(a)&&0<b.length){a.T&&(b="a "+q(a.S.B,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=X(a,f[1],!0);if(n)if(a.S=
|
||||
n,void 0===f[2])a.u("begin assemble at "+q(n.B,4)),a.T=!0,F(a.b);else{var p;a.u("not supported yet");p=[];if(p.length){for(var z=0;z<p.length;z++)a.eb(n,p[z],1);a.u(qd(a,a.S))}}break;case "b":a:{var J=f[0],E=f[1],ga=b;if("?"==E)a.u("breakpoint commands:"),a.u("\tbp [a]\tset exec breakpoint at addr [a]"),a.u("\tbr [a]\tset read breakpoint at addr [a]"),a.u("\tbw [a]\tset write breakpoint at addr [a]"),a.u("\tbc [a]\tclear breakpoint at addr [a]"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [n]\tbreak after [n] instruction(s)");
|
||||
else{var B=J.charAt(1);if("l"==B){var Aa=0,Aa=Aa+od(a,a.i),Aa=Aa+od(a,a.O);(Aa+=od(a,a.C))||a.u("no breakpoints")}else if("n"==B)a.ca=td(a,E),a.u("break after "+a.ca+" instruction(s)");else if(void 0===E)a.u("missing breakpoint address");else{var P=V();if("*"!=E&&(P=X(a,E,!0),!P))break a;"c"==B?null==P.B?(Qc(a),a.u("all breakpoints cleared")):md(a,a.i,P)||md(a,a.O,P)||md(a,a.C,P)||a.u("breakpoint missing: "+q(P.B,4)):null!=P.B&&(cd(a,P,ga),"p"==B?a.xa(a.i,P):"r"==B?a.xa(a.O,P):"w"==B?a.xa(a.C,P):
|
||||
a.u("unknown breakpoint command: "+B))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ba,Ca=f[0],Y=f[1],qa=f[2],te=f[3];if("?"==Y){var Z="";for(Ba in C)a.ja[Ba]&&(Z&&(Z+=","),Z+=Ba);Z+=",state,symbols";a.u("dump memory commands:");a.u("\tdb [a] [#] dump # bytes at address a");a.u("\tdw [a] [#] dump # words at address a");a.u("\tdd [a] [#] dump # dwords at address a");a.u("\tdh [#] [#] dump # instructions from history");Z.length&&a.u("dump extension commands:\n\t"+Z)}else if("state"==
|
||||
Y){var vd=ae(a.D,!0);"console"==qa?console.log(vd):(a.ya&&(a.ya.value=""),a.u(vd))}else if("symbols"==Y)for(var nc=0;nc<a.G.length;nc++){var oc=a.G[nc],Da;for(Da in oc.qa)if("."!=Da.charAt(0)){var wd=oc.qa[Da].o;if(void 0!==wd){var xd=oc.qa[Da].l;xd&&(Da=xd);a.u(q(wd,4)+" "+Da)}}}else{if("d"==Ca){for(Ba in C)if(f[1]==Ba){var yd=a.ja[Ba];yd?(f.shift(),f.shift(),yd(f)):a.u("no dump registered for "+Y);break a}Y||(Ca=a.Na||"db")}else a.Na=Ca;if("dh"==Ca){var zd=Y,Ad=qa,Bd="",Cd=0,K=a.W,aa=a.M;if(aa.length){var Q=
|
||||
+zd||a.Da,Ea=+Ad||10;isNaN(Q)?Q=Ea:Bd="more ";Q>aa.length&&(a.u("note: only "+aa.length+" available"),Q=aa.length);K-=Q;0>K&&(null==aa[aa.length-1].B?(Q=K+Q,K=0):K+=aa.length);var pc=[];"call"==Ad&&(Ea=1E5,pc=["CALL"]);for(void 0!==zd&&a.u(Q+" instructions earlier:");0<Ea&&K!=a.W;){var Dd=aa[K++];if(null==Dd.B)break;var db=V(Dd.B),ue=Q--,Ed=qd(a,db,"history",ue);(!pc.length||0<=Ed.indexOf(pc[0]))&&a.u(Ed);db.Xa&&(K+=db.Xa,Ea-=db.Xa,Q-=db.Xa);K>=aa.length&&(K=0);a.Da=Q;Cd++;Ea--}}Cd||(a.u("no "+Bd+
|
||||
"history available"),a.Da=void 0)}else{var Cb=X(a,Y);if(Cb){var Db=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||te),Db=td(a,qa)>>>0,65536<Db&&(Db=65536));for(var ra="",Eb="dd"==Ca?4:"dw"==Ca?2:1,Fb=Eb*Db||128,ve=Fb+15>>4||1;ve--&&0<Fb;){var Gb=0,qc=0,eb,fb="",rc="",Y=q(Cb.B,4);for(eb=16;0<eb&&0<Fb;eb--){var Hb=a.ua(Cb,1),Gb=Gb|Hb<<(qc++<<3);qc==Eb&&(fb+=q(Gb,2*Eb),fb+=1==Eb?9==eb?"-":" ":" ",Gb=qc=0);rc+=32<=Hb&&128>Hb?String.fromCharCode(Hb):".";Fb--}ra&&(ra+="\n");ra+=Y+" "+fb+(0==eb?" "+rc:"")}ra&&
|
||||
a.u(ra);a.na=Cb}}}}break;case "e":if("else"==f[0])break;var Ib=1,Fd=255,Gd=a.ua,Hd=a.eb;"ew"==f[0]&&(Ib=2,Fd=65535,Gd=a.Ua,Hd=a.yb);var Id=Ib<<1,Jd=f[1];if(null==Jd)a.u("edit memory commands:"),a.u("\teb [a] [...] edit bytes at address a"),a.u("\tew [a] [...] edit words at address a");else{var Jb=X(a,Jd);if(Jb)for(var Kb=2;Kb<f.length;Kb++){var gb=bd(a,f[Kb]);if(void 0===gb){a.u("unrecognized value: "+f[Kb]);break}gb&~Fd&&a.u("warning: "+q(gb)+" exceeds "+Ib+"-byte value");var we=Gd.call(a,Jb);
|
||||
a.u("changing "+q(Jb.B,4)+" from 0x"+q(we,Id)+" to 0x"+q(gb,Id));Hd.call(a,Jb,gb,Ib)}}break;case "f":Wd(a,f[1]);break;case "g":a:{var Kd=f[1],xe=b;if(void 0!==Kd){var sc=X(a,Kd,!0);if(!sc)break a;cd(a,sc,xe);a.xa(a.i,sc,!0)}a.Ca(!0)||c||a.u("cpu busy or unavailable, run command ignored")}break;case "h":a:{var tc;if(a.A.Z)tc="halting",a.ba();else{if(pb(a,!0))break a;tc="already halted"}c||a.u(tc)}break;case "i":if("if"==f[0]){var uc;var hb=b.substr(2),hb=pa(hb);bd(a,hb)?(c||a.u("true: "+hb),uc=!0):
|
||||
(c||a.u("false: "+hb),uc=!1);uc||(d=!1)}break;case "k":var ye=f[0];if("?"==f[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");else{var vc=0,Ld=V(),ib=V(a.b.g[6]);for(a.u("stack trace for "+q(ib.B,4));10>vc;){for(var sa=null,ze=256;65536>ib.B>>>0;){Ld.B=a.Ua(ib,2);if(null==ib.B||!ze--)break;for(var Ae=a,Lb=Ld,Md=null,jb=Lb.B,Nd=jb,wc=1;6>=wc&&jb;wc++){if(2<wc){Lb.B=jb;var Mb=qd(Ae,Lb);if(0<=Mb.indexOf("CALL")){var Od=Mb.indexOf(" ");if(jb+(Mb.indexOf(" ",
|
||||
Od+1)-Od-1)/2==Nd){Md=Mb;break}}}jb--}Lb.B=Nd;if(sa=Md)break}if(!sa||null==sa)break;var Pd=null;if("ks"==ye){var Qd=sa.match(/[0-9A-F]+$/);Qd&&(Pd=Yd(a,Qd[0]))}sa=oa(sa,50)+" ;"+(Pd||"stack="+q(ib.B,4));a.u(sa);vc++}vc||a.u("no return addresses found")}break;case "l":if("ln"==f[0]){Yd(a,f[1],!0);break}break;case "m":a:{var ba,ca=null,x=f[1];"?"==x&&(x=void 0);if(void 0!==x){var ha=0;if("all"==x)ha=1878917119,x=null;else if("on"==x)ca=!0,x=null;else if("off"==x)ca=!1,x=null;else{"keys"==x&&(x="key");
|
||||
"kbd"==x&&(x="keyboard");for(ba in C)if(x==ba){ha=C[ba];ca=!!(a.Y&ha);break}if(!ha){a.u("unknown message category: "+x);break a}}if(ha)if("on"==f[2])a.Y|=ha,ca=!0;else if("off"==f[2]&&(a.Y&=~ha,ca=!1,1073741824==ha)){for(var xc=0;xc<a.fa.length;xc++)a.u(a.fa[xc]);a.fa=[]}}var Be=0,ia="";for(ba in C)if(!x||x==ba){var Ce=!!(a.Y&C[ba]);if(null===ca||ca==Ce)ia&&(ia+=","),++Be%10||(ia+="\n\t"),"key"==ba&&(ba="keys"),ia+=ba}void 0===x&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");
|
||||
a.u((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));Rc(a)}break;case "p":if("print"==f[0]){Zd(a,b.substr(5));break}var De="pr"==f[0]?1:0;if(a.U)a.u("step in progress");else{var Rd=V(a.b.g[7]);a.ua(Rd);a.U?(a.xa(a.i,Rd,!0),a.Ca()||(a.D&&a.D.Sa(),a.U=0)):$d(a,De?"tr":"t")}break;case "r":if("reset"==b){a.D&&a.D.reset();break}jd(a,f);break;case "s":a:switch(f[1]){case "cs":var kb;void 0!==f[3]&&(kb=+f[3]);switch(f[2]){case "int":a.b.Ga=kb;break;case "start":a.b.Pa=
|
||||
kb;break;case "stop":a.b.Ha=kb;break;default:a.u("unknown cs option");break a}void 0!==kb&&fc(a.b);a.u("checksums "+(a.b.A.Fa?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(kc(a.b,+f[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.b.Aa.toFixed(2)+"Mhz")+" ("+a.b.Ba+"x)");break;case "?":a.u("debugger options:");a.u("\tcs int #\tset checksum cycle interval to #");a.u("\tcs start #\tset checksum cycle start count to #");a.u("\tcs stop #\tset checksum cycle stop count to #");
|
||||
a.u("\tsp #\t\tset speed multiplier to #");break;default:f[1]&&a.u("unknown option: "+f[1])}break;case "t":$d(a,f[0],f[1]);break;case "u":kd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xd(a,b.substr(3))||(d=!1);break}a.u("PDP11js version 1.30.0 ("+a.b.ob+",RELEASE"+(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.u(window?window.navigator.userAgent:"");break;case "?":if(f[1]){Zd(a,b.substr(1));break}var lb="commands:",yc;for(yc in Tc)lb+="\n"+oa(yc,9)+Tc[yc];Ic(a)||(lb+="\nnote: frequency/history disabled if no exec breakpoints");
|
||||
a.u(lb);break;default:a.u("unknown command: "+b),d=!1}}}catch(Sd){a.u("debugger error: "+(Sd.stack||Sd.message)),d=!1}return d}function gc(a,b,c){b=dd(a,b,c);for(var d in b)if(!pd(a,b[d]))return!1;return!0}Qa(function(){for(var a=y(document,"pdp11","debugger"),b=0;b<a.length;b++){var c=a[b],d=w(c),d=new Pc(d);mb(d,c)}});
|
||||
function be(a,b,c){t.call(this,"Computer",a,be,67108864);this.A.X=!1;ce(this,b);this.N=dc(this,"autoPower",a);this.w=0;this.U=a.busWidth||a.buswidth;this.i=de;this.L=null;this.G=this.S=!1;this.V=dc(this,"url")||"";(Math.random()+.1).toString(36);this.j=ee(this);if(this.b=cb("CPU",this.id)){this.F=cb("Debugger",this.id);this.H=new vb({id:this.mb+".bus",busWidth:this.U},this.b,this.F);var d,e=bb(this.id);if((this.D=cb("Panel",this.id))&&this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.ea=this.D.ea,d.u=this.D.u,
|
||||
d.ya=this.D.ya;this.u("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.u("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<e.length;b++)d=e[b],d.za&&d.za(this,this.H,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.i=parseInt(d,10));var f;if(a=dc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.G=!0,this.i=de),this.i&&(this.M=
|
||||
new G(this,"1.30.0"),fe(this.M)?b=null:delete this.M);!b&&this.i&&(b=ge(this))&&(this.G=!0);if(b){var h=this;xa(b,null,!0,function(a,b,c){c?(h.J=null,h.G=!1,h.ea("Unable to load machine state from server (error "+c+(b?": "+pa(b):"")+")")):(h.L=b,h.S=!0);A(h)})}else A(this);this.K.power||(this.N=!0);!c&&this.N&&he(this,this.Qa)}else r("Unable to find CPU component")}v(be);var de=0;
|
||||
function ce(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.T=b}function dc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.T&&(d=a.T[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function he(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!qb(f)){qb(f,function(){he(a,b,c)});return}}b.call(a,c)}
|
||||
function ie(a,b){var c=new G(a,"1.30.0","validate");if(fe(c)&&je(c)){var d=ke(c,"timestamp"),e=b?ke(b,"timestamp"):"unknown";d!=e&&(a.ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=be.prototype;
|
||||
m.Qa=function(a){void 0===a&&(a=this.i||(this.L?1:de));if(!this.w){this.w++;var b=!1,c=!1;this.R=!1;var d=this.M||new G(this,"1.30.0");if(-1==a)b=!0;else if(a>de){if(fe(d,this.L)){this.C=new G(this,"1.30.0","failsafe");fe(this.C)&&(le(this,d),a=2,me(this.C));H(this.C,"timestamp",va());ne(this.C);var e=this.i&&!this.G;if(1==a||ya("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=je(d)){var f=ke(d,"code"),h=ke(d,"data");f&&("ok"==f?fe(d,h):("error"==f&&
|
||||
"no machine state"!=h?(this.ea("Error: "+h),"unable to verify user"==h&&(Ha("user",""),this.j=null)):this.u(f+": "+h),me(d),fe(d)?(c=je(d),e=!0):c=!1))}e&&ie(this,c?d:null)}else 2==a&&d.clear()}else ie(this);delete this.L;delete this.M}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=oe(this,h,d,b,c));b=[d,a,c];-1!=a?he(this,this.ib,b):this.ib(b)}};
|
||||
function oe(a,b,c,d,e){if(!b.A.X){b.A.X=!0;if(b.sa){var f=null;e&&((f=ke(c,b.id))||(f=ke(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(r("Unable to restore state for "+b.type),a.O&&!a.S?(c.clear(),a.i=de,window&&window.location.reload()):a.R=!0,b.sa(null),e=!1)}if(!d&&b.lb)for(a=b.lb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
||||
m.ib=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.A.X=!0;var d=this.K.power;d&&(d.textContent="Shutdown");this.b&&(oe(this,this.b,b,c,a),this.b.Ka());this.R&&(le(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=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 c=a.j||"",d=b.toString(),e={app:"PDP11js",ver:"1.30.0"};e.url=a.V;e.user=c;e.type="bug";e.data=d;xa("http://www.pcjs.org/api/v1/report",e,!0)}}
|
||||
function ae(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.30.0"),h=new G(a,"1.30.0","validate"),g=va();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.30.0");H(f,"url",window?window.location.href:null);H(f,"browser",window?window.navigator.userAgent:"");a.b&&a.b.ra&&(c&&a.b.ba(),d=a.b.ra(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.X=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.A.X&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&H(f,l.id,d)),c&&
|
||||
(l.A.X=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.j&&pe(a,a.j,f.toString()),ne(h)&&ne(f)||(e=null,d=g=!0)):a.i&&(d=!0,g=3==a.i),d&&f.clear(g)):e=f.toString());c&&(a.A.X=!1,b=a.K.power)&&(b.textContent="Power");a.w=0;return e}m.reset=function(){this.H&&this.H.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+this.H.type,void 0),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(this.F&&nb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
|
||||
m.start=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
||||
m.ha=function(a,b,c){var d=this;switch(b){case "power":return this.K[b]=c,c.onclick=function(){d.w||(d.A.X?ae(d,!1,!0):he(d,d.Qa))},!0;case "reset":return this.K[b]=c,c.onclick=function(){if(d.A.X&&!d.w)if(d.i&&!d.J){var a=ya("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");ae(d,a,!0);!a&&d.O?window&&window.location.reload():d.Qa(de)}else d.reset(),d.b&&d.b.Ka()},!0;case "save":if(ka()){c.parentNode.removeChild(c);break}this.K[b]=
|
||||
c;c.onclick=function(){var a=ee(d,!0);if(a){var b=!!(d.i&&!d.J||d.O),c=ae(d,b);b?pe(d,a,c):d.ea("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function ee(a,b){var c=a.j;c||(c=Ga("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=qe(a,c))||a.ea("The user ID is invalid."))):b&&a.ea("Browser local storage is not available"));return c}
|
||||
function qe(a,b){a.j=null;var c=xa(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Ha("user",c.data),a.j=c.data)}catch(e){r(e.message+" ("+d+")")}return a.j}function ge(a){var b=null;a.j&&(b=la()+"/api/v1/user?req=load&user="+a.j+"&state="+re(a,"1.30.0"));return b}
|
||||
function pe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=re(a,"1.30.0");d.data=c;b=xa(la()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ea("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ea(c),Ha("user",""),a.j=null)}}m.Sa=function(){};
|
||||
m.ia=function(a){this.b&&this.b.ia(a);this.D&&this.D.ia(a)};Qa(function(){for(var a=y(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=w(c),c=y(c,"pdp11","computer"),e=0;e<c.length;e++){var f=c[e],h=w(f),h=new be(h,d,!0);mb(h,f);h.N&&he(h,h.Qa)}});La.show.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.W&&!c.A.X&&c.Qa(-1)}});
|
||||
La.exit.push(function(){for(var a=y(document,"pdp11","computer"),b=0;b<a.length;b++){var c=w(a[b]);(c=cb("Computer",c.id))&&c.A.X&&ae(c,!(!c.i||c.J),!0)}});function G(a,b,c){this.id=a.id;this.key=re(a,b,c);this.F=a.F;me(this,a.Gb)}function re(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
G.prototype={constructor:G,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 c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
|
||||
function me(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function ne(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(r("Unable to store "+c.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(c){r(c.message||c),b=!1}return b}function fe(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Fa()&&(b=Ga(a.key))?(a[a.id]=b,a.b=!0):!1}function ke(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}var se=0;
|
||||
function Ee(a,b,c,d,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,c,d,e,f)})}
|
||||
function Fe(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(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,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[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{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Ge(a,b,c)}})}else c(a,null)}
|
||||
function He(a,b,c,d){function e(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=na(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)}c||
|
||||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?Ee(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),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(d)}):f(d)};"<"!=b.charAt(0)?Ee(b,a,d,!0,e,l):Fe(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(z){f(z.message)}return k}window.embedPDP11=function(a,b,c,d){Sa(!1);return He(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta;})();
|
||||
111
versions/pdp11/1.30.0/pdp11.js
Normal file
111
versions/pdp11/1.30.0/pdp11.js
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
(function(){var m;function aa(a){var b=16,c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var f,d=a,e=b;(e&&10!=e?16==e?null!==d.match(/^[0-9a-f]+$/i):2==e&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}
|
||||
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function ba(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ca(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function da(){var a=p();return-1!==a.indexOf("pcjs.org",a.length-8)}
|
||||
var ea={"&":"&","<":"<",">":">",'"':""","'":"'"};function fa(a){return a.replace(/[&<>"']/g,function(a){return ea[a]})}var q=Date.now||function(){return+new Date};function ga(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
|
||||
function r(a,b,c,d){var f=0,e=null,h=null;if("object"==typeof resources&&(e=resources[a]))return d&&d(a,e,f),[e,f];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(e=g.responseText,200==g.status||!g.status&&e.length&&"file:"==(window?window.location.protocol:"file:")||(f=g.status||-1),d&&d(a,e,f))});if(b&&"object"==
|
||||
typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(k)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(e=g.responseText,200!=g.status&&(f=g.status||-1),d&&d(a,e,f),h=[e,f]);return h}function p(){return"http://"+(window?window.location.host:"www.pcjs.org")}
|
||||
function t(a){window&&window.alert(a)}function ha(a){var b=!1;window&&(b=window.confirm(a));return b}var ia=null;function ja(){if(null==ia){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}ia=a}return ia}function ka(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
|
||||
function la(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ma(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var u={init:[],show:[],exit:[]},na=!1,oa=!1,pa=!0;function qa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function v(a){u.init.push(a)}
|
||||
function ra(a){if(pa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function sa(a){!pa&&a?(pa=!0,na&&ta("init"),oa&&ta("show")):pa=a}function ta(a){u[a]&&ra(u[a])}qa("onload",function(){na=!0;ra(u.init)});qa("onpageshow",function(){oa=!0;ra(u.show)});qa(ma("Opera")||ma("iOS")?"onunload":"onbeforeunload",function(){ra(u.exit)});
|
||||
function w(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ja=b.comment;this.$a=b;b=this.id.indexOf(".");0>b?this.ta=this.id:(this.Ka=this.id.substr(0,b),this.ta=this.id.substr(b+1));this[a]=c;this.h={ready:!1,ha:!1,ua:!1,A:!1,error:!1};this.qa=null;this.h.error=!1;this.o={};this.B=null;x.push(this)}var ua=void 0,va={};
|
||||
if(window){ua||(ua=window.location.search.substr(1));for(var wa,xa=/\+/g,ya=/([^&=]+)=?([^&]*)/g;wa=ya.exec(ua);)va[decodeURIComponent(wa[1].replace(xa," "))]=decodeURIComponent(wa[2].replace(xa," "))}function za(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
|
||||
function y(a,b){b||(b=w);a.prototype=za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Aa=window.PCjs.Machines||(window.PCjs.Machines={}),x=window.PCjs.Components||(window.PCjs.Components=[])}else Aa={},x=[];function Ba(a,b,c){Aa[a]&&b&&(Aa[a][b]=c)}function A(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}
|
||||
function Ca(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
|
||||
function C(a,b){for(var c=D(b.parentNode,"pdp11-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,e=0;e<f.length;e++){var h=f[e];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.L(g.type,g.binding,h,g.value),l=k.length}}}}
|
||||
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
|
||||
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},L:function(a,b,c){switch(b){case "clear":return this.o[b]||(this.o[b]=c,c.onclick=function(a){return function(){a.o.print&&(a.o.print.value="")}}(this)),!0;case "print":return this.o[b]||(this.wa=this.o[b]=c,c.value="",this.H=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
|
||||
this.w=function(a){this.H(a,this.ta)}),!0;default:return!1}},log:function(){},H:function(){},status:function(a){this.H(this.ta+": "+a)},w:function(a,b,c){c=c||this.type;b||t((c?c+": ":"")+a)},Y:function(){return this.h.A=!0},X:function(a,b){b&&(this.h.A=!1);return!0}};function Da(a,b){if(a.h.ua)return a.h.ha&&(a.h.ha=!1),a.h.ua=!1;if(a.h.error)return a.H(a.toString()+" error"),!1;a.h.ha=b;return a.h.ha}function E(a){if(!a.h.error&&(a.h.ready=!0,a.h.ready)){var b=a.qa;a.qa=null;b&&b()}}
|
||||
function Ea(a,b){b&&(a.h.ready?b():a.qa=b);return a.h.ready}var Fa="undefined"!==typeof ArrayBuffer;function Ga(a){w.call(this,"Panel",a,Ga)}y(Ga);m=Ga.prototype;m.L=function(a,b,c,d){return this.l&&this.l.L(a,b,c,d)||this.a&&this.a.L(a,b,c,d)?!0:this.parent.L.call(this,a,b,c,d)};m.ea=function(a,b,c,d){this.l=a;this.u=b;this.a=c;this.B=d};m.Y=function(a,b){b||Ha();return!0};m.X=function(){return!0};m.da=function(){};
|
||||
function Ha(){for(var a=!1,b=D(document,"pdp11","panel"),c=0;c<b.length;c++){var d=b[c],f=B(d),e;a:{e=f.id;if(void 0!==e)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===e){e=x[h];break a}e=null}e||(a=!0,e=new Ga(f));C(e,d);a&&E(e)}}v(Ha);
|
||||
function Ia(a,b,c){w.call(this,"Bus",a,Ia);this.a=b;this.B=c;this.g=a.busWidth||16;this.j=Math.pow(2,this.g);this.u=this.j-1|0;this.f=16>=this.g?10:20>=this.g?12:24>=this.g?14:15;this.c=1<<this.f;this.l=this.c>>2;this.m=this.c-1;this.i=this.j/this.c|0;a=new F;Ja(a,this.B);this.b=Array(this.i);for(b=0;b<this.i;b++)this.b[b]=a;E(this)}y(Ia);Ia.prototype.reset=function(){};Ia.prototype.Y=function(a,b){b||this.reset();return!0};
|
||||
function Ka(a,b,c,d){for(var f=b,e=c,h=f>>>a.f;0<e&&h<a.b.length;){var g=a.b[h],k=h*a.c,l=a.c-(f-k);l>e&&(l=e);if(g&&g.size){if(g.type==d){if(f+e<=g.fa)return g.ra+=g.fa-f,g.fa=f,!0;if(f>=g.fa+g.ra){l=g.size-(f-k);l>e&&(l=e);g.ra=f-g.fa+l;f=k+a.c;e-=l;h++;continue}}return La(1,f,e)}f=new F(f,l,a.c,d);Ja(f,a.B,g);a.b[h++]=f;f=k+a.c;e-=l}return 0>=e?(a.status(Math.floor(c/1024)+"Kb "+Ma[d]+" at "+("0x"+n(b,4))),!0):La(2,b,c)}
|
||||
function La(a,b,c){t("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Na;if(Fa){var Oa=new ArrayBuffer(2);(new DataView(Oa)).setUint16(0,256,!0);Na=256===(new Uint16Array(Oa))[0]}else Na=!1;var Pa=Na;
|
||||
function F(a,b,c,d){this.id=Qa+=2;this.a=null;this.fa=a;this.ra=b;this.size=c||0;this.type=d||Ra;this.o=d==Sa;Ja(this);this.W=this.Wa=!1;if(c)if(Fa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.j=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),Ta(this,Pa?Ua:Va);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;Ta(this,Wa)}else Ta(this)}var Ra=0,Sa=2,Ma=["NONE","RAM","ROM","VID","H/W"],Qa=0;
|
||||
F.prototype={constructor:F,parent:null,save:function(){var a,b;if(Fa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Fa)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.W=!0}return!1},m:function(){return 255},s:function(){},K:function(a,b){return this.l(a++,b++)|this.l(a,b)<<8},$:function(a,b,c){this.u(a++,b&255,c++);this.u(a,b>>8,c)},G:function(a){return this.a[a>>
|
||||
2]>>>((a&3)<<3)&255},P:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},U:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.W=!0},ca:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.W=!0},C:function(a,b){return this.D(a,b)},J:function(a,b){return this.N(a,b)},S:function(a,b,c){this.o||this.Ua(a,b,c)},Z:function(a,b,c){this.o||
|
||||
this.aa(a,b,c)},v:function(a){return this.b[a]},F:function(a){return this.b[a]},I:function(a){return this.f.getUint16(a,!0)},O:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.j[a>>1]},R:function(a,b){this.b[a]=b;this.W=!0},T:function(a,b){this.b[a]=b;this.W=!0},V:function(a,b){this.f.setUint16(a,b,!0);this.W=!0},ba:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.j[a>>1]=b;this.W=!0}};function Ja(a,b,c){a.B=b;a.g=a.i=0;c&&((a.g=c.g)&&Xa(a,Ya,!1),(a.i=c.i)&&Za(a,Ya,!1))}
|
||||
function Za(a,b,c){c&&a.i||(a.u=!a.o&&b[2]||a.s);if(c||void 0===c)a.Ua=b[2]||a.s,a.aa=b[3]||a.$}function Xa(a,b,c){c&&a.g||(a.l=b[0]||a.m);if(c||void 0===c)a.D=b[0]||a.m,a.N=b[1]||a.K}function Ta(a,b){b||(b=$a);Xa(a,b,void 0);Za(a,b,void 0)}var $a=[],Wa=[F.prototype.G,F.prototype.P,F.prototype.U,F.prototype.ca],Ya=[F.prototype.C,F.prototype.J,F.prototype.S,F.prototype.Z];if(Fa)var Va=[F.prototype.v,F.prototype.I,F.prototype.R,F.prototype.V],Ua=[F.prototype.F,F.prototype.O,F.prototype.T,F.prototype.ba];
|
||||
function ab(a,b){w.call(this,"CPU",a,ab);var c=a.multiplier||1;this.Aa=a.cycles||b;this.T=c;this.va=Math.round(this.Aa/1E4)/100;this.R=this.va*this.T;this.h.M=!1;this.h.Sa=!1;this.h.ga=a.autoStart;this.h.Fa=!1;this.h.pa=!1;this.na=this.S=0;this.oa=a.csStart;this.$=a.csInterval;this.aa=a.csStop;this.ka=[];this.Za=this.Da.bind(this);E(this)}y(ab);var bb=["power","reset"];m=ab.prototype;
|
||||
m.ea=function(a,b,c,d){this.l=a;this.u=b;this.B=d;for(b=0;b<bb.length;b++)(c=this.o[bb[b]])&&this.l.L(null,bb[b],c);this.Z=null;a=cb(a,"autoStart");null!=a&&(this.h.ga="true"==a?!0:"false"==a?!1:!!a);E(this)};m.reset=function(){};m.save=function(){return null};m.restore=function(){return!1};m.Y=function(a,b){if(!b){if(a&&this.restore){db(this);if(!this.restore(a))return!1;eb(this)}else this.reset();this.H("No debugger detected")}fb(this);return!0};m.X=function(a){return a?this.save():!0};
|
||||
m.ga=function(){return this.h.ga||void 0===this.o.run?(this.Da(),!0):!1};m.Ha=function(){return 0};function eb(a){void 0===a.oa&&(a.oa=0);void 0===a.$&&(a.$=-1);void 0===a.aa&&(a.aa=-1);a.h.pa=0<=a.oa&&0<a.$;a.h.pa&&(a.na=0,a.S=a.oa-a.N)}function gb(a,b,c,d){a.o[b]&&(void 0===c&&(a.h.error=!0,a.w("Value for "+b+" is invalid"),G(a)),c=!a.h.M||a.h.Fa?n(c,d):"--------".substr(0,d),a.o[b].textContent!=c&&(a.o[b].textContent=c))}
|
||||
m.L=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.o[b]=c;a=!0;break;case "run":this.o[b]=c;c.onclick=function(){var a;if(a=d.l)if(a=d.l,a.h.A)a=!0;else{var b=null,c,g=A(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.ready);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.A);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.h.ready?"powered yet":"ready yet"+(b.qa?" (waiting for notification)":""))+".");a=!1}a&&(d.h.M?G(d):d.Da())};a=!0;break;
|
||||
case "speed":this.o[b]=c;a=!0;break;case "setSpeed":this.o[b]=c,c.onclick=function(){hb(d,d.T<<1)},c.textContent=this.R.toFixed(2)+"Mhz",a=!0}return a};function ib(a,b,c){a.N+=b;c&&(a.K=a.G=0)}function jb(a,b){var c=1;b&&1<a.T&&a.I&&(c=a.I/a.va);a.Oa=Math.round(1E3/30);a.ja=Math.floor(a.Aa/30*c);b||(a.ba=a.ja);a.Ba=0}function kb(a){return a.N+a.F+a.K-a.G}function db(a){a.I=0;a.Pa=0;a.N=a.F=a.K=a.G=0;eb(a);hb(a,1)}
|
||||
function hb(a,b){if(void 0!==b){.8>a.I/a.R&&(b=1);a.T=b;var c=a.va*a.T;if(a.R!=c){a.R=c;var c=a.R.toFixed(2)+"Mhz",d=a.o.setSpeed;d&&(d.textContent=c);a.H("target speed: "+c)}}ib(a,a.F);a.F=0;a.D=q();a.J=0;jb(a)}function lb(a){a.K-=a.G;a.G=0}
|
||||
m.Da=function(){if(Da(this,!0)){if(!this.h.M){hb(this);this.l&&this.l.start(this.D,kb(this));this.h.M=!0;this.h.Sa=!0;this.Z&&this.Z.start();var a=this.o.run;a&&(a.textContent="Halt");this.l&&this.l.da(!0)}this.Ba>=this.Aa&&jb(this,!0);this.ca=0;this.ma=q();this.J&&(a=this.ma-this.J,a>this.Oa&&(this.D+=a,this.D>this.ma&&(this.D=this.ma)));try{do{for(var b=this.h.pa?1:this.ja,c=this.ka.length-1;0<=c;c--){var d=this.ka[c];0>d[0]||b>d[0]&&(b=d[0])}this.Ta(b);for(var f=this.K-this.G,a=f,e=this.ka.length-
|
||||
1;0<=e;e--){var h=this.ka[e];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ca+=f;this.F+=f;ib(this,0,!0);a=f;if(this.h.pa){var g=!1;this.na=this.na+this.Ha()|0;this.S-=a;0>=this.S&&(this.S+=this.$,g=!0);0<=this.aa&&this.aa<=kb(this)&&(this.$=this.aa=-1,eb(this),G(this),g=!0);g&&this.H(kb(this)+" cycles: checksum="+n(this.na))}this.ba-=f;if(0>=this.ba){this.ba+=this.ja;15<=++this.Pa&&(this.l&&this.l.da(),this.Pa=0);break}}while(this.h.M)}catch(k){G(this);fb(this);this.l&&this.l.stop(q(),kb(this));
|
||||
Da(this,!1);b=k.stack||k.message;this.h.error=!0;this.w(b);return}b=setTimeout;c=this.Za;this.J=q();d=this.Oa;this.ca&&(d=Math.round(d*this.ca/this.ja));d=d-(this.J-this.ma);if(f=this.J-this.D)this.I=Math.round(this.F/(10*f))/100,864E5<=f&&(this.N=0,hb(this));if(0>d||this.I<this.R)-1E3>d&&(this.D-=d),d=0;this.Ba+=this.ca;this.J+=d;b(c,d)}else fb(this),this.l&&this.l.stop(q(),kb(this))};m.Ta=function(){return 0};
|
||||
function G(a){a.h.ha&&(a.h.ua=!0);lb(a);ib(a,a.F);a.F=0;if(a.h.M){a.h.M=!1;a.Z&&a.Z.stop();var b=a.o.run;b&&(b.textContent="Run")}a.h.complete=void 0}function fb(a){a.l&&a.l.da(void 0)}
|
||||
function mb(a){this.Ya=+a.model||1170;ab.call(this,a,1E6);this.Ia=0;this.g=65536;this.c=this.b=32768;this.f=65535;this.i=15;this.a=[0,0,0,0,0,0,0,0];this.Ra=[0,0,0,0,0,0];this.U=[0,0,0,0];this.memory=[];this.s=[];this.Ca=this.Qa=0;this.O=2;this.P=255;this.m=0;this.V=-1;this.Na=this.xa=this.Ma=this.j=this.sa=this.C=this.v=0;this.la=[7,7,7,7];this.za=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,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.bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h.complete=this.h.Va=!1}y(mb,ab);m=mb.prototype;m.reset=function(){this.h.M&&G(this);nb(this);db(this);this.h.error=!1;this.parent.reset.call(this)};
|
||||
function nb(a){a.P=255;a.s=[];a.Qa=0;a.v=a.C=a.sa=a.Ma=0;a.la[0]=a.la[1]=a.la[3]=7;a.xa=0}m.Ha=function(){return 0};m.save=function(){var a=new H(this);I(a,0,[]);I(a,1,[this.La,this.N,this.T]);for(var b=this.u,c=0,d=[],f=0;f<b.i;f++){var e=b.b[f];if(e.W||e.Wa){d[c++]=f;var h=c++;a:if(e=e.save()){for(var g=0,k=0,l=[];g<e.length;){for(var Q=e[g],z=g+1;z<e.length&&e[z]===Q;)z++;l[k++]=z-g;l[k++]=Q;g=z}if(l.length<e.length){e=l;break a}}d[h]=e}}I(a,2,d);return a.data()};
|
||||
m.restore=function(a){var b=a[1];this.La=b[0];this.N=b[1];hb(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],f=a[c+1];if(f&&f.length<b.l){for(var e=0,h=Array(b.l),g=0;g<f.length-1;)for(var k=f[g++],l=f[g++];k--;)h[e++]=l;f=h}e=b.b[d];if(!e||!e.restore(f)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
|
||||
m.L=function(a,b,c){var d=!1;switch(b){case "PC":case "PSW":case "SF":case "ZF":case "CF":this.o[b]=c;this.Ia++;d=!0;break;default:d=this.parent.L.call(this,a,b,c)}return d};m.da=function(a){this.Ia&&(a||!this.h.M||this.h.Fa)&&(a=this.i&-14|0|(this.ab&255?0:4)|(this.ab&256?1:0),gb(this,"PSW",a,4),gb(this,"SF",a&8?1:0,1),gb(this,"ZF",a&4?1:0,1),gb(this,"CF",a&1?1:0,1));if(a=this.o.speed)a.textContent=this.h.M&&this.I?this.I.toFixed(2)+"Mhz":"Stopped"};
|
||||
function ob(a,b){var c,d;a.b=b<<12;a.f=~b&4;a.c=b<<14;a.g=b<<16;if((b^a.i)&2048)for(c=0;6>c;c++)d=a.a[c],a.a[c]=a.Ra[c],a.Ra[c]=d;(a.j=b>>14&3)!==(a.i>>14&3)&&(a.U[d]=a.a[6],a.a[6]=a.U[a.j]);a.O=2;a.i=b}
|
||||
function J(a,b){var c,d,f=0;0>a.V?(a.i=a.i&63728|a.b>>12&8|a.c>>14&2|a.g>>16&1,a.f&65535||(a.i|=4),a.V=a.i):a.j||(b=4,f=1);a.v&57344||(a.C=63222);a.j=0;0<=(c=K(a,b|65536))&&0<=(d=K(a,b+2&65535|65536))&&(ob(a,d&53247|a.V>>2&12288),f&&(a.a[6]=4),0<=L(a,a.V)&&0<=L(a,a.a[7])&&(a.a[7]=c));a.m=0;return a.V=-1}
|
||||
function pb(a,b,c){var d,f,e,h=0;if(c&a.Ma){d=b>>13&a.la[a.j];f=a.za[a.j][d];e=(a.za[a.j][d+16]<<6)+(b&8191)&4194303;if(a.sa&16){if(3932160<=e&&4186112>e){e=e&262143;var g=e>>13&31;31>g?a.sa&32&&(e=a.bb[g]+(e&8190)&4194302,3932160<=e&&4186112>e&&console.log("panic(898)")):e|=4186112}}else e&=262143,253952<=e&&(e|=4186112);if(3932160>e&&(3915776<=e||e&1&&!(c&1)))return J(a,4);switch(f&7){case 1:h=4096;case 2:f|=128;c&4&&(h=8192);break;case 4:h=4096;case 5:c&4&&(h=4096);case 6:f|=c&4?192:128;break;
|
||||
default:h=32768}32512!==(f&32520)&&(f&8?f&32512&&(b&8128)<(f>>2&8128)&&(h|=16384):(b&8128)>(f>>2&8128)&&(h|=16384));a.za[a.j][d]=f;if(4194170!==e||a.j)a.xa=a.j,a.Na=d;if(h){if(h&57344)return 0<=a.V&&(h|=128),a.v&57344||(a.v=a.v|h|a.xa<<5|a.Na<<1),J(a,168);a.v&61440||!(4191360>e||4194239<e)||(a.v|=4096,a.v&512&&(a.m|=2))}}else if(e=b&65535,57344<=e)e|=4186112;else if(e&1&&!(c&1))return J(a,4);return e}function M(a,b){return 4194304<=b?a.a[b-4194304]:3932160<=b?-1:0<=b?a.memory[b>>1]:b}
|
||||
function N(a,b,c){c&=65535;return 4194304<=b?a.a[b-4194304]=c:3932160<=b?-1:0<=b?a.memory[b>>1]=c:b}function O(a,b){var c;return 4194304<=b?a.a[b-4194304]&255:3932160<=b?-1:0<=b?(c=a.memory[b>>1],b&1&&(c=c>>8),c&255):b}function P(a,b,c){c&=255;return 4194304<=b?a.a[b-4194304]=a.a[b-4194304]&65280|c:3932160<=b?-1:0<=b?b&1?a.memory[b>>1]=c<<8|a.memory[b>>1]&255:a.memory[b>>1]=a.memory[b>>1]&65280|c:b}function K(a,b){return M(a,pb(a,b,2))}
|
||||
function qb(a){var b=K(a,a.a[6]|65536);0<=b&&(a.a[6]=a.a[6]+2&65535);return b}function L(a,b){var c,d;a.a[6]=d=a.a[6]-2&65535;a.v&57344||(a.C=a.C<<8|246);if(!a.j&&d<=a.P&&4<d){if(d<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return 0<=(c=pb(a,d|65536,4))?N(a,c,b):c}
|
||||
function R(a,b,c){var d,f,e=b&7;switch(b>>3&7){case 0:return J(a,4);case 1:if(6===e&&!a.j&&c&4&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32||65534<=a.a[6])return a.a[6]=4,J(a,4);a.m|=4}return 7===e?a.a[e]:a.a[e]|65536;case 2:f=2;d=a.a[e];7!==e&&(d|=65536,6>e&&c&1&&(f=1));break;case 3:f=2;d=a.a[e];7!==e&&(d|=65536);if(0>(d=K(a,d)))return d;d|=65536;break;case 4:f=-2;6>e&&c&1&&(f=-1);d=a.a[e]+f&65535;7!==e&&(d|=65536);break;case 5:f=-2;d=a.a[e]-2&65535;7!==e&&(d|=65536);if(0>(d=K(a,d)))return d;
|
||||
d|=65536;break;case 6:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return d|65536;case 7:if(0>(d=K(a,a.a[7])))return d;a.a[7]=a.a[7]+2&65535;d=d+a.a[e]&65535;return 0>(d=K(a,d|65536))?d:d|65536}a.a[e]=a.a[e]+f&65535;a.v&57344||(a.C=a.C<<8|f<<3&248|e);if(6===e&&!a.j&&c&4&&0>=f&&(a.a[6]<=a.P||65534<=a.a[6])){if(a.a[6]<=a.P-32)return a.a[6]=4,J(a,4);a.m|=4}return d}function S(a,b,c){var d;return b&56?(0<=(d=R(a,b,c))&&(d=pb(a,d,c)),d):4194304+(b&7)}
|
||||
function T(a,b){var c;b&56?0<=(c=S(a,b,2))&&(c=M(a,c)):c=a.a[b&7];return c}function U(a,b){var c;b&56?0<=(c=S(a,b,3))&&(c=O(a,c)):c=a.a[b&7]&255;return c}function V(a,b){return((b&128?b|65280:b&255)<<1)+a&65535}
|
||||
m.Ta=function(a){this.h.complete=!0;this.h.Va=!1;this.h.Sa=!1;this.K=this.G=a;this.La&256?(lb(this),a=!1):a=!0;if(a){do{var b,c,d,f,e;if(this.O)if(1===this.O)this.O=2;else{this.O=0;e=-1;b=this.Qa&224;if(0<(a=this.s.length))for(;0<a--;){if(0<this.s[a].ya){this.s[a].ya--;this.O=2;break}if(this.s[a].Ea){if(!this.s[a].Ea()){this.s.splice(a,1);e--;continue}this.s[a].Ea=null}this.s[a].Xa>b&&(b=this.s[a].Xa,e=a)}b>(this.i&224)&&(0>e?J(this,160):(J(this,this.s[e].cb),this.s.splice(e,1)))}this.v&57344||(this.C=
|
||||
0);this.m=this.i&16;if(0<=(a=K(this,this.a[7])))switch(this.a[7]=this.a[7]+2&65535,a&61440){case 4096:0<=(b=T(this,a>>6))&&(a&56?0<=(d=S(this,a,4))&&0<=N(this,d,b)&&(this.b=this.f=b,this.c=0):(this.b=this.f=this.a[a&7]=b,this.c=0));break;case 8192:0<=(b=T(this,a>>6))&&0<=(c=T(this,a))&&(this.b=this.f=this.g=a=b-c,this.c=(b^c)&(b^a));break;case 12288:0<=(b=T(this,a>>6))&&0<=(c=T(this,a))&&(this.b=this.f=b&c,this.c=0);break;case 16384:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c&~b,
|
||||
0<=N(this,d,a)&&(this.b=this.f=a,this.c=0)):(this.b=this.f=a=this.a[a&7]&=~b,this.c=0));break;case 20480:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c|b,0<=N(this,d,a)&&(this.b=this.f=a,this.c=0)):(this.b=this.f=a=this.a[a&7]|=b,this.c=0));break;case 24576:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=b+c,0<=N(this,d,a)&&(this.b=this.f=this.g=a,this.c=(b^a)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=b+c)&65535,this.b=this.f=this.g=a,this.c=(b^a)&(c^a)));break;case 36864:0<=
|
||||
(b=U(this,a>>6))&&(a&56?0<=(d=S(this,a,5))&&0<=P(this,d,b)&&(this.b=this.f=b<<8,this.c=0):(b&128&&(b|=65280),this.b=this.f=this.a[a&7]=b,this.c=0));break;case 40960:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(a=b-c,this.b=this.f=this.g=a<<8,this.c=((b^c)&(b^a))<<8);break;case 45056:0<=(b=U(this,a>>6))&&0<=(c=U(this,a))&&(this.b=this.f=(b&c)<<8,this.c=0);break;case 49152:0<=(b=U(this,a>>6))&&0<=(c=O(this,d=S(this,a,7)))&&(a=c&~b,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=0));break;case 53248:0<=(b=U(this,
|
||||
a>>6))&&0<=(c=O(this,d=S(this,a,7)))&&(a=c|b,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=0));break;case 57344:0<=(b=T(this,a>>6))&&(a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c-b,0<=N(this,d,a)&&(this.b=this.f=this.g=a,this.c=(b^c)&(c^a))):(e=a&7,c=this.a[e],this.a[e]=(a=c-b)&65535,this.b=this.f=this.g=a,this.c=(b^c)&(c^a)));break;default:switch(a&65024){case 2048:0<=(f=R(this,a,0))&&(e=a>>6&7,0<=L(this,this.a[e])&&(this.a[e]=this.a[7],this.a[7]=f&65535));break;case 28672:0<=(b=T(this,a))&&(e=a>>6&7,b&
|
||||
32768&&(b|=-65536),c=this.a[e],c&32768&&(c|=-65536),a=~~(b*c),this.a[e]=a>>16&65535,this.a[e|1]=a&65535,this.b=a>>16,this.f=this.b|a,this.g=this.c=0,-32768>a||32767<a)&&(this.g=65536);break;case 29184:0<=(b=T(this,a))&&(b?(e=a>>6&7,c=this.a[e]<<16|this.a[e|1],this.g=this.c=0,b&32768&&(b|=-65536),a=~~(c/b),-32768<=a&&32767>=a?(this.a[e]=a&65535,this.a[e|1]=c-a*b&65535,this.f=a>>16|a,this.b=a>>16):(this.c=32768,this.f=a>>15|a,this.b=c>>16,-1===b&&65534===this.a[e]&&(this.a[e]=this.a[e|1]=1))):(this.f=
|
||||
this.b=0,this.c=32768,this.g=65536));break;case 29696:0<=(b=T(this,a))&&(e=a>>6&7,a=this.a[e],a&32768&&(a|=4294901760),this.g=this.c=0,b&=63,b&32?(b=64-b,16<b&&(b=16),this.g=a<<17-b,a=a>>b):b&&(16<b?(this.c=a,a=0):(this.g=a=a<<b,(c=a>>15&65535)&&65535!==c&&(this.c=32768))),this.a[e]=a&65535,this.b=this.f=a);break;case 30208:if(0<=(b=T(this,a))){e=a>>6&7;c=this.a[e]<<16|this.a[e|1];this.g=this.c=0;b&=63;if(b&32)b=64-b,32<b&&(b=32),a=c>>b-1,this.g=a<<16,a>>=1,c&2147483648&&(a|=4294967295<<32-b);else if(b){if(a=
|
||||
c<<b-1,this.g=a>>15,a<<=1,32<b&&(b=32),c>>=32-b)c|=4294967295<<b&4294967295,4294967295!==c&&(this.c=32768)}else a=c;this.a[e]=a>>16&65535;this.a[e|1]=a&65535;this.b=a>>16;this.f=a>>16|a}break;case 30720:a&56?0<=(c=M(this,d=S(this,a,6)))&&(c^=this.a[a>>6&7],0<=N(this,d,c)&&(this.b=this.f=c,this.c=0)):(this.b=this.f=c=this.a[a&7]^=this.a[a>>6&7],this.c=0);break;case 32256:e=a>>6&7;if(this.a[e]=this.a[e]-1&65535)this.a[7]=this.a[7]-((a&63)<<1)&65535;break;default:switch(a&65280){case 256:this.a[7]=V(this.a[7],
|
||||
a);break;case 512:this.f&65535&&(this.a[7]=V(this.a[7],a));break;case 768:this.f&65535||(this.a[7]=V(this.a[7],a));break;case 1024:(this.b&32768)===(this.c&32768)&&(this.a[7]=V(this.a[7],a));break;case 1280:(this.b&32768)!==(this.c&32768)&&(this.a[7]=V(this.a[7],a));break;case 1536:this.f&65535&&(this.b&32768)===(this.c&32768)&&(this.a[7]=V(this.a[7],a));break;case 1792:this.f&65535&&(this.b&32768)===(this.c&32768)||(this.a[7]=V(this.a[7],a));break;case 32768:this.b&32768||(this.a[7]=V(this.a[7],
|
||||
a));break;case 33280:!(this.g&65536)&&this.f&65535&&(this.a[7]=V(this.a[7],a));break;case 33024:this.b&32768&&(this.a[7]=V(this.a[7],a));break;case 33536:if(this.g&65536||!(this.f&65535))this.a[7]=V(this.a[7],a);break;case 33792:this.c&32768||(this.a[7]=V(this.a[7],a));break;case 34048:this.c&32768&&(this.a[7]=V(this.a[7],a));break;case 34304:this.g&65536||(this.a[7]=V(this.a[7],a));break;case 34560:this.g&65536&&(this.a[7]=V(this.a[7],a));break;case 34816:J(this,24);break;case 35072:J(this,28);break;
|
||||
default:switch(a&65472){case 64:0<=(f=R(this,a,0))&&(this.a[7]=f&65535);break;case 192:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<8|c>>8,0<=N(this,d,a)&&(this.b=this.f=c&65280,this.c=this.g=0)):(e=a&7,c=this.a[e],this.a[e]=(c<<8|c>>8)&65535,this.b=this.f=c&65280,this.c=this.g=0);break;case 2560:a&56?0<=(d=S(this,a,4))&&0<=N(this,d,0)&&(this.b=this.g=this.c=this.f=0):this.b=this.g=this.c=this.f=this.a[a&7]=0;break;case 2624:0<=(c=M(this,d=S(this,a,6)))&&(a=~c,0<=N(this,d,a)&&(this.b=this.f=a,this.g=
|
||||
65536,this.c=0));break;case 2688:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c+1,0<=N(this,d,a)&&(this.b=this.f=a,this.c=a&(a^c))):(e=a&7,c=this.a[e],a=c+1,this.a[e]=a&65535,this.b=this.f=a,this.c=a&(a^c));break;case 2752:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c-1,0<=N(this,d,a)&&(this.b=this.f=a,this.c=(a^c)&c)):(e=a&7,c=this.a[e],a=c-1,this.a[e]=a&65535,this.b=this.f=a,this.c=(a^c)&c);break;case 2816:0<=(c=M(this,d=S(this,a,6)))&&(a=-c,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a&c));break;case 2880:0<=
|
||||
(c=M(this,d=S(this,a,6)))&&(a=c+(this.g>>16&1),0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a&(a^c)));break;case 2944:0<=(c=M(this,d=S(this,a,6)))&&(a=c-(this.g>>16&1),0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=(a^c)&c));break;case 3008:0<=(c=T(this,a))&&(this.b=this.f=c,this.g=this.c=0);break;case 3072:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=(this.g&65536|c)>>1,0<=N(this,d,a)&&(this.g=c<<16,this.b=this.f=a,this.c=a^this.g>>1)):(e=a&7,c=this.a[e],a=(this.g&65536|c)>>1,this.a[e]=a&65535,this.g=
|
||||
c<<16,this.b=this.f=a,this.c=a^this.g>>1);break;case 3136:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<1|this.g>>16&1,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a^c)):(e=a&7,c=this.a[e],a=c<<1|this.g>>16&1,this.a[e]=a&65535,this.g=this.b=this.f=a,this.c=a^c);break;case 3200:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c&32768|c>>1,0<=N(this,d,a)&&(this.g=c<<16,this.b=this.f=a,this.c=this.b^this.g>>1)):(e=a&7,c=this.a[e],a=c&32768|c>>1,this.a[e]=a&65535,this.g=c<<16,this.b=this.f=a,this.c=this.b^this.g>>
|
||||
1);break;case 3264:a&56?0<=(c=M(this,d=S(this,a,6)))&&(a=c<<1,0<=N(this,d,a)&&(this.g=this.b=this.f=a,this.c=a^c)):(e=a&7,c=this.a[e],a=c<<1,this.a[e]=a&65535,this.g=this.b=this.f=a,this.c=a^c);break;case 3328:f=this.a[7]+((a&63)<<1)&65535;0<=(b=K(this,f|65536))&&(this.a[7]=this.a[5],this.a[5]=b,this.a[6]=f+2&65535);break;case 3392:a&56?0<=(f=R(this,a,0))&&(61440!==(this.i&61440)&&(f&=65535),this.j=this.i>>12&3,0<=(b=K(this,f))&&(this.j=this.i>>14&3,0<=L(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&
|
||||
7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 3456:0<=(c=qb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(f&=65535,this.j=this.i>>12&3,0<=(d=pb(this,f,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;case 3520:0<=(d=S(this,a,4))&&(a=-(this.b>>15&1),0<=N(this,d,
|
||||
a)&&(this.f=a,this.c=0));break;case 35328:a&56?0<=(d=S(this,a,5))&&0<=P(this,d,0)&&(this.b=this.g=this.c=this.f=0):(this.a[a&7]&=65280,this.b=this.g=this.c=this.f=0);break;case 35392:0<=(c=O(this,d=S(this,a,7)))&&(a=~c,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.g=65536,this.c=0));break;case 35456:0<=(c=O(this,d=S(this,a,7)))&&(a=c+1,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=(a&(a^c))<<8));break;case 35520:0<=(c=O(this,d=S(this,a,7)))&&(a=c-1,0<=P(this,d,a)&&(this.b=this.f=a<<8,this.c=((a^c)&c)<<8));
|
||||
break;case 35584:0<=(c=O(this,d=S(this,a,7)))&&(a=-c,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a&c)<<8));break;case 35648:0<=(c=O(this,d=S(this,a,7)))&&(a=c+(this.g>>16&1),0<=P(this,d,a)&&(this.b=this.f=this.g=a<<8,this.c=(a&(a^c))<<8));break;case 35712:0<=(c=O(this,d=S(this,a,7)))&&(a=c-(this.g>>16&1),0<=P(this,d,a)&&(this.b=this.f=this.g=a<<8,this.c=((a^c)&c)<<8));break;case 35776:0<=(c=U(this,a))&&(this.b=this.f=c<<8,this.g=this.c=0);break;case 35840:0<=(c=O(this,d=S(this,a,7)))&&(a=((this.g&
|
||||
65536)>>8|c)>>1,0<=P(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 35904:0<=(c=O(this,d=S(this,a,7)))&&(a=c<<1|this.g>>16&1,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 35968:0<=(c=O(this,d=S(this,a,7)))&&(a=c&128|c>>1,0<=P(this,d,a)&&(this.g=c<<16,this.b=this.f=a<<8,this.c=this.b^this.g>>1));break;case 36032:0<=(c=O(this,d=S(this,a,7)))&&(a=c<<1,0<=P(this,d,a)&&(this.g=this.b=this.f=a<<8,this.c=(a^c)<<8));break;case 36160:a&56?0<=(f=R(this,
|
||||
a,0))&&(this.j=this.i>>12&3,0<=(b=K(this,f|65536))&&(this.j=this.i>>14&3,0<=L(this,b)&&(this.b=this.f=b,this.c=0))):(e=a&7,b=6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]:this.U[this.i>>12&3],0<=L(this,b)&&(this.b=this.f=b,this.c=0));break;case 36224:0<=(c=qb(this))&&((this.v&57344||(this.C=22),a&56)?0<=(f=R(this,a,0))&&(this.j=this.i>>12&3,0<=(d=pb(this,f|65536,4))&&(this.j=this.i>>14&3,0<=N(this,d,c)&&(this.b=this.f=c,this.c=0))):(e=a&7,6!==e||(this.i>>2&12288)===(this.i&12288)?this.a[e]=
|
||||
c:this.U[this.i>>12&3]=c,this.b=this.f=c,this.c=0));break;default:switch(a&65528){case 128:0<=(b=qb(this))&&(e=a&7,this.a[7]=this.a[e],this.a[e]=b);break;case 152:this.i&49152||(this.i=this.i&63519|(a&7)<<5,this.O=1);break;case 160:case 168:a&1&&(this.g=0);a&2&&(this.c=0);a&4&&(this.f=1);a&8&&(this.b=0);break;case 176:case 184:a&1&&(this.g=65536);a&2&&(this.c=32768);a&4&&(this.f=0);a&8&&(this.b=32768);break;default:switch(a){case 0:49152&this.i?J(this,4):(this.Ca=3,lb(this),console.log("HALT at "+
|
||||
this.a[7].toString(8)));break;case 1:e=0;if(0<(a=this.s.length))for(;0<a--;)e+=this.s[a].ya,this.s[a].ya=0;0===e&&0===this.Ca&&(this.Ca=2,lb(this));break;case 3:J(this,12);break;case 4:J(this,16);break;case 5:this.i&49152||nb(this);break;case 2:case 6:d=this.a[6];0<=(f=K(this,d|65536))&&(d=d+2&65535,0<=(b=K(this,d|65536))&&(this.a[6]=d+2&65535,b&=63743,this.i&49152&&(b=b&63519|this.i&63712),this.a[7]=f,ob(this,b),this.m&=-17,2===a&&(this.m|=this.i&16)));break;default:J(this,8)}}}}}}this.m&&(this.m&
|
||||
2?J(this,168):this.m&4?J(this,4):this.m&16&&J(this,12),this.m=0)}while(0<this.G)}return this.h.complete?this.K-this.G:void 0===this.h.complete?0:-1};v(function(){for(var a=D(document,"pdp11","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new mb(d);C(d,c)}});
|
||||
function W(a){w.call(this,"ROM",a,W);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=ba(this.g);if(this.g){a=this.g;var b=ca(this.m);"json"!=b&&"hex"!=b&&(a=p()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;r(a,null,!0,function(a,b,e){rb(c,a,b,e)})}}y(W);W.prototype.ea=function(a,b,c,d){this.u=b;this.a=c;this.B=d;sb(this)};W.prototype.Y=function(){this.i&&(this.B&&this.B.a(this.id,this.j,this.c,this.i),delete this.i);return!0};
|
||||
W.prototype.X=function(){return!0};
|
||||
function rb(a,b,c,d){if(d)a.w("Unable to load system ROM (error "+d+": "+b+")");else{Ba(a.Ka,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),e=f.bytes,h=f.data;if(e)a.b=e;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=f;a.i=f.symbols;if(!a.b.length){t("Empty ROM: "+b);return}if(1==a.b.length){t(a.b[0]);return}}catch(g){a.w("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
|
||||
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),f=0;f<b.length;f++)a.b[f]=aa(b[f]);sb(a)}}
|
||||
function sb(a){if(!Ea(a))if(!a.g)E(a);else if(a.b&&a.u){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.h.error=!0;a.w(b)}else{b=a.j;if(Ka(a.u,b,a.c,a.l?1:Sa)){var c;for(c=0;c<a.b.length;c++){var d=a.u,f=b+c;d.b[(f&d.u)>>>d.f].Ua(f&d.m,a.b[c]&255,f)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var e=a,d=b[c],f=e.u,h=e.c,g=[],k=e.j>>>f.f;0<h&&
|
||||
k<f.b.length;)g.push(f.b[k++]),h-=f.c;f=e.u;e=e.c;h=0;for(d>>>=f.f;0<e&&d<f.b.length;){k=g[h++];if(!k)break;f.b[d++]=k;e-=f.c}}delete a.b}}E(a)}}v(function(){for(var a=D(document,"pdp11","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new W(d);C(d,c)}});function tb(a){w.call(this,"RAM",a,tb);this.f=a.addr;this.c=a.size;this.b=!1}y(tb);m=tb.prototype;m.ea=function(a,b,c,d){this.u=b;this.a=c;this.B=d;E(this)};m.Y=function(a,b){b||this.reset();return!0};m.X=function(a){return a?this.save():!0};
|
||||
m.reset=function(){!this.b&&this.c&&Ka(this.u,this.f,this.c,1)&&(this.b=!0);this.b||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};v(function(){for(var a=D(document,"pdp11","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new tb(d);C(d,c)}});function ub(a){w.call(this,"Keyboard",a,ub);E(this)}y(ub);ub.prototype.L=function(){return!1};ub.prototype.ea=function(a,b,c,d){this.l=a;this.a=c;this.B=d;this.Z=null};
|
||||
v(function(){for(var a=D(document,"pdp11","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new ub(d);C(d,c)}});
|
||||
function vb(a,b,c){w.call(this,"Computer",a,vb);this.h.A=!1;wb(this,b);this.v=cb(this,"autoPower",a);this.f=0;this.I=a.busWidth||a.buswidth;this.b=X;this.m=null;this.j=this.F=!1;this.J=cb(this,"url")||"";(Math.random()+.1).toString(36);this.c=xb(this);if(this.a=Ca("CPU",this.id)){this.B=Ca("Debugger",this.id);this.u=new Ia({id:this.Ka+".bus",busWidth:this.I},this.a,this.B);var d,f=A(this.id);if((this.g=Ca("Panel",this.id))&&this.g.wa)for(b=0;b<f.length;b++)d=f[b],d.w=this.g.w,d.H=this.g.H,d.wa=this.g.wa;
|
||||
this.H("PDP11js v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.H("Portions adapted from the PDP-11/70 Emulator v1.3 by Paul Nankervis <paulnank@hotmail.com>");for(b=0;b<f.length;b++)d=f[b],d.ea&&d.ea(this,this.u,this.a,this.B);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.l=d:this.b=parseInt(d,10));var e;if(a=cb(this,"state")||(e=!0,a.state))b=this.C=a,e||(this.j=!0,this.b=X),this.b&&(this.s=new H(this,
|
||||
"1.30.0"),Y(this.s)?b=null:delete this.s);!b&&this.b&&(b=yb(this))&&(this.j=!0);if(b){var h=this;r(b,null,!0,function(a,b,c){c?(h.l=null,h.j=!1,h.w("Unable to load machine state from server (error "+c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.m=b,h.F=!0);E(h)})}else E(this);this.o.power||(this.v=!0);!c&&this.v&&zb(this,this.ia)}else t("Unable to find CPU component")}y(vb);var X=0;
|
||||
function wb(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.G=b}function cb(a,b,c){var d=b.toLowerCase(),d=va[b]||va[d];void 0===d&&a.G&&(d=a.G[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function zb(a,b,c){for(var d=A(a.id),f=0;f<=d.length;f++){var e=f<d.length?d[f]:a;if(!Ea(e)){Ea(e,function(){zb(a,b,c)});return}}b.call(a,c)}
|
||||
function Ab(a,b){var c=new H(a,"1.30.0","validate");if(Y(c)&&Bb(c)){var d=Z(c,"timestamp"),f=b?Z(b,"timestamp"):"unknown";d!=f&&(a.w("Machine state may be out-of-date\n("+d+" vs. "+f+")\nCheck your browser's local storage limits"),b||c.clear())}}m=vb.prototype;
|
||||
m.ia=function(a){void 0===a&&(a=this.b||(this.m?1:X));if(!this.f){this.f++;var b=!1,c=!1;this.D=!1;var d=this.s||new H(this,"1.30.0");if(-1==a)b=!0;else if(a>X){if(Y(d,this.m)){this.i=new H(this,"1.30.0","failsafe");Y(this.i)&&(Cb(this,d),a=2,Db(this.i));I(this.i,"timestamp",ga());Eb(this.i);var f=this.b&&!this.j;if(1==a||ha("Click OK to restore the previous PDP11js machine state, or CANCEL to reset the machine.")){if(c=Bb(d)){var e=Z(d,"code"),h=Z(d,"data");e&&("ok"==e?Y(d,h):("error"==e&&"no machine state"!=
|
||||
h?(this.w("Error: "+h),"unable to verify user"==h&&(la("user",""),this.c=null)):this.H(e+": "+h),Db(d),Y(d)?(c=Bb(d),f=!0):c=!1))}f&&Ab(this,c?d:null)}else 2==a&&d.clear()}else Ab(this);delete this.m;delete this.s}f=A(this.id);for(e=0;e<f.length;e++)h=f[e],h!==this&&h!=this.a&&(c=Fb(this,h,d,b,c));b=[d,a,c];-1!=a?zb(this,this.Ga,b):this.Ga(b)}};
|
||||
function Fb(a,b,c,d,f){if(!b.h.A){b.h.A=!0;if(b.Y){var e=null;f&&((e=Z(c,b.id))||(e=Z(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof e&&(e=null);!b.Y(e,d)&&e&&(t("Unable to restore state for "+b.type),a.C&&!a.F?(c.clear(),a.b=X,window&&window.location.reload()):a.D=!0,b.Y(null),f=!1)}if(!d&&b.Ja)for(a=b.Ja.split("|"),c=0;c<a.length;c++)b.status(a[c])}return f}
|
||||
m.Ga=function(a){var b=a[0],c=0>a[1];a=a[2];this.K=!0;this.h.A=!0;var d=this.o.power;d&&(d.textContent="Shutdown");this.a&&(Fb(this,this.a,b,c,a),this.a.ga());this.D&&(Cb(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
|
||||
function Cb(a,b){if(ha("There may be a problem with your PDP11js machine.\n\nTo help us diagnose it, click OK to send this PDP11js machine state to http://www.pcjs.org.")){var c=a.c||"",d=b.toString(),f={app:"PDP11js",ver:"1.30.0"};f.url=a.J;f.user=c;f.type="bug";f.data=d;r("http://www.pcjs.org/api/v1/report",f,!0)}}
|
||||
function Gb(a,b,c){var d,f="none";if(a.f)return null;a.f--;var e=new H(a,"1.30.0"),h=new H(a,"1.30.0","validate"),g=ga();I(h,"timestamp",g);I(e,"timestamp",g);I(e,"version","1.30.0");I(e,"url",window?window.location.href:null);I(e,"browser",window?window.navigator.userAgent:"");a.a&&a.a.X&&(c&&G(a.a),d=a.a.X(b,c),"object"===typeof d&&I(e,a.a.id,d),c&&(a.a.h.A=!1,!1===d&&(f=null)));for(var g=A(a.id),k=0;k<g.length;k++){var l=g[k];l.h.A&&(l.X&&(d=l.X(b,c),"object"===typeof d&&I(e,l.id,d)),c&&(l.h.A=
|
||||
!1,!1===d&&(f=null)))}f&&(c?(g=d=!1,b?(a.c&&Hb(a,a.c,e.toString()),Eb(h)&&Eb(e)||(f=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&e.clear(g)):f=e.toString());c&&(a.h.A=!1,b=a.o.power)&&(b.textContent="Power");a.f=0;return f}m.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=A(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=A(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.start&&f.start(a,b)}};
|
||||
m.stop=function(a,b){for(var c=A(this.id),d=0;d<c.length;d++){var f=c[d];"CPU"!=f.type&&f!==this&&f.stop&&f.stop(a,b)}};
|
||||
m.L=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.f||(d.h.A?Gb(d,!1,!0):zb(d,d.ia))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.h.A&&!d.f)if(d.b&&!d.l){var a=ha("Click OK to save changes to this PDP11js machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Gb(d,a,!0);!a&&d.C?window&&window.location.reload():d.ia(X)}else d.reset(),d.a&&d.a.ga()},!0;case "save":if(da()){c.parentNode.removeChild(c);break}this.o[b]=c;
|
||||
c.onclick=function(){var a=xb(d,!0);if(a){var b=!!(d.b&&!d.l||d.C),c=Gb(d,b);b?Hb(d,a,c):d.w("Resume disabled, machine state not saved")}};return!0}return!1};
|
||||
function xb(a,b){var c=a.c;c||(c=ka("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=Ib(a,c))||a.w("The user ID is invalid."))):b&&a.w("Browser local storage is not available"));return c}
|
||||
function Ib(a,b){a.c=null;var c=r(p()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(la("user",c.data),a.c=c.data)}catch(f){t(f.message+" ("+d+")")}return a.c}function yb(a){var b=null;a.c&&(b=p()+"/api/v1/user?req=load&user="+a.c+"&state="+Jb(a,"1.30.0"));return b}
|
||||
function Hb(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Jb(a,"1.30.0");d.data=c;b=r(p()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var f=d.indexOf("\n");0<f&&(d=d.substr(0,f));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.w("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.w(c),la("user",""),a.c=null)}}
|
||||
m.da=function(a){this.a&&this.a.da(a);this.g&&this.g.da(a)};v(function(){for(var a=D(document,"pdp11-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pdp11","computer"),f=0;f<c.length;f++){var e=c[f],h=B(e),h=new vb(h,d,!0);C(h,e);h.v&&zb(h,h.ia)}});u.show.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.K&&!c.h.A&&c.ia(-1)}});
|
||||
u.exit.push(function(){for(var a=D(document,"pdp11","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=Ca("Computer",c.id))&&c.h.A&&Gb(c,!(!c.b||c.l),!0)}});function H(a,b,c){this.id=a.id;this.key=Jb(a,b,c);this.B=a.B;Db(this,a.$a)}function Jb(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
|
||||
H.prototype={constructor:H,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){Db(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(f){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(f){}b.splice(c,1);c=0}}};
|
||||
function Db(a,b){a[a.id]={};b&&I(a,"parms",b);a.a=!1}function Eb(a){var b=!0;if(ja()){var c=JSON.stringify(a[a.id]);la(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Bb(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function Y(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:ja()&&(b=ka(a.key))?(a[a.id]=b,a.a=!0):!1}function Z(a,b){return a[a.id][b]||null}function I(a,b,c){try{a[a.id][b]=c}catch(d){}}var Kb=0;
|
||||
function Lb(a,b,c,d,f,e){f("Loading "+a+"...");r(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),e(g,null)):Mb(g,a,b,c,d,f,e)})}
|
||||
function Mb(a,b,c,d,f,e,h){function g(a,e){if(e)h(e,null);else{if(c){Ba(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}f||(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{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(z){g=null,a=z.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?f?Nb(a,e,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Nb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");r(f,null,!0,function(e,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(e=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,Q=/( [a-z]+=)(['"])(.*?)\2/g;l=Q.exec(e);)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{c(a,"missing <"+d[1]+"> in "+f);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],h);Nb(a,b,c)}})}else c(a,null)}
|
||||
function Ob(a,b,c,d){function f(a){if(void 0===g){var b=h&&D(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function e(a){f("Error: "+a);k&&(--Kb||sa(!0));k=!1}var h,g,k=!0;Kb++;Aa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var Q=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=l:z.appendChild(document.createTextNode(l));Q.appendChild(z)}c||
|
||||
(c="/versions/pdp11/1.30.0/components.xsl");l=function(d,g){g?Lb(c,null,null,!1,f,function(d,k){if(k)if(Ba(a,c,d),f("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Kb||sa(!0)):e("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),--Kb||sa(!0)):e("invalid machine element: "+
|
||||
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(d)}):e(d)};"<"!=b.charAt(0)?Lb(b,a,d,!0,f,l):Mb(b,null,a,d,!1,f,l)}else e("missing machine element: "+a)}catch(Pb){e(Pb.message)}return k}window.embedPDP11=function(a,b,c,d){sa(!1);return Ob(a,b,c,d)};window.enableEvents=sa;window.sendEvent=ta;})();
|
||||
Loading…
Reference in a new issue