diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index 26e556a01..10e9f3ca6 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -775,28 +775,28 @@ g[1],!0);break}Jr(a,g);break;case "m":if("mouse"==g[0]){var wi=g[1],zg=g[2];if(a Oa)wc=!1,Oa=null;else{"keys"==Oa&&(Oa="key");"kbd"==Oa&&(Oa="keyboard");for(vc in Bb)if(Oa==vc){td=Bb[vc];wc=!!(a.wc&td);break}if(!td){a.O("unknown message category: "+Oa);break a}}td&&("on"==g[2]?(a.wc|=td,wc=!0):"off"==g[2]&&(a.wc&=~td,wc=!1))}var os=0,Vc="";for(vc in Bb)if(!Oa||Oa==vc){var ps=!!(a.wc&Bb[vc]);if(null===wc||wc==ps)Vc&&(Vc+=","),++os%10||(Vc+="\n\t"),"key"==vc&&(vc="keys"),Vc+=vc}void 0===Oa&&a.O("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.O((null!==wc? wc?"messages on: ":"messages off: ":"message categories:\n\t")+(Vc||"none"));lq(a)}break;case "o":var xi=g[1],qs=g[2];if(xi&&"?"!=xi){var yi=Eq(a,xi,"port #"),zi=Eq(a,qs);void 0!==yi&&void 0!==zi&&(qc(a.ga,yi,1,zi),a.O(u(yi)+": "+t(zi)))}else a.O("output commands:"),a.O("\to [p] [b]\twrite byte [b] to port [p]"),a.O("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){Kr(a,b.substr(5));break}var Wn="pr"==g[0]?1:0,fe=1+Wn;if(a.N)a.O("step in progress");else{var Ag, Xn=!1,lb=jq(a,K(a.F),a.F.va.Z);do switch(Ag=!1,a.Qa(lb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:Uq(a,lb,1);Ag=!0;break;case 204:case 206:a.N=fe;Uq(a,lb,1);break;case 205:case 224:case 225:case 226:a.N=fe;Uq(a,lb,lb.Rb?4:2);break;case 232:a.N=fe;Uq(a,lb,lb.Rb?5:3);break;case 154:a.N=fe;Uq(a,lb,lb.Rb?7:5);break;case 255:var Yn=a.tb(lb)&14591;if(4351==Yn||6399==Yn)a.N=fe,rr(a,lb);break;case 243:case 242:Uq(a,lb,1);Xn=Ag=!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:Xn&& -(a.N=fe,Uq(a,lb,1))}while(Ag);a.N?(a.Td(a.A,lb,!0),a.Le()||(a.X&&a.X.yd(),a.N=0)):Mr(a,Wn?"tr":"t")}break;case "r":if("reset"==b){a.X&&a.X.reset();break}jr(a,g);break;case "t":Mr(a,g[0],g[1]);break;case "u":kr(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Hr(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.24.1 ("+a.F.ja+",RELEASE,NOPREFETCH"+(xb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(za());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var bf;void 0!==g[3]&&(bf=+g[3]);switch(g[2]){case "int":a.F.Y.kf= +(a.N=fe,Uq(a,lb,1))}while(Ag);a.N?(a.Td(a.A,lb,!0),a.Le()||(a.X&&a.X.yd(),a.N=0)):Mr(a,Wn?"tr":"t")}break;case "r":if("reset"==b){a.X&&a.X.reset();break}jr(a,g);break;case "t":Mr(a,g[0],g[1]);break;case "u":kr(a,g[1],g[2],8);break;case "v":if("var"==g[0]){Hr(a,b.substr(3))||(d=!1);break}a.O("PCx86 version 1.24.2 ("+a.F.ja+",RELEASE,NOPREFETCH"+(xb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.O(za());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var bf;void 0!==g[3]&&(bf=+g[3]);switch(g[2]){case "int":a.F.Y.kf= bf;break;case "start":a.F.Y.Kf=bf;break;case "stop":a.F.Y.mf=bf;break;default:a.O("unknown cs option");break a}void 0!==bf&&Tc(a.F);a.O("checksums "+(a.F.la.Ze?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&($c(a.F,+g[2])||a.O("warning: using 1x multiplier, previous target not reached"));a.O("target speed: "+(a.F.Y.Fe.toFixed(2)+"Mhz")+" ("+a.F.Y.Zd+"x)");break;default:a.O("unknown option: "+g[1])}else a.O("execution options:"),a.O("\tcs int #\tset checksum cycle interval to #"),a.O("\tcs start #\tset checksum cycle start count to #"), a.O("\tcs stop #\tset checksum cycle stop count to #"),a.O("\tsp #\t\tset speed multiplier to #");break;case "?":if(g[1]){Kr(a,b.substr(1));break}var cf="commands:",Ai;for(Ai in qq)cf+="\n"+ma(Ai,7)+qq[Ai];Wf(a)||(cf+="\nnote: frequency/history disabled if no exec breakpoints");a.O(cf);break;default:a.O("unknown command: "+b),d=!1}}}catch(Zn){a.O("debugger error: "+(Zn.stack||Zn.message)),d=!1}return d}function nq(a,b,c){b=cr(a,b,c);for(var d in b)if(!qr(a,b[d]))return!1;return!0} Sa(function(){for(var a=pb(document,"pcx86","debugger"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bQr){if(d.load(this.aa)){this.X=new lf(this,"1.24.1","failsafe");this.X.load()&&(Xr(this,d),a=2,Yr(this.X));N(this.X,"timestamp",ra());Zr(this.X);var e=this.A&&!this.V;if(1==a||Aa("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Vr(d)){var f=Wr(d,"code"),g=Wr(d,"data");f&&("ok"==f?d.load(g):("error"== +function Ur(a,b){var c=new lf(a,"1.24.2","validate");if(c.load()&&Vr(c)){var d=Wr(c,"timestamp"),e=b?Wr(b,"timestamp"):"unknown";d!=e&&(a.Na("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}} +m.ag=function(a){void 0===a&&(a=this.A||(this.aa?1:Qr));if(!this.N){this.N++;var b=!1,c=!1;this.ka=!1;var d=this.ea||new lf(this,"1.24.2");if(-1==a)b=!0;else if(a>Qr){if(d.load(this.aa)){this.X=new lf(this,"1.24.2","failsafe");this.X.load()&&(Xr(this,d),a=2,Yr(this.X));N(this.X,"timestamp",ra());Zr(this.X);var e=this.A&&!this.V;if(1==a||Aa("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Vr(d)){var f=Wr(d,"code"),g=Wr(d,"data");f&&("ok"==f?d.load(g):("error"== f&&"no machine state"!=g?(this.Na("Error: "+g),"unable to verify user"==g&&(Ga("user",""),this.B=null)):this.O(f+": "+g),Yr(d),d.load()?(c=Vr(d),e=!0):c=!1))}e&&Ur(this,c?d:null)}else 2==a&&d.clear()}else Ur(this);delete this.aa;delete this.ea}e=ib(this.id);for(f=0;fa[1];a=a[2];this.wa=!0;this.la.cc=!0;var d=this.qa.power;d&&(d.textContent="Shutdown");this.F&&($r(this,this.F,b,c,a),Xc(this.F));this.ka&&(Xr(this,b),b.clear());!c&&this.X&&(this.X.clear(),delete this.X);this.N=0}; -function Xr(a,b){if(Aa("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.le(),d=b.toString(),e={app:"PCx86",ver:"1.24.1"};e.url=a.ua;e.user=c;e.type="bug";e.data=d;xa("http://www.pcjs.org/api/v1/report",e,!0)}} -function Nr(a,b,c){var d,e="none";if(a.N)return null;a.N--;var f=new lf(a,"1.24.1"),g=new lf(a,"1.24.1","validate"),h=ra();N(g,"timestamp",h);N(f,"timestamp",h);N(f,"version","1.24.1");N(f,"url",window?window.location.href:null);N(f,"browser",za());a.F&&a.F.hc&&(c&&a.F.Wb(),d=a.F.hc(b,c),"object"===typeof d&&N(f,a.F.id,d),c&&(a.F.la.cc=!1,!1===d&&(e=null)));for(var h=ib(a.id),k=0;k>>d.La;f=f+g-1>>>d.La;e.bh=0;for(e.Vd=0;h<=f;)g=d.sa[h],e.bh+=g.size,g.size&&(e.Tg.push(ta(Kb,h,0,0,g.type)),e.Vd++),h++;c.A=e;c.ya=c.A.Vd*c.ga.Sb/691200;d=0;c.A.Ci=0;c.A.Bf||(c.A.Bf=[]);var e=-1,h=0,k=-1;for(f=0;f>1),k=g.y+(g.A>>1),l=g.A,g.ad\s*/g,"")) function rs(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");xa(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],l,n=/( [a-z]+=)(['"])(.*?)\2/g;l=n.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[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);rs(a,b,c)}})}else c(a,null)} function ss(a,b,c,d){function e(a){if(void 0===h){var b=g&&pb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=la(a))}function f(a){e("Error: "+a);k&&(--ds||Ua(!0));k=!1}var g,h,k=!0;ds++;gb[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));n.appendChild(q)}c|| -(c="/versions/pcx86/1.24.1/components.xsl");l=function(d,h){h?es(c,null,null,!1,e,function(d,k){if(k)if(hb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(k);l?(g.outerHTML=l,--ds||Ua(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--ds||Ua(!0)):f("invalid machine element: "+ +(c="/versions/pcx86/1.24.2/components.xsl");l=function(d,h){h?es(c,null,null,!1,e,function(d,k){if(k)if(hb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(k);l?(g.outerHTML=l,--ds||Ua(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--ds||Ua(!0)):f("invalid machine element: "+ a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?es(b,a,d,!0,e,l):fs(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(p){f(p.message)}return k}function ts(a,b,c,d){Ua(!1);return ss(a,b,c,d)}window.embedPC=ts;window.embedPCx86=ts;window.enableEvents=Ua;window.sendEvent=Va; function us(a,b,c,d){if(!c&&b){d.push(b);a=gb[d[0]];b=null;for(var e in a)if(ha(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?xa(b,null,!0,function(a,b){vs(b,d)}):vs(null,d)}else w("Error ("+c+") requesting "+a)} function vs(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=gb[f],k={},l;for(l in h){var n=h[l],q=ga(l);if("xml"==q){for(q=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(h[l]);){var p=d[2];p&&(h[p]||(n=n.replace(d[0],"")))}d=l=fa(l)}else"xsl"==q&&(e=l=fa(l));k[l]=n}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g, "©"),c=Ja(c,"javascript",!1,g),c=c+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
\n'),c+="...\n",c+='