Floppy disk sets are now sorted by name (but machines can also override or disable sorting by using the new FDC "sortBy" property)
This commit is contained in:
parent
84d3f0da00
commit
07d4771a14
27 changed files with 6565 additions and 245 deletions
|
|
@ -592,17 +592,17 @@ m.save=function(){var a=0,b=[];b[a++]=[this.W,this.aa,this.Bb,this.ub,this.lb,th
|
|||
m.restore=function(a){var b=0,c="unsupported restore format";if(a&&0<a.length){var d=0,e=a[d++];e&&2<=e.length&&(!this.A.length&&6<=e.length?Jo(this,"local",e[2],e[3],e[4],e[5]):null!=e[1]&&null!=this.aa&&e[1]!=this.aa&&(c="original checksum ("+e[1]+") differs from current checksum ("+this.aa+")",b=-2));for(this.A.length||(b=-1);d<a.length&&0<=b;){var f=0,g=a[d++],h=g[f++],k=g[f++],l=g[f++];if(h>=this.A.length||k>=this.A[h].length||l>=this.A[h][k].length){c="sector (CHS="+h+":"+k+":"+l+") out of range ("+
|
||||
b+" changes applied)";b=-1;break}if(this.ef){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][l]){for(k=h.data.length;k<e;)h.data[k++]=h.pattern;k=0;h.wd=e;for(h.Zc=f.length;e<g;)h.data[e++]=f[k++];b++}}}0>b?-2!=b&&this.controller.Na("Unable to restore disk '"+this.ea+": "+c):fp(this);return b};
|
||||
m.toJSON=function(){var a;a=0;for(var b;b=Yo(this,a++);)qp(b);a=JSON.stringify(this.A,function(a,b){return"file"==a?void 0:b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")};
|
||||
function qp(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}function rp(a){Ua.call(this,"FDC",a,rp,524288);this.dmaRead=this.wk;this.dmaWrite=this.xk;this.dmaFormat=this.Lk;this.U=a.autoMount||null;this.B=[];this.ga=!Ga("Mobi")&&window&&"FileReader"in window}db(rp);aa={};
|
||||
function qp(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}function rp(a){Ua.call(this,"FDC",a,rp,524288);this.dmaRead=this.wk;this.dmaWrite=this.xk;this.dmaFormat=this.Lk;this.U=a.autoMount||null;this.ga=a.sortBy||"name";"none"==this.ga&&(this.ga=null);this.B=[];this.ja=!Ga("Mobi")&&window&&"FileReader"in window}db(rp);aa={};
|
||||
var sp={3:{Vd:3,ie:0,name:aa.Zn},4:{Vd:2,ie:1,name:aa.Xn},5:{Vd:9,ie:7,name:aa.io},6:{Vd:9,ie:7,name:aa.Sn},7:{Vd:2,ie:0,name:aa.Un},8:{Vd:1,ie:2,name:aa.Yn},10:{Vd:2,ie:7,name:aa.Tn},13:{Vd:6,ie:7,name:aa.En},15:{Vd:3,ie:0,name:aa.Wn}};m=rp.prototype;
|
||||
m.Qb=function(a,b,c){var d=this;switch(b){case "listDisks":return this.qa[b]=c,c.onchange=function(){var a=d.qa.descDisk,b=c.options[c.selectedIndex];if(a&&b){var g={};if(b=b.getAttribute("data-value"))try{g=eval("("+b+")")}catch(h){w("FDC option error: "+h.message)}b=g.desc;void 0===b&&(b="");g=g.href;void 0!==g&&(b='<a href="'+g+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.qa[b]=c,c.onchange=function(){var a=ca(c.value,10);null!=a&&tp(d,a)},!0;
|
||||
case "loadDrive":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&up(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.ga){c.parentNode.removeChild(c);break}this.qa[b]=c;c.onclick=function(){var a=d.qa.listDrives;a&&a.options&&d.A&&(a=ca(a.value,10),(a=d.A[a])?(a=a.za)?(a=Ia(pp(a),"octet-stream",!0,a.Ng.replace(".json",".img")),w(a)):d.Na("No diskette loaded in drive."):d.Na("No diskette drive selected."))};return!0;case "mountDrive":if(!this.ga){c.parentNode.removeChild(c);
|
||||
break}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;up(d,fa(b,!0),b,a)}return!1};return!0}return!1};
|
||||
m.Ic=function(a,b,c,d){this.ea=b;this.F=c;this.ha=d;this.V=a;this.N=Eb(a,"ChipSet");if((this.U=Nc(this.V,"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}vp(this);hc(b,this,wp);lc(b,this,xp);this.ga&&yp(this,"Local Disk","?");yp(this,"Remote Disk","??");zp(this)||rb(this)};
|
||||
m.ic=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.V.dh){this.B=[];for(var c=0;c<this.A.length;c++)Ap(this,c,!0);zp(this,!0)}}else if(!this.restore(a))return!1;if(c=this.qa.listDrives){for(;c.firstChild;)c.removeChild(c.firstChild);c.textContent="";for(var d=0;d<this.ja;d++){var e=document.createElement("option");e.value=d;e.textContent=String.fromCharCode(65+d)+":";c.appendChild(e)}0<this.ja&&(c.value="0",tp(this,0))}}return!0};m.hc=function(a){return a?this.save():!0};
|
||||
m.Qb=function(a,b,c){var d=this;switch(b){case "listDisks":this.qa[b]=c;if(this.ga){b=[];for(a=0;a<c.options.length;a++)b[a]=c.options[a];b.sort(function(a,b){return"path"==d.ga?a.value>b.value?1:a.value<b.value?-1:0:a.textContent>b.textContent?1:a.textContent<b.textContent?-1:0});for(a=0;a<c.options.length;a++)c.options[a]=b[a]}c.onchange=function(){var a=d.qa.descDisk,b=c.options[c.selectedIndex];if(a&&b){var g={};if(b=b.getAttribute("data-value"))try{g=eval("("+b+")")}catch(h){w("FDC option error: "+
|
||||
h.message)}b=g.desc;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=ca(c.value,10);null!=a&&tp(d,a)},!0;case "loadDrive":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&up(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDrive":if(!this.ja){c.parentNode.removeChild(c);break}this.qa[b]=c;c.onclick=function(){var a=d.qa.listDrives;
|
||||
a&&a.options&&d.A&&(a=ca(a.value,10),(a=d.A[a])?(a=a.za)?(a=Ia(pp(a),"octet-stream",!0,a.Ng.replace(".json",".img")),w(a)):d.Na("No diskette loaded in drive."):d.Na("No diskette drive selected."))};return!0;case "mountDrive":if(!this.ja){c.parentNode.removeChild(c);break}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;up(d,fa(b,!0),b,a)}return!1};return!0}return!1};
|
||||
m.Ic=function(a,b,c,d){this.ea=b;this.F=c;this.ha=d;this.V=a;this.N=Eb(a,"ChipSet");if((this.U=Nc(this.V,"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}vp(this);hc(b,this,wp);lc(b,this,xp);this.ja&&yp(this,"Local Disk","?");yp(this,"Remote Disk","??");zp(this)||rb(this)};
|
||||
m.ic=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.V.dh){this.B=[];for(var c=0;c<this.A.length;c++)Ap(this,c,!0);zp(this,!0)}}else if(!this.restore(a))return!1;if(c=this.qa.listDrives){for(;c.firstChild;)c.removeChild(c.firstChild);c.textContent="";for(var d=0;d<this.ka;d++){var e=document.createElement("option");e.value=d;e.textContent=String.fromCharCode(65+d)+":";c.appendChild(e)}0<this.ka&&(c.value="0",tp(this,0))}}return!0};m.hc=function(a){return a?this.save():!0};
|
||||
m.reset=function(){vp(this)};
|
||||
m.save=function(){var a=new hf(this),b=0,c=[];c[b++]=this.hb;c[b++]=0;c[b++]=this.ma;c[b++]=this.W;c[b++]=this.L;c[b++]=this.C;c[b++]=this.aa;for(var d=b++,e=0,f=[],g=0;g<this.A.length;g++){var h=e++,k=this.A[g],l=0,n=[];n[l++]=k.Cb;n[l++]=[k.name,k.Bb,k.ub,k.lb,k.Va,k.bf,k.zg,k.Nf,k.Of];n[l++]=k.kb;n[l++]=k.ge+100;n[l++]=k.Rb;n[l++]=k.xb;n[l++]=k.he;n[l++]=k.Hb;n[l++]=k.eb;n[l++]=k.$e;n[l++]=k.kk;n[l]=k.Le;f[h]=n}c[d]=f;d=b++;for(e=0;e<this.A.length;e++)f=this.A[e],f.za&&Bp(this,f.Le,f.za);c[d]=
|
||||
this.B;c[b++]=this.X;c[b]=this.kc;N(a,0,c);return a.data()};m.restore=function(a){return vp(this,a[0])};
|
||||
function vp(a,b){var c=0,d,e=!0;void 0===b&&(b=[0,0,128,Array(9),0,0,0,[]]);a.hb=b[c++];c++;a.ma=b[c++];a.W=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.ja=4,a.N&&(a.ja=+Uk(a.N,vk,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<+Uk(h,vk,void 0)){if(!h.ja){h=360;break a}if(d<h.ja.length){h=h.ja[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;
|
||||
function vp(a,b){var c=0,d,e=!0;void 0===b&&(b=[0,0,128,Array(9),0,0,0,[]]);a.hb=b[c++];c++;a.ma=b[c++];a.W=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=+Uk(a.N,vk,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<+Uk(h,vk,void 0)){if(!h.ja){h=360;break a}if(d<h.ja.length){h=h.ja[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,l=d,n=f[d],q=0;h=!0;g.hb=l;g.bd=g.$e=!1;void 0===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.zg,g.Nf,g.Of]);g.Cb=n[q++];var p=n[q++];g.name=p[0];g.Bb=p[1];g.ub=p[2];g.lb=p[3];g.Va=p[4];g.bf=p[5];(g.zg=p[6])?(g.Nf=p[7],g.Of=p[8]):(g.zg=g.Bb,g.Nf=g.ub,g.Of=g.lb);g.kb=n[q++];g.ge=n[q++];g.Rb=n[q++];g.ge=100<=g.ge?g.ge-100:g.ge-g.Rb;g.xb=
|
||||
n[q++];g.he=n[q++];g.Hb=n[q++];g.eb=n[q++];g.pb=null;g.za||(g.Le="");p=n[q++];102==p&&(p=!1);if("boolean"==typeof p){var z=p,p=n[q++],n=n[q];z?(q=p,p=k.A[l],Ap(k,l,!0,!0),p.$e=!0,l=new Ho(k,p,"preload"),k.Hi(p,l,q,n,!0)):Cp(k,l,p,n,!0)?g.za&&n&&Dp(k,p,n,g.za):rb(k,!1)}else void 0!==p&&g.za&&0>g.za.restore(p)&&(h=!1);h&&g.za&&void 0!==g.eb&&(g.pb=g.za.seek(g.Rb,g.kb,g.xb));h||(e=!1)}a.X=b[c++]||0;a.kc=b[c]||0;return e}m.Gi=function(a){var b;a=this.A[a];if(void 0!==a){b={};for(var c in a)b[c]=a[c]}return b};
|
||||
m.lk=function(a,b,c){if(a.za){var d=a.za.info(),e=d[2],f=d[1]*e;if(b+c<=d[0]*f)return a.Rb=Math.floor(b/f),b%=f,a.kb=Math.floor(b/e),a.xb=b%e+1,a.Hb=c*d[3],a.Cb=0,!0}return!1};
|
||||
|
|
|
|||
Loading…
Reference in a new issue