Fixed OPDEF opcode generation (improper use of bitwise operators)
This commit is contained in:
parent
d28d1ee940
commit
427e6afdb8
3 changed files with 112 additions and 100 deletions
|
|
@ -963,6 +963,9 @@ class DebuggerPDP10 extends Debugger {
|
|||
case DebuggerPDP10.REGS.C1:
|
||||
value = (cpu.regPS & PDP10.PSFLAG.CRY1)? 1 : 0;
|
||||
break;
|
||||
case DebuggerPDP10.REGS.BI:
|
||||
value = (cpu.regPS & PDP10.PSFLAG.BIS)? 1 : 0;
|
||||
break;
|
||||
case DebuggerPDP10.REGS.ND:
|
||||
value = (cpu.regPS & PDP10.PSFLAG.DCK)? 1 : 0;
|
||||
break;
|
||||
|
|
@ -1002,6 +1005,9 @@ class DebuggerPDP10 extends Debugger {
|
|||
case DebuggerPDP10.REGS.C1:
|
||||
flag = PDP10.PSFLAG.CRY1;
|
||||
break;
|
||||
case DebuggerPDP10.REGS.BI:
|
||||
flag = PDP10.PSFLAG.BIS;
|
||||
break;
|
||||
case DebuggerPDP10.REGS.ND:
|
||||
flag = PDP10.PSFLAG.DCK;
|
||||
break;
|
||||
|
|
@ -4147,12 +4153,13 @@ if (DEBUGGER) {
|
|||
OV: 4, // single-bit "register" representing the Overflow flag
|
||||
C0: 5, // single-bit "register" representing the Carry 0 flag
|
||||
C1: 6, // single-bit "register" representing the Carry 1 flag
|
||||
ND: 7, // single-bit "register" representing the No Divide flag
|
||||
PD: 8, // single-bit "register" representing the Pushdown Overflow flag
|
||||
BI: 7, // single-bit "register" representing the Byte Interrupt flag
|
||||
ND: 8, // single-bit "register" representing the No Divide flag
|
||||
PD: 9, // single-bit "register" representing the Pushdown Overflow flag
|
||||
};
|
||||
|
||||
DebuggerPDP10.REGNAMES = [
|
||||
"PC", "RA", "EA", "PS", "OV", "C0", "C1", "ND", "PD"
|
||||
"PC", "RA", "EA", "PS", "OV", "C0", "C1", "BI", "ND", "PD"
|
||||
];
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -815,7 +815,12 @@ class Macro10 {
|
|||
this.popScope();
|
||||
if (w !== undefined) {
|
||||
this.aWords[nLocation] += (w & (PDP10.OPCODE.A_FIELD | PDP10.OPCODE.X_FIELD | PDP10.OPCODE.Y_FIELD));
|
||||
this.aWords[nLocation] |= (w & PDP10.OPCODE.I_FIELD);
|
||||
/*
|
||||
* We can't "OR" (|=) the I_FIELD bit into the target word, because it's a 36-bit value and bitwise
|
||||
* operators truncate to 32 bits, so we'll use addition, trusting that the field was initially zero.
|
||||
*/
|
||||
this.dbg.assert(!(this.aWords[nLocation] & PDP10.OPCODE.I_FIELD));
|
||||
this.aWords[nLocation] += (w & PDP10.OPCODE.I_FIELD);
|
||||
if (sFixup) {
|
||||
if (!this.aFixups[nLocation]) {
|
||||
this.aFixups[nLocation] = sFixup;
|
||||
|
|
|
|||
|
|
@ -193,110 +193,110 @@ function nf(a,b,c){var d,e;c||(c=Y());var f=c.B;if(void 0!==b){a:{var g,f=a.S[0]
|
|||
null;switch(f[1].toLowerCase()){case "ops":h=0}if(null==h)break;b=b.replace(f[0],h.toString())}}"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var p,f=b,q;if(f.match(/^[a-z_][a-z0-9_]*$/i))for(f=f.toUpperCase(),h=0;h<a.I.length;h++)if(g=a.I[h].aa[f],null!=g){q=g.o;break}null!=q&&(p=Y(q));if(p)return p;0<=b.indexOf("0x")?e=16:0<=b.indexOf("0o")?e=8:0<=b.indexOf(".")&&(e=10);f=$e(a,b)}null!=f&&(f=of(f,a.Ga),jf(c,f,d,e));return c}function pf(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.zb=Pe(a,b.hb=c[2]))}
|
||||
function of(a,b){0>a&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function qf(a,b){return L(a,b/Ub,18)+" "+L(a,b%Ub,18)}
|
||||
function gf(a,b){a.D=a;a.ca=a.Eb=536870916;a.Z=null;a.R=[];b=Pe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in cc){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.ca|=cc[c],a.u(c+" messages enabled"))}}function mf(a,b){for(var c in cc)if(16==cc[c]){a.va[c]=b;break}}m.tb=function(a){return rf.indexOf(a.toUpperCase())};
|
||||
m.ub=function(a){var b,c=this.v;switch(a){case sf:b=c.i;break;case tf:b=c.I;break;case uf:b=c.b;break;case vf:b=c.j&x;break;case wf:b=c.j&131072?1:0;break;case xf:b=c.j&65536?1:0;break;case yf:b=c.j&32768?1:0;break;case zf:b=c.j&32?1:0;break;case Af:b=c.j&262144?1:0}return b};
|
||||
m.ub=function(a){var b,c=this.v;switch(a){case sf:b=c.i;break;case tf:b=c.I;break;case uf:b=c.b;break;case vf:b=c.j&x;break;case wf:b=c.j&131072?1:0;break;case xf:b=c.j&65536?1:0;break;case yf:b=c.j&32768?1:0;break;case zf:b=c.j&8192?1:0;break;case Af:b=c.j&32?1:0;break;case Bf:b=c.j&262144?1:0}return b};
|
||||
m.message=function(a,b){b&&(a+=" @"+L(this,Y(this.v.oa).B,18));if(!this.Z||a!=this.Z)if(this.Z=a,this.ca&1073741824)this.R.push(a);else{var c;if(this.ca&-2147483648&&this.v&&(c=this.v.A.P)||Eb(this,!0))this.Y(),c&&(a+=" (cpu halted)");this.u(a);this.v&&(a=this.v,od(a),a.ma=0,a.H&&K(a.H,void 0))}};
|
||||
function ff(a){var b;if(!wd(a))a.j&&a.j.length&&a.u("instruction history buffer freed"),a.W=0,a.j=[];else if(!a.j||!a.j.length){a.j=Array(Bf);for(b=0;b<a.j.length;b++)a.j[b]=Y();a.W=0;a.u("instruction history buffer allocated")}}function Cf(a,b,c){if(!Df(a,c))return!1;tc(a.v,b);return!0}
|
||||
function uc(a,b,c,d){if(!Df(a))return!1;var e="";null===c&&(e=(c=!a.Da||"tr"==a.Da)?"tr":"t");a.F=0;b||wd(a)&&xd(a,a.v.i,0);try{b=md(a.v,b);var f=a.v.Za(b);0<f&&(vc(a.v,f),a.F+=f,wc(a.v,f,!0),xc(a.v,f),a.na++)}catch(g){"number"!=typeof g&&(a.F=0,Ab(a.v,g.stack||g.message))}!1!==d&&(a.ma&&a.ma.stop(),K(a.H,-1));ed(a,c||!1,e);return 0<a.F}m.Y=function(a){this.v&&this.v.Y(a)};function ed(a,b,c){b=void 0===b?!0:b;a.Ja&&(c&&a.u(Ef+c),jf(a.M,a.v.i),b&&1!=a.O?Ff(a):Gf(a))}
|
||||
function Df(a,b){var c;(c=!a.v||!Cb(a.v))||(c=a.v,c.A.ba?c=!0:(c.u(c.toString()+" not powered"),c=!1),c=!c);return c||a.v.A.P?(b||a.u("cpu busy or unavailable, command ignored"),!1):!Bb(a.v)}m.Ba=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};m.ra=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){ff(this);this.na=0;this.Z=null;this.F=0;jf(this.M,this.v.i);this.A.P=!1;Hf(this);a||ed(this)};
|
||||
function ff(a){var b;if(!wd(a))a.j&&a.j.length&&a.u("instruction history buffer freed"),a.W=0,a.j=[];else if(!a.j||!a.j.length){a.j=Array(Cf);for(b=0;b<a.j.length;b++)a.j[b]=Y();a.W=0;a.u("instruction history buffer allocated")}}function Df(a,b,c){if(!Ef(a,c))return!1;tc(a.v,b);return!0}
|
||||
function uc(a,b,c,d){if(!Ef(a))return!1;var e="";null===c&&(e=(c=!a.Da||"tr"==a.Da)?"tr":"t");a.F=0;b||wd(a)&&xd(a,a.v.i,0);try{b=md(a.v,b);var f=a.v.Za(b);0<f&&(vc(a.v,f),a.F+=f,wc(a.v,f,!0),xc(a.v,f),a.na++)}catch(g){"number"!=typeof g&&(a.F=0,Ab(a.v,g.stack||g.message))}!1!==d&&(a.ma&&a.ma.stop(),K(a.H,-1));ed(a,c||!1,e);return 0<a.F}m.Y=function(a){this.v&&this.v.Y(a)};function ed(a,b,c){b=void 0===b?!0:b;a.Ja&&(c&&a.u(Ff+c),jf(a.M,a.v.i),b&&1!=a.O?Gf(a):Hf(a))}
|
||||
function Ef(a,b){var c;(c=!a.v||!Cb(a.v))||(c=a.v,c.A.ba?c=!0:(c.u(c.toString()+" not powered"),c=!1),c=!c);return c||a.v.A.P?(b||a.u("cpu busy or unavailable, command ignored"),!1):!Bb(a.v)}m.Ba=function(a,b){return!b&&(this.reset(!0),a)?this.restore(a):!0};m.ra=function(a,b){b&&this.u(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){ff(this);this.na=0;this.Z=null;this.F=0;jf(this.M,this.v.i);this.A.P=!1;If(this);a||ed(this)};
|
||||
m.save=function(){var a=new H(this);a.set(0,kf(this.M));a.set(1,kf(this.oa));a.set(2,kf(this.ha));a.set(3,[this.w,this.V,this.ca]);a.set(4,this.I);return a.data()};m.restore=function(a){var b=0;void 0!==a[3]&&(this.M=lf(this,a[b++]),this.oa=lf(this,a[b++]),this.ha=lf(this,a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.V=a[b][1],this.ca|=a[b][2]);a[4]&&(this.I=a[4]);return!0};m.start=function(a,b){this.O||this.u("running");this.A.P=!0;this.Ka=a;this.La=b};
|
||||
m.stop=function(a,b){if(this.A.P){this.A.P=!1;this.F=b-this.La;if(!this.O){b="stopped";if(this.F){a-=this.Ka;var c=0<a?Math.round(1E3*this.F/a):0;b+=" (";wd(this)&&(b+=this.na+" instructions, ",this.na=0);b+=this.F+" cycles, "+a+" ms, "+c+" hz)"}else Qb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.u(b)}ed(this,!0);fd(this);Hf(this,this.v.i);this.Z=null}};function wd(a){return 1<a.i.length||!!a.pa}
|
||||
m.stop=function(a,b){if(this.A.P){this.A.P=!1;this.F=b-this.La;if(!this.O){b="stopped";if(this.F){a-=this.Ka;var c=0<a?Math.round(1E3*this.F/a):0;b+=" (";wd(this)&&(b+=this.na+" instructions, ",this.na=0);b+=this.F+" cycles, "+a+" ms, "+c+" hz)"}else Qb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.u(b)}ed(this,!0);fd(this);If(this,this.v.i);this.Z=null}};function wd(a){return 1<a.i.length||!!a.pa}
|
||||
function xd(a,b,c){var d=-1;c||(d=a.v.f(b),2756==d>>23&&a.v.oa==b&&(b=ud(a.v,1)));if(0<c&&(a.pa&&!--a.pa||Zc(a,b,1,a.i)))return!0;0<=c&&a.j.length&&(a.na++,0>d&&(d=a.v.f(b)),0<=d&&(jf(a.j[a.W],b),++a.W==a.j.length&&(a.W=0)));return!1}
|
||||
function If(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 Jf)if(g=Jf[q][p&q]){h=+q;p>>=6;switch(h){case 32512:k=Kf;l=p&3;break;case 32256:k=Lf;l=p&7;break;case 29248:k=Mf,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Nf&&(k="B");k=Of[g||0]+k;if(g){if(28700==h)h=f/$b&127,l=L(a,h,-1);else for(h=f>>23&15,l=L(a,h,-1),p=0;l&&p<Pf.length;p++)if(g==Pf[p][0]&&(q=Pf[p][h])){k=Of[q];l="";break}k=Da(k,8)+(l?l+",":"");f&4194304&&(k+="@");k+=L(a,f&262143,-1);(f=f>>18&15)&&(k+="("+L(a,f,
|
||||
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)if(g=Kf[q][p&q]){h=+q;p>>=6;switch(h){case 32512:k=Lf;l=p&3;break;case 32256:k=Mf;l=p&7;break;case 29248:k=Nf,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Of&&(k="B");k=Pf[g||0]+k;if(g){if(28700==h)h=f/$b&127,l=L(a,h,-1);else for(h=f>>23&15,l=L(a,h,-1),p=0;l&&p<Qf.length;p++)if(g==Qf[p][0]&&(q=Qf[p][h])){k=Pf[q];l="";break}k=Da(k,8)+(l?l+",":"");f&4194304&&(k+="@");k+=L(a,f&262143,-1);(f=f>>18&15)&&(k+="("+L(a,f,
|
||||
-1)+")")}else k=Da(k,8)+qf(a,f);f=k;g="";h=L(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Na(e,1),g+=" "+qf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+hd(a.v).toString()+" cs="+n(a.v.Ha)):h+(null!=d?"="+d.toString():""));return h}
|
||||
function Qf(a,b,c,d,e){var f=-1,g,h;if(b){for(var k=b.toUpperCase(),l=0;l<Pf.length;l++)for(var p in Pf[l])if(+p&&(h=Pf[l][p],k==Of[h])){k=Of[Pf[l][0]];c&&(c=L(a,+p)+","+c);break}for(var q in Jf){g=+q;p=Jf[q];switch(g){case 32512:l=Kf;break;case 32256:l=Lf;break;case 29248:l=Mf;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>Nf&&(J="B");if(k==Of[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)||
|
||||
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}if(0>h||15<h)h&=15;f+=h<<18}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||Rf(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:(Sf(this,a,a.length-1,"set"),ff(this)));return d};function Rf(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||Sf(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 Tf(a,b){for(var c=1;c<b.length;c++)Sf(a,b,c);return b.length-1}function Sf(a,b,c,d){c=b[c];a.u(b[0]+" "+L(a,c.B,18)+(d?" "+d:c.hb?' "'+c.hb+'"':""))}function Hf(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(!Rf(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&&(Rf(a,d,h,!0),e=!0);if(p=h.zb){for(var f=!1,q=0;q<p.length;q++)if(!Uf(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||Sf(a,d,g,"hit");break}}}a.xa--;return f}
|
||||
function Vf(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};
|
||||
function Ie(a,b,c,d,e){var f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,l=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],q=Ha(p,k,a.Gb);0>q&&p.splice(-(q+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.I.push({yd:b,B:c,Wb:d,aa:e,Bb:f})}function Wf(a,b,c){var d=[],e=hf(b)>>>0;for(b=0;b<a.I.length;b++){var f=a.I[b],g=f.B>>>0,h=f.Wb;if(e>=g&&e<g+h){e=Ha(f.Bb,[e-g],a.Gb);0<=e?Xf(a,b,e,d):c&&(e=~e,Xf(a,b,e-1,d),Xf(a,b,e,d));break}}return d}
|
||||
function Yf(a,b,c){var d=a.G,e=0,f=null,g=0;b.forEach(function(a,b){d.b[(b&d.j)>>>d.i].g(a,b&16383,b);null==f&&(f=b);b>g&&(g=b);e++});e?(b="start address ",null!=c?(I(a.v,c),b+=L(a,c)):b+="unspecified",a.u(e+" words loaded at "+L(a,f)+"-"+L(a,g)+", "+b),ed(a)):a.u("no data")}function Xf(a,b,c,d){var e={},f=a.I[b].Bb,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.I[b].aa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
|
||||
function Zf(a,b){var c=b[0].substr(1),d=b[1]&&"0"<=b[1][0]&&"9">=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=nf(a,d,a.ha);if(!e)return a.u("begin assemble at "+L(a,f.B,18)),a.V=!0,K(a.H),!0;var g=e.match(/^(['"]?)(.*?)(\.klm|\.mac|\.html|\.txt|)\1$/i);if(g&&(g[1]||g[3])){f=nf(a,d);if(a.wa)a.u("assembly already in progress");else{var h=g[2]+g[3];g[3]||(c+="s");var k=f.B,l=a.wa=new Ag(a);Cg(l,h,k,c,function(b,c){if(!b)try{var d=l.J;null==d&&(d=k);Yf(a,l.T,d)}catch(F){"number"==typeof F?b=F||-1:(a.u(F.message),
|
||||
b=-1)}b&&a.u("error ("+b+") processing "+(c||h));a.wa=null;b||gd(a)})}return!1}b.shift();b.shift();b.shift();b=Qf(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(If(a,f)));return!0}function Dg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return cf(a)||a.u("no variables"),!0;if(!c[2])return cf(a,c[1]);if(!c[3])return delete a.b[c[1]],!0;b=$e(a,c[3]);return void 0!==b?(a.b[c[1]]={value:b,Mb:void 0},!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||
function Eg(a,b,c){var d=null;b=nf(a,b);var e=Wf(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+L(a,e[1],18)+")"+g,c&&a.u(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.B)&&(g=" - "+n(f,4,!0)),f=e[4]+" ("+L(a,e[5],18)+")"+g,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols");return d}
|
||||
function Ff(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trm\tdump misc registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.v,e=void 0;null==c&&(c=!0);if(b&&1<b.length){var f=b[1];if("m"==f)e=!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.u("missing value for "+b[1]);return}g=$e(a,b);if(void 0===g)return;b=a.tb(f);if(0>b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case sf:I(h,
|
||||
g);jf(a.M,h.i);break;case vf:td(h,g);break;case wf:f=131072;break;case xf:f=65536;break;case yf:f=32768;break;case zf:f=32;break;case Af:f=262144}f&&(h.j=g?h.j|f:h.j&~f);K(a.H);a.u("updated registers:")}}a.u(Vf(a,e));c&&(jf(a.M,vd(d)),Gf(a,L(a,a.M.B,18)))}}function Fg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.u(c[2]):af(a,null,c[2].charCodeAt(0)):$e(a,b,!1)}
|
||||
function Gg(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instructions"),a.u("\ttr [#]\ttrace # instructions with register updates"),a.u("\ttc [#]\ttrace # cycles"),a.u("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Ve(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.Da=b;Xa(c,function(){return Pb(a,!0)&&uc(a,e,d,!1)},function(){a.ma&&a.ma.stop();K(a.H,-1);Pb(a,!1)})}}
|
||||
function Gf(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=Wf(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(If(a,b,g,f));e-=b.B-k;c++}}
|
||||
function Uf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(Ef+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=Zf(a,k);break;case "b":var Lc=k[0],qa=k[1],G=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+Tf(a,a.i);Rd+=Tf(a,a.N);(Rd+=Tf(a,a.K))||a.u("no breakpoints")}else if("n"==Pa){var $f=+qa||0;qa&&(a.pa=$f);a.u("break after "+$f+" instruction(s)")}else if(void 0===qa)a.u("missing breakpoint address");else{var ka="*"==qa?Y():nf(a,qa,a.M);"c"==Pa?null==ka.B?(ef(a),a.u("all breakpoints cleared")):Rf(a,a.i,ka)||Rf(a,a.N,ka)||Rf(a,a.K,ka)||a.u("breakpoint missing: "+L(a,ka.B,18)):null!=ka.B&&(pf(a,ka,G),"p"==Pa?a.Ra(a.i,ka):"r"==Pa?a.Ra(a.N,ka):"w"==Pa?a.Ra(a.K,ka):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],Fa=k[2],Yh=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=Hg(a.H,!0);"console"==Fa?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 ag=Ud.aa[nb].o;if(void 0!==ag){var bg=Ud.aa[nb].l;bg&&(nb=bg);a.u(L(a,ag,18)+" "+nb)}}}else{if("d"==lb){for(kb in cc)if(k[1]==kb){var cg=a.va[kb];cg?(k.shift(),k.shift(),cg(k)):a.u("no dump registered for "+ra);break a}ra||(lb=a.Oa||"dw")}else a.Oa=lb;if("dh"==lb){var dg=ra,eg=Fa,fg="",gg=0,la=a.W,sa=a.j;if(sa.length){var fa=+dg||a.Ca,Fb=+eg||10;isNaN(fa)?
|
||||
fa=Fb:fg="more ";fa>sa.length&&(a.u("note: only "+sa.length+" available"),fa=sa.length);la-=fa;0>la&&(null==sa[sa.length-1].B?(fa=la+fa,la=0):la+=sa.length);var Vd=[];"call"==eg&&(Fb=1E5,Vd=["CALL"]);for(void 0!==dg&&a.u(fa+" instructions earlier:");0<Fb&&la!=a.W;){var hg=sa[la++];if(null==hg.B)break;var Gb=Y(hg.B),Zh=fa--,ig=If(a,Gb,"history",Zh);(!Vd.length||0<=ig.indexOf(Vd[0]))&&a.u(ig);Gb.rb&&(la+=Gb.rb,Fb-=Gb.rb,fa-=Gb.rb);la>=sa.length&&(la=0);a.Ca=fa;gg++;Fb--}}gg||(a.u("no "+fg+"history available"),
|
||||
a.Ca=void 0)}else{var Qa=0,jg="ds"==lb,Hb=nf(a,ra,a.oa);Fa&&("l"==Fa.charAt(0)?(Fa=Fa.substr(1)||Yh,Qa=Ve(a,Fa)):Qa=nf(a,Fa).B-Hb.B,0>Qa&&(Qa=0),65536<Qa&&(Qa=65536));var $h=a.U;Hb.U&&(a.U=Hb.U);for(var kg="db"==lb?1:2,Wd=Qa||32,Xd=1==kg?1:4,ai=(Wd+Xd-1)/Xd|0||1,Ra="";ai--&&0<Wd;){for(var ta="",Yd="",ra=L(a,Hb.B,18),lg=Xd;0<lg--&&0<Wd--;){var Zd=a.Na(Hb,1);jg?(ta&&(ta+=","),ta+=Zd):(ta+=qf(a,Zd),ta+=" ");for(var Mc=29,bi=0;1==kg&&0<=Mc;bi++)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=jg?Ra+(ta+","):Ra+(ra+": "+ta+(0>lg?" "+Yd:""))}Ra&&a.u(Ra);a.U=$h}}}break;case "e":if("else"==k[0])break;var mg,ng,og=k[0],$d=k[1];"e"==og||"ew"==og?(mg=a.Na,ng=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,mg.call(a,
|
||||
ae))+" to "+qf(a,Jb));ng.call(a,ae,Jb,1)}break;case "g":var pg=k[1],ci=b;if(void 0!==pg){var qg=nf(a,pg);pf(a,qg,ci);a.Ra(a.i,qg,!0)}Cf(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 di=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,ei=256;65536>Lb.B>>>0;){ee.B=a.Na(Lb,2);if(null==Lb.B||!ei--)break;if(!(ee.B&1)){for(var fi=a,Nc=ee,rg=null,Mb=Nc.B,sg=Mb,fe=1;6>=fe&&Mb;fe++){if(2<fe){Nc.B=Mb;var Oc=If(fi,Nc);if(0<=Oc.indexOf("JSR")){var tg=Oc.indexOf(" ");if(Mb+(Oc.indexOf(" ",tg+1)-tg-1)/2==sg){rg=Oc;break}}}Mb-=2}Nc.B=sg;if(Sa=rg)break}}if(!Sa||null==Sa)break;var ug=null;if("ks"==di){var vg=Sa.match(/[0-9A-F]+$/);vg&&(ug=Eg(a,vg[0]))}Sa=
|
||||
Da(Sa,50)+" ;"+(ug||"stack="+L(a,Lb.B,18));a.u(Sa);de++}de||a.u("no return addresses found")}break;case "l":if("ln"==k[0]){Eg(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 Ga=0;if("all"==N)Ga=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){Ga=cc[ua];va=!!(a.ca&Ga);break}if(!Ga){a.u("unknown message category: "+N);break a}}if(Ga)if("on"==k[2])a.ca|=
|
||||
Ga,va=!0;else if("off"==k[2]&&(a.ca&=~Ga,va=!1,1073741824==Ga)){for(var wg=1E3<=a.R.length?a.R.length-1E3:0;wg<a.R.length;)a.u(a.R[wg++]);a.R=[]}}var gi=0,Nb="";for(ua in cc)if(!N||N==ua){var hi=!!(a.ca&cc[ua]);if(null===va||va==hi)Nb&&(Nb+=","),++gi%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]){Fg(a,b.substr(5));break}var xg=k[0],yg="p"==xg?0:"pr"==xg?1:-1;if("?"==k[1]||0>yg)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 zg=Y(a.v.i);a.Na(zg);a.O?(a.Ra(a.i,zg,!0),Cf(a)||(a.H&&ld(a.H),a.O=0)):Gg(a,yg?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}Ff(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: "+
|
||||
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}
|
||||
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};
|
||||
function Ie(a,b,c,d,e){var f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,l=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],q=Ha(p,k,a.Gb);0>q&&p.splice(-(q+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.I.push({yd:b,B:c,Wb:d,aa:e,Bb:f})}function Xf(a,b,c){var d=[],e=hf(b)>>>0;for(b=0;b<a.I.length;b++){var f=a.I[b],g=f.B>>>0,h=f.Wb;if(e>=g&&e<g+h){e=Ha(f.Bb,[e-g],a.Gb);0<=e?Yf(a,b,e,d):c&&(e=~e,Yf(a,b,e-1,d),Yf(a,b,e,d));break}}return d}
|
||||
function Zf(a,b,c){var d=a.G,e=0,f=null,g=0;b.forEach(function(a,b){d.b[(b&d.j)>>>d.i].g(a,b&16383,b);null==f&&(f=b);b>g&&(g=b);e++});e?(b="start address ",null!=c?(I(a.v,c),b+=L(a,c)):b+="unspecified",a.u(e+" words loaded at "+L(a,f)+"-"+L(a,g)+", "+b),ed(a)):a.u("no data")}function Yf(a,b,c,d){var e={},f=a.I[b].Bb,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.I[b].aa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
|
||||
function $f(a,b){var c=b[0].substr(1),d=b[1]&&"0"<=b[1][0]&&"9">=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=nf(a,d,a.ha);if(!e)return a.u("begin assemble at "+L(a,f.B,18)),a.V=!0,K(a.H),!0;var g=e.match(/^(['"]?)(.*?)(\.klm|\.mac|\.html|\.txt|)\1$/i);if(g&&(g[1]||g[3])){f=nf(a,d);if(a.wa)a.u("assembly already in progress");else{var h=g[2]+g[3];g[3]||(c+="s");var k=f.B,l=a.wa=new Bg(a);Dg(l,h,k,c,function(b,c){if(!b)try{var d=l.J;null==d&&(d=k);Zf(a,l.T,d)}catch(F){"number"==typeof F?b=F||-1:(a.u(F.message),
|
||||
b=-1)}b&&a.u("error ("+b+") processing "+(c||h));a.wa=null;b||gd(a)})}return!1}b.shift();b.shift();b.shift();b=Rf(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(Jf(a,f)));return!0}function Eg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return cf(a)||a.u("no variables"),!0;if(!c[2])return cf(a,c[1]);if(!c[3])return delete a.b[c[1]],!0;b=$e(a,c[3]);return void 0!==b?(a.b[c[1]]={value:b,Mb:void 0},!0):!1}a.u("invalid assignment:"+b);return!1}
|
||||
function Fg(a,b,c){var d=null;b=nf(a,b);var e=Xf(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+L(a,e[1],18)+")"+g,c&&a.u(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.B)&&(g=" - "+n(f,4,!0)),f=e[4]+" ("+L(a,e[5],18)+")"+g,c&&a.u(f),d||(d=f))}else c&&a.u("no symbols");return d}
|
||||
function Gf(a,b){var c;if(b&&"?"==b[1])a.u("register commands:"),a.u("\tr\tdump registers"),a.u("\trm\tdump misc registers"),a.u("\trx [#]\tset flag or register x to [#]");else{var d=a.v,e=void 0;null==c&&(c=!0);if(b&&1<b.length){var f=b[1];if("m"==f)e=!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.u("missing value for "+b[1]);return}g=$e(a,b);if(void 0===g)return;b=a.tb(f);if(0>b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case sf:I(h,
|
||||
g);jf(a.M,h.i);break;case vf:td(h,g);break;case wf:f=131072;break;case xf:f=65536;break;case yf:f=32768;break;case zf:f=8192;break;case Af:f=32;break;case Bf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);K(a.H);a.u("updated registers:")}}a.u(Wf(a,e));c&&(jf(a.M,vd(d)),Hf(a,L(a,a.M.B,18)))}}function Gg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1<c[2].length?a.u(c[2]):af(a,null,c[2].charCodeAt(0)):$e(a,b,!1)}
|
||||
function Hg(a,b,c){if("?"==c)a.u("trace commands:"),a.u("\tt [#]\ttrace # instructions"),a.u("\ttr [#]\ttrace # instructions with register updates"),a.u("\ttc [#]\ttrace # cycles"),a.u("note: bn [#] breaks after # instructions without updates");else{var d="t"!=b;c=Ve(a,c,null,!0)||1;var e=0;"tc"==b&&(e=c,c=1);a.Da=b;Xa(c,function(){return Pb(a,!0)&&uc(a,e,d,!1)},function(){a.ma&&a.ma.stop();K(a.H,-1);Pb(a,!1)})}}
|
||||
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],G=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 ag=+qa||0;qa&&(a.pa=ag);a.u("break after "+ag+" instruction(s)")}else if(void 0===qa)a.u("missing breakpoint address");else{var ka="*"==qa?Y():nf(a,qa,a.M);"c"==Pa?null==ka.B?(ef(a),a.u("all breakpoints cleared")):Sf(a,a.i,ka)||Sf(a,a.N,ka)||Sf(a,a.K,ka)||a.u("breakpoint missing: "+L(a,ka.B,18)):null!=ka.B&&(pf(a,ka,G),"p"==Pa?a.Ra(a.i,ka):"r"==Pa?a.Ra(a.N,ka):"w"==Pa?a.Ra(a.K,ka):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],Fa=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"==Fa?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 bg=Ud.aa[nb].o;if(void 0!==bg){var cg=Ud.aa[nb].l;cg&&(nb=cg);a.u(L(a,bg,18)+" "+nb)}}}else{if("d"==lb){for(kb in cc)if(k[1]==kb){var dg=a.va[kb];dg?(k.shift(),k.shift(),dg(k)):a.u("no dump registered for "+ra);break a}ra||(lb=a.Oa||"dw")}else a.Oa=lb;if("dh"==lb){var eg=ra,fg=Fa,gg="",hg=0,la=a.W,sa=a.j;if(sa.length){var fa=+eg||a.Ca,Fb=+fg||10;isNaN(fa)?
|
||||
fa=Fb:gg="more ";fa>sa.length&&(a.u("note: only "+sa.length+" available"),fa=sa.length);la-=fa;0>la&&(null==sa[sa.length-1].B?(fa=la+fa,la=0):la+=sa.length);var Vd=[];"call"==fg&&(Fb=1E5,Vd=["CALL"]);for(void 0!==eg&&a.u(fa+" instructions earlier:");0<Fb&&la!=a.W;){var ig=sa[la++];if(null==ig.B)break;var Gb=Y(ig.B),$h=fa--,jg=Jf(a,Gb,"history",$h);(!Vd.length||0<=jg.indexOf(Vd[0]))&&a.u(jg);Gb.rb&&(la+=Gb.rb,Fb-=Gb.rb,fa-=Gb.rb);la>=sa.length&&(la=0);a.Ca=fa;hg++;Fb--}}hg||(a.u("no "+gg+"history available"),
|
||||
a.Ca=void 0)}else{var Qa=0,kg="ds"==lb,Hb=nf(a,ra,a.oa);Fa&&("l"==Fa.charAt(0)?(Fa=Fa.substr(1)||Zh,Qa=Ve(a,Fa)):Qa=nf(a,Fa).B-Hb.B,0>Qa&&(Qa=0),65536<Qa&&(Qa=65536));var ai=a.U;Hb.U&&(a.U=Hb.U);for(var lg="db"==lb?1:2,Wd=Qa||32,Xd=1==lg?1:4,bi=(Wd+Xd-1)/Xd|0||1,Ra="";bi--&&0<Wd;){for(var ta="",Yd="",ra=L(a,Hb.B,18),mg=Xd;0<mg--&&0<Wd--;){var Zd=a.Na(Hb,1);kg?(ta&&(ta+=","),ta+=Zd):(ta+=qf(a,Zd),ta+=" ");for(var Mc=29,ci=0;1==lg&&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=kg?Ra+(ta+","):Ra+(ra+": "+ta+(0>mg?" "+Yd:""))}Ra&&a.u(Ra);a.U=ai}}}break;case "e":if("else"==k[0])break;var ng,og,pg=k[0],$d=k[1];"e"==pg||"ew"==pg?(ng=a.Na,og=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,ng.call(a,
|
||||
ae))+" to "+qf(a,Jb));og.call(a,ae,Jb,1)}break;case "g":var qg=k[1],di=b;if(void 0!==qg){var rg=nf(a,qg);pf(a,rg,di);a.Ra(a.i,rg,!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,sg=null,Mb=Nc.B,tg=Mb,fe=1;6>=fe&&Mb;fe++){if(2<fe){Nc.B=Mb;var Oc=Jf(gi,Nc);if(0<=Oc.indexOf("JSR")){var ug=Oc.indexOf(" ");if(Mb+(Oc.indexOf(" ",ug+1)-ug-1)/2==tg){sg=Oc;break}}}Mb-=2}Nc.B=tg;if(Sa=sg)break}}if(!Sa||null==Sa)break;var vg=null;if("ks"==ei){var wg=Sa.match(/[0-9A-F]+$/);wg&&(vg=Fg(a,wg[0]))}Sa=
|
||||
Da(Sa,50)+" ;"+(vg||"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 Ga=0;if("all"==N)Ga=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){Ga=cc[ua];va=!!(a.ca&Ga);break}if(!Ga){a.u("unknown message category: "+N);break a}}if(Ga)if("on"==k[2])a.ca|=
|
||||
Ga,va=!0;else if("off"==k[2]&&(a.ca&=~Ga,va=!1,1073741824==Ga)){for(var xg=1E3<=a.R.length?a.R.length-1E3:0;xg<a.R.length;)a.u(a.R[xg++]);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 yg=k[0],zg="p"==yg?0:"pr"==yg?1:-1;if("?"==k[1]||0>zg)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 Ag=Y(a.v.i);a.Na(Ag);a.O?(a.Ra(a.i,Ag,!0),Df(a)||(a.H&&ld(a.H),a.O=0)):Hg(a,zg?"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":Gg(a,k[0],k[1]);break;case "u":Gf(a,k[1],k[2],8);break;case "v":if("var"==k[0]){Dg(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]){Fg(a,b.substr(1));break}var ge="commands:",he;for(he in Ig)ge+="\n"+Da(he,9)+Ig[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(Bg){a.u("Debugger "+(Bg.stack||Bg.message)),d=!1}return d}function gd(a,b,c){null!=b&&(a.Ha=Pe(a,b,c));for(;b=a.Ha.shift();)if(!Uf(a,b))return!1;return!0}
|
||||
var Ig={"?":"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"},Nf=20,Of=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
|
||||
sf=0,tf=1,uf=2,vf=3,wf=4,xf=5,yf=6,zf=7,Af=8,rf="PC RA EA PS OV C0 C1 ND PD".split(" "),Jg={},Jf=(Jg[28672]={0:101},Jg[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},Jg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Nf,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},Jg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Jg[29248]={24576:79,24640:80,25088:81,25152:82},Jg[28700]={28672:93,28676:94,28680:95,28684:96,
|
||||
28688:97,28692:98,28696:99,28700:100},Jg),Kf=["","I","M","S"],Lf=" L E LE A GE N G".split(" "),Mf="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Pf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],Bf=1E3,Ef=">> ";$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 Kg(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")?(Kg(a,c,d,e),a.D=b.split(/(\r?\n)/),a.M.push(a.D.length),Lg(a),a.done&&a.done(a.V)):(Kg(a,c,d,e),a.H=b.split(";"),Mg(a))}
|
||||
function Mg(a){if(a.O==a.H.length)Lg(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))&&Ng(a,"unrecognized HTML entity '"+c[0]+"'")}d=e.split(/(\r?\n)/);
|
||||
if(d.length&1){if(c=d.pop())Ng(a,"unexpected line '"+c+"'"),d.push(c),d.push("")}else Ng(a,"unexpected number of lines ("+d.length+")");a.D=a.D.concat(d);a.M[a.O]=d.length>>1;a.O++;setTimeout(function(){Mg(a)},0)}})}}
|
||||
function Lg(a){if(0<=a.W.indexOf("p"))a.u(a.D.join(""));else{var b=bf(a.b);Og(a,"APR",0);Og(a,"PI",4);try{for(var c=0;c<a.D.length;c+=2){a.ia++;0<=a.W.indexOf("l")&&a.u(Pg(a)+": "+a.D[c]);if(!Qg(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);Rg(a);Sg(a);a.ea.forEach(function(b,c){b=Tg(a,b,void 0,c,a.Z[c]);void 0!==b&&(b+=a.T[c],a.T[c]=Ug(a,b,c))})}catch(d){a.u(d.message),a.V=-1}0>a.W.indexOf("d")&&(a.b.b=b)}}
|
||||
function Qg(a,b,c,d,e){var f,g;null!=a.w&&(b=Vg(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==Wg||k==Xg)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=Yg(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),Og(a,d,a.X,Zg));var G;k&&(G=c.match(/^([=:]+)(.*)/))&&(e=0,d=k,k=G[1],c=G[2],"=="==k?e|=$g:"=:"==k&&(e|=ah),Og(a,d,c,e),k=c="");if(!k&&!c)return!0;a.S=k;if(G=bh(a,c))c=c.replace(G,ch(a,dh,bh(a,g))),b||(b="\t");for(;G=eh(a,c);)c=c.replace(G,
|
||||
G.slice(0,-1));if(!fh(a,k,c))switch(k){case gh:case hh:case ih:Vg(a,g);break;case jh:k=c;G=Tg(a,k);void 0!==G&&0<=G&&262143>=G?a.X+=G:a.error("unrecognized BLOCK expression '"+k+"'");break;case kh:k=c;b=g=0;for(c=36;G=lh(a,k);){k=k.substr(G.length).trim();d=G;if(e=G.match(/^\((.*)\)\s*(.*)$/))e[1]&&(g=Tg(a,"^D"+e[1])),d=e[2];if(g){d=d?Tg(a,d):0;if(void 0===d||0>g||36<g){a.error("unexpected BYTE operand: "+G);break}d=X(a.b,d,g,!0);c<g&&(mh(a,b),b=0,c=36);b+=d*Math.pow(2,c-g);c-=g}else mh(a,0)}36>c&&
|
||||
mh(a,b);break;case nh:(k=c)?(a.J=Tg(a,k),void 0===a.J&&a.error("unrecognized END expression '"+k+"'")):a.J=a.la;break;case oh:ph(a,c);break;case qh:Rg(a);break;case rh:a.X=Tg(a,c)||0;break;case sh:Sg(a);break;case th:ph(a,c.replace(",",",,"));break;case uh:case vh:case wh:case xh:case yh:case zh:case Ah:case Bh:case Ch:case Dh:case Eh:case Fh:case Wg:case Xg:case Gh:case Hh:ch(a,k,g);break;case Ih:k=Jh(a,c);for(G=0;G<k.length;G++)delete a.b.b[k[G]],delete a.I[k[G]];break;case Kh:case Lh:case Mh:case Nh:case Oh:case Ph:case Qh:break;
|
||||
default:G=[],k=(k+b+c).trim(),g=Tg(a,k,G),void 0!==g?mh(a,g,G[0]):a.error("unrecognized word expression '"+k+"'")}return!0}
|
||||
function fh(a,b,c){var d=a.v[b];if(!d)return!1;if(null!=c){if(d.Fa==Rh){var e=a.X;Z(a,d.ka);if(e<a.X){if(!c)return!0;Sh(a);Z(a,c);var d=a.T[0],f=a.ea[0];Th(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=Jh(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 yh:case xh:case Fh:d.Fa||Z(a,d.ka);break;case zh:0<d.Fa&&Z(a,d.ka);break;case Ah:0<=
|
||||
d.Fa&&Z(a,d.ka);break;case Ch:0>d.Fa&&Z(a,d.ka);break;case Dh:0>=d.Fa&&Z(a,d.ka);break;case vh:case Eh:case wh:case Bh:d.Fa&&Z(a,d.ka);break;case Wg:case Xg:for(b=0;b<d.Qa.length;b++)Z(a,d.ka,d.Ta,[d.Qa[b]],[]);break;case Hh:for(;0<d.Fa--;)Z(a,d.ka);break;default:c=d.ka,Sh(a,b),Z(a,c),Th(a)}return!0}function Z(a,b,c,d,e){b=b.split(/\r?\n/);for(var f=0;f<b.length&&Qg(a,b[f]+"\r\n",c,d,e);f++);}
|
||||
function Sh(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 Th(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 lh(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 Tg(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=Qf(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 bh(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 Pg(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 eh(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:Uh,Ta:e,Ab:f,Qa:g,ka:b+": 0",ia:a.ia};a.K.push(d)}}return c}
|
||||
function Jh(a,b,c){var d=[];for(c&&(b=b.replace(/^\(?(.*?)\)?$/,"$1"));b;){b=b.trim();c=lh(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=Tg(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 Vg(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==hh&&g++;for(var h=0;h<g;h++){b||(d=0,f=29,e=7,a.S==ih&&(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&&(mh(a,d),b=0)}b&&mh(a,d)}return c}
|
||||
function ch(a,b,c){var d,e,f,g,h,k;a.C="<";a.N=">";g=h=k=[];if(b==uh){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=Jh(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=Vh;b=3}else if(b==Gh){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=Rh;b=2}else if(b==dh)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=Wh,b=0;else if(b==Wg||b==Xg){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==Xg?k=a.j.Qa[d].split(""):
|
||||
k=Jh(a,a.j.Qa[d]);d=k.length;b=2}else{if(b==vh)d=1,","==c[0]&&(c=c.substr(1).trim());else{e=lh(a,c);if(!e)return a.error("missing "+b+" expression '"+c+"'"),c;c=c.substr(e.length+1);e=e.trim();if(b==xh||b==Bh){f=lh(a,c);if(!f)return a.error("missing second "+b+" expression '"+c+"'"),c;c=c.substr(f.length+1)}d=b==wh||b==Fh?a.v[e]||a.I[e]||void 0!==a.b.b[e]?1:0:Tg(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,Yg(a,e[b+1]));return f}function Yg(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,fh(a,d));return c}
|
||||
function Og(a,b,c,d){d=void 0===d?0:d;b=b.toUpperCase().substr(0,6);if(d&Zg&&a.I[b])a.error("label '"+b+"' redefined");else{var e=void 0;if("string"==typeof c){var e=[],f=Tg(a,c,e);if(void 0===f){a.error("symbol error ("+c+")");return}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 ph(a,b){var c=[],d=Tg(a,b,c);void 0!==d?mh(a,d,c[0]):a.error("unrecognized EXP expression '"+b+"'")}
|
||||
function Rg(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){Og(a,c.Aa.name,e,Zg);c.Aa=null;break}}if(c.Aa){var g=a;Og(a,c.Aa.name,a.X,Zg);c.Aa.T.forEach(function(a){return function(b,c){mh(g,b,a.Aa.ea[c])}}(c))}}a.L=[]}
|
||||
function Sg(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 mh(a,b,c){a.T[a.X]=Ug(a,b);void 0!==c&&(a.ea[a.X]=c);a.Z[a.X]=a.ia;a.X++}function Ug(a,b,c){c=void 0===c?a.X:c;var d=X(a.b,b||0,36,!0);(b<-A||b>=C)&&Ng(a,"truncated value "+wa(b)+" at location "+wa(c)+" to "+wa(d));return d}Ag.prototype.error=function(a,b){throw Error("error in "+Pg(this,b)+": "+a);};
|
||||
function Ng(a,b){a.u("warning in "+Pg(a,void 0)+": "+b)}Ag.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};
|
||||
var Zg=1,$g=2,ah=4,gh="ASCII",hh="ASCIZ",jh="BLOCK",kh="BYTE",uh="DEFINE",nh="END",oh="EXP",vh="IF1",wh="IFDEF",xh="IFDIF",yh="IFE",zh="IFG",Ah="IFGE",Bh="IFIDN",Ch="IFL",Dh="IFLE",Eh="IFN",Fh="IFNDEF",Wg="IRP",Xg="IRPC",Kh="LALL",qh="LIT",dh="LITERAL",Lh="LIST",rh="LOC",Mh="NOSYM",Gh="OPDEF",Nh="PAGE",Ih="PURGE",Hh="REPEAT",ih="SIXBIT",Oh="SUBTTL",Ph="TITLE",sh="VAR",th="XWD",Qh="XLIST",Vh=-1,Rh=-2,Wh=-3,Uh=-4;
|
||||
function Xh(a,b,c){t.call(this,"Computer",a,33554432);this.A.ba=!1;this.R=null;ii(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=ji(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=
|
||||
0;b<e.length;b++)d=e[b],d.ja=this.j.ja,d.u=this.j.u,d.za=this.j.za;this.u(Sb+" v1.34.3\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ma&&d.Ma(this,this.G,this.v,this.D);b=null;d=bd(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var f;if(a=bd(this,"state")||(f=!0,a.state))this.M=b=a,f||(this.K=!0,this.b=ki),this.b&&(this.I=new H(this,"1.34.3"),li(this.I)?b=null:
|
||||
delete this.I);!b&&this.b&&(b=mi(this))&&(this.K=!0);if(b){var g=this;Ja(b,null,!0,function(a,b,c){c?(g.F=null,g.K=!1,g.ja("Unable to load machine state from server (error "+c+(b?": "+Ea(b):"")+")")):(g.L=b,g.V=!0);Db(g)})}else Db(this);this.J.power||(this.N=!0);!c&&this.N&&ni(this,this.Wa)}else r("Unable to find CPU component")}ja(Xh,t);function ii(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.R=b}
|
||||
function bd(a,b,c,d){var e=b.toLowerCase(),e=Va(b)||Va(e);void 0===e&&a.R&&(e=a.R[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}function ni(a,b,c){for(var d=rb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Cb(f)){Cb(f,function(){ni(a,b,c)});return}}b.call(a,c)}
|
||||
function oi(a,b){var c=new H(a,"1.34.3",pi);if(li(c)&&qi(c)){var d=c.get(ri),e=b?b.get(ri):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Xh.prototype;
|
||||
m.Wa=function(a){void 0===a&&(a=this.b||(this.L?si:ki));if(!this.w){this.w++;var b=!1,c=!1;this.O=!1;var d=this.I||new H(this,"1.34.3");if(a==ti)b=!0;else if(a>ki){if(li(d,this.L)){this.C=new H(this,"1.34.3",ui);li(this.C)&&(vi(this,d),a=wi,xi(this.C));this.C.set(ri,Ia());yi(this.C);var e=this.b&&!this.K;if(a==si||qb("Click OK to restore the previous "+Sb+" machine state, or CANCEL to reset the machine.")){if(c=qi(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?li(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.ja("Error: "+g),"unable to verify user"==g&&(Ta(zi,""),this.i=null)):this.u(f+": "+g),xi(d),li(d)?(c=qi(d),e=!0):c=!1))}e&&oi(this,c?d:null)}else a==wi&&d.clear()}else oi(this);delete this.L;delete this.I}e=rb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.v&&(c=Ai(this,g,d,b,c));b=[d,a,c];a!=ti?ni(this,this.Hb,b):this.Hb(b)}};
|
||||
function Ai(a,b,c,d,e){if(!b.A.ba){b.A.ba=!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.Ba(f,d)&&f&&(r("Unable to restore state for "+b.type),a.M&&!a.V?(c.clear(),a.b=ki,window&&window.location.reload()):a.O=!0,b.Ba(null),e=!1),!d&&b.Db){var g=b.Db.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){r("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.A.ba=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Ai(this,this.v,b,c,a),K(this,-2),this.v.fa());this.O&&(vi(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
||||
function vi(a,b){if(qb("There may be a problem with your "+Sb+" machine.\n\nTo help us diagnose it, click OK to send this "+Sb+" machine state to http://www.pcjs.org.")){var c=a.Z;a=a.i||"";b=b.toString();var d={};d.app=Sb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ja("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Hg(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new H(a,"1.34.3"),g=new H(a,"1.34.3",pi),h=Ia();g.set(ri,h);f.set(ri,h);f.set(Bi,"1.34.3");f.set(Ci,window?window.location.href:null);f.set(Di,window?window.navigator.userAgent:"");a.v&&a.v.ra&&(c&&(b&&(a.v.A.fa=a.v.A.P),a.v.Y()),d=a.v.ra(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.ba=!1,!1===d&&(e=null)));for(var h=rb(a.id),k=0;k<h.length;k++){var l=h[k];l.A.ba&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&f.set(l.id,d)),c&&(l.A.ba=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&Ei(a,a.i,f.toString()),yi(g)&&yi(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Fi),d&&f.clear(h)):e=f.toString());c&&(a.A.ba=!1,b=a.J.power)&&(b.textContent="Power");a.w=0;return e}
|
||||
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(Cg){a.u("Debugger "+(Cg.stack||Cg.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}
|
||||
var Jg={"?":"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"},Of=20,Pf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "),
|
||||
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 Bg(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 Dg(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 G;k&&(G=c.match(/^([=:]+)(.*)/))&&(e=0,d=k,k=G[1],c=G[2],"=="==k?e|=ah:"=:"==k&&(e|=bh),Pg(a,d,c,e),k=c="");if(!k&&!c)return!0;a.S=k;if(G=ch(a,c))c=c.replace(G,dh(a,eh,ch(a,g))),b||(b="\t");for(;G=fh(a,c);)c=c.replace(G,
|
||||
G.slice(0,-1));if(!gh(a,k,c))switch(k){case hh:case ih:case jh:Wg(a,g);break;case kh:k=c;G=Ug(a,k);void 0!==G&&0<=G&&262143>=G?a.X+=G:a.error("unrecognized BLOCK expression '"+k+"'");break;case lh:k=c;b=g=0;for(c=36;G=mh(a,k);){k=k.substr(G.length).trim();d=G;if(e=G.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: "+G);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(G=0;G<k.length;G++)delete a.b.b[k[G]],delete a.I[k[G]];break;case Lh:case Mh:case Nh:case Oh:case Ph:case Qh:case Rh:break;
|
||||
default:G=[],k=(k+b+c).trim(),g=Ug(a,k,G),void 0!==g?nh(a,g,G[0]):a.error("unrecognized word expression '"+k+"'")}return!0}
|
||||
function gh(a,b,c){var d=a.v[b];if(!d)return!1;if(null!=c){if(d.Fa==Sh){var e=a.X;Z(a,d.ka);if(e<a.X){if(!c)return!0;Th(a);Z(a,c);var d=a.T[0],f=a.ea[0];Uh(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,Th(a,b),Z(a,c),Uh(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 Th(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 Uh(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 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:Vh,Ta:e,Ab:f,Qa:g,ka:b+": 0",ia:a.ia};a.K.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=Wh;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=Sh;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=Xh,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("label '"+b+"' redefined");else{var e=void 0;if("string"==typeof c){var e=[],f=Ug(a,c,e);if(void 0===f){a.error("symbol error ("+c+")");return}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 qh(a,b){var c=[],d=Ug(a,b,c);void 0!==d?nh(a,d,c[0]):a.error("unrecognized EXP 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}Bg.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)}Bg.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",uh="XWD",Rh="XLIST",Wh=-1,Sh=-2,Xh=-3,Vh=-4;
|
||||
function Yh(a,b,c){t.call(this,"Computer",a,33554432);this.A.ba=!1;this.R=null;ji(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=ki(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=
|
||||
0;b<e.length;b++)d=e[b],d.ja=this.j.ja,d.u=this.j.u,d.za=this.j.za;this.u(Sb+" v1.34.3\nCopyright \u00a9 2012-2017 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ma&&d.Ma(this,this.G,this.v,this.D);b=null;d=bd(this,"resume",a);void 0!==d&&(1<d.length?b=this.F=d:this.b=parseInt(d,10));var f;if(a=bd(this,"state")||(f=!0,a.state))this.M=b=a,f||(this.K=!0,this.b=li),this.b&&(this.I=new H(this,"1.34.3"),mi(this.I)?b=null:
|
||||
delete this.I);!b&&this.b&&(b=ni(this))&&(this.K=!0);if(b){var g=this;Ja(b,null,!0,function(a,b,c){c?(g.F=null,g.K=!1,g.ja("Unable to load machine state from server (error "+c+(b?": "+Ea(b):"")+")")):(g.L=b,g.V=!0);Db(g)})}else Db(this);this.J.power||(this.N=!0);!c&&this.N&&oi(this,this.Wa)}else r("Unable to find CPU component")}ja(Yh,t);function ji(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.R=b}
|
||||
function bd(a,b,c,d){var e=b.toLowerCase(),e=Va(b)||Va(e);void 0===e&&a.R&&(e=a.R[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}function oi(a,b,c){for(var d=rb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Cb(f)){Cb(f,function(){oi(a,b,c)});return}}b.call(a,c)}
|
||||
function pi(a,b){var c=new H(a,"1.34.3",qi);if(mi(c)&&ri(c)){var d=c.get(si),e=b?b.get(si):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Yh.prototype;
|
||||
m.Wa=function(a){void 0===a&&(a=this.b||(this.L?ti:li));if(!this.w){this.w++;var b=!1,c=!1;this.O=!1;var d=this.I||new H(this,"1.34.3");if(a==ui)b=!0;else if(a>li){if(mi(d,this.L)){this.C=new H(this,"1.34.3",vi);mi(this.C)&&(wi(this,d),a=xi,yi(this.C));this.C.set(si,Ia());zi(this.C);var e=this.b&&!this.K;if(a==ti||qb("Click OK to restore the previous "+Sb+" machine state, or CANCEL to reset the machine.")){if(c=ri(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?mi(d,g):("error"==f&&"no machine state"!=
|
||||
g?(this.ja("Error: "+g),"unable to verify user"==g&&(Ta(Ai,""),this.i=null)):this.u(f+": "+g),yi(d),mi(d)?(c=ri(d),e=!0):c=!1))}e&&pi(this,c?d:null)}else a==xi&&d.clear()}else pi(this);delete this.L;delete this.I}e=rb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.v&&(c=Bi(this,g,d,b,c));b=[d,a,c];a!=ui?oi(this,this.Hb,b):this.Hb(b)}};
|
||||
function Bi(a,b,c,d,e){if(!b.A.ba){b.A.ba=!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.Ba(f,d)&&f&&(r("Unable to restore state for "+b.type),a.M&&!a.V?(c.clear(),a.b=li,window&&window.location.reload()):a.O=!0,b.Ba(null),e=!1),!d&&b.Db){var g=b.Db.split("|");for(a=0;a<g.length;a++)b.status(g[a])}}catch(h){r("Error restoring state for "+b.type+" ("+h.message+")")}}return e}
|
||||
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.S=!0;this.A.ba=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Bi(this,this.v,b,c,a),K(this,-2),this.v.fa());this.O&&(wi(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
|
||||
function wi(a,b){if(qb("There may be a problem with your "+Sb+" machine.\n\nTo help us diagnose it, click OK to send this "+Sb+" machine state to http://www.pcjs.org.")){var c=a.Z;a=a.i||"";b=b.toString();var d={};d.app=Sb;d.ver="1.34.3";d.url=c;d.user=a;d.type="bug";d.data=b;Ja("http://www.pcjs.org/api/v1/report",d,!0)}}
|
||||
function Ig(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new H(a,"1.34.3"),g=new H(a,"1.34.3",qi),h=Ia();g.set(si,h);f.set(si,h);f.set(Ci,"1.34.3");f.set(Di,window?window.location.href:null);f.set(Ei,window?window.navigator.userAgent:"");a.v&&a.v.ra&&(c&&(b&&(a.v.A.fa=a.v.A.P),a.v.Y()),d=a.v.ra(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.ba=!1,!1===d&&(e=null)));for(var h=rb(a.id),k=0;k<h.length;k++){var l=h[k];l.A.ba&&(l.ra&&(d=l.ra(b,c),"object"===typeof d&&f.set(l.id,d)),c&&(l.A.ba=
|
||||
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.i&&Fi(a,a.i,f.toString()),zi(g)&&zi(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Gi),d&&f.clear(h)):e=f.toString());c&&(a.A.ba=!1,b=a.J.power)&&(b.textContent="Power");a.w=0;return e}
|
||||
m.reset=function(){this.A.reset=!0;this.G&&this.G.reset&&(Rb(this,"Resetting "+this.G.type),this.G.reset());this.v&&this.v.reset&&(Rb(this,"Resetting "+this.v.type),this.v.reset());for(var a=rb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.G&&c!==this.v&&c.reset&&(Rb(this,"Resetting "+c.type),c.reset())}this.A.reset=!1;K(this,-1)};m.start=function(a,b){for(var c=rb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}K(this,-1)};
|
||||
m.stop=function(a,b){for(var c=rb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}K(this,-1)};
|
||||
function K(a,b){if(a.v){var c=a.v,d=b||0,e=c.J.speed;e&&(0>=d||30<=(c.kb+=d))&&(e.textContent=c.A.P?c.Z.toFixed(2)+"Mhz":"Stopped",c.kb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.P;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.U||8,e=e||0,e=8==f?wa(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0<b&&c&&!d&&(a.i=a.v.Ca);lc(a,a.i);fc(a,a.w)}}
|
||||
m.sa=function(a,b,c){var d=this;switch(b){case "power":return this.J[b]=c,c.onclick=function(){d.w||(d.A.ba?Hg(d,!1,!0):ni(d,d.Wa))},!0;case "reset":return this.J[b]=c,c.onclick=function(){if(d.A.ba&&!d.w)if(d.b&&!d.F){var a=qb("Click OK to save changes to this "+Sb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Hg(d,a,!0);!a&&d.M?window&&window.location.reload():d.Wa(ki)}else d.reset(),d.v&&!d.D&&d.v.fa()},!0;case "save":if(Aa(La(),"pcjs.org"))c.parentNode.removeChild(c);
|
||||
else return this.J[b]=c,c.onclick=function(){var a=ji(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=Hg(d,b);b?Ei(d,a,c):d.ja("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function ji(a,b){var c=a.i;c||((c=Oa(zi),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=Gi(a,c))||a.ja("The user ID is invalid.")):b&&a.ja("Browser local storage is not available"));return c}
|
||||
function Gi(a,b){a.i=null;b=Ja(La()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ta(zi,b.data),a.i=b.data)}catch(d){r(d.message+" ("+c+")")}return a.i}function mi(a){var b=null;a.i&&(b=La()+"/api/v1/user?req=load&user="+a.i+"&state="+Hi(a,"1.34.3"));return b}
|
||||
function Ei(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Hi(a,"1.34.3");d.data=c;b=Ja(La()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ja("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.ja(c),Ta(zi,""),a.i=null)}}
|
||||
function ld(a,b){if(a.za){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.za.focus();!b&&window&&window.scrollTo(c,d)}}var ui="failsafe",pi="validate",ri="timestamp",Bi="version",Ci="url",Di="browser",zi="user",ti=-1,ki=0,si=1,wi=2,Fi=3;$a(function(){for(var a=w(document,v+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=u(c),c=w(c,v,"computer"),e=0;e<c.length;e++){var f=c[e],g=u(f),g=new Xh(g,d,!0);ub(g,f);g.N&&ni(g,g.Wa)}});
|
||||
ab.show.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=tb("Computer",c.id))&&c.S&&!c.A.ba&&c.Wa(ti)}});ab.exit.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=tb("Computer",c.id))&&c.A.ba&&Hg(c,!(!c.b||c.F),!0)}});function H(a,b,c){this.id=a.id;this.i="";this.b={};this.v=this.j=!1;this.key=Hi(a,b,c);xi(this,a.Ub)}m=H.prototype;m.set=function(a,b){try{this.b[a]=b}catch(c){}};m.get=function(a){return this.b[a]||null};
|
||||
m.data=function(){return this.b};function li(a,b){return b?(a.i=b,a.v=!0,a.j=!1,!0):a.v?!0:Ma()&&(b=Oa(a.key))?(a.i=b,a.v=!0):!1}function qi(a){var b=!0;if(!a.j)try{a.b=JSON.parse(a.i),a.j=!0}catch(c){r(c.message||c),b=!1}return b}function yi(a){var b=!0;if(Ma()){var c=JSON.stringify(a.b);Ta(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}m.toString=function(){return this.b?JSON.stringify(this.b):this.i};
|
||||
function xi(a,b){a.i="";a.b={};a.v=a.j=!1;b&&a.set("parms",b)}m.clear=function(a){xi(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 Hi(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 Ii=0;
|
||||
function Ji(a,b,c,d,e,f,g){f("Loading "+a+"...");Ja(a,null,!0,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):Ki(k,a,b,c,d,e,f,g)})}
|
||||
function Ki(a,b,c,d,e,f,g,h){function k(a,g){if(g)h(g,null);else{c&&(ib(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);h(a,g)}}a?f?Li(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Li(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ja(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Li(a,b,c)}})}else c(a,null)}
|
||||
function Mi(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Ba(a))}function g(a){f("Error: "+a);l&&(--Ii||db(!0));l=!1}var h,k,l=!0;Ii++;jb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));q.appendChild(D)}d||
|
||||
(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?Ji(d,null,a,null,!1,f,function(a,e){e?(ib(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Ii||db(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Ii||
|
||||
db(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Ji(c,b,a,e,!0,f,p):Ki(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(F){g(F.message)}return l}window.embedPDP10=function(a,b,c,d){db(!1);return Mi("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){db(!1);return Mi("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return tb(b,a+".machine")};
|
||||
m.sa=function(a,b,c){var d=this;switch(b){case "power":return this.J[b]=c,c.onclick=function(){d.w||(d.A.ba?Ig(d,!1,!0):oi(d,d.Wa))},!0;case "reset":return this.J[b]=c,c.onclick=function(){if(d.A.ba&&!d.w)if(d.b&&!d.F){var a=qb("Click OK to save changes to this "+Sb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Ig(d,a,!0);!a&&d.M?window&&window.location.reload():d.Wa(li)}else d.reset(),d.v&&!d.D&&d.v.fa()},!0;case "save":if(Aa(La(),"pcjs.org"))c.parentNode.removeChild(c);
|
||||
else return this.J[b]=c,c.onclick=function(){var a=ki(d,!0);if(a){var b=!!(d.b&&!d.F||d.M),c=Ig(d,b);b?Fi(d,a,c):d.ja("Resume disabled, machine state not saved")}},!0}return!1};
|
||||
function ki(a,b){var c=a.i;c||((c=Oa(Ai),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=Hi(a,c))||a.ja("The user ID is invalid.")):b&&a.ja("Browser local storage is not available"));return c}
|
||||
function Hi(a,b){a.i=null;b=Ja(La()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ta(Ai,b.data),a.i=b.data)}catch(d){r(d.message+" ("+c+")")}return a.i}function ni(a){var b=null;a.i&&(b=La()+"/api/v1/user?req=load&user="+a.i+"&state="+Ii(a,"1.34.3"));return b}
|
||||
function Fi(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ii(a,"1.34.3");d.data=c;b=Ja(La()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ja("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.ja(c),Ta(Ai,""),a.i=null)}}
|
||||
function ld(a,b){if(a.za){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a.za.focus();!b&&window&&window.scrollTo(c,d)}}var vi="failsafe",qi="validate",si="timestamp",Ci="version",Di="url",Ei="browser",Ai="user",ui=-1,li=0,ti=1,xi=2,Gi=3;$a(function(){for(var a=w(document,v+"-machine"),b=0;b<a.length;b++)for(var c=a[b],d=u(c),c=w(c,v,"computer"),e=0;e<c.length;e++){var f=c[e],g=u(f),g=new Yh(g,d,!0);ub(g,f);g.N&&oi(g,g.Wa)}});
|
||||
ab.show.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=tb("Computer",c.id))&&c.S&&!c.A.ba&&c.Wa(ui)}});ab.exit.push(function(){for(var a=w(document,v,"computer"),b=0;b<a.length;b++){var c=u(a[b]);(c=tb("Computer",c.id))&&c.A.ba&&Ig(c,!(!c.b||c.F),!0)}});function H(a,b,c){this.id=a.id;this.i="";this.b={};this.v=this.j=!1;this.key=Ii(a,b,c);yi(this,a.Ub)}m=H.prototype;m.set=function(a,b){try{this.b[a]=b}catch(c){}};m.get=function(a){return this.b[a]||null};
|
||||
m.data=function(){return this.b};function mi(a,b){return b?(a.i=b,a.v=!0,a.j=!1,!0):a.v?!0:Ma()&&(b=Oa(a.key))?(a.i=b,a.v=!0):!1}function ri(a){var b=!0;if(!a.j)try{a.b=JSON.parse(a.i),a.j=!0}catch(c){r(c.message||c),b=!1}return b}function zi(a){var b=!0;if(Ma()){var c=JSON.stringify(a.b);Ta(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}m.toString=function(){return this.b?JSON.stringify(this.b):this.i};
|
||||
function yi(a,b){a.i="";a.b={};a.v=a.j=!1;b&&a.set("parms",b)}m.clear=function(a){yi(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 Ii(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 Ji=0;
|
||||
function Ki(a,b,c,d,e,f,g){f("Loading "+a+"...");Ja(a,null,!0,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):Li(k,a,b,c,d,e,f,g)})}
|
||||
function Li(a,b,c,d,e,f,g,h){function k(a,g){if(g)h(g,null);else{c&&(ib(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);h(a,g)}}a?f?Mi(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
|
||||
function Mi(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ja(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
||||
"");a=a.replace(d[0],g);Mi(a,b,c)}})}else c(a,null)}
|
||||
function Ni(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Ba(a))}function g(a){f("Error: "+a);l&&(--Ji||db(!0));l=!1}var h,k,l=!0;Ji++;jb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));q.appendChild(D)}d||
|
||||
(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.34.3/components.xsl");p=function(e,k){k?Ki(d,null,a,null,!1,f,function(a,e){e?(ib(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Ji||db(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Ji||
|
||||
db(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Ki(c,b,a,e,!0,f,p):Li(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(F){g(F.message)}return l}window.embedPDP10=function(a,b,c,d){db(!1);return Ni("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){db(!1);return Ni("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return tb(b,a+".machine")};
|
||||
window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!wb[a]){for(var c=!0,d=wb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p<f;p++){var q=b[p];if('"'==q||"'"==q)l&&q!=l?k+=q:(l?l=null:l=q,k&&(h.push(k),k=""));else{if(!l){if("\r"==q||"\n"==q)q=";";if(" "==q||"\t"==q||";"==q){k&&(h.push(k),k="");";"==q&&h.length&&(g.push(h),h=[]);continue}}k+=q}}k&&h.push(k);h.length&&g.push(h);d[e]=g;vb(a)||(c=!1)}return c};window.enableEvents=db;window.sendEvent=fb;})();//# sourceMappingURL=/tmp/pdpjs/1.34.3/pdp10-dbg.map
|
||||
|
|
|
|||
Loading…
Reference in a new issue