Documented a (mildly) interesting MACRO-10 bug
This commit is contained in:
parent
1d1ac0cb7b
commit
c6de12287c
5 changed files with 526 additions and 490 deletions
|
|
@ -248,21 +248,21 @@ function si(a,b){if(b&&"string"==typeof b)try{b=eval("("+b+")")}catch(c){w(a.typ
|
|||
h.wa=function(a,b,c){var d=this;switch(b){case "listDisks":return this.H[b]=c,c.onchange=function(){ti(d)},!0;case "descDisk":case "listDrives":return this.H[b]=c,c.onchange=function(){var a=ma(c.value,10);null!=a&&ui(d,a)},!0;case "loadDisk":return this.H[b]=c,c.onclick=function(){d.Cd()},!0;case "bootDisk":return this.H[b]=c,c.onclick=function(){d.le()},!0;case "saveDisk":if(!this.O){c.parentNode.removeChild(c);break}this.H[b]=c;c.onclick=function(){var a=d.H.listDrives;if(a&&a.options&&d.g)if(a=
|
||||
d.g[ma(a.value,10)||0])if(a=a.ea){var b;b="";for(var c=0,k;k=oi(a,c++);)for(var l=0,m=k.length;l<m;l++)b+=String.fromCharCode(pi(a,k,l));b=btoa(b);a=a.Gd.replace(".json",".img");c=null;b="data:application/octet-stream;base64,"+b;a&&(c=document.createElement("a"),"string"!=typeof c.download&&(c=null));c?(c.href=b,c.download=a,document.body.appendChild(c),c.click(),document.body.removeChild(c),a="Check your Downloads folder for "+a+"."):(window.open(b),a="Check your browser for a new window/tab containing the requested data"+
|
||||
(a?" ("+a+")":"")+".");w(a)}else d.T("No disk loaded in drive.");else d.T("No disk drive selected.")};return!0;case "mountDisk":if(this.O)return this.H[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;d.Cd(ta(b,!0),b,a)}return!1},!0;c.parentNode.removeChild(c)}return!1};
|
||||
h.Ca=function(a,b,c,d){this.J=a;this.F=b;this.f=c;this.D=d;if(a=si(this,ge(this.J,"autoMount")))for(var e in a)e.substr(0,2)==this.type.substr(0,2)&&(this.N[e]=a[e]);this.reset();this.Sa=pd(this.f,this.R.vd,this.R.rd,this.ja);Yb(b,this,this.U);fc(b,this.reset.bind(this));vi(this,"None",wi,!0);this.O&&vi(this,"Local Disk",Qi);vi(this,"Remote Disk",Si);Ti(this)||C(this)};
|
||||
h.Ca=function(a,b,c,d){this.J=a;this.F=b;this.f=c;this.D=d;if(a=si(this,ge(this.J,"autoMount")))for(var e in a)e.substr(0,2)==this.type.substr(0,2)&&(this.N[e]=a[e]);this.reset();this.Sa=pd(this.f,this.R.vd,this.R.rd,this.ja);Yb(b,this,this.U);fc(b,this.reset.bind(this));vi(this,"None",Pi,!0);this.O&&vi(this,"Local Disk",Ri);vi(this,"Remote Disk",Si);Ti(this)||C(this)};
|
||||
h.Ea=function(a,b){if(!b){if(!a){if(this.reset(),this.J.M){this.B=[];for(a=0;a<this.g.length;a++)Ui(this,a,!0);Ti(this,!0)}}else if(!this.restore(a))return!1;if(a=this.H.listDrives){for(;a.firstChild;)a.removeChild(a.firstChild);a.value="";for(b=0;b<this.P;b++){var c=document.createElement("option");c.value=b;c.text=this.g[b].Rc||"---";a.appendChild(c)}0<this.P&&(a.value="0",ui(this,0))}}return!0};h.Da=function(a){return a?this.save():!0};h.reset=function(){this.Cb();Vi(this)};
|
||||
h.save=function(){var a=new G(this);a.set(0,this.Sc());a.set(1,Wi(this));a.set(2,Xi(this));return a.data()};h.restore=function(a){var b=!0;this.Cb(a[0])||(b=!1);var c=a[1];c&&(this.B=c);Vi(this,a[2])||(b=!1);return b};h.Cb=function(){return!0};h.Sc=function(){return[]};
|
||||
function Vi(a,b){for(var c=0;c<a.g.length;c++){var d=a.g[c];void 0===d&&(d=a.g[c]={});var e=a,f=d,d=c,g=a.S,k=b&&b[c],l=0;f.Tb=d;f.name=e.Mb;f.Nc=f.Pb=!1;f.ic=null;f.Ad=!0;f.Rc=g[l++]+d;f.ba=g[l++];f.la=g[l++];f.fa=g[l++];f.va=g[l++];f.If=g[l++];f.Jf=g[l++];f.Kf=g[l++];f.Bf=g[l++];f.status=g[l++];f.tk=0;f.sk=0;f.je=1;f.Af=f.fa;f.ve=f.va;f.Bk=0;f.Ik=null;f.ea||(f.Pa="");k&&(l=k[1],g=k[2],k[0]?(f=l,k=g,g=e.g[d],Ui(e,d,!0),g.Pb=!0,d=new hi(e,g,"preload"),e.oe(g,d,f,k,!0)):Yi(e,d,l,g,!0)?f.ea&&g&&Zi(e,
|
||||
l,g,f.ea):C(e,!1))}return!0}function Xi(a){for(var b=[],c=0;c<a.g.length;c++){var d=a.g[c];b.push([d.Pb,d.Za,d.Pa])}return b}function Wi(a){for(var b=0;b<a.g.length;b++){var c=a.g[b];c.ea&&$i(a,c.Pa,c.ea)}return a.B}
|
||||
function Ti(a,b){b||(a.M=0);for(var c in a.N){var d=a.N[c],e=d.path||"",f;if(!(f=d.name))a:{if((f=a.H.listDisks)&&f.options)for(var g=0;g<f.options.length;g++){var k=f.options[g];if(k.value==e){f=k.text;break a}}f=ta(e,!0)}if(e&&f&&(g=-1,c&&(g=c.charCodeAt(c.length-1)-48,0>g||9<g)&&(g=-1),0<=g&&g<a.g.length)){!Yi(a,g,f,e,!0)&&b&&C(a,!1);continue}a.T("Incorrect auto-mount settings for drive "+c+" ("+JSON.stringify(d)+")")}return!!a.M}
|
||||
h.Cd=function(a,b,c){if(!a&&!b){var d=this.H.listDisks;d&&d.options&&(a=d.options[d.selectedIndex].text,b=d.value)}d=(d=this.H.listDrives)&&ma(d.value,10);if(void 0===d||0>d||d>=this.g.length)return this.T("Unable to load the selected drive"),!1;if(!b)return Ui(this,d),!0;if(b==Qi)return this.T('Use "Choose File" and "Mount" to select and load a local disk.'),!1;if(b==Si){b=window.prompt("Enter the URL of a remote disk image.","")||"";if(!b)return!1;a=ta(b);this.status("Attempting to load "+b+' as "'+
|
||||
h.Cd=function(a,b,c){if(!a&&!b){var d=this.H.listDisks;d&&d.options&&(a=d.options[d.selectedIndex].text,b=d.value)}d=(d=this.H.listDrives)&&ma(d.value,10);if(void 0===d||0>d||d>=this.g.length)return this.T("Unable to load the selected drive"),!1;if(!b)return Ui(this,d),!0;if(b==Ri)return this.T('Use "Choose File" and "Mount" to select and load a local disk.'),!1;if(b==Si){b=window.prompt("Enter the URL of a remote disk image.","")||"";if(!b)return!1;a=ta(b);this.status("Attempting to load "+b+' as "'+
|
||||
a+'"')}Yi(this,d,a,b,!1,c);return!0};h.le=function(){var a,b=this.H.listDrives,b=b&&ma(b.value,10);if(null==b||0>b||b>=this.g.length||!(a=this.g[b]))return this.T("Unable to boot the selected drive"),!1;if(!a.ea)return this.T("Load a disk into the drive first"),!1;ze(this.f,0,!0,b);return(a=this.Ub(a,a.If,a.Jf,a.Kf,a.Bf,0,2))?(this.T("Unable to read the boot sector ("+a+")"),!1):!0};
|
||||
function Yi(a,b,c,d,e,f){var g=-1,k=a.g[b];k.Pa.toLowerCase()!=d.toLowerCase()&&(g++,Ui(a,b,!0),k.Nc?a.T(a.type+" busy"):(k.Nc=!0,e&&(k.zd=!0,a.M++,E(a)&&F(a,"auto-loading disk: "+c)),k.Pb=!!f,li(new hi(a,k,"preload"),c,d,f,a.oe)&&g++));return g}
|
||||
h.oe=function(a,b,c,d,e){a.Nc=!1;b&&(b.ba>a.ba||b.la>a.la)&&(this.T('Disk "'+c+'" too large for drive '+(this.g[a.Tb].Rc||"---")),b=null);b?(a.ea=b,a.Za=c,a.Pa=d,this.we(a.Tb),Zi(this,c,d,b),this.T('Loaded disk "'+c+'" in drive '+(this.g[a.Tb].Rc||"---"),a.zd||e),this.J&&qe(this.J)):a.Pb=!1;a.zd&&(a.zd=!1,--this.M||C(this));ui(this,a.Tb);a.ic&&(a.ic(),a.ic=null)};
|
||||
function vi(a,b,c,d){if((a=a.H.listDisks)&&a.options){for(var e=0;e<a.options.length;e++)if(a.options[e].value==c)return;e=document.createElement("option");e.text=b;e.value=c;d&&a.childNodes[0]?a.insertBefore(e,a.childNodes[0]):a.appendChild(e)}}
|
||||
function ui(a,b,c){var d=!1;if(0<=b&&b<a.g.length){var e=a.g[b],f=a.H.listDisks;a=a.H.listDrives;if(f&&a&&f.options&&a.options){if(c)for(c=0;c<a.options.length;c++)if(ma(a.options[c].value,10)==e.Tb){a.selectedIndex!=c&&(a.selectedIndex=c);d=!0;break}c=ma(a.value,10);e=e.Pb?Qi:e.Pa;if(!isNaN(c)&&c==b){for(c=0;c<f.options.length;c++)if(f.options[c].value==e){f.selectedIndex!=c&&(f.selectedIndex=c);d=!0;break}c==f.options.length&&(f.selectedIndex=0)}}}return d}
|
||||
function ui(a,b,c){var d=!1;if(0<=b&&b<a.g.length){var e=a.g[b],f=a.H.listDisks;a=a.H.listDrives;if(f&&a&&f.options&&a.options){if(c)for(c=0;c<a.options.length;c++)if(ma(a.options[c].value,10)==e.Tb){a.selectedIndex!=c&&(a.selectedIndex=c);d=!0;break}c=ma(a.value,10);e=e.Pb?Ri:e.Pa;if(!isNaN(c)&&c==b){for(c=0;c<f.options.length;c++)if(f.options[c].value==e){f.selectedIndex!=c&&(f.selectedIndex=c);d=!0;break}c==f.options.length&&(f.selectedIndex=0)}}}return d}
|
||||
h.ih=function(a){var b=this.H.listDrives;if(b&&b.options)for(var c=b.options.length,d=0;d<c;d++)if(b.options[d].textContent==a){var e=ma(b.options[d].value,10);if(0<=e)return ui(this,e,!0)}return!1};
|
||||
function ti(a){var b=a.H.listDisks,c=a.H.descDisk,d=b.options&&b.options[b.selectedIndex];if(c&&d){b={};if(d=d.getAttribute("data-value"))try{b=eval("("+d+")")}catch(e){w(a.type+" option error: "+e.message)}a=b.desc;void 0===a&&(a="");b=b.href;void 0!==b&&(a='<a href="'+b+'" target="_blank">'+a+"</a>");c.innerHTML=a}}h.mh=function(a){for(var b=0;b<this.g.length;b++){var c=this.g[b];if(c&&c.Nc)return c.ic||(c.ic=a),!1}return!0};
|
||||
function Ui(a,b,c){var d=a.g[b];if(d.ea||!1===c)$i(a,d.Pa,d.ea),d.Za="",d.Pa="",d.ea=null,d.Pb=!1,c||(a.T("Drive "+(a.g[b].Rc||"---")+" unloaded",c),ui(a,b))}function Zi(a,b,c,d){var e;for(e=0;e<a.B.length;e++)if(a.B[e][1]==c){d.restore(a.B[e][2]);return}a.B[e]=[b,c,[]]}function $i(a,b,c){var d;for(d=0;d<a.B.length;d++)if(a.B[d][1]==b){a.B[d][2]=c.save();break}}h.we=function(){};h.Ub=function(){return-1};h.Vc=function(){return-1};var wi="",Qi="?",Si="??";
|
||||
function Ui(a,b,c){var d=a.g[b];if(d.ea||!1===c)$i(a,d.Pa,d.ea),d.Za="",d.Pa="",d.ea=null,d.Pb=!1,c||(a.T("Drive "+(a.g[b].Rc||"---")+" unloaded",c),ui(a,b))}function Zi(a,b,c,d){var e;for(e=0;e<a.B.length;e++)if(a.B[e][1]==c){d.restore(a.B[e][2]);return}a.B[e]=[b,c,[]]}function $i(a,b,c){var d;for(d=0;d<a.B.length;d++)if(a.B[d][1]==b){a.B[d][2]=c.save();break}}h.we=function(){};h.Ub=function(){return-1};h.Vc=function(){return-1};var Pi="",Ri="?",Si="??";
|
||||
function N(a){ri.call(this,"RK11",a,65536,Nb,Nb.Hc,aj);this.G=this.i=this.b=this.w=this.u=this.j=this.C=0}p(N,ri);h=N.prototype;h.Cb=function(a){a||(a=[bj.Hc|bj.de|bj.$d,0,R.ab,0,0,0,0]);a=ia(a);this.G=a.next().value;this.i=a.next().value;this.b=a.next().value;this.w=a.next().value;this.u=a.next().value;this.j=a.next().value;this.C=a.next().value;return!0};h.Sc=function(){return[this.G,this.i,this.b,this.w,this.u,this.j,this.C]};
|
||||
h.Ub=function(a,b,c,d,e,f,g,k,l){var m=0;a=a.ea;var n=null,q;a||(m=S.Ud,e=0);for(;e;){if(!n){if(b>=a.ba){m=S.Fc;break}n=a.seek(b,c,d+1);if(!n){m=S.ce;break}q=0;++d>=a.fa&&(d=0,++c>=a.la&&(c=0,++b))}var t,r;if(0>(t=a.read(n,q++))||0>(r=a.read(n,q++))){m=S.Gc;break}if(!k&&(Ac(this.F,Oe(this.f,f),t|r<<8),ld(this.F))){m=S.ec;break}q>=a.va&&(n=null);f+=g;e--}return l?l(m,b,c,d,e,f):m};
|
||||
h.Vc=function(a,b,c,d,e,f,g,k,l){var m=0;a=a.ea;var n=null,q;a||(m=S.Ud,e=0);for(;e;){var t=Cc(this.F,Oe(this.f,f));if(ld(this.F)){m=S.ec;break}if(!n){if(b>=a.ba){m=S.Fc;break}n=a.seek(b,c,d+1,!0);if(!n){m=S.ce;break}q=0;++d>=a.fa&&(d=0,++c>=a.la&&(c=0,++b))}if(k){var r,D;if(0>(r=a.read(n,q++))||0>(D=a.read(n,q++))){m=S.Gc;break}if(t!=(r|D<<8)){m=S.ge;break}}else if(!a.write(n,q++,t&255)||!a.write(n,q++,t>>8)){m=S.Gc;break}q>=a.va&&(n=null);f+=g;e--}return l?l(m,b,c,d,e,f):m};
|
||||
|
|
@ -288,113 +288,114 @@ h.ai=function(a){this.b=this.b&~W.Ua|a&W.Ua;if(this.b&W.INIT)this.Cb();else if(t
|
|||
this.Sa):td(this.f,this.Sa)};h.Lg=function(a,b){if(!b)switch(this.j){case V.EMPTY:this.b&W.eb&&(this.b&=~W.eb,this.C=this.w[this.u]&255,E(this)&&F(this,this.type+".readByte("+this.u+"): "+v(this.C,2,!0),!0,!0),++this.u>=this.w.length&&qj(this))}return this.C};
|
||||
h.bi=function(a){switch(this.j){case V.bd:this.b&W.eb&&(this.b&=~W.eb,this.w[this.u]=a&255,E(this)&&F(this,this.type+".writeByte("+this.u+","+v(a,2,!0)+")",!0,!0),++this.u>=this.w.length&&qj(this));break;case V.tb:case V.hc:case V.Mc:if(this.b&W.eb)switch(this.b&=~W.eb,this.u++){case 0:this.G=a;break;case 1:if(this.I=a,this.j==V.tb)pj(this);else{var b=this.j==V.Mc,c=0,d=this.b&W.ud?1:0,e=this.g[d],e=e&&e.ea,f=this.I&sj.cb,g=this.G&tj.cb;this.i&=~(uj.Nd|uj.Xd|uj.cc|uj.Ga);if(e)if(this.i|=uj.Ga,E(this)&&
|
||||
F(this,this.type+".writeSector("+f+":0:"+g+")",!0,!0),d=e.seek(f,0,g,!0))for(b&&(d.Ef=!0),b=0,f=this.w.length;b<f;){if(!e.write(d,b,this.w[b]&255)){c=rj.pd;break}b++}else c=rj.qd;else c=d?rj.gd:rj.fd;qj(this,c)}}}this.C=a};var W=Pb.kf,sj=Pb.nf,tj=Pb.mf,uj=Pb.lf,V=Pb.xa,rj=Pb.ERROR,vj="FILL EMPTY WRITE READ UNUSED RDSTAT WRDEL RDERR".split(" "),wj={},oj=(wj[65144]=[null,null,Fd.prototype.Kg,Fd.prototype.ai,"RXCS"],wj[65146]=[null,null,Fd.prototype.Lg,Fd.prototype.bi,"RXDB"],wj);
|
||||
function xj(a){x.call(this,"Debugger",a);this.W=+a.base||16;this.za=null;this.U=["{","}"];this.ka=["[","]"];this.w=0;this.O=!1;this.u=-1;this.j=[];this.S={}}p(xj,x);xj.prototype.re=function(){return-1};xj.prototype.Bd=function(){};
|
||||
function yj(a,b,c,d){if(c)if(b){0>a.u&&a.j.length&&(a.u=0);if(0>a.u||b!=a.j[a.u])a.j.splice(0,0,b),a.u=0;a.u--}else a.O?b="end":b=a.j[a.u+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(za(b.substring(c,f))),c=f+1}}return a}
|
||||
function xj(a){x.call(this,"Debugger",a);this.W=+a.base||16;this.za=null;this.N=["{","}"];this.ka=["[","]"];this.w=0;this.P=!1;this.u=-1;this.j=[];this.U={}}p(xj,x);xj.prototype.re=function(){return-1};xj.prototype.Bd=function(){};
|
||||
function yj(a,b,c,d){if(c)if(b){0>a.u&&a.j.length&&(a.u=0);if(0>a.u||b!=a.j[a.u])a.j.splice(0,0,b),a.u=0;a.u--}else a.P?b="end":b=a.j[a.u+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(za(b.substring(c,f))),c=f+1}}return a}
|
||||
function zj(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<<b)-1;else{if(b=Math.pow(2,b),0>a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a|0:(b=Math.pow(2,b-1),a<-b?(a<2*-b&&(d=a%(2*b)),d+=2*b):d>=b&&(a>=2*b&&(d=a%(2*b)),d-=2*b));a!=d&&(a=d);return a}
|
||||
function Aj(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "%":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e<f?1:0;break;case "<=":e=e<=f?1:0;break;case ">":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&=
|
||||
f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=zj(e,0,!0),e=0<f?e*Math.pow(2,f):Math.trunc(e/Math.pow(2,-f)));break;default:return!1}a.push(zj(e))}return!0}
|
||||
function Bj(a,b,c,d,e,f){var g,k,l,m=!1,n=0,q=[],t=[],r=a.W;for(a.W=e;c<d;){k=b[c++].trim();l=c<d?b[c++]:"";if(k)n=Cj(a,k,null,f,n);else if("{"==l){k=1;for(n=c;c<d;)if(c++,l=c<b.length?b[c++]:"","{"==l)k++;else if("}"==l&&!--k)break;n=Bj(a,b,n,c-1,a.W,f);k=c<d?b[c++].trim():"";l=c<d?b[c++]:""}else{if(" "==l)continue;if("^B"==l){a.W=2;continue}if("^O"==l){a.W=8;continue}if("^D"==l){a.W=10;continue}if(!(n&-1073741824)){if("+"==l)continue;if("-"==l){n=n<<2|1;continue}if("~"==l||"^-"==l){n=n<<2|2;continue}if("^L"==
|
||||
l){n=n<<2|3;continue}}m=!0;break}if(void 0===n)if(null==a.za&&f)a.za=k,n=0;else{m=!0;f=!f;break}q.push(zj(n));if(" "==l)if(c<b.length-1&&!b[c])c++,l=b[c++];else{m=!0;break}if(!l)break;t.length&&Dj[l]<=Dj[t[t.length-1]]&&Aj(q,t,1);t.push(l);a.W="^_"==l?10:e;n=0}if(m||!Aj(q,t)||1!=q.length)m=!0;m?!1===f&&a.v("parse error ("+(k||l)+")"):g=q.pop();a.W=r;return g}
|
||||
function Ej(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var k=0,l=g+1,m=e;l<b.length;){var n=b[l++];if(n==c){m=-1;break}if(!m)break;m--;n=n.charCodeAt(0);7==d?n&=127:n=n-32&63;k=zj(k*Math.pow(2,d)+n,d*e,!0)}if(0<=m){!1===f&&a.v("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,k,-1)+b.substr(l)}return b}
|
||||
function Fj(a,b,c){var d=void 0;a.za=null;if(b){"{"!=a.U[0]&&(b=b.split(a.U[0]).join("{").split(a.U[1]).join("}"));b=Ej(a,b,'"',7,5,c);if(!b)return d;b=Ej(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/(\{|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Bj(a,b,0,b.length,a.W,c);void 0!==d&&!1===c&&Gj(a,null,d)}return d}
|
||||
function Cj(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.re(b),0<=f?f=a.Bd(f):(f=a.S[b],null==f&&(f=ma(b,1<b.length?a.W:10))),null!=f){for(;e;){switch(e&3){case 1:f=-zj(f);break;case 2:f|=-1;break;case 3:for(a=35;0<=a&&!(f&Math.pow(2,a));)a--;f=35-a}e>>>=2}f=zj(f)}else d||a.v("invalid "+(c?c:"value")+": "+b);else d||a.v("missing "+(c||"value"));return f}
|
||||
function Gj(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.W?K(a,c,32,8,1)+" "+c+".":K(a,c,32,16,1)+" "+K(a,c,32,8,1)+" "+K(a,c,32,2,8)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.v((null!=b?b+": ":"")+d);return e}function Hj(a,b){if(b)return Gj(a,b,a.S[b]);var c=0;for(b in a.S)Gj(a,b,a.S[b]),c++;return 0<c}
|
||||
function K(a,b,c,d,e){c=void 0===c?0:c;e=void 0===e?0:e;switch((void 0===d?0:d)||a.W){case 2:a=pa(b,0<c?c:0,e);break;case 8:a=u(b,0<c?(c+2)/3|0:0,!!e);break;case 10:a=qa(b,0<c?Math.ceil(.3*c):0);break;default:a=v(b,0<c?c+3>>2:0,!!e)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}var Dj={"||":0,"&&":1,"!":2,"|":2,"^!":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9,_:10,"^_":10,"{":11,"}":11};
|
||||
function Ij(a){xj.call(this,a);this.Ia=!1;this.U=["(",")"];this.ka=[];this.G=X();this.Ha=X();this.N=X();this.B=[];this.b=this.L=this.C=[];Jj(this);this.P=this.ha=0;this.i=[];this.ta=void 0;Kj(this);this.D=this;this.ma={};this.ja=this.ke=0;this.R=null;this.M=[];Lj(this,a.messages);this.ya=a.commands;this.La=Mj;this.Y=[];this.I=0;this.Qa=this.ua=null;this.w=this.Ka=this.Ja=this.Z=this.qa=0;this.g=this.X=null;var b=this;window?void 0===window[y]&&(window[y]=function(a){return le(b,a)}):void 0===global[y]&&
|
||||
(global[y]=function(a){return le(b,a)})}p(Ij,xj);function Nj(a){a=a&&a.K;null==a&&(a=-1);return a}function X(a,b,c){return{K:void 0===a?null:a,Na:void 0===b?!1:b,Wa:!1,W:c}}h=Ij.prototype;h.Hd=function(a,b){a.K=b;a.Wa=!1;a.W=void 0;return a};function Oj(a){return[a.K,a.Na,a.W,a.Wa,a.Qc]}function Pj(a,b){var c=X(b[0],b[1],b[2]);c.Wa=b[3];b[4]&&(c.he=yj(a,c.Qc=b[4]));return c}
|
||||
h.Ca=function(a,b,c,d){this.F=b;this.J=a;this.f=c;this.g=a.i;(a=ge(a,"messages"))&&Lj(this,a);1140>this.f.ka&&(this.Y=this.Y.concat(Qj));1145>this.f.ka&&(this.Y=this.Y.concat(Rj));rd(this,16,function(a){a:{var b=d.F.b,c=a[0],e=a=0,l=b.length;if(c){a=Nj(Sj(d,c));if(-1===a){d.v("invalid address: "+c);break a}e=a>>>d.F.g;l=1}d.v("blockid physical blockaddr used size type");d.v("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;l--;){var n=b[e];n.type==c?m++||d.v("..."):
|
||||
l){n=n<<2|3;continue}}m=!0;break}if(void 0===n)if(null==a.za&&f)a.za=k,n=0;else{m=!0;f=!f;break}q.push(zj(n));if(" "==l)if(c<b.length-1&&!b[c])c++,l=b[c++];else{m=!0;break}if(!l)break;n="<"==a.N[0]?Dj:Ej;if(!n[l]){m=!0;break}t.length&&n[l]<=n[t[t.length-1]]&&Aj(q,t,1);t.push(l);a.W="^_"==l?10:e;n=0}if(m||!Aj(q,t)||1!=q.length)m=!0;m?!1===f&&a.v("parse error ("+(k||l)+")"):g=q.pop();a.W=r;return g}
|
||||
function Fj(a,b,c,d,e,f){for(var g;0<=(g=b.indexOf(c));){for(var k=0,l=g+1,m=e;l<b.length;){var n=b[l++];if(n==c){m=-1;break}if(!m)break;m--;n=n.charCodeAt(0);7==d?n&=127:n=n-32&63;k=zj(k*Math.pow(2,d)+n,d*e,!0)}if(0<=m){!1===f&&a.v("parse error ("+b+")");break}else b=b.substr(0,g)+K(a,k,-1)+b.substr(l)}return b}
|
||||
function Gj(a,b,c){var d=void 0;a.za=null;if(b){"{"!=a.N[0]&&(b=b.split(a.N[0]).join("{").split(a.N[1]).join("}"));b=Fj(a,b,'"',7,5,c);if(!b)return d;b=Fj(a,b,"'",6,6,c);if(!b)return d;b=b.replace(/(^|[^A-Z0-9$%.])([0-9]+)B/,"$1$2^_").replace(/\s+/g," ");b=b.split(/({|}|\|\||&&|\||\^!|\^B|\^O|\^D|\^L|\^-|~|\^_|_|&|!=|!|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*| )/);d=Bj(a,b,0,b.length,a.W,c);void 0!==d&&!1===c&&Hj(a,null,d)}return d}
|
||||
function Cj(a,b,c,d,e){e=void 0===e?0:e;var f;if(null!=b)if(f=a.re(b),0<=f?f=a.Bd(f):(f=a.U[b],null==f&&(f=ma(b,1<b.length?a.W:10))),null!=f){for(;e;){switch(e&3){case 1:f=-zj(f);break;case 2:f|=-1;break;case 3:for(a=35;0<=a&&!(f&Math.pow(2,a));)a--;f=35-a}e>>>=2}f=zj(f)}else d||a.v("invalid "+(c?c:"value")+": "+b);else d||a.v("missing "+(c||"value"));return f}
|
||||
function Hj(a,b,c){var d,e=!1;void 0!==c&&(e=!0,d=8==a.W?K(a,c,32,8,1)+" "+c+".":K(a,c,32,16,1)+" "+K(a,c,32,8,1)+" "+K(a,c,32,2,8)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.v((null!=b?b+": ":"")+d);return e}function Ij(a,b){if(b)return Hj(a,b,a.U[b]);var c=0;for(b in a.U)Hj(a,b,a.U[b]),c++;return 0<c}
|
||||
function K(a,b,c,d,e){c=void 0===c?0:c;e=void 0===e?0:e;switch((void 0===d?0:d)||a.W){case 2:a=pa(b,0<c?c:0,e);break;case 8:a=u(b,0<c?(c+2)/3|0:0,!!e);break;case 10:a=qa(b,0<c?Math.ceil(.3*c):0);break;default:a=v(b,0<c?c+3>>2:0,!!e)}0>c?c=a.replace(/^0+([0-9A-F]+)$/i,"$1"):c=a;return c}
|
||||
var Ej={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},Dj={"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"%":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20};
|
||||
function Jj(a){xj.call(this,a);this.Ia=!1;this.N=["(",")"];this.ka=[];this.G=X();this.Ha=X();this.O=X();this.B=[];this.b=this.L=this.C=[];Kj(this);this.R=this.ha=0;this.i=[];this.ta=void 0;Lj(this);this.D=this;this.ma={};this.ja=this.ke=0;this.S=null;this.M=[];Mj(this,a.messages);this.ya=a.commands;this.La=Nj;this.Y=[];this.I=0;this.Qa=this.ua=null;this.w=this.Ka=this.Ja=this.Z=this.qa=0;this.g=this.X=null;var b=this;window?void 0===window[y]&&(window[y]=function(a){return le(b,a)}):void 0===global[y]&&
|
||||
(global[y]=function(a){return le(b,a)})}p(Jj,xj);function Oj(a){a=a&&a.K;null==a&&(a=-1);return a}function X(a,b,c){return{K:void 0===a?null:a,Na:void 0===b?!1:b,Wa:!1,W:c}}h=Jj.prototype;h.Hd=function(a,b){a.K=b;a.Wa=!1;a.W=void 0;return a};function Pj(a){return[a.K,a.Na,a.W,a.Wa,a.Qc]}function Qj(a,b){var c=X(b[0],b[1],b[2]);c.Wa=b[3];b[4]&&(c.he=yj(a,c.Qc=b[4]));return c}
|
||||
h.Ca=function(a,b,c,d){this.F=b;this.J=a;this.f=c;this.g=a.i;(a=ge(a,"messages"))&&Mj(this,a);1140>this.f.ka&&(this.Y=this.Y.concat(Rj));1145>this.f.ka&&(this.Y=this.Y.concat(Sj));rd(this,16,function(a){a:{var b=d.F.b,c=a[0],e=a=0,l=b.length;if(c){a=Oj(Tj(d,c));if(-1===a){d.v("invalid address: "+c);break a}e=a>>>d.F.g;l=1}d.v("blockid physical blockaddr used size type");d.v("-------- --------- --------- ------ ------ ----");for(var c=-1,m=0;l--;){var n=b[e];n.type==c?m++||d.v("..."):
|
||||
(c=n.type,m=dd[c],n&&d.v(v(n.id,8)+" %"+v(e<<d.F.g,8)+" %"+v(n.K,8)+" "+ra(n.Xb)+" "+ra(n.size)+" "+m),c!=Hd&&(c=-1),m=0);a+=d.F.j;e++}}});C(this)};
|
||||
h.wa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.X=this.H[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",le(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.u<d.j.length-1&&(b=d.j[++d.u])):40==a.keyCode&&(0<d.u?b=d.j[--d.u]:(b="",d.u=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.H[b]=c,Qa(c,function(){if(d.X){var a=d.X.value;d.X.value=
|
||||
"";le(d,a,!0);return!0}return!1}),!0;case "step":return this.H[b]=c,Qa(c,function(a){var b=!1;Eb(d,!0)||(Fb(d,!0),b=vc(d,a?1:0,null),Fb(d,!1));return b}),!0}return!1};function ke(a){if(a.X){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.X.focus();window&&window.scrollTo(b,c)}}h.Pd=function(a,b){var c=255,d=Nj(a);-1!==d&&(a.Na||65535<d?(c=this.F,d=Oe(this.f,d),c.C=!1,c.oa++,d=fd(c,d).J(d&c.i,d),c.oa--):(c=this.f,c.qa++,d=c.F.Ld(Bc(c,d,3)),c.qa--),c=d,b&&Tj(a,b));return c};
|
||||
h.Ta=function(a,b){var c=65535,d=Nj(a);-1!==d&&(c=a.Na||65535<d?Cc(this.F,Oe(this.f,d)):Dc(this.f,d),b&&Tj(a,b));return c};h.Qd=function(a,b,c){var d=Nj(a);if(-1!==d){if(a.Na||65535<d)gd(this.F,Oe(this.f,d),b);else{var e=this.f;e.qa++;e.F.Md(Bc(e,d,5),b);e.qa--}c&&Tj(a,c);H(this.J,-1)}};h.Le=function(a,b,c){var d=Nj(a);if(-1!==d){if(a.Na||65535<d)Ac(this.F,Oe(this.f,d),b);else{var e=this.f;e.qa++;e.F.ac(Bc(e,d,4),b);e.qa--}c&&Tj(a,c);H(this.J,-1)}};
|
||||
function Sj(a,b,c){var d;c=(c?a.G:a.Ha).K;var e,f;if(void 0!==b){a:{var g;d=a.U[0];c=a.U[1];g="("==d||"{"==d||"["==d?"\\":"";for(var k="["==d?"\\":"",k=new RegExp(g+d+"([^"+k+d+k+c+"]+)"+g+c);g=b.match(k);){var l=Fj(a,g[1]);if(void 0===l){b=void 0;break a}b=b.replace(d+g[1]+c,null!=l?K(a,l):"undefined")}if(a.ka.length)for(d=a.ka[0],c=a.ka[1],g="("==d||"{"==d||"["==d?"\\":"",k="["==d?"\\":"",k=new RegExp(g+d+"([^"+k+d+k+c+"]+)"+g+c);g=b.match(k);)b=b.replace("["+g[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){c=
|
||||
null;switch(d[1].toLowerCase()){case "ops":c=0}if(null==c)break;b=b.replace(d[0],c.toString())}}"%"==b.charAt(0)&&(e=!0,b=b.substr(1));d=b;var m,n;a:{c=a.F;g=d.toUpperCase();for(n in c.Ra)if(k=+n,c.Ra[k][4]==g){n=c.B+k;break a}n=null}if(null==n&&d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.B.length;c++)if(g=a.B[c].ia[d],null!=g){n=g.o;break}null!=n&&(m=X(n));if(d=m)return d;0<=b.indexOf("0x")?f=16:0<=b.indexOf("0o")?f=8:0<=b.indexOf(".")&&(f=10);c=Fj(a,b)}null!=c&&(d=X(c,e,f));return d}
|
||||
function Uj(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.he=yj(a,b.Qc=c[2]))}function Tj(a,b){null!=a.K&&(a.K+=b||1)}function Vj(a,b){return(b.Na?"%":"")+K(a,b.K)}
|
||||
function Lj(a,b){a.D=a;a.ja=a.ke=536870912;a.R=null;a.M=[];b=yj(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in Rb){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.ja|=Rb[c],a.v(c+" messages enabled"))}}function rd(a,b,c){for(var d in Rb)if(b==Rb[d]){a.ma[d]=c;break}}
|
||||
h.re=function(a){a=a.toUpperCase();var b=Wj[a];null==b&&(b=-1,"R"==a.charAt(0)&&(b=+a.charAt(1),0>b||7<b))&&(b=-1);return b};function Xj(a,b){var c;if(b<Yj||a.g)c=Zj[b];return c||""}
|
||||
h.Bd=function(a){var b;if(0<=a)if(8>a)b=this.f.g[a];else if(16>a)b=this.f.ua[a-8];else if(20>a)b=this.f.Y[a-16];else{var c=this.f,d=this.g;switch(a){case ak:b=Ad(this.f);break;case bk:b=c.ob;break;case ck:b=c.P;break;case dk:b=c.za&65280;break;case ek:b=ud(c);break;case fk:b=wd(c);break;case gk:b=xd(c);break;case hk:b=c.X;break;case Yj:d&&(b=d.ga);break;case ik:d&&(b=d.Eb);break;case jk:d&&(b=d.Ya)}}return b};
|
||||
h.message=function(a,b){b&&(a+=" @"+Vj(this,X(this.f.O&65535)));if(!this.R||a!=this.R)if(this.R=a,this.ja&1073741824)this.M.push(a);else{var c;if(this.ja&-2147483648&&this.f&&(c=this.f.A.V)||Eb(this,!0))this.da(),c&&(a+=" (cpu halted)");this.v(a);this.f&&(a=this.f,re(a),a.Ab=0,a.J&&H(a.J,void 0))}};
|
||||
function Kj(a){var b;if(!bf(a))a.i&&a.i.length&&a.v("instruction history buffer freed"),a.P=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(kk);for(b=0;b<a.i.length;b++)a.i[b]=X();a.P=0;a.v("instruction history buffer allocated")}}function lk(a,b,c){if(!mk(a,c))return!1;uc(a.f,b);return!0}
|
||||
function vc(a,b,c,d){if(!mk(a))return!1;var e="";null===c&&(e=(c=!a.ua||"tr"==a.ua)?"tr":"t");a.w=0;b||bf(a)&&cf(a,a.f.g[7],0);try{b=se(a.f,b);var f=a.f.Cc(b);0<f&&(wc(a.f,f),a.w+=f,xc(a.f,f,!0),yc(a.f,f),a.Z++)}catch(g){"number"!=typeof g&&(a.w=0,Bb(a.f,g.stack||g.message))}!1!==d&&(a.g&&a.g.stop(),H(a.J,-1));je(a,c||!1,e);return 0<a.w}h.da=function(a){this.f&&this.f.da(a)};
|
||||
function je(a,b,c){if(a.Ia){void 0===b&&(b=!0);c&&a.v(nk+c);c=a.f;if(c=c.i&128?c.Ec|c.Dc<<8:0){var d=c>>8;a.v("trapped to "+K(a,c&255,8)+" ("+(0>d?Mb[-d]:K(a,d))+")")}a.G=X(a.f.g[7]);b&&1!=a.I?ok(a):pk(a)}}function mk(a,b){var c;(c=!a.f||!Db(a.f))||(c=a.f,c.A.ca?c=!0:(c.v(c.toString()+" not powered"),c=!1),c=!c);return c||a.f.A.V?(b||a.v("cpu busy or unavailable, command ignored"),!1):!Cb(a.f)}h.Ea=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};
|
||||
h.Da=function(a,b){b&&this.v(a?"suspending":"shutting down");return a?this.save():!0};h.reset=function(a){Kj(this);this.Z=0;this.R=null;this.w=0;this.G=X(this.f.g[7]);this.A.V=!1;qk(this);a||je(this)};h.save=function(){var a=new G(this);a.set(0,Oj(this.G));a.set(1,Oj(this.N));a.set(2,[this.j,this.O,this.ja]);a.set(3,this.B);return a.data()};
|
||||
h.restore=function(a){var b=0;void 0!==a[2]&&(this.G=Pj(this,a[b++]),this.N=Pj(this,a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.O=a[b][1],this.ja|=a[b][2]);a[3]&&(this.B=a[3]);return!0};h.start=function(a,b){this.I||this.v("running");this.A.V=!0;this.Ja=a;this.Ka=b};
|
||||
h.stop=function(a,b){if(this.A.V){this.A.V=!1;this.w=b-this.Ka;if(!this.I){b="stopped";if(this.w){a-=this.Ja;var c=0<a?Math.round(1E3*this.w/a):0;b+=" (";bf(this)&&(b+=this.Z+" instructions, ",this.Z=0);b+=this.w+" cycles, "+a+" ms, "+c+" hz)"}else E(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.v(b)}je(this,!0);ke(this);qk(this,this.f.g[7]);this.R=null}};function bf(a){return 1<a.b.length||!!a.ha}
|
||||
function cf(a,b,c){var d=-1;c||(d=Dc(a.f,b))||(a.f.O&65535)!=b||(b=Fe(a.f,2));if(0<c&&(a.ha&&!--a.ha||rk(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.Z++,0>d&&(d=Dc(a.f,b)),65535!=(d&65535)&&(a.Hd(a.i[a.P],b),++a.P==a.i.length&&(a.P=0)));return!1}function Dg(a){var b=a.f;if(b.A.V)throw rc(b,a.f.O&65535),a.da(),-1;return!1}function ae(a,b,c){rk(a,b,c||1,a.L)&&a.da(!1)}function be(a,b,c){rk(a,b,c||1,a.C)&&a.da(!1)}
|
||||
function Jj(a){var b,c,d;a.b=["bp"];if(a.L)for(b=1;b<a.L.length;b++)c=a.L[b],d=Nj(c),c.Na?(c=a.F,$d(c.b[d>>>c.g],!1)):Re(a.f,!1);a.L=["br"];if(a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=Nj(c),c.Na?(c=a.F,$d(c.b[d>>>c.g],!0)):Re(a.f,!0);a.C=["bw"];a.qa=0;a.ha=0}
|
||||
h.Bb=function(a,b,c){var d=!0;c||sk(this,a,b,!1,!0);if(a!=this.b){var e=Nj(b);if(-1===e)this.v("invalid address: "+Vj(this,b)),d=!1;else{var f=a==this.C;65535<e&&(b.Na=!0);if(b.Na){var g=this.F;g.b[e>>>g.g].Bb(e&g.i,f)}else e=this.f,(f?e.tc++:e.sc++)||ye(e)}}d&&(a.push(b),c?b.Wa=!0:(tk(this,a,a.length-1,"set"),Kj(this)));return d};
|
||||
function sk(a,b,c,d,e){var f=!1;c=Nj(c);for(var g=1;g<b.length;g++){var k=b[g];if(c==Nj(k)&&(!d||k.Wa)){f=!0;k.Wa||e||tk(a,b,g,"cleared");b.splice(g,1);b!=a.b&&(b=b==a.C,k.Na?(d=a.F,$d(d.b[c>>>d.g],b)):Re(a.f,b));k.Wa||Kj(a);break}}return f}function uk(a,b){for(var c=1;c<b.length;c++)tk(a,b,c);return b.length-1}function tk(a,b,c,d){c=b[c];a.v(b[0]+" "+Vj(a,c)+(d?" "+d:c.Qc?' "'+c.Qc+'"':""))}
|
||||
function qk(a,b){if(void 0!==b)rk(a,b,1,a.b,!0),a.I=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.Wa){if(!sk(a,a.b,c,!0))break;b=0}}}
|
||||
function rk(a,b,c,d,e){var f=!1;if(!a.qa++)for(var g=1;!f&&g<d.length;g++){var k=d[g];if(!e||k.Wa)for(var l=Nj(k)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==l){var n,f=!0;k.Wa&&(sk(a,d,k,!0),e=!0);if(n=k.he){for(var f=!1,q=0;q<n.length;q++)if(!vk(a,n[q],!0)){if(n[q].indexOf("if")){f=!0;break}for(var t=q+1;t<n.length&&n[t].indexOf("else");t++)q++;if(t==n.length){f=!0;break}}a.f.A.V||(f=!0)}if(f){e||tk(a,d,g,"hit");break}}}a.qa--;return f}
|
||||
function wk(a,b,c,d){var e=X(b.K),f=a.Ta(b,2),g,k;for(k in a.La)if(g=a.La[k][f&k])break;g||(g=xk);var l=g[0];0<=a.Y.indexOf(l)&&(g=xk,l=g[0]);var m=k="",n=yk[l],q=g.length-1;l||q||(k=K(a,f));for(l=1;l<=q;l++){var t=g[l];if(void 0!==t){var r;r=a;var D=t,t=b,A="",B=D&zk;if(B==Y)t=t.K+((f&255)<<24>>23)&65535,A=K(r,t);else if(B==Ak)t=t.K-((f&63)<<1)&65535,A=K(r,t);else if(B==Bk)A=K(r,f&7,3);else if(B==Ck)A=K(r,f&63,6);else if(B==Dk)A=K(r,f&255,8);else if(B=f&D,D&Ek&&(B>>=6,D>>=6),D&Z){var D=null,J=B&
|
||||
Fk;switch(B&Gk){case 0:A=Xj(r,J);break;case 8:A="@"+Xj(r,J);D=Hk(r,r.f.g[J]);break;case 16:7>J?A="("+Xj(r,J)+")+":(B=r.Ta(t,2),A="#"+K(r,B,-1));break;case 24:7>J?A="@("+Xj(r,J)+")+":(B=r.Ta(t,2),A="@#"+K(r,B,-1),D=Hk(r,B));break;case 32:A="-("+Xj(r,J)+")";break;case 40:A="@-("+Xj(r,J)+")";break;case 48:B=r.Ta(t,2);A=K(r,B,-1)+"("+Xj(r,J)+")";7==J&&(A=K(r,B=B+t.K&65535),D=Hk(r,B));break;case 56:B=r.Ta(t,2),A="@"+K(r,B)+"("+Xj(r,J)+")",7==J&&(A="@"+K(r,B=B+t.K&65535),D=Hk(r,Dc(r.f,B)))}D&&(A=[A,D])}r=
|
||||
A;if(!r||!r.length){k="INVALID";break}"string"!=typeof r&&(m=r[1],r=r[0]);0<k.length&&(k+=",");k+=r||"???"}}f="";g=Vj(a,e)+":";if(-1!==e.K&&-1!==b.K){do if(f+=" "+K(a,a.Ta(e,2)),null==e.K)break;while(e.K!=b.K)}g+=ya(f,24);g+=ya(n,5);k&&(g+=" "+k);if(c||m)g=ya(g,60)+";"+(c||""),g=a.f.A.Nb?g+("cycles="+me(a.f).toString()+" cs="+v(a.f.oc)):g+(null!=d?"="+d.toString():""),m&&(";"!=g.slice(-1)&&(g+=" "),g+=m);return g}
|
||||
function Hk(a,b){b=Pe(a.f,b)[0];b>=a.f.ub&&b<a.F.B&&(b=b-a.f.ub+a.F.B);var c=a.F;a=null;b>=c.B&&(b=c.Ra[b&kd])&&(a=b[4]);return a}function Ik(a,b){switch(b){case "N":a=Ee(a.f);break;case "Z":a=De(a.f);break;case "V":a=Ce(a.f);break;case "C":a=Be(a.f);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Jk(a,b){var c=Xj(a,b);c&&(c+="="+K(a,a.Bd(b))+" ");return c}
|
||||
function Kk(a,b){var c,d="";for(c=0;6>c;c++)d+=Jk(a,c);d=d+"\n"+(Jk(a,6)+Jk(a,7));d+=Jk(a,ak)+Jk(a,bk)+Jk(a,dk);d+=Ik(a,"T")+Ik(a,"N")+Ik(a,"Z")+Ik(a,"V")+Ik(a,"C");b&&(b=d,c=""+(Jk(a,ek)+Jk(a,fk)),c+=Jk(a,gk)+Jk(a,hk)+Jk(a,ck),c=c+"\n"+(Jk(a,jk)+Jk(a,Yj)+Jk(a,ik)),d=b+("\n"+c));return d}h.me=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Dh(a,b,c,d,e){var f=[],g;for(g in e){var k=e[g];"number"==typeof k&&(e[g]=k={o:k});var l=k.o,m=k.a;if(void 0!==l){var n=f,l=[l>>>0,g],q=Ba(n,l,a.me);0>q&&n.splice(-(q+1),0,l)}m&&(k.a=m.replace(/''/g,'"'))}a.B.push({Hk:b,K:c,Lf:d,ia:e,ie:f})}function Lk(a,b,c){var d=[],e=Nj(b)>>>0;for(b=0;b<a.B.length;b++){var f=a.B[b],g=f.K>>>0,k=f.Lf;if(e>=g&&e<g+k){e=Ba(f.ie,[e-g],a.me);0<=e?Mk(a,b,e,d):c&&(e=~e,Mk(a,b,e-1,d),Mk(a,b,e,d));break}}return d}
|
||||
function Mk(a,b,c,d){var e={},f=a.B[b].ie,g=0,k=null;0<=c&&c<f.length&&(g=f[c][0],k=f[c][1]);k&&(e=a.B[b].ia[k],k="."==k.charAt(0)?null:e.l||k);d.push(k);d.push(g);d.push(e.a);d.push(e.c)}function Nk(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Hj(a)||a.v("no variables"),!0;if(!c[2])return Hj(a,c[1]);if(!c[3])return delete a.S[c[1]],!0;b=Fj(a,c[3]);return void 0!==b?(a.S[c[1]]=b,!0):!1}a.v("invalid assignment:"+b);return!1}
|
||||
function Ok(a,b,c){var d=null;if(b=Sj(a,b,!0)){var e=Lk(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.K-e[1])&&(g=" + "+ra(f)),f=e[0]+" ("+K(a,e[1])+")"+g,c&&a.v(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.K)&&(g=" - "+ra(f)),f=e[4]+" ("+K(a,e[5])+")"+g,c&&a.v(f),d||(d=f))}else c&&a.v("no symbols")}return d}
|
||||
function ok(a,b){var c;if(b&&"?"==b[1])a.v("register commands:"),a.v("\tr\tdump registers"),a.v("\trm\tdump misc registers"),a.v("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.f;null==c&&(c=!0);if(b&&1<b.length){var f=b[1];if("m"==f)d=!0;else{var g=f.indexOf("=");if(0<g)b=f.substr(g+1),f=f.substr(0,g);else if(2<b.length)b=b[2];else{a.v("missing value for "+b[1]);return}g=Fj(a,b);if(void 0===g)return;b=f.toUpperCase();switch(b){case "SP":case "R6":e.g[6]=g&65535;break;case "PC":case "R7":rc(e,
|
||||
"";le(d,a,!0);return!0}return!1}),!0;case "step":return this.H[b]=c,Qa(c,function(a){var b=!1;Eb(d,!0)||(Fb(d,!0),b=vc(d,a?1:0,null),Fb(d,!1));return b}),!0}return!1};function ke(a){if(a.X){var b=0,c=0;window&&(b=window.scrollX,c=window.scrollY);a.X.focus();window&&window.scrollTo(b,c)}}h.Pd=function(a,b){var c=255,d=Oj(a);-1!==d&&(a.Na||65535<d?(c=this.F,d=Oe(this.f,d),c.C=!1,c.oa++,d=fd(c,d).J(d&c.i,d),c.oa--):(c=this.f,c.qa++,d=c.F.Ld(Bc(c,d,3)),c.qa--),c=d,b&&Uj(a,b));return c};
|
||||
h.Ta=function(a,b){var c=65535,d=Oj(a);-1!==d&&(c=a.Na||65535<d?Cc(this.F,Oe(this.f,d)):Dc(this.f,d),b&&Uj(a,b));return c};h.Qd=function(a,b,c){var d=Oj(a);if(-1!==d){if(a.Na||65535<d)gd(this.F,Oe(this.f,d),b);else{var e=this.f;e.qa++;e.F.Md(Bc(e,d,5),b);e.qa--}c&&Uj(a,c);H(this.J,-1)}};h.Le=function(a,b,c){var d=Oj(a);if(-1!==d){if(a.Na||65535<d)Ac(this.F,Oe(this.f,d),b);else{var e=this.f;e.qa++;e.F.ac(Bc(e,d,4),b);e.qa--}c&&Uj(a,c);H(this.J,-1)}};
|
||||
function Tj(a,b,c){var d;c=(c?a.G:a.Ha).K;var e,f;if(void 0!==b){a:{var g;d=a.N[0];c=a.N[1];g="("==d||"{"==d||"["==d?"\\":"";for(var k="["==d?"\\":"",k=new RegExp(g+d+"([^"+k+d+k+c+"]+)"+g+c);g=b.match(k);){var l=Gj(a,g[1]);if(void 0===l){b=void 0;break a}b=b.replace(d+g[1]+c,null!=l?K(a,l):"undefined")}if(a.ka.length)for(d=a.ka[0],c=a.ka[1],g="("==d||"{"==d||"["==d?"\\":"",k="["==d?"\\":"",k=new RegExp(g+d+"([^"+k+d+k+c+"]+)"+g+c);g=b.match(k);)b=b.replace("["+g[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){c=
|
||||
null;switch(d[1].toLowerCase()){case "ops":c=0}if(null==c)break;b=b.replace(d[0],c.toString())}}"%"==b.charAt(0)&&(e=!0,b=b.substr(1));d=b;var m,n;a:{c=a.F;g=d.toUpperCase();for(n in c.Ra)if(k=+n,c.Ra[k][4]==g){n=c.B+k;break a}n=null}if(null==n&&d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.B.length;c++)if(g=a.B[c].ia[d],null!=g){n=g.o;break}null!=n&&(m=X(n));if(d=m)return d;0<=b.indexOf("0x")?f=16:0<=b.indexOf("0o")?f=8:0<=b.indexOf(".")&&(f=10);c=Gj(a,b)}null!=c&&(d=X(c,e,f));return d}
|
||||
function Vj(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.he=yj(a,b.Qc=c[2]))}function Uj(a,b){null!=a.K&&(a.K+=b||1)}function Wj(a,b){return(b.Na?"%":"")+K(a,b.K)}
|
||||
function Mj(a,b){a.D=a;a.ja=a.ke=536870912;a.S=null;a.M=[];b=yj(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in Rb){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d<e;d++)if(d in b&&b[d]===c)break a;d=-1}0<=d&&(a.ja|=Rb[c],a.v(c+" messages enabled"))}}function rd(a,b,c){for(var d in Rb)if(b==Rb[d]){a.ma[d]=c;break}}
|
||||
h.re=function(a){a=a.toUpperCase();var b=Xj[a];null==b&&(b=-1,"R"==a.charAt(0)&&(b=+a.charAt(1),0>b||7<b))&&(b=-1);return b};function Yj(a,b){var c;if(b<Zj||a.g)c=ak[b];return c||""}
|
||||
h.Bd=function(a){var b;if(0<=a)if(8>a)b=this.f.g[a];else if(16>a)b=this.f.ua[a-8];else if(20>a)b=this.f.Y[a-16];else{var c=this.f,d=this.g;switch(a){case bk:b=Ad(this.f);break;case ck:b=c.ob;break;case dk:b=c.P;break;case ek:b=c.za&65280;break;case fk:b=ud(c);break;case gk:b=wd(c);break;case hk:b=xd(c);break;case ik:b=c.X;break;case Zj:d&&(b=d.ga);break;case jk:d&&(b=d.Eb);break;case kk:d&&(b=d.Ya)}}return b};
|
||||
h.message=function(a,b){b&&(a+=" @"+Wj(this,X(this.f.O&65535)));if(!this.S||a!=this.S)if(this.S=a,this.ja&1073741824)this.M.push(a);else{var c;if(this.ja&-2147483648&&this.f&&(c=this.f.A.V)||Eb(this,!0))this.da(),c&&(a+=" (cpu halted)");this.v(a);this.f&&(a=this.f,re(a),a.Ab=0,a.J&&H(a.J,void 0))}};
|
||||
function Lj(a){var b;if(!bf(a))a.i&&a.i.length&&a.v("instruction history buffer freed"),a.R=0,a.i=[];else if(!a.i||!a.i.length){a.i=Array(lk);for(b=0;b<a.i.length;b++)a.i[b]=X();a.R=0;a.v("instruction history buffer allocated")}}function mk(a,b,c){if(!nk(a,c))return!1;uc(a.f,b);return!0}
|
||||
function vc(a,b,c,d){if(!nk(a))return!1;var e="";null===c&&(e=(c=!a.ua||"tr"==a.ua)?"tr":"t");a.w=0;b||bf(a)&&cf(a,a.f.g[7],0);try{b=se(a.f,b);var f=a.f.Cc(b);0<f&&(wc(a.f,f),a.w+=f,xc(a.f,f,!0),yc(a.f,f),a.Z++)}catch(g){"number"!=typeof g&&(a.w=0,Bb(a.f,g.stack||g.message))}!1!==d&&(a.g&&a.g.stop(),H(a.J,-1));je(a,c||!1,e);return 0<a.w}h.da=function(a){this.f&&this.f.da(a)};
|
||||
function je(a,b,c){if(a.Ia){void 0===b&&(b=!0);c&&a.v(ok+c);c=a.f;if(c=c.i&128?c.Ec|c.Dc<<8:0){var d=c>>8;a.v("trapped to "+K(a,c&255,8)+" ("+(0>d?Mb[-d]:K(a,d))+")")}a.G=X(a.f.g[7]);b&&1!=a.I?pk(a):qk(a)}}function nk(a,b){var c;(c=!a.f||!Db(a.f))||(c=a.f,c.A.ca?c=!0:(c.v(c.toString()+" not powered"),c=!1),c=!c);return c||a.f.A.V?(b||a.v("cpu busy or unavailable, command ignored"),!1):!Cb(a.f)}h.Ea=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};
|
||||
h.Da=function(a,b){b&&this.v(a?"suspending":"shutting down");return a?this.save():!0};h.reset=function(a){Lj(this);this.Z=0;this.S=null;this.w=0;this.G=X(this.f.g[7]);this.A.V=!1;rk(this);a||je(this)};h.save=function(){var a=new G(this);a.set(0,Pj(this.G));a.set(1,Pj(this.O));a.set(2,[this.j,this.P,this.ja]);a.set(3,this.B);return a.data()};
|
||||
h.restore=function(a){var b=0;void 0!==a[2]&&(this.G=Qj(this,a[b++]),this.O=Qj(this,a[b++]),this.j=a[b][0],"string"==typeof this.j&&(this.j=[this.j]),this.P=a[b][1],this.ja|=a[b][2]);a[3]&&(this.B=a[3]);return!0};h.start=function(a,b){this.I||this.v("running");this.A.V=!0;this.Ja=a;this.Ka=b};
|
||||
h.stop=function(a,b){if(this.A.V){this.A.V=!1;this.w=b-this.Ka;if(!this.I){b="stopped";if(this.w){a-=this.Ja;var c=0<a?Math.round(1E3*this.w/a):0;b+=" (";bf(this)&&(b+=this.Z+" instructions, ",this.Z=0);b+=this.w+" cycles, "+a+" ms, "+c+" hz)"}else E(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.v(b)}je(this,!0);ke(this);rk(this,this.f.g[7]);this.S=null}};function bf(a){return 1<a.b.length||!!a.ha}
|
||||
function cf(a,b,c){var d=-1;c||(d=Dc(a.f,b))||(a.f.O&65535)!=b||(b=Fe(a.f,2));if(0<c&&(a.ha&&!--a.ha||sk(a,b,1,a.b)))return!0;0<=c&&a.i.length&&(a.Z++,0>d&&(d=Dc(a.f,b)),65535!=(d&65535)&&(a.Hd(a.i[a.R],b),++a.R==a.i.length&&(a.R=0)));return!1}function Dg(a){var b=a.f;if(b.A.V)throw rc(b,a.f.O&65535),a.da(),-1;return!1}function ae(a,b,c){sk(a,b,c||1,a.L)&&a.da(!1)}function be(a,b,c){sk(a,b,c||1,a.C)&&a.da(!1)}
|
||||
function Kj(a){var b,c,d;a.b=["bp"];if(a.L)for(b=1;b<a.L.length;b++)c=a.L[b],d=Oj(c),c.Na?(c=a.F,$d(c.b[d>>>c.g],!1)):Re(a.f,!1);a.L=["br"];if(a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=Oj(c),c.Na?(c=a.F,$d(c.b[d>>>c.g],!0)):Re(a.f,!0);a.C=["bw"];a.qa=0;a.ha=0}
|
||||
h.Bb=function(a,b,c){var d=!0;c||tk(this,a,b,!1,!0);if(a!=this.b){var e=Oj(b);if(-1===e)this.v("invalid address: "+Wj(this,b)),d=!1;else{var f=a==this.C;65535<e&&(b.Na=!0);if(b.Na){var g=this.F;g.b[e>>>g.g].Bb(e&g.i,f)}else e=this.f,(f?e.tc++:e.sc++)||ye(e)}}d&&(a.push(b),c?b.Wa=!0:(uk(this,a,a.length-1,"set"),Lj(this)));return d};
|
||||
function tk(a,b,c,d,e){var f=!1;c=Oj(c);for(var g=1;g<b.length;g++){var k=b[g];if(c==Oj(k)&&(!d||k.Wa)){f=!0;k.Wa||e||uk(a,b,g,"cleared");b.splice(g,1);b!=a.b&&(b=b==a.C,k.Na?(d=a.F,$d(d.b[c>>>d.g],b)):Re(a.f,b));k.Wa||Lj(a);break}}return f}function vk(a,b){for(var c=1;c<b.length;c++)uk(a,b,c);return b.length-1}function uk(a,b,c,d){c=b[c];a.v(b[0]+" "+Wj(a,c)+(d?" "+d:c.Qc?' "'+c.Qc+'"':""))}
|
||||
function rk(a,b){if(void 0!==b)sk(a,b,1,a.b,!0),a.I=0;else for(b=1;b<a.b.length;b++){var c=a.b[b];if(c.Wa){if(!tk(a,a.b,c,!0))break;b=0}}}
|
||||
function sk(a,b,c,d,e){var f=!1;if(!a.qa++)for(var g=1;!f&&g<d.length;g++){var k=d[g];if(!e||k.Wa)for(var l=Oj(k)&(d==a.b?65535:-1),m=0;m<c;m++)if(b+m==l){var n,f=!0;k.Wa&&(tk(a,d,k,!0),e=!0);if(n=k.he){for(var f=!1,q=0;q<n.length;q++)if(!wk(a,n[q],!0)){if(n[q].indexOf("if")){f=!0;break}for(var t=q+1;t<n.length&&n[t].indexOf("else");t++)q++;if(t==n.length){f=!0;break}}a.f.A.V||(f=!0)}if(f){e||uk(a,d,g,"hit");break}}}a.qa--;return f}
|
||||
function xk(a,b,c,d){var e=X(b.K),f=a.Ta(b,2),g,k;for(k in a.La)if(g=a.La[k][f&k])break;g||(g=yk);var l=g[0];0<=a.Y.indexOf(l)&&(g=yk,l=g[0]);var m=k="",n=zk[l],q=g.length-1;l||q||(k=K(a,f));for(l=1;l<=q;l++){var t=g[l];if(void 0!==t){var r;r=a;var D=t,t=b,A="",B=D&Ak;if(B==Y)t=t.K+((f&255)<<24>>23)&65535,A=K(r,t);else if(B==Bk)t=t.K-((f&63)<<1)&65535,A=K(r,t);else if(B==Ck)A=K(r,f&7,3);else if(B==Dk)A=K(r,f&63,6);else if(B==Ek)A=K(r,f&255,8);else if(B=f&D,D&Fk&&(B>>=6,D>>=6),D&Z){var D=null,J=B&
|
||||
Gk;switch(B&Hk){case 0:A=Yj(r,J);break;case 8:A="@"+Yj(r,J);D=Ik(r,r.f.g[J]);break;case 16:7>J?A="("+Yj(r,J)+")+":(B=r.Ta(t,2),A="#"+K(r,B,-1));break;case 24:7>J?A="@("+Yj(r,J)+")+":(B=r.Ta(t,2),A="@#"+K(r,B,-1),D=Ik(r,B));break;case 32:A="-("+Yj(r,J)+")";break;case 40:A="@-("+Yj(r,J)+")";break;case 48:B=r.Ta(t,2);A=K(r,B,-1)+"("+Yj(r,J)+")";7==J&&(A=K(r,B=B+t.K&65535),D=Ik(r,B));break;case 56:B=r.Ta(t,2),A="@"+K(r,B)+"("+Yj(r,J)+")",7==J&&(A="@"+K(r,B=B+t.K&65535),D=Ik(r,Dc(r.f,B)))}D&&(A=[A,D])}r=
|
||||
A;if(!r||!r.length){k="INVALID";break}"string"!=typeof r&&(m=r[1],r=r[0]);0<k.length&&(k+=",");k+=r||"???"}}f="";g=Wj(a,e)+":";if(-1!==e.K&&-1!==b.K){do if(f+=" "+K(a,a.Ta(e,2)),null==e.K)break;while(e.K!=b.K)}g+=ya(f,24);g+=ya(n,5);k&&(g+=" "+k);if(c||m)g=ya(g,60)+";"+(c||""),g=a.f.A.Nb?g+("cycles="+me(a.f).toString()+" cs="+v(a.f.oc)):g+(null!=d?"="+d.toString():""),m&&(";"!=g.slice(-1)&&(g+=" "),g+=m);return g}
|
||||
function Ik(a,b){b=Pe(a.f,b)[0];b>=a.f.ub&&b<a.F.B&&(b=b-a.f.ub+a.F.B);var c=a.F;a=null;b>=c.B&&(b=c.Ra[b&kd])&&(a=b[4]);return a}function Jk(a,b){switch(b){case "N":a=Ee(a.f);break;case "Z":a=De(a.f);break;case "V":a=Ce(a.f);break;case "C":a=Be(a.f);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Kk(a,b){var c=Yj(a,b);c&&(c+="="+K(a,a.Bd(b))+" ");return c}
|
||||
function Lk(a,b){var c,d="";for(c=0;6>c;c++)d+=Kk(a,c);d=d+"\n"+(Kk(a,6)+Kk(a,7));d+=Kk(a,bk)+Kk(a,ck)+Kk(a,ek);d+=Jk(a,"T")+Jk(a,"N")+Jk(a,"Z")+Jk(a,"V")+Jk(a,"C");b&&(b=d,c=""+(Kk(a,fk)+Kk(a,gk)),c+=Kk(a,hk)+Kk(a,ik)+Kk(a,dk),c=c+"\n"+(Kk(a,kk)+Kk(a,Zj)+Kk(a,jk)),d=b+("\n"+c));return d}h.me=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
||||
function Dh(a,b,c,d,e){var f=[],g;for(g in e){var k=e[g];"number"==typeof k&&(e[g]=k={o:k});var l=k.o,m=k.a;if(void 0!==l){var n=f,l=[l>>>0,g],q=Ba(n,l,a.me);0>q&&n.splice(-(q+1),0,l)}m&&(k.a=m.replace(/''/g,'"'))}a.B.push({Hk:b,K:c,Lf:d,ia:e,ie:f})}function Mk(a,b,c){var d=[],e=Oj(b)>>>0;for(b=0;b<a.B.length;b++){var f=a.B[b],g=f.K>>>0,k=f.Lf;if(e>=g&&e<g+k){e=Ba(f.ie,[e-g],a.me);0<=e?Nk(a,b,e,d):c&&(e=~e,Nk(a,b,e-1,d),Nk(a,b,e,d));break}}return d}
|
||||
function Nk(a,b,c,d){var e={},f=a.B[b].ie,g=0,k=null;0<=c&&c<f.length&&(g=f[c][0],k=f[c][1]);k&&(e=a.B[b].ia[k],k="."==k.charAt(0)?null:e.l||k);d.push(k);d.push(g);d.push(e.a);d.push(e.c)}function Ok(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ij(a)||a.v("no variables"),!0;if(!c[2])return Ij(a,c[1]);if(!c[3])return delete a.U[c[1]],!0;b=Gj(a,c[3]);return void 0!==b?(a.U[c[1]]=b,!0):!1}a.v("invalid assignment:"+b);return!1}
|
||||
function Pk(a,b,c){var d=null;if(b=Tj(a,b,!0)){var e=Mk(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.K-e[1])&&(g=" + "+ra(f)),f=e[0]+" ("+K(a,e[1])+")"+g,c&&a.v(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.K)&&(g=" - "+ra(f)),f=e[4]+" ("+K(a,e[5])+")"+g,c&&a.v(f),d||(d=f))}else c&&a.v("no symbols")}return d}
|
||||
function pk(a,b){var c;if(b&&"?"==b[1])a.v("register commands:"),a.v("\tr\tdump registers"),a.v("\trm\tdump misc registers"),a.v("\trx [#]\tset flag or register x to [#]");else{var d=!1,e=a.f;null==c&&(c=!0);if(b&&1<b.length){var f=b[1];if("m"==f)d=!0;else{var g=f.indexOf("=");if(0<g)b=f.substr(g+1),f=f.substr(0,g);else if(2<b.length)b=b[2];else{a.v("missing value for "+b[1]);return}g=Gj(a,b);if(void 0===g)return;b=f.toUpperCase();switch(b){case "SP":case "R6":e.g[6]=g&65535;break;case "PC":case "R7":rc(e,
|
||||
g);a.G=X(e.g[7]);break;case "N":e.I=g?32768:0;break;case "Z":e.L=g?0:1;break;case "V":e.G=g?32768:0;break;case "C":e.C=g?65536:0;break;case "PS":Bd(e,g);break;case "PI":zd(e,g);break;case "ER":e.P=g;d=!0;break;case "SL":e.za=g|255;break;case "M0":vd(e,g);d=!0;break;case "M3":yd(e,g);d=!0;break;case "AR":a.g&&(d=a.g,jc(d,d.ga=g));d=!0;break;case "DR":a.g&&Ub(a.g,g);d=!0;break;case "SR":a.g&&kc(a.g,g);d=!0;break;default:if("R"==b.charAt(0)&&(b=+b.charAt(1),0<=b&&6>b)){e.g[b]=g&65535;break}a.v("unknown register: "+
|
||||
f);return}H(a.J);a.v("updated registers:")}}a.v(Kk(a,d));c&&(a.G=X(e.g[7]),pk(a,Vj(a,a.G)))}}function Pk(a,b){b=za(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.v(c[2]):Gj(a,null,c[2].charCodeAt(0)):Fj(a,b,!1)}
|
||||
function Qk(a,b,c){if("?"==c)a.v("trace commands:"),a.v("\tt [#]\ttrace # instructions"),a.v("\ttr [#]\ttrace # instructions with register updates"),a.v("\ttc [#]\ttrace # cycles"),a.v("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Cj(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ua=b;Pa(c,function(){return Fb(a,!0)&&vc(a,e,d,!1)},function(){a.g&&a.g.stop();H(a.J,-1);Fb(a,!1)})}}
|
||||
function pk(a,b,c,d){if(b=Sj(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Cj(a,c.substr(1)),null!=c&&(d=c);else{d=Sj(a,c,!0);if(!d||d.K<b.K)return;e=d.K-b.K;if(256<e){a.v("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=Eb(a,!1)||a.I?a.w:null;var g=null!=f?"cycles":null,k=Lk(a,b),l=b.K;if(k[0]&&d&&(!c&&d||0>k[0].indexOf("+"))){var m=k[0]+":";k[2]&&(m+=" "+k[2]);a.v(m)}k[3]&&(g=k[3],f=null);f=wk(a,b,g,f);a.v(f);a.G=b;e-=b.K-l;c++}}}
|
||||
function vk(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.v(nk+b):(a.O&&(a.v("ended assemble at "+Vj(a,a.N)),a.G=a.N,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.R=null;if(Db(a)&&0<b.length){a.O&&(b="a "+Vj(a,a.N)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var k=g[0],l=k.charAt(0),m=1;m<k.length;m++){var n=k.charAt(m);if("?"==l||"r"==l||"a">n||"z"<n){g[0]=k.substr(m);g.unshift(k.substr(0,m));break}}switch(g[0].charAt(0)){case "a":var q=
|
||||
Sj(a,g[1],!0);if(q)if(a.N=q,void 0===g[2])a.v("begin assemble at "+Vj(a,q)),a.O=!0,H(a.J);else{var t;a.v("not supported yet");t=[];if(t.length){for(var r=0;r<t.length;r++)a.Qd(q,t[r],1);a.v(wk(a,a.N))}}break;case "b":a:{var D=g[0],A=g[1],B=b;if("?"==A)a.v("breakpoint commands:"),a.v("\tbp #\tset exec breakpoint"),a.v("\tbr #\tset read breakpoint"),a.v("\tbw #\tset write breakpoint"),a.v("\tbc #\tclear breakpoint (* to clear all)"),a.v("\tbl\tlist all breakpoints"),a.v("\tbn [#]\tbreak after # instruction(s)");
|
||||
else{var J=D.charAt(1);if("l"==J){var ub;ub=0+uk(a,a.b);ub+=uk(a,a.L);(ub+=uk(a,a.C))||a.v("no breakpoints")}else if("n"==J){var Ed=+A||0;A&&(a.ha=Ed);a.v("break after "+Ed+" instruction(s)")}else if(void 0===A)a.v("missing breakpoint address");else{var sa=X();if("*"!=A&&(sa=Sj(a,A,!0),!sa))break a;"c"==J?null==sa.K?(Jj(a),a.v("all breakpoints cleared")):sk(a,a.b,sa)||sk(a,a.L,sa)||sk(a,a.C,sa)||a.v("breakpoint missing: "+Vj(a,sa)):null!=sa.K&&(Uj(a,sa,B),"p"==J?a.Bb(a.b,sa):"r"==J?a.Bb(a.L,sa):"w"==
|
||||
J?a.Bb(a.C,sa):a.v("unknown breakpoint command: "+J))}}}break;case "c":a.Va&&(a.Va.value="");break;case "d":a:{var Zb,jb=g[0],Ta=g[1],kb=g[2],pl=g[3];if("?"==Ta){var $b="";for(Zb in Rb)a.ma[Zb]&&($b&&($b+=","),$b+=Zb);$b+=",state,symbols";a.v("dump memory commands:");a.v("\tda [a] dump info for address a");a.v("\tdb [a] [n] dump n bytes at address a");a.v("\tdw [a] [n] dump n words at address a");a.v("\tdd [a] [n] dump n dwords at address a");a.v("\tds [a] [n] dump n words at address a as JSON");
|
||||
a.v("\tdh [p] [n] dump n instructions from history position p");$b.length&&a.v("dump extension commands:\n\t"+$b)}else if("state"==Ta){var gf=Rk(a.J,!0);"console"==kb?console.log(gf):(a.Va&&(a.Va.value=""),gf&&a.v(gf))}else if("symbols"==Ta)for(var hf=0;hf<a.B.length;hf++){var jf=a.B[hf],ac;for(ac in jf.ia)if("."!=ac.charAt(0)){var xi=jf.ia[ac].o;if(void 0!==xi){var yi=jf.ia[ac].l;yi&&(ac=yi);a.v(K(a,xi)+" "+ac)}}}else{if("d"==jb){for(Zb in Rb)if(g[1]==Zb){var zi=a.ma[Zb];zi?(g.shift(),g.shift(),
|
||||
zi(g)):a.v("no dump registered for "+Ta);break a}Ta||(jb=a.Qa||"dw")}else a.Qa=jb;if("dh"==jb){var Ai=Ta,Bi=kb,Ci="",Di=0,Ia=a.P,Ua=a.i;if(Ua.length){var Ca=+Ai||a.ta,Mc=+Bi||10;isNaN(Ca)?Ca=Mc:Ci="more ";Ca>Ua.length&&(a.v("note: only "+Ua.length+" available"),Ca=Ua.length);Ia-=Ca;0>Ia&&(null==Ua[Ua.length-1].K?(Ca=Ia+Ca,Ia=0):Ia+=Ua.length);var kf=[];"call"==Bi&&(Mc=1E5,kf=["CALL"]);for(void 0!==Ai&&a.v(Ca+" instructions earlier:");0<Mc&&Ia!=a.P;){var Ei=Ua[Ia++];if(null==Ei.K)break;var Nc=X(Ei.K),
|
||||
ql=Ca--,Fi=wk(a,Nc,"history",ql);(!kf.length||0<=Fi.indexOf(kf[0]))&&a.v(Fi);Nc.yd&&(Ia+=Nc.yd,Mc-=Nc.yd,Ca-=Nc.yd);Ia>=Ua.length&&(Ia=0);a.ta=Ca;Di++;Mc--}}Di||(a.v("no "+Ci+"history available"),a.ta=void 0)}else{var oa=Sj(a,Ta);if(oa)if("da"==jb){var lf=oa.Na||65535<oa.K,O=Pe(a.f,oa.K||0,lf);a.v(ya("",lf?12:19)+pa(oa.K,lf?22:17,3)+" "+u(oa.K,8));6>O.length?(2<O.length&&(a.v(" OFFSET: "+pa(O[3],13,3)+" "+u(O[3],8)),a.v("UNIMAP["+qa(O[1],2)+"]: "+pa(O[2],22,3)+" "+u(O[2],8))),a.v(" PHYSICAL: "+
|
||||
pa(O[0],22,3)+" "+u(O[0],8))):(a.v(" OFFSET: "+pa(O[1],13,3)+" "+u(O[1],8)),a.v("+ "+Sk[O[2]]+"PAR"+O[3]+": "+pa(O[4],22,3)+" "+u(O[4],8)),a.v("& MMUMASK: "+pa(O[5],22,3)+" "+u(O[5],8)),a.v("= PHYSICAL: "+pa(O[0],22,3)+" "+u(O[0],8)))}else{var wb=0,mf="ds"==jb;if(kb){if("l"==kb.charAt(0))kb=kb.substr(1)||pl,wb=Cj(a,kb);else{var Gi=Sj(a,kb);Gi&&(wb=Gi.K-oa.K)}0>wb&&(wb=0);65536<wb&&(wb=65536)}var sl=a.W;oa.W&&(a.W=oa.W);for(var xb="dd"==jb?4:"db"==jb?1:2,Nd=xb*wb||128,nf=mf?
|
||||
16:a.W,tl=(Nd+nf-1)/nf|0||1,yb="";tl--&&0<Nd;){for(var zb="",of="",Ta=Vj(a,oa),Od=nf,Oc=0,Pc=0;0<Od&&0<Nd;){var bc=1,Pd=1==xb?a.Pd(oa,bc):a.Ta(oa,bc=2),Oc=Oc|Pd<<(Pc<<3),Pc=Pc+bc;Pc==xb&&(mf?(zb&&(zb+=","),zb+="0x"+v(Oc,xb<<1)):(zb+=K(a,Oc,xb<<3),zb+=1==xb?9==Od?"-":" ":" "),Oc=Pc=0);Od-=bc;for(Nd-=bc;1==xb&&bc--;)var pf=Pd&255,of=of+(32<=pf&&128>pf?String.fromCharCode(pf):"."),Pd=Pd>>8}yb&&(yb+="\n");yb=mf?yb+(zb+","):yb+(Ta+": "+zb+(Od?"":" "+of))}yb&&a.v(yb);a.Ha=oa;a.W=sl}}}}break;case "e":if("else"==
|
||||
g[0])break;var cc,qf,rf,sf,tf=g[0],uf=g[1];"eb"==tf?(cc=1,qf=255,rf=a.Pd,sf=a.Qd):"e"==tf||"ew"==tf?(cc=2,qf=65535,rf=a.Ta,sf=a.Le):uf=null;if(null==uf)a.v("edit memory commands:"),a.v("\teb [a] [...] edit bytes at address a"),a.v("\tew [a] [...] edit words at address a");else{var Qd=Sj(a,uf);if(Qd)for(var Rd=2;Rd<g.length;Rd++){var Qc=Fj(a,g[Rd]);if(void 0===Qc){a.v("unrecognized value: "+g[Rd]);break}Qc&~qf&&a.v("warning: "+v(Qc)+" exceeds "+cc+"-byte value");a.v("changing "+Vj(a,Qd)+(E(a,16)?
|
||||
"":" from "+K(a,rf.call(a,Qd),cc<<3))+" to "+K(a,Qc,cc<<3));sf.call(a,Qd,Qc,cc)}}break;case "g":a:{var Hi=g[1],ul=b;if(void 0!==Hi){var vf=Sj(a,Hi,!0);if(!vf)break a;Uj(a,vf,ul);a.Bb(a.b,vf,!0)}lk(a,!0,c)}break;case "h":a.A.V?(c||a.v("halting"),a.da()):Eb(a,!0)||c||a.v("already halted");break;case "i":if("if"==g[0]){var wf;var Rc=b.substr(2),Rc=za(Rc);Fj(a,Rc)?(c||a.v("true: "+Rc),wf=!0):(c||a.v("false: "+Rc),wf=!1);wf||(d=!1);break}f=!0;break;case "k":var vl=g[0];if("?"==g[1])a.v("stack trace commands:"),
|
||||
a.v("\tk\tshow frame addresses"),a.v("\tks\tshow symbol information");else{var xf=0,yf=X(),Sc=X(a.f.g[6]);for(a.v("stack trace for "+Vj(a,Sc));10>xf;){for(var Ab=null,wl=256;65536>Sc.K>>>0;){yf.K=a.Ta(Sc,2);if(null==Sc.K||!wl--)break;if(!(yf.K&1)){for(var xl=a,Sd=yf,Ii=null,Tc=Sd.K,Ji=Tc,zf=1;6>=zf&&Tc;zf++){if(2<zf){Sd.K=Tc;var Td=wk(xl,Sd);if(0<=Td.indexOf("JSR")){var Ki=Td.indexOf(" ");if(Tc+(Td.indexOf(" ",Ki+1)-Ki-1)/2==Ji){Ii=Td;break}}}Tc-=2}Sd.K=Ji;if(Ab=Ii)break}}if(!Ab||null==Ab)break;var Li=
|
||||
null;if("ks"==vl){var Mi=Ab.match(/[0-9A-F]+$/);Mi&&(Li=Ok(a,Mi[0]))}Ab=ya(Ab,50)+" ;"+(Li||"stack="+Vj(a,Sc));a.v(Ab);xf++}xf||a.v("no return addresses found")}break;case "l":if("ln"==g[0]){Ok(a,g[1],!0);break}f=!0;break;case "m":a:{var Va,Wa=null,T=g[1];"?"==T&&(T=void 0);if(void 0!==T){var lb=0;if("all"==T)lb=1879046143,T=null;else if("on"==T)Wa=!0,T=null;else if("off"==T)Wa=!1,T=null;else{"keys"==T&&(T="key");"kbd"==T&&(T="keyboard");for(Va in Rb)if(T==Va){lb=Rb[Va];Wa=!!(a.ja&lb);break}if(!lb){a.v("unknown message category: "+
|
||||
T);break a}}if(lb)if("on"==g[2])a.ja|=lb,Wa=!0;else if("off"==g[2]&&(a.ja&=~lb,Wa=!1,1073741824==lb)){for(var Ni=1E3<=a.M.length?a.M.length-1E3:0;Ni<a.M.length;)a.v(a.M[Ni++]);a.M=[]}}var yl=0,Uc="";for(Va in Rb)if(!T||T==Va){var zl=!!(a.ja&Rb[Va]);if(null===Wa||Wa==zl)Uc&&(Uc+=","),++yl%10||(Uc+="\n\t"),"key"==Va&&(Va="keys"),Uc+=Va}void 0===T&&a.v("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.v((null!==Wa?Wa?"messages on: ":"messages off: ":"message categories:\n\t")+
|
||||
(Uc||"none"));Kj(a)}break;case "p":if("print"==g[0]){Pk(a,b.substr(5));break}var Al=g[0];if("?"==g[1])a.v("step commands:"),a.v("\tp\tstep over instruction"),a.v("\tpr\tstep over instruction with register update");else{var Oi="pr"==Al?1:0,Pi=1+Oi;if(a.I)a.v("step in progress");else{var Ud=X(a.f.g[7]),dc=a.Ta(Ud);3==dc||4==dc||34816==(dc&65280)||32256==(dc&65024)||35072==(dc&65280)?(a.I=Pi,Tj(Ud,2)):2048==(dc&65024)&&(wk(a,Ud),a.I=Pi);a.I?(a.Bb(a.b,Ud,!0),lk(a)||(a.J&&qe(a.J),a.I=0)):Qk(a,Oi?"tr":
|
||||
"t")}}break;case "r":if("reset"==b){a.J&&a.J.reset();break}ok(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var Vc=+g[2];if(8==Vc||10==Vc||16==Vc)a.W=Vc;else{a.v("invalid base: "+Vc);break}}a.v("default base: "+a.W);break;case "cs":var Wc;void 0!==g[3]&&(Wc=+g[3]);switch(g[2]){case "int":a.f.Ob=Wc;break;case "start":a.f.pc=Wc;break;case "stop":a.f.Rb=Wc;break;default:a.v("unknown cs option");break a}void 0!==Wc&&ie(a.f);a.v("checksums "+(a.f.A.Nb?"enabled":"disabled"));break;case "sp":void 0!==
|
||||
g[2]&&(ne(a.f,+g[2])||a.v("warning: using 1x multiplier, previous target not reached"));a.v("target speed: "+(a.f.xb.toFixed(2)+"Mhz")+" ("+a.f.mb+"x)");break;default:if(g[1]){a.v("unknown option: "+g[1]);break}case "?":a.v("debugger options:"),a.v("\tbase #\t\tset default base to #"),a.v("\tcs int #\tset checksum cycle interval to #"),a.v("\tcs start #\tset checksum cycle start count to #"),a.v("\tcs stop #\tset checksum cycle stop count to #"),a.v("\tsp #\t\tset speed multiplier to #")}break;case "t":Qk(a,
|
||||
g[0],g[1]);break;case "u":pk(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Nk(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.v((Hb||"PDP11")+" version 1.34.3 ("+a.f.ka+",RELEASE"+(Jb?",TYPEDARRAYS":Ib?",BYTEARRAYS":",LONGARRAYS")+")");a.v(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){Pk(a,b.substr(1));break}var Af="commands:",Bf;for(Bf in Tk)Af+="\n"+ya(Bf,9)+Tk[Bf];bf(a)||(Af+="\nnote: history disabled if no exec breakpoints");a.v(Af);break;default:f=!0}f&&(a.v("unknown command: "+
|
||||
b),d=!1)}}catch(Ri){a.v("debugger error: "+(Ri.stack||Ri.message)),d=!1}return d}function le(a,b,c){b=yj(a,b,c);for(var d in b)if(!vk(a,b[+d]))return!1;return!0}
|
||||
var Tk={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},yk=".WORD ADC ADCB ADD ASL ASLB ASR ASRB BCC BCS BEQ BGE BGT BHI BIC BICB BIS BISB BIT BITB BLE BLOS BLT BMI BNE BPL BPT BR BVC BVS CCC CLC CLCN CLCV CLCVN CLCVZ CLCZ CLCZN CLN CLR CLRB CLV CLVN CLVZ CLVZN CLZ CLZN CMP CMPB COM COMB DEC DECB INC INCB HALT JMP JSR MARK MFPD MFPI MFPS MOV MOVB MTPD MTPI MTPS NEG NEGB NOP RESET ROL ROLB ROR RORB RTI RTS SBC SBCB SCC SEC SECN SECV SECVN SECVZ SECZ SECZN SEN SEV SEVN SEVZ SEVZN SEZ SEZN SUB SWAB SXT TST TSTB WAIT MUL DIV ASH ASHC XOR SOB EMT TRAP SPL IOT RTT MFPT".split(" "),
|
||||
ak=20,bk=21,ck=22,dk=23,ek=24,fk=25,gk=26,hk=27,Yj=28,ik=29,jk=30,Wj={SP:6,PC:7,PS:ak,PI:bk,ER:ck,SL:dk,M0:ek,M1:fk,M2:gk,M3:hk,AR:Yj,DR:ik,SR:jk},Zj="R0 R1 R2 R3 R4 R5 SP PC A0 A1 A2 A3 A4 A5 A6 A7 S0 S1 S2 S3 PS PI ER SL M0 M1 M2 M3 AR DR SR".split(" "),Sk="KI KD SI SD ?? ?? UI UD".split(" "),Fk=7,Gk=56,Z=Gk|Fk,Ek=4032,Y=4096,Ak=8192,Bk=12288,Ck=24576,Dk=32768,zk=61440,Mj={61440:{4096:[62,Ek,Z],8192:[47,Ek,Z],12288:[18,Ek,Z],16384:[14,Ek,Z],20480:[16,Ek,Z],24576:[3,Ek,Z],36864:[63,Ek,Z],40960:[48,
|
||||
Ek,Z],45056:[19,Ek,Z],49152:[15,Ek,Z],53248:[17,Ek,Z],57344:[94,Ek,Z]},65024:{2048:[57,448,Z],28672:[100,Z,448],29184:[101,Z,448],29696:[102,Z,448],30208:[103,Z,448],30720:[104,448,Z],32256:[105,448,Ak]},65280:{256:[27,Y],512:[24,Y],768:[10,Y],1024:[11,Y],1280:[22,Y],1536:[12,Y],1792:[20,Y],32768:[25,Y],33024:[23,Y],33280:[13,Y],33536:[21,Y],33792:[28,Y],34048:[29,Y],34304:[8,Y],34560:[9,Y],34816:[106,Dk],35072:[107,Dk]},65472:{64:[56,Z],192:[95,Z],2560:[39,Z],2624:[49,Z],2688:[53,Z],2752:[51,Z],
|
||||
2816:[67,Z],2880:[1,Z],2944:[77,Z],3008:[97,Z],3072:[73,Z],3136:[71,Z],3200:[6,Z],3264:[4,Z],3328:[58,Ck],3392:[60,Z],3456:[65,Z],3520:[96,Z],35328:[40,Z],35392:[50,Z],35456:[54,Z],35520:[52,Z],35584:[68,Z],35648:[2,Z],35712:[78,Z],35776:[98,Z],35840:[74,Z],35904:[72,Z],35968:[7,Z],36032:[5,Z],36096:[66,Z],36160:[59,Z],36224:[64,Z],36288:[61,Z]},65528:{128:[76,Fk],152:[108,Bk]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],
|
||||
166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}},xk=[0],Qj=[58,60,65,96,110,100,101,102,103,104,105],Rj=[108,59,64],kk=1E3,nk=">> ";Sa(function(){for(var a=z(document,y,"debugger"),b=0;b<a.length;b++){var c=a[b],d=ob(c),d=new Ij(d);pb(d,c)}});
|
||||
function Uk(a,b,c){x.call(this,"Computer",a,33554432);this.A.ca=!1;this.O=null;Vk(this,b);this.L=ge(this,"autoPower",a,6);this.j=0;this.S=+a.busWidth||+a.buswidth;this.G=this.w=this.I=null;this.C=this.R=!1;this.B=this.u=null;this.P=this.M=this.N=!1;this.U=ge(this,"url")||"";(Math.random()+.1).toString(36);this.g=Wk(this);if(this.f=nb("CPU",this.id)){this.D=nb("Debugger",this.id);this.F=new Gc({id:this.vb+".bus",busWidth:this.S},this.f,this.D);var d,e=ib(this.id);if((this.i=nb("Panel",this.id))&&this.i.Va)for(b=
|
||||
f);return}H(a.J);a.v("updated registers:")}}a.v(Lk(a,d));c&&(a.G=X(e.g[7]),qk(a,Wj(a,a.G)))}}function Qk(a,b){b=za(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.v(c[2]):Hj(a,null,c[2].charCodeAt(0)):Gj(a,b,!1)}
|
||||
function Rk(a,b,c){if("?"==c)a.v("trace commands:"),a.v("\tt [#]\ttrace # instructions"),a.v("\ttr [#]\ttrace # instructions with register updates"),a.v("\ttc [#]\ttrace # cycles"),a.v("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Cj(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.ua=b;Pa(c,function(){return Fb(a,!0)&&vc(a,e,d,!1)},function(){a.g&&a.g.stop();H(a.J,-1);Fb(a,!1)})}}
|
||||
function qk(a,b,c,d){if(b=Tj(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Cj(a,c.substr(1)),null!=c&&(d=c);else{d=Tj(a,c,!0);if(!d||d.K<b.K)return;e=d.K-b.K;if(256<e){a.v("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=Eb(a,!1)||a.I?a.w:null;var g=null!=f?"cycles":null,k=Mk(a,b),l=b.K;if(k[0]&&d&&(!c&&d||0>k[0].indexOf("+"))){var m=k[0]+":";k[2]&&(m+=" "+k[2]);a.v(m)}k[3]&&(g=k[3],f=null);f=xk(a,b,g,f);a.v(f);a.G=b;e-=b.K-l;c++}}}
|
||||
function wk(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.v(ok+b):(a.P&&(a.v("ended assemble at "+Wj(a,a.O)),a.G=a.O,a.P=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.S=null;if(Db(a)&&0<b.length){a.P&&(b="a "+Wj(a,a.O)+" "+b);var f=!1,g=b.replace(/ +/g," ").split(" ");g[0]=g[0].toLowerCase();if(g&&g.length)for(var k=g[0],l=k.charAt(0),m=1;m<k.length;m++){var n=k.charAt(m);if("?"==l||"r"==l||"a">n||"z"<n){g[0]=k.substr(m);g.unshift(k.substr(0,m));break}}switch(g[0].charAt(0)){case "a":var q=
|
||||
Tj(a,g[1],!0);if(q)if(a.O=q,void 0===g[2])a.v("begin assemble at "+Wj(a,q)),a.P=!0,H(a.J);else{var t;a.v("not supported yet");t=[];if(t.length){for(var r=0;r<t.length;r++)a.Qd(q,t[r],1);a.v(xk(a,a.O))}}break;case "b":a:{var D=g[0],A=g[1],B=b;if("?"==A)a.v("breakpoint commands:"),a.v("\tbp #\tset exec breakpoint"),a.v("\tbr #\tset read breakpoint"),a.v("\tbw #\tset write breakpoint"),a.v("\tbc #\tclear breakpoint (* to clear all)"),a.v("\tbl\tlist all breakpoints"),a.v("\tbn [#]\tbreak after # instruction(s)");
|
||||
else{var J=D.charAt(1);if("l"==J){var ub;ub=0+vk(a,a.b);ub+=vk(a,a.L);(ub+=vk(a,a.C))||a.v("no breakpoints")}else if("n"==J){var Ed=+A||0;A&&(a.ha=Ed);a.v("break after "+Ed+" instruction(s)")}else if(void 0===A)a.v("missing breakpoint address");else{var sa=X();if("*"!=A&&(sa=Tj(a,A,!0),!sa))break a;"c"==J?null==sa.K?(Kj(a),a.v("all breakpoints cleared")):tk(a,a.b,sa)||tk(a,a.L,sa)||tk(a,a.C,sa)||a.v("breakpoint missing: "+Wj(a,sa)):null!=sa.K&&(Vj(a,sa,B),"p"==J?a.Bb(a.b,sa):"r"==J?a.Bb(a.L,sa):"w"==
|
||||
J?a.Bb(a.C,sa):a.v("unknown breakpoint command: "+J))}}}break;case "c":a.Va&&(a.Va.value="");break;case "d":a:{var Zb,jb=g[0],Ta=g[1],kb=g[2],ql=g[3];if("?"==Ta){var $b="";for(Zb in Rb)a.ma[Zb]&&($b&&($b+=","),$b+=Zb);$b+=",state,symbols";a.v("dump memory commands:");a.v("\tda [a] dump info for address a");a.v("\tdb [a] [n] dump n bytes at address a");a.v("\tdw [a] [n] dump n words at address a");a.v("\tdd [a] [n] dump n dwords at address a");a.v("\tds [a] [n] dump n words at address a as JSON");
|
||||
a.v("\tdh [p] [n] dump n instructions from history position p");$b.length&&a.v("dump extension commands:\n\t"+$b)}else if("state"==Ta){var gf=Sk(a.J,!0);"console"==kb?console.log(gf):(a.Va&&(a.Va.value=""),gf&&a.v(gf))}else if("symbols"==Ta)for(var hf=0;hf<a.B.length;hf++){var jf=a.B[hf],ac;for(ac in jf.ia)if("."!=ac.charAt(0)){var wi=jf.ia[ac].o;if(void 0!==wi){var xi=jf.ia[ac].l;xi&&(ac=xi);a.v(K(a,wi)+" "+ac)}}}else{if("d"==jb){for(Zb in Rb)if(g[1]==Zb){var yi=a.ma[Zb];yi?(g.shift(),g.shift(),
|
||||
yi(g)):a.v("no dump registered for "+Ta);break a}Ta||(jb=a.Qa||"dw")}else a.Qa=jb;if("dh"==jb){var zi=Ta,Ai=kb,Bi="",Ci=0,Ia=a.R,Ua=a.i;if(Ua.length){var Ca=+zi||a.ta,Mc=+Ai||10;isNaN(Ca)?Ca=Mc:Bi="more ";Ca>Ua.length&&(a.v("note: only "+Ua.length+" available"),Ca=Ua.length);Ia-=Ca;0>Ia&&(null==Ua[Ua.length-1].K?(Ca=Ia+Ca,Ia=0):Ia+=Ua.length);var kf=[];"call"==Ai&&(Mc=1E5,kf=["CALL"]);for(void 0!==zi&&a.v(Ca+" instructions earlier:");0<Mc&&Ia!=a.R;){var Di=Ua[Ia++];if(null==Di.K)break;var Nc=X(Di.K),
|
||||
rl=Ca--,Ei=xk(a,Nc,"history",rl);(!kf.length||0<=Ei.indexOf(kf[0]))&&a.v(Ei);Nc.yd&&(Ia+=Nc.yd,Mc-=Nc.yd,Ca-=Nc.yd);Ia>=Ua.length&&(Ia=0);a.ta=Ca;Ci++;Mc--}}Ci||(a.v("no "+Bi+"history available"),a.ta=void 0)}else{var oa=Tj(a,Ta);if(oa)if("da"==jb){var lf=oa.Na||65535<oa.K,O=Pe(a.f,oa.K||0,lf);a.v(ya("",lf?12:19)+pa(oa.K,lf?22:17,3)+" "+u(oa.K,8));6>O.length?(2<O.length&&(a.v(" OFFSET: "+pa(O[3],13,3)+" "+u(O[3],8)),a.v("UNIMAP["+qa(O[1],2)+"]: "+pa(O[2],22,3)+" "+u(O[2],8))),a.v(" PHYSICAL: "+
|
||||
pa(O[0],22,3)+" "+u(O[0],8))):(a.v(" OFFSET: "+pa(O[1],13,3)+" "+u(O[1],8)),a.v("+ "+Tk[O[2]]+"PAR"+O[3]+": "+pa(O[4],22,3)+" "+u(O[4],8)),a.v("& MMUMASK: "+pa(O[5],22,3)+" "+u(O[5],8)),a.v("= PHYSICAL: "+pa(O[0],22,3)+" "+u(O[0],8)))}else{var wb=0,mf="ds"==jb;if(kb){if("l"==kb.charAt(0))kb=kb.substr(1)||ql,wb=Cj(a,kb);else{var Fi=Tj(a,kb);Fi&&(wb=Fi.K-oa.K)}0>wb&&(wb=0);65536<wb&&(wb=65536)}var tl=a.W;oa.W&&(a.W=oa.W);for(var xb="dd"==jb?4:"db"==jb?1:2,Nd=xb*wb||128,nf=mf?
|
||||
16:a.W,ul=(Nd+nf-1)/nf|0||1,yb="";ul--&&0<Nd;){for(var zb="",of="",Ta=Wj(a,oa),Od=nf,Oc=0,Pc=0;0<Od&&0<Nd;){var bc=1,Pd=1==xb?a.Pd(oa,bc):a.Ta(oa,bc=2),Oc=Oc|Pd<<(Pc<<3),Pc=Pc+bc;Pc==xb&&(mf?(zb&&(zb+=","),zb+="0x"+v(Oc,xb<<1)):(zb+=K(a,Oc,xb<<3),zb+=1==xb?9==Od?"-":" ":" "),Oc=Pc=0);Od-=bc;for(Nd-=bc;1==xb&&bc--;)var pf=Pd&255,of=of+(32<=pf&&128>pf?String.fromCharCode(pf):"."),Pd=Pd>>8}yb&&(yb+="\n");yb=mf?yb+(zb+","):yb+(Ta+": "+zb+(Od?"":" "+of))}yb&&a.v(yb);a.Ha=oa;a.W=tl}}}}break;case "e":if("else"==
|
||||
g[0])break;var cc,qf,rf,sf,tf=g[0],uf=g[1];"eb"==tf?(cc=1,qf=255,rf=a.Pd,sf=a.Qd):"e"==tf||"ew"==tf?(cc=2,qf=65535,rf=a.Ta,sf=a.Le):uf=null;if(null==uf)a.v("edit memory commands:"),a.v("\teb [a] [...] edit bytes at address a"),a.v("\tew [a] [...] edit words at address a");else{var Qd=Tj(a,uf);if(Qd)for(var Rd=2;Rd<g.length;Rd++){var Qc=Gj(a,g[Rd]);if(void 0===Qc){a.v("unrecognized value: "+g[Rd]);break}Qc&~qf&&a.v("warning: "+v(Qc)+" exceeds "+cc+"-byte value");a.v("changing "+Wj(a,Qd)+(E(a,16)?
|
||||
"":" from "+K(a,rf.call(a,Qd),cc<<3))+" to "+K(a,Qc,cc<<3));sf.call(a,Qd,Qc,cc)}}break;case "g":a:{var Gi=g[1],vl=b;if(void 0!==Gi){var vf=Tj(a,Gi,!0);if(!vf)break a;Vj(a,vf,vl);a.Bb(a.b,vf,!0)}mk(a,!0,c)}break;case "h":a.A.V?(c||a.v("halting"),a.da()):Eb(a,!0)||c||a.v("already halted");break;case "i":if("if"==g[0]){var wf;var Rc=b.substr(2),Rc=za(Rc);Gj(a,Rc)?(c||a.v("true: "+Rc),wf=!0):(c||a.v("false: "+Rc),wf=!1);wf||(d=!1);break}f=!0;break;case "k":var wl=g[0];if("?"==g[1])a.v("stack trace commands:"),
|
||||
a.v("\tk\tshow frame addresses"),a.v("\tks\tshow symbol information");else{var xf=0,yf=X(),Sc=X(a.f.g[6]);for(a.v("stack trace for "+Wj(a,Sc));10>xf;){for(var Ab=null,xl=256;65536>Sc.K>>>0;){yf.K=a.Ta(Sc,2);if(null==Sc.K||!xl--)break;if(!(yf.K&1)){for(var yl=a,Sd=yf,Hi=null,Tc=Sd.K,Ii=Tc,zf=1;6>=zf&&Tc;zf++){if(2<zf){Sd.K=Tc;var Td=xk(yl,Sd);if(0<=Td.indexOf("JSR")){var Ji=Td.indexOf(" ");if(Tc+(Td.indexOf(" ",Ji+1)-Ji-1)/2==Ii){Hi=Td;break}}}Tc-=2}Sd.K=Ii;if(Ab=Hi)break}}if(!Ab||null==Ab)break;var Ki=
|
||||
null;if("ks"==wl){var Li=Ab.match(/[0-9A-F]+$/);Li&&(Ki=Pk(a,Li[0]))}Ab=ya(Ab,50)+" ;"+(Ki||"stack="+Wj(a,Sc));a.v(Ab);xf++}xf||a.v("no return addresses found")}break;case "l":if("ln"==g[0]){Pk(a,g[1],!0);break}f=!0;break;case "m":a:{var Va,Wa=null,T=g[1];"?"==T&&(T=void 0);if(void 0!==T){var lb=0;if("all"==T)lb=1879046143,T=null;else if("on"==T)Wa=!0,T=null;else if("off"==T)Wa=!1,T=null;else{"keys"==T&&(T="key");"kbd"==T&&(T="keyboard");for(Va in Rb)if(T==Va){lb=Rb[Va];Wa=!!(a.ja&lb);break}if(!lb){a.v("unknown message category: "+
|
||||
T);break a}}if(lb)if("on"==g[2])a.ja|=lb,Wa=!0;else if("off"==g[2]&&(a.ja&=~lb,Wa=!1,1073741824==lb)){for(var Mi=1E3<=a.M.length?a.M.length-1E3:0;Mi<a.M.length;)a.v(a.M[Mi++]);a.M=[]}}var zl=0,Uc="";for(Va in Rb)if(!T||T==Va){var Al=!!(a.ja&Rb[Va]);if(null===Wa||Wa==Al)Uc&&(Uc+=","),++zl%10||(Uc+="\n\t"),"key"==Va&&(Va="keys"),Uc+=Va}void 0===T&&a.v("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.v((null!==Wa?Wa?"messages on: ":"messages off: ":"message categories:\n\t")+
|
||||
(Uc||"none"));Lj(a)}break;case "p":if("print"==g[0]){Qk(a,b.substr(5));break}var Bl=g[0];if("?"==g[1])a.v("step commands:"),a.v("\tp\tstep over instruction"),a.v("\tpr\tstep over instruction with register update");else{var Ni="pr"==Bl?1:0,Oi=1+Ni;if(a.I)a.v("step in progress");else{var Ud=X(a.f.g[7]),dc=a.Ta(Ud);3==dc||4==dc||34816==(dc&65280)||32256==(dc&65024)||35072==(dc&65280)?(a.I=Oi,Uj(Ud,2)):2048==(dc&65024)&&(xk(a,Ud),a.I=Oi);a.I?(a.Bb(a.b,Ud,!0),mk(a)||(a.J&&qe(a.J),a.I=0)):Rk(a,Ni?"tr":
|
||||
"t")}}break;case "r":if("reset"==b){a.J&&a.J.reset();break}pk(a,g);break;case "s":a:switch(g[1]){case "base":if(g[2]){var Vc=+g[2];if(8==Vc||10==Vc||16==Vc)a.W=Vc;else{a.v("invalid base: "+Vc);break}}a.v("default base: "+a.W);break;case "cs":var Wc;void 0!==g[3]&&(Wc=+g[3]);switch(g[2]){case "int":a.f.Ob=Wc;break;case "start":a.f.pc=Wc;break;case "stop":a.f.Rb=Wc;break;default:a.v("unknown cs option");break a}void 0!==Wc&&ie(a.f);a.v("checksums "+(a.f.A.Nb?"enabled":"disabled"));break;case "sp":void 0!==
|
||||
g[2]&&(ne(a.f,+g[2])||a.v("warning: using 1x multiplier, previous target not reached"));a.v("target speed: "+(a.f.xb.toFixed(2)+"Mhz")+" ("+a.f.mb+"x)");break;default:if(g[1]){a.v("unknown option: "+g[1]);break}case "?":a.v("debugger options:"),a.v("\tbase #\t\tset default base to #"),a.v("\tcs int #\tset checksum cycle interval to #"),a.v("\tcs start #\tset checksum cycle start count to #"),a.v("\tcs stop #\tset checksum cycle stop count to #"),a.v("\tsp #\t\tset speed multiplier to #")}break;case "t":Rk(a,
|
||||
g[0],g[1]);break;case "u":qk(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Ok(a,b.substr(3))||(d=!1);break}if("ver"==g[0]){a.v((Hb||"PDP11")+" version 1.34.3 ("+a.f.ka+",RELEASE"+(Jb?",TYPEDARRAYS":Ib?",BYTEARRAYS":",LONGARRAYS")+")");a.v(window?window.navigator.userAgent:"");break}f=!0;break;case "?":if(g[1]){Qk(a,b.substr(1));break}var Af="commands:",Bf;for(Bf in Uk)Af+="\n"+ya(Bf,9)+Uk[Bf];bf(a)||(Af+="\nnote: history disabled if no exec breakpoints");a.v(Af);break;default:f=!0}f&&(a.v("unknown command: "+
|
||||
b),d=!1)}}catch(Qi){a.v("debugger error: "+(Qi.stack||Qi.message)),d=!1}return d}function le(a,b,c){b=yj(a,b,c);for(var d in b)if(!wk(a,b[+d]))return!1;return!0}
|
||||
var Uk={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},zk=".WORD ADC ADCB ADD ASL ASLB ASR ASRB BCC BCS BEQ BGE BGT BHI BIC BICB BIS BISB BIT BITB BLE BLOS BLT BMI BNE BPL BPT BR BVC BVS CCC CLC CLCN CLCV CLCVN CLCVZ CLCZ CLCZN CLN CLR CLRB CLV CLVN CLVZ CLVZN CLZ CLZN CMP CMPB COM COMB DEC DECB INC INCB HALT JMP JSR MARK MFPD MFPI MFPS MOV MOVB MTPD MTPI MTPS NEG NEGB NOP RESET ROL ROLB ROR RORB RTI RTS SBC SBCB SCC SEC SECN SECV SECVN SECVZ SECZ SECZN SEN SEV SEVN SEVZ SEVZN SEZ SEZN SUB SWAB SXT TST TSTB WAIT MUL DIV ASH ASHC XOR SOB EMT TRAP SPL IOT RTT MFPT".split(" "),
|
||||
bk=20,ck=21,dk=22,ek=23,fk=24,gk=25,hk=26,ik=27,Zj=28,jk=29,kk=30,Xj={SP:6,PC:7,PS:bk,PI:ck,ER:dk,SL:ek,M0:fk,M1:gk,M2:hk,M3:ik,AR:Zj,DR:jk,SR:kk},ak="R0 R1 R2 R3 R4 R5 SP PC A0 A1 A2 A3 A4 A5 A6 A7 S0 S1 S2 S3 PS PI ER SL M0 M1 M2 M3 AR DR SR".split(" "),Tk="KI KD SI SD ?? ?? UI UD".split(" "),Gk=7,Hk=56,Z=Hk|Gk,Fk=4032,Y=4096,Bk=8192,Ck=12288,Dk=24576,Ek=32768,Ak=61440,Nj={61440:{4096:[62,Fk,Z],8192:[47,Fk,Z],12288:[18,Fk,Z],16384:[14,Fk,Z],20480:[16,Fk,Z],24576:[3,Fk,Z],36864:[63,Fk,Z],40960:[48,
|
||||
Fk,Z],45056:[19,Fk,Z],49152:[15,Fk,Z],53248:[17,Fk,Z],57344:[94,Fk,Z]},65024:{2048:[57,448,Z],28672:[100,Z,448],29184:[101,Z,448],29696:[102,Z,448],30208:[103,Z,448],30720:[104,448,Z],32256:[105,448,Bk]},65280:{256:[27,Y],512:[24,Y],768:[10,Y],1024:[11,Y],1280:[22,Y],1536:[12,Y],1792:[20,Y],32768:[25,Y],33024:[23,Y],33280:[13,Y],33536:[21,Y],33792:[28,Y],34048:[29,Y],34304:[8,Y],34560:[9,Y],34816:[106,Ek],35072:[107,Ek]},65472:{64:[56,Z],192:[95,Z],2560:[39,Z],2624:[49,Z],2688:[53,Z],2752:[51,Z],
|
||||
2816:[67,Z],2880:[1,Z],2944:[77,Z],3008:[97,Z],3072:[73,Z],3136:[71,Z],3200:[6,Z],3264:[4,Z],3328:[58,Dk],3392:[60,Z],3456:[65,Z],3520:[96,Z],35328:[40,Z],35392:[50,Z],35456:[54,Z],35520:[52,Z],35584:[68,Z],35648:[2,Z],35712:[78,Z],35776:[98,Z],35840:[74,Z],35904:[72,Z],35968:[7,Z],36032:[5,Z],36096:[66,Z],36160:[59,Z],36224:[64,Z],36288:[61,Z]},65528:{128:[76,Gk],152:[108,Ck]},65535:{0:[55],1:[99],2:[75],3:[26],4:[109],5:[70],6:[110],7:[111],160:[69],161:[31],162:[41],163:[33],164:[45],165:[36],
|
||||
166:[43],167:[35],168:[38],169:[32],170:[42],171:[34],172:[46],173:[37],174:[44],175:[30],176:[69],177:[80],178:[88],179:[82],180:[92],181:[85],182:[90],183:[84],184:[87],185:[81],186:[89],187:[83],188:[93],189:[86],190:[91],191:[79]}},yk=[0],Rj=[58,60,65,96,110,100,101,102,103,104,105],Sj=[108,59,64],lk=1E3,ok=">> ";Sa(function(){for(var a=z(document,y,"debugger"),b=0;b<a.length;b++){var c=a[b],d=ob(c),d=new Jj(d);pb(d,c)}});
|
||||
function Vk(a,b,c){x.call(this,"Computer",a,33554432);this.A.ca=!1;this.O=null;Wk(this,b);this.L=ge(this,"autoPower",a,6);this.j=0;this.S=+a.busWidth||+a.buswidth;this.G=this.w=this.I=null;this.C=this.R=!1;this.B=this.u=null;this.P=this.M=this.N=!1;this.U=ge(this,"url")||"";(Math.random()+.1).toString(36);this.g=Xk(this);if(this.f=nb("CPU",this.id)){this.D=nb("Debugger",this.id);this.F=new Gc({id:this.vb+".bus",busWidth:this.S},this.f,this.D);var d,e=ib(this.id);if((this.i=nb("Panel",this.id))&&this.i.Va)for(b=
|
||||
0;b<e.length;b++)d=e[b],d.T=this.i.T,d.v=this.i.v,d.Va=this.i.Va;this.v(Hb+" v1.34.3\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");this.v("Portions adapted from the PDP-11/70 Emulator by Paul Nankervis <http://skn.noip.me/pdp11/pdp11.html>");for(b=0;b<e.length;b++)d=e[b],d.Ca&&d.Ca(this,this.F,this.f,this.D);b=null;d=ge(this,"resume",a);void 0!==d&&(1<d.length?b=this.w=d:this.b=parseInt(d,10));var f;if(a=ge(this,"state")||
|
||||
(f=!0,a.state))this.I=b=a,f||(this.C=!0,this.b=Xk),this.b&&(this.B=new G(this,"1.34.3"),Yk(this.B)?b=null:delete this.B);!b&&this.b&&(b=Zk(this))&&(this.C=!0);if(b){var g=this;Ea(b,null,!0,function(a,b,c){c?(g.w=null,g.C=!1,g.T("Unable to load machine state from server (error "+c+(b?": "+za(b):"")+")")):(g.G=b,g.R=!0);C(g)})}else C(this);this.H.power||(this.L=!0);!c&&this.L&&this.yc(this.rc)}else w("Unable to find CPU component")}p(Uk,x);
|
||||
function Vk(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.O=b}function ge(a,b,c,d){var e=b.toLowerCase(),e=Na(b)||Na(e);void 0===e&&a.O&&(e=a.O[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}h=Uk.prototype;
|
||||
h.yc=function(a,b){for(var c=this,d=ib(this.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:this;if(!Db(f)){Db(f,function(){c.yc(a,b)});return}}a.call(this,b)};function $k(a,b){var c=new G(a,"1.34.3",al);if(Yk(c)&&bl(c)){var d=c.get(cl),e=b?b.get(cl):"unknown";d!=e&&(a.T("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
h.rc=function(a){void 0===a&&(a=this.b||(this.G?dl:Xk));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.B||new G(this,"1.34.3");if(a==el)b=!0;else if(a>Xk){if(Yk(d,this.G)){this.u=new G(this,"1.34.3",fl);Yk(this.u)&&(gl(this,d),a=hl,il(this.u));this.u.set(cl,Da());jl(this.u);var e=this.b&&!this.C;if(a==dl||hb("Click OK to restore the previous "+Hb+" machine state, or CANCEL to reset the machine.")){if(c=bl(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Yk(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.T("Error: "+g),"unable to verify user"==g&&(La(kl,""),this.g=null)):this.v(f+": "+g),il(d),Yk(d)?(c=bl(d),e=!0):c=!1))}e&&$k(this,c?d:null)}else a==hl&&d.clear()}else $k(this);delete this.G;delete this.B}e=ib(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=ll(this,g,d,b,c));b=[d,a,c];a!=el?this.yc(this.ne,b):this.ne(b)}};
|
||||
function ll(a,b,c,d,e){if(!b.A.ca){b.A.ca=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.Ea(f,d)&&f&&(w("Unable to restore state for "+b.type),a.I&&!a.R?(c.clear(),a.b=Xk,window&&window.location.reload()):a.N=!0,b.Ea(null),e=!1),!d&&b.Vd){var g=b.Vd.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(k){w("Error restoring state for "+b.type+" ("+k.message+")")}}return e}
|
||||
h.ne=function(a){var b=a[0],c=0>a[1];a=a[2];this.P=!0;this.A.ca=!0;var d=this.H.power;d&&(d.textContent="Shutdown");this.f&&(ll(this,this.f,b,c,a),H(this,-2),this.f.ra());this.N&&(gl(this,b),b.clear());!c&&this.u&&(this.u.clear(),delete this.u);this.j=0};
|
||||
function gl(a,b){if(hb("There may be a problem with your "+Hb+" machine.\n\nTo help us diagnose it, click OK to send this "+Hb+" machine state to http://www.pcjs.org.")){var c=a.U;a=a.g||"";b=b.toString();var d={};d.app=Hb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ea("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Rk(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new G(a,"1.34.3"),g=new G(a,"1.34.3",al),k=Da();g.set(cl,k);f.set(cl,k);f.set(ml,"1.34.3");f.set(nl,window?window.location.href:null);f.set(ol,window?window.navigator.userAgent:"");a.f&&a.f.Da&&(c&&(b&&(a.f.A.ra=a.f.A.V),a.f.da()),d=a.f.Da(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.A.ca=!1,!1===d&&(e=null)));for(var k=ib(a.id),l=0;l<k.length;l++){var m=k[l];m.A.ca&&(m.Da&&(d=m.Da(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.A.ca=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(k=d=!1,b?(a.g&&rl(a,a.g,f.toString()),jl(g)&&jl(f)||(e=null,d=k=!0)):a.b&&(d=!0,k=a.b==Bl),d&&f.clear(k)):e=f.toString());c&&(a.A.ca=!1,b=a.H.power)&&(b.textContent="Power");a.j=0;return e}
|
||||
(f=!0,a.state))this.I=b=a,f||(this.C=!0,this.b=Yk),this.b&&(this.B=new G(this,"1.34.3"),Zk(this.B)?b=null:delete this.B);!b&&this.b&&(b=$k(this))&&(this.C=!0);if(b){var g=this;Ea(b,null,!0,function(a,b,c){c?(g.w=null,g.C=!1,g.T("Unable to load machine state from server (error "+c+(b?": "+za(b):"")+")")):(g.G=b,g.R=!0);C(g)})}else C(this);this.H.power||(this.L=!0);!c&&this.L&&this.yc(this.rc)}else w("Unable to find CPU component")}p(Vk,x);
|
||||
function Wk(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.O=b}function ge(a,b,c,d){var e=b.toLowerCase(),e=Na(b)||Na(e);void 0===e&&a.O&&(e=a.O[b]);void 0===e&&c&&(e=c[b]);void 0===e&&"object"==typeof resources&&resources[b]&&(e=b);void 0===e&&(e=void 0);if("string"==typeof e&&d)switch(d){case 4:e=+e;isNaN(e)&&(e=0);break;case 6:e="true"==e}return e}h=Vk.prototype;
|
||||
h.yc=function(a,b){for(var c=this,d=ib(this.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:this;if(!Db(f)){Db(f,function(){c.yc(a,b)});return}}a.call(this,b)};function al(a,b){var c=new G(a,"1.34.3",bl);if(Zk(c)&&cl(c)){var d=c.get(dl),e=b?b.get(dl):"unknown";d!=e&&(a.T("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
||||
h.rc=function(a){void 0===a&&(a=this.b||(this.G?el:Yk));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.B||new G(this,"1.34.3");if(a==fl)b=!0;else if(a>Yk){if(Zk(d,this.G)){this.u=new G(this,"1.34.3",gl);Zk(this.u)&&(hl(this,d),a=il,jl(this.u));this.u.set(dl,Da());kl(this.u);var e=this.b&&!this.C;if(a==el||hb("Click OK to restore the previous "+Hb+" machine state, or CANCEL to reset the machine.")){if(c=cl(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Zk(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.T("Error: "+g),"unable to verify user"==g&&(La(ll,""),this.g=null)):this.v(f+": "+g),jl(d),Zk(d)?(c=cl(d),e=!0):c=!1))}e&&al(this,c?d:null)}else a==il&&d.clear()}else al(this);delete this.G;delete this.B}e=ib(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.f&&(c=ml(this,g,d,b,c));b=[d,a,c];a!=fl?this.yc(this.ne,b):this.ne(b)}};
|
||||
function ml(a,b,c,d,e){if(!b.A.ca){b.A.ca=!0;var f=null;try{if(e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,".")))),"string"===typeof f&&(f=null),!b.Ea(f,d)&&f&&(w("Unable to restore state for "+b.type),a.I&&!a.R?(c.clear(),a.b=Yk,window&&window.location.reload()):a.N=!0,b.Ea(null),e=!1),!d&&b.Vd){var g=b.Vd.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(k){w("Error restoring state for "+b.type+" ("+k.message+")")}}return e}
|
||||
h.ne=function(a){var b=a[0],c=0>a[1];a=a[2];this.P=!0;this.A.ca=!0;var d=this.H.power;d&&(d.textContent="Shutdown");this.f&&(ml(this,this.f,b,c,a),H(this,-2),this.f.ra());this.N&&(hl(this,b),b.clear());!c&&this.u&&(this.u.clear(),delete this.u);this.j=0};
|
||||
function hl(a,b){if(hb("There may be a problem with your "+Hb+" machine.\n\nTo help us diagnose it, click OK to send this "+Hb+" machine state to http://www.pcjs.org.")){var c=a.U;a=a.g||"";b=b.toString();var d={};d.app=Hb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ea("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Sk(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new G(a,"1.34.3"),g=new G(a,"1.34.3",bl),k=Da();g.set(dl,k);f.set(dl,k);f.set(nl,"1.34.3");f.set(ol,window?window.location.href:null);f.set(pl,window?window.navigator.userAgent:"");a.f&&a.f.Da&&(c&&(b&&(a.f.A.ra=a.f.A.V),a.f.da()),d=a.f.Da(b,c),"object"===typeof d&&f.set(a.f.id,d),c&&(a.f.A.ca=!1,!1===d&&(e=null)));for(var k=ib(a.id),l=0;l<k.length;l++){var m=k[l];m.A.ca&&(m.Da&&(d=m.Da(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.A.ca=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(k=d=!1,b?(a.g&&sl(a,a.g,f.toString()),kl(g)&&kl(f)||(e=null,d=k=!0)):a.b&&(d=!0,k=a.b==Cl),d&&f.clear(k)):e=f.toString());c&&(a.A.ca=!1,b=a.H.power)&&(b.textContent="Power");a.j=0;return e}
|
||||
h.reset=function(){this.A.reset=!0;this.F&&this.F.reset&&(F(this,"Resetting "+this.F.type),this.F.reset());this.f&&this.f.reset&&(F(this,"Resetting "+this.f.type),this.f.reset());for(var a=ib(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.F&&c!==this.f&&c.reset&&(F(this,"Resetting "+c.type),c.reset())}this.A.reset=!1;H(this,-1)};h.start=function(a,b){for(var c=ib(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}H(this,-1)};
|
||||
h.stop=function(a,b){for(var c=ib(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}H(this,-1)};
|
||||
function H(a,b){if(a.f){var c=a.f,d=b||0,e=c.H.speed;e&&(0>=d||30<=(c.ad+=d))&&(e.textContent=c.A.V?c.wb.toFixed(2)+"Mhz":"Stopped",c.ad=0)}if(a.i&&(a=a.i,b=b||0,a.u)){c=a.f.A.V;d=!!(a.f.i&8);if(0>=b||60<=(a.j+=b)){for(e=0;e<a.f.g.length;e++)nc(a,"R"+e,a.f.g[e]);e=Ad(a.f);nc(a,"PS",e);nc(a,"NF",e&8?1:0,1);nc(a,"ZF",e&4?1:0,1);nc(a,"VF",e&2?1:0,1);nc(a,"CF",e&1?1:0,1);a.j=0}-1>b?a.ga=a.f.g[7]:0<b&&c&&!d&&(a.ga=a.f.Qa);jc(a,a.ga);Vb(a,a.Eb);b=a.f;b=b.yb?b.X&16?1:2:4;Ec(a,"B22",b&1);Ec(a,"B18",b&2);
|
||||
Ec(a,"B16",b&4)}}
|
||||
h.wa=function(a,b,c){var d=this;switch(b){case "power":return this.H[b]=c,c.onclick=function(){d.j||(d.A.ca?Rk(d,!1,!0):d.yc(d.rc))},!0;case "reset":return this.H[b]=c,c.onclick=function(){if(d.A.ca&&!d.j)if(d.b&&!d.w){var a=hb("Click OK to save changes to this "+Hb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Rk(d,a,!0);!a&&d.I?window&&window.location.reload():(a||(d.M=!0),d.rc(Xk),d.M=!1)}else d.reset(),d.f&&!d.D&&d.f.ra()},!0;case "save":if(va(Ga(),"pcjs.org"))c.parentNode.removeChild(c);
|
||||
else return this.H[b]=c,c.onclick=function(){var a=Wk(d,!0);if(a){var b=!!(d.b&&!d.w||d.I),c=Rk(d,b);b?rl(d,a,c):d.T("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function Wk(a,b){var c=a.g;c||((c=Ka(kl),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Cl(a,c))||a.T("The user ID is invalid.")):b&&a.T("Browser local storage is not available"));return c}
|
||||
function Cl(a,b){a.g=null;b=Ea(Ga()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(La(kl,b.data),a.g=b.data)}catch(d){w(d.message+" ("+c+")")}return a.g}function Zk(a){var b=null;a.g&&(b=Ga()+"/api/v1/user?req=load&user="+a.g+"&state="+Dl(a,"1.34.3"));return b}
|
||||
function rl(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Dl(a,"1.34.3");d.data=c;b=Ea(Ga()+"/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.T("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.T(c),La(kl,""),a.g=null)}}
|
||||
function Uh(a){var b;a=ib(a.id);for(var c=0;c<a.length;c++){var d=a[c];if(b)b==d&&(b=null);else if("RAM"==d.type)return d}return null}function qe(a,b){if(a.Va){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.Va.focus();!b&&window&&window.scrollTo(c,d)}}var fl="failsafe",al="validate",cl="timestamp",ml="version",nl="url",ol="browser",kl="user",el=-1,Xk=0,dl=1,hl=2,Bl=3;
|
||||
Sa(function(){for(var a=z(document,y+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=ob(c),c=z(c,y,"computer"),e=0;e<c.length;e++){var f=c[e],g=ob(f),g=new Uk(g,d,!0);pb(g,f);g.L&&g.yc(g.rc)}});Xa.show.push(function(){for(var a=z(document,y,"computer"),b=0;b<a.length;b++){var c=ob(a[b]);(c=nb("Computer",c.id))&&c.P&&!c.A.ca&&c.rc(el)}});Xa.exit.push(function(){for(var a=z(document,y,"computer"),b=0;b<a.length;b++){var c=ob(a[b]);(c=nb("Computer",c.id))&&c.A.ca&&Rk(c,!(!c.b||c.w),!0)}});
|
||||
function G(a,b,c){this.id=a.id;this.b="";this.f={};this.g=this.D=!1;this.key=Dl(a,b,c);il(this,a.vf)}h=G.prototype;h.set=function(a,b){try{this.f[a]=b}catch(c){}};h.get=function(a){return this.f[a]||null};h.data=function(){return this.f};function Yk(a,b){return b?(a.b=b,a.g=!0,a.D=!1,!0):a.g?!0:Ha()&&(b=Ka(a.key))?(a.b=b,a.g=!0):!1}function bl(a){var b=!0;if(!a.D)try{a.f=JSON.parse(a.b),a.D=!0}catch(c){w(c.message||c),b=!1}return b}
|
||||
function jl(a){var b=!0;if(Ha()){var c=JSON.stringify(a.f);La(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}h.toString=function(){return this.f?JSON.stringify(this.f):this.b};function il(a,b){a.b="";a.f={};a.g=a.D=!1;b&&a.set("parms",b)}
|
||||
h.clear=function(a){il(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 Dl(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}var El=0;
|
||||
function Fl(a,b,c,d,e,f,g){f("Loading "+a+"...");Ea(a,null,!0,function(k,l,m){m?(l||(l="unable to load "+a+" ("+m+")"),g(l,null)):Gl(l,a,b,c,d,e,f,g)})}
|
||||
function Gl(a,b,c,d,e,f,g,k){function l(a,g){if(g)k(g,null);else{c&&(eb(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$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(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,g)}}a?f?Hl(a,g,l):l(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Hl(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ea(e,null,!0,function(f,g,k){if(k||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(f=d[3])if(k=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(g=g.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Hl(a,b,c)}})}else c(a,null)}
|
||||
function Il(a,b,c,d,e){function f(a){if(void 0===l){var b=k&&z(k,"machine-warning");l=b&&b[0]||k}l&&(l.innerHTML=wa(a))}function g(a){f("Error: "+a);m&&(--El||$a(!0));m=!1}var k,l,m=!0;El++;fb[b]={};try{if(k=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n));q.appendChild(t)}d||
|
||||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.3/components.xsl");n=function(e,l){l?Fl(d,null,a,null,!1,f,function(a,e){e?(eb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(k.outerHTML=e,--El||$a(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?k.parentNode?(k.parentNode.replaceChild(e,k),--El||
|
||||
$a(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Fl(c,b,a,e,!0,f,n):Gl(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(r){g(r.message)}return m}window.embedPDP10=function(a,b,c,d){$a(!1);return Il("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){$a(!1);return Il("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return nb(b,a+".machine")};
|
||||
h.wa=function(a,b,c){var d=this;switch(b){case "power":return this.H[b]=c,c.onclick=function(){d.j||(d.A.ca?Sk(d,!1,!0):d.yc(d.rc))},!0;case "reset":return this.H[b]=c,c.onclick=function(){if(d.A.ca&&!d.j)if(d.b&&!d.w){var a=hb("Click OK to save changes to this "+Hb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Sk(d,a,!0);!a&&d.I?window&&window.location.reload():(a||(d.M=!0),d.rc(Yk),d.M=!1)}else d.reset(),d.f&&!d.D&&d.f.ra()},!0;case "save":if(va(Ga(),"pcjs.org"))c.parentNode.removeChild(c);
|
||||
else return this.H[b]=c,c.onclick=function(){var a=Xk(d,!0);if(a){var b=!!(d.b&&!d.w||d.I),c=Sk(d,b);b?sl(d,a,c):d.T("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function Xk(a,b){var c=a.g;c||((c=Ka(ll),void 0!==c)?!c&&b&&(b=null,window&&(b=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c=b)&&((c=Dl(a,c))||a.T("The user ID is invalid.")):b&&a.T("Browser local storage is not available"));return c}
|
||||
function Dl(a,b){a.g=null;b=Ea(Ga()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(La(ll,b.data),a.g=b.data)}catch(d){w(d.message+" ("+c+")")}return a.g}function $k(a){var b=null;a.g&&(b=Ga()+"/api/v1/user?req=load&user="+a.g+"&state="+El(a,"1.34.3"));return b}
|
||||
function sl(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=El(a,"1.34.3");d.data=c;b=Ea(Ga()+"/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.T("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.T(c),La(ll,""),a.g=null)}}
|
||||
function Uh(a){var b;a=ib(a.id);for(var c=0;c<a.length;c++){var d=a[c];if(b)b==d&&(b=null);else if("RAM"==d.type)return d}return null}function qe(a,b){if(a.Va){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.Va.focus();!b&&window&&window.scrollTo(c,d)}}var gl="failsafe",bl="validate",dl="timestamp",nl="version",ol="url",pl="browser",ll="user",fl=-1,Yk=0,el=1,il=2,Cl=3;
|
||||
Sa(function(){for(var a=z(document,y+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=ob(c),c=z(c,y,"computer"),e=0;e<c.length;e++){var f=c[e],g=ob(f),g=new Vk(g,d,!0);pb(g,f);g.L&&g.yc(g.rc)}});Xa.show.push(function(){for(var a=z(document,y,"computer"),b=0;b<a.length;b++){var c=ob(a[b]);(c=nb("Computer",c.id))&&c.P&&!c.A.ca&&c.rc(fl)}});Xa.exit.push(function(){for(var a=z(document,y,"computer"),b=0;b<a.length;b++){var c=ob(a[b]);(c=nb("Computer",c.id))&&c.A.ca&&Sk(c,!(!c.b||c.w),!0)}});
|
||||
function G(a,b,c){this.id=a.id;this.b="";this.f={};this.g=this.D=!1;this.key=El(a,b,c);jl(this,a.vf)}h=G.prototype;h.set=function(a,b){try{this.f[a]=b}catch(c){}};h.get=function(a){return this.f[a]||null};h.data=function(){return this.f};function Zk(a,b){return b?(a.b=b,a.g=!0,a.D=!1,!0):a.g?!0:Ha()&&(b=Ka(a.key))?(a.b=b,a.g=!0):!1}function cl(a){var b=!0;if(!a.D)try{a.f=JSON.parse(a.b),a.D=!0}catch(c){w(c.message||c),b=!1}return b}
|
||||
function kl(a){var b=!0;if(Ha()){var c=JSON.stringify(a.f);La(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}h.toString=function(){return this.f?JSON.stringify(this.f):this.b};function jl(a,b){a.b="";a.f={};a.g=a.D=!1;b&&a.set("parms",b)}
|
||||
h.clear=function(a){jl(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 El(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}var Fl=0;
|
||||
function Gl(a,b,c,d,e,f,g){f("Loading "+a+"...");Ea(a,null,!0,function(k,l,m){m?(l||(l="unable to load "+a+" ("+m+")"),g(l,null)):Hl(l,a,b,c,d,e,f,g)})}
|
||||
function Hl(a,b,c,d,e,f,g,k){function l(a,g){if(g)k(g,null);else{c&&(eb(c,b,a),(g=b)&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1<e.length&&(e+=",")):e='{state:"'+e+'",':e="{",e+='url:"'+g+'"}',"object"==typeof resources&&(g=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PDPjs$2"),
|
||||
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1"+d+"$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(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,g)}}a?f?Il(a,g,l):l(a,null):k("no data"+(b?" for file: "+b:""),null)}
|
||||
function Il(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ea(e,null,!0,function(f,g,k){if(k||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(f=d[3])if(k=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(g=g.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Il(a,b,c)}})}else c(a,null)}
|
||||
function Jl(a,b,c,d,e){function f(a){if(void 0===l){var b=k&&z(k,"machine-warning");l=b&&b[0]||k}l&&(l.innerHTML=wa(a))}function g(a){f("Error: "+a);m&&(--Fl||$a(!0));m=!1}var k,l,m=!0;Fl++;fb[b]={};try{if(k=document.getElementById(b)){var n;if("object"==typeof resources&&(n=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=n:t.appendChild(document.createTextNode(n));q.appendChild(t)}d||
|
||||
(n=a,"pdp"==a.substr(0,3)&&(n="pdpjs"),d="/versions/"+n+"/1.34.3/components.xsl");n=function(e,l){l?Gl(d,null,a,null,!1,f,function(a,e){e?(eb(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=l.transformNode(e))?(k.outerHTML=e,--Fl||$a(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(l,document))?k.parentNode?(k.parentNode.replaceChild(e,k),--Fl||
|
||||
$a(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Gl(c,b,a,e,!0,f,n):Hl(c,null,b,a,e,!1,f,n)}else g("missing machine element: "+b)}catch(r){g(r.message)}return m}window.embedPDP10=function(a,b,c,d){$a(!1);return Jl("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){$a(!1);return Jl("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return nb(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!rb[a]){for(var c=!0,d=rb,e=a,f=b.length,g=[],k=[],l="",m=null,n=0;n<f;n++){var q=b[n];if('"'==q||"'"==q)m&&q!=m?l+=q:(m?m=null:m=q,l&&(k.push(l),l=""));else{if(!m){if("\r"==q||"\n"==q)q=";";if(" "==q||"\t"==q||";"==q){l&&(k.push(l),l="");";"==q&&k.length&&(g.push(k),k=[]);continue}}l+=q}}l&&k.push(l);k.length&&g.push(k);d[e]=g;qb(a)||(c=!1)}return c};window.enableEvents=$a;window.sendEvent=bb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.3/pdp11-dbg.map
|
||||
|
|
|
|||
Loading…
Reference in a new issue