Improved PDP-11 save/restore support (added to Device, Panel, RK11, and Serial)
This commit is contained in:
parent
6f83ee8beb
commit
d182c7eced
15 changed files with 850 additions and 635 deletions
|
|
@ -654,7 +654,7 @@ l.Pb=function(a,b,c){var d=this;switch(b){case "listDisks":this.qa[b]=c;if(this.
|
|||
void 0===b&&(b="");g=g.href;void 0!==g&&(b='<a href="'+g+'" target="_blank">'+b+"</a>");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.qa[b]=c,c.onchange=function(){var a=ea(c.value,10);null!=a&&xp(d,a)},!0;case "loadDisk":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&yp(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDisk":if(!this.ia){c.parentNode.removeChild(c);break}this.qa[b]=c;c.onclick=function(){var a=d.qa.listDrives;a&&a.options&&d.A&&((a=
|
||||
d.A[ea(a.value,10)||0])?(a=a.za)?(a=Qa(tp(a),"octet-stream",!0,a.Ug.replace(".json",".img")),w(a)):d.Na("No diskette loaded in drive."):d.Na("No diskette drive selected."))};return!0;case "mountDisk":if(this.ia)return this.qa[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;yp(d,ja(b,!0),b,a)}return!1},!0;c.parentNode.removeChild(c)}return!1};
|
||||
l.Jc=function(a,b,c,d){this.ga=b;this.F=c;this.ha=d;this.X=a;this.N=Gb(a,"ChipSet");if((this.U=Vc(this.X,"autoMount")||this.U)&&"string"==typeof this.U)try{this.U=eval("("+this.U+")")}catch(e){w("FDC auto-mount error: "+e.message+" ("+this.U+")"),this.U=null}zp(this);nc(b,this,Ap);rc(b,this,Bp);Cp(this,"None","",!0);this.ia&&Cp(this,"Local Disk","?");Cp(this,"Remote Disk","??");Dp(this)||ub(this)};
|
||||
l.hc=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.X.lh){this.B=[];for(a=0;a<this.A.length;a++)Ep(this,a,!0);Dp(this,!0)}}else if(!this.restore(a))return!1;if(a=this.qa.listDrives){for(;a.firstChild;)a.removeChild(a.firstChild);a.value="";for(b=0;b<this.ka;b++){var c=document.createElement("option");c.value=b;c.text=String.fromCharCode(65+b)+":";a.appendChild(c)}0<this.ka&&(a.value="0",xp(this,0))}}return!0};l.gc=function(a){return a?this.save():!0};l.reset=function(){zp(this)};
|
||||
l.hc=function(a,b){if(!b){if(!a){if(this.reset(),this.X.lh){this.B=[];for(a=0;a<this.A.length;a++)Ep(this,a,!0);Dp(this,!0)}}else if(!this.restore(a))return!1;if(a=this.qa.listDrives){for(;a.firstChild;)a.removeChild(a.firstChild);a.value="";for(b=0;b<this.ka;b++){var c=document.createElement("option");c.value=b;c.text=String.fromCharCode(65+b)+":";a.appendChild(c)}0<this.ka&&(a.value="0",xp(this,0))}}return!0};l.gc=function(a){return a?this.save():!0};l.reset=function(){zp(this)};
|
||||
l.save=function(){var a=new nf(this);a.set(0,Fp(this));return a.data()};l.restore=function(a){return zp(this,a[0])};
|
||||
function zp(a,b){var c=0,d,e=!0;b||(b=[0,0,128,Array(9),0,0,0,[]]);a.hb=b[c++];c++;a.ma=b[c++];a.V=b[c++];a.L=b[c++];a.C=b[c++];a.aa=b[c++];var f=b[c++];d=b[c++];null!=d&&(a.B=d);void 0===a.A&&(a.ka=4,a.N&&(a.ka=+Vk(a.N,wk,void 0)),a.A=Array(4));for(d=0;d<a.A.length;d++){var g=a.A[d];if(void 0===g){var g=a.A[d]={},h;if(a.N)a:{h=a.N;if(d<+Vk(h,wk,void 0)){if(!h.ia){h=360;break a}if(d<h.ia.length){h=h.ia[d];break a}}h=0}else h=0;switch(h){case 160:case 180:g.ub=1;default:g.Bb=40;g.lb=9;break;case 720:g.Bb=
|
||||
80;g.lb=9;break;case 1200:g.Bb=80;g.lb=15;break;case 1440:g.Bb=80,g.lb=18}}var k=a,m=d,n=f[d],t=0;h=!0;g.hb=m;g.$e=g.bf=!1;n||(n=[192,!0,0,2,0]);"boolean"==typeof n[1]&&(n[1]=["Floppy Drive",g.Bb||40,g.ub||n[3],g.lb||9,g.Va||512,n[1],g.Fg,g.Rf,g.Sf]);g.Cb=n[t++];var q=n[t++];g.name=q[0];g.Bb=q[1];g.ub=q[2];g.lb=q[3];g.Va=q[4];g.cf=q[5];(g.Fg=q[6])?(g.Rf=q[7],g.Sf=q[8]):(g.Fg=g.Bb,g.Rf=g.ub,g.Sf=g.lb);g.kb=n[t++];g.ee=n[t++];g.Qb=n[t++];g.ee=100<=g.ee?g.ee-100:g.ee-g.Qb;g.xb=n[t++];g.fe=n[t++];g.Hb=
|
||||
|
|
@ -681,7 +681,7 @@ var Qp=["XTC","ATC","COMPAQ"],Rp=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[
|
|||
8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}];l=Pp.prototype;
|
||||
l.Pb=function(a,b,c){var d=this;switch(b){case "saveHD0":case "saveHD1":return this.qa[b]=c,c.onclick=function(a){return function(){var b=d.A&&d.A[a];b&&b.za?(b=b.za,b=Qa(tp(b),"octet-stream",!0,b.Ug.replace(".json",".img")),w(b)):d.Na("Hard drive "+a+" is not available.")}}(+b.slice(-1)),!0}return!1};
|
||||
l.Jc=function(a,b,c,d){this.ga=b;this.F=c;this.ha=d;this.X=a;if(d=Vc(a,"drives"))this.ua=d;else if(this.Ea)try{this.ua=eval("("+this.Ea+")")}catch(e){w("HDC drive configuration error: "+e.message+" ("+this.Ea+")")}this.N=Gb(a,"ChipSet");this.U=0;this.Ga=3;nc(b,this,this.ia?Sp:Tp);rc(b,this,this.ia?Up:Vp);this.ia&&(this.U++,this.N&&5180==this.N.ja&&this.U++,this.Ga=2,b.aa[496]=2,b.ea[496]=2);hf(c,19,this.Pm.bind(this));hf(c,64,this.Qm.bind(this));this.reset();Wp(this)||ub(this)};
|
||||
l.hc=function(a,b){if(!b)if(!a||!this.restore)Xp(this),this.X.lh&&Wp(this,!0);else if(!this.restore(a))return!1;return!0};l.gc=function(a){return a?this.save():!0};l.gf=function(){return this.X?this.X.gf():""};l.ie=function(){return this.X?this.X.ie():""};l.reset=function(){Xp(this,null,!0)};l.save=function(){var a=new nf(this);a.set(0,Yp(this));return a.data()};l.restore=function(a){return Xp(this,a[0])};
|
||||
l.hc=function(a,b){if(!b)if(!a)Xp(this),this.X.lh&&Wp(this,!0);else if(!this.restore(a))return!1;return!0};l.gc=function(a){return a?this.save():!0};l.gf=function(){return this.X?this.X.gf():""};l.ie=function(){return this.X?this.X.ie():""};l.reset=function(){Xp(this,null,!0)};l.save=function(){var a=new nf(this);a.set(0,Yp(this));return a.data()};l.restore=function(a){return Xp(this,a[0])};
|
||||
function Xp(a,b,c){var d=0,e=!0;a.hb=-1;if(a.ia){if(b||(b=[0,0,0,0,0,0,0,64,0,[0,-1]]),a.W=b[d++],a.Pa=b[d++],a.aa=b[d++],a.Ca=b[d++],a.ya=b[d++],a.va=b[d++],a.ra=b[d++],a.ma=b[d++],a.Da=b[d++],a.fa=b[d++],"object"==typeof a.fa){var f=a.fa;a.fa=f[0];a.hb=f[1]}}else b||(b=[0,0,Array(14),0,0]),a.pa=b[d++],a.ma=b[d++],a.V=b[d++],a.L=b[d++],a.C=b[d++],a.Oa=b[d++],a.Ka=b[d++],a.Ja=b[d++],f=b[d++],void 0!==f?a.ka=f:void 0===a.ka&&(a.ka=-1);void 0===a.A&&(a.A=Array(a.ua.length));b=b[d];void 0===b&&(b=[]);
|
||||
for(d=0;d<a.A.length;d++){void 0===a.A[d]&&(a.A[d]={});var f=a.A[d],g=a,h=d,k=f,m=a.ua[d],n=b[d],t=c,q=0,A=!0;n||(n=[0,0,!1,Array(8)]);k.hb=h;k.errorCode=n[q++];k.Vk=n[q++];k.cf=n[q++];k.Te=n[q++];k.Ue=n[q++];k.kb=n[q++];k.ub=n[q++];k.be=n[q++];k.xb=n[q++];k.fe=n[q++];k.Hb=n[q++];k.sg=g.ia?0:1;k.name=m.name;void 0===k.name&&(k.name="Hard Drive");k.path=m.path;k.mode=m.mode||(k.path?"preload":"local");"demandro"!=k.mode&&"demandrw"!=k.mode||g.ie()||(k.mode="local");k.type=m.type;if(void 0===k.type||
|
||||
void 0===Rp[g.U][k.type])k.type=g.Ga;m=Rp[g.U][k.type];k.lb=m[2]||17;k.Va=m[3]||512;if(t&&g.N){var m=g.N,F=k.type;if(m.A){var t=null,C=m.A[18];15<F&&(t=F,F=15);h?(C=C&240|F,F=26):(C=C&15|F<<4,F=25);var D=m;D.A&&(D.A[18]=C,Yk(D));null!=t&&m.A&&(m.A[F]=t,Yk(m))}}void 0===k.za&&(k.za=null,g.Na("Type "+k.type+' "'+k.name+'" is fixed disk '+h,!0));Zp(g,k);k.eb=n[q++];k.pb=null;k.za&&(g=n[q],void 0!==g&&0>k.za.restore(g)&&(A=!1),A&&void 0!==k.eb&&(k.pb=k.za.seek(k.be,k.kb,k.xb+k.sg)));A||(e=!1);null!=a.pa&&
|
||||
|
|
|
|||
|
|
@ -603,7 +603,7 @@ l.zb=function(a,b,c){var d=this;switch(b){case "listDisks":this.la[b]=c;if(this.
|
|||
b&&(b="");g=g.href;void 0!==g&&(b='<a href="'+g+'" target="_blank">'+b+"</a>");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.la[b]=c,c.onchange=function(){var a=ea(c.value,10);null!=a&&vm(d,a)},!0;case "loadDisk":return this.la[b]=c,c.onclick=function(){var a=d.la.listDisks;a&&wm(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDisk":if(!this.Y){c.parentNode.removeChild(c);break}this.la[b]=c;c.onclick=function(){var a=d.la.listDrives;a&&a.options&&d.B&&((a=d.B[ea(a.value,
|
||||
10)||0])?(a=a.ua)?(a=Ca(rm(a),"octet-stream",!0,a.th.replace(".json",".img")),r(a)):d.Ba("No diskette loaded in drive."):d.Ba("No diskette drive selected."))};return!0;case "mountDisk":if(this.Y)return this.la[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;wm(d,ga(b,!0),b,a)}return!1},!0;c.parentNode.removeChild(c)}return!1};
|
||||
l.pc=function(a,b,c,d){this.ia=b;this.A=c;this.Ia=d;this.ba=a;this.S=jb(a,"ChipSet");if((this.K=kc(this.ba,"autoMount")||this.K)&&"string"==typeof this.K)try{this.K=eval("("+this.K+")")}catch(e){r("FDC auto-mount error: "+e.message+" ("+this.K+")"),this.K=null}xm(this);Pb(b,this,ym);Rb(b,this,zm);Am(this,"None","",!0);this.Y&&Am(this,"Local Disk","?");Am(this,"Remote Disk","??");Bm(this)||t(this)};
|
||||
l.Ub=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.ba.pg){this.C=[];for(a=0;a<this.B.length;a++)Cm(this,a,!0);Bm(this,!0)}}else if(!this.restore(a))return!1;if(a=this.la.listDrives){for(;a.firstChild;)a.removeChild(a.firstChild);a.value="";for(b=0;b<this.Z;b++){var c=document.createElement("option");c.value=b;c.text=String.fromCharCode(65+b)+":";a.appendChild(c)}0<this.Z&&(a.value="0",vm(this,0))}}return!0};l.Tb=function(a){return a?this.save():!0};l.reset=function(){xm(this)};
|
||||
l.Ub=function(a,b){if(!b){if(!a){if(this.reset(),this.ba.pg){this.C=[];for(a=0;a<this.B.length;a++)Cm(this,a,!0);Bm(this,!0)}}else if(!this.restore(a))return!1;if(a=this.la.listDrives){for(;a.firstChild;)a.removeChild(a.firstChild);a.value="";for(b=0;b<this.Z;b++){var c=document.createElement("option");c.value=b;c.text=String.fromCharCode(65+b)+":";a.appendChild(c)}0<this.Z&&(a.value="0",vm(this,0))}}return!0};l.Tb=function(a){return a?this.save():!0};l.reset=function(){xm(this)};
|
||||
l.save=function(){var a=new ae(this);a.set(0,Dm(this));return a.data()};l.restore=function(a){return xm(this,a[0])};
|
||||
function xm(a,b){var c=0,d,e=!0;b||(b=[0,0,128,Array(9),0,0,0,[]]);a.Qa=b[c++];c++;a.aa=b[c++];a.I=b[c++];a.G=b[c++];a.D=b[c++];a.P=b[c++];var f=b[c++];d=b[c++];null!=d&&(a.C=d);void 0===a.B&&(a.Z=4,a.S&&(a.Z=+Yi(a.S,Di,void 0)),a.B=Array(4));for(d=0;d<a.B.length;d++){var g=a.B[d];if(void 0===g){var g=a.B[d]={},h;if(a.S)a:{h=a.S;if(d<+Yi(h,Di,void 0)){if(!h.Y){h=360;break a}if(d<h.Y.length){h=h.Y[d];break a}}h=0}else h=0;switch(h){case 160:case 180:g.jb=1;default:g.ib=40;g.eb=9;break;case 720:g.ib=
|
||||
80;g.eb=9;break;case 1200:g.ib=80;g.eb=15;break;case 1440:g.ib=80,g.eb=18}}var k=a,m=d,q=f[d],y=0;h=!0;g.Qa=m;g.ne=g.pe=!1;q||(q=[192,!0,0,2,0]);"boolean"==typeof q[1]&&(q[1]=["Floppy Drive",g.ib||40,g.jb||q[3],g.eb||9,g.nb||512,q[1],g.Nf,g.Xe,g.Ye]);g.kb=q[y++];var w=q[y++];g.name=w[0];g.ib=w[1];g.jb=w[2];g.eb=w[3];g.nb=w[4];g.qe=w[5];(g.Nf=w[6])?(g.Xe=w[7],g.Ye=w[8]):(g.Nf=g.ib,g.Xe=g.jb,g.Ye=g.eb);g.Ya=q[y++];g.vd=q[y++];g.wb=q[y++];g.vd=100<=g.vd?g.vd-100:g.vd-g.wb;g.mb=q[y++];g.wd=q[y++];g.vb=
|
||||
|
|
@ -627,7 +627,7 @@ var Nm=["XTC","ATC","COMPAQ"],Om=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[
|
|||
8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}];l=Z.prototype;
|
||||
l.zb=function(a,b,c){var d=this;switch(b){case "saveHD0":case "saveHD1":return this.la[b]=c,c.onclick=function(a){return function(){var b=d.B&&d.B[a];b&&b.ua?(b=b.ua,b=Ca(rm(b),"octet-stream",!0,b.th.replace(".json",".img")),r(b)):d.Ba("Hard drive "+a+" is not available.")}}(+b.slice(-1)),!0}return!1};
|
||||
l.pc=function(a,b,c,d){this.ia=b;this.A=c;this.Ia=d;this.ba=a;if(d=kc(a,"drives"))this.ga=d;else if(this.qa)try{this.ga=eval("("+this.qa+")")}catch(e){r("HDC drive configuration error: "+e.message+" ("+this.qa+")")}this.S=jb(a,"ChipSet");this.H=0;this.ra=3;Pb(b,this,this.W?Pm:Qm);Rb(b,this,this.W?Rm:Sm);this.W&&(this.H++,this.S&&5180==this.S.ca&&this.H++,this.ra=2,b.S[496]=2,b.P[496]=2);Xd(c,19,this.Bl.bind(this));Xd(c,64,this.Cl.bind(this));this.reset();Tm(this)||t(this)};
|
||||
l.Ub=function(a,b){if(!b)if(!a||!this.restore)Um(this),this.ba.pg&&Tm(this,!0);else if(!this.restore(a))return!1;return!0};l.Tb=function(a){return a?this.save():!0};l.ue=function(){return this.ba?this.ba.ue():""};l.zd=function(){return this.ba?this.ba.zd():""};l.reset=function(){Um(this,null,!0)};l.save=function(){var a=new ae(this);a.set(0,Vm(this));return a.data()};l.restore=function(a){return Um(this,a[0])};
|
||||
l.Ub=function(a,b){if(!b)if(!a)Um(this),this.ba.pg&&Tm(this,!0);else if(!this.restore(a))return!1;return!0};l.Tb=function(a){return a?this.save():!0};l.ue=function(){return this.ba?this.ba.ue():""};l.zd=function(){return this.ba?this.ba.zd():""};l.reset=function(){Um(this,null,!0)};l.save=function(){var a=new ae(this);a.set(0,Vm(this));return a.data()};l.restore=function(a){return Um(this,a[0])};
|
||||
function Um(a,b,c){var d=0,e=!0;a.Qa=-1;if(a.W){if(b||(b=[0,0,0,0,0,0,0,64,0,[0,-1]]),a.K=b[d++],a.za=b[d++],a.L=b[d++],a.oa=b[d++],a.ma=b[d++],a.ka=b[d++],a.Z=b[d++],a.aa=b[d++],a.pa=b[d++],a.P=b[d++],"object"==typeof a.P){var f=a.P;a.P=f[0];a.Qa=f[1]}}else b||(b=[0,0,Array(14),0,0]),a.da=b[d++],a.aa=b[d++],a.I=b[d++],a.G=b[d++],a.D=b[d++],a.xa=b[d++],a.va=b[d++],a.sa=b[d++],f=b[d++],void 0!==f?a.Y=f:void 0===a.Y&&(a.Y=-1);void 0===a.B&&(a.B=Array(a.ga.length));b=b[d];void 0===b&&(b=[]);for(d=0;d<
|
||||
a.B.length;d++){void 0===a.B[d]&&(a.B[d]={});var f=a.B[d],g=a,h=d,k=f,m=a.ga[d],q=b[d],y=c,w=0,z=!0;q||(q=[0,0,!1,Array(8)]);k.Qa=h;k.errorCode=q[w++];k.Kj=q[w++];k.qe=q[w++];k.fe=q[w++];k.ge=q[w++];k.Ya=q[w++];k.jb=q[w++];k.Id=q[w++];k.mb=q[w++];k.wd=q[w++];k.vb=q[w++];k.yf=g.W?0:1;k.name=m.name;void 0===k.name&&(k.name="Hard Drive");k.path=m.path;k.mode=m.mode||(k.path?"preload":"local");"demandro"!=k.mode&&"demandrw"!=k.mode||g.zd()||(k.mode="local");k.type=m.type;if(void 0===k.type||void 0===
|
||||
Om[g.H][k.type])k.type=g.ra;m=Om[g.H][k.type];k.eb=m[2]||17;k.nb=m[3]||512;if(y&&g.S){var m=g.S,B=k.type;if(m.B){var y=null,Q=m.B[18];15<B&&(y=B,B=15);h?(Q=Q&240|B,B=26):(Q=Q&15|B<<4,B=25);var V=m;V.B&&(V.B[18]=Q,aj(V));null!=y&&m.B&&(m.B[B]=y,aj(m))}}void 0===k.ua&&(k.ua=null,g.Ba("Type "+k.type+' "'+k.name+'" is fixed disk '+h,!0));Wm(g,k);k.Ua=q[w++];k.Wa=null;k.ua&&(g=q[w],void 0!==g&&0>k.ua.restore(g)&&(z=!1),z&&void 0!==k.Ua&&(k.Wa=k.ua.seek(k.Id,k.Ya,k.mb+k.yf)));z||(e=!1);null!=a.da&&1>=d&&
|
||||
|
|
|
|||
Loading…
Reference in a new issue