|
|
|
|
@ -1189,7 +1189,7 @@ var sd=Np(a,tg,qi);if(void 0!==sd)switch(sd=sd*mn|0,qi){case "x":a.Z.zf(sd,0);br
|
|
|
|
|
Ta);break a}}td&&("on"==g[2]?(a.tc|=td,wc=!0):"off"==g[2]&&(a.tc&=~td,wc=!1))}var vr=0,Vc="";for(vc in Fp)if(!Ta||Ta==vc){var wr=!!(a.tc&Fp[vc]);if(null===wc||wc==wr)Vc&&(Vc+=","),++vr%10||(Vc+="\n\t"),"key"==vc&&(vc="keys"),Vc+=vc}void 0===Ta&&a.U("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.U((null!==wc?wc?"messages on: ":"messages off: ":"message categories:\n\t")+(Vc||"none"));tp(a)}break;case "o":var ri=g[1],xr=g[2];if(ri&&"?"!=ri){var si=Np(a,ri,"port #"),ti=Np(a,
|
|
|
|
|
xr);void 0!==si&&void 0!==ti&&(nc(a.ja,si,1,ti),a.U(ia(si)+": "+ha(ti)))}else a.U("output commands:"),a.U("\to [p] [b]\twrite byte [b] to port [p]"),a.U("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){Tq(a,b.substr(5));break}var nn="pr"==g[0]?1:0,Zd=1+nn;if(a.O)a.U("step in progress");else{var ug,on=!1,mb=rp(a,v(a.M),a.M.Ca.fa);do switch(ug=!1,a.Wa(mb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:cq(a,mb,1);ug=!0;break;case 204:case 206:a.O=
|
|
|
|
|
Zd;cq(a,mb,1);break;case 205:case 224:case 225:case 226:a.O=Zd;cq(a,mb,mb.Ub?4:2);break;case 232:a.O=Zd;cq(a,mb,mb.Ub?5:3);break;case 154:a.O=Zd;cq(a,mb,mb.Ub?7:5);break;case 255:var pn=a.vb(mb)&14591;if(4351==pn||6399==pn)a.O=Zd,Aq(a,mb);break;case 243:case 242:cq(a,mb,1);on=ug=!0;break;case 108:case 109:case 110:case 111:case 164:case 165:case 166:case 167:case 170:case 171:case 172:case 173:case 174:case 175:on&&(a.O=Zd,cq(a,mb,1))}while(ug);a.O?(a.Qd(a.A,mb,!0),a.Ge()||(a.M.dd(),a.O=0)):Vq(a,
|
|
|
|
|
nn?"tr":"t")}break;case "r":if("reset"==b){a.ia&&a.ia.reset();break}sq(a,g);break;case "t":Vq(a,g[0],g[1]);break;case "u":tq(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Qq(a,b.substr(3))||(d=!1);break}a.U("PCjs version 1.20.7 ("+a.M.na+",RELEASE,NOPREFETCH"+(wb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var Te;void 0!==g[3]&&(Te=+g[3]);switch(g[2]){case "int":a.M.ba.bf=Te;break;case "start":a.M.ba.Bf=Te;break;case "stop":a.M.ba.df=Te;
|
|
|
|
|
nn?"tr":"t")}break;case "r":if("reset"==b){a.ia&&a.ia.reset();break}sq(a,g);break;case "t":Vq(a,g[0],g[1]);break;case "u":tq(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Qq(a,b.substr(3))||(d=!1);break}a.U("PCjs version 1.20.8 ("+a.M.na+",RELEASE,NOPREFETCH"+(wb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var Te;void 0!==g[3]&&(Te=+g[3]);switch(g[2]){case "int":a.M.ba.bf=Te;break;case "start":a.M.ba.Bf=Te;break;case "stop":a.M.ba.df=Te;
|
|
|
|
|
break;default:a.U("unknown cs option");break a}void 0!==Te&&Pc(a.M);a.U("checksums "+(a.M.ra.Se?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(Zc(a.M,+g[2])||a.U("warning: using 1x multiplier, previous target not reached"));a.U("target speed: "+(a.M.ba.Ae.toFixed(2)+"Mhz")+" ("+a.M.ba.Wd+"x)");break;default:a.U("unknown option: "+g[1])}else a.U("execution options:"),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 "?":if(g[1]){Tq(a,b.substr(1));break}var Ue="commands:",ui;for(ui in yp)Ue+="\n"+oa(ui,7)+yp[ui];Hf(a)||(Ue+="\nnote: frequency/history disabled if no exec breakpoints");a.U(Ue);break;default:a.U("unknown command: "+b),d=!1}}}catch(qn){a.U("debugger error: "+(qn.stack||qn.message)),d=!1}return d}function vp(a,b,c){b=lq(a,b,c);for(var d in b)if(!zq(a,b[d]))return!1;return!0}
|
|
|
|
|
Ra(function(){for(var a=lb(window.document,"pcjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=jb(c),d=new qp(d);kb(d,c)}});function Xe(a,b,c){this.id=a.id;this.key=Xq(a,b,c);this.ma=a.ma;Yq(this,a.kk)}function Xq(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}
|
|
|
|
|
@ -1197,14 +1197,14 @@ Xe.prototype={constructor:Xe,value:function(){return this[this.id]},data:functio
|
|
|
|
|
this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};function Yq(a,b){a[a.id]={};b&&Ye(a,"parms",b);a.A=!1}function Zq(a){var b=!0;if(Fa()){var c=JSON.stringify(a[a.id]);Ha(a.key,c)||(Ba("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function $q(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){Ba(c.message||c),b=!1}return b}function ar(a,b){return a[a.id][b]||null}function Ye(a,b,c){try{a[a.id][b]=c}catch(d){}}
|
|
|
|
|
function br(a,b,c){Wa.call(this,"Computer",a,br,67108864);this.ra.ec=!1;this.Z=a.autoPower;this.C=0;this.la=a.busWidth||a.buswidth;this.Lc=cr;this.P=null;this.O=this.da=!1;this.ka=b;this.qa=Do(this,"url")||"";this.ta=(Math.random()+.1).toString(36).substr(2,12);this.A=dr(this);if(this.M=ib("CPU",this.id)){this.ma=ib("Debugger",this.id);this.ja=new Mb({id:this.ni+".bus",buswidth:this.la},this.M,this.ma);var d,e=gb(this.id);if((this.Zd=ib("Panel",this.id))&&this.Zd.vf)for(b=0;b<e.length;b++)d=e[b],
|
|
|
|
|
d.Va=this.Zd.Va,d.U=this.Zd.U,d.vf=this.Zd.vf;for(b=0;b<e.length;b++)d=e[b],d.Jc&&d.Jc(this,this.ja,this.M,this.ma);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.zg=d:this.Lc=parseInt(d,10));var f;if(a=$a&&$a.state||Do(this,"state")||(f=!0,a.state))b=this.W=a,f||(this.O=!0,this.Lc=cr),this.Lc&&(this.ia=new Xe(this,er),this.ia.load()?b=null:delete this.ia);!b&&this.Lc&&(f=null,this.A&&(f=Aa()+"/api/v1/user?req=load&user="+this.A+"&state="+Xq(this,er)),b=f)&&(this.O=!0);b?za(b,!0,null,this,this.jk):
|
|
|
|
|
tb(this);this.ya.power||(this.Z=!0);!c&&this.Z&&fr(this,this.Rf)}else Ba("Unable to find CPU component")}fb(br);var er="1.20.7",cr=0;h=br.prototype;h.$e=function(){return this.ta};function Do(a,b){return a.ka&&a.ka[b]}h.ke=function(){return this.A?this.A:""};h.jk=function(a,b,c){c?(this.zg=null,this.O=!1,this.Va("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(this.P=b,this.da=!0);tb(this)};
|
|
|
|
|
tb(this);this.ya.power||(this.Z=!0);!c&&this.Z&&fr(this,this.Rf)}else Ba("Unable to find CPU component")}fb(br);var er="1.20.8",cr=0;h=br.prototype;h.$e=function(){return this.ta};function Do(a,b){return a.ka&&a.ka[b]}h.ke=function(){return this.A?this.A:""};h.jk=function(a,b,c){c?(this.zg=null,this.O=!1,this.Va("Unable to load machine state from server (error "+c+(b?": "+qa(b):"")+")")):(this.P=b,this.da=!0);tb(this)};
|
|
|
|
|
function fr(a,b,c){for(var d=gb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ub(f)){ub(f,function(){fr(a,b,c)});return}}b.call(a,c)}function gr(a,b){var c=new Xe(a,er,"validate");if(c.load()&&$q(c)){var d=ar(c,"timestamp"),e=b?ar(b,"timestamp"):"unknown";d!=e&&(a.Va("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}
|
|
|
|
|
h.Rf=function(a){void 0===a&&(a=this.Lc||(this.P?1:cr));if(!this.C){this.C++;var b=!1,c=!1;this.X=!1;var d=this.ia||new Xe(this,er);if(-1==a)b=!0;else if(a>cr){if(d.load(this.P)){this.R=new Xe(this,er,"failsafe");this.R.load()&&(hr(this,d),a=2,Yq(this.R));Ye(this.R,"timestamp",ua());Zq(this.R);var e=this.Lc&&!this.O;if(1==a||Ca("Click OK to restore the previous PCjs machine state, or CANCEL to reset the machine.")){if(c=$q(d)){var f=ar(d,"code"),g=ar(d,"data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!=
|
|
|
|
|
g?(this.Va("Error: "+g),"unable to verify user"==g&&(Ha("user",""),this.A=null)):this.U(f+": "+g),Yq(d),d.load()?(c=$q(d),e=!0):c=!1))}e&&gr(this,c?d:null)}else 2==a&&d.clear()}else gr(this);delete this.P;delete this.ia}e=gb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.M&&(c=ir(this,g,d,b,c));b=[d,a,c];-1!=a?fr(this,this.Di,b):this.Di(b)}};
|
|
|
|
|
function ir(a,b,c,d,e){if(!b.ra.ec){b.ra.ec=!0;if(b.oc){var f=null;e&&((f=ar(c,b.id))||(f=ar(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.oc(f,d)&&f&&(Ba("Unable to restore state for "+b.type),a.W&&!a.da?(c.clear(),a.Lc=cr,window&&window.location.reload()):a.X=!0,b.oc(null),e=!1)}if(!d&&b.gk)for(a=b.gk.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
|
|
|
|
|
h.Di=function(a){var b=a[0],c=0>a[1];a=a[2];this.ra.ec=!0;var d=this.ya.power;d&&(d.textContent="On");this.hk||(this.U("PCjs v"+er+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.hk=!0);this.M&&(ir(this,this.M,b,c,a),Rc(this.M));this.X&&(hr(this,b),b.clear());!c&&this.R&&(this.R.clear(),delete this.R);this.C=0};
|
|
|
|
|
function hr(a,b){if(Ca("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.qa,d=a.ke(),e=b.toString(),f={app:"PCjs"};f.ver=er;f.url=c;f.user=d;f.type="bug";f.data=e;za("http://www.pcjs.org/api/v1/report",!0,f)}}
|
|
|
|
|
function Wq(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Xe(a,er),g=new Xe(a,er,"validate"),k=ua();Ye(g,"timestamp",k);Ye(f,"timestamp",k);Ye(f,"version","1.20.7");Ye(f,"url",window?window.location.href:null);Ye(f,"browser",window?window.navigator.userAgent:"");a.M&&a.M.nc&&(c&&a.M.$b(),d=a.M.nc(b,c),"object"===typeof d&&Ye(f,a.M.id,d),c&&(a.M.ra.ec=!1,!1===d&&(e=null)));for(var k=gb(a.id),q=0;q<k.length;q++){var r=k[q];r.ra.ec&&(r.nc&&(d=r.nc(b,c),"object"===typeof d&&Ye(f,r.id,d)),c&&
|
|
|
|
|
function Wq(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Xe(a,er),g=new Xe(a,er,"validate"),k=ua();Ye(g,"timestamp",k);Ye(f,"timestamp",k);Ye(f,"version","1.20.8");Ye(f,"url",window?window.location.href:null);Ye(f,"browser",window?window.navigator.userAgent:"");a.M&&a.M.nc&&(c&&a.M.$b(),d=a.M.nc(b,c),"object"===typeof d&&Ye(f,a.M.id,d),c&&(a.M.ra.ec=!1,!1===d&&(e=null)));for(var k=gb(a.id),q=0;q<k.length;q++){var r=k[q];r.ra.ec&&(r.nc&&(d=r.nc(b,c),"object"===typeof d&&Ye(f,r.id,d)),c&&
|
|
|
|
|
(r.ra.ec=!1,!1===d&&(e=null)))}e&&(c?(k=d=!1,b?(a.A&&jr(a,a.A,f.toString()),Zq(g)&&Zq(f)||(e=null,d=k=!0)):a.Lc&&(d=!0,k=3==a.Lc),d&&f.clear(k)):e=f.toString());c&&(a.ra.ec=!1,b=a.ya.power)&&(b.textContent="Off");a.C=0;return e}h.reset=function(){this.ja&&this.ja.reset&&(ob(this,"Resetting "+this.ja.type),this.ja.reset());for(var a=gb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ja&&c.reset&&(ob(this,"Resetting "+c.type),c.reset())}};
|
|
|
|
|
h.start=function(a,b){for(var c=gb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};h.stop=function(a,b){for(var c=gb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
|
|
|
|
|
h.Vb=function(a,b,c){var d=this;switch(b){case "power":return this.ya[b]=c,c.onclick=function(){d.C||(d.ra.ec?Wq(d,!1,!0):fr(d,d.Rf))},!0;case "reset":return this.ya[b]=c,c.onclick=function(){if(d.ra.ec&&!d.C)if(d.Lc&&!d.zg){var a=Ca("Click OK to save changes to this PCjs machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Wq(d,a,!0);!a&&d.W?window&&window.location.reload():(a||(d.ah=!0),d.Rf(cr),d.ah=!1)}else d.reset(),d.M&&Rc(d.M)},!0;case "save":return this.ya[b]=c,c.onclick=
|
|
|
|
|
@ -1217,6 +1217,6 @@ function nr(a,b,c,d,e,f,g){function k(a,f){if(f)g(f,null);else{if(c){var k=b;k&&
|
|
|
|
|
k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(B){k=null,a=B.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,k)}}a?e?yr(a,f,k):k(a,null):g("no data"+(b?" for file: "+b:""),null)}
|
|
|
|
|
function yr(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");za(e,!0,null,null,function(f,g,k){if(k||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(f=d[3])if(k=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var q=k[0],r,x=/( [a-z]+=)(['"])(.*?)\2/g;r=x.exec(f);)q=0>q.indexOf(r[1])?q.replace(">",r[0]+">"):q.replace(new RegExp(r[1]+"(['\"])(.*?)\\1"),r[0]);k[0]!=q&&(g=g.replace(k[0],q))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
|
|
|
|
|
"");a=a.replace(d[0],g);yr(a,b,c)}})}else c(a,null)}
|
|
|
|
|
function zr(a,b,c,d){function e(a){if(void 0===k){var b=g&&lb(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=na(a))}function f(a){e("Error: "+a);q&&(--lr||Ua(!0));q=!1}var g,k,q=!0;lr++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.7/components.xsl");var r=function(d,k){if(k){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var r=k.transformNode(q);r?(g.outerHTML=r,--lr||Ua(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
|
|
|
|
|
function zr(a,b,c,d){function e(a){if(void 0===k){var b=g&&lb(g,"machine-warning");k=b&&b[0]||g}k&&(k.innerHTML=na(a))}function f(a){e("Error: "+a);q&&(--lr||Ua(!0));q=!1}var g,k,q=!0;lr++;try{if(g=window.document.getElementById(a)){c||(c="/versions/pcjs/1.20.8/components.xsl");var r=function(d,k){if(k){var q=function(d,q){if(q)if(q)if(e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var r=k.transformNode(q);r?(g.outerHTML=r,--lr||Ua(!0)):f("transformNodeToObject failed")}else window.document.implementation&&
|
|
|
|
|
window.document.implementation.createDocument?(r=new XSLTProcessor,r.importStylesheet(q),(r=r.transformToFragment(k,window.document))?g.parentNode?(g.parentNode.replaceChild(r,g),--lr||Ua(!0)):f("invalid machine element: "+a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f("failed to load XSL file: "+c);else f(d)};k?mr(c,null,null,!1,e,q):f("failed to load XML file: "+b)}else f(d)};"<"!=b.charAt(0)?mr(b,a,d,!0,e,r):nr(b,null,a,d,!1,e,r)}else f("missing machine element: "+
|
|
|
|
|
a)}catch(x){f(x.message)}return q}window.embedPC=function(a,b,c,d){Ua(!1);return zr(a,b,c,d)};window.enableEvents=Ua;window.sendEvent=Va;})();
|
|
|
|
|
|