|
|
|
|
@ -81,7 +81,7 @@ function Ac(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}
|
|
|
|
|
m.Jb=function(a){if(!this.w)throw this.D&&Qb(this.D,4)&&Rb(this.D,"memory fault on "+L(this.D,a),!0,!0),this.v.Y(),-1;};function Gc(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Hc=1,Jc=2;function Kc(a){t.call(this,"Device",a,256)}la(Kc,t);m=Kc.prototype;m.Ma=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.D=d;Db(this)};m.Ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ra=function(a){return a?this.save():!0};m.reset=function(){};
|
|
|
|
|
m.save=function(){return(new G(this)).data()};m.restore=function(){return!0};$a(function(){for(var a=w(document,v,"device"),b=0;b<a.length;b++){var c,d=a[b];c=u(d);switch(c.type){case "default":c=new Kc(c),ub(c,d)}}});
|
|
|
|
|
function Cc(a,b,c,d,e){this.H=a;this.id=Pc+=2;this.B=b;this.Xa=c;this.size=d||0;this.type=e||Qc;this.G=e==Rc;this.b=null;this.f=this.w=this.vb;this.g=this.D=this.Ya;this.i=this.v=0;Dc(this);this.sb=this.Tb=!1;if(this.size){a=this.j=Array(this.size);for(b=0;b<a.length;b++)a[b]=0;Sc(this,Tc)}else Sc(this)}m=Cc.prototype;m.save=function(){return this.j};m.restore=function(a){return a&&this.size==a.length?(this.j=a,this.sb=!0):!1};function Sc(a,b){b||(b=Uc);Vc(a,b,void 0);Wc(a,b,void 0)}
|
|
|
|
|
function Vc(a,b,c){c&&a.i||(a.f=b[0]||a.vb);if(c||void 0===c)a.w=b[0]||a.vb}function Wc(a,b,c){c&&a.v||(a.g=!a.G&&b[1]||a.Ya);if(c||void 0===c)a.D=b[1]||a.Ya}m.Ra=function(a,b){b?this.v++||Wc(this,Xc,!1):this.i++||Vc(this,Xc,!1)};function Yc(a,b){b?--a.v||(a.g=a.G?a.Ya:a.D):--a.i||(a.f=a.w)}function Dc(a,b,c){a.b=b;a.i=a.v=0;c&&((a.i=c.i)&&Vc(a,Xc,!1),(a.v=c.v)&&Wc(a,Xc,!1))}m.vb=function(a,b){this.b&&Qb(this.b,32)&&Rb(this.b,"attempt to read invalid address "+L(this.b,b),!0);this.H.Jb(b);return-1};
|
|
|
|
|
function Vc(a,b,c){c&&a.i||(a.f=b[0]||a.vb);if(c||void 0===c)a.w=b[0]||a.vb}function Wc(a,b,c){c&&a.v||(a.g=!a.G&&b[1]||a.Ya);if(c||void 0===c)a.D=b[1]||a.Ya}m.Sa=function(a,b){b?this.v++||Wc(this,Xc,!1):this.i++||Vc(this,Xc,!1)};function Yc(a,b){b?--a.v||(a.g=a.G?a.Ya:a.D):--a.i||(a.f=a.w)}function Dc(a,b,c){a.b=b;a.i=a.v=0;c&&((a.i=c.i)&&Vc(a,Xc,!1),(a.v=c.v)&&Wc(a,Xc,!1))}m.vb=function(a,b){this.b&&Qb(this.b,32)&&Rb(this.b,"attempt to read invalid address "+L(this.b,b),!0);this.H.Jb(b);return-1};
|
|
|
|
|
m.Ya=function(a,b,c){this.b&&Qb(this.b,32)&&Rb(this.b,"attempt to write "+L(this.b,a)+" to invalid addresses "+L(this.b,c),!0);this.H.Jb(c)};m.ic=function(a){return this.j[a]};m.rc=function(a,b){this.j[b]!=a&&(this.j[b]=a,this.sb=!0)};m.gc=function(a,b){if(this.b&&null!=this.B){var c=this.b;Zc(c,this.B+a,2,c.N)&&c.Y(!1)}return this.w(a,b)};m.qc=function(a,b,c){if(this.b&&null!=this.B){var d=this.b;Zc(d,this.B+b,2,d.K)&&d.Y(!1)}this.G?this.Ya(a,0,c):this.D(a,b,c)};
|
|
|
|
|
var Qc=0,Rc=2,Ic=["NONE","RAM","ROM"],Pc=0,Uc=[],Tc=[Cc.prototype.ic,Cc.prototype.rc],Xc=[Cc.prototype.gc,Cc.prototype.qc];
|
|
|
|
|
function $c(a,b){t.call(this,"CPU",a,1);b=+a.cycles||b;var c=+a.multiplier||1;this.kb=0;this.ob=b;this.ha=c;this.lb=Math.round(this.ob/1E4)/100;this.ga=this.lb*this.ha;this.nb=this.Ja=this.ma=this.cb=0;this.A.P=this.A.ib=!1;this.A.fa=a.autoStart;"string"==typeof this.A.fa&&(this.A.fa="true"==this.A.fa);this.A.Ua=!1;this.Ha=this.ta=0;this.Ia=+a.csStart;this.pa=+a.csInterval;this.ua=+a.csStop;this.R=[];this.Fb=this.lc.bind(this);this.W=this.M=this.V=this.N=this.L=this.Ga=this.S=this.va=this.pb=this.Z=
|
|
|
|
|
@ -175,7 +175,7 @@ function Te(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.
|
|
|
|
|
0;break;case "&":f=Qe(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=X(e,f,0,!0),g=X(e,g,0,!0),f=(f/Re|0|g/Re|0)*Re+((f|g)>>>0));break;case "^!":f=Se(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case ",,":f=X(a,f,18,!0)*Math.pow(2,18)+X(a,g,18,!0);break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=X(a,f,0,!0),f=0<g?f*Math.pow(2,g):Math.trunc(f/Math.pow(2,-g)));break;default:return!1}b.push(X(a,f))}return!0}
|
|
|
|
|
function Ue(a,b,c,d,e,f){var g,h,k,l=!1,p=0,q=[],D=[],F=a.U;for(a.U=e;c<d;){var J;h=b[c++].trim();k=c<d?b[c++]:"";if(h)J=Ve(a,h,null,f,p);else if("{"==k){h=1;for(J=c;c<d;)if(c++,k=c<b.length?b[c++]:"","{"==k)h++;else if("}"==k&&!--h)break;J=Ue(a,b,J,c-1,a.U,f);null!=J&&p&&(J=We(a,J,p));h=c<d?b[c++].trim():"";k=c<d?b[c++]:""}else{if(" "==k)continue;if("^B"==k){a.U=2;continue}if("^O"==k){a.U=8;continue}if("^D"==k){a.U=10;continue}if(!(p&-1073741824)){if("+"==k)continue;if("-"==k){p=p<<2|1;continue}if("~"==
|
|
|
|
|
k||"^-"==k){p=p<<2|2;continue}if("^L"==k){p=p<<2|3;continue}}l=!0;break}if(void 0===J)if(f)f.push(h),J=0;else{l=!0;f=[];break}q.push(X(a,J));if(" "==k)if(c<b.length-1&&!b[c])c++,k=b[c++];else{l=!0;break}if(!k)break;p="<"==a.S[0]?Xe:Ye;if(!p[k]){l=!0;break}D.length&&p[k]<=p[D[D.length-1]]&&Te(a,q,D,1);D.push(k);a.U="^_"==k?10:e;p=0}if(l||!Te(a,q,D)||1!=q.length)l=!0;l?f||a.u("parse error ("+(h||k)+")"):g=q.pop();a.U=F;return g}
|
|
|
|
|
function Ze(a,b,c,d,e){for(var f;0<=(f=b.indexOf(c));){for(var g=0,h=f+1,k=e;h<b.length;){var l=b[h++];if(l==c){k=-1;break}if(!k)break;k--;l=l.charCodeAt(0);7==d?l&=127:l=l-32&63;g=X(a,g*Math.pow(2,d)+l,d*e,!0)}if(0<=k){a.u("parse error ("+c+b+c+")");break}else b=b.substr(0,f)+L(a,g,-1)+b.substr(h)}return b}
|
|
|
|
|
function Ze(a,b,c,d,e){for(var f;0<=(f=b.indexOf(c));){for(var g=0,h=f+1,k=e;h<b.length;){var l=b[h++];if(l==c){k=-1;break}if(!k)break;k--;l=l.charCodeAt(0);7==d?l&=127:l=l-32&63;g=X(a,g*Math.pow(2,d)+l,d*e,!0)}if(0<=k){a.u("parse error ("+c+b+c+")");return}b=b.substr(0,f)+L(a,g,-1)+b.substr(h)}return b}
|
|
|
|
|
function $e(a,b,c){var d=void 0,e=!1===c;c=Array.isArray(c)?c:void 0;if(b){"{"!=a.S[0]&&(b=b.split(a.S[0]).join("{").split(a.S[1]).join("}"));b=Ze(a,b,'"',7,5);if(!b)return d;b=Ze(a,b,"'",6,6);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=Ue(a,b,0,b.length,a.U,c);void 0!==d&&e&&af(a,null,d)}return d}
|
|
|
|
|
function We(a,b,c){for(;c;){switch(c&3){case 1:b=-X(a,b);break;case 2:b=Se(a,b,-1);break;case 3:for(var d=35;0<=d&&!Qe(a,b,Math.pow(2,d));)d--;b=35-d}c>>>=2}return b}
|
|
|
|
|
function Ve(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.tb(b);if(0<=f)f=a.ub(f);else if(f=b,a.b[f]?f=a.b[f].value:(f=f.substr(0,6),f=a.b[f]&&a.b[f].value),null!=f){var h=a.b[b]&&a.b[b].Mb;h&&(g?g.push(h):(g=$e(a,h,d),void 0!==g?f+=g:(d||a.u("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=oa(b,1<b.length||10<a.U?a.U:10);null!=f?f=X(a,We(a,f,e)):d||a.u("invalid "+(c||"value")+": "+b)}else d||a.u("missing "+(c||"value"));return f}
|
|
|
|
|
@ -206,7 +206,7 @@ function Jf(a,b,c,d){var e=Y(b.B),f=a.Na(b,1),g,h,k,l=0,p=f/Zb|0,q;for(q in Kf)i
|
|
|
|
|
function Rf(a,b,c,d,e){var f=-1,g,h;if(b){for(var k=b.toUpperCase(),l=0;l<Qf.length;l++)for(var p in Qf[l])if(+p&&(h=Qf[l][p],k==Pf[h])){k=Pf[Qf[l][0]];c&&(c=L(a,+p)+","+c);break}for(var q in Kf){g=+q;p=Kf[q];switch(g){case 32512:l=Lf;break;case 32256:l=Mf;break;case 29248:l=Nf;break;default:l=[""]}for(var D in p){h=p[D];for(var F=0;F<l.length;F++){var J=l[F];"S"==J&&h>Of&&(J="B");if(k==Pf[h]+J){f=29248!=g?F:(F&3)<<1|(F&12)<<2;f=(D|f<<6)*Zb;break}}if(0<=f)break}if(0<=f)break}!(0>f)||c&&c.match(/^[0-9A-Z$%.?]/i)||
|
|
|
|
|
(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),2<k.length&&(e||a.u("too many operands: "+c),k.length=0,f=-1),q=0;q<k.length;q++)if(h=k[q].trim()){D=h.match(/(@?)([^(]*)\(?([^)]*)\)?/);if(!D){e||a.u("unknown operand: "+h);f=-1;break}D[1]&&(f+=4194304);if(h=D[3]){h=$e(a,h,e);if(void 0==h){f=-1;break}h=W(X(a,h,36,!0));f+=h}h=D[2];if(q||1==k.length)h=h?h.replace(/(^|[^0-9])\./g,"$1"+L(a,d,18)):"0";h=$e(a,h,e);if(void 0==h){f=-1;break}if(!q&&1<k.length)if(28700==g){if(0>h||127<h)h&=127;
|
|
|
|
|
f+=h*$b}else{if(0>h||15<h)h&=15;f+=h<<23}else{if(b||q)if(0>h||262143<h)h&=Tb;f+=h}}0>f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function ef(a){var b,c;a.i=["bp"];if(a.N)for(b=1;b<a.N.length;b++){c=a.N[b];c=hf(c);var d=a.G;Yc(d.b[c>>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b<a.K.length;b++)c=a.K[b],c=hf(c),d=a.G,Yc(d.b[c>>>d.i],!0);a.K=["bw"];a.xa=0;a.pa=0}
|
|
|
|
|
m.Ra=function(a,b,c){var d=!0;c||Sf(this,a,b,!1,!0);if(a!=this.i){var e=hf(b);if(-1===e)this.u("invalid address: "+L(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Ra(e&16383,a==this.K)}}d&&(a.push(b),c?b.qa=!0:(Tf(this,a,a.length-1,"set"),ff(this)));return d};function Sf(a,b,c,d,e){var f=!1;c=hf(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==hf(h)&&(!d||h.qa)){f=!0;h.qa||e||Tf(a,b,g,"cleared");b.splice(g,1);b!=a.i&&(d=a.G,Yc(d.b[c>>>d.i],b==a.K));h.qa||ff(a);break}}return f}
|
|
|
|
|
m.Sa=function(a,b,c){var d=!0;c||Sf(this,a,b,!1,!0);if(a!=this.i){var e=hf(b);if(-1===e)this.u("invalid address: "+L(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Sa(e&16383,a==this.K)}}d&&(a.push(b),c?b.qa=!0:(Tf(this,a,a.length-1,"set"),ff(this)));return d};function Sf(a,b,c,d,e){var f=!1;c=hf(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==hf(h)&&(!d||h.qa)){f=!0;h.qa||e||Tf(a,b,g,"cleared");b.splice(g,1);b!=a.i&&(d=a.G,Yc(d.b[c>>>d.i],b==a.K));h.qa||ff(a);break}}return f}
|
|
|
|
|
function Uf(a,b){for(var c=1;c<b.length;c++)Tf(a,b,c);return b.length-1}function Tf(a,b,c,d){c=b[c];a.u(b[0]+" "+L(a,c.B,18)+(d?" "+d:c.hb?' "'+c.hb+'"':""))}function If(a,b){if(void 0!==b)Zc(a,b,1,a.i,!0),a.O=0;else for(b=1;b<a.i.length;b++){var c=a.i[b];if(c.qa){if(!Sf(a,a.i,c,!0))break;b=0}}}
|
|
|
|
|
function Zc(a,b,c,d,e){var f=!1;if(!a.xa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.qa)for(var k=hf(h)&(d==a.i?65535:-1),l=0;l<c;l++)if(b+l==k){var p,f=!0;h.qa&&(Sf(a,d,h,!0),e=!0);if(p=h.zb){for(var f=!1,q=0;q<p.length;q++)if(!Vf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var D=q+1;D<p.length&&p[D].indexOf("else");D++)q++;if(D==p.length){f=!0;break}}a.v.A.P||(f=!0)}if(f){e||Tf(a,d,g,"hit");break}}}a.xa--;return f}
|
|
|
|
|
function Wf(a,b){b=void 0===b?!0:b;for(var c="",d=0;16>d;d++){!d||d&3||(c+="\n");var e=a,f=wa(d,2);jf(e.Ia,d);f+="="+L(e,e.Na(e.Ia),36)+" ";c+=f}if(b){b="";for(d=0;d<rf.length;d++)(e=rf[d]||"")&&(e+="="+L(a,a.ub(d),d>=wf?1:d==tf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
|
|
|
|
|
@ -221,17 +221,17 @@ function Hg(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instr
|
|
|
|
|
function Hf(a,b,c,d){b=nf(a,b,a.M);void 0===d&&(d=1);var e=256;if(void 0!==c)if("l"==c.charAt(0))c=Ve(a,c.substr(1)),null!=c&&(d=c);else{d=nf(a,c);if(d.B<b.B)return;e=d.B-b.B;if(256<e){a.u("range too large");return}d=-1}for(c=0;0<e&&d--;){var f=Eb(a,!1)||a.O?a.F:null,g=null!=f?"cycles":null,h=Xf(a,b),k=b.B;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ha;l=b;h.B=l.B;h.eb=l.eb;h.qa=l.qa;h.U=l.U;a.u(Jf(a,b,g,f));e-=b.B-k;c++}}
|
|
|
|
|
function Vf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(Ff+b):(a.V&&(a.u("ended assemble at "+L(a,a.ha.B,18)),a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Cb(a)&&0<b.length){a.V&&(b="a "+L(a,a.ha.B,18)+" "+b);var f=!1,g=b,h;h=void 0===h?" ":h;for(var k=[],l="",p=0,q=0;p<g.length;){var D=g[p++];l?D==l&&(l="",k.push(g.substr(q,p-q)),q=p):'"'==D||"'"==D?l=D:0<=h.indexOf(D)&&(k.push(g.substr(q,p-q-1)),q=p)}q<p&&k.push(g.substr(q,p-q));k[0]=k[0].toLowerCase();if(k&&k.length)for(var F=
|
|
|
|
|
k[0],J=F.charAt(0),p=1;p<F.length;p++)if(D=F.charAt(p),"?"==J||"r"==J||"a">D||"z"<D){k[0]=F.substr(p);k.unshift(F.substr(0,p));break}switch(k[0].charAt(0)){case "a":d=$f(a,k);break;case "b":var Lc=k[0],qa=k[1],I=b;if("?"==qa)a.u("breakpoint commands:"),a.u("\tbp #\tset exec breakpoint"),a.u("\tbr #\tset read breakpoint"),a.u("\tbw #\tset write breakpoint"),a.u("\tbc #\tclear breakpoint (* to clear all)"),a.u("\tbl\tlist all breakpoints"),a.u("\tbn [#]\tbreak after # instruction(s)");else{var Pa=Lc.charAt(1);
|
|
|
|
|
if("l"==Pa){var Rd;Rd=0+Uf(a,a.i);Rd+=Uf(a,a.N);(Rd+=Uf(a,a.K))||a.u("no breakpoints")}else if("n"==Pa){var bg=+qa||0;qa&&(a.pa=bg);a.u("break after "+bg+" instruction(s)")}else if(void 0===qa)a.u("missing breakpoint address");else{var ja="*"==qa?Y():nf(a,qa,a.M);"c"==Pa?null==ja.B?(ef(a),a.u("all breakpoints cleared")):Sf(a,a.i,ja)||Sf(a,a.N,ja)||Sf(a,a.K,ja)||a.u("breakpoint missing: "+L(a,ja.B,18)):null!=ja.B&&(pf(a,ja,I),"p"==Pa?a.Ra(a.i,ja):"r"==Pa?a.Ra(a.N,ja):"w"==Pa?a.Ra(a.K,ja):a.u("unknown breakpoint command: "+
|
|
|
|
|
if("l"==Pa){var Rd;Rd=0+Uf(a,a.i);Rd+=Uf(a,a.N);(Rd+=Uf(a,a.K))||a.u("no breakpoints")}else if("n"==Pa){var bg=+qa||0;qa&&(a.pa=bg);a.u("break after "+bg+" instruction(s)")}else if(void 0===qa)a.u("missing breakpoint address");else{var ja="*"==qa?Y():nf(a,qa,a.M);"c"==Pa?null==ja.B?(ef(a),a.u("all breakpoints cleared")):Sf(a,a.i,ja)||Sf(a,a.N,ja)||Sf(a,a.K,ja)||a.u("breakpoint missing: "+L(a,ja.B,18)):null!=ja.B&&(pf(a,ja,I),"p"==Pa?a.Sa(a.i,ja):"r"==Pa?a.Sa(a.N,ja):"w"==Pa?a.Sa(a.K,ja):a.u("unknown breakpoint command: "+
|
|
|
|
|
Pa))}}break;case "c":a.za&&(a.za.value="");break;case "d":a:{var kb,lb=k[0],ra=k[1],Ga=k[2],Zh=k[3];if("?"==ra){var mb="";for(kb in cc)a.va[kb]&&(mb&&(mb+=","),mb+=kb);mb+=",state,symbols";a.u("dump memory commands:");a.u("\tdw [a] [n] dump n words at address a");a.u("\tds [a] [n] dump n words at address a as JSON");a.u("\tdh [p] [n] dump n instructions from history position p");mb.length&&a.u("dump extension commands:\n\t"+mb)}else if("state"==ra){var Sd=Ig(a.H,!0);"console"==Ga?console.log(Sd):
|
|
|
|
|
(a.za&&(a.za.value=""),Sd&&a.u(Sd))}else if("symbols"==ra)for(var Td=0;Td<a.I.length;Td++){var Ud=a.I[Td],nb;for(nb in Ud.aa)if("."!=nb.charAt(0)){var cg=Ud.aa[nb].o;if(void 0!==cg){var dg=Ud.aa[nb].l;dg&&(nb=dg);a.u(L(a,cg,18)+" "+nb)}}}else{if("d"==lb){for(kb in cc)if(k[1]==kb){var eg=a.va[kb];eg?(k.shift(),k.shift(),eg(k)):a.u("no dump registered for "+ra);break a}ra||(lb=a.Oa||"dw")}else a.Oa=lb;if("dh"==lb){var fg=ra,gg=Ga,hg="",ig=0,ka=a.W,sa=a.j;if(sa.length){var ga=+fg||a.Ca,Fb=+gg||10;isNaN(ga)?
|
|
|
|
|
ga=Fb:hg="more ";ga>sa.length&&(a.u("note: only "+sa.length+" available"),ga=sa.length);ka-=ga;0>ka&&(null==sa[sa.length-1].B?(ga=ka+ga,ka=0):ka+=sa.length);var Vd=[];"call"==gg&&(Fb=1E5,Vd=["CALL"]);for(void 0!==fg&&a.u(ga+" instructions earlier:");0<Fb&&ka!=a.W;){var jg=sa[ka++];if(null==jg.B)break;var Gb=Y(jg.B),$h=ga--,kg=Jf(a,Gb,"history",$h);(!Vd.length||0<=kg.indexOf(Vd[0]))&&a.u(kg);Gb.rb&&(ka+=Gb.rb,Fb-=Gb.rb,ga-=Gb.rb);ka>=sa.length&&(ka=0);a.Ca=ga;ig++;Fb--}}ig||(a.u("no "+hg+"history available"),
|
|
|
|
|
a.Ca=void 0)}else{var Qa=0,lg="ds"==lb,Hb=nf(a,ra,a.oa);Ga&&("l"==Ga.charAt(0)?(Ga=Ga.substr(1)||Zh,Qa=Ve(a,Ga)):Qa=nf(a,Ga).B-Hb.B,0>Qa&&(Qa=0),65536<Qa&&(Qa=65536));var ai=a.U;Hb.U&&(a.U=Hb.U);for(var mg="db"==lb?1:2,Wd=Qa||32,Xd=1==mg?1:4,bi=(Wd+Xd-1)/Xd|0||1,Ra="";bi--&&0<Wd;){for(var ta="",Yd="",ra=L(a,Hb.B,18),ng=Xd;0<ng--&&0<Wd--;){var Zd=a.Na(Hb,1);lg?(ta&&(ta+=","),ta+=Zd):(ta+=qf(a,Zd),ta+=" ");for(var Mc=29,ci=0;1==mg&&0<=Mc;ci++)var Ib=Zd/Math.pow(2,Mc)%Math.pow(2,7),ta=ta+(L(a,Ib,7)+
|
|
|
|
|
" "),Ib=Ib+0,Yd=Yd+(32>Ib?".":String.fromCharCode(Ib)),Mc=Mc-7}Ra&&(Ra+="\n");Ra=lg?Ra+(ta+","):Ra+(ra+": "+ta+(0>ng?" "+Yd:""))}Ra&&a.u(Ra);a.U=ai}}}break;case "e":if("else"==k[0])break;var og,pg,qg=k[0],$d=k[1];"e"==qg||"ew"==qg?(og=a.Na,pg=a.yb):$d=null;if(null==$d)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else for(var ae=nf(a,$d,a.oa),be=2;be<k.length;be++){var Jb=$e(a,k[be]);if(void 0===Jb)break;Jb=of(Jb);a.u("changing "+L(a,ae.B,18)+" from "+qf(a,og.call(a,
|
|
|
|
|
ae))+" to "+qf(a,Jb));pg.call(a,ae,Jb,1)}break;case "g":var rg=k[1],di=b;if(void 0!==rg){var sg=nf(a,rg);pf(a,sg,di);a.Ra(a.i,sg,!0)}Df(a,!0,c);break;case "h":a.A.P?(c||a.u("halting"),a.Y()):Eb(a,!0)||c||a.u("already halted");break;case "i":if("if"==k[0]){var ce;var Kb=b.substr(2),Kb=Ea(Kb);$e(a,Kb)?(c||a.u("true: "+Kb),ce=!0):(c||a.u("false: "+Kb),ce=!1);ce||(d=!1);break}f=!0;break;case "k":var ei=k[0];if("?"==k[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");
|
|
|
|
|
ae))+" to "+qf(a,Jb));pg.call(a,ae,Jb,1)}break;case "g":var rg=k[1],di=b;if(void 0!==rg){var sg=nf(a,rg);pf(a,sg,di);a.Sa(a.i,sg,!0)}Df(a,!0,c);break;case "h":a.A.P?(c||a.u("halting"),a.Y()):Eb(a,!0)||c||a.u("already halted");break;case "i":if("if"==k[0]){var ce;var Kb=b.substr(2),Kb=Ea(Kb);$e(a,Kb)?(c||a.u("true: "+Kb),ce=!0):(c||a.u("false: "+Kb),ce=!1);ce||(d=!1);break}f=!0;break;case "k":var ei=k[0];if("?"==k[1])a.u("stack trace commands:"),a.u("\tk\tshow frame addresses"),a.u("\tks\tshow symbol information");
|
|
|
|
|
else{var de=0,ee=Y(),Lb=Y();for(a.u("stack trace for "+L(a,Lb.B,18));10>de;){for(var Sa=null,fi=256;65536>Lb.B>>>0;){ee.B=a.Na(Lb,2);if(null==Lb.B||!fi--)break;if(!(ee.B&1)){for(var gi=a,Nc=ee,tg=null,Mb=Nc.B,ug=Mb,fe=1;6>=fe&&Mb;fe++){if(2<fe){Nc.B=Mb;var Oc=Jf(gi,Nc);if(0<=Oc.indexOf("JSR")){var vg=Oc.indexOf(" ");if(Mb+(Oc.indexOf(" ",vg+1)-vg-1)/2==ug){tg=Oc;break}}}Mb-=2}Nc.B=ug;if(Sa=tg)break}}if(!Sa||null==Sa)break;var wg=null;if("ks"==ei){var xg=Sa.match(/[0-9A-F]+$/);xg&&(wg=Fg(a,xg[0]))}Sa=
|
|
|
|
|
Da(Sa,50)+" ;"+(wg||"stack="+L(a,Lb.B,18));a.u(Sa);de++}de||a.u("no return addresses found")}break;case "l":if("ln"==k[0]){Fg(a,k[1],!0);break}f=!0;break;case "m":a:{var ua,va=null,N=k[1];"?"==N&&(N=void 0);if(void 0!==N){var Ha=0;if("all"==N)Ha=1879046143,N=null;else if("on"==N)va=!0,N=null;else if("off"==N)va=!1,N=null;else{"keys"==N&&(N="key");"kbd"==N&&(N="keyboard");for(ua in cc)if(N==ua){Ha=cc[ua];va=!!(a.ca&Ha);break}if(!Ha){a.u("unknown message category: "+N);break a}}if(Ha)if("on"==k[2])a.ca|=
|
|
|
|
|
Ha,va=!0;else if("off"==k[2]&&(a.ca&=~Ha,va=!1,1073741824==Ha)){for(var yg=1E3<=a.R.length?a.R.length-1E3:0;yg<a.R.length;)a.u(a.R[yg++]);a.R=[]}}var hi=0,Nb="";for(ua in cc)if(!N||N==ua){var ii=!!(a.ca&cc[ua]);if(null===va||va==ii)Nb&&(Nb+=","),++hi%10||(Nb+="\n\t"),"key"==ua&&(ua="keys"),Nb+=ua}void 0===N&&a.u("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.u((null!==va?va?"messages on: ":"messages off: ":"message categories:\n\t")+(Nb||"none"));ff(a)}break;case "p":if("print"==
|
|
|
|
|
k[0]){Gg(a,b.substr(5));break}var zg=k[0],Ag="p"==zg?0:"pr"==zg?1:-1;if("?"==k[1]||0>Ag)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var Bg=Y(a.v.i);a.Na(Bg);a.O?(a.Ra(a.i,Bg,!0),Df(a)||(a.H&&ld(a.H),a.O=0)):Hg(a,Ag?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}Gf(a,k);break;case "s":a:switch(k[1]){case "base":if(k[2]){var ob=+k[2];if(2==ob||8==ob||10==ob||16==ob)a.U=ob;else{a.u("invalid base: "+
|
|
|
|
|
k[0]){Gg(a,b.substr(5));break}var zg=k[0],Ag="p"==zg?0:"pr"==zg?1:-1;if("?"==k[1]||0>Ag)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var Bg=Y(a.v.i);a.Na(Bg);a.O?(a.Sa(a.i,Bg,!0),Df(a)||(a.H&&ld(a.H),a.O=0)):Hg(a,Ag?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}Gf(a,k);break;case "s":a:switch(k[1]){case "base":if(k[2]){var ob=+k[2];if(2==ob||8==ob||10==ob||16==ob)a.U=ob;else{a.u("invalid base: "+
|
|
|
|
|
ob);break}}a.u("default base: "+a.U);break;case "cs":var Ob;void 0!==k[3]&&(Ob=+k[3]);switch(k[2]){case "int":a.v.pa=Ob;break;case "start":a.v.Ia=Ob;break;case "stop":a.v.ua=Ob;break;default:a.u("unknown cs option");break a}void 0!==Ob&&dd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==k[2]&&(id(a.v,+k[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ga.toFixed(2)+"Mhz")+" ("+a.v.ha+"x)");break;default:if(k[1]){a.u("unknown option: "+
|
|
|
|
|
k[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":Hg(a,k[0],k[1]);break;case "u":Hf(a,k[1],k[2],8);break;case "v":if("var"==k[0]){Eg(a,b.substr(3))||(d=!1);break}if("ver"==k[0]){a.u((Sb||"PDP10")+" version 1.34.3 ("+a.v.mb+",RELEASE)");a.u(window?
|
|
|
|
|
window.navigator.userAgent:"");break}f=!0;break;case "?":if(k[1]){Gg(a,b.substr(1));break}var ge="commands:",he;for(he in Jg)ge+="\n"+Da(he,9)+Jg[he];wd(a)||(ge+="\nnote: history disabled if no exec breakpoints");a.u(ge);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(Dg){a.u("Debugger "+(Dg.stack||Dg.message)),d=!1}return d}function gd(a,b,c){null!=b&&(a.Ha=Pe(a,b,c));for(;b=a.Ha.shift();)if(!Vf(a,b))return!1;return!0}
|
|
|
|
|
@ -239,33 +239,33 @@ var Jg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output
|
|
|
|
|
sf=0,tf=1,uf=2,vf=3,wf=4,xf=5,yf=6,zf=7,Af=8,Bf=9,rf="PC RA EA PS OV C0 C1 BI ND PD".split(" "),Kg={},Kf=(Kg[28672]={0:101},Kg[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Kg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Of,
|
|
|
|
|
9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Kg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Kg[29248]={24576:79,24640:80,25088:81,25152:82},Kg[28700]={28672:93,28676:94,28680:95,28684:96,
|
|
|
|
|
28688:97,28692:98,28696:99,28700:100},Kg),Lf=["","I","M","S"],Mf=" L E LE A GE N G".split(" "),Nf="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Qf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],Cf=1E3,Ff=">> ";$a(function(){for(var a=w(document,v,"debugger"),b=0;b<a.length;b++){var c=a[b],d=u(c),d=new df(d);ub(d,c)}});function ag(a){this.b=a}
|
|
|
|
|
function Lg(a,b,c,d){a.la=b;a.W=(c||"").toLowerCase();a.done=d;a.O=0;a.H=[];a.M=[];a.D=[];a.v={};a.I={};a.L=[];a.K=[];a.T=[];a.ea=[];a.Z=[];a.ia=0;a.V=0;a.ga=0;a.X=a.la||0;a.Ea=-1;a.G=[];a.S=null;a.i=0;a.R=null;a.C=a.N="";a.ha=/^[ \t]*([A-Z$%.?][0-9A-Z$%.]*:|)[ \t]*([A-Z$%.][0-9A-Z$%.]*|)([ \t]*)([^;]+|)(;?[\s\S]*)/i;a.j=null;a.w=null;a.F="";a.J=null}
|
|
|
|
|
function Cg(a,b,c,d,e){d&&0<=d.indexOf("s")?(Lg(a,c,d,e),a.D=b.split(/(\r?\n)/),a.M.push(a.D.length),Mg(a),a.done&&a.done(a.V)):(Lg(a,c,d,e),a.H=b.split(";"),Ng(a))}
|
|
|
|
|
function Ng(a){if(a.O==a.H.length)Mg(a),a.done&&a.done(a.V);else{var b=a.H[a.O];a.u("loading "+ya(b));0>b.indexOf(":")&&0<=".MAC.KLM".indexOf(b.slice(-4).toUpperCase())&&(b+=".txt");Ja(b,null,!0,function(b,d,e){if(e)a.done&&a.done(e,b);else{e=d;if(Aa(b,".html")){e="";var c;for(b=/<pre>([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Og(a,"unrecognized HTML entity '"+c[0]+"'")}d=e.split(/(\r?\n)/);
|
|
|
|
|
if(d.length&1){if(c=d.pop())Og(a,"unexpected line '"+c+"'"),d.push(c),d.push("")}else Og(a,"unexpected number of lines ("+d.length+")");a.D=a.D.concat(d);a.M[a.O]=d.length>>1;a.O++;setTimeout(function(){Ng(a)},0)}})}}
|
|
|
|
|
function Mg(a){if(0<=a.W.indexOf("p"))a.u(a.D.join(""));else{var b=bf(a.b);Pg(a,"APR",0);Pg(a,"PI",4);try{for(var c=0;c<a.D.length;c+=2){a.ia++;0<=a.W.indexOf("l")&&a.u(Qg(a)+": "+a.D[c]);if(!Rg(a,a.D[c]+"\r\n"))break;if(null!==a.J)break}a.i&&a.error("open block",a.v[a.R].ia);a.G.length&&a.error("open scope",a.G[0].ia);Sg(a);Tg(a);a.ea.forEach(function(b,c){b=Ug(a,b,void 0,c,a.Z[c]);void 0!==b&&(b+=a.T[c],a.T[c]=Vg(a,b,c))})}catch(d){a.u(d.message),a.V=-1}0>a.W.indexOf("d")&&(a.b.b=b)}}
|
|
|
|
|
function Rg(a,b,c,d,e){var f,g;null!=a.w&&(b=Wg(a,b));for(var h=!0,k="";h;){g=b.match(a.ha);if(!g||g[5]&&";"!=g[5].slice(0,1))return a.error("failed to parse line '"+b+"'"),!1;h=!1;k=g[2].toUpperCase();if(k==Xg||k==Yg)c=null;if(c){for(f=0;f<c.length;f++)for(var l=c[f],p=d[f]||e[f]||"",q=0,D=b.length-g[5].length;q<D;){var F=b.indexOf(l,q);if(0>F)break;var q=F+1,J=F+l.length,Lc="",qa="";F&&(Lc=b[F-1]).match(/[0-9A-Z$%.]/i)||!(J>=b.length)&&(qa=b[J]).match(/[0-9A-Z$%.]/i)||("'"==Lc&&F--,"'"==qa&&J++,
|
|
|
|
|
b=b.substr(0,F)+p+b.substr(J),q=F+p.length,h=!0)}c=null}if(a.i&&(1==a.i&&(f=b.indexOf(a.C),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.S+" definition in '"+b+"'")),1<a.i&&(b=Zg(a,b),h=!0),a.i))return!0}d=g[1];b=g[3];c=g[4].trim();g=g[4]+g[5];d&&(d=d.slice(0,-1),Pg(a,d,a.X,$g));var I;k&&(I=c.match(/^([=:]+)(.*)/))&&(e=0,d=k,k=I[1],c=I[2],"=="==k?e|=ah:"=:"==k&&(e|=bh),Pg(a,d,c,e),k=c="");if(!k&&!c)return!0;a.S=k;if(I=ch(a,c))c=c.replace(I,dh(a,eh,ch(a,g))),b||(b="\t");for(;I=fh(a,c);)c=c.replace(I,
|
|
|
|
|
I.slice(0,-1));if(!gh(a,k,c))switch(k){case hh:case ih:case jh:Wg(a,g);break;case kh:k=c;I=Ug(a,k);void 0!==I&&0<=I&&262143>=I?a.X+=I:a.error("unrecognized BLOCK expression '"+k+"'");break;case lh:k=c;b=g=0;for(c=36;I=mh(a,k);){k=k.substr(I.length).trim();d=I;if(e=I.match(/^\((.*)\)\s*(.*)$/))e[1]&&(g=Ug(a,"^D"+e[1])),d=e[2];if(g){d=d?Ug(a,d):0;if(void 0===d||0>g||36<g){a.error("unexpected BYTE operand: "+I);break}d=X(a.b,d,g,!0);c<g&&(nh(a,b),b=0,c=36);b+=d*Math.pow(2,c-g);c-=g}else nh(a,0)}36>c&&
|
|
|
|
|
nh(a,b);break;case oh:(k=c)?(a.J=Ug(a,k),void 0===a.J&&a.error("unrecognized END expression '"+k+"'")):a.J=a.la;break;case ph:qh(a,c);break;case rh:Sg(a);break;case sh:a.X=Ug(a,c)||0;break;case th:Tg(a);break;case uh:qh(a,c.replace(",",",,"));break;case vh:case wh:case xh:case yh:case zh:case Ah:case Bh:case Ch:case Dh:case Eh:case Fh:case Gh:case Xg:case Yg:case Hh:case Ih:dh(a,k,g);break;case Jh:k=Kh(a,c);for(I=0;I<k.length;I++)delete a.b.b[k[I]],delete a.I[k[I]];break;case Lh:case Mh:case Nh:case Oh:case Ph:case Qh:case Rh:case Sh:break;
|
|
|
|
|
default:qh(a,k,b,c)}return!0}
|
|
|
|
|
function gh(a,b,c){var d=a.v[b];if(!d)return!1;if(null!=c){if(d.Fa==Th){var e=a.X;Z(a,d.ka);if(e<a.X){if(!c)return!0;Uh(a);Z(a,c);var d=a.T[0],f=a.ea[0];Vh(a);if(void 0!==d)return a.T[e]+=d&130023423,a.T[e]+=d&4194304,f&&(a.ea[e]=a.ea[e]?a.ea[e]+("+"+f):f),!0}a.error("OPDEF '"+b+"' ("+c+") failed");return!1}b=a.j;a.j=d;d.Qa=Kh(a,c,!0);Z(a,d.ka,d.Ta,d.Qa,d.Ab);a.j=b;return!0}if("?"!=b[0])return!1;switch(b.substr(1)){case zh:case yh:case Gh:d.Fa||Z(a,d.ka);break;case Ah:0<d.Fa&&Z(a,d.ka);break;case Bh:0<=
|
|
|
|
|
d.Fa&&Z(a,d.ka);break;case Dh:0>d.Fa&&Z(a,d.ka);break;case Eh:0>=d.Fa&&Z(a,d.ka);break;case wh:case Fh:case xh:case Ch:d.Fa&&Z(a,d.ka);break;case Xg:case Yg:for(b=0;b<d.Qa.length;b++)Z(a,d.ka,d.Ta,[d.Qa[b]],[]);break;case Ih:for(;0<d.Fa--;)Z(a,d.ka);break;default:c=d.ka,Uh(a,b),Z(a,c),Vh(a)}return!0}function Z(a,b,c,d,e){b=b.split(/\r?\n/);for(var f=0;f<b.length&&Rg(a,b[f]+"\r\n",c,d,e);f++);}
|
|
|
|
|
function Uh(a,b){a.G.push({name:b,T:a.T,ea:a.ea,X:a.X,Ea:a.Ea,ia:a.ia});a.T=[];a.ea=[];0>a.Ea&&(a.Ea=a.X);a.X=0}function Vh(a){if(a.G.length){var b=a.G[a.G.length-1].name;b&&a.L.push({name:b,T:a.T,ea:a.ea});b=a.G.pop();a.T=b.T;a.ea=b.ea;a.X=b.X;a.Ea=b.Ea;a.G.length||-1==a.Ea||a.error("scope restore error")}else a.error("scope nesting error")}
|
|
|
|
|
function Lg(a,b,c,d){a.la=b;a.W=(c||"").toLowerCase();a.done=d;a.R=0;a.H=[];a.N=[];a.D=[];a.v={};a.K={};a.M=[];a.L=[];a.T=[];a.ea=[];a.Z=[];a.ia=0;a.V=0;a.ga=0;a.X=a.la||0;a.Ea=-1;a.G=[];a.S=null;a.i=0;a.I=null;a.C=a.O="";a.ha=/^[ \t]*([A-Z$%.?][0-9A-Z$%.]*:|)[ \t]*([A-Z$%.][0-9A-Z$%.]*|)([ \t]*)([^;]+|)(;?[\s\S]*)/i;a.j=null;a.w=null;a.F="";a.J=null}
|
|
|
|
|
function Cg(a,b,c,d,e){d&&0<=d.indexOf("s")?(Lg(a,c,d,e),a.D=b.split(/(\r?\n)/),a.N.push(a.D.length),Mg(a),a.done&&a.done(a.V)):(Lg(a,c,d,e),a.H=b.split(";"),Ng(a))}
|
|
|
|
|
function Ng(a){if(a.R==a.H.length)Mg(a),a.done&&a.done(a.V);else{var b=a.H[a.R];a.u("loading "+ya(b));0>b.indexOf(":")&&0<=".MAC.KLM".indexOf(b.slice(-4).toUpperCase())&&(b+=".txt");Ja(b,null,!0,function(b,d,e){if(e)a.done&&a.done(e,b);else{e=d;if(Aa(b,".html")){e="";var c;for(b=/<pre>([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Og(a,"unrecognized HTML entity '"+c[0]+"'")}d=e.split(/(\r?\n)/);
|
|
|
|
|
if(d.length&1){if(c=d.pop())Og(a,"unexpected line '"+c+"'"),d.push(c),d.push("")}else Og(a,"unexpected number of lines ("+d.length+")");a.D=a.D.concat(d);a.N[a.R]=d.length>>1;a.R++;setTimeout(function(){Ng(a)},0)}})}}
|
|
|
|
|
function Mg(a){if(0<=a.W.indexOf("p"))a.u(a.D.join(""));else{var b=bf(a.b);Pg(a,"APR",0);Pg(a,"PI",4);try{for(var c=0;c<a.D.length;c+=2){a.ia++;0<=a.W.indexOf("l")&&a.u(Qg(a)+": "+a.D[c]);if(!Rg(a,a.D[c]+"\r\n"))break;if(null!==a.J)break}a.i&&a.error("open block",a.v[a.I].ia);a.G.length&&a.error("open scope",a.G[0].ia);Sg(a);Tg(a);a.ea.forEach(function(b,c){b=Ug(a,b,void 0,c,a.Z[c]);void 0!==b&&(b+=a.T[c],a.T[c]=Vg(a,b,c))})}catch(d){a.u(d.message),a.V=-1}0>a.W.indexOf("d")&&(a.b.b=b)}}
|
|
|
|
|
function Rg(a,b,c,d,e){var f,g;null!=a.w&&(b=Wg(a,b));for(var h=!0,k="";h;){g=b.match(a.ha);if(!g||g[5]&&";"!=g[5].slice(0,1))return a.error("failed to parse line '"+b+"'"),!1;h=!1;k=g[2].toUpperCase();if(k==Xg||k==Yg)c=null;if(c){for(f=0;f<c.length;f++){var l=c[f],p=a.v[a.I];if(!(p&&0<=p.Qa.indexOf(l)))for(var p=d[f]||e[f]||"",q=0,D=b.length-g[5].length;q<D;){var F=b.indexOf(l,q);if(0>F)break;var q=F+1,J=F+l.length,Lc="",qa="";F&&(Lc=b[F-1]).match(/[0-9A-Z$%.]/i)||!(J>=b.length)&&(qa=b[J]).match(/[0-9A-Z$%.]/i)||
|
|
|
|
|
("'"==Lc&&F--,"'"==qa&&J++,b=b.substr(0,F)+p+b.substr(J),q=F+p.length,h=!0)}}c=null}if(a.i&&(1==a.i&&(f=b.indexOf(a.C),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.S+" definition in '"+b+"'")),1<a.i&&(b=Zg(a,b),h=!0),a.i))return!0}d=g[1];b=g[3];c=g[4].trim();g=g[4]+g[5];d&&(d=d.slice(0,-1),Pg(a,d,a.X,$g));var I;k&&(I=c.match(/^([=:]+)(.*)/))&&(e=0,d=k,k=I[1],c=I[2],"=="==k?e|=ah:"=:"==k&&(e|=bh),Pg(a,d,c,e),k=c="");if(!k&&!c)return!0;a.S=k;if(I=ch(a,c))c=c.replace(I,dh(a,eh,ch(a,g))),b||(b=
|
|
|
|
|
"\t");for(;I=fh(a,c);)c=c.replace(I,I.slice(0,-1));if(!gh(a,k,c))switch(k){case hh:case ih:case jh:Wg(a,g);break;case kh:k=c;I=Ug(a,k);void 0!==I&&0<=I&&262143>=I?a.X+=I:a.error("unrecognized BLOCK expression '"+k+"'");break;case lh:k=c;b=g=0;for(c=36;I=mh(a,k);){k=k.substr(I.length).trim();d=I;if(e=I.match(/^\((.*)\)\s*(.*)$/))e[1]&&(g=Ug(a,"^D"+e[1])),d=e[2];if(g){d=d?Ug(a,d):0;if(void 0===d||0>g||36<g){a.error("unexpected BYTE operand: "+I);break}d=X(a.b,d,g,!0);c<g&&(nh(a,b),b=0,c=36);b+=d*Math.pow(2,
|
|
|
|
|
c-g);c-=g}else nh(a,0)}36>c&&nh(a,b);break;case oh:(k=c)?(a.J=Ug(a,k),void 0===a.J&&a.error("unrecognized END expression '"+k+"'")):a.J=a.la;break;case ph:qh(a,c);break;case rh:Sg(a);break;case sh:a.X=Ug(a,c)||0;break;case th:Tg(a);break;case uh:qh(a,c.replace(",",",,"));break;case vh:case wh:case xh:case yh:case zh:case Ah:case Bh:case Ch:case Dh:case Eh:case Fh:case Gh:case Xg:case Yg:case Hh:case Ih:dh(a,k,g);break;case Jh:k=Kh(a,c);for(I=0;I<k.length;I++)delete a.b.b[k[I]],delete a.K[k[I]];break;
|
|
|
|
|
case Lh:case Mh:case Nh:case Oh:case Ph:case Qh:case Rh:case Sh:break;default:qh(a,k,b,c)}return!0}
|
|
|
|
|
function gh(a,b,c){var d=a.v[b];if(!d)return!1;if(null!=c){if(d.Fa==Th){var e=a.X;Z(a,d.ka);if(e<a.X){if(!c)return!0;Uh(a);Z(a,c);var d=a.T[0],f=a.ea[0];Vh(a);if(void 0!==d)return a.T[e]+=d&130023423,a.T[e]+=d&4194304,f&&(a.ea[e]=a.ea[e]?a.ea[e]+("+"+f):f),!0}a.error("OPDEF '"+b+"' ("+c+") failed");return!1}b=a.j;a.j=d;d.Ra=Kh(a,c,!0);Z(a,d.ka,d.Qa,d.Ra,d.Ab);a.j=b;return!0}if("?"!=b[0])return!1;switch(b.substr(1)){case zh:case yh:case Gh:d.Fa||Z(a,d.ka);break;case Ah:0<d.Fa&&Z(a,d.ka);break;case Bh:0<=
|
|
|
|
|
d.Fa&&Z(a,d.ka);break;case Dh:0>d.Fa&&Z(a,d.ka);break;case Eh:0>=d.Fa&&Z(a,d.ka);break;case wh:case Fh:case xh:case Ch:d.Fa&&Z(a,d.ka);break;case Xg:case Yg:for(b=0;b<d.Ra.length;b++)Z(a,d.ka,d.Qa,[d.Ra[b]],[]);break;case Ih:for(;0<d.Fa--;)Z(a,d.ka);break;default:c=d.ka,Uh(a,b),Z(a,c),Vh(a)}return!0}function Z(a,b,c,d,e){b=b.split(/\r?\n/);for(var f=0;f<b.length&&Rg(a,b[f]+"\r\n",c,d,e);f++);}
|
|
|
|
|
function Uh(a,b){a.G.push({name:b,T:a.T,ea:a.ea,X:a.X,Ea:a.Ea,ia:a.ia});a.T=[];a.ea=[];0>a.Ea&&(a.Ea=a.X);a.X=0}function Vh(a){if(a.G.length){var b=a.G[a.G.length-1].name;b&&a.M.push({name:b,T:a.T,ea:a.ea});b=a.G.pop();a.T=b.T;a.ea=b.ea;a.X=b.X;a.Ea=b.Ea;a.G.length||-1==a.Ea||a.error("scope restore error")}else a.error("scope nesting error")}
|
|
|
|
|
function mh(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d<b.length;){var h=b[d++];if('"'==h)e=!e;else if(!e){if(!g&&0<=c.indexOf(h)){d--;break}if("<"==h)g++;else if(">"==h&&0>--g){a.error("missing bracket(s) in '"+b+"'");break}}}g?0<g&&a.error("extra bracket(s) in '"+b+"'"):f=b.substr(0,d);return f}
|
|
|
|
|
function Ug(a,b,c,d,e){var f=-1;void 0===d&&(d=0<=a.Ea?a.Ea:a.X);var g=b.replace(/SIXBIT\s*(\S)(.*?)\1/g,"'$2'").replace(/ASCII\s*(\S)(.*?)\1/g,'"$2"');if(c){var h="",k=g;if(f=g.match(/^([^\s]+)\s*(.*?)\s*$/))h=f[1],k=f[2];f=Rf(a.b,h,k,d,c)}0>f&&(g=g.replace(/\.([^0-9]|$)/g,L(a.b,d,-1)+"$1"),f=$e(a.b,g,c),void 0===f&&a.error("unable to parse expression '"+b+"'",e));return f}
|
|
|
|
|
function ch(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e<b.length;){var h=b[e];if(";"==h)break;"["==h&&(c++||(f=e));e++;if("]"==h&&0>=--c){g=e;break}}0>c&&a.error("missing bracket(s) in '"+b+"'");0<=f&&(d=b.substr(f,g-f));return d}function Qg(a,b){b=void 0===b?a.ia:b;for(var c=0;b>a.M[c];)if(b-=a.M[c],c<a.H.length-1)c++;else break;return ya(a.H[c]+" line "+b)}
|
|
|
|
|
function fh(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;if(!a.v[d]){var e,f,g;e=f=g=[];a.v[d]={name:d,Fa:Wh,Ta:e,Ab:f,Qa:g,ka:b+": 0",ia:a.ia};a.K.push(d)}}return c}
|
|
|
|
|
function ch(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e<b.length;){var h=b[e];if(";"==h)break;"["==h&&(c++||(f=e));e++;if("]"==h&&0>=--c){g=e;break}}0>c&&a.error("missing bracket(s) in '"+b+"'");0<=f&&(d=b.substr(f,g-f));return d}function Qg(a,b){b=void 0===b?a.ia:b;for(var c=0;b>a.N[c];)if(b-=a.N[c],c<a.H.length-1)c++;else break;return ya(a.H[c]+" line "+b)}
|
|
|
|
|
function fh(a,b){var c=null;if(b=b.match(/([A-Z$%.][0-9A-Z$%.]*)#/i)){c=b[0];b=b[1];var d="?"+b;if(!a.v[d]){var e,f,g;e=f=g=[];a.v[d]={name:d,Fa:Wh,Qa:e,Ab:f,Ra:g,ka:b+": 0",ia:a.ia};a.L.push(d)}}return c}
|
|
|
|
|
function Kh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=mh(a,b);if(!c)break;var e=c;if("\\"==c[0]){var f=1,g=0;"'"==c[1]?(f++,g=6):'"'==c[1]&&(f++,g=7);var e=a,f=c.substr(f),g=void 0===g?0:g,h=Ug(e,f);if(void 0!==h){var k=5;switch(g){case 0:f=L(e.b,h,-1);break;case 6:k++;case 7:for(;h&&k--;)h=Math.trunc(h/Math.pow(2,g))}}e=f}d.push(e);b=b.substr(c.length+1)}return d}
|
|
|
|
|
function Wg(a,b){var c=b;null==a.w&&(a.w=a.F="",b&&(a.w=b[0],c=b=b.substr(1)));if(a.w){var d=b.indexOf(a.w);0>d?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.F+=b}if(null==a.w){var d=b=0,e,f,g=a.F.length;a.S==ih&&g++;for(var h=0;h<g;h++){b||(d=0,f=29,e=7,a.S==jh&&(e--,f++));var k=a.F.charCodeAt(h)&127;6==e&&(97<=k&&122>=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(nh(a,d),b=0)}b&&nh(a,d)}return c}
|
|
|
|
|
function dh(a,b,c){var d,e,f,g,h,k;a.C="<";a.N=">";g=h=k=[];if(b==vh){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" in '"+c+"'"),c;f=e[1];if(e[2]&&","!=e[2]){h=g=Kh(a,e[2],!0);b=[];for(c=0;c<h.length;c++)if(d=h[c].indexOf("<"),0<=d){var l=h[c].lastIndexOf(">");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}d=Xh;b=3}else if(b==Hh){a.C="[";a.N="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
|
|
|
|
|
b+" in '"+c+"'"),c;f=e[1];d=Th;b=2}else if(b==eh)a.C="[",a.N="]",f="?"+xa(++a.ga,5),a.v[f]&&a.error("literal symbol '"+f+"' redefined"),e=[c[0],c.substr(1)],d=Yh,b=0;else if(b==Xg||b==Yg){a.j||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" operands '"+c+"'"),c;for(d=0;d<a.j.Ta.length&&e[1]!=a.j.Ta[d];d++);if(d==a.j.Ta.length)return a.error("invalid "+b+" parameter '"+e[1]+"'"),c;f="?"+b;g=[e[1]];b==Yg?k=a.j.Qa[d].split(""):
|
|
|
|
|
k=Kh(a,a.j.Qa[d]);d=k.length;b=2}else{if(b==wh)d=1,","==c[0]&&(c=c.substr(1).trim());else{e=mh(a,c);if(!e)return a.error("missing "+b+" expression '"+c+"'"),c;c=c.substr(e.length+1);e=e.trim();if(b==yh||b==Ch){f=mh(a,c);if(!f)return a.error("missing second "+b+" expression '"+c+"'"),c;c=c.substr(f.length+1)}d=b==xh||b==Gh?a.v[e]||a.I[e]||void 0!==a.b.b[e]?1:0:Ug(a,e)||0}e=c.match(/\s*(<|)([\s\S]*)/i);f="?"+b;b=1}f=f.toUpperCase();a.i=1;a.R=f;a.v[f]={name:f,Fa:d,Ta:g,Ab:h,Qa:k,ka:"",ia:a.ia};e[b]&&
|
|
|
|
|
(a.i=2,Zg(a,e[b+1]));return f}function Zg(a,b){for(var c="",d=0;d<b.length;d++)if(b[d]==a.C)a.i++;else if(b[d]==a.N&&(a.i--,1==a.i)){a.i=0;c=b.substr(d+1);b=b.substr(0,d);break}d=a.R||"";a.v[d].ka+=b;a.i||(a.R=null,gh(a,d));return c}
|
|
|
|
|
function Pg(a,b,c,d){d=void 0===d?0:d;b=b.toUpperCase().substr(0,6);if(d&$g&&a.I[b])a.error("redefined label '"+b+"'");else{var e=void 0;if("string"==typeof c){var e=[],f=Ug(a,c,e);if(void 0===f){a.error("invalid symbol '"+b+"': "+c);return}1<e.length&&a.error("too many undefined symbols in '"+b+"': "+e.join());c=f;e=e[0]}(f=a.I[b])?(f.value=c,f.Xb=d,f.ia=a.ia):a.I[b]={name:b,value:c,Xb:d,ia:a.ia};a.b.b[b]={value:c,Mb:e}}}
|
|
|
|
|
function dh(a,b,c){var d,e,f,g,h,k;a.C="<";a.O=">";g=h=k=[];if(b==vh){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" in '"+c+"'"),c;f=e[1];if(e[2]&&","!=e[2]){h=g=Kh(a,e[2],!0);b=[];for(c=0;c<h.length;c++)if(d=h[c].indexOf("<"),0<=d){var l=h[c].lastIndexOf(">");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}d=Xh;b=3}else if(b==Hh){a.C="[";a.O="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
|
|
|
|
|
b+" in '"+c+"'"),c;f=e[1];d=Th;b=2}else if(b==eh)a.C="[",a.O="]",f="?"+xa(++a.ga,5),a.v[f]&&a.error("literal symbol '"+f+"' redefined"),e=[c[0],c.substr(1)],d=Yh,b=0;else if(b==Xg||b==Yg){a.j||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" operands '"+c+"'"),c;for(d=0;d<a.j.Qa.length&&e[1]!=a.j.Qa[d];d++);if(d==a.j.Qa.length)return a.error("invalid "+b+" parameter '"+e[1]+"'"),c;f="?"+b;g=[e[1]];b==Yg?k=a.j.Ra[d].split(""):
|
|
|
|
|
k=Kh(a,a.j.Ra[d]);d=k.length;b=2}else{if(b==wh)d=1,","==c[0]&&(c=c.substr(1).trim());else{e=mh(a,c);if(!e)return a.error("missing "+b+" expression '"+c+"'"),c;c=c.substr(e.length+1);e=e.trim();if(b==yh||b==Ch){f=mh(a,c);if(!f)return a.error("missing second "+b+" expression '"+c+"'"),c;c=c.substr(f.length+1)}d=b==xh||b==Gh?a.v[e]||a.K[e]||void 0!==a.b.b[e]?1:0:Ug(a,e)||0}e=c.match(/\s*(<|)([\s\S]*)/i);f="?"+b;b=1}f=f.toUpperCase();a.i=1;a.I=f;a.v[f]={name:f,Fa:d,Qa:g,Ab:h,Ra:k,ka:"",ia:a.ia};e[b]&&
|
|
|
|
|
(a.i=2,Zg(a,e[b+1]));return f}function Zg(a,b){for(var c="",d=0;d<b.length;d++)if(b[d]==a.C)a.i++;else if(b[d]==a.O&&(a.i--,1==a.i)){a.i=0;c=b.substr(d+1);b=b.substr(0,d);break}d=a.I||"";a.v[d].ka+=b;a.i||(a.I=null,gh(a,d));return c}
|
|
|
|
|
function Pg(a,b,c,d){d=void 0===d?0:d;b=b.toUpperCase().substr(0,6);if(d&$g&&a.K[b])a.error("redefined label '"+b+"'");else{var e=void 0;if("string"==typeof c){var e=[],f=Ug(a,c,e);if(void 0===f){a.error("invalid symbol '"+b+"': "+c);return}1<e.length&&a.error("too many undefined symbols in '"+b+"': "+e.join());c=f;e=e[0]}(f=a.K[b])?(f.value=c,f.Xb=d,f.ia=a.ia):a.K[b]={name:b,value:c,Xb:d,ia:a.ia};a.b.b[b]={value:c,Mb:e}}}
|
|
|
|
|
function qh(a,b,c,d){var e=[];b=(b+(void 0===c?"":c)+(void 0===d?"":d)).trim();c=Ug(a,b,e);void 0!==c?e.length?1==e.length?nh(a,c,e[0]):nh(a,0,b):nh(a,c):a.error("unrecognized word expression '"+b+"'")}
|
|
|
|
|
function Sg(a){for(var b=a.X,c={},d=0;d<a.L.length;c={T:c.T,Sa:c.Sa,Aa:c.Aa},d++){c.Aa=a.L[d];c.T=[];c.Sa=0;c.Aa.T.forEach(function(a){return function(b,c){c===a.T.length&&a.T.push(b);a.Sa++}}(c));if(c.Sa==c.T.length)for(var e=b;e+c.Sa<=a.X;e++){for(var f=void 0,f=0;f<c.Sa&&c.T[f]===a.T[e+f]&&c.Aa.ea[f]==a.ea[e];f++);if(f==c.Sa){Pg(a,c.Aa.name,e,$g);c.Aa=null;break}}if(c.Aa){var g=a;Pg(a,c.Aa.name,a.X,$g);c.Aa.T.forEach(function(a){return function(b,c){nh(g,b,a.Aa.ea[c])}}(c))}}a.L=[]}
|
|
|
|
|
function Tg(a){for(var b=0;b<a.K.length;b++){var c=a.K[b],d=a.v[c];d?Z(a,d.ka):a.error("missing definition for variable '"+c+"'")}a.K=[]}function nh(a,b,c){a.T[a.X]=Vg(a,b);void 0!==c&&(a.ea[a.X]=c);a.Z[a.X]=a.ia;a.X++}function Vg(a,b,c){c=void 0===c?a.X:c;var d=X(a.b,b||0,36,!0);(b<-A||b>=C)&&Og(a,"truncated value "+wa(b)+" at location "+wa(c)+" to "+wa(d));return d}ag.prototype.error=function(a,b){throw Error("error in "+Qg(this,b)+": "+a);};
|
|
|
|
|
function Sg(a){for(var b=a.X,c={},d=0;d<a.M.length;c={T:c.T,Ta:c.Ta,Aa:c.Aa},d++){c.Aa=a.M[d];c.T=[];c.Ta=0;c.Aa.T.forEach(function(a){return function(b,c){c===a.T.length&&a.T.push(b);a.Ta++}}(c));if(c.Ta==c.T.length)for(var e=b;e+c.Ta<=a.X;e++){for(var f=void 0,f=0;f<c.Ta&&c.T[f]===a.T[e+f]&&c.Aa.ea[f]==a.ea[e];f++);if(f==c.Ta){Pg(a,c.Aa.name,e,$g);c.Aa=null;break}}if(c.Aa){var g=a;Pg(a,c.Aa.name,a.X,$g);c.Aa.T.forEach(function(a){return function(b,c){nh(g,b,a.Aa.ea[c])}}(c))}}a.M=[]}
|
|
|
|
|
function Tg(a){for(var b=0;b<a.L.length;b++){var c=a.L[b],d=a.v[c];d?Z(a,d.ka):a.error("missing definition for variable '"+c+"'")}a.L=[]}function nh(a,b,c){a.T[a.X]=Vg(a,b);void 0!==c&&(a.ea[a.X]=c);a.Z[a.X]=a.ia;a.X++}function Vg(a,b,c){c=void 0===c?a.X:c;var d=X(a.b,b||0,36,!0);(b<-A||b>=C)&&Og(a,"truncated value "+wa(b)+" at location "+wa(c)+" to "+wa(d));return d}ag.prototype.error=function(a,b){throw Error("error in "+Qg(this,b)+": "+a);};
|
|
|
|
|
function Og(a,b){a.u("warning in "+Qg(a,void 0)+": "+b)}ag.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};
|
|
|
|
|
var $g=1,ah=2,bh=4,hh="ASCII",ih="ASCIZ",kh="BLOCK",lh="BYTE",vh="DEFINE",oh="END",ph="EXP",wh="IF1",xh="IFDEF",yh="IFDIF",zh="IFE",Ah="IFG",Bh="IFGE",Ch="IFIDN",Dh="IFL",Eh="IFLE",Fh="IFN",Gh="IFNDEF",Xg="IRP",Yg="IRPC",Lh="LALL",rh="LIT",eh="LITERAL",Mh="LIST",sh="LOC",Nh="NOSYM",Hh="OPDEF",Oh="PAGE",Jh="PURGE",Ih="REPEAT",jh="SIXBIT",Ph="SUBTTL",Qh="TITLE",th="VAR",Rh="XALL",uh="XWD",Sh="XLIST",Xh=-1,Th=-2,Yh=-3,Wh=-4;
|
|
|
|
|
function ji(a,b,c){t.call(this,"Computer",a,33554432);this.A.ba=!1;this.R=null;ki(this,b);this.N=bd(this,"autoPower",a,6);this.w=0;this.W=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.S=this.O=!1;this.Z=bd(this,"url")||"";(Math.random()+.1).toString(36);this.i=li(this);if(this.v=tb("CPU",this.id)){this.D=tb("Debugger",this.id);this.G=new Bc({id:this.bb+".bus",busWidth:this.W},this.v,this.D);var d,e=rb(this.id);if((this.j=tb("Panel",this.id))&&this.j.za)for(b=
|
|
|
|
|
|