Updated MMU relocation test demo

This commit is contained in:
Jeff Parsons 2017-02-09 11:42:30 -08:00 • committed by Jeff Parsons
commit d8186721f3
2 changed files with 310 additions and 310 deletions

View file

@ -70,18 +70,18 @@ var fb="undefined"!==typeof ArrayBuffer,y="pdp11",gb="PDPjs",hb=!0,ib=!0,C={Qc:5
Va:4,Vc:6,ec:8,he:10,Zd:12,Aj:14}},D={Qc:5,Uc:112,Bc:4,ge:"DY",ue:{ha:1,ca:14,ya:48,eb:64,za:128,Ta:768,ld:15360,ui:16384,Ja:32768,Sh:16254,oj:128,Fb:65535,va:1022,V:{ca:1,ya:4,Ta:8}},se:{va:65534},ve:{De:1,Ee:4,Fe:16,mj:65408,yd:63,dc:64,Gb:65408,$d:3,Gi:8,V:{dc:6,Gb:7}},cc:{ce:{Ti:0,rj:1,Qh:2,Ui:3,ec:4,ee:5,wj:6,qj:7},md:8,be:16,Di:32,Fi:64,ae:128,Ei:256,Ji:512,Li:1024,Ii:2048,Hi:4096,Mi:8192,Ci:16384,Ki:32768},te:{Fa:63},ld:{dj:1024,ti:2048,Cd:2048,Oi:3072,Xd:4096,Ba:5120,Eb:8192,Wi:9216},ca:{Yi:0,
Vc:2,Ge:4,ec:6,le:8,Je:10,ie:12,ij:14}},jb={Qc:5,Uc:180,Bc:2,ge:"DX",xe:{Db:1,ca:14,Tc:16,DONE:32,eb:64,Ga:128,INIT:16384,Ja:32768,gb:16128,Fb:32992,va:16479},jj:{},Ae:{Fa:127},ze:{Fa:31},ye:{jd:1,ud:2,Mc:4,Cb:64,ha:128},ca:{Ec:0,EMPTY:2,Hb:4,Va:6,gb:8,ke:10,fc:12,je:14},ERROR:{Ic:8,Jc:16,Mh:24,fe:32,Ai:40,nj:48,Pc:56,bj:72,aj:80,$i:88,Uh:96,Oh:104,Zi:112,Oc:120,Th:128,Nh:136}},kb={48:"DL11R",52:"DL11X",56:"PC11R",60:"PC11X",64:"KW11",112:"RL11",144:"RK11",180:"RX11"};
jb.we=["DX",77,1,26,128,1,0,0,128,0];C.ac=["RK",203,2,12,512,0,0,0,512,C.bc.ac|C.bc.Bd|C.bc.xd];D.qe=["RL",512,2,40,256,0,0,0,256,D.cc.ce.ee|D.cc.md|D.cc.be];y="pdp11";gb="PDPjs";ib=hb=!0;
function lb(a,b){r.call(this,"Panel",a,512);this.i=this.m=0;this.F=b;this.U=this.g=this.b=this.f=0;this.s=this.v=-1;this.w=this.B=this.l=!1;this.C=mb;this.h={};this.a={START:[1,1,!0,!1,this.gf],STEP:[1,1,!1,!1,this.hf],ENABLE:[1,1,!1,!1,this.bf],CONT:[1,1,!0,!1,this.$e],DEP:[0,0,!0,!1,this.af],EXAM:[1,1,!0,!1,this.cf],LOAD:[1,1,!0,!1,this.ef],TEST:[0,0,!0,!1,this.df]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.ff,a];this.D=this.c=this.u=this.A=null;this.exports={hold:this.We,toggle:this.Bg,reset:this.ug,
set:this.zg};B(this)}n(lb,r);h=lb.prototype;h.reset=function(a){this.stop();a&&nb(this,this.f=0)};
function lb(a,b){r.call(this,"Panel",a,512);this.i=this.m=0;this.F=b;this.U=this.g=this.f=this.b=0;this.s=this.v=-1;this.w=this.B=this.l=!1;this.C=mb;this.h={};this.a={START:[1,1,!0,!1,this.gf],STEP:[1,1,!1,!1,this.hf],ENABLE:[1,1,!1,!1,this.bf],CONT:[1,1,!0,!1,this.$e],DEP:[0,0,!0,!1,this.af],EXAM:[1,1,!0,!1,this.cf],LOAD:[1,1,!0,!1,this.ef],TEST:[0,0,!0,!1,this.df]};for(a=0;22>a;a++)this.a["S"+a]=[0,0,!1,!1,this.ff,a];this.D=this.c=this.u=this.A=null;this.exports={hold:this.We,toggle:this.Bg,reset:this.ug,
set:this.zg};B(this)}n(lb,r);h=lb.prototype;h.reset=function(a){this.stop();a&&nb(this,this.b=0)};
h.ma=function(a,b,c,d){if(this.A&&this.A.ma(a,b,c,d)||this.c&&this.c.ma(a,b,c,d))return!0;switch(b){case "R0":case "R1":case "R2":case "R3":case "R4":case "R5":case "R6":case "R7":case "NF":case "ZF":case "VF":case "CF":case "PS":return this.o[b]=c,this.m++,!0;default:return"led"==a||"rled"==a?(this.o[b]=c,this.h[b]=d?1:0,this.m++,!0):"switch"==a?(void 0===this.a[b]&&(this.a[b]=[d?1:0,d?1:0]),this.o[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){ob(a,
b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){pb(a,b)}}(this,b),a.ontouchstart=function(a,b){return function(c){ob(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){pb(a,b)}}(this,b),!0):r.prototype.ma.call(this,a,b,c,d)}};h.ja=function(a,b,c,d){this.A=a;this.u=b;this.c=c;this.D=d;qb(b,this,rb);sb(b,this.reset.bind(this));tb(this);ub(this)};h.la=function(a,b){if(!b)if(this.F&&vb(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};
h.ka=function(a){return a?this.save():!0};h.save=function(){var a=new E(this);a.set(0,[this.U,this.f,this.b]);return a.data()};h.restore=function(a){if(a=a[0])wb(this,this.U=a[0]),nb(this,this.f=a[1]),xb(this,a[2]);return!0};h.ug=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}ub(this);return!0};function yb(a,b,c){if(a=a.o[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function tb(a,b){for(var c in a.h)yb(a,c,null!=b?b:a.h[c])}
h.ka=function(a){return a?this.save():!0};h.save=function(){var a=new E(this);a.set(0,[this.U,this.b,this.f]);return a.data()};h.restore=function(a){if(a=a[0])wb(this,this.U=a[0]),nb(this,this.b=a[1]),xb(this,a[2]);return!0};h.ug=function(){for(var a in this.a){var b=this.a[a];b[1]=b[0]}ub(this);return!0};function yb(a,b,c){if(a=a.o[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function tb(a,b){for(var c in a.h)yb(a,c,null!=b?b:a.h[c])}
function zb(a,b,c){if(a=a.o[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function ub(a){for(var b in a.a)zb(a,b,a.a[b][1])}function Ab(a,b,c,d){if(a.o[b]){var e=a.D&&a.D.h||8;c=c||0;c=8==e?Ca(c,d):Da(c,d);a.o[b].textContent!=c&&(a.o[b].textContent=c)}}h.We=function(a,b,c){if(ob(this,b)){if(c){var d=this;setTimeout(function(){pb(d,b);a&&a()},+c);return!1}pb(this,b)}return!0};
h.zg=function(a,b){if("SR"==a)return xb(this,Ba(b,8));var c=this.a[a];return c?(c[1]=+b?1:0,zb(this,a,c[1]),!0):!1};h.Bg=function(a){return ob(this,a)?(pb(this,a),!0):!1};function ob(a,b){var c=a.a[b];return c?(zb(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=Bb&&(a.w=b==Cb,a.B=b==Db),!0):!1}function pb(a,b){var c=a.a[b];c&&(c[2]&&c[3]&&(zb(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}
h.gf=function(a){a||this.c.j.M||(F(this.c,this.U),a=this.c,a.u.reset(),Eb(a),this.a[Fb]&&this.a[Fb][1]&&Gb(this.c))};h.hf=function(){};h.bf=function(a){a||G(this.c)};
h.$e=function(a){if(!a&&!this.c.j.M)if(this.a[Fb]&&this.a[Fb][1])Gb(this.c);else{a=this.D;var b;if(b=a)a.j.Ra&&(a.j.Wc=!0),b=!a.j.Ra;if(b)Aa(a,!0),a.f(0,null),Aa(a,!1);else try{var c=this.c.zc(1);0<c&&(Hb(this.c,c),Ib(this.c,c,!0),Jb(this.c,c))}catch(d){"number"!=typeof d&&(c=this.c,a=d.stack||d.message,c.j.error=!0,c.G(a))}this.stop();this.A&&Kb(this.A)}};
h.af=function(a){if(a&&!this.c.j.M)if(this.w&&Lb(this),a=nb(this,this.b),this.C==mb)Mb(this.u,this.U,a);else{var b=this.c,c=this.U;b.pb++;b.u.Yb(Nb(b,c,4),a);b.pb--}};h.cf=function(a){if(!a&&!this.c.j.M){this.B&&Lb(this);if(this.C==mb)a=Ob(this.u,this.U);else{a=this.c;var b=this.U;a.pb++;b=a.u.Xb(Nb(a,b,2));a.pb--;a=b}nb(this,a)}};h.ef=function(a){a||this.c.j.M||wb(this,this.b)};h.df=function(a){a?(this.l=!0,tb(this,!0)):(this.l=!1,tb(this),xb(this,0))};
h.ff=function(a,b){this.b=a?this.b|1<<b:this.b&~(1<<b)};function Lb(a){var b=1140>=a.c.sa?8:16,c=65472<=a.U&&a.U<65472+b,b=c?1:2,c=c?15:a.u.v;a.a[Bb]&&a.a[Bb][1]||(b=-b);wb(a,a.U&~c|a.U+b&c)}function wb(a,b){a.U=b&a.u.v;if(a.s!==a.U){a.s=a.U;b=a.s;for(var c=0;22>c;c++)Pb(a,"A"+c,b&1<<c)}}function nb(a,b){a.g=b&65535;if(a.v!==a.g){a.v=a.g;b=a.v;for(var c=0;16>c;c++)Pb(a,"D"+c,b&1<<c)}return a.g}function Pb(a,b,c){a.h[b]=c;a.l||yb(a,b,c)}
function xb(a,b){a.b=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.b&1<<b?1:0;ub(a);return!0}h.stop=function(){wb(this,this.c.b[7])};h.setData=function(a,b){b?this.f=a:this.g=a};h.nf=function(a,b){return(b?this.f:this.b)&65535};h.Hg=function(a){this.f=a};function vb(){for(var a=z(document,y,"panel"),b=0;b<a.length;b++){var c=a[b],d=v(c),e=sa(d.id);e||(e=new lb(d,!0));w(e,c)}}var mb=7,Cb="DEP",Fb="ENABLE",Db="EXAM",Bb="STEP",Qb={},rb=(Qb[65400]=[null,null,lb.prototype.nf,lb.prototype.Hg,"CNSW"],Qb);Ya(vb);
h.af=function(a){if(a&&!this.c.j.M)if(this.w&&Lb(this),a=nb(this,this.b=this.f),this.C==mb)Mb(this.u,this.U,a);else{var b=this.c,c=this.U;b.pb++;b.u.Yb(Nb(b,c,4),a);b.pb--}};h.cf=function(a){if(!a&&!this.c.j.M){this.B&&Lb(this);if(this.C==mb)a=Ob(this.u,this.U);else{a=this.c;var b=this.U;a.pb++;b=a.u.Xb(Nb(a,b,2));a.pb--;a=b}nb(this,this.b=a)}};h.ef=function(a){a||this.c.j.M||wb(this,this.f)};h.df=function(a){a?(this.l=!0,tb(this,!0)):(this.l=!1,tb(this),xb(this,0))};
h.ff=function(a,b){this.f=a?this.f|1<<b:this.f&~(1<<b)};function Lb(a){var b=1140>=a.c.sa?8:16,c=65472<=a.U&&a.U<65472+b,b=c?1:2,c=c?15:a.u.v;a.a[Bb]&&a.a[Bb][1]||(b=-b);wb(a,a.U&~c|a.U+b&c)}function wb(a,b){a.U=b&a.u.v;if(a.s!==a.U){a.s=a.U;b=a.s;for(var c=0;22>c;c++)Pb(a,"A"+c,b&1<<c)}}function nb(a,b){a.g=b&65535;if(a.v!==a.g){a.v=a.g;b=a.v;for(var c=0;16>c;c++)Pb(a,"D"+c,b&1<<c)}return a.g}function Pb(a,b,c){a.h[b]=c;a.l||yb(a,b,c)}
function xb(a,b){a.f=b|0;for(b=0;22>b;b++)a.a["S"+b][1]=a.f&1<<b?1:0;ub(a);return!0}h.stop=function(){wb(this,this.c.b[7])};h.setData=function(a,b){b?this.b=a:this.g=a};h.nf=function(a,b){return(b?this.b:this.f)&65535};h.Hg=function(a){this.b=a};function vb(){for(var a=z(document,y,"panel"),b=0;b<a.length;b++){var c=a[b],d=v(c),e=sa(d.id);e||(e=new lb(d,!0));w(e,c)}}var mb=7,Cb="DEP",Fb="ENABLE",Db="EXAM",Bb="STEP",Qb={},rb=(Qb[65400]=[null,null,lb.prototype.nf,lb.prototype.Hg,"CNSW"],Qb);Ya(vb);
function Rb(a,b,c){r.call(this,"Bus",a,16);this.c=b;this.D=c;this.S=+a.busWidth||16;this.C=1<<this.S;this.v=this.C-1;this.g=Sb;this.h=Math.log2(this.g);this.J=this.g>>2;this.f=this.g-1;this.s=this.C/this.g|0;this.K=this.s-1;this.Qa=[];this.m=0;this.l=!1;this.F=[];this.Le=[Tb,Ub,Vb,Wb];this.a=this.b=[];this.B=this.w=this.i=this.H=this.I=0;a=new H(this);Xb(a);this.a=Array(this.s);this.b=Array(this.s);for(b=0;b<this.s;b++)this.a[b]=this.b[b]=a;this.B=this.C-Sb;Yb(this,this.B,Sb,Zb,this);this.I=this.H=
(this.B&this.v)>>>this.h;this.w=0;this.i=this.v;B(this)}n(Rb,r);function $b(a,b){if(b!=a.w){for(var c=0;c<a.s;c++)a.b[c]=a.a[c];a.w=0;a.i=a.v;b&&(a.w=b,b=1<<b,a.i=b-1,b-=Sb,a.I=(b&a.i)>>>a.h,a.b[a.I]=a.a[a.H])}}h=Rb.prototype;h.reset=function(){for(var a=0;a<this.F.length;a++)this.F[a]();$b(this,16)};h.la=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};h.ka=function(a){return a?this.save():!0};h.save=function(){var a=new E(this);a.set(0,ac(this));return a.data()};
h.restore=function(a){a:{a=a[0];var b;for(b=0;b<a.length-1;b+=2){var c=a[b],d=a[b+1];if(d&&d.length<this.J){for(var e=0,f=Array(this.J),g=0;g<d.length-1;)for(var k=d[g++],l=d[g++];k--;)f[e++]=l;d=f}e=this.a[c];if(!e||!e.restore(d)){u("Unable to restore memory block "+c);a=!1;break a}}a=!0}return a};
@ -281,7 +281,7 @@ function rh(a,b){if(qa("There may be a problem with your "+gb+" machine.\n\nTo h
function xh(a,b,c){var d,e="none";if(a.g)return null;a.g--;var f=new E(a,"1.34.0"),g=new E(a,"1.34.0",jh),k=La();g.set(lh,k);f.set(lh,k);f.set(yh,"1.34.0");f.set(zh,window?window.location.href:null);f.set(Ah,window?window.navigator.userAgent:"");a.c&&a.c.ka&&(c&&(b&&(a.c.j.Y=a.c.j.M),G(a.c)),d=a.c.ka(b,c),"object"===typeof d&&f.set(a.c.id,d),c&&(a.c.j.R=!1,!1===d&&(e=null)));for(var k=ra(a.id),l=0;l<k.length;l++){var m=k[l];m.j.R&&(m.ka&&(d=m.ka(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.j.R=
!1,!1===d&&(e=null)))}e&&(c?(k=d=!1,b?(a.b&&Bh(a,a.b,f.toString()),uh(g)&&uh(f)||(e=null,d=k=!0)):a.a&&(d=!0,k=a.a==Ch),d&&f.clear(k)):e=f.toString());c&&(a.j.R=!1,b=a.o.power)&&(b.textContent="Power");a.g=0;return e}h.reset=function(){this.j.reset=!0;this.u&&this.u.reset&&this.u.reset();this.c&&this.c.reset&&this.c.reset();for(var a=ra(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c!==this.c&&c.reset&&c.reset()}this.j.reset=!1;Kb(this,-1)};
h.start=function(a,b){for(var c=ra(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}Kb(this,-1)};h.stop=function(a,b){for(var c=ra(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}Kb(this,-1)};
function Kb(a,b){if(a.c){var c=a.c,d=b||0,e=c.o.speed;e&&(0>=d||30<=(c.fd+=d))&&(e.textContent=c.j.M?c.Wa.toFixed(2)+"Mhz":"Stopped",c.fd=0)}if(a.f&&(a=a.f,b=b||0,a.m)){c=a.c.j.M;d=!!(a.c.g&8);if(0>=b||60<=(a.i+=b)){for(e=0;e<a.c.b.length;e++)Ab(a,"R"+e,a.c.b[e]);e=xc(a.c);Ab(a,"PS",e);Ab(a,"NF",e&8?1:0,1);Ab(a,"ZF",e&4?1:0,1);Ab(a,"VF",e&2?1:0,1);Ab(a,"CF",e&1?1:0,1);a.i=0}-1>b?a.U=a.c.b[7]:0<b&&c&&!d&&(a.U=a.c.Ka);wb(a,a.U);nb(a,a.f);b=a.c;b=b.kb?b.ta&16?1:2:4;Pb(a,"B22",b&1);Pb(a,"B18",b&2);Pb(a,
function Kb(a,b){if(a.c){var c=a.c,d=b||0,e=c.o.speed;e&&(0>=d||30<=(c.fd+=d))&&(e.textContent=c.j.M?c.Wa.toFixed(2)+"Mhz":"Stopped",c.fd=0)}if(a.f&&(a=a.f,b=b||0,a.m)){c=a.c.j.M;d=!!(a.c.g&8);if(0>=b||60<=(a.i+=b)){for(e=0;e<a.c.b.length;e++)Ab(a,"R"+e,a.c.b[e]);e=xc(a.c);Ab(a,"PS",e);Ab(a,"NF",e&8?1:0,1);Ab(a,"ZF",e&4?1:0,1);Ab(a,"VF",e&2?1:0,1);Ab(a,"CF",e&1?1:0,1);a.i=0}-1>b?a.U=a.c.b[7]:0<b&&c&&!d&&(a.U=a.c.Ka);wb(a,a.U);nb(a,a.b);b=a.c;b=b.kb?b.ta&16?1:2:4;Pb(a,"B22",b&1);Pb(a,"B18",b&2);Pb(a,
"B16",b&4)}}
h.ma=function(a,b,c){var d=this;switch(b){case "power":return this.o[b]=c,c.onclick=function(){d.g||(d.j.R?xh(d,!1,!0):d.Vb(d.Sb))},!0;case "reset":return this.o[b]=c,c.onclick=function(){if(d.j.R&&!d.g)if(d.a&&!d.i){var a=qa("Click OK to save changes to this "+gb+" machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");xh(d,a,!0);!a&&d.v?window&&window.location.reload():(a||(d.B=!0),d.Sb(fh),d.B=!1)}else d.reset(),d.c&&!d.D&&d.c.Y()},!0;case "save":if(Ga(Oa(),"pcjs.org"))c.parentNode.removeChild(c);else return this.o[b]=
c,c.onclick=function(){var a=eh(d,!0);if(a){var b=!!(d.a&&!d.i||d.v),c=xh(d,b);b?Bh(d,a,c):d.G("Resume disabled, machine state not saved")}},!0}return!1};function eh(a,b){var c=a.b;c||((c=Ra(vh),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=Dh(a,c))||a.G("The user ID is invalid.")):b&&a.G("Browser local storage is not available"));return c}