Starting on v1.31.1

This commit is contained in:
Jeff Parsons 2016-12-27 16:32:59 -08:00 committed by Jeff Parsons
commit 28f47a3424
284 changed files with 14028 additions and 259 deletions

View file

@ -651,23 +651,23 @@ function dn(a,b){if(a.errorCode)return-1;do{if(a.Wa&&a.ua.write(a.Wa,a.Ua++,b))b
var Tm={800:Z.prototype.yl,801:Z.prototype.zl,802:Z.prototype.xl},Sm={496:Z.prototype.Xj,497:Z.prototype.Fk,498:Z.prototype.Hk,499:Z.prototype.Ik,500:Z.prototype.Dk,501:Z.prototype.Ck,502:Z.prototype.Ek,503:Z.prototype.Jk},Vm={800:Z.prototype.Km,801:Z.prototype.Nm,802:Z.prototype.Mm,803:Z.prototype.Lm,807:Z.prototype.nh,811:Z.prototype.nh,815:Z.prototype.nh},Um={496:Z.prototype.Vl,497:Z.prototype.$l,498:Z.prototype.Yl,499:Z.prototype.Zl,500:Z.prototype.Ul,501:Z.prototype.Tl,502:Z.prototype.Wl,503:Z.prototype.Sl,
1014:Z.prototype.Xl};Ga(function(){for(var a=bb(document,"pcx86","hdc"),b=0;b<a.length;b++){var c=a[b],d=Za(c),d=new Z(d);ab(d,c)}});
function qn(a,b,c){Ka.call(this,"Computer",a,qn);this.ea.Vb=!1;rn(this,b);this.ba=nc(this,"autoPower",a);this.G=0;this.da=a.busWidth||a.buswidth;this.B=sn;this.R=null;this.K=this.Z=!1;this.ga=nc(this,"url")||"";this.ma=(Math.random()+.1).toString(36).substr(2,12);this.C=tn(this);if(this.A=Ya("CPU",this.id)){this.Ia=Ya("Debugger",this.id);this.I=[];for(b=null;b=mb(this,"Video",b);)this.I.push(b);this.ia=new ub({id:this.Fe+".bus",busWidth:this.da},this.A,this.Ia);var d,e=Wa(this.id);if((this.D=Ya("Panel",
this.id))&&this.D.ng)for(b=0;b<e.length;b++)d=e[b],d.Ba=this.D.Ba,d.rc=this.D.rc,d.ng=this.D.ng;this.rc("PCx86 v1.31.0\nCopyright \u00a9 2012-2016 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.pc&&d.pc(this,this.ia,this.A,this.Ia);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.S=d:this.B=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.W=a,f||(this.K=!0,this.B=sn),this.B&&(this.P=new de(this,"1.31.0"),
this.id))&&this.D.ng)for(b=0;b<e.length;b++)d=e[b],d.Ba=this.D.Ba,d.rc=this.D.rc,d.ng=this.D.ng;this.rc("PCx86 v1.31.1\nCopyright \u00a9 2012-2016 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.pc&&d.pc(this,this.ia,this.A,this.Ia);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.S=d:this.B=parseInt(d,10));var f;if(a=nc(this,"state")||(f=!0,a.state))b=this.W=a,f||(this.K=!0,this.B=sn),this.B&&(this.P=new de(this,"1.31.1"),
this.P.load()?b=null:delete this.P);!b&&this.B&&(b=un(this))&&(this.K=!0);if(b){var g=this;sa(b,null,!0,function(a,b,c){c?(g.S=null,g.K=!1,g.Ba("Unable to load machine state from server (error "+c+(b?": "+la(b):"")+")")):(g.R=b,g.Z=!0);t(g)})}else t(this);this.la.power||(this.ba=!0);!c&&this.ba&&vn(this,this.gf)}else r("Unable to find CPU component")}Ta(qn);var sn=0;l=qn.prototype;l.ue=function(){return this.ma};
function rn(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.L=b}function nc(a,b,c){var d=b.toLowerCase(),d=Na[b]||Na[d];void 0===d&&a.L&&(d=a.L[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}l.zd=function(){return this.C||""};function vn(a,b,c){for(var d=Wa(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!db(f)){db(f,function(){vn(a,b,c)});return}}b.call(a,c)}
function wn(a,b){var c=new de(a,"1.31.0","validate");if(c.load()&&xn(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Ba("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
l.gf=function(a){void 0===a&&(a=this.B||(this.R?1:sn));if(!this.G){this.G++;var b=!1,c=!1;this.Y=!1;var d=this.P||new de(this,"1.31.0");if(-1==a)b=!0;else if(a>sn){if(d.load(this.R)){this.H=new de(this,"1.31.0","failsafe");this.H.load()&&(yn(this,d),a=2,zn(this.H));this.H.set("timestamp",oa());An(this.H);var e=this.B&&!this.K;if(1==a||ua("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=xn(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
function wn(a,b){var c=new de(a,"1.31.1","validate");if(c.load()&&xn(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.Ba("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
l.gf=function(a){void 0===a&&(a=this.B||(this.R?1:sn));if(!this.G){this.G++;var b=!1,c=!1;this.Y=!1;var d=this.P||new de(this,"1.31.1");if(-1==a)b=!0;else if(a>sn){if(d.load(this.R)){this.H=new de(this,"1.31.1","failsafe");this.H.load()&&(yn(this,d),a=2,zn(this.H));this.H.set("timestamp",oa());An(this.H);var e=this.B&&!this.K;if(1==a||ua("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=xn(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==
f&&"no machine state"!=g?(this.Ba("Error: "+g),"unable to verify user"==g&&(ya("user",""),this.C=null)):this.rc(f+": "+g),zn(d),d.load()?(c=xn(d),e=!0):c=!1))}e&&wn(this,c?d:null)}else 2==a&&d.clear()}else wn(this);delete this.R;delete this.P}e=Wa(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.A&&(c=Bn(this,g,d,b,c));b=[d,a,c];-1!=a?vn(this,this.pi,b):this.pi(b)}};
function Bn(a,b,c,d,e){if(!b.ea.Vb){b.ea.Vb=!0;if(b.Ub){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ub(f,d)&&f&&(r("Unable to restore state for "+b.type),a.W&&!a.Z?(c.clear(),a.B=sn,window&&window.location.reload()):a.Y=!0,b.Ub(null),e=!1)}if(!d&&b.Yh)for(a=b.Yh.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.pi=function(a){var b=a[0],c=0>a[1];a=a[2];this.ka=!0;this.ea.Vb=!0;var d=this.la.power;d&&(d.textContent="Shutdown");this.A&&(Bn(this,this.A,b,c,a),this.A.Le());this.Y&&(yn(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.G=0};
function yn(a,b){if(ua("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.zd();b=b.toString();var d={app:"PCx86",ver:"1.31.0"};d.url=a.ga;d.user=c;d.type="bug";d.data=b;sa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Cn(a,b,c){var d,e="none";if(a.G)return null;a.G--;var f=new de(a,"1.31.0"),g=new de(a,"1.31.0","validate"),h=oa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.31.0");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.A&&a.A.Tb&&(c&&rc(a.A),d=a.A.Tb(b,c),"object"===typeof d&&f.set(a.A.id,d),c&&(a.A.ea.Vb=!1,!1===d&&(e=null)));for(var h=Wa(a.id),k=0;k<h.length;k++){var m=h[k];m.ea.Vb&&(m.Tb&&(d=m.Tb(b,c),"object"===typeof d&&
function yn(a,b){if(ua("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.zd();b=b.toString();var d={app:"PCx86",ver:"1.31.1"};d.url=a.ga;d.user=c;d.type="bug";d.data=b;sa("http://www.pcjs.org/api/v1/report",d,!0)}}
function Cn(a,b,c){var d,e="none";if(a.G)return null;a.G--;var f=new de(a,"1.31.1"),g=new de(a,"1.31.1","validate"),h=oa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.31.1");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.A&&a.A.Tb&&(c&&rc(a.A),d=a.A.Tb(b,c),"object"===typeof d&&f.set(a.A.id,d),c&&(a.A.ea.Vb=!1,!1===d&&(e=null)));for(var h=Wa(a.id),k=0;k<h.length;k++){var m=h[k];m.ea.Vb&&(m.Tb&&(d=m.Tb(b,c),"object"===typeof d&&
f.set(m.id,d)),c&&(m.ea.Vb=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.C&&Dn(a,a.C,f.toString()),An(g)&&An(f)||(e=null,d=h=!0)):a.B&&(d=!0,h=3==a.B),d&&f.clear(h)):e=f.toString());c&&(a.ea.Vb=!1,b=a.la.power)&&(b.textContent="Power");a.G=0;return e}l.reset=function(){this.ia&&this.ia.reset&&this.ia.reset();for(var a=Wa(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ia&&c.reset&&c.reset()}};
l.start=function(a,b){for(var c=Wa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};l.stop=function(a,b){for(var c=Wa(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
l.zb=function(a,b,c){var d=this;switch(b){case "power":return this.la[b]=c,c.onclick=function(){d.G||(d.ea.Vb?Cn(d,!1,!0):vn(d,d.gf))},!0;case "reset":return this.la[b]=c,c.onclick=function(){if(d.ea.Vb&&!d.G)if(d.B&&!d.S){var a=ua("Click OK to save changes to this PCx86 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Cn(d,a,!0);!a&&d.W?window&&window.location.reload():(a||(d.pg=!0),d.gf(sn),d.pg=!1)}else d.reset(),d.A&&d.A.Le()},!0;case "save":if(ia(ta(),"pcjs.org"))c.parentNode.removeChild(c);
else return this.la[b]=c,c.onclick=function(){var a=tn(d,!0);if(a){var b=!!(d.B&&!d.S||d.W),c=Cn(d,b);b?Dn(d,a,c):d.Ba("Resume disabled, machine state not saved")}},!0}return!1};
function tn(a,b){var c=a.C;c||((c=xa("user"),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=En(a,c))||a.Ba("The user ID is invalid.")):b&&a.Ba("Browser local storage is not available"));return c}
function En(a,b){a.C=null;b=sa(ta()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya("user",b.data),a.C=b.data)}catch(d){r(d.message+" ("+c+")")}return a.C}function un(a){var b=null;a.C&&(b=ta()+"/api/v1/user?req=load&user="+a.C+"&state="+Fn(a,"1.31.0"));return b}
function Dn(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Fn(a,"1.31.0");d.data=c;b=sa(ta()+"/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.Ba("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.Ba(c),ya("user",""),a.C=null)}}
function En(a,b){a.C=null;b=sa(ta()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(ya("user",b.data),a.C=b.data)}catch(d){r(d.message+" ("+c+")")}return a.C}function un(a){var b=null;a.C&&(b=ta()+"/api/v1/user?req=load&user="+a.C+"&state="+Fn(a,"1.31.1"));return b}
function Dn(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Fn(a,"1.31.1");d.data=c;b=sa(ta()+"/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.Ba("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.Ba(c),ya("user",""),a.C=null)}}
function mb(a,b,c){a=Wa(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function xc(a,b){if(a.I.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.I[0];a.G&&a.G.focus();!b&&window&&window.scrollTo(c,d)}}l.Rc=function(a){this.A&&this.A.Rc(a);this.D&&this.D.Rc(a)};
function Ac(a,b){for(var c=0;c<a.I.length;c++)nl(a.I[c],b);if(a.D&&(a=a.D,a.sa)){rb(a,18,a.S,a.ra);if(a.Ga){b=a.ia;var c=a.B,d,e;null==d&&(d=0);null==e&&(e=b.L-d|0);c||(c={mg:0,gd:0,fg:[]});var f=d>>>b.da;d=d+e-1>>>b.da;c.mg=0;for(c.gd=0;f<=d;)e=b.R[f],c.mg+=e.size,e.size&&(c.fg.push(qa(qb,f,0,0,e.type)),c.gd++),f++;a.B=c;a.ma=a.B.gd*a.ia.xb/691200;d=0;a.B.ii=0;a.B.Ke||(a.B.Ke=[]);e=-1;b=0;for(var g=-1,c=0;c<a.B.gd;c++){var h=a.B.fg[c],f=ra(qb.type,h),h=ra(qb.Cj,h);if(f!=e||h!=g+1)(g=c-b)&&(d+=tb(a,
b,g,e)),e=f,b=c;g=h}d+=tb(a,b,c-b,e);e=a.B.hk!=d;a.B.hk=d;if(e){e=new kb(0,0,a.S.width,a.S.height);a.B.ee=[];b=a.B.gd;for(d=0;d<a.B.ii;d++)c=a.B.Ke[d].gd,a.B.ee.push(lb(e,c,b,!d)),b-=c;for(d=0;d<a.B.ee.length;d++)e=a.B.Ke[d],b=c=a.B.ee[d],f=a.ra,(g=ac[e.type])||(g=new jb),f.strokeStyle="black",f.strokeRect(b.x,b.y,b.Fc,b.A),f.fillStyle="string"==typeof g?g:g.toString(),f.fillRect(b.x,b.y,b.Fc,b.A),b=a,f=c,b.P=b.ga,b.L=b.ka,c=f.x+(f.Fc>>1),g=f.y+(f.A>>1),h=f.A,f.Fc<f.A&&(h=f.Fc,b.da=!0,b.G.save(),
@ -682,9 +682,9 @@ a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pcx86$2")
function Jn(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");sa(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],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[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);Jn(a,b,c)}})}else c(a,null)}
function Kn(a,b,c,d){function e(a){if(void 0===h){var b=g&&bb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ka(a))}function f(a){e("Error: "+a);k&&(--Gn||Ia(!0));k=!1}var g,h,k=!0;Gn++;Ua[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=m:y.appendChild(document.createTextNode(m));q.appendChild(y)}c||
(c="/versions/pcx86/1.31.0/components.xsl");m=function(d,h){h?Hn(c,null,null,!1,e,function(d,k){k?(Va(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Gn||Ia(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Gn||Ia(!0)):f("invalid machine element: "+
(c="/versions/pcx86/1.31.1/components.xsl");m=function(d,h){h?Hn(c,null,null,!1,e,function(d,k){k?(Va(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Gn||Ia(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Gn||Ia(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Hn(b,a,d,!0,e,m):In(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(w){f(w.message)}return k}function Ln(a,b,c,d){Ia(!1);return Kn(a,b,c,d)}window.embedPC=Ln;window.embedPCx86=Ln;window.enableEvents=Ia;window.sendEvent=Ja;
function Mn(a,b,c,d){if(!c&&b){d.push(b);a=Ua[d[0]];b=null;for(var e in a)if(ia(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?sa(b,null,!0,function(a,b){Nn(b,d)}):Nn(null,d)}else r("Error ("+c+") requesting "+a)}
function Nn(a,b){var c,d,e,f=b[0],g=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=Ua[f],k={},m;for(m in h){var q=h[m],y=ha(m);if("xml"==y){for(y=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var w=d[2];w&&(h[w]||(q=q.replace(d[0],"")))}d=m=ga(m)}else"xsl"==y&&(e=m=ga(m));k[m]=q}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),a=Aa(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('<div id="'+f+'"></div>\n')+"...\n",a=a+('<script type="text/javascript" src="'+g+'">\x3c/script>\n')+('<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n')+"The machine should appear where the <div> is located.",r(a)):r("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=Cn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcx86/1.31.0/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Gj:g}))return!0;sa(b,null,!0,function(c,d,e){Mn(c,d,e,[a,ga(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=Ya("Computer",a),e=Ya("Debugger",a);if(d){var f=Cn(d,!0),g=d.L?JSON.stringify(d.L):null;b||(b="/versions/pcx86/1.31.1/pcx86"+(e?"-dbg":"")+".js");if(c&&c({state:f,Gj:g}))return!0;sa(b,null,!0,function(c,d,e){Mn(c,d,e,[a,ga(b,!0),g,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();